Commit Graph

41705 Commits

Author SHA1 Message Date
Chris Lattner
8a923e7c28 Reimplement the parameter attributes support, phase #1. hilights:
1. There is now a "PAListPtr" class, which is a smart pointer around
   the underlying uniqued parameter attribute list object, and manages
   its refcount.  It is now impossible to mess up the refcount.
2. PAListPtr is now the main interface to the underlying object, and
   the underlying object is now completely opaque.
3. Implementation details like SmallVector and FoldingSet are now no
   longer part of the interface.
4. You can create a PAListPtr with an arbitrary sequence of
   ParamAttrsWithIndex's, no need to make a SmallVector of a specific 
   size (you can just use an array or scalar or vector if you wish).
5. All the client code that had to check for a null pointer before
   dereferencing the pointer is simplified to just access the 
   PAListPtr directly.
6. The interfaces for adding attrs to a list and removing them is a
   bit simpler.

Phase #2 will rename some stuff (e.g. PAListPtr) and do other less 
invasive changes.

llvm-svn: 48289
2008-03-12 17:45:29 +00:00
Steve Naroff
b327e49047 Use the "used" attribute. Without it, g++ removes all the meta-data:-( This doesn't happen when compiling straight C code.
llvm-svn: 48287
2008-03-12 17:18:30 +00:00
Ted Kremenek
576b76a794 Improved ExplodedGraph::Trim to only show nodes reachable from a reverse BFS
from the sources, and to try and generate only a single path from sources
to roots.

llvm-svn: 48286
2008-03-12 17:18:20 +00:00
Chris Lattner
ee8d960ed1 no need to keep around this output.
llvm-svn: 48285
2008-03-12 17:14:06 +00:00
Steve Naroff
5d5efca405 -Add missing visitor for ObjCIvarRefExpr.
-Wrap objc runtime calls with "extern "C"" (for now).

llvm-svn: 48284
2008-03-12 13:19:12 +00:00
Evan Cheng
136a24742c Document an implementation detail about EXTRACT_SUBREG and INSERT_SUBREG sub-register operand.
llvm-svn: 48283
2008-03-12 07:52:15 +00:00
Owen Anderson
6ff0b822b4 Improve the return slot optimization to be both more aggressive (not limited to sret parameters), and
safer (when the passed pointer might be invalid).  Thanks to Duncan and Chris for the idea behind this, 
and extra thanks to Duncan for helping me work out the trap-safety.

llvm-svn: 48280
2008-03-12 07:37:44 +00:00
Evan Cheng
99ee78ef63 Clean up my own mess.
X86 lowering normalize vector 0 to v4i32. However DAGCombine can fold (sub x, x) -> 0 after legalization. It can create a zero vector of a type that's not expected (e.g. v8i16). We don't want to disable the optimization since leaving a (sub x, x) is really bad. Add isel patterns for other types of vector 0 to ensure correctness. It's highly unlikely to happen other than in bugpoint reduced test cases.

llvm-svn: 48279
2008-03-12 07:02:50 +00:00
Owen Anderson
944b1c76ab We also need to collect the VN IDs for the PHI instructions for later updating.
llvm-svn: 48278
2008-03-12 04:22:57 +00:00
Owen Anderson
70aaab6dc5 When we're determining what registers to coallesce, track the VNInfo IDs for the definitions that
feed the PHI instructions.  We'll need these IDs in order to update LiveIntervals properly.

llvm-svn: 48277
2008-03-12 03:13:29 +00:00
Chris Lattner
e7b19035ed when the bitcode reader is referencing a paramattr, make sure to bump its refcount.
llvm-svn: 48276
2008-03-12 02:25:52 +00:00
Steve Naroff
4182fd56ad Since the rewriter now outputs C++, it no longer makes sense to pipe the output to clang.
This should "fix" all but one of the test failure.

llvm-svn: 48275
2008-03-12 02:07:40 +00:00
Evan Cheng
0903aef2ff Total brain cramp.
llvm-svn: 48274
2008-03-12 02:05:05 +00:00
Ted Kremenek
48a3410e25 Fixed regression in SymbolManager introduced in r48272.
llvm-svn: 48273
2008-03-12 02:00:37 +00:00
Ted Kremenek
68d73d19f1 Prototype (pre-alpha) implementation of CFRef checker.
llvm-svn: 48272
2008-03-12 01:21:45 +00:00
Steve Naroff
251084d03e Remove more dependencies on C "flexible array member" idiom (when generating meta-data).
llvm-svn: 48271
2008-03-12 01:06:30 +00:00
Chris Lattner
1f49988a7a This is a simple fix for getting error messages from dlerror in
LoadLibraryPermanently. The current code modifies the value of a pointer
that is passed by value, so the caller never gets the message.

Patch by Julien Lerouge!

llvm-svn: 48270
2008-03-12 00:50:01 +00:00
Dale Johannesen
0d98256c05 One more bit of Altivec parameter passing.
llvm-svn: 48269
2008-03-12 00:49:20 +00:00
Anton Korobeynikov
2f22e3f690 Be backward compatible
llvm-svn: 48268
2008-03-12 00:49:19 +00:00
Devang Patel
cc189b5606 Check multiple return values.
llvm-svn: 48267
2008-03-12 00:32:32 +00:00
Steve Naroff
dc5b6b2e5d Make ivar rewrite C++ friendly (since C++ forces a unified namespace for typedefs/structures). The previous version of the rewriter generated both a type def and structure def for each class (which doesn't fly in C++).
llvm-svn: 48266
2008-03-12 00:25:36 +00:00
Dan Gohman
35f8f07c00 Make this test x86-specific for now; targets that don't use
the automated CallingConv code to handle return values typically
don't support multiple return values.

llvm-svn: 48265
2008-03-12 00:25:14 +00:00
Dale Johannesen
b28456ef18 Implement Altivec passing to varargs functions on ppc.
llvm-svn: 48264
2008-03-12 00:22:17 +00:00
Evan Cheng
105cb3988b Set NextMII after issuing a physical register spill.
llvm-svn: 48263
2008-03-12 00:14:07 +00:00
Devang Patel
fa8667a2dd Fix attribute handling.
llvm-svn: 48262
2008-03-12 00:07:03 +00:00
Evan Cheng
b398635456 Minor debug output bug.
llvm-svn: 48261
2008-03-12 00:02:46 +00:00
Dan Gohman
8a361c1f92 Basic feature test for multiple return values in codegen.
llvm-svn: 48260
2008-03-11 23:53:16 +00:00
Anton Korobeynikov
e6d90f5a95 Ultimately resolve aliases during linking, if possible
llvm-svn: 48259
2008-03-11 22:51:09 +00:00
Anton Korobeynikov
80b53b8f6b Testcase for PR2137
llvm-svn: 48258
2008-03-11 22:43:42 +00:00
Anton Korobeynikov
e8fa50f63a Correctly propagate thread-local flag from aliasee to alias. This fixes PR2137
llvm-svn: 48257
2008-03-11 22:38:53 +00:00
Dan Gohman
24570836b2 Use PassManagerBase instead of FunctionPassManager for functions
that merely add passes. This allows them to be used with either
FunctionPassManager or PassManager, or even with a custom new
kind of pass manager.

llvm-svn: 48256
2008-03-11 22:29:46 +00:00
Anton Korobeynikov
da7db7d9a1 Add helper for ultimate aliasee resoltion
llvm-svn: 48255
2008-03-11 22:28:56 +00:00
Devang Patel
7358165c99 Handle multiple ret values.
llvm-svn: 48254
2008-03-11 22:24:29 +00:00
Devang Patel
f6269f0914 Initialize.
llvm-svn: 48253
2008-03-11 22:08:21 +00:00
Dan Gohman
20af5a0fe7 Check to see if a two-entry PHI block can be simplified
before trying to merge the block into its predecessors.
This allows two-entry-phi-return.ll to be simplified
into a single basic block.

llvm-svn: 48252
2008-03-11 21:53:06 +00:00
Dan Gohman
8e9ae96a4a Make this test more challenging to help it avoid being
optimized away before it tests what it is intended to test.

llvm-svn: 48251
2008-03-11 21:47:57 +00:00
Anton Korobeynikov
6f51973734 Update testcase for recent aliases change
llvm-svn: 48250
2008-03-11 21:42:20 +00:00
Anton Korobeynikov
2601d7ee50 Honour aliases visibility during asm emission
llvm-svn: 48249
2008-03-11 21:41:14 +00:00
Anton Korobeynikov
db691cbd6d Honour aliases visibility when reading from/writing to bitcode
llvm-svn: 48248
2008-03-11 21:40:17 +00:00
Dan Gohman
6616836e71 Add a test to ensure that all-ones vectors are materialized with pcmpeqd.
llvm-svn: 48247
2008-03-11 21:37:00 +00:00
Evan Cheng
a3891365b5 Transfer physical register spill info when load / store folding happens.
llvm-svn: 48246
2008-03-11 21:34:46 +00:00
Dan Gohman
44b4c07cd1 Use the correct value for InSignBit.
llvm-svn: 48245
2008-03-11 21:29:43 +00:00
Dan Gohman
1351025a91 Initial codegen support for functions and calls with multiple return values.
llvm-svn: 48244
2008-03-11 21:11:25 +00:00
Chris Lattner
8abed80a69 Implement basic support for the 'f' register class constraint. This basically
works, but probably won't if you mix it with 't' or 'u' yet.

llvm-svn: 48243
2008-03-11 19:50:13 +00:00
Ted Kremenek
2a723e6e80 Added pretty-printing support for checker-specific state for the CFRefCount checker.
llvm-svn: 48242
2008-03-11 19:44:10 +00:00
Chris Lattner
7b27ccfd5e coalesce away 80-bit floating point copies.
llvm-svn: 48241
2008-03-11 19:30:09 +00:00
Chris Lattner
7930d8e775 convert a massive if statement to a switch.
llvm-svn: 48240
2008-03-11 19:28:17 +00:00
Chris Lattner
120ad01fcb start handling the 'f' x87 constraint.
llvm-svn: 48239
2008-03-11 19:06:29 +00:00
Ted Kremenek
d01efb547f Expanded graph-visualization to include optional pretty-printing of checker-specific state.
llvm-svn: 48238
2008-03-11 19:02:40 +00:00
Ted Kremenek
827d0fcd57 Expanded ValueState pretty-printing to use an optional "CheckerStatePrinter"
object to pretty-print the component of a state that is specific to a checker.

llvm-svn: 48237
2008-03-11 18:57:24 +00:00