https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103646
Bug ID: 103646 Summary: gcc driver breaks asm ("ebp") Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: driver Assignee: unassigned at gcc dot gnu.org Reporter: siddhesh at gcc dot gnu.org Target Milestone: --- Tested in rev cf23d58df262c15d7f560078cdcc4570d318bcc1, I haven't bisected the earliest commit that introduced this. asm ("ebp") does not seem to work: struct __timeval64 { long long int tv_sec; long long int tv_usec; }; void * __select64 (struct __timeval64 *t) { register unsigned int _a6 asm ("ebp") = 0; asm volatile ("call somefunc" : : "a" ((unsigned int) (t)), "r" (_a6) : "memory", "cc"); t->tv_sec = 0; t->tv_usec = 1; return 0; } $ PATH=$HOME/tools/bin:$PATH gcc -v -fdump-rtl-all -m32 misc/select.c -c -O2 -m32 -mstackrealign -o misc/select.o Using built-in specs. COLLECT_GCC=gcc Target: x86_64-pc-linux-gnu Configured with: ../configure --prefix=/home/sipoyare/tools --enable-languages=c,c++,lto --disable-bootstrap Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 12.0.0 20211201 (experimental) (GCC) COLLECT_GCC_OPTIONS='-v' '-fdump-rtl-all' '-c' '-O2' '-m32' '-mstackrealign' '-o' 'misc/select.o' '-mtune=generic' '-march=x86-64' '-dumpdir' 'misc/' /home/sipoyare/tools/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/cc1 -quiet -v -imultilib 32 misc/select.c -quiet -dumpdir misc/ -dumpbase select.c -dumpbase-ext .c -m32 -mstackrealign -mtune=generic -march=x86-64 -O2 -version -fdump-rtl-all -o /tmp/ccPgSl7u.s GNU C17 (GCC) version 12.0.0 20211201 (experimental) (x86_64-pc-linux-gnu) compiled by GNU C version 11.2.1 20210728 (Red Hat 11.2.1-1), GMP version 6.2.0, MPFR version 4.1.0-p13, MPC version 1.2.1, isl version isl-0.16.1-GMP GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 ignoring nonexistent directory "/home/sipoyare/tools/lib/gcc/x86_64-pc-linux-gnu/12.0.0/../../../../x86_64-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /home/sipoyare/tools/lib/gcc/x86_64-pc-linux-gnu/12.0.0/include /usr/local/include /home/sipoyare/tools/include /home/sipoyare/tools/lib/gcc/x86_64-pc-linux-gnu/12.0.0/include-fixed /usr/include End of search list. GNU C17 (GCC) version 12.0.0 20211201 (experimental) (x86_64-pc-linux-gnu) compiled by GNU C version 11.2.1 20210728 (Red Hat 11.2.1-1), GMP version 6.2.0, MPFR version 4.1.0-p13, MPC version 1.2.1, isl version isl-0.16.1-GMP GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 Compiler executable checksum: 3bf01b92d0d6f1753efbcaf2846d9076 misc/select.c: In function ‘__select64’: misc/select.c:18:1: error: bp cannot be used in ‘asm’ here 18 | } | ^ The driver appears to pass -march=x86-64, which results in this error. Calling cc1 with -march=i686 (like gcc11 does) results in no error. Due to this, glibc build fails for i686.