Commit Graph

162 Commits

Author SHA1 Message Date
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
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
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