Section External - stop functions from being optimised out?
sonntag at icps.u-strasbg.fr
sonntag at icps.u-strasbg.fr
Mon Nov 17 03:29:49 UTC 2008
Mildred Ki'Lya <ml.mildred593 at online.fr> a écrit :
>
> Le Thu 13/11/2008 à 19:52 Xavier Oswald à écrit:
>>
>> You can do this whithout using your tips.
>>
>> Have a look in the manual about external usage, there is a comment
>> about lisaac removing function. If I well remember, you could use a
>> return parameter between parenthesis and thus, the code will not be
>> removed.
>>
>> Greetings,
>
> Well, it doesn't have anything to do with what he wants, does it?
>
> The trick to talk about is about optimizing out ta C external is the
> result is not used. But he is talking about External slots (from the
> Section External). And there, the trick he used is to my knowledge the
> only possibility.
>
>
> Look at the code
>
>
>
> Section External
>
> - callback <- ( "Hello, World!\n".print; );
>
> Section Public
>
> - main_1 <-
> ( + res :INTEGER;
> res := `setup_callback(callback)`:INTEGER;
> );
>
> - main_2 <-
> ( + res :INTEGER;
> res := `setup_callback(callback)`:(INTEGER);
> );
>
> If there is only main_1, then you are right, the function call
> `setup_callback(callback)` will be optimized away since the result is
> not used.
>
> Now, if we only have the main_2, the `setup_callback(callback)` won't
> be optimized away but that doesn't help the problem at all. The Lisaac
> compiler is unable to parse the C code between backquotes (`) and so is
> unable to see that the slot callback is in fact used.
>
> So, in both cases, seeing that the slot callback isn't used, the function
>
> void callback() {
> print_CF5("Hello, World!\n");
> }
>
> won't be generated.
>
> The only solution available at the present is to use the following trick
>
> - main_3 <-
> ( + res :INTEGER;
>
> // Make the slot `callback' alive
> `
> #if 0
> `;
> callback;
> `
> #endif
> `;
>
> // Setup the callback
> res := `setup_callback(callback)`:(INTEGER);
> );
>
> Mildred
Yes, I confirm...
>
> --
> Mildred Ki'Lya
> ╭───────── mildred593@online.fr ──────────
> │ Jabber, GoogleTalk: <mildred at jabber.fr>
> │ Site: <http://ki.lya.online.fr> GPG ID: 9A7D 2E2B
> │ Fingerprint: 197C A7E6 645B 4299 6D37 684B 6F9D A8D6 9A7D 2E2B
>
> _______________________________________________
> Lisaac-devel mailing list
> Lisaac-devel at lists.alioth.debian.org
> http://lists.alioth.debian.org/mailman/listinfo/lisaac-devel
>
More information about the Lisaac-devel
mailing list