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

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


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. :)

-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/
> CGCall.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/bd45a357/attachment.html>


More information about the cfe-commits mailing list