Well, to me, having such hint in the settings.js file (= compile time
flag or link time flag) would certainly help to make things cleaner
while porting existing program.
While I do agree the "simple and safe" method of passing everything at
both compile/link time is convenient, the issue is that having to
recompile a full 5000+ CPP files program just because of a tweak in a
flag that is only expected to be used at link time is... argh :)
Le 25/10/2019 à 19:18, Alon Zakai a écrit :
On Fri, Oct 25, 2019 at 9:54 AM 'Derek Schuff' via emscripten-discuss
<[email protected]
<mailto:[email protected]>> wrote:
This is a good point, actually. Before, almost all of the
emscripten-specific flags only mattered at link time, and now
there are probably several that also matter at compile time. We
should probably take a pass over the docs and figure that out, or
else just declare that everything should also go at compile time.
The docs have recently been update to say that it is best (search for
"simple and safe") to pass the flags at both times,
https://emscripten.org/docs/compiling/WebAssembly.html#backends
But maybe that's not prominent enough?
I can do a pass through settings.js to mark options as "link" or
"compile" if that would help? Not sure it would.
- Alon
Emscripten is already a little weird that so many things matter at
link time so I think the default expectation of most users (and
build systems) would be that you only have to pass things at
compile time. It would be nice to push the upstream backend more
in that direction rather than going back.
On Fri, Oct 25, 2019 at 5:31 AM Gabriel Cuvillier
<[email protected] <mailto:[email protected]>>
wrote:
Ok, I understand better.
What makes things confusing is probably more that the usual
distinction between compiler flags and linker flags are a bit
blurred in Emscripten.
As "WASM_OBJECT_FILES=0" is doing the same as "-flto", but
also applying it to system libs, maybe it would be cleaner to
have it replaced by a "-s ENABLE_SYSTEM_LIBS_LTO=1" that would
only focus on enabling LTO on the system libs (letting the
user control the LTO of its own code with the usual -flto flag).
Btw, the docs mention that --lvm-lto might have the values 1,2
or 3 => is this still applicable to the new Wasm backend ? I
guess no (?)
Cheers,
Gabriel
Le 22/10/2019 à 21:39, Alon Zakai a écrit :
The LTO docs are here:
https://emscripten.org/docs/optimizing/Optimizing-Code.html#lto
Basically
* -flto is a clang flag that says "emit LLVM IR in the
bitcode file"
* WASM_OBJECT_FILES=0 is an emscripten flag that says "don't
use wasm object files, so use LLVM IR in bitcode files, *and
also in system libs*"
* --llvm-lto 1 is an emscripten flag that also runs LLVM's
default LTO opts at link time.
Perhaps -flto should automatically set --llvm-lto 1? I'm not
sure what clang normally does, but we should do the same
probably...
- Alon
On Tue, Oct 22, 2019 at 2:40 AM Gabriel Cuvillier
<[email protected]
<mailto:[email protected]>> wrote:
Great!
A question regarding this in the documentation, which
confuses me a bit:
/You can disable wasm object files with -s
WASM_OBJECT_FILES=0, which will make the wasm backend
behave more like fastcomp. //
//Neither fastcomp nor the wasm backend without wasm
object files will run the LLVM optimization passes by
default, even if using LLVM IR in object files; //
//for that you must pass --llvm-lto 1.//
/
With the 3 options "-s WASM_OBJECT_FILES=0", "--llvm-lto
1", and "-flto", there is a lot of combinations possible
and the outcome is not quite clear.
So, on the Wasm backed, what's the difference between
doing (or what is meaningful/meaningless):
-flto
--llvm-lto 1
-s WASM_OBJECT_FILES=0
-flto --llvm-lto 1
-flto -s WASM_OBJECT_FILES=0
-flto -s WASM_OBJECT_FILES=0 --llvm-lto 1
-s WASM_OBJECT_FILES=0 --llvm-lto 1
+ Which option shall be passed at compilation time / at
link time ?
Thanks!
Le 22/10/2019 à 00:17, Alon Zakai a écrit :
Hello everyone,
The emsdk will now install the upstream LLVM backend by
default, instead of fastcomp, as of
https://github.com/emscripten-core/emsdk/pull/373
That is, if you install/activate "latest" then you get
the same as "latest-upstream". It used to be an alias
for "latest-fastcomp".
You can still use "latest-fastcomp" to get fastcomp if
you need that. You can also install stuff like
"1.39.0-fastcomp", a version with a specific backend.
The emsdk defaults to the upstream backend from 1.39.0,
but not earlier versions, as the upstream backend wasn't
stable enough yet at those times. (But you can as always
do "1.38.39-upstream" to get upstream for those
versions.) In other words, the only thing that changed
now is that for 1.39.0 and onwards, if you don't specify
the backend, you'll get upstream.
We are changing the default now after a long period of
recommending people upgrade to the LLVM backend and
fixing issues based on their feedback, as a result of
which at this point we feel comfortable changing the
default.
Please test and file bugs if you find any! All you need
to do is update to the latest emsdk master from github, and
./emsdk install latest
./emsdk activate latest
If this is your first time using the upstream backend,
see the list of differences,
https://emscripten.org/docs/compiling/WebAssembly.html#backends
Our goal is to remove fastcomp eventually, and it is now
officially deprecated, but we will only start to plan
that after seeing the feedback from users after this switch.
- Alon
--
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]
<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpTHC%3DRz2UZrqLBBaPQ0ROT4JXGA7RnH5iDEsLeUdvRmMA%40mail.gmail.com
<https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpTHC%3DRz2UZrqLBBaPQ0ROT4JXGA7RnH5iDEsLeUdvRmMA%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
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]
<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/emscripten-discuss/06858de5-a732-0e70-6ce7-e60c1a9e2667%40gmail.com
<https://groups.google.com/d/msgid/emscripten-discuss/06858de5-a732-0e70-6ce7-e60c1a9e2667%40gmail.com?utm_medium=email&utm_source=footer>.
--
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]
<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpRXtK1wYBfm27dqgALwr2oHMZLE4QeU7rN1KKEugfORfg%40mail.gmail.com
<https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpRXtK1wYBfm27dqgALwr2oHMZLE4QeU7rN1KKEugfORfg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
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]
<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/emscripten-discuss/24154c49-5529-af52-1319-c0cd47ccb242%40gmail.com
<https://groups.google.com/d/msgid/emscripten-discuss/24154c49-5529-af52-1319-c0cd47ccb242%40gmail.com?utm_medium=email&utm_source=footer>.
--
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]
<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/emscripten-discuss/CAAEAhvckhm4szfJzz61wa7jMAHyDfbhozjDw8-GFCXa3dh4R%3Dw%40mail.gmail.com
<https://groups.google.com/d/msgid/emscripten-discuss/CAAEAhvckhm4szfJzz61wa7jMAHyDfbhozjDw8-GFCXa3dh4R%3Dw%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
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]
<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpTOyCC%2BF0i7zrQNPFWW3nFim7c%3DntgUxKU4uPhbHs3NKg%40mail.gmail.com
<https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpTOyCC%2BF0i7zrQNPFWW3nFim7c%3DntgUxKU4uPhbHs3NKg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
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].
To view this discussion on the web visit
https://groups.google.com/d/msgid/emscripten-discuss/06d628c8-627e-5dba-6a39-22044c269d57%40gmail.com.