Sounds reasonable, I'll look into adding more docs in the settings file. - Alon
On Fri, Oct 25, 2019 at 1:49 PM Gabriel Cuvillier < [email protected]> wrote: > 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]> 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]> 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]> 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]. >>>> 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]. >>>> 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]. >>> 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]. >>> 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]. >> 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]. > 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 > <https://groups.google.com/d/msgid/emscripten-discuss/06d628c8-627e-5dba-6a39-22044c269d57%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]. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpS9whenh1qa7-b22uEiZmKZ7fYMmfK2FsXOmr5MGJbV%3DA%40mail.gmail.com.
