LIT test that links and runs the executable?

In our fork of clang, we a bunch of tests that require the compiled test program to be executed. I tried creating a lit test with a RUN command like so:

// RUN: %clang %s … -o %t.exe

// RUN: %t.exe

This works fine on Linux, but on Windows I get:

Command 0 Stderr:

clang.EXE: error: unable to execute command: program not executable

clang.EXE: error: linker command failed with exit code 1 (use -v to see invocation)

(The test script never even gets to the second RUN line.)

Running the clang command manually (that llvm-lit -v outputs) works fine.

Any idea what could be the issue?

I suspect that clang's environment differs between the lit test and
your shell. Add -### to see which linker it's trying to invoke.

I’ve added -v to the clang++ command line, and executed the clang cc1 command and the linker command manually. That worked fine.

The issue turned out to be that llvm-lit doesn’t propogate the LIB and LIBPATH environment variables to the test scripts on Windows. The attached (trivial) patch should fix the issue.

lit-linking-fix.patch (1.16 KB)