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: Intentional or accidental backward-incompatibility w.r.t. process attributes?


On 04/04/2013 08:48, Kai Tietz wrote:

    Hi Kai,

> That change is intentional and would be called __thiscall.  To mix
> stdcall and regparam is no more supported AFAIK.

  Why are stdcall and regparam not allowed together any more?  They seem
entirely orthogonal to me, and the overall result is effectively to place an
arbitrary limit of 1 (the hidden this pointer) on the number of parameters
that can be passed in registers.

  If I change __stdcall to __thiscall in the example, I get a clear error message:

> bar.h:3:57: error: regparam and thiscall attributes are not compatible

  However in the original case the error message about "ambiguates old
declaration" is unclear: a) it doesn't say what the problem is, b) it goes
away if you repeat the regparm attribute on the function definition and
appears to compile correctly, generating what looks like valid assembly to me.

    cheers,
      DaveK



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