Commit Graph

1222 Commits

Author SHA1 Message Date
Gabor Greif fda885d048 Adapt help string to what the code is doing (default is lang_gnu99). Thanks rdivacky!
llvm-svn: 65689
2009-02-28 09:22:15 +00:00
Douglas Gregor 89ee6822d8 Eliminate CXXRecordType
llvm-svn: 65671
2009-02-28 01:32:25 +00:00
Douglas Gregor deaad8cc34 Create a new TypeNodes.def file that enumerates all of the types,
giving them rough classifications (normal types, never-canonical
types, always-dependent types, abstract type representations) and
making it far easier to make sure that we've hit all of the cases when
decoding types. 

Switched some switch() statements on the type class over to using this
mechanism, and filtering out those things we don't care about. For
example, CodeGen should never see always-dependent or non-canonical
types, while debug info generation should never see always-dependent
types. More switch() statements on the type class need to be moved 
over to using this approach, so that we'll get warnings when we add a
new type then fail to account for it somewhere in the compiler.

As part of this, some types have been renamed:

  TypeOfExpr -> TypeOfExprType
  FunctionTypeProto -> FunctionProtoType
  FunctionTypeNoProto -> FunctionNoProtoType

There shouldn't be any functionality change...

llvm-svn: 65591
2009-02-26 23:50:07 +00:00
Daniel Dunbar 26d5f05bf5 Add -emit-llvm-only option (generate LLVM IR & run passes, but discard
output).
 - For timing IRgen phase.

llvm-svn: 65580
2009-02-26 22:39:37 +00:00
Chris Lattner fff06dd4f9 this got moved to top level
llvm-svn: 65553
2009-02-26 18:38:21 +00:00
Chris Lattner 58ac0b4bac move this makefile goop up to the top level llvm makefile.
llvm-svn: 65544
2009-02-26 17:48:04 +00:00
Anton Korobeynikov 34c44301b1 Enable export maps also on {Free, Net}BSD.
Don't ask me, how does this makefile-horribleness even work ;)

llvm-svn: 65522
2009-02-26 09:04:29 +00:00
Owen Anderson dfa78089e8 Add an export map for clang on Linux.
llvm-svn: 65504
2009-02-26 06:29:54 +00:00
Ted Kremenek dc3f50fbd9 Add experimental logic in GRExprEngine::EvalEagerlyAssume() to handle
expressions of the form: 'short x = (y != 10);' While we handle 'int x = (y !=
10)' lazily, the cast to another integer type currently loses the symbolic
constraint. Eager evaluation of the constraint causes the paths to bifurcate and
eagerly evaluate 'y != 10' to a constant of 1 or 0. This should address
<rdar://problem/6619921> until we have a better (more lazy approach) for
handling promotions/truncations of symbolic integer values.

llvm-svn: 65480
2009-02-25 22:32:02 +00:00
Douglas Gregor 739ef0c183 C99 DR #316 implies that the function parameter types that are known
only from a function definition (that does not have a prototype) are
only used to determine the compatible with other declarations of that
same function. In particular, when referencing the function we pretend
as if it does not have a prototype. Implement this behavior, which
fixes PR3626.

llvm-svn: 65460
2009-02-25 16:33:18 +00:00
Ted Kremenek d6e190d899 PTH: Cache *un-cleaned* spellings for literals instead of cleaned spellings.
This allows the PTH file to stay 100% in fidelity with the source code and
defines away some weird cosmetic bugs for operations such as '-E' where
maintaining knowledge of the original literal representation is useful.

llvm-svn: 65361
2009-02-24 01:26:56 +00:00
Ted Kremenek 1f11c65a27 PTH: When emitting tokens for literals with cached spellings, change the token
size to that of the *cleaned* spelling. This way 'getSpelling()' for literals in
the Preprocessor just works and doesn't read beyond the bounds of the cached
spelling buffer.

llvm-svn: 65354
2009-02-24 00:30:21 +00:00
Daniel Dunbar 3283ff5088 Put compiler headers in <prefix>/lib/clang/1.0/include (vs
<prefix>/Headers, gross).

llvm-svn: 65247
2009-02-21 20:52:41 +00:00
Ted Kremenek b98f0eb9af Make 'RangeConstraintManager' the default ConstraintManager.
llvm-svn: 65173
2009-02-20 21:49:22 +00:00
Ted Kremenek 01144480fd PTH generation: Clear the cleaning bit for literals (whose spellings are cached).
llvm-svn: 65148
2009-02-20 20:32:39 +00:00
Chris Lattner a499715c83 remove some more methods from objc decls, using the iterator
interfaces more consistently.

llvm-svn: 65138
2009-02-20 18:43:26 +00:00
Chris Lattner f5b77513b0 remove some slow O(n) methods.
llvm-svn: 65132
2009-02-20 18:18:36 +00:00
Chris Lattner ed89b3ff2f Change ObjCForwardProtocolDecl to use an ObjCList.
llvm-svn: 65131
2009-02-20 18:10:37 +00:00
Chris Lattner 9ee23b7f1a move the interace list of @class to use ObjCList.
llvm-svn: 65129
2009-02-20 18:04:31 +00:00
Chris Lattner 06ef388a61 fix a bug introduced in my previous patch: moving clang headers to the
"after" group instead of the system group makes it so #include <limits.h>
picks up the *system* limits.h file before clang's.  This causes a failure
on linux and is definitely not what we want.

llvm-svn: 65026
2009-02-19 06:48:28 +00:00
Chris Lattner cb60143ec3 always search for "builtin" headers at the end of the search path,
and never remap them with -isysroot.  This fixes PR3614.

llvm-svn: 65012
2009-02-19 04:55:19 +00:00
Chris Lattner 2aee77c906 don't print codegen time unless -ftime-report was passed.
llvm-svn: 64928
2009-02-18 18:22:50 +00:00
Chris Lattner f83b5afb7b privatize all of the string literal memory allocation/creation
stuff behind a private static function.

llvm-svn: 64898
2009-02-18 06:40:38 +00:00
Chris Lattner 630970ddb8 change the StringLiteral AST node to track all of the SourceLocations of
the various PPTokens that are pasted together to make it.  In the course
of working on this, I discovered ParseObjCStringLiteral which needs some
work.  I'll tackle it next.

llvm-svn: 64892
2009-02-18 05:49:11 +00:00
Chris Lattner f0c2d58acc Optimize dyld startup time by specifying a trivial export map
(only export main) on the mac.

This improves DYLD_PRINT_STATISTICS from:
total time: 6.0 milliseconds (100.0%)
total images loaded:  5 (4 from dyld shared cache, 3 needed no fixups)
total segments mapped: 0, into 0 pages with 0 pages pre-fetched
total images loading time: 0.0 milliseconds (1.4%)
total rebase fixups:  0
total rebase fixups time: 0.0 milliseconds (0.0%)
total binding fixups: 7,928
total binding symbol lookups: 4,087, average images searched per symbol: 1.9
total binding fixups time: 4.7 milliseconds (79.2%)
total bindings lazily fixed up: 170 of 4,372
total init time time: 1.1 milliseconds (19.2%)
total images with weak exports:  2

to:
total time: 1.4 milliseconds (100.0%)
total images loaded:  5 (4 from dyld shared cache, 4 needed no fixups)
total segments mapped: 0, into 0 pages with 0 pages pre-fetched
total images loading time: 0.0 milliseconds (5.7%)
total rebase fixups:  0
total rebase fixups time: 0.0 milliseconds (0.2%)
total binding fixups: 1,079
total binding symbol lookups: 75, average images searched per symbol: 1.0
total binding fixups time: 0.5 milliseconds (33.9%)
total bindings lazily fixed up: 14 of 216
total init time time: 0.8 milliseconds (60.0%)
total images with weak exports:  1

This reduces the time to -fsyntax-only cocoa.h with PTH from 0.192s to 0.184 (4.3%)

rdar://6505315

llvm-svn: 64882
2009-02-18 04:02:00 +00:00
Chris Lattner f53a9612d1 add a bunch of timers for -E and other modes. This requires
llvm r64874 or later.

llvm-svn: 64875
2009-02-18 01:51:21 +00:00
Chris Lattner 263d64cd90 teach -ftime-report to time the code generator and -emit-llvm times.
llvm-svn: 64873
2009-02-18 01:37:30 +00:00
Chris Lattner deffa13399 move llvm backend specific #includes into Backend.cpp instead of Clang.cpp
llvm-svn: 64872
2009-02-18 01:23:44 +00:00
Chris Lattner baba6fc1c4 indentation and formatting
llvm-svn: 64871
2009-02-18 01:20:05 +00:00
Chris Lattner 5df3d46a9b clang will hopefully never support ratfor.
llvm-svn: 64870
2009-02-18 01:17:01 +00:00
Chris Lattner a1580a603a wire up a minimal -ftime-report, which prints the optimizer/codegen
times.  Daniel, plz add driver support.

llvm-svn: 64869
2009-02-18 01:12:43 +00:00
Daniel Dunbar d97b07e7d4 Backend: Accept -mcpu and -mattr for use by TargetMachine.
llvm-svn: 64798
2009-02-17 19:47:34 +00:00
Ted Kremenek b535181199 Static Analyzer driver/options (partial) cleanup:
- Move all analyzer options logic to AnalysisConsumer.cpp.
- Unified specification of stores/constraints/output to be:
   -analyzer-output=...
   -analyzer-store=...
   -analyzer-constraints=...
  instead of -analyzer-range-constraints, -analyzer-store-basic, etc.
- Updated drivers (ccc-analyzer, scan-builds, new ccc) to obey this new
  interface
- Updated test cases to conform to new driver options

llvm-svn: 64737
2009-02-17 04:27:41 +00:00
Chris Lattner 8a04c5ad03 add support for -fno-math-errno, and validate that it affects sema properly.
llvm-svn: 64708
2009-02-17 00:35:09 +00:00
Chris Lattner ba86ad178b remove extraneous .
llvm-svn: 64706
2009-02-17 00:30:31 +00:00
Daniel Dunbar 8eb018ab9c Support IRgen of sqrt -> llvm.sqrt, pow -> llvm.pow.
- Define pow[lf]?, sqrt[lf]? as builtins.

 - Add -fmath-errno option which binds to LangOptions.MathErrno

 - Add new builtin flag Builtin::Context::isConstWithoutErrno for
   functions which can be marked as const if errno isn't respected for
   math functions. Sema automatically marks these functions as const
   when they are defined, if MathErrno=0.

 - IRgen uses const attribute on sqrt and pow library functions to
   decide if it can use the llvm intrinsic.

llvm-svn: 64689
2009-02-16 22:43:43 +00:00
Ted Kremenek de39198f95 RangeConstraintManager is not on by default.
llvm-svn: 64638
2009-02-16 17:26:11 +00:00
Argyrios Kyrtzidis 9b7bd9bfc6 castToDeclContext/castFromDeclContext are not meant to be used directly; they are used indirectly by cast/dyn_cast.
All Decl <-> DeclContext casting should be done through cast/dyn_cast.

llvm-svn: 64631
2009-02-16 14:29:59 +00:00
Daniel Dunbar f898638eee PR3589: Don't simplify libcalls with -ffreestanding.
llvm-svn: 64599
2009-02-15 20:00:15 +00:00
Douglas Gregor 69c7951c8e Add -ffreestanding to suppress the implicit declaration of library builtins like printf and malloc. Fixes PR3586
llvm-svn: 64566
2009-02-14 20:49:29 +00:00
Ted Kremenek 7efe43db99 Patch by Ben Laurie:
ConstraintManager:
- constify getSymVal()

BasicConstraintManager:
- Pull out logic that would be common to ConstraintManagers of a similar nature
  and put them in a parent class called 'SimpleConstraintManager'.

RangeConstraintManager:
- Added a new prototype ConstraintManager to track ranges of variables! This
  ConstraintManager keeps tracks of ranges of concrete integers that a symbolic
  integer may have.

AnalysisConsumer:
- Add driver option to use RangeConstraintManager with GRExprEngine-based
  analyses.

llvm-svn: 64558
2009-02-14 17:08:39 +00:00
Cedric Venet d3c80de95f Fix the build on win32.
llvm-svn: 64556
2009-02-14 16:15:20 +00:00
Daniel Dunbar 165b527507 Fix typo in printing of __private_extern__.
llvm-svn: 64501
2009-02-13 22:49:34 +00:00
Ted Kremenek 2fd18ec43a PTH: Cache directory and negative 'stat' calls. This gives us a 1% performance improvement on Cocoa.h (fsyntax-only+PTH).
llvm-svn: 64490
2009-02-13 22:07:44 +00:00
Ted Kremenek 29942a349c Add some boilerplate to the PTH file to prepare for the caching of stats for directories (and negative stats too).
llvm-svn: 64477
2009-02-13 19:13:46 +00:00
Ted Kremenek c14725d9eb AnalysisConsumer: Explicitly destroy the PathDiagnosticClient at the end of HandleTranslationUnit to ensure that the client's destructor is called even with --disable-free.
llvm-svn: 64422
2009-02-13 00:51:30 +00:00
Chris Lattner 644d452de5 factor token concatenation avoidance logic out of
PrintPreprocessedOutput into its own file.  No functionality change.

llvm-svn: 64418
2009-02-13 00:46:04 +00:00
Ted Kremenek a5c2c27ebd PTH: Cache stat information for files in the PTH file. Hook up FileManager
to use this stat information in the PTH file using a 'StatSysCallCache' object.

Performance impact (Cocoa.h, PTH):
- number of stat calls reduces from 1230 to 425
- fsyntax-only: time improves by 4.2% 

We can reduce the number of stat calls to almost zero by caching negative stat
calls and directory stat calls in the PTH file as well.

llvm-svn: 64353
2009-02-12 03:26:59 +00:00
Chris Lattner f4174b0c80 for now, disable all debug info generation at -O1 and above. This mirrors
similar logic in llvm-gcc and will hopefully be fixed soon.

llvm-svn: 64349
2009-02-12 01:50:58 +00:00
Ted Kremenek 4c1d41f2b1 PTH: Have meta data be at the beginning of the PTH file, not the end.
llvm-svn: 64338
2009-02-11 23:34:32 +00:00