From: Richard Earnshaw Date: Thu, 20 Mar 2003 22:04:56 +0000 (+0000) Subject: re PR target/10066 ([arm-linux] libjava build error on arm-linux) X-Git-Tag: releases/gcc-3.4.0~7783 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=228692e24fc8aa6aa3dbf470f4bc25b93e031dde;p=thirdparty%2Fgcc.git re PR target/10066 ([arm-linux] libjava build error on arm-linux) PR 10066 * arm.md (UNSPEC_PIC_BASE): New constant. (pic_add_dot_plus_four): Wrap with unspec. (pic_add_dot_plus_eight): Likewise. From-SVN: r64626 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6f248a8bdf5f..9ad15c8f8a90 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-03-20 Richard Earnshaw + + PR 10066 + * arm.md (UNSPEC_PIC_BASE): New constant. + (pic_add_dot_plus_four): Wrap with unspec. + (pic_add_dot_plus_eight): Likewise. + 2003-03-20 Kazu Hirata * config/h8300/h8300.md (*insv_si_1_n): New. diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 7ad63f2d989c..4e111289a38b 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -56,7 +56,11 @@ (UNSPEC_PIC_SYM 3) ; A symbol that has been treated properly for pic ; usage, that is, we will add the pic_register ; value to it before trying to dereference it. - (UNSPEC_PRLG_STK 4) ; A special barrier that prevents frame accesses + (UNSPEC_PIC_BASE 4) ; Adding the PC value to the offset to the + ; GLOBAL_OFFSET_TABLE. The operation is fully + ; described by the RTL but must be wrapped to + ; prevent combine from trying to rip it apart. + (UNSPEC_PRLG_STK 5) ; A special barrier that prevents frame accesses ; being scheduled before the stack adjustment insn. (UNSPEC_PROLOGUE_USE 6) ; As USE insns are not meaningful after reload, ; this unspec is used to prevent the deletion of @@ -3825,7 +3829,9 @@ (define_insn "pic_add_dot_plus_four" [(set (match_operand:SI 0 "register_operand" "+r") - (plus:SI (match_dup 0) (const (plus:SI (pc) (const_int 4))))) + (unspec:SI [(plus:SI (match_dup 0) + (const (plus:SI (pc) (const_int 4))))] + UNSPEC_PIC_BASE)) (use (label_ref (match_operand 1 "" "")))] "TARGET_THUMB && flag_pic" "* @@ -3838,7 +3844,9 @@ (define_insn "pic_add_dot_plus_eight" [(set (match_operand:SI 0 "register_operand" "+r") - (plus:SI (match_dup 0) (const (plus:SI (pc) (const_int 8))))) + (unspec:SI [(plus:SI (match_dup 0) + (const (plus:SI (pc) (const_int 8))))] + UNSPEC_PIC_BASE)) (use (label_ref (match_operand 1 "" "")))] "TARGET_ARM && flag_pic" "*