------- Comment #5 from dje at gcc dot gnu dot org 2008-05-01 02:40 ------- Maybe something like the following patch (untested)?
Index: rs6000.c =================================================================== *** rs6000.c (revision 132964) --- rs6000.c (working copy) *************** constant_pool_expr_1 (rtx op, int *have_ *** 3358,3364 **** return 0; case PLUS: case MINUS: ! return (constant_pool_expr_1 (XEXP (op, 0), have_sym, have_toc) && constant_pool_expr_1 (XEXP (op, 1), have_sym, have_toc)); case CONST: return constant_pool_expr_1 (XEXP (op, 0), have_sym, have_toc); --- 3358,3365 ---- return 0; case PLUS: case MINUS: ! return (! *have_toc ! && constant_pool_expr_1 (XEXP (op, 0), have_sym, have_toc) && constant_pool_expr_1 (XEXP (op, 1), have_sym, have_toc)); case CONST: return constant_pool_expr_1 (XEXP (op, 0), have_sym, have_toc); -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36090