summaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorvries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>2014-04-25 11:21:40 +0000
committervries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>2014-04-25 11:21:40 +0000
commite67cfba4ebc667ea3f7c6230677fd5a4a8011593 (patch)
treef619c8dfb45013f73d3a208c27aae9880becdeda /gcc/expr.c
parent6792947daef09bed4fc29ae2e9dd2a806165c3a2 (diff)
downloadgcc-e67cfba4ebc667ea3f7c6230677fd5a4a8011593.tar.gz
Add clobber_reg
2014-04-25 Tom de Vries <tom@codesourcery.com> * expr.c (clobber_reg_mode): New function. * expr.h (clobber_reg): New function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209800 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 825a244b09a..fec6194af1f 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -2396,6 +2396,18 @@ use_reg_mode (rtx *call_fusage, rtx reg, enum machine_mode mode)
= gen_rtx_EXPR_LIST (mode, gen_rtx_USE (VOIDmode, reg), *call_fusage);
}
+/* Add a CLOBBER expression for REG to the (possibly empty) list pointed
+ to by CALL_FUSAGE. REG must denote a hard register. */
+
+void
+clobber_reg_mode (rtx *call_fusage, rtx reg, enum machine_mode mode)
+{
+ gcc_assert (REG_P (reg) && REGNO (reg) < FIRST_PSEUDO_REGISTER);
+
+ *call_fusage
+ = gen_rtx_EXPR_LIST (mode, gen_rtx_CLOBBER (VOIDmode, reg), *call_fusage);
+}
+
/* Add USE expressions to *CALL_FUSAGE for each of NREGS consecutive regs,
starting at REGNO. All of these registers must be hard registers. */