Revert "Add CodeGen support for adding cpu attributes on functions based on"
This breaks CodeGen for an internal target. I'll get repro instructions to you. llvm-svn: 232930
This commit is contained in:
parent
3b1c3501f2
commit
17ae9f0206
|
@ -31,7 +31,6 @@
|
|||
#include "llvm/IR/InlineAsm.h"
|
||||
#include "llvm/IR/Intrinsics.h"
|
||||
#include "llvm/Transforms/Utils/Local.h"
|
||||
#include <sstream>
|
||||
using namespace clang;
|
||||
using namespace CodeGen;
|
||||
|
||||
|
@ -1476,26 +1475,6 @@ void CodeGenModule::ConstructAttributeList(const CGFunctionInfo &FI,
|
|||
|
||||
if (!CodeGenOpts.StackRealignment)
|
||||
FuncAttrs.addAttribute("no-realign-stack");
|
||||
|
||||
// Add target-cpu and target-features work if they differ from the defaults.
|
||||
std::string &CPU = getTarget().getTargetOpts().CPU;
|
||||
if (CPU != "" && CPU != getTarget().getTriple().getArchName())
|
||||
FuncAttrs.addAttribute("target-cpu", getTarget().getTargetOpts().CPU);
|
||||
|
||||
// TODO: FeaturesAsWritten gets us the features on the command line,
|
||||
// for canonicalization purposes we might want to avoid putting features
|
||||
// in the target-features set if we know it'll be one of the default
|
||||
// features in the backend, e.g. corei7-avx and +avx.
|
||||
std::vector<std::string> &Features =
|
||||
getTarget().getTargetOpts().FeaturesAsWritten;
|
||||
if (!Features.empty()) {
|
||||
std::stringstream S;
|
||||
std::copy(Features.begin(), Features.end(),
|
||||
std::ostream_iterator<std::string>(S, ","));
|
||||
// The drop_back gets rid of the trailing space.
|
||||
FuncAttrs.addAttribute("target-features",
|
||||
StringRef(S.str()).drop_back(1));
|
||||
}
|
||||
}
|
||||
|
||||
ClangToLLVMArgMapping IRFunctionArgs(getContext(), FI);
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
// This test verifies that we produce target-cpu and target-features attributes
|
||||
// on functions when they're different from the standard cpu and have written
|
||||
// features.
|
||||
|
||||
// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-feature +avx | FileCheck %s -check-prefix=AVX-FEATURE
|
||||
// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-feature +avx | FileCheck %s -check-prefix=AVX-NO-CPU
|
||||
// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-feature +avx512f -target-feature +avx512er | FileCheck %s -check-prefix=TWO-AVX
|
||||
// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-cpu corei7 | FileCheck %s -check-prefix=CORE-CPU
|
||||
// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-cpu corei7 -target-feature +avx | FileCheck %s -check-prefix=CORE-CPU-AND-FEATURES
|
||||
// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-cpu x86-64 | FileCheck %s -check-prefix=X86-64-CPU-NOT
|
||||
// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-cpu corei7-avx -target-feature -avx | FileCheck %s -check-prefix=AVX-MINUS-FEATURE
|
||||
|
||||
void foo() {}
|
||||
|
||||
// AVX-FEATURE: "target-features"="+avx"
|
||||
// AVX-NO-CPU-NOT: target-cpu
|
||||
// TWO-AVX: "target-features"="+avx512f,+avx512er"
|
||||
// CORE-CPU: "target-cpu"="corei7"
|
||||
// CORE-CPU-AND-FEATURES: "target-cpu"="corei7" "target-features"="+avx"
|
||||
// X86-64-CPU-NOT: "target-cpu"
|
||||
// AVX-MINUS-FEATURE: "target-features"="-avx"
|
Loading…
Reference in New Issue