diff options
author | David S. Miller <davem@redhat.com> | 2002-09-26 21:12:51 -0700 |
---|---|---|
committer | David S. Miller <davem@gcc.gnu.org> | 2002-09-26 21:12:51 -0700 |
commit | 99a32567965f9ec5f1815eb5474e86c7fa39cd07 (patch) | |
tree | abb46a6de625dc88ef09efa6b62a0fab9364f5a5 /gcc | |
parent | 67cef334cce4159cc4de8543ffcc399bfb6c94be (diff) | |
download | gcc-99a32567965f9ec5f1815eb5474e86c7fa39cd07.zip gcc-99a32567965f9ec5f1815eb5474e86c7fa39cd07.tar.gz gcc-99a32567965f9ec5f1815eb5474e86c7fa39cd07.tar.bz2 |
re PR rtl-optimization/7335 (Sparc: ICE in verify_wide_reg (flow.c:557) with long double and optimization)
2002-09-26 David S. Miller <davem@redhat.com>
PR optimization/7335
* calls.c (emit_library_call_value_1): Passing args by reference
converts a CONST function into a PURE one.
From-SVN: r57576
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/calls.c | 8 |
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2212bac..3fb28e5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-09-26 David S. Miller <davem@redhat.com> + + PR optimization/7335 + * calls.c (emit_library_call_value_1): Passing args by reference + converts a CONST function into a PURE one. + 2002-09-26 David Edelsohn <edelsohn@gnu.org> * dbxout.c (FORCE_TEXT): Switch to current_function_decl, not diff --git a/gcc/calls.c b/gcc/calls.c index d4e3f00..ffedaca 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -3684,6 +3684,14 @@ emit_library_call_value_1 (retval, orgfun, value, fn_type, outmode, nargs, p) } flags &= ~(ECF_CONST | ECF_PURE | ECF_LIBCALL_BLOCK); + /* If this was a CONST function, it is now PURE since + it now reads memory. */ + if (flags & ECF_CONST) + { + flags &= ~ECF_CONST; + flags |= ECF_PURE; + } + if (GET_MODE (val) == MEM && ! must_copy) slot = val; else if (must_copy) |