[Vm-dev] CCodeGeneration bug or gcc compiler bug?

David T. Lewis lewis at mail.msen.com
Sat Apr 6 13:42:33 UTC 2013


On Fri, Apr 05, 2013 at 10:52:40PM +0200, Nicolas Cellier wrote:
> 
> THE QUESTION:
> 
> I just don't understand what is incorrect in the (t)?a,b:c,d; construct...
> Could it be that it is interpreted:
> 
>     ((t)?a,b:c),d;
> 
> Ah if so, maybe that would explain the warning about oop1 being potentially
> used before assigned! (a bulb just enlighten)
> 
> In this case we have a bug in the generator (probably a known one since we
> rearely ever use x := test ifTrue: [] ifFalse: [] in Slang)...
> 
> Nicolas

To answer your original question - this is the result of something missing
in the code generator. It means that the construct was not found in the C 
translation dictionary, so the translator assumed that you were referring
to a function call and tried to translate in that way.

The code generation is done here:

  CCodeGenerator>>generateIfTrueIfFalseAsArgument:on:indent:
  CCodeGenerator>>generateIfTrueIfFalse:on:indent:
  CCodeGenerator>>initializeCTranslationDictionary

Dave




More information about the Vm-dev mailing list