r232930 - Revert "Add CodeGen support for adding cpu attributes on functions based on"

Eric Christopher echristo at gmail.com
Sun Mar 22 23:29:23 PDT 2015


On Sun, Mar 22, 2015 at 11:25 PM Eric Christopher <echristo at gmail.com>
wrote:

> Don't worry about the repro a couple minutes of looking came across this
> lovely piece of code:
>
> void X86TargetInfo::setFeatureEnabledImpl(llvm::StringMap<bool> &Features,
>                                           StringRef Name, bool Enabled) {
>   // FIXME: This *really* should not be here.  We need some way of
> translating
>   // options into llvm subtarget features.
>   if (Name == "sse4")
>     Name = "sse4.2";
>
> Which means I need to fix this in the driver rather than here.
>
> Also, annoying FIXME. Basically you tripped on the _only_ (afaict) command
> line option (-msse4) that would have made this happen. :)
>
>
For fun btw the two options end up being something I mentioned in the
original commit, we can either add the options that people put on the
command line (and need to translate this) to the function signature or we
add all of the features that are enabled (and have longer strings).

Anyhow, sorry about the breakage, I'll see what I can do to get this fixed
in short order.

-eric


> -eric
>
> On Sun, Mar 22, 2015 at 10:57 PM Daniel Jasper <djasper at google.com> wrote:
>
>> Author: djasper
>> Date: Mon Mar 23 00:52:28 2015
>> New Revision: 232930
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=232930&view=rev
>> Log:
>> 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.
>>
>> Removed:
>>     cfe/trunk/test/CodeGen/function-target-features.c
>> Modified:
>>     cfe/trunk/lib/CodeGen/CGCall.cpp
>>
>> Modified: cfe/trunk/lib/CodeGen/CGCall.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CG
>> Call.cpp?rev=232930&r1=232929&r2=232930&view=diff
>> ============================================================
>> ==================
>> --- cfe/trunk/lib/CodeGen/CGCall.cpp (original)
>> +++ cfe/trunk/lib/CodeGen/CGCall.cpp Mon Mar 23 00:52:28 2015
>> @@ -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::ConstructAttributeLi
>>
>>      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);
>>
>> Removed: cfe/trunk/test/CodeGen/function-target-features.c
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/
>> function-target-features.c?rev=232929&view=auto
>> ============================================================
>> ==================
>> --- cfe/trunk/test/CodeGen/function-target-features.c (original)
>> +++ cfe/trunk/test/CodeGen/function-target-features.c (removed)
>> @@ -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"
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150323/a4843446/attachment.html>


More information about the cfe-commits mailing list