https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105576
--- Comment #5 from Fangrui Song <i at maskray dot me> --- (In reply to Hongtao.liu from comment #4) > constraint "i" + "%p0"? > > asm (".pushsection .xxx,\"aw\"; .dc.a %p0; .popsection" :: "i"(addr)); // > supported on aarch64 and riscv > asm (".pushsection .xxx,\"aw\"; .dc.a %p0; .popsection" :: "i"(&var)); // > supported on aarch64 constraint "i" + "%p0" does not work with -mcmodel=large: a.c:11:3: warning: ‘asm’ operand 0 probably does not match constraints 11 | asm volatile(".quad %p0" :: "i"(foo)); | ^~~ a.c:11:3: error: impossible constraint in ‘asm’ On aarch64, `asm volatile(".quad %0" :: "S"(foo));` works with -mcmodel=large -fno-pic (note: PIC large code model has not been implemented).