On 15/05/2014 10:00, Reid Kleckner wrote:
No, we should either add -o to clang-cl or not do it at all.

Maybe we should just run these tests with the gcc driver frontend. clang and clang-cl are much more interchangeable since we made *-win32 imply the MSVC C++ ABI. The only interesting difference that comes to mind is the CRT. I think clang-cl inserts --dependent-lib= arguments that clang does not.

Neat. Making the standard clang driver do the right thing sounds like a much better way forward.

I've taken a look and AddClangCLArgs() looks straightforward enough to factor for use with the standard driver. Reid, how do you think this would best be exposed?

In the meantime a platform-specific lit.site.cfg substitution of %clang with clang.exe -D_MT -Xclang --dependent-lib=libcmt might get things moving for compiler-rt..

Alp.





On Wed, May 14, 2014 at 11:36 PM, Timur Iskhodzhanov <[email protected] <mailto:[email protected]>> wrote:

    Can we just discourage the usage of -o in the --help output?

    15 мая 2014 г. 4:04 пользователь "Alp Toker" <[email protected]
    <mailto:[email protected]>> написал:


        On 15/05/2014 02:45, Reid Kleckner wrote:

            On Wed, May 14, 2014 at 4:23 PM, Alp Toker <[email protected]
            <mailto:[email protected]> <mailto:[email protected]
            <mailto:[email protected]>>> wrote:

                One tidy way to deal with the problem described is to
            move the
                __clang__ define here..

                  if (!LangOpts.MSVCCompat) {
                    // Currently claim to be compatible with GCC
            4.2.1-5621, but
                only if we're
                    // not compiling for MSVC compatibility
                    ...
                    Builder.defineMacro("__GNUC__", "4");
                    ...
                }

                This seems relatively harmless and clang's compiler
            feature check
                macros will still work fine.

                If/when the CMake detection problem gets resolved we can
                re-evaluate defining __clang__ in the drop-in MSVC
            compatibility mode.

                This feels more progressive to me than making
            clang-cl.exe look
                like clang.exe with a -o option. What do you think?


            I agree, if we didn't define __clang__, it would force
            more users to use the feature detection macros.  However,
            it seems inconsistent with what we do in our default mode,
            where we define __clang__ and __GNUC__.  It also makes it
            hard to isolate a hack that is intended only for MSVC,
            like we do here:
            
http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/DenseMapTest.cpp?view=markup#l122


        Okay, but if __GNUC__ is included in every other mode than
        MSVCCompat, also excluding __clang__ isn't a massive leap.

        On the other hand, as soon a patch adding "-o" lands CMake is
        left in an odd place where it's using clang-cl.exe as a kind
        of clang.exe with slightly different sematics which isn't a
        good place to be.

        Keep in mind we have that second option -- just tell CMake to
        override compiler detection -- does that satisfy your use case?



            So, I'd rather keep defining __clang__.

            My immediate use case for adding -o to clang-cl is to get
            the asan lit test suite passing.  They have a bunch of RUN
            lines like:
            // RUN: %clangxx_asan %s -o %t && not %run %t 2>&1 |
            FileCheck %s


        So this isn't really about CMake or anything else mentioned in
        the original patch submission? Bad Reid ;-)

            We want ASan to work with clang-cl.  All the relevant ASan
            enabling options are being exposed there, so it makes
            sense to run these tests with the clang-cl driver as well
            as the clang driver.  If clang-cl supports -o, then this
            just works without adding more lit substitutions.


        It looks like those tests *should* work fine with clang.exe.
        Why are they using clang-cl.exe only to go ahead and pass
        through clang.exe-style flags?


            I also think it would be nice, just for regular command
            line use, to support -o.  It doesn't conflict with
            anything, so I don't see much downside.


        This feels like it'd be a misfeature. The only reason a test
        would legitimately use clang-cl.exe is to (a) test the MSVC
        drop-in driver itself or (b) permit the same tests to be run
        against both MSVC and clang.

        So let's put a hold on this until we find out why ASan tests
        are calling clang-cl.exe with -o.

        Alp.

-- http://www.nuanti.com
        the browser experts

        _______________________________________________
        cfe-commits mailing list
        [email protected] <mailto:[email protected]>
        http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



--
http://www.nuanti.com
the browser experts

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to