Depends on D147432
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
compiler-rt/test/asan/TestCases/Windows/crt_initializers.cpp | ||
---|---|---|
1 | I believe it would be much cleaner if done substituting: llvm-project/compiler-rt/test/asan/lit.cfg.py:163 |
compiler-rt/test/asan/TestCases/Windows/crt_initializers.cpp | ||
---|---|---|
1 | I don't know how one could use substitution for this, since clang and clang-cl use very different command line parameters (especially problematic for the more complex DLL tests which I have yet to port). Or do you mean using substitution to turn certain RUN: commands into comments? Like: // RUN: %if_clang_cl %clang_cl_asan -Od %s -Fe%t // RUN: %if_not_clang_cl %clangxx_asan -O0 %s -o %t ...and conditionally substituting one of %if_clang_cl and %if_not_clang_cl to be : and the other one to be empty? |
compiler-rt/test/asan/TestCases/Windows/crt_initializers.cpp | ||
---|---|---|
1 | You could make one substitution for -Fe or -o (note, including the trailing space), another one for -O0 vs -Od etc. Sorry if it’s obvious if I haven’t followed closely enough, but would it be possible to port the tests to use the gcc driver syntax even with clang in msvc mode? (I understand that that would be a bigger undertaking though.) Or are these tests executed with cl.exe too, so we need to remain compatible with that syntax anyway? |
compiler-rt/test/asan/TestCases/Windows/crt_initializers.cpp | ||
---|---|---|
1 | If we need one substitution per flag, I don't know how many substitutions we will end up having, and I may have difficulty naming them. Some flags may also be incompatible (mingw needs -Wl,--out-implib to generate import lib). To me it feels messier than just writing the commands separately. Rewriting to use gcc driver syntax shouldn't be hard, but I am afraid of breaking them due to obscure differences between the two drivers (things like static/dynamic, debug/release crt). I suppose these tests also serve the purpose of testing asan support in the clang-cl driver so perhaps they should continue to use clang-cl. It doesn't look like the tests would work with cl.exe out of the box though. |
compiler-rt/test/asan/TestCases/Windows/crt_initializers.cpp | ||
---|---|---|
1 | @vitalybuka - Can you elaborate on how you want this to be substituted? |
compiler-rt/test/asan/TestCases/Windows/crt_initializers.cpp | ||
---|---|---|
1 | Per flag, like %fPIC llvm-project/compiler-rt/test/asan/lit.cfg.py:234 ? |
compiler-rt/test/asan/TestCases/Windows/crt_initializers.cpp | ||
---|---|---|
1 | at least for frequent stuff |
compiler-rt/test/asan/TestCases/Windows/crt_initializers.cpp | ||
---|---|---|
1 | I'll certainly avoid complex constructs if possible. rg '%if target=' compiler-rt/test/ has some examples. Bonus: our internal lit runner supports many %if constructs. |
compiler-rt/test/asan/TestCases/Windows/crt_initializers.cpp | ||
---|---|---|
1 | @MaskRay Yes, all those hits in compiler-rt/test are ones added by @alvinhochun recently. The question is mostly here whether we should prefer adding more %if conditions in the test (older revision of this patch) or add more substitutions, to make parametrized expansions that work across both clang-cl and mingw. As an example - D147432 (which this patch depends on) changes RUN lines with %clang_cl_asan -Od %s -Fe%t into %clang_cl_asan %Od %s %Fe%t, and for mingw mode, %Od expands to -O0 and %Fe expands to -o. The run lines get a bit more cryptic, but it works. (But for more complex tests it might not be enough with just such substitutions, but actual conditionals might be needed.) |
I believe it would be much cleaner if done substituting: llvm-project/compiler-rt/test/asan/lit.cfg.py:163