7044 local variables? wow! :) Is this on an unoptimized build, or -O1? I
would be surprised to see that on -O2 or -O3.

- Alon


On Fri, Feb 13, 2015 at 11:34 AM, Clifford Wolf <[email protected]>
wrote:

> On Friday, February 13, 2015 at 7:49:40 PM UTC+1, jj wrote:
>>
>> To limit the number of local variables in a function, you can try the
>> following:
>>    - use an aggressive optimization (-O3) to remove the number of locals,
>>    - use the linker flag -s AGGRESSIVE_VARIABLE_ELIMINATION=1 to try to
>> remove the number of locals further (https://github.com/kripken/
>> emscripten/blob/master/src/settings.js#L190),
>>    - use the function outliner, e.g. -s OUTLINING_LIMIT=5000 (
>> https://github.com/kripken/emscripten/blob/master/src/settings.js#L169)
>>    - restrict LLVM use of function inlining by a) avoiding setting any
>> --llvm-lto if you happened to be using that, and b) setting e.g. -s
>> INLINING_LIMIT=50 to restrict LLVM inlining (see https://github.com/
>> kripken/emscripten/blob/master/src/settings.js#L169 )
>>    - manually break up the large function into smaller separate chunks.
>>
>
> All of those together brought it from 1700 SEU down to 1100 SEU.
>
>
>> If none of those help, there is of course a chance that there's a
>> miscompilation - looking at that function, it seems to be at least special
>> in that it's very large, and that it uses gotos in it, which might be a
>> combination that's quite rare in practice.
>>
>
> I've now counted them: the created JavaScript function has 7044 local
> variables.
>
> Maybe the gotos create a control flow graph that makes it particularly
> hard for emcc to keep track of the local variables? Btw: at least on simple
> inputs that require less than 10 levels of recursions it looks like the
> function does the right thing.
>
> I will make some more experiments tomorrow and will get back here when I
> have new results.
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to