I've checked,  INLINING_LIMIT=1 wan't helps. May be I can see
something in intermediate object file (bc)?

2017-07-11 20:04 GMT+07:00 Jukka Jylänki <[email protected]>:
> There have been reports about -llvm-opts being buggy in the past,
> especially in combination with inlining. You could try to see if an
> earlier version of Emscripten might work, to see if this is a
> regression somewhere. Also, the linker flag -s INLINING_LIMIT=1 has
> been observed to affect -llvm-opts related code.
>
> 2017-07-11 13:32 GMT+03:00 caiiiycuk <[email protected]>:
>> Hi. I've working on big game based on cocos2d engine. I think that I found
>> optimization bug, but I can't found test case yet. When I try to extract
>> problem code to new project it's works. I think that bug is not in game,
>> because I've checked all memory access with vallgrind and it's ok, moreover
>> ASSERTION=2, SAFE_HEAP=1 also does not reports any error. So, I try to
>> explain what code does. Basically cocos2d have node loader, that parse
>> files, and build game gui. During this process node loader assing callbacks
>> for gui elements, for example it set handlers for onclick events and etc.
>>
>> Target is gui element (like menu button), selectorName is name of callback,
>> and onResolveCCBCCMenuItemSelector should find callback:
>> //...
>>                     CCBSelectorResolver * targetAsCCBSelectorResolver =
>> dynamic_cast<CCBSelectorResolver *>(target);
>>
>>                     if(targetAsCCBSelectorResolver != NULL) {
>>                         selMenuHandler =
>> targetAsCCBSelectorResolver->onResolveCCBCCMenuItemSelector(target,
>> selectorName.c_str());
>>                     }
>>
>>                     if(selMenuHandler == 0) {
>>                         CCLOG("Skipping selector '%s' since no
>> CCBSelectorResolver is present.", selectorName.c_str());
>>                         abort(); // BAD CASE
>>                     } else {
>> //...
>>
>>
>> onResolveCCBCCMenuItemSelector implementation is simple, just compare
>> strings and return pointer:
>>
>> SEL_MenuHandler MainMenuLayer::onResolveCCBCCMenuItemSelector(CCObject *
>> pTarget, const char* pSelectorName)
>> {
>>     if (strcmp(pSelectorName, "achievementsPressed:") == 0)
>>     {
>>         return (SEL_MenuHandler) MainMenuLayer::achievementsPressed;
>>     }
>>     else if (strcmp(pSelectorName, "missionsPressed:") == 0)
>>     {
>>         return  (SEL_MenuHandler) MainMenuLayer::missionsPressed;
>>     }
>>     else if (strcmp(pSelectorName, "clonesPressed:") == 0)
>>     {
>>         return  (SEL_MenuHandler) MainMenuLayer::clonesPressed;
>>     }
>> ...
>>    return 0;
>> }
>>
>> In normal execution abort() never calls, but if I optimize game with -O2,
>> abort() happens. But even in -O2  onResolveCCBCCMenuItemSelector returns non
>> zero value (pointer) (I've checked with printf before return), but abort()
>> happens!
>> To solve this, I move all onResolveCCBCCMenuItemSelector impls into
>> handlers.cpp, and compile it with -O3 --js-opts 1 --llvm-opts 1 and game
>> works fine, but if I switch optimizations to --lvm-opts 2 abort occurs.
>> How I can figure out what happens? handlers.cpp is very small file, with
>> couple of funcs, but if I optimize it game wan't work.
>>
>> Thank you!
>>
>>
>> --
>> 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.

-- 
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