aboutsummaryrefslogtreecommitdiff
path: root/gcc/cselib.c
diff options
context:
space:
mode:
author(no author) <(no author)@138bc75d-0d04-0410-961f-82ee72b054a4>2003-03-09 17:55:48 +0000
committer(no author) <(no author)@138bc75d-0d04-0410-961f-82ee72b054a4>2003-03-09 17:55:48 +0000
commit98b99b3057d24ff33b7767e72f95495f27588e85 (patch)
treeb96ce31f3f2843e6223e92200f4eab6800a57a34 /gcc/cselib.c
parent964944fc854c1dd723f7b8150d0deac634aabdbb (diff)
This commit was manufactured by cvs2svn to create taghammer-3_3-merge-20030309
'hammer-3_3-merge-20030309'. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/tags/hammer-3_3-merge-20030309@64040 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cselib.c')
-rw-r--r--gcc/cselib.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/cselib.c b/gcc/cselib.c
index feffa6de6cf..e34f26772ac 100644
--- a/gcc/cselib.c
+++ b/gcc/cselib.c
@@ -83,6 +83,7 @@ static GTY((param_is (cselib_val))) htab_t hash_table;
/* This is a global so we don't have to pass this through every function.
It is used in new_elt_loc_list to set SETTING_INSN. */
static rtx cselib_current_insn;
+static bool cselib_current_insn_in_libcall;
/* Every new unknown value gets a unique number. */
static unsigned int next_unknown_value;
@@ -163,6 +164,7 @@ new_elt_loc_list (next, loc)
el->next = next;
el->loc = loc;
el->setting_insn = cselib_current_insn;
+ el->in_libcall = cselib_current_insn_in_libcall;
return el;
}
@@ -1308,6 +1310,10 @@ cselib_process_insn (insn)
int i;
rtx x;
+ if (find_reg_note (insn, REG_LIBCALL, NULL))
+ cselib_current_insn_in_libcall = true;
+ if (find_reg_note (insn, REG_RETVAL, NULL))
+ cselib_current_insn_in_libcall = false;
cselib_current_insn = insn;
/* Forget everything at a CODE_LABEL, a volatile asm, or a setjmp. */
@@ -1407,6 +1413,7 @@ cselib_init ()
hash_table = htab_create_ggc (31, get_value_hash, entry_and_rtx_equal_p,
NULL);
clear_table (1);
+ cselib_current_insn_in_libcall = false;
}
/* Called when the current user is done with cselib. */