mstorsjo wrote:

> > Indeed, Clang doesn't provide int128_t for 32 bit targets, AFAIK.
> 
> It looks like a little bit more complex. I checked with Standalone-i386 and 
> AddressSanitizer-i386 targets. They do have int128_t for 32 bit targets as 
> soon as clang itself built as 64-bit binary.

That doesn't quite reflect my experience - the bitness of the host compiler 
binary should not affect what features are available in the target environment:
```
$ file -L bin/clang
bin/clang: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically 
linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, 
BuildID[xxHash]=724b58c4c8ae1673, not stripped
$ bin/clang -target i386-linux-gnu -E -dM - < /dev/null | grep INT128
$ bin/clang -target x86_64-linux-gnu -E -dM - < /dev/null | grep INT128
#define __SIZEOF_INT128__ 16
$ bin/clang -target i386-windows -E -dM - < /dev/null | grep INT128
$ bin/clang -target x86_64-windows -E -dM - < /dev/null | grep INT128
#define __SIZEOF_INT128__ 16
$ cat int128.c 
__int128_t a = 42;
$ bin/clang -target x86_64-linux-gnu -c int128.c
$ bin/clang -target i386-linux-gnu -c int128.c
int128.c:1:1: error: unknown type name '__int128_t'
    1 | __int128_t a = 42;
      | ^
1 error generated.
```
I'm not quite sure what kind of test setup you have - it sounds like it has 
detected feature based on the compiler's default target, regardless of what the 
target really supports?

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

Reply via email to