This is the mail archive of the gcc@gcc.gnu.org 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: x86: combined usage of "-Os -mregparm=3" leads to broken codes


On Tue, Sep 23, 2014 at 6:41 PM, Andrew Haley <aph@redhat.com> wrote:
>
> And neither are they used by the asm; so you have no right to expect %edx
> to contain anything, and neither have you the right to touch it.
>
> Do this:
>
>      asm volatile (
>      "pushl      %1;"
>      "call       *%%eax;"
>      "addl       $4, %%esp;"
>      : "=a"(status) : "m"(params_ptr), "a"(pcall), "d"(d)
>      );
>
>
> "If you lie to the compiler, it will get its revenge." -- Henry Spencer
>
> Andrew.
>

Thanks for the hint.

But doing "d"(d) does not fix the problem and gcc still refuses to generate
codes for "params.a = d;". Seems to me adding "d"(d) only guarantee parameter
d is put into %edx, nothing else.

Regards,
Bin


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