[PATCH] D95872: [clang][Arm] Fix handling of -Wa,-march=
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. DavidSpickett marked an inline comment as done. Closed by commit rG1d51c699b9e2: [clang][Arm] Fix handling of -Wa,-march= (authored by DavidSpickett). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D95872/new/ https://reviews.llvm.org/D95872 Files: clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/Arch/ARM.cpp clang/test/Driver/arm-target-as-march-mcpu.s clang/test/Driver/arm-target-as-mthumb.s Index: clang/test/Driver/arm-target-as-mthumb.s === --- clang/test/Driver/arm-target-as-mthumb.s +++ clang/test/Driver/arm-target-as-mthumb.s @@ -5,12 +5,18 @@ // RUN: %clang -target armv7a-linux-gnueabi -### -c -mthumb %s 2>&1 | \ // RUN: FileCheck -check-prefix=TRIPLE-ARM %s // RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mthumb \ -// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck -check-prefix=TRIPLE-ARM %s +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck -check-prefix=TRIPLE-ARM %s +// RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8,-mthumb \ +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck -check-prefix=TRIPLE-ARM %s // TRIPLE-ARM: "-triple" "armv7-unknown-linux-gnueabi" // RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mthumb %s 2>&1 | \ // RUN: FileCheck -check-prefix=TRIPLE-THUMB %s +// RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8,-mthumb %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-THUMB %s +// RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8 -Wa,-mthumb %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-THUMB %s // RUN: %clang -target armv7a-linux-gnueabi -### -c -Xassembler -mthumb %s \ // RUN: 2>&1 | FileCheck -check-prefix=TRIPLE-THUMB %s Index: clang/test/Driver/arm-target-as-march-mcpu.s === --- /dev/null +++ clang/test/Driver/arm-target-as-march-mcpu.s @@ -0,0 +1,104 @@ +/// These tests make sure that options passed to the assembler +/// via -Wa or -Xassembler are applied correctly to assembler inputs. +/// Also we check that the same priority rules apply to compiler and +/// assembler options. +/// +/// Note that the cortex-a8 is armv7-a, the cortex-a32 is armv8-a +/// and clang's default Arm architecture is armv4t. + +/// Sanity check how the options behave when passed to the compiler +// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a %s 2>&1 | \ +// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a+crc %s 2>&1 | \ +// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,EXT-CRC %s + +/// -Wa/-Xassembler doesn't apply to non assembly files +// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a \ +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV4 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a \ +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV4 %s + +/// -Wa/-Xassembler does apply to assembler input +// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a %s 2>&1 | \ +// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a+crc %s 2>&1 | \ +// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,EXT-CRC %s +// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a %s 2>&1 | \ +// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a+crc %s 2>&1 | \ +// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,EXT-CRC %s + +/// Check that arch name is still canonicalised +// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7a %s 2>&1 | \ +// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7 %s 2>&1 | \ +// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s + +/// march to compiler and assembler, we choose the one suited to the input file type +// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8-a -Wa,-march=armv7a %s 2>&1 | \ +// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a -Wa,-march=armv8-a \ +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV7 %s + +/// mcpu to compiler and march to assembler, we use the assembler's architecture for assembly files. +/// We use the target CPU for both. +// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -Wa,-march=armv8a %s 2>&1 | \ +// RUN: FileCheck --check-prefixes=TRIPLE-ARMV8,CPU-A8 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -Wa,-march=armv8-a \ +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s +
[PATCH] D95872: [clang][Arm] Fix handling of -Wa,-march=
nickdesaulniers accepted this revision. nickdesaulniers added a comment. This revision is now accepted and ready to land. Looks great. Thanks again David. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D95872/new/ https://reviews.llvm.org/D95872 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D95872: [clang][Arm] Fix handling of -Wa,-march=
DavidSpickett marked 6 inline comments as done. DavidSpickett added inline comments. Comment at: clang/test/Driver/arm-target-as-march-mcpu.s:42 +/// We use the target CPU for both. +// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -Wa,-march=armv8a %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-ARMV8 --check-prefix=CPU-A8 %s nickdesaulniers wrote: > nickdesaulniers wrote: > > Below you have a comment `(cortex-a32 is armv8a)`. That is very helpful > > for me. I assume `cortex-a8` is armv7a? > And if so, would you mind adding a similar comment here? Exactly, I've added a comment up top to explain the logic in one place. Comment at: clang/test/Driver/arm-target-as-march-mcpu.s:82 +/// Last mcpu to compiler wins +// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a32 -mcpu=cortex-a8 %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-ARMV7 -check-prefix=CPU-A8 %s nickdesaulniers wrote: > add a `-mcpu=foo,bar` test for `-mcpu`? (Comma separated) mcpu and march don't let you use multiple values: ``` error: the clang compiler does not support '-march=armv8-a,armv7-a' error: unsupported argument 'armv7-a' to option 'Wa, ``` (the latter it thinks that its another arg like `-Wa,armv7-a`) Pretty sure that's tested elsewhere or if it isn't, this isn't the place for it at least. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D95872/new/ https://reviews.llvm.org/D95872 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D95872: [clang][Arm] Fix handling of -Wa,-march=
DavidSpickett updated this revision to Diff 321037. DavidSpickett added a comment. - Added split -Wa test for -mthumb - Use `--check-prefix`/`--check-prefixes` - Comment at top of march/mcpu file to explain choice of test CPUs Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D95872/new/ https://reviews.llvm.org/D95872 Files: clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/Arch/ARM.cpp clang/test/Driver/arm-target-as-march-mcpu.s clang/test/Driver/arm-target-as-mthumb.s Index: clang/test/Driver/arm-target-as-mthumb.s === --- clang/test/Driver/arm-target-as-mthumb.s +++ clang/test/Driver/arm-target-as-mthumb.s @@ -5,12 +5,18 @@ // RUN: %clang -target armv7a-linux-gnueabi -### -c -mthumb %s 2>&1 | \ // RUN: FileCheck -check-prefix=TRIPLE-ARM %s // RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mthumb \ -// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck -check-prefix=TRIPLE-ARM %s +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck -check-prefix=TRIPLE-ARM %s +// RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8,-mthumb \ +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck -check-prefix=TRIPLE-ARM %s // TRIPLE-ARM: "-triple" "armv7-unknown-linux-gnueabi" // RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mthumb %s 2>&1 | \ // RUN: FileCheck -check-prefix=TRIPLE-THUMB %s +// RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8,-mthumb %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-THUMB %s +// RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8 -Wa,-mthumb %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-THUMB %s // RUN: %clang -target armv7a-linux-gnueabi -### -c -Xassembler -mthumb %s \ // RUN: 2>&1 | FileCheck -check-prefix=TRIPLE-THUMB %s Index: clang/test/Driver/arm-target-as-march-mcpu.s === --- /dev/null +++ clang/test/Driver/arm-target-as-march-mcpu.s @@ -0,0 +1,104 @@ +/// These tests make sure that options passed to the assembler +/// via -Wa or -Xassembler are applied correctly to assembler inputs. +/// Also we check that the same priority rules apply to compiler and +/// assembler options. +/// +/// Note that the cortex-a8 is armv7-a, the cortex-a32 is armv8-a +/// and clang's default Arm architecture is armv4t. + +/// Sanity check how the options behave when passed to the compiler +// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a %s 2>&1 | \ +// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a+crc %s 2>&1 | \ +// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,EXT-CRC %s + +/// -Wa/-Xassembler doesn't apply to non assembly files +// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a \ +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV4 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a \ +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV4 %s + +/// -Wa/-Xassembler does apply to assembler input +// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a %s 2>&1 | \ +// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a+crc %s 2>&1 | \ +// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,EXT-CRC %s +// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a %s 2>&1 | \ +// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a+crc %s 2>&1 | \ +// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,EXT-CRC %s + +/// Check that arch name is still canonicalised +// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7a %s 2>&1 | \ +// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7 %s 2>&1 | \ +// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s + +/// march to compiler and assembler, we choose the one suited to the input file type +// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8-a -Wa,-march=armv7a %s 2>&1 | \ +// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a -Wa,-march=armv8-a \ +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV7 %s + +/// mcpu to compiler and march to assembler, we use the assembler's architecture for assembly files. +/// We use the target CPU for both. +// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -Wa,-march=armv8a %s 2>&1 | \ +// RUN: FileCheck --check-prefixes=TRIPLE-ARMV8,CPU-A8 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -Wa,-march=armv8-a \ +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s + +/// march to compiler and mcpu to assembler, we use
[PATCH] D95872: [clang][Arm] Fix handling of -Wa,-march=
nickdesaulniers added inline comments. Comment at: clang/test/Driver/arm-target-as-march-mcpu.s:42 +/// We use the target CPU for both. +// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -Wa,-march=armv8a %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-ARMV8 --check-prefix=CPU-A8 %s nickdesaulniers wrote: > Below you have a comment `(cortex-a32 is armv8a)`. That is very helpful for > me. I assume `cortex-a8` is armv7a? And if so, would you mind adding a similar comment here? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D95872/new/ https://reviews.llvm.org/D95872 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D95872: [clang][Arm] Fix handling of -Wa,-march=
nickdesaulniers added a comment. Wow, thank you so much for the work that went into this patch! Very thorough tests. Just minor questions about yet more test cases. Patch LGTM. Comment at: clang/test/Driver/arm-target-as-march-mcpu.s:42 +/// We use the target CPU for both. +// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -Wa,-march=armv8a %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-ARMV8 --check-prefix=CPU-A8 %s Below you have a comment `(cortex-a32 is armv8a)`. That is very helpful for me. I assume `cortex-a8` is armv7a? Comment at: clang/test/Driver/arm-target-as-march-mcpu.s:43 +// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -Wa,-march=armv8a %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-ARMV8 --check-prefix=CPU-A8 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -Wa,-march=armv8-a \ I guess `-check-prefix` is accepted with one or two leading hyphens. Let's pick one style to use consistently in this test. Comment at: clang/test/Driver/arm-target-as-march-mcpu.s:82 +/// Last mcpu to compiler wins +// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a32 -mcpu=cortex-a8 %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-ARMV7 -check-prefix=CPU-A8 %s add a `-mcpu=foo,bar` test for `-mcpu`? (Comma separated) Comment at: clang/test/Driver/arm-target-as-march-mcpu.s:94 +/// Last march to compiler wins +// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8-a -march=armv7-a %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-ARMV7 %s add a comma separated test? (`-march=armv8-a,armv7-a`) Comment at: clang/test/Driver/arm-target-as-mthumb.s:9-17 +// RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8,-mthumb \ +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck -check-prefix=TRIPLE-ARM %s // TRIPLE-ARM: "-triple" "armv7-unknown-linux-gnueabi" // RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mthumb %s 2>&1 | \ // RUN: FileCheck -check-prefix=TRIPLE-THUMB %s Should we add space separated tests for these? `-Wa,-mcpu=cortex-a8 -Wa,-mthumb`? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D95872/new/ https://reviews.llvm.org/D95872 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D95872: [clang][Arm] Fix handling of -Wa,-march=
DavidSpickett added reviewers: ostannard, nickdesaulniers. DavidSpickett added inline comments. Comment at: clang/lib/Driver/ToolChain.cpp:753 : tools::arm::getARMTargetCPU(MCPU, MArch, Triple); StringRef Suffix = tools::arm::getLLVMArchSuffixForARM(CPU, MArch, Triple); Suffix originally set here, from any compiler options. Comment at: clang/lib/Driver/ToolChain.cpp:807 +// over -Wa,-march. Which matches the compiler behaviour. +Suffix = tools::arm::getLLVMArchSuffixForARM(WaMCPU, WaMArch, Triple); + } Then we override that if we're using the assembler and have -Wa options. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D95872/new/ https://reviews.llvm.org/D95872 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D95872: [clang][Arm] Fix handling of -Wa,-march=
DavidSpickett added a comment. Bug link: https://bugs.llvm.org/show_bug.cgi?id=48894 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D95872/new/ https://reviews.llvm.org/D95872 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D95872: [clang][Arm] Fix handling of -Wa,-march=
DavidSpickett created this revision. Herald added subscribers: danielkiss, kristof.beyls. DavidSpickett requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. This fixes Bugzilla #48894 for Arm, where it was reported that -Wa,-march was not being handled by the integrated assembler. This was previously fixed for -Wa,-mthumb by parsing the argument in ToolChain::ComputeLLVMTriple instead of CollectArgsForIntegratedAssembler. It has to be done in the former because the Triple is read only by the time we get to the latter. Previously only mcpu would work via -Wa but only because "-target-cpu" is it's own option to cc1, which we were able to modify. Target architecture is part of "-target-triple". This change applies the same workaround to -march and cleans up handling of -Wa,-mcpu at the same time. There were some places where we were not using the last instance of an argument. The existing -Wa,-mthumb code was doing this correctly, so I've just added tests to confirm that. Now the same rules will apply to -Wa,-march/-mcpu as would if you just passed them to the compiler: - -Wa/-Xassembler options only apply to assembly files. - Architecture derived from mcpu beats any march options. - When there are multiple mcpu or multiple march, the last one wins. - If there is a compiler option and an assembler option of the same type, we prefer the one that fits the input type. - If there is an applicable mcpu option but it is overruled by an march, the cpu value is still used for the "-target-cpu" cc1 option. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D95872 Files: clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/Arch/ARM.cpp clang/test/Driver/arm-target-as-march-mcpu.s clang/test/Driver/arm-target-as-mthumb.s Index: clang/test/Driver/arm-target-as-mthumb.s === --- clang/test/Driver/arm-target-as-mthumb.s +++ clang/test/Driver/arm-target-as-mthumb.s @@ -5,12 +5,16 @@ // RUN: %clang -target armv7a-linux-gnueabi -### -c -mthumb %s 2>&1 | \ // RUN: FileCheck -check-prefix=TRIPLE-ARM %s // RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mthumb \ -// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck -check-prefix=TRIPLE-ARM %s +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck -check-prefix=TRIPLE-ARM %s +// RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8,-mthumb \ +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck -check-prefix=TRIPLE-ARM %s // TRIPLE-ARM: "-triple" "armv7-unknown-linux-gnueabi" // RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mthumb %s 2>&1 | \ // RUN: FileCheck -check-prefix=TRIPLE-THUMB %s +// RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8,-mthumb %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-THUMB %s // RUN: %clang -target armv7a-linux-gnueabi -### -c -Xassembler -mthumb %s \ // RUN: 2>&1 | FileCheck -check-prefix=TRIPLE-THUMB %s Index: clang/test/Driver/arm-target-as-march-mcpu.s === --- /dev/null +++ clang/test/Driver/arm-target-as-march-mcpu.s @@ -0,0 +1,101 @@ +/// These tests make sure that options passed to the assembler +/// via -Wa or -Xassembler are applied correctly to assembler inputs. +/// Also we check that the same priority rules apply to compiler and +/// assembler options. + +/// Sanity check how the options behave when passed to the compiler +// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-ARMV7 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a+crc %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-ARMV7 --check-prefix=EXT-CRC %s + +/// -Wa/-Xassembler doesn't apply to non assembly files +// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a \ +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck -check-prefix=TRIPLE-ARMV4 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a \ +// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck -check-prefix=TRIPLE-ARMV4 %s + +/// -Wa/-Xassembler does apply to assembler input +// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-ARMV7 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a+crc %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-ARMV7 --check-prefix=EXT-CRC %s +// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-ARMV7 %s +// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a+crc %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-ARMV7 --check-prefix=EXT-CRC %s + +/// Check that arch name is still canonicalised +// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7a %s 2>&1 | \ +// RUN: FileCheck -check-prefix=TRIPLE-ARMV7 %s +// RUN: