aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2008-06-05 16:33:57 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2008-06-05 16:33:57 +0000
commit206109cdcbfce970ea7d00fa11421ba001266f48 (patch)
tree5af96072fd975766f35191814f1c86a7df71b78c
parent8b3fa1c3e9f67aa18c8d729e5f8427a48ad1e9cc (diff)
downloadgcc-206109cdcbfce970ea7d00fa11421ba001266f48.zip
gcc-206109cdcbfce970ea7d00fa11421ba001266f48.tar.gz
gcc-206109cdcbfce970ea7d00fa11421ba001266f48.tar.bz2
mips.c (mips_emit_loadgp): Emit a blockage if current_function_profile.
gcc/ * config/mips/mips.c (mips_emit_loadgp): Emit a blockage if current_function_profile. * config/mips/mips.md (loadgp_blockage): Use SI rather than DI. From-SVN: r136408
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/mips/mips.c2
-rw-r--r--gcc/config/mips/mips.md3
3 files changed, 8 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index edc16a2..92d7768 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2008-06-05 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * config/mips/mips.c (mips_emit_loadgp): Emit a blockage if
+ current_function_profile.
+ * config/mips/mips.md (loadgp_blockage): Use SI rather than DI.
+
2008-05-29 Eric Botcazou <ebotcazou@adacore.com>
* tree-nested.c (check_for_nested_with_variably_modified): Fix typo.
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 521afa4..9cf221b 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -6534,7 +6534,7 @@ mips_emit_loadgp (void)
offset = mips_unspec_address (addr, SYMBOL_GOTOFF_LOADGP);
incoming_address = gen_rtx_REG (Pmode, PIC_FUNCTION_ADDR_REGNUM);
emit_insn (gen_loadgp (offset, incoming_address));
- if (!TARGET_EXPLICIT_RELOCS)
+ if (!TARGET_EXPLICIT_RELOCS || current_function_profile)
emit_insn (gen_loadgp_blockage ());
}
}
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index e2ab7fd..2c7922e 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -3947,12 +3947,11 @@
}
[(set_attr "length" "12")])
-;; The use of gp is hidden when not using explicit relocations.
;; This blockage instruction prevents the gp load from being
;; scheduled after an implicit use of gp. It also prevents
;; the load from being deleted as dead.
(define_insn "loadgp_blockage"
- [(unspec_volatile [(reg:DI 28)] UNSPEC_BLOCKAGE)]
+ [(unspec_volatile [(reg:SI 28)] UNSPEC_BLOCKAGE)]
""
""
[(set_attr "type" "unknown")