This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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
REG_EQUAL notes.

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?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]