r189542 - use the last passed -munaligned-access / -mno-unaligned-access
Hal Finkel
hfinkel at anl.gov
Wed Aug 28 20:50:09 PDT 2013
----- Original Message -----
> Author: rengolin
> Date: Wed Aug 28 18:56:07 2013
> New Revision: 189542
>
> URL: http://llvm.org/viewvc/llvm-project?rev=189542&view=rev
> Log:
> use the last passed -munaligned-access / -mno-unaligned-access
>
> Passing inconsistent munaligned-access / mno-unaligned-access
> flags, intentionally resulted in a warning and the flag
> no-unaligned-access being used.
>
> Gcc does, at least in practice, use the last flag in such a
> case. This patch updates clang behaviour accordingly; use the
> last flag or base alignment behaviour on the target (which
> llvm will do if no flag is explicitly passed)
>
> Patch by Jeroen Hofstee.
>
> Modified:
> cfe/trunk/lib/Driver/Tools.cpp
> cfe/trunk/test/Driver/arm-alignment.c
>
> Modified: cfe/trunk/lib/Driver/Tools.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=189542&r1=189541&r2=189542&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Driver/Tools.cpp (original)
> +++ cfe/trunk/lib/Driver/Tools.cpp Wed Aug 28 18:56:07 2013
> @@ -2944,12 +2944,15 @@ void Clang::ConstructJob(Compilation &C,
> }
> // -mkernel implies -mstrict-align; don't add the redundant
> option.
> if (!KernelOrKext) {
> - if (Args.hasArg(options::OPT_mno_unaligned_access)) {
> - CmdArgs.push_back("-backend-option");
> - CmdArgs.push_back("-arm-strict-align");
> - } else if (Args.hasArg(options::OPT_munaligned_access)) {
> - CmdArgs.push_back("-backend-option");
> - CmdArgs.push_back("-arm-no-strict-align");
> + if (Arg *A = Args.getLastArg(options::OPT_mno_unaligned_access,
> + options::OPT_munaligned_access)) {
> + if (A->getOption().matches(options::OPT_mno_unaligned_access))
> {
> + CmdArgs.push_back("-backend-option");
> + CmdArgs.push_back("-arm-strict-align");
> + } else {
> + CmdArgs.push_back("-backend-option");
> + CmdArgs.push_back("-arm-no-strict-align");
>From what Chandler tells me, using -backend-option plays horribly when the compiler is used via the tooling interface, and should really be avoided. This seems like something that belongs in TargetOptions; can we move it there?
-Hal
> + }
> }
> }
>
>
> Modified: cfe/trunk/test/Driver/arm-alignment.c
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/arm-alignment.c?rev=189542&r1=189541&r2=189542&view=diff
> ==============================================================================
> --- cfe/trunk/test/Driver/arm-alignment.c (original)
> +++ cfe/trunk/test/Driver/arm-alignment.c Wed Aug 28 18:56:07 2013
> @@ -1,9 +1,25 @@
> // RUN: %clang -target arm-none-gnueeabi -munaligned-access -### %s
> 2> %t
> // RUN: FileCheck --check-prefix=CHECK-UNALIGNED < %t %s
>
> +// RUN: %clang -target arm-none-gnueeabi -mstrict-align
> -munaligned-access -### %s 2> %t
> +// RUN: FileCheck --check-prefix=CHECK-UNALIGNED < %t %s
> +
> +// RUN: %clang -target arm-none-gnueeabi -mno-unaligned-access
> -munaligned-access -### %s 2> %t
> +// RUN: FileCheck --check-prefix=CHECK-UNALIGNED < %t %s
> +
> // CHECK-UNALIGNED: "-backend-option" "-arm-no-strict-align"
>
> +
> // RUN: %clang -target arm-none-gnueeabi -mno-unaligned-access -###
> %s 2> %t
> // RUN: FileCheck --check-prefix=CHECK-ALIGNED < %t %s
>
> +// RUN: %clang -target arm-none-gnueeabi -mstrict-align -### %s 2>
> %t
> +// RUN: FileCheck --check-prefix=CHECK-ALIGNED < %t %s
> +
> +// RUN: %clang -target arm-none-gnueabi -munaligned-access
> -mno-unaligned-access -### %s 2> %t
> +// RUN: FileCheck --check-prefix=CHECK-ALIGNED < %t %s
> +
> +// RUN: %clang -target arm-none-gnueabi -munaligned-access
> -mstrict-align -### %s 2> %t
> +// RUN: FileCheck --check-prefix=CHECK-ALIGNED < %t %s
> +
> // CHECK-ALIGNED: "-backend-option" "-arm-strict-align"
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
More information about the cfe-commits
mailing list