r241525 - Handle arbitrary whitespace in the target attribute support.

Aaron Ballman aaron at aaronballman.com
Mon Jul 6 16:55:47 PDT 2015


On Mon, Jul 6, 2015 at 7:51 PM, Eric Christopher <echristo at gmail.com> wrote:
> Author: echristo
> Date: Mon Jul  6 18:51:59 2015
> New Revision: 241525
>
> URL: http://llvm.org/viewvc/llvm-project?rev=241525&view=rev
> Log:
> Handle arbitrary whitespace in the target attribute support.
>
> This allows us to deal a bit more gracefully with inclusions done
> by macros, token pasting, or just code layout/formatting.

Thank you!

~Aaron

>
> Modified:
>     cfe/trunk/lib/CodeGen/CGCall.cpp
>     cfe/trunk/test/CodeGen/attr-target.c
>
> Modified: cfe/trunk/lib/CodeGen/CGCall.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCall.cpp?rev=241525&r1=241524&r2=241525&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGCall.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGCall.cpp Mon Jul  6 18:51:59 2015
> @@ -1514,9 +1514,13 @@ void CodeGenModule::ConstructAttributeLi
>          // Grab the various features and prepend a "+" to turn on the feature to
>          // the backend and add them to our existing set of features.
>          for (auto &Feature : AttrFeatures) {
> +         // Go ahead and trim whitespace rather than either erroring or
> +         // accepting it weirdly.
> +         Feature = Feature.trim();
> +
>            // While we're here iterating check for a different target cpu.
>            if (Feature.startswith("arch="))
> -            TargetCPU = Feature.split("=").second;
> +            TargetCPU = Feature.split("=").second.trim();
>           else if (Feature.startswith("tune="))
>             // We don't support cpu tuning this way currently.
>             ;
>
> Modified: cfe/trunk/test/CodeGen/attr-target.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/attr-target.c?rev=241525&r1=241524&r2=241525&view=diff
> ==============================================================================
> --- cfe/trunk/test/CodeGen/attr-target.c (original)
> +++ cfe/trunk/test/CodeGen/attr-target.c Mon Jul  6 18:51:59 2015
> @@ -13,6 +13,8 @@ int __attribute__((target("sse4"))) pand
>
>  int bar(int a) { return baz(a) + foo(a); }
>
> +int __attribute__((target("avx,      sse4.2,      arch=   ivybridge"))) qux(int a) { return 4; }
> +
>  // Check that we emit the additional subtarget and cpu features for foo and not for baz or bar.
>  // CHECK: baz{{.*}} #0
>  // CHECK: foo{{.*}} #1
> @@ -22,6 +24,7 @@ int bar(int a) { return baz(a) + foo(a);
>  // CHECK: koala{{.*}} #0
>  // CHECK: echidna{{.*}} #2
>  // CHECK: bar{{.*}} #0
> +// CHECK: qux{{.*}} #1
>  // CHECK: #0 = {{.*}}"target-cpu"="x86-64" "target-features"="+sse,+sse2"
>  // CHECK: #1 = {{.*}}"target-cpu"="ivybridge" "target-features"="+avx,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3"
>  // CHECK: #2 = {{.*}}"target-cpu"="x86-64" "target-features"="+sse,-aes,-avx,-avx2,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512pf,-avx512vl,-f16c,-fma,-fma4,-pclmul,-sha,-sse2,-sse3,-sse4.1,-sse4.2,-sse4a,-ssse3,-xop"
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list