diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6e4aa8ed49f..84354df369b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-01-13 Uros Bizjak + + * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit + relocations of local symbols wider than UNITS_PER_WORD are not valid. + (alpha_legitimize_address): Do not split local symbols wider than + UNITS_PER_WORD into HIGH/LO_SUM parts. + 2009-01-13 Danny Smith PR bootstrap/38580 @@ -32,9 +39,9 @@ 2009-01-12 Tomas Bily PR middlend/38385 - * tree-loop-distribution.c (prop_phis): New function. - (generate_builtin): Call prop_phis. - * testsuite/gcc.dg/tree-ssa/pr38385.c: New file. + * tree-loop-distribution.c (prop_phis): New function. + (generate_builtin): Call prop_phis. + * testsuite/gcc.dg/tree-ssa/pr38385.c: New file. 2009-01-12 Jakub Jelinek @@ -85,8 +92,7 @@ 2008-01-09 Vladimir Makarov PR rtl-optimization/38495 - * ira-emit.c (print_move_list, ira_debug_move_list): New - functions. + * ira-emit.c (print_move_list, ira_debug_move_list): New functions. (add_range_and_copies_from_move_list): Print all added ranges. Add ranges to memory optimized destination. @@ -111,8 +117,7 @@ epilogue_size_needed to the epilogue expanders. PR c/35742 - * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like - BIND_EXPR. + * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR. 2009-01-09 John David Anglin diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 9c79f8883fc..7bafb0ae84b 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -864,9 +864,11 @@ alpha_legitimate_address_p (enum machine_mode mode, rtx x, int strict) } } - /* If we're managing explicit relocations, LO_SUM is valid, as - are small data symbols. */ - else if (TARGET_EXPLICIT_RELOCS) + /* If we're managing explicit relocations, LO_SUM is valid, as are small + data symbols. Avoid explicit relocations of modes larger than word + mode since i.e. $LC0+8($1) can fold around +/- 32k offset. */ + else if (TARGET_EXPLICIT_RELOCS + && GET_MODE_SIZE (mode) <= UNITS_PER_WORD) { if (small_symbolic_operand (x, Pmode)) return true; @@ -916,8 +918,7 @@ get_tls_get_addr (void) to be legitimate. If we find one, return the new, valid address. */ rtx -alpha_legitimize_address (rtx x, rtx scratch, - enum machine_mode mode ATTRIBUTE_UNUSED) +alpha_legitimize_address (rtx x, rtx scratch, enum machine_mode mode) { HOST_WIDE_INT addend; @@ -965,8 +966,12 @@ alpha_legitimize_address (rtx x, rtx scratch, goto split_addend; } - /* If this is a local symbol, split the address into HIGH/LO_SUM parts. */ - if (TARGET_EXPLICIT_RELOCS && symbolic_operand (x, Pmode)) + /* If this is a local symbol, split the address into HIGH/LO_SUM parts. + Avoid modes larger than word mode since i.e. $LC0+8($1) can fold + around +/- 32k offset. */ + if (TARGET_EXPLICIT_RELOCS + && GET_MODE_SIZE (mode) <= UNITS_PER_WORD + && symbolic_operand (x, Pmode)) { rtx r0, r16, eqv, tga, tp, insn, dest, seq; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a34e95f44f9..a59c294453c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2009-01-13 Uros Bizjak + + Revert: + 2009-01-05 Uros Bizjak + + * gcc.dg/compat/struct-layout-1_generate.c (dg-options): Add -mieee + for alpha*-*-* targets. + * g++.dg/compat/struct-layout-1_generate.c (dg-options): Ditto. + 2009-01-12 Jerry DeLisle PR libfortran/38772 diff --git a/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c b/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c index b314d7079b3..575ad61a01a 100644 --- a/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c +++ b/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c @@ -48,8 +48,7 @@ const char *dg_options[] = { "/* { dg-options \"%s-I%s -fno-common\" { target hppa*-*-hpux* powerpc*-*-darwin* *-*-mingw32* *-*-cygwin* } } */\n", "/* { dg-options \"%s-I%s -mno-mmx -fno-common\" { target i?86-*-darwin* x86_64-*-darwin* } } */\n", "/* { dg-options \"%s-I%s -mno-base-addresses\" { target mmix-*-* } } */\n", -"/* { dg-options \"%s-I%s -mlongcalls -mtext-section-literals\" { target xtensa*-*-* } } */\n", -"/* { dg-options \"%s-I%s -mieee\" { target alpha*-*-* } } */\n" +"/* { dg-options \"%s-I%s -mlongcalls -mtext-section-literals\" { target xtensa*-*-* } } */\n" #define NDG_OPTIONS (sizeof (dg_options) / sizeof (dg_options[0])) }; diff --git a/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c b/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c index 26e65723323..a162dee42a4 100644 --- a/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c +++ b/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c @@ -48,8 +48,7 @@ const char *dg_options[] = { "/* { dg-options \"%s-I%s -fno-common\" { target hppa*-*-hpux* powerpc*-*-darwin* *-*-mingw32* *-*-cygwin* } } */\n", "/* { dg-options \"%s-I%s -mno-mmx -fno-common\" { target i?86-*-darwin* x86_64-*-darwin* } } */\n", "/* { dg-options \"%s-I%s -mno-base-addresses\" { target mmix-*-* } } */\n", -"/* { dg-options \"%s-I%s -mlongcalls -mtext-section-literals\" { target xtensa*-*-* } } */\n", -"/* { dg-options \"%s-I%s -mieee\" { target alpha*-*-* } } */\n" +"/* { dg-options \"%s-I%s -mlongcalls -mtext-section-literals\" { target xtensa*-*-* } } */\n" #define NDG_OPTIONS (sizeof (dg_options) / sizeof (dg_options[0])) };