------- Comment #3 from vmakarov at redhat dot com 2008-06-09 17:22 ------- The test is ok. Thanks.
The problem is very simple. The assertion causing abort is simply wrong. I reproduced the same bug for the old register allocator. I just used wetstone for this. The assertion is wrong because alignment can not be bigger the preferred stack boundary (please see function.c::assign_stack_slot). It is a very old code. Instead of gcc_assert (GET_MODE_ALIGNMENT (GET_MODE (mem) <= MEM_ALIGN (mem)) in caller_save.c::insert_save/insert_restore, the assertion should be gcc_assert (MIN (PREFERRED_STACK_BOUNDARY, GET_MODE_ALIGNMENT (GET_MODE (mem)) <= MEM_ALIGN (mem)) I'll submit the patch to the branch today or tomorrow. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36450