Commit Graph

16 Commits

Author SHA1 Message Date
David Majnemer f607234fde Driver: Handle /GR- in a compatible way with MSVC
There are slight differences between /GR- and -fno-rtti which made
mapping one to the other inappropriate.

-fno-rtti disables dynamic_cast, typeid, and does not emit RTTI related
information for the v-table.

/GR- does not generate complete object locators and thus will not
reference them in vftables.  However, constructs like dynamic_cast and
typeid are permitted.

This should bring our implementation of RTTI up to semantic parity with
MSVC modulo bugs.

llvm-svn: 212138
2014-07-01 22:24:56 +00:00
Reid Kleckner c542d37995 clang-cl: Map /EHs- to -fno-exceptions
This isn't 100% compatible with MSVC, but it's close enough.  MSVC's /EH
flag doesn't really control exceptions so much as how to clean up after
an exception is thrown.  The upshot is that cl.exe /EHs- will compile
try, throw, and catch statements with a warning, but clang-cl will
reject such constructs with a hard error.  We can't compile such EH
constructs anyway, but this may matter to consumers of the AST.

Reviewers: hans

Differential Revision: http://reviews.llvm.org/D4317

llvm-svn: 211909
2014-06-27 17:02:02 +00:00
Reid Kleckner 47c2f84c9d clang-cl: Fall back immediately if /GR and /fallback were both passed
None of our tests use /fallback, so this lets us gradually add RTTI
support without breaking projects using /fallback.

llvm-svn: 208787
2014-05-14 16:03:05 +00:00
Hans Wennborg 26a4430ee5 clang-cl: /fallback only applies to C or C++ files
We would previously hit an assert if using /fallback with an .ll file.

llvm-svn: 207234
2014-04-25 16:44:17 +00:00
David Majnemer dc7a47ce2c clang-cl: make /Gw map to -fdata-sections
Note that /Gy no longer implies -fdata-sections.

llvm-svn: 205716
2014-04-07 16:14:38 +00:00
Hans Wennborg 5149a3b837 clang-cl: Forward /Gy or /Gy- when falling back to cl.exe
llvm-svn: 204723
2014-03-25 14:48:54 +00:00
Reid Kleckner c688dafe31 clang-cl: Pass /Z7 when we fallback to cl with debug info enabled
Clang itself only emits CodeView line tables, so it seems more
consistent to ask cl.exe for the same format.

llvm-svn: 201721
2014-02-19 22:05:59 +00:00
Hans Wennborg 897a69b33e clang-cl /fallback: turn the note into a warning
llvm-svn: 201626
2014-02-19 02:10:19 +00:00
Hans Wennborg 9873a5ba4f Fix the Driver/cl-fallback.c test
On machines that have cl.exe on PATH, the note will print the full path.

llvm-svn: 201613
2014-02-18 23:25:20 +00:00
Hans Wennborg c5afd06a0d clang-cl /fallback: emit a note when falling back
This makes it a lot easier to see what's going on from the output.

llvm-svn: 201604
2014-02-18 21:42:51 +00:00
Hans Wennborg 859422a867 clang-cl: Ignore /fallback when not actually compiling (PR18456)
For example, don't fall back in /P (preprocess) mode.

llvm-svn: 199153
2014-01-13 22:24:42 +00:00
Hans Wennborg 260ff405a7 clang-cl: pass /FI options to fallback
We started parsing /FI in r191442, and now we can pass it on to the
fallback too.

llvm-svn: 191537
2013-09-27 17:54:18 +00:00
Hans Wennborg b6331dcb51 clang-cl: fix passing optimization level to cl.exe in /fallback mode
We were previously mostly passing it through, but -O0 and -O3 are not valid
options to cl.exe.

We should translate -O0 to /Od and -O3 to /Ox. -O{1,2,s} get passed through.

llvm-svn: 191323
2013-09-24 18:17:21 +00:00
Hans Wennborg 263c213061 clang-cl: pass /nologo when falling back to cl.exe
llvm-svn: 191316
2013-09-24 17:36:21 +00:00
Hans Wennborg f4aee18086 clang-cl: print diagnostics as "error(clang): foo" in /fallback mode
This solves two problems:

1) MSBuild will not flag the build as unsuccessful just because we print
   an error in the output, since "error(clang):" doesn't seem to match
   the regex it's using.

2) It becomes more clear that the diagnostic is coming from clang as
   supposed to cl.exe.

Differential Revision: http://llvm-reviews.chandlerc.com/D1735

llvm-svn: 191250
2013-09-24 00:08:55 +00:00
Hans Wennborg 87cfa71071 clang-cl: implement /fallback mode
When this flag is enabled, clang-cl falls back to cl.exe if it
cannot compile the code itself for some reason.

The idea is to use this to help build projects that almost compile
with clang-cl, except for some files that can then be built with
the fallback mechanism.

Differential Revision: http://llvm-reviews.chandlerc.com/D1711

llvm-svn: 191034
2013-09-19 20:32:16 +00:00