summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2008-06-05 16:33:57 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2008-06-05 16:33:57 +0000
commit314bcf6eb1784af61bcf835475ca097600992f25 (patch)
tree5af96072fd975766f35191814f1c86a7df71b78c
parent392c9628e92e3c551e84bc82c74c8ce62c6d640c (diff)
downloadgcc-314bcf6eb1784af61bcf835475ca097600992f25.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_1-branch@136408 138bc75d-0d04-0410-961f-82ee72b054a4
-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 edc16a2ec1f..92d7768ead4 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 521afa4bf1a..9cf221b3365 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 e2ab7fdb999..2c7922ef789 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")