On 10/31/11 14:24, Henderson, Stuart wrote: >> 2011-09-26 Jakub Jelinek <ja...@redhat.com> >> >> * rtl.h (const_tiny_rtx): Change into array of 4 x MAX_MACHINE_MODE >> from 3 x MAX_MACHINE_MODE. >> (CONSTM1_RTX): Define. >> * emit-rtl.c (const_tiny_rtx): Change into array of 4 x >> MAX_MACHINE_MODE >> from 3 x MAX_MACHINE_MODE. >> (gen_rtx_CONST_VECTOR): Use CONSTM1_RTX if all inner constants are >> CONSTM1_RTX. >> (init_emit_once): Initialize CONSTM1_RTX for MODE_INT and >> MODE_VECTOR_INT modes. >> * simplify-rtx.c (simplify_binary_operation_1) <case IOR, XOR, AND>: >> Optimize if one operand is CONSTM1_RTX. >> * config/i386/i386.c (ix86_expand_sse_movcc): Optimize mask ? -1 : x >> into mask | x. > > FYI - this patch (179238) breaks the Blackfin compiler build with an internal > compiler error during configure of libgcc: > conftest.c:1:0: internal compiler error: in gen_const_vector, at > emit-rtl.c:5491
This fixes it. Looks obvious enough to me; hence will commit Monday if no objections. Bernd
* emit-rtl.c (init_emit_once): Initialize const_tiny_rtx[3] for partial integer modes. Index: emit-rtl.c =================================================================== --- emit-rtl.c (revision 181252) +++ emit-rtl.c (working copy) @@ -5706,6 +5706,11 @@ init_emit_once (void) mode = GET_MODE_WIDER_MODE (mode)) const_tiny_rtx[3][(int) mode] = constm1_rtx; + for (mode = GET_CLASS_NARROWEST_MODE (MODE_PARTIAL_INT); + mode != VOIDmode; + mode = GET_MODE_WIDER_MODE (mode)) + const_tiny_rtx[3][(int) mode] = constm1_rtx; + for (mode = GET_CLASS_NARROWEST_MODE (MODE_COMPLEX_INT); mode != VOIDmode; mode = GET_MODE_WIDER_MODE (mode))