From 99a32567965f9ec5f1815eb5474e86c7fa39cd07 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Thu, 26 Sep 2002 21:12:51 -0700 Subject: [PATCH] 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 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 --- gcc/ChangeLog | 6 ++++++ gcc/calls.c | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2212bac341c..3fb28e50bbd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-09-26 David S. Miller + + 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 * dbxout.c (FORCE_TEXT): Switch to current_function_decl, not diff --git a/gcc/calls.c b/gcc/calls.c index d4e3f009589..ffedacabbb0 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) -- 2.30.2