This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] Fix alpha and arm bootstrap failures
- From: Roger Sayle <roger at www dot eyesopen dot com>
- To: Richard Henderson <rth at redhat dot com>
- Cc: Richard Earnshaw <rearnsha at arm dot com>, Brad Lucier <lucier at math dot purdue dot edu>, <gcc-patches at gcc dot gnu dot org>, Kazu Hirata <kazu at cs dot umass dot edu>
- Date: Wed, 26 Feb 2003 14:50:37 -0700 (MST)
- Subject: Re: [PATCH] Fix alpha and arm bootstrap failures
On Wed, 26 Feb 2003, Richard Henderson wrote:
> On Tue, Feb 25, 2003 at 12:18:37PM -0700, Roger Sayle wrote:
> I disagree strongly. If you make this change you'll
> completely disable __attribute__((const)) and ((pure)).
> We do what we do with EXPR_LIST so that we can represent
> any arbitrary function call. Your code in GCSE will
> just have to deal with that.
But we handle const, pure, nothrow and malloc attributes on
arbitrary non-libcall functions just fine without having to use
I agree we could add special cases to ignore REG_EQUAL notes
whereever we also have a REG_RETVAL note, but I was under the
impression that we're trying to move away from libcalls.
We can also recover much of our ability to CSE/GCSE by using
perfectly valid REG_EQUAL notes, such as "REG_EQUAL (lt:DF (reg:DF 1)
(reg: DF 2))" rather than the current "REG_EQUAL (expr_list ((symbol_ref
"__ltfdf2") (expr_list (reg:DF 1)..."
Another possibility is that the REG_EQUAL note could be a call_insn of
__ltdf2, rather than just an expr_list? The documentation of REG_EQUAL
would seem to hint that the operand of the REG_EQUAL can be substituted
for the SET_SRC of the single_set. Certainly any other interpretation
isn't currently documented.
Do you have a strong preference on the best mid/long term solution?