https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101428
Bug ID: 101428 Summary: [10/11/12 Regression] ICE: 'asm' clobber conflict with output operand Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- Target: aarch64-linux-gnu gcc-12.0.0-alpha20210711 snapshot (g:269256f33c51222167ad461f775d5468bb5ecaf5) ICEs when compiling the following testcase, extracted from test/CodeGen/inline-asm-x86-flag-output.c from the clang 12.0.0 test suite: int test_ccge(long nr, volatile long *addr) { int x; asm("cmp %2,%1" : "=@ccge"(x), "=m"(*(volatile long *)(addr)) : "r"(nr) : "cc"); if (x) return 0; return 1; } % aarch64-linux-gnu-gcc-12.0.0 -c dwwjjifx.c during RTL pass: expand dwwjjifx.c: In function 'test_ccge': dwwjjifx.c:3:3: internal compiler error: 'asm' clobber conflict with output operand 3 | asm("cmp %2,%1" | ^~~ 0xa35e46 expand_asm_stmt /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210711/work/gcc-12-20210711/gcc/cfgexpand.c:3603 0xa3a640 expand_gimple_stmt_1 /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210711/work/gcc-12-20210711/gcc/cfgexpand.c:3874 0xa3a640 expand_gimple_stmt /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210711/work/gcc-12-20210711/gcc/cfgexpand.c:4041 0xa41036 expand_gimple_basic_block /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210711/work/gcc-12-20210711/gcc/cfgexpand.c:6083 0xa42de7 execute /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_alpha20210711/work/gcc-12-20210711/gcc/cfgexpand.c:6809 (if it really makes sense to file PRs for this type of ICEs, of course.)