[PATCH] D147444: [asan][test][win] Port more tests to not use clang-cl on MinGW

Alvin Wong via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 5 02:24:11 PDT 2023


alvinhochun added inline comments.


================
Comment at: compiler-rt/test/asan/TestCases/Windows/crt_initializers.cpp:1
-// UNSUPPORTED: target={{.*-windows-gnu}}
-
-// RUN: %clang_cl_asan -Od %s -Fe%t
+// RUN: %if clang-cl %{ %clang_cl_asan -Od %s -Fe%t %} \
+// RUN: %else %{ %clangxx_asan -O0 %s -o %t %}
----------------
mstorsjo wrote:
> alvinhochun wrote:
> > vitalybuka wrote:
> > > I believe it would be much cleaner if done substituting: llvm-project/compiler-rt/test/asan/lit.cfg.py:163
> > > 
> > 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?
> 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?
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.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D147444/new/

https://reviews.llvm.org/D147444



More information about the llvm-commits mailing list