[armel, avmv6] wrong assembler with -O[13s], not -O2
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Linaro GCC |
Invalid
|
Undecided
|
Unassigned | ||
gcc-4.4 (Ubuntu) |
New
|
Undecided
|
Unassigned | ||
gcc-4.5 (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
Binary package hint: gcc-4.4
maverick:
$ gcc-4.4 -c -march=armv6 -Os inlining.i
inlining.c: In function 'rewriteLock':
inlining.c:850: error: insn does not satisfy its constraints:
(insn 62 20 21 3 inlining.c:846 (set (reg:SI 3 r3)
(reg/f:SI 13 sp)) 174 {*thumb1_
inlining.c:850: internal compiler error: in reload_
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:/
natty, with both gcc-4.4 and gcc-4.5:
$ gcc-4.5 -c -march=armv6 -Os inlining.i
/tmp/ccl1qfKd.s: Assembler messages:
/tmp/ccl1qfKd.
/tmp/ccl1qfKd.
/tmp/ccl1qfKd.
/tmp/ccl1qfKd.
works with -O2, fails with -O1, -Os, -O3.
Still fails on 4.5-2011.03-0 release when built with -mthumb
/tmp/cc491lp9.s: Assembler messages: s:793: Error: invalid immediate: 983040 is out of range s:793: Error: value of 00000000000f0000 too large for field of 2 bytes at 000000000000051e s:1087: Error: invalid immediate: 983040 is out of range s:1087: Error: value of 00000000000f0000 too large for field of 2 bytes at 0000000000000708
/tmp/cc491lp9.
/tmp/cc491lp9.
/tmp/cc491lp9.
/tmp/cc491lp9.
those seem to come from a line in the input newCodeBlock() and newDuplicateBlock function with inline asm, of
mov r7, #0xf0000
For Thumb1 that just doesn't fit; compiling with -march=armv6t2 works.
Dave