I had the exact same issue (Failed to run llvm optimizations) with 
Emscripten 1.34.1. Fortunately, upgrading to 1.34.6 solved it.

On Wednesday, August 26, 2015 at 7:18:54 PM UTC-4, [email protected] wrote:
>
> Sorry for the delay, My colleague submitted a simplified source file and 
> bug report for this issue at 
> https://github.com/kripken/emscripten/issues/3718.
>
> Thanks,
>
> David
>
> On Wednesday, July 22, 2015 at 11:05:37 AM UTC-7, Alon Zakai wrote:
>>
>> Oh, sorry, I missed the stack trace before.
>>
>> Ok, then we must have some code generation issue where we emit a highly 
>> recursive structure, probably unnecessarily. I understand you can't share 
>> your source code, but if you can create a new standalone example showing a 
>> similar issue - wrapping library functions, as you mention, I'm just not 
>> sure how you are doing that, but if I saw it, the problem for us to fix 
>> might be obvious.
>>
>> On Wed, Jul 22, 2015 at 10:57 AM, <[email protected]> wrote:
>>
>>> Hmm, well the stack trace is what I mentioned previously. Is there 
>>> anything specific that would help you to track down the problem? I am 
>>> unfortunately unable to provide source code or equivalent since the library 
>>> is closed source.
>>>
>>> Here is some additional information about my recent experience with 
>>> these problems.
>>>
>>> 1. I was wrapping each exposed library function using a function 
>>> pointers which would each be added to a map from string -> function 
>>> pointer. When I increase the number of such functions + size of the map the 
>>> memory usage of optimizer goes up exponentially. (a little over half the 
>>> map took 5 GB of memory and the full map took over 30 GB of memory and 
>>> failed to complete)
>>> 2. When I switch to using a map of strings -> int and make a large 
>>> switch statement containing the wrapper implementations this problem no 
>>> longer occurs. (although the memory usage of optimizer,exe does go up to 
>>> about 11 GB and it still takes about 10 minutes to finish)
>>>
>>> Thanks,
>>>
>>> David
>>>
>>> On Monday, July 13, 2015 at 11:44:37 AM UTC-7, Alon Zakai wrote:
>>>>
>>>> When juj gets back I hope he can look at why we are building a 32-bit 
>>>> executable there.
>>>>
>>>> Meanwhile, is there any chance you can find the stack trace that causes 
>>>> the error? Increasing the stack size is a workaround, but it would be good 
>>>> to fix the underlying issue.
>>>>
>>>>
>>>> On Thu, Jul 9, 2015 at 5:54 PM, <[email protected]> wrote:
>>>>
>>>>> All right, I was finally able to get around the errors with the 
>>>>> optimizer. I did the following:
>>>>>
>>>>> 1. Changed Optimizer project to build 64-bit executable. (despite 
>>>>> being under the folder incoming_64bit_optimizer it builds a 32-bit 
>>>>> executable on windows!)
>>>>> 2. Greatly increased stack size.
>>>>> 3. Rebuilt the optimizer executable
>>>>>
>>>>> The whole emcc process still takes about 8 minutes to run on my 
>>>>> library, but at least it can actually complete the process.
>>>>>
>>>>> David
>>>>>
>>>>> On Tuesday, July 7, 2015 at 6:43:22 PM UTC-7, [email protected] 
>>>>> wrote:
>>>>>>
>>>>>> Thanks for the tips. I was able to get around the issues that I was 
>>>>>> encountering when using just the latest build.
>>>>>>
>>>>>> However, I still encounter the Optimizer stack overflow crash. Here 
>>>>>> is a partial call stack:
>>>>>>
>>>>>> msvcr120.dll!6544a5d6() 
>>>>>>   [Frames below may be incorrect and/or missing, no symbols loaded 
>>>>>> for msvcr120.dll] 
>>>>>>   msvcr120.dll!654605db() 
>>>>>>   msvcr120.dll!654b9bf0() 
>>>>>>   msvcr120.dll!654b9c8d() 
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::Frag::Frag(char * 
>>>>>> src=0x0cdffdc9)  Line 231 + 0xe bytes C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char 
>>>>>> * & src=0x0cdffdc9, const char * seps=0x00b40448)  Line 290 C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseExpression(cashew::Parser<Ref,ValueBuilder>::ExpressionElement
>>>>>>  
>>>>>> initial={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40448)  
>>>>>> Line 
>>>>>> 726 C++
>>>>>> > optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char 
>>>>>> * & src=0x0cdffdc9, const char * seps=0x1cf4e3dc)  Line 301 + 0x28 bytes 
>>>>>> C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseExpression(cashew::Parser<Ref,ValueBuilder>::ExpressionElement
>>>>>>  
>>>>>> initial={...}, char * & src=0x20202020, const char * seps=0x00b40448)  
>>>>>> Line 
>>>>>> 726 C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char 
>>>>>> * & src=0x00000002, const char * seps=0x00b40448)  Line 304 + 0x37 bytes 
>>>>>> C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterParen(char 
>>>>>> * & src=0x0cdffdc9)  Line 590 C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char 
>>>>>> * & src=0x0cdffdc9, const char * seps=0x00b40478)  Line 304 + 0x18 bytes 
>>>>>> C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseExpression(cashew::Parser<Ref,ValueBuilder>::ExpressionElement
>>>>>>  
>>>>>> initial={...}, char * & src=0x20202020, const char * seps=0x00b40478)  
>>>>>> Line 
>>>>>> 726 C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterIdent(cashew::Parser<Ref,ValueBuilder>::Frag
>>>>>>  
>>>>>> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x1cf4e37c)  
>>>>>> Line 
>>>>>> 539 C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char 
>>>>>> * & src=0x0cdffdc9, const char * seps=0x00b40478)  Line 300 + 0x18 bytes 
>>>>>> C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBlock(char * 
>>>>>> & src=0x0cdffdc9, Ref block={...}, const char * seps=0x00b40478, 
>>>>>> cashew::IString keywordSep1={...}, cashew::IString keywordSep2={...})  
>>>>>> Line 
>>>>>> 806 + 0x33 bytes C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBracketedBlock(char 
>>>>>> * & src=0x0cdffdc9, Ref block={...})  Line 819 C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseIf(cashew::Parser<Ref,ValueBuilder>::Frag
>>>>>>  
>>>>>> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478)  
>>>>>> Line 
>>>>>> 420 + 0x27 bytes C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterKeyword(cashew::Parser<Ref,ValueBuilder>::Frag
>>>>>>  
>>>>>> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478)  
>>>>>> Line 
>>>>>> 334 + 0x18 bytes C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char 
>>>>>> * & src=0x0cdffdc9, const char * seps=0x00b40478)  Line 293 + 0x13 bytes 
>>>>>> C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBlock(char * 
>>>>>> & src=0x0cdffdc9, Ref block={...}, const char * seps=0x00b40478, 
>>>>>> cashew::IString keywordSep1={...}, cashew::IString keywordSep2={...})  
>>>>>> Line 
>>>>>> 806 + 0x33 bytes C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBracketedBlock(char 
>>>>>> * & src=0x0cdffdc9, Ref block={...})  Line 819 C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseDo(cashew::Parser<Ref,ValueBuilder>::Frag
>>>>>>  
>>>>>> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478)  
>>>>>> Line 
>>>>>> 434 + 0x26 bytes C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterKeyword(cashew::Parser<Ref,ValueBuilder>::Frag
>>>>>>  
>>>>>> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478)  
>>>>>> Line 
>>>>>> 335 + 0x18 bytes C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char 
>>>>>> * & src=0x0cdffdc9, const char * seps=0x00b40478)  Line 293 + 0x13 bytes 
>>>>>> C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBlock(char * 
>>>>>> & src=0x00000002, Ref block={...}, const char * seps=0x00b40478, 
>>>>>> cashew::IString keywordSep1={...}, cashew::IString keywordSep2={...})  
>>>>>> Line 
>>>>>> 806 + 0x33 bytes C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBracketedBlock(char 
>>>>>> * & src=0x0cdffdc9, Ref block={...})  Line 819 C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseIf(cashew::Parser<Ref,ValueBuilder>::Frag
>>>>>>  
>>>>>> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478)  
>>>>>> Line 
>>>>>> 420 + 0x27 bytes C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterKeyword(cashew::Parser<Ref,ValueBuilder>::Frag
>>>>>>  
>>>>>> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478)  
>>>>>> Line 
>>>>>> 334 + 0x18 bytes C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char 
>>>>>> * & src=0x0cdffdc9, const char * seps=0x00b40478)  Line 293 + 0x13 bytes 
>>>>>> C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBlock(char * 
>>>>>> & src=0x0cdffdc9, Ref block={...}, const char * seps=0x00b40478, 
>>>>>> cashew::IString keywordSep1={...}, cashew::IString keywordSep2={...})  
>>>>>> Line 
>>>>>> 806 + 0x33 bytes C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBracketedBlock(char 
>>>>>> * & src=0x0cdffdc9, Ref block={...})  Line 819 C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseDo(cashew::Parser<Ref,ValueBuilder>::Frag
>>>>>>  
>>>>>> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478)  
>>>>>> Line 
>>>>>> 434 + 0x26 bytes C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterKeyword(cashew::Parser<Ref,ValueBuilder>::Frag
>>>>>>  
>>>>>> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478)  
>>>>>> Line 
>>>>>> 335 + 0x18 bytes C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char 
>>>>>> * & src=0x0cdffdc9, const char * seps=0x00b40478)  Line 293 + 0x13 bytes 
>>>>>> C++
>>>>>>
>>>>>>
>>>>>> Prior to that the following stack is repeated. (probably infinitely 
>>>>>> although depending on how the parser is written it could just be a very 
>>>>>> large stack)
>>>>>>
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBlock(char * 
>>>>>> & src=0x00000002, Ref block={...}, const char * seps=0x00b40478, 
>>>>>> cashew::IString keywordSep1={...}, cashew::IString keywordSep2={...})  
>>>>>> Line 
>>>>>> 806 + 0x33 bytes C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBracketedBlock(char 
>>>>>> * & src=0x0cdffdc9, Ref block={...})  Line 819 C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseIf(cashew::Parser<Ref,ValueBuilder>::Frag
>>>>>>  
>>>>>> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478)  
>>>>>> Line 
>>>>>> 420 + 0x27 bytes C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterKeyword(cashew::Parser<Ref,ValueBuilder>::Frag
>>>>>>  
>>>>>> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478)  
>>>>>> Line 
>>>>>> 334 + 0x18 bytes C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char 
>>>>>> * & src=0x0cdffdc9, const char * seps=0x00b40478)  Line 293 + 0x13 bytes 
>>>>>> C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBlock(char * 
>>>>>> & src=0x0cdffdc9, Ref block={...}, const char * seps=0x00b40478, 
>>>>>> cashew::IString keywordSep1={...}, cashew::IString keywordSep2={...})  
>>>>>> Line 
>>>>>> 806 + 0x33 bytes C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseBracketedBlock(char 
>>>>>> * & src=0x0cdffdc9, Ref block={...})  Line 819 C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseDo(cashew::Parser<Ref,ValueBuilder>::Frag
>>>>>>  
>>>>>> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478)  
>>>>>> Line 
>>>>>> 434 + 0x26 bytes C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterKeyword(cashew::Parser<Ref,ValueBuilder>::Frag
>>>>>>  
>>>>>> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478)  
>>>>>> Line 
>>>>>> 335 + 0x18 bytes C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char 
>>>>>> * & src=0x0cdffdc9, const char * seps=0x00b40478)  Line 293 + 0x13 bytes 
>>>>>> C++
>>>>>>   
>>>>>> optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseAfterIdent(cashew::Parser<Ref,ValueBuilder>::Frag
>>>>>>  
>>>>>> & frag={...}, char * & src=0x0cdffdc9, const char * seps=0x00b40478)  
>>>>>> Line 
>>>>>> 533 + 0xf bytes C++
>>>>>>   optimizer.exe!cashew::Parser<Ref,ValueBuilder>::parseElement(char 
>>>>>> * & src=0x0cdffdc9, const char * seps=0x00b40478)  Line 300 + 0x18 bytes 
>>>>>> C++
>>>>>>
>>>>>> I will investigate to see if I can get any other information tomorrow.
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> David
>>>>>>
>>>>>> On Tuesday, July 7, 2015 at 1:18:20 PM UTC-7, Alon Zakai wrote:
>>>>>>>
>>>>>>> That looks like a different error. It is caused by the repos not 
>>>>>>> being in sync - you need latest incoming on all 3 repos, see 
>>>>>>>
>>>>>>>
>>>>>>> http://kripken.github.io/emscripten-site/docs/building_from_source/building_fastcomp_manually_from_source.html#branches
>>>>>>>
>>>>>>> On Tue, Jul 7, 2015 at 12:55 PM, <[email protected]> wrote:
>>>>>>>
>>>>>>>> I still get the same error using Emscripten in the incoming branch 
>>>>>>>> and can't even run the samples without getting errors. This is my 
>>>>>>>> output 
>>>>>>>> trying to run test_hello_world:
>>>>>>>>
>>>>>>>> E:\Program Files\Emscripten\emscripten\incoming>python 
>>>>>>>> tests/runner.py test_hell
>>>>>>>> o_world
>>>>>>>> test_hello_world (test_core.default) ... (checking sanity from test 
>>>>>>>> runner)
>>>>>>>> INFO     root: (Emscripten: Running sanity checks)
>>>>>>>> FAIL
>>>>>>>>
>>>>>>>>
>>>>>>>> ======================================================================
>>>>>>>> FAIL: test_hello_world (test_core.default)
>>>>>>>>
>>>>>>>> ----------------------------------------------------------------------
>>>>>>>> Traceback (most recent call last):
>>>>>>>>   File "E:\Program 
>>>>>>>> Files\Emscripten\emscripten\incoming\tests\test_core.py", lin
>>>>>>>> e 18, in test_hello_world
>>>>>>>>     self.do_run_from_file(src, output)
>>>>>>>>   File "E:\Program 
>>>>>>>> Files\Emscripten\emscripten\incoming\tests\runner.py", line 4
>>>>>>>> 79, in do_run_from_file
>>>>>>>>     includes, force_c, build_ll_hook, extra_emscripten_args)
>>>>>>>>   File "E:\Program 
>>>>>>>> Files\Emscripten\emscripten\incoming\tests\runner.py", line 4
>>>>>>>> 91, in do_run
>>>>>>>>     build_ll_hook=build_ll_hook, 
>>>>>>>> extra_emscripten_args=extra_emscripten_args, po
>>>>>>>> st_build=post_build)
>>>>>>>>   File "E:\Program 
>>>>>>>> Files\Emscripten\emscripten\incoming\tests\runner.py", line 2
>>>>>>>> 57, in build
>>>>>>>>     assert os.path.exists(filename + '.o.js'), 'Source compilation 
>>>>>>>> error: ' + ou
>>>>>>>> tput
>>>>>>>> AssertionError: Source compilation error: Traceback (most recent 
>>>>>>>> call last):
>>>>>>>>   File "E:\Program 
>>>>>>>> Files\Emscripten\emscripten\incoming\emscripten.py", line 106
>>>>>>>> 7, in <module>
>>>>>>>>     _main(environ=os.environ)
>>>>>>>>   File "E:\Program 
>>>>>>>> Files\Emscripten\emscripten\incoming\emscripten.py", line 105
>>>>>>>> 7, in _main
>>>>>>>>     temp_files.run_and_clean(lambda: main(
>>>>>>>>   File "E:\Program 
>>>>>>>> Files\Emscripten\emscripten\incoming\tools\tempfiles.py", lin
>>>>>>>> e 39, in run_and_clean
>>>>>>>>     return func()
>>>>>>>>   File "E:\Program 
>>>>>>>> Files\Emscripten\emscripten\incoming\emscripten.py", line 106
>>>>>>>> 3, in <lambda>
>>>>>>>>     DEBUG_CACHE=DEBUG_CACHE,
>>>>>>>>   File "E:\Program 
>>>>>>>> Files\Emscripten\emscripten\incoming\emscripten.py", line 964
>>>>>>>> , in main
>>>>>>>>     temp_files=temp_files, DEBUG=DEBUG, DEBUG_CACHE=DEBUG_CACHE)
>>>>>>>>   File "E:\Program 
>>>>>>>> Files\Emscripten\emscripten\incoming\emscripten.py", line 183
>>>>>>>> , in emscript
>>>>>>>>     settings['MAX_GLOBAL_ALIGN'] = metadata['maxGlobalAlign']
>>>>>>>> KeyError: 'maxGlobalAlign'
>>>>>>>> Traceback (most recent call last):
>>>>>>>>   File "E:\Program Files\Emscripten\emscripten\incoming\emcc", line 
>>>>>>>> 1294, in <mo
>>>>>>>> dule>
>>>>>>>>     final = shared.Building.emscripten(final, append_ext=False, 
>>>>>>>> extra_args=extra
>>>>>>>> _args)
>>>>>>>>   File "E:\Program 
>>>>>>>> Files\Emscripten\emscripten\incoming\tools\shared.py", line 1
>>>>>>>> 535, in emscripten
>>>>>>>>     assert os.path.exists(filename + '.o.js'), 'Emscripten failed 
>>>>>>>> to generate .j
>>>>>>>> s'
>>>>>>>> AssertionError: Emscripten failed to generate .js
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> ----------------------------------------------------------------------
>>>>>>>> Ran 1 test in 1.128s
>>>>>>>>
>>>>>>>> FAILED (failures=1)
>>>>>>>>
>>>>>>>> Any ideas?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>>
>>>>>>>> David
>>>>>>>>
>>>>>>>>
>>>>>>>> On Monday, July 6, 2015 at 8:29:59 PM UTC-7, Alon Zakai wrote:
>>>>>>>>>
>>>>>>>>> Is that the latest on the incoming branch? There was a recent fix 
>>>>>>>>> there for something that looks like your issue.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Mon, Jul 6, 2015 at 6:43 PM, <[email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> When I try using the latest Emscripten version 1.34.1 I get the 
>>>>>>>>>> following error:
>>>>>>>>>>
>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>   File "E:\Program Files\Emscripten\emscripten\1.34.1\\emcc", 
>>>>>>>>>> line 1260, in <mod
>>>>>>>>>> ule>
>>>>>>>>>>     shared.Building.llvm_opt(final, link_opts)
>>>>>>>>>>   File "E:\Program 
>>>>>>>>>> Files\Emscripten\emscripten\1.34.1\tools\shared.py", line 142
>>>>>>>>>> 9, in llvm_opt
>>>>>>>>>>     assert os.path.exists(target), 'Failed to run llvm 
>>>>>>>>>> optimizations: ' + output
>>>>>>>>>>
>>>>>>>>>> AssertionError: Failed to run llvm optimizations:
>>>>>>>>>>
>>>>>>>>>> Any help would be much appreciated.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>>
>>>>>>>>>> David
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>> -- 
>>>>>
>>>>>
>>>>
>>>
>>

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