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 09/23/2014 10:39 AM, Bin Meng wrote:
> On Tue, Sep 23, 2014 at 5:11 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
>>
>> Sorry I still don't get it. The inline-asm codes are put in the very end
>> of the test function just before return, so the clobbered registers are
>> not used by gcc.

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.


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