Commit Graph

523 Commits

Author SHA1 Message Date
Eli Friedman 6be4b393b9 Add -fsigned-char option to clang-cc.
llvm-svn: 72929
2009-06-05 07:12:17 +00:00
Devang Patel 6e467b1a46 Set function attribute llvm::Attribute::NoRedZone appropriately.
llvm-svn: 72902
2009-06-04 23:32:02 +00:00
Torok Edwin a1581e1a7a forward -fno-color-diagnostics to clang-cc.
llvm-svn: 72856
2009-06-04 07:27:53 +00:00
Torok Edwin c91b6e0ff8 Add ANSI color support for clang.
llvm-svn: 72855
2009-06-04 07:18:23 +00:00
Daniel Dunbar 4b665ebb01 Add clang-cc support for -disable-llvm-optzns.
- Avoids running any LLVM optimizations, even at -O2, etc., while still keeping
   any language changes these optimizations imply.

llvm-svn: 72742
2009-06-02 22:07:45 +00:00
Douglas Gregor 278f52ec29 Refactor and clean up the AST printer, so that it uses a DeclVisitor,
walks through DeclContexts properly, and prints more of the
information available in the AST. The functionality is still available
via -ast-print, -ast-dump, etc., and also via the new member functions
Decl::dump() and Decl::print().

llvm-svn: 72597
2009-05-30 00:08:05 +00:00
Daniel Dunbar 044a702f2f Move clang-cc's -v output to the start (vs. end) of compilation, and change
clang -> clang-cc to be less confusing.

