https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91050
Bug ID: 91050
Summary: -mdejagnu-cpu=<cpu> does not affect the -m<cpu>
assembler option
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: bergner at gcc dot gnu.org
Target Milestone: ---
The -mdejagnu-cpu=<cpu> option is supposed to behave exactly like -mcpu=<cpu>
except for that -mcpu=<cpu> option cannot override it. We want/need that
behavior in some of our testsuite test cases. However, with Alan's patch that
stopped gcc from always passing -many to the assembler for POWER, we are now
seeing problems like the following test case:
bergner@pike:~/gcc/BUGS/dejagnu-cpu$ cat bug.c
unsigned long
foo (void)
{
unsigned long addr;
asm ("lnia %0" : "=r" (addr)); /* "lnia" is new in POWER9. */
return addr;
}
bergner@pike:~/gcc/BUGS/dejagnu-cpu$ gcc -O2 -c -mcpu=power8 bug.c
/tmp/ccSEBrVw.s: Assembler messages:
/tmp/ccSEBrVw.s:13: Error: unrecognized opcode: `lnia'
bergner@pike:~/gcc/BUGS/dejagnu-cpu$ gcc -O2 -c -mcpu=power9 bug.c
bergner@pike:~/gcc/BUGS/dejagnu-cpu$ gcc -O2 -c -mcpu=power9
-mdejagnu-cpu=power9 bug.c
bergner@pike:~/gcc/BUGS/dejagnu-cpu$ gcc -O2 -c -mcpu=power8
-mdejagnu-cpu=power9 bug.c
/tmp/ccKQFygo.s: Assembler messages:
/tmp/ccKQFygo.s:13: Error: unrecognized opcode: `lnia'
bergner@pike:~/gcc/BUGS/dejagnu-cpu$ gcc -O2 -c -mdejagnu-cpu=power9 bug.c
/tmp/ccKQFygo.s: Assembler messages:
/tmp/ccKQFygo.s:13: Error: unrecognized opcode: `lnia'
In this case, "lnia" is an instruction added in power9. However, we can see
from above, that -mdejagnu-cpu=power9 alone is not enough to get the test case
to compile/assemle correctly. It seems the -m<cpu> assembler option we use is
only affected by -mcpu= and not -mdejagnu-cpu= which is a bug.