This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ARM: Enable scheduling for Thumb-2


On 14.11.2009 13:24, Daniel Jacobowitz wrote:
On Fri, Nov 13, 2009 at 05:24:39PM +0000, Ramana Radhakrishnan wrote:

On Tue, 2009-11-10 at 16:11 -0500, Daniel Jacobowitz wrote:
I came across this ??? comment... in my testing, enabling scheduling
for Thumb-2 is size-neutral and has performance benefits ranging from
1% to 20%.  A couple of performance tests regress, but they are
reasonable problems with non-clairvoyant register allocation
(something was spilled because scheduling increased lifetimes).


This broke CSiBe builds for -Os and Thumb2 - I've filed http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42031

for this. Could you take a look at this ?

Thanks for fixing this, Richard!


I'm surprised this did not show up in my testing...

when applying these two patches to the 4.4 branch (configured --with-mode=thumb, the build fails in stage2 with:


/home/doko/gcc/4.4/gcc-4.4-4.4.2/build/./prev-gcc/xgcc -B/home/doko/gcc/4.4/gcc-4.4-4.4.2/build/./prev-gcc/ -B/usr/arm-linux-gnueabi/bin/ -c -g -O2 -fno-stack-protector -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual -Wold-style-definition -Wc++-compat -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -DHAVE_CONFIG_H -I. -I. -I../../src/gcc -I../../src/gcc/. -I../../src/gcc/../include -I../../src/gcc/../libcpp/include -I../../src/gcc/../libdecnumber -I../../src/gcc/../libdecnumber/dpd -I../libdecnumber -I/include -I/include -DCLOOG_PPL_BACKEND ../../src/gcc/calls.c -o calls.o
../../src/gcc/calls.c: In function 'emit_library_call_value_1':
../../src/gcc/calls.c:3933: error: unable to find a register to spill in class 'LO_REGS'
../../src/gcc/calls.c:3933: error: this is the insn:
(insn 856 854 849 94 ../../src/gcc/calls.c:3531 (parallel [
(set (reg:DI 277 [ D.47483 ])
(plus:DI (reg:DI 277 [ D.47483 ])
(reg:DI 278 [ D.47482 ])))
(clobber (reg:CC 24 cc))
]) 1 {*arm_adddi3} (expr_list:REG_UNUSED (reg:CC 24 cc)
(nil)))
../../src/gcc/calls.c:3933: confused by earlier errors, bailing out


building with -O1 or with -marm works around the failure. Any hint if an additional backport from the trunk is required? I didn't check trunk yet.

Matthias


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]