llvm-svn: 72527
2009-05-28 16:37:33 +00:00
Daniel Dunbar fed44d215e Revert to using &...[0] for std::vector, apparently .data isn't generally
available (and it isn't necessary in this case).

llvm-svn: 72425
2009-05-26 18:00:25 +00:00
Daniel Dunbar 33794edae7 Use .data() vs &...[0]
llvm-svn: 72420
2009-05-26 17:13:50 +00:00
Daniel Dunbar f7323f3f65 The driver/diagnostic client don't need to be on the heap.
llvm-svn: 72418
2009-05-26 16:15:44 +00:00
Fariborz Jahanian a4404f21d1 This patch adds support for sender-aware dispatch in Objective-C for the GNU runtime, when
compiled with -fobjc-sender-dependent-dispatch.  This is used in AOP, COP, implementing object 
planes, and a few other things.
Patch by David Chisnall.

llvm-svn: 72275
2009-05-22 20:17:16 +00:00
Douglas Gregor 7f5601e55f AST XML dump, from Olaf Krzikalla!
llvm-svn: 72224
2009-05-21 20:55:50 +00:00
Eli Friedman 5b5bd90a21 Move AnalysisConsumer.h and Analyses.def from tools/clang-cc to
include/clang/Frontend, and move AnalysisConsumer.cpp from 
tools/clang-cc to lib/Frontend.

llvm-svn: 72135
2009-05-19 21:10:40 +00:00
Eli Friedman 45966b4671 Remove the -arch option from clang-cc: for all practical purposes, it's
redundant with -triple.

llvm-svn: 72108
2009-05-19 11:12:40 +00:00
Eli Friedman 996ef2f7b6 Move analysis command-line options out of AnalysisConsumer.cpp into
clang-cc.cpp.

With this commit, all of the clang-cc command-line options are defined 
in clang-cc.cpp.

llvm-svn: 72107
2009-05-19 10:18:02 +00:00
Eli Friedman e15ecf04a4 CMake updates for r72099; untested, so please tell me if there are any
issues.

llvm-svn: 72100
2009-05-19 04:21:30 +00:00
Eli Friedman 16b7b6f511 Move clang-cc.h to lib/Frontend/Utils.h, and move the associated .cpp
files to lib/Frontend.

llvm-svn: 72099
2009-05-19 04:14:29 +00:00
Eli Friedman 2bd0f3964c Move CreateAnalysisConsumer into a separate header AnalysisConsumer.h.
Start moving things around in the direction of refactoring the 
command-line options out of AnalysisConsumer.cpp.

llvm-svn: 72097
2009-05-19 03:57:28 +00:00
Eli Friedman 33cd03cd89 Move the options for dependency file generation from DependencyFile.cpp
to clang-cc.cpp.  Also, rename CreateDependencyFileGen to 
AttachDependencyFileGen, and make it take a raw_ostream rather than 
opening a file itself.

llvm-svn: 72096
2009-05-19 03:35:57 +00:00
Eli Friedman 6af494b426 Move options for -E mode from PrintPreprocessedOutput.cpp to
clang-cc.cpp.

llvm-svn: 72095
2009-05-19 03:06:47 +00:00
Eli Friedman 26c672b490 Refactor -dM mode out of the main routine for -E handling.
llvm-svn: 72090
2009-05-19 01:32:34 +00:00
Eli Friedman 42279c0f07 Move the warning options from Warnings.cpp to clang-cc.cpp.
llvm-svn: 72089
2009-05-19 01:17:04 +00:00
Eli Friedman fcb57d5b6a Switch some utilities in clang-cc to take a stream instead of a
filename (or unconditionally using stdout).

llvm-svn: 72085
2009-05-19 01:02:07 +00:00
Eli Friedman 351fa4b1b2 Attempted CMake build fixes for r72060; this is untested, so please tell
me if there are any issues.

llvm-svn: 72063
2009-05-18 23:06:15 +00:00
Eli Friedman 2b6d281e11 Build fixes for r72060; sorry for any inconvenience.
llvm-svn: 72062
2009-05-18 23:02:01 +00:00
Eli Friedman 9f30fc33d9 Move ASTConsumers.h to include/clang/Frontend, and move the associated
.cpp files to lib/Frontend.  (As proposed on cfe-dev.)

llvm-svn: 72060
2009-05-18 22:50:54 +00:00
Eli Friedman f22439a709 Move the Wno-rewrite-macros option out of RewriteObjC.cpp in prepration
for moving ASTConsumers.h to include/clang/Frontend.

llvm-svn: 72059
2009-05-18 22:39:16 +00:00
Eli Friedman a63ab2dc76 Rename the factory function for the ObjC rewriter to something sane.
llvm-svn: 72055
2009-05-18 22:29:17 +00:00
Eli Friedman e5594d724b Move AnalysisConsumer out of ASTConsumers.h in preparation for moving
ASTConsumers.h to include/clang/Frontend.

llvm-svn: 72054
2009-05-18 22:25:55 +00:00
Eli Friedman 94cf21e282 Refactor ASTConsumers to take a raw_ostream instead of a filename where
appropriate.  There shouldn't be any significant functionality change.

llvm-svn: 72052
2009-05-18 22:20:00 +00:00
Eli Friedman 174c310967 Remove unused parameter.
llvm-svn: 71996
2009-05-18 07:39:39 +00:00
Eli Friedman 07cdffc295 Add some comments to ASTConsumers.h describing what the different
ASTConsumers actually do.

llvm-svn: 71992
2009-05-18 01:16:21 +00:00
Anders Carlsson ee13926fbe Make ActOnWhileStmt take a FullExprArg for the condition expr.
llvm-svn: 71990
2009-05-17 21:22:26 +00:00
Anders Carlsson 24824e5009 Make ActOnExprStmt take a FullExprArg.
llvm-svn: 71989
2009-05-17 21:11:30 +00:00
Anders Carlsson 5262746c28 Add the FullExprArg wrapper and use it for if statement conditions.
llvm-svn: 71982
2009-05-17 18:26:53 +00:00
Eli Friedman 8f1d33e218 A couple of tweaks to make -ast-print produce code that's closer to
valid C code.

llvm-svn: 71971
2009-05-17 01:05:34 +00:00
Mike Stump 6814d1c126 Implement a FIXME, we now pass in the locations of the braces for enums.
llvm-svn: 71930
2009-05-16 07:06:02 +00:00
Anders Carlsson 5879fbd933 Disable access control by default. It can be enabled with the -faccess-control option. When we have better support for it, we can enable it by default again.
llvm-svn: 71706
2009-05-13 19:49:53 +00:00
Chris Lattner 939952c19c remove the obsolete -fprint-source-range-info option
llvm-svn: 71675
2009-05-13 17:08:18 +00:00
Douglas Gregor 45fe0364aa Make precompiled headers work with -E. When we're only preprocessing
(with -E), we turn the PCH include into an implicit include of the
file from which the PCH file was generated.

llvm-svn: 71534
2009-05-12 01:31:05 +00:00
Douglas Gregor ad1a1c3982 Move terminal-width computation over to llvm::sys. Update to LLVM
r71448 required. Fixes PR 4148 and PR 4183.

llvm-svn: 71450
2009-05-11 18:06:49 +00:00
Daniel Dunbar 81ded69511 Remove -fobjc-tight-layout, seems to work!
llvm-svn: 71184
2009-05-07 21:58:26 +00:00
Ted Kremenek 094bc31000 Fix <rdar://problem/6848739>. When using -analyze, -Werror has no effect.
llvm-svn: 71172
2009-05-07 19:02:53 +00:00
Daniel Dunbar 908a66dc9b If stderr isn't a terminal, don't try to guess the terminal width or
look at COLUMNS.

llvm-svn: 71120
2009-05-06 21:28:42 +00:00
Daniel Dunbar bb36aed06b More x86 target feature support.
- Apologies for the extremely gross code duplication, I want to get
   this working and then decide how to get this information out of the
   back end.

 - This replaces -m[no-]sse4[12] by -m[no-]sse4, it appears gcc
   doesn't distinguish them?

 - -msse, etc. now properly disable/enable related features.

 - Don't always define __SSE3__...

 - The main missing functionality bit here is that we don't initialize
   the features based on the CPU for all -march options.

llvm-svn: 71117
2009-05-06 21:07:50 +00:00
Chris Lattner 37ac812f9c daniel is buggy :)
llvm-svn: 71065
2009-05-06 04:38:30 +00:00
Daniel Dunbar 67dba989bb Add missing include.
llvm-svn: 71063
2009-05-06 04:07:06 +00:00
Daniel Dunbar bc45101e09 Cleanup some FIXMEs.
llvm-svn: 71062
2009-05-06 03:48:17 +00:00
Daniel Dunbar 4dbaaa6f43 Improve handling of (X86) target features.
- This is a WIP...

 - This adds -march= handling to the driver, and fixes the defaulting
   of -mcpu on Darwin (which was using the wrong test).

Instead of handling -m{sse, ...} in the driver, pass them to clang-cc as
 -target-feature [+-]name

In clang-cc, communicate with the (clang) target to discover the legal
features of a target, and the features which are enabled based on
-mcpu. This is currently hardcoded just enough to not be a feature
regression, we need to get this information from the backend's
TableGen information somehow.

This is used to construct the full list of features which are being
used, which is in turn used to initialize the predefines.

llvm-svn: 71061
2009-05-06 03:16:41 +00:00
Daniel Dunbar c4bb4274b6 Enable tight Objective-C interface layout unconditionally.
- I will remove the flag when I'm comfortable there is no fallout
   from this.

llvm-svn: 70993
2009-05-05 18:52:50 +00:00
Ted Kremenek a4a81c0ac7 Increase scan-view max timeout to 1 minute.
llvm-svn: 70896
2009-05-04 19:02:41 +00:00
Daniel Dunbar e993ba6fca Add -fobjc-tight-layout.
- This implements gcc style Objective-C interface layout (I
   think). Currently it is always off, there is no functionality
   change unless this is passed.
   
   For the curious, the deal is that gcc lays out the fields of a
   subclass as if they were part of the superclass. That is, the
   subclass fields immediately follow the super class fields instead
   of being padded to the alignment of the superclass structure.

 - Currently gcc uses the tight layout in 32-bit and 64-bit modes, and
   llvm-gcc uses it in 32-bit only, for reasons which aren't clear
   yet. We probably want to switch to matching gcc, once this makes it
   through testing... my hope is that we can also fix llvm-gcc in
   order to maintain compatibility between the compilers.

llvm-svn: 70827
2009-05-04 05:16:21 +00:00
Daniel Dunbar d58929be46 PR4063, with feeling: Chain PP callbacks by default.
- This is somewhat cleaner and also fixes PR4063 for real, I had the
   order wrong so we were just creating an empty dependency file.

llvm-svn: 70687
2009-05-03 10:04:17 +00:00
Daniel Dunbar f6d272f241 PR4063: Fix dependency generation with -E.
llvm-svn: 70686
2009-05-03 09:35:25 +00:00
Douglas Gregor 6f5a38bcc5 Respect the COLUMNS environment variable for word-wrapping (so we get
word-wrapping by default in Emacs; yay!). Thanks, Daniel.

Use LLVM's System layer rather than calling isatty() directly.

Fix a thinko in printing the indentation string that was causing some
weird output.

llvm-svn: 70654
2009-05-03 03:52:38 +00:00
Daniel Dunbar b7126db9b0 Remove ccc from the makefile as well.
llvm-svn: 70650
2009-05-02 23:50:24 +00:00
Daniel Dunbar 49aff46fed ccc is dead.
llvm-svn: 70649
2009-05-02 22:13:56 +00:00
Douglas Gregor 637f5f71e1 When -fmessage-length=N is not specified, and if standard error is
going to a terminal, word-wrap to the length of the terminal.

llvm-svn: 70611
2009-05-02 00:03:46 +00:00
Douglas Gregor 4818553abd Implement -fmessage-length=N, which word-wraps diagnostics to N columns.
Also, put a line of whitespace between the diagnostic and the source
code/caret line when the start of the actual source code text lines up
(or nearly lines up) with the most recent line of the diagnostic. For
example, here it's okay for the last line of the diagnostic to be
(vertically) next to the source line, because there is horizontal
whitespace to separate them:

decl-expr-ambiguity.cpp:12:16: error: function-style cast to a builtin
      type can only take one argument
  typeof(int)(a,5)<<a;

However, here is a case where we need the vertical separation (since
there is no horizontal separation):

message-length.c:10:46: warning: incompatible pointer types initializing 'void
      (int, float, char, float)', expected 'int (*)(int, float, short,
      float)'

      int (*fp1)(int, float, short, float) = f;

This is part one of <rdar://problem/6711348>.

llvm-svn: 70578
2009-05-01 21:53:04 +00:00
Bill Wendling 50e41a4d86 Remove two unused options.
llvm-svn: 70457
2009-04-30 00:55:13 +00:00
Bill Wendling 29405d836b Use the new code gen optimization enum instead of passing in the optimization
level. This is more expressive.

llvm-svn: 70451
2009-04-29 23:53:23 +00:00
Evan Cheng a97709b66f Match addPassesToEmitFile API change.
llvm-svn: 70409
2009-04-29 21:02:33 +00:00
Steve Naroff d98037132f Integrate 3 months of ObjC rewriter fixes (from the Apple/objective-rewrite branch).
llvm-svn: 70385
2009-04-29 16:37:50 +00:00
Douglas Gregor ce1a9c5a6b Make all PCH-incompatibility warnings into errors, and abort
compilation if the user requested a PCH file but no such PCH file
exists.

llvm-svn: 70332
2009-04-28 22:01:16 +00:00
Douglas Gregor c379c07240 Allow some differences between the predefines buffer used to build a
PCH file and the predefines buffer used when including the PCH
file. We (explicitly) detect conflicting macro definitions (rejecting
the PCH file) and about missing macro definitions (they'll be
automatically pulled from the PCH file anyway).

We're missing some checking to make sure that new macro definitions
won't have any impact on the PCH file itself (e.g., #define'ing an
identifier that the PCH file used).

llvm-svn: 70316
2009-04-28 18:58:38 +00:00
Eli Friedman 6131bfbf77 Remove unused LangOptions NoExtensions and Boolean.
llvm-svn: 70282
2009-04-28 03:28:55 +00:00
Mike Stump 6ea352a750 We avoid the count of diagnostics when not generating carent
diagnostics to improve gcc compatibility; useful for dejagnu testing.

llvm-svn: 70278
2009-04-28 01:19:10 +00:00
Chris Lattner 8804f40321 -E, -Eonly and -parse-noop now work with PCH!
llvm-svn: 70259
2009-04-27 22:02:30 +00:00
Chris Lattner 8575daaa82 Teach PCH that ASTContext is optional. Move -parse-noop and -Eonly (so far)
processing to after PCH is loaded.  -Eonly and -parse-noop are close to working
with PCH now but are not quite there yet.

llvm-svn: 70257
2009-04-27 21:45:14 +00:00
Chris Lattner 1f1e1c7e39 unnest some code, decoupling fixit rewriting from ast stuff.
llvm-svn: 70250
2009-04-27 21:25:27 +00:00
Daniel Dunbar c6480e2634 Add -empty-input-only option, for timing.
- Forces input file to be empty to time startup/shutdown costs.

llvm-svn: 70249
2009-04-27 21:19:07 +00:00
Douglas Gregor c504683237 Implement caching of stat() calls for precompiled headers, which is
essentially the same thing we do with pretokenized headers. stat()
caching improves performance of the Cocoa-prefixed "Hello, World" by
45%.

llvm-svn: 70223
2009-04-27 18:38:38 +00:00
Sebastian Redl a7b98a772c Implement function-try-blocks. However, there's a very subtle bug that I can't track down.
llvm-svn: 70155
2009-04-26 20:35:05 +00:00
Douglas Gregor 32887f0274 Add a new -ast-dump-full option that traverses the translation unit
declaration rather than printing through the HandleTopLevelDecl
action. Using this, one can deserialize an entire PCH file and dump
it.

llvm-svn: 70108
2009-04-26 02:02:08 +00:00
Chris Lattner 0dedefe4f2 minor cleanups to ast-dump, use getBody(context).
llvm-svn: 70095
2009-04-25 23:31:28 +00:00
Douglas Gregor 5f66205233 The ivars in an ObjCImplementationDecl are now stored in the
DeclContext rather than in a separate list. This makes PCH
(de-)serialization trivial, so that ivars can be loaded lazily.

llvm-svn: 69857
2009-04-23 03:23:08 +00:00
Douglas Gregor 29bd76fd04 Eliminate the three SmallVectors in ObjCImplDecl (for instance
methods, class methods, and property implementations) and instead
place all of these entities into the DeclContext.

This eliminates more linear walks when looking for class or instance
methods and should make PCH (de-)serialization of ObjCDecls trivial
(and lazy).

llvm-svn: 69849
2009-04-23 01:02:12 +00:00
Douglas Gregor 48db39dc90 Remove the serialization code that predates precompiled
headers. Future approaches to (de-)serializing ASTs will be based on
the PCH infrastructure.

llvm-svn: 69828
2009-04-22 21:45:53 +00:00
Douglas Gregor 4621c6ae15 Lazy loading of builtins for precompiled headers.
PCH files now contain complete information about builtins, including
any declarations that have been synthesized as part of building the
PCH file. When using a PCH file, we do not initialize builtins at all;
when needed, they'll be found in the PCH file.

This optimization translations into a 9% speedup for "Hello, World!"
with Carbon.h as a prefix header and roughly a 5% speedup for 403.gcc
with its prefix header. We're also reading less of the PCH file for
"Hello, World!":

*** PCH Statistics:
  286/20693 types read (1.382110%)
  1630/59230 declarations read (2.751984%)
  764/44914 identifiers read (1.701029%)
  1/32954 statements read (0.003035%)
  5/6187 macros read (0.080815%)

down from

*** PCH Statistics:
  411/20693 types read (1.986179%)
  2553/59230 declarations read (4.310316%)
  1093/44646 identifiers read (2.448148%)
  1/32954 statements read (0.003035%)
  21/6187 macros read (0.339421%)

llvm-svn: 69815
2009-04-22 18:49:13 +00:00
Douglas Gregor beecd58e21 Explictly track tentative definitions within Sema, then hand those
tentative definitions off to the ASTConsumer at the end of the
translation unit. 

Eliminate CodeGen's internal tracking of tentative definitions, and
instead hook into ASTConsumer::CompleteTentativeDefinition. Also,
tweak the definition-deferal logic for C++, where there are no
tentative definitions.

Fixes <rdar://problem/6808352>, and will make it much easier for
precompiled headers to cope with tentative definitions in the future.

llvm-svn: 69681
2009-04-21 17:11:58 +00:00
Steve Naroff 426662ba79 Add pch reader/writer support for most of DeclObjC.h. Very close to reading/writing all ObjC AST nodes that we will encounter in header files (still a few FIXME's).
Once selector support is in place, we should be able to take this for a spin (and add test cases).

llvm-svn: 69674
2009-04-21 15:12:33 +00:00
Chris Lattner 2f5693f62d Split preprocessor initialization logic out of clang-cc into
libfrontend.  Patch by Alexei Svitkine!

llvm-svn: 69664
2009-04-21 05:40:52 +00:00
Chris Lattner 6968641ac5 rename -fprint-source-range-info -> -fdiagnostics-print-source-range-info.
Temporarily accept both of them, I'll rip out the old one after awhile.

llvm-svn: 69662
2009-04-21 05:34:31 +00:00
Steve Naroff aac654abeb Add pch reader/writer support for ObjCContainerDecl, ObjCInterfaceDecl, & ObjCIvarDecl.
Next step: Add selector support to PCHWriter::AddDeclarationName().

llvm-svn: 69619
2009-04-20 20:09:33 +00:00
Douglas Gregor 162dd0245e Introduce the notion of a SemaConsumer, which is an ASTConsumer that
also gets access to the Sema object performing semantic analysis. This
will be used by the PCH writer to serialize Sema state.

No functionality change.

llvm-svn: 69595
2009-04-20 15:53:59 +00:00
Douglas Gregor 13ad62ced7 Make the on-disk hash table usable with non-file
raw_ostreams. Requires LLVM r69583.

llvm-svn: 69584
2009-04-20 07:36:26 +00:00
Douglas Gregor 52289d3343 Move the on-disk hash table code into its own header. No functionality change.
llvm-svn: 69580
2009-04-20 07:08:21 +00:00
Chris Lattner c6fafed04c move group twiddling options into Diagnostic.cpp instead of
Warnings.cpp.  Warnings.cpp now doesn't need to #include
tblgen produced output directly.

llvm-svn: 69559
2009-04-19 22:34:23 +00:00
Chris Lattner ddddff4f41 Fix PR4007: clang doesn't know -Werror-foo is the same as -Werror=foo
llvm-svn: 69557
2009-04-19 22:07:21 +00:00
Chris Lattner 29d34cabc5 implement compiler support for -fno-diagnostics-fixit-info,
rdar://6805442

llvm-svn: 69525
2009-04-19 07:44:08 +00:00
Chris Lattner 30b55dc946 invalid directives can occur in #if 0 code, just pass them
through like other directives PTH doesn't care about.  This
should fix rdar://6804029

llvm-svn: 69524
2009-04-19 07:32:03 +00:00
Chris Lattner 9941ce33c3 make PTH not crash on a null directive (# on its own line)
llvm-svn: 69523
2009-04-19 07:25:40 +00:00
Chris Lattner 6ada5d72f8 use isNot instead of !is
llvm-svn: 69522
2009-04-19 07:15:51 +00:00
Chris Lattner fc507055c7 fix -fdollars-in-identifiers to have a default that is overriden
by the command line option if present.

llvm-svn: 69521
2009-04-19 07:06:52 +00:00
Chris Lattner 98b100590d fix rdar://6804322 by wiring up -fdollars-in-identifiers
with assembler-with-cpp mode.

llvm-svn: 69520
2009-04-19 07:00:02 +00:00
Douglas Gregor e3dcb2ddd1 FunctionDecl::getBody() is getting an ASTContext argument for use in
lazy PCH deserialization. Propagate that argument wherever it needs to
be. No functionality change, except that I've tightened up a few PCH
tests in preparation.

llvm-svn: 69406
2009-04-18 00:02:19 +00:00
Chris Lattner 6395285306 implement a new clang-cc option -dump-build-information=filename which causes the
compiler to dump random stuff from the build into the file.  Right now this
amounts to dumping command line arguments and diagnostics to the file.

The idea is that you can set an envvar, do a world build of an OS, then grep 
through all the logs for interesting things or something.

Daniel, please wire the driver up to do something with this.

llvm-svn: 69386
2009-04-17 21:05:01 +00:00
Chris Lattner 25ef69a36e refactor htmldiags to be created up front like the other diag clients.
llvm-svn: 69379
2009-04-17 20:40:01 +00:00
Chris Lattner c6b5613460 add a virtual method to DiagnosticClient to get rid of some fragile
casting in clang-cc.

llvm-svn: 69377
2009-04-17 20:16:08 +00:00
Fariborz Jahanian 493d4e080d Added -print-ivar-layout option. No change in functionality
yet.

llvm-svn: 69346
2009-04-17 03:04:15 +00:00
Daniel Dunbar 3f4a2c286e Support QA_OVERRIDE_GCC3_OPTIONS
- Cover your eyes...

 - This is a simple but effective way to allow developers to build a
   project with clang while manipulating the command line, without
   having to edit the project itself.

llvm-svn: 69342
2009-04-17 01:54:00 +00:00
Chris Lattner 22cb818913 implement framework for -fdiagnostics-show-option, but tblgen isn't
passing down the right info yet.

llvm-svn: 69268
2009-04-16 05:44:38 +00:00
Chris Lattner b8e73158e1 move handling of -pedantic and -pedantic-errors into Diagnostics,
out of Warnings.cpp.  This simplifies warnings.cpp and makes it more
efficient.

llvm-svn: 69266
2009-04-16 05:04:32 +00:00
Chris Lattner f9150bac01 arrange for -Wno-error=foo warnings to be immune to -Werror as
they are supposed to be.

llvm-svn: 69265
2009-04-16 04:32:54 +00:00
Chris Lattner e82c3cc848 when tblgen fills in all the subgroup info, clang is ready for it.
This depends on r69249 of llvm.

llvm-svn: 69250
2009-04-16 00:53:55 +00:00
Chris Lattner 3fd869cc6c make unknown warnings a warning, not an error.
llvm-svn: 69239
2009-04-15 22:48:58 +00:00
Chris Lattner 7836eefefc add support for -Wextra and -W
llvm-svn: 69236
2009-04-15 22:38:06 +00:00
Chris Lattner 680eb1b893 use tablgen-generated warning groups.
llvm-svn: 69221
2009-04-15 20:58:49 +00:00
Chris Lattner 76732c2fca now that we've decoupled diagnostic classes from default mappings,
move the remaining default mapping exceptions from C++ code into
the .td files.

llvm-svn: 69183
2009-04-15 17:20:11 +00:00
Chris Lattner 5a8c8df08c rename variable in comment, not just in code :).
llvm-svn: 69166
2009-04-15 14:42:02 +00:00
Chris Lattner e007de3b9a Rejigger how -pedantic and -pedantic-errors work and their interaction
with other diagnostic mapping.  In the new scheme, -Wfoo or -Wno-foo or 
-Werror=foo all override the -pedantic options, and __extension__ 
robustly silences all extension diagnostics in their scope.

An added bonus of this change is that MAP_DEFAULT goes away, meaning that
per-diagnostic mapping information can now be stored in 2 bits, doubling
the density of the Diagnostic::DiagMapping array.  This also 
substantially simplifies Diagnostic::getDiagnosticLevel.

OTOH, this temporarily introduces some "macro intensive" code in 
Diagnostic.cpp.  This will be addressed in a later patch.

llvm-svn: 69154
2009-04-15 07:01:18 +00:00
Chris Lattner ce682d9ea5 remove some commented out -Wstrict-selector-match stuff.
llvm-svn: 69148
2009-04-15 04:57:48 +00:00
Chris Lattner 8a1dc20756 clean up error messages.
llvm-svn: 69142
2009-04-15 04:51:48 +00:00
Chris Lattner 384a59cac1 Add support for -Werror=foo and -Wno-error=foo
llvm-svn: 69138
2009-04-15 04:37:12 +00:00
Chris Lattner 4c73b67efb refactor a bunch of the warning parsing stuff to simplify it. This removes the
-Wfoo=ignore syntax.  GCC supports -Wno-foo, no need to invent our own stuff.

llvm-svn: 69136
2009-04-15 04:27:38 +00:00
Douglas Gregor f0b575f79d Add PCH support for ImplicitCastExprs. This is the first expression
kind PCH handles that has an expression as an operand, so most of this
work is in the infrastructure to rebuild expression trees from the
serialized representation. We now store expressions in post-order
(e.g., Reverse Polish Notation), so that we can easily rebuild the
appropriate expression tree.

llvm-svn: 69101
2009-04-14 23:32:43 +00:00
Chris Lattner 184e65d363 Change Lexer::MeasureTokenLength to take a LangOptions reference.
This allows it to accurately measure tokens, so that we get:

t.cpp:8:13: error: unknown type name 'X'
static foo::X  P;
       ~~~~~^

instead of the woefully inferior:

t.cpp:8:13: error: unknown type name 'X'
static foo::X  P;
       ~~~~ ^

Most of this is just plumbing to push the reference around.

llvm-svn: 69099
2009-04-14 23:22:57 +00:00
Chris Lattner b874dbd478 add support for -W[no-]extra-tokens
llvm-svn: 69071
2009-04-14 20:36:01 +00:00
Douglas Gregor 54feb84489 When building a PCH file, don't perform end-of-translation-unit
wrap-up (e.g., turning tentative definitions into definitions). Also,
very that, when we actually use the PCH file, we get the ride code
generation for tentative definitions and definitions that show up in
the PCH file.

llvm-svn: 69043
2009-04-14 16:27:31 +00:00
Daniel Dunbar f5f359fb73 Clean up handling of visibility.
llvm-svn: 69027
2009-04-14 06:00:08 +00:00
Daniel Dunbar a431deb03c Reapply 68936, turned out to that clang's better debug info exposed a
codegenerator bug.

llvm-svn: 68983
2009-04-13 20:46:33 +00:00
Daniel Dunbar f3d0dccfff Revert 68936, LLVM still isn't ready to handle debug info + optimization.
llvm-svn: 68972
2009-04-13 18:03:39 +00:00
Chris Lattner 1050b99f8c the driver caught up. This makes -msse3 correctly set __SSE3__ etc.
llvm-svn: 68943
2009-04-13 06:33:49 +00:00
Devang Patel e8f66b3ed0 Enable debug info generation while optimizing.
llvm-svn: 68936
2009-04-13 04:22:59 +00:00
Chris Lattner cac63f359e Implement support for GCC's -dD mode, which dumps -E output *and*
macro definitions.

llvm-svn: 68884
2009-04-12 01:56:53 +00:00
Chris Lattner 225dd6c830 add some #includes for better compatibility with gcc 4.4,
thanks to Tobias Stadler for pointing this out.

llvm-svn: 68868
2009-04-11 18:40:46 +00:00
Douglas Gregor 92863e475e Compare the predefines buffer in the PCH file with the predefines
buffer generated for the current translation unit. If they are
different, complain and then ignore the PCH file. This effectively
checks for all compilation options that somehow would affect
preprocessor state (-D, -U, -include, the dreaded -imacros, etc.).

When we do accept the PCH file, throw away the contents of the
predefines buffer rather than parsing them, since all of the results
of that parsing are already stored in the PCH file. This eliminates
the ugliness with the redefinition of __builtin_va_list, among other
things.

llvm-svn: 68838
2009-04-10 23:10:45 +00:00
Chris Lattner d959d753bc do a dance with predefines, and finally enable reading of macros from
PCH.  This works now, except for limitations not being able to do things
with identifiers.  The basic example in the testcase works though.

llvm-svn: 68832
2009-04-10 22:13:17 +00:00
Chris Lattner 3c68407868 move a bunch of code for initializing the predefines buffer out of Preprocessor.cpp
into clang-cc.cpp.  This makes it so clang-cc constructs the *entire* predefines 
buffer, not just half of it.  A bonus of this is that we get to kill a copy
of DefineBuiltinMacro.

llvm-svn: 68830
2009-04-10 21:58:23 +00:00
Fariborz Jahanian 40458ec7ef Reject compiles for x86_64 target for MacOS versions which
do not support it.

llvm-svn: 68819
2009-04-10 20:33:45 +00:00
Daniel Dunbar 497ff13243 Support -miphoneos-version-min in clang-cc.
- Patch by Shantonu Sen (with a minor tweak to split out
   getDarwin{OSX,IPhoneOS}Defines)!

 - <rdar://problem/6776277> Need clang-cc/ccc-analyzer support for
   -miphoneos-version-min

llvm-svn: 68815
2009-04-10 19:52:24 +00:00
Daniel Dunbar 8b723e299c Driver: CCC_ADD_ARGS could end up using dangling pointers.
llvm-svn: 68805
2009-04-10 18:32:59 +00:00
Chris Lattner 2199f5b4e5 emit tokens, constify the Preprocessor passed down into PCH writer.
llvm-svn: 68798
2009-04-10 18:08:30 +00:00
Douglas Gregor df47d734c2 Add PCH sources to CMake build files
llvm-svn: 68794
2009-04-10 17:28:42 +00:00
Chris Lattner eeffaef7b9 Arrange for the preprocessor to be passed down into the PCH writer.
llvm-svn: 68790
2009-04-10 17:15:23 +00:00
Douglas Gregor a7f71a91c5 PCH serialization/deserialization of the source manager. With this
improvement, source locations read from the PCH file will properly
resolve to the source files that were used to build the PCH file
itself.

Once we have the preprocessor state stored in the PCH file, source
locations that refer to macro instantiations that occur in the PCH
file should have the appropriate instantiation information.

llvm-svn: 68758
2009-04-10 03:52:48 +00:00
Douglas Gregor ef84c4b434 Implementation of pre-compiled headers (PCH) based on lazy
de-serialization of abstract syntax trees.

PCH support serializes the contents of the abstract syntax tree (AST)
to a bitstream. When the PCH file is read, declarations are serialized
as-needed. For example, a declaration of a variable "x" will be
deserialized only when its VarDecl can be found by a client, e.g.,
based on name lookup for "x" or traversing the entire contents of the
owner of "x".

This commit provides the framework for serialization and (lazy)
deserialization, along with support for variable and typedef
declarations (along with several kinds of types). More
declarations/types, along with important auxiliary structures (source
manager, preprocessor, etc.), will follow.

llvm-svn: 68732
2009-04-09 22:27:44 +00:00
Douglas Gregor bcced4ec31 Propagate the ASTContext to various AST traversal and lookup functions.
No functionality change (really).

llvm-svn: 68726
2009-04-09 21:40:53 +00:00
Daniel Dunbar f67829ac6a Make -include, -imacros paths absolute in Frontend.
- Otherwise paths will be resolved relative to the main input file,
   which is incorrect.

 - I don't know how to make a reasonable test case for this with our
   testing infrastructure.

 - PR3395

llvm-svn: 68665
2009-04-09 00:51:16 +00:00
Chris Lattner 2632dda471 add support for -Wtrigraphs and -Wno-trigraphs.
llvm-svn: 68649
2009-04-08 22:37:15 +00:00
Chris Lattner e01d82b81f finish the implementation of -imacros. The driver still needs to be hooked up.
llvm-svn: 68640
2009-04-08 20:53:24 +00:00
Chris Lattner 94f4248086 According to the GCC man page, all -imacros are included before any -include's.
llvm-svn: 68633
2009-04-08 20:15:42 +00:00
Chris Lattner 21f47dd8ac properly escape filenames when generating implicit #includes, this handles
things like " in paths etc.  Found by inspection.

llvm-svn: 68632
2009-04-08 20:10:57 +00:00
Chris Lattner 14a7f39733 Add initial support for -imacros. Right now it has the same semantics as
-include, but that will be fixed soon.

llvm-svn: 68625
2009-04-08 18:24:34 +00:00
Daniel Dunbar 17ddaa677e More fixes to builtin preprocessor defines.
- Add -static-define option driver can use when __STATIC__ should be
   defined (instead of __DYNAMIC__).

 - Don't set __OPTIMIZE_SIZE__ on Os, __OPTIMIZE_SIZE__ is tied to Oz.

 - Set __NO_INLINE__ following GCC 4.2.

 - Set __GNU_GNU_INLINE__ or __GNU_STDC_INLINE__ following GCC 4.2.

 - Set __EXCEPTIONS for Objective-C NonFragile ABI.

 - Set __STRICT_ANSI__ for standard conforming modes.

 - I added a clang style test case in utils for this, but its not
   particularly portable and I don't think it belongs in the test
   suite.

llvm-svn: 68621
2009-04-08 18:03:55 +00:00
Daniel Dunbar 3b358a3d83 Make debug info work when using -save-temps.
- This is pretty ugly, but the most obvious solution. Chime in if you
   have a nicer one.

 - The problem is that with -save-temps, clang-cc has no idea what the
   name of the original input file is. However, the user expects to be
   able to set breakpoints based on the input file name.

 - We support this by providing a new option -main-file-name (similar
   to -dumpbase used by gcc) which allows the driver to pass in the
   original file name.

 - <rdar://problem/6753383> building with clang using --save-temps
   gets the compile unit name from the .i file...

llvm-svn: 68595
2009-04-08 05:11:16 +00:00
Chris Lattner 4720840d7e fix typo, noticed by Gabor
llvm-svn: 68587
2009-04-08 03:36:03 +00:00
Daniel Dunbar ab7b2f5623 Set __PIC__ (more) correctly.
- Add -pic-level clang-cc option to specify the value for the define,
   updated driver to pass this.

 - Added __pic__

 - Added OBJC_ZEROCOST_EXCEPTIONS define while I was here (to match gcc).

llvm-svn: 68584
2009-04-08 03:03:23 +00:00
Daniel Dunbar c44b4ccca8 Driver: Fix forwarding of -{std,ansi,trigraphs} when there are
multiple instances of an option.

Also, removed direct -ansi support from clang-cc.

llvm-svn: 68558
2009-04-07 22:13:21 +00:00
Daniel Dunbar d18049ab1d Driver: Manually translate a number of -f with no- variants options to
clang.
 - We will eventually want some more driver infrastructre for this
   probably.

 - For now, the clang-cc interface stays relatively the same, but we
   don't accept multiple instances anymore, or the [no-] variants
   directly.

llvm-svn: 68550
2009-04-07 21:16:11 +00:00