[Vm-dev] NoDbgRegParms bug bites again--this time with CMake
gettimothy
gettimothy at zoho.com
Mon Mar 30 20:51:52 UTC 2015
Ok, very interesting stuff.
The problem is not a problem with the pre-processor.
SOME __attributes__ are substituted just fine.
For some reason, on my architecture the replacement does not happen for certain __attributes__.
https://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Function-Attributes.html
1. # define NoDbgRegParms <--compiles
2. # define NoDbgRegParms __attribute__ ((regparm (0))) <--function type mismatch error due to NoDbgRegParms not being replaced
3. # define NoDbgRegParms __attribute__ ((deprecated)) <--This spit out a bunch of warnings (as expected) but it compiled! yay!
4. #define NoDbgRegParms __attribute__ ((noinline)) <--function type mismatch error due to NoDbgRegParms not being replaced
5. #define NoDbgRegParms __attribute__ ((always_inline)) <-- error: inlining failed in call to always_inline 'printNameOfClasscount': recursive inlining
regparm (number)
On the Intel 386, the regparm attribute causes the compiler to pass up to number integer arguments in registers EAX, EDX, and ECX instead of on the stack. Functions that take a variable number of arguments will continue to be passed all of their arguments on the stack.
I am running an AMD processor.
I will research this some more.
cheers.
tty.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20150330/3f00dbe0/attachment.htm
More information about the Vm-dev
mailing list