labrinea wrote:

> The original situation looks something like:
> 
> ```
> #include <arm_neon.h>
> 
> void foo() {
>    // ...
>    uint8x16_t x = {};
>    vreinterpretq_u8_s8(x);
> }
> ```
> 
> Compiled with `clang -target aarch64-redhat-linux-gnu 
> -march=-march=armv9-a+sve2+fp16+fp16fml+crypto+bf16+sm4+i8mm+sve2-bitperm+sve2-sha3+sve2-aes+sve2-sm4
>  -Xclang -target-feature -Xclang -sve -c test.c` (coming from a build system 
> where `-target, -march` flags are set centrally but this particular 
> target/team not being able to handle SVE appended the `-Xclang` flags for 
> their target)...
> 
> This compiled fine in clang-17, but with the clang-19 the frontend started 
> producing this confusing message (because this is a neon intrinsic, not an 
> SVE one):
> 
> ```
> test.cpp:5:3: error: always_inline function 'vreinterpretq_u8_s8' requires 
> target feature 'sve', but would be inlined into function 'foo' that is 
> compiled without support for 'sve'
>     5 |   vreinterpretq_u8_s8(x);
> ```

Well, with your patch this now compiles, but the unit test demonstrates that 
none of the extensions of that command line which depend on sve (like sve2, 
sve2-bitperm, etc) will get disabled. I doubt this was the intention. Passing 
internal frontend options with -Xclang is not recommended.

I tried modifying`reconstructFromParsedFeatures` by replacing `Enabled.reset()` 
with `disable()`and `Enabled.set()` with `enable()`but that made 50 clang tests 
fail with errors similar to the one you reported (mismatch between target 
features of caller and callee).

https://github.com/llvm/llvm-project/pull/142236
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to