[clang] [ARM] Fix test using thumb instead arm arch prefix (PR #166416)
Simon Tatham via cfe-commits
cfe-commits at lists.llvm.org
Wed Nov 5 04:55:25 PST 2025
statham-arm wrote:
> We're explicitly specifying the triple, so the host triple shouldn't matter. And this test is currently passing on every buildbot. So what does this do?
It's true that the _test_ passes, because it only goes as far as LLVM IR, compiling the affected test file using `-emit-llvm`. But if I try going all the way to assembly, by replacing `-emit-llvm` with `-S`, then I do see the error:
```
$ build/bin/clang -cc1 -triple armv6m-eabi clang/test/CodeGen/pr45476.cpp -S -o /dev/null
error: Function 'foo' uses ARM instructions, but the target does not support ARM mode execution.
1 error generated.
```
If you run the clang driver, rather than `clang -cc1`, then there's no problem compiling this file to Armv6-M assembler, and of course it comes out in Thumb. But the `-v` output from the driver command below shows that that's because the driver has converted the triple into a Thumb one, passing `-triple thumbv6m-unknown-none-eabi` to the `clang -cc1` command.
```
build/bin/clang -v --target=arm-none-eabi -march=armv6m clang/test/CodeGen/pr45476.cpp -S -o /dev/null
```
So I agree that it looks as if `clang -cc1` is expecting to receive a triple that already states the right one of Arm and Thumb, and the handwritten `clang -cc1 -triple armv6m-eabi` in this test is a bit strange, even if it's not causing this `-emit-llvm` test to fail.
https://github.com/llvm/llvm-project/pull/166416
More information about the cfe-commits
mailing list