aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>2007-12-20 01:17:57 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2007-12-20 01:17:57 +0000
commitf946206c0eb307caa93dea8d55a7a2416e64049f (patch)
treef9c094b5e97c7b5b420d6184d397f495bca01283
parentec871836a4c7bafdf23109ab2b1f11f5cbd1d794 (diff)
downloadgcc-f946206c0eb307caa93dea8d55a7a2416e64049f.zip
gcc-f946206c0eb307caa93dea8d55a7a2416e64049f.tar.gz
gcc-f946206c0eb307caa93dea8d55a7a2416e64049f.tar.bz2
re PR target/34525 (ICE in extract_insn, at recog.c:1990 on hppa)
PR target/34525 * pa.c (legitimize_pic_address): Force function labels into memory. From-SVN: r131096
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/pa/pa.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7066277..5e4ac24 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-12-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR target/34525
+ * pa.c (legitimize_pic_address): Force function labels into memory.
+
2007-12-19 Zdenek Dvorak <ook@ucw.cz>
* omp-low.c (build_omp_regions_1): Recognition of combined parallels
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index b4d890c..46ecbc1 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -694,6 +694,10 @@ legitimize_pic_address (rtx orig, enum machine_mode mode, rtx reg)
tmp_reg = ((reload_in_progress || reload_completed)
? reg : gen_reg_rtx (Pmode));
+ /* Force function labels into memory. */
+ if (function_label_operand (orig, mode))
+ orig = force_const_mem (mode, orig);
+
emit_move_insn (tmp_reg,
gen_rtx_PLUS (word_mode, pic_offset_table_rtx,
gen_rtx_HIGH (word_mode, orig)));