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] Alignment fault during function call

On 08/05/2010 02:44 AM, Jeff Law wrote:
> Unnesting would be good, but I don't think it's sufficient since we have
> to deal with libcalls.  Now if the function's arguments were guaranteed
> to be regs, SSA_NAMEs or the like, then we'd have a fighting chance of
> greatly simplifying that code.

Maybe something like the following draft patch?  There are some code
generation differences on i686, but nothing that looks overly serious.
The following is slightly puzzling:

+       movl    300(%ebx), %eax
-       call    *300(%ebx)
+       call    *%eax

because one would expect the optimizers to do that (unless the costs
suggest it isn't profitable).

Maybe we'd want to restrict the TER changes to ACCUMULATE_OUTGOING_ARGS
targets, and find some additional kinds of replacements we can allow.

There are comments about constructors being called to construct an
object in the argument list - that can't happen anymore, can it?


Attachment: nestcalls.diff
Description: Text document

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