Commit Graph

1201 Commits

Author SHA1 Message Date
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
Ted Kremenek e5554deb45 PTH: Replace string identifier to persistent ID lookup with a hashtable. This is
actually *slightly* slower than the binary search. Since this is algorithmically
better, further performance tuning should be able to make this faster.

llvm-svn: 64326
2009-02-11 21:29:16 +00:00
Steve Naroff 5ee2c02ac6 Fix <rdar://problem/6243503> [sema] @throw; accepted outside catch block.
llvm-svn: 64318
2009-02-11 20:05:44 +00:00
Ted Kremenek 8527e3a727 PTH: Don't emit the PTH offset of the IdentifierInfo string data as that data is
referenced by other tables.

llvm-svn: 64304
2009-02-11 16:06:55 +00:00
Mike Stump 6abe6923e5 Add private extern to pretty printer(s).
llvm-svn: 64258
2009-02-10 23:49:50 +00:00
Ted Kremenek c7d6964a38 PTH generation: Discard tokens that appear after and on the same line as '#endif'.
llvm-svn: 64250
2009-02-10 22:43:16 +00:00
Chris Lattner 1ec246d233 make -dM emit macros in a deterministic (sorted) order instead of
random hash table order, I don't like non-determinstic output.

llvm-svn: 64248
2009-02-10 22:28:19 +00:00
Ted Kremenek 99c7275118 PTH generation: Don't call 'EmitToken' in the loop condition. This is preparing for other changes within the loop.
llvm-svn: 64247
2009-02-10 22:27:09 +00:00
Ted Kremenek 86423a9993 PTH: Replace ad hoc 'file name' -> 'PTH data' lookup table in the PTH file with an on-disk chained hash table. This data structure is implemented using templates, and will be used to replace similar data structures. This change leads to no visibile performance impact on Cocoa.h, but now we only pay a price for the table on order with the number of files accessed and not the number in the PTH file.
llvm-svn: 64245
2009-02-10 22:16:22 +00:00
Chris Lattner 8ac63738b4 use efficient form of getSpelling, this speeds up -dM by 16%.
llvm-svn: 64244
2009-02-10 22:16:03 +00:00
Mike Stump 74a7647973 Fixup -ast-print so that:
We handle indentation of decls better.
  We Indent extern "C" { } stuff better.
  We print out structure contents more often.
  We handle pass indentation information into the statement printer, so that
  nested things come out more indented.
  We print out FieldDecls.
  We print out Vars.
  We print out namespaces.
  We indent functions better.

llvm-svn: 64232
2009-02-10 20:16:46 +00:00
Ted Kremenek 351f78822b Rearrange code. No functionality change.
llvm-svn: 64193
2009-02-10 01:14:45 +00:00
Ted Kremenek 5b229bcea8 Fix potential padding error in PTH file and add stub code for emitting an on-disk chained hash table.
llvm-svn: 64192
2009-02-10 01:06:17 +00:00
Ted Kremenek d7b4f40b18 CallExpr now uses ASTContext's allocate to allocate/delete its array of subexpressions.
llvm-svn: 64162
2009-02-09 20:51:47 +00:00
Sebastian Redl 2175b6a767 Make one expected-diag directive match exactly one actual diagnostic.
This uncovers some bugs, so several test cases now fail.

llvm-svn: 64025
2009-02-07 19:52:04 +00:00
Ted Kremenek 5a201951ca Overhaul of Stmt allocation:
- Made allocation of Stmt objects using vanilla new/delete a *compiler
  error* by making this new/delete "protected" within class Stmt.
- Now the only way to allocate Stmt objects is by using the new
  operator that takes ASTContext& as an argument.  This ensures that
  all Stmt nodes are allocated from the same (pool) allocator.
- Naturally, these two changes required that *all* creation sites for
  AST nodes use new (ASTContext&).  This is a large patch, but the
  majority of the changes are just this mechanical adjustment.
- The above changes also mean that AST nodes can no longer be
  deallocated using 'delete'.  Instead, one most do
  StmtObject->Destroy(ASTContext&) or do
  ASTContextObject.Deallocate(StmtObject) (the latter not running the
  'Destroy' method).

Along the way I also...
- Made CompoundStmt allocate its array of Stmt* using the allocator in
  ASTContext (previously it used std::vector).  There are a whole
  bunch of other Stmt classes that need to be similarly changed to
  ensure that all memory allocated for ASTs comes from the allocator
  in ASTContext.
- Added a new smart pointer ExprOwningPtr to Sema.h.  This replaces
  the uses of llvm::OwningPtr within Sema, as llvm::OwningPtr used
  'delete' to free memory instead of a Stmt's 'Destroy' method.

Big thanks to Doug Gregor for helping with the acrobatics of making
'new/delete' private and the new smart pointer ExprOwningPtr!

llvm-svn: 63997
2009-02-07 01:47:29 +00:00
Douglas Gregor cd72ba97e7 Semantic checking for class template declarations and
redeclarations. For example, checks that a class template
redeclaration has the same template parameters as previous
declarations.

Detangled class-template checking from ActOnTag, whose logic was
getting rather convoluted because it tried to handle C, C++, and C++
template semantics in one shot.

Made some inroads toward eliminating extraneous "declaration does not
declare anything" errors by adding an "error" type specifier.

llvm-svn: 63973
2009-02-06 22:42:48 +00:00
Ted Kremenek 6b7ecf6819 Move StringLiteral to allocate its internal string data using the allocator in
ASTContext. This required changing all clients to pass in the ASTContext& to the
constructor of StringLiteral. I also changed all allocations of StringLiteral to
use new(ASTContext&).

Along the way, I updated a bunch of new()'s in StmtSerialization.cpp to use the
allocator from ASTContext& (not complete).

llvm-svn: 63958
2009-02-06 19:55:15 +00:00
Chris Lattner 1630c3c4f0 Add an implementation of -dM that follows GCC closely enough to permit
diffing the output of:
  clang -dM -o - -E -x c foo.c | sort

llvm-svn: 63926
2009-02-06 06:45:26 +00:00
Chris Lattner f302000e5c add support for -x c++-header, update comment.
llvm-svn: 63924
2009-02-06 06:19:20 +00:00
Chris Lattner fc001b04f8 factor some code out into a helper function.
llvm-svn: 63922
2009-02-06 05:56:11 +00:00
Chris Lattner fa81669354 default diag::err_pp_file_not_found to mapping to fatal,
implementing PR3492: #include failures should be a fatal error

llvm-svn: 63915
2009-02-06 04:16:41 +00:00