Commit Graph

50770 Commits

Author SHA1 Message Date
Chris Lattner 378b041f03 improve const correctness.
llvm-svn: 60168
2008-11-27 08:39:18 +00:00
Chris Lattner c6ae56d23f enhance FindAvailableLoadedValue to make use of AliasAnalysis
if it has it.

llvm-svn: 60167
2008-11-27 08:18:12 +00:00
Chris Lattner 72f16e70f0 move FindAvailableLoadedValue from JumpThreading to Transforms/Utils.
llvm-svn: 60166
2008-11-27 08:10:05 +00:00
Bill Wendling c6075401c2 Get rid of bogus "control may reach end of non-void function ‘...’ being
inlined" message.

llvm-svn: 60165
2008-11-27 08:00:12 +00:00
Chris Lattner d6204bed3d simplify this code a bit.
llvm-svn: 60164
2008-11-27 07:54:38 +00:00
Chris Lattner 206250284d Use the new MergeBasicBlockIntoOnlyPred function.
llvm-svn: 60163
2008-11-27 07:54:12 +00:00
Chris Lattner 99d6809ac1 move MergeBasicBlockIntoOnlyPred to Transforms/Utils.
llvm-svn: 60162
2008-11-27 07:43:12 +00:00
Bill Wendling 077eb6fcc2 XFAil test due to reverting of patch.
llvm-svn: 60161
2008-11-27 07:34:10 +00:00
Sebastian Redl 3ceaf62240 Fix order of evaluation.
llvm-svn: 60160
2008-11-27 07:28:14 +00:00
Chris Lattner 240051aace rename ThreadBlock to ProcessBlock, since it does other things than
just simple threading.

llvm-svn: 60157
2008-11-27 07:20:04 +00:00
Bill Wendling 128f032cc8 Comment out code that isn't entirely correct.
llvm-svn: 60156
2008-11-27 07:18:35 +00:00
Misha Brukman c9813bda47 Fixed HTML closing tag, cleaned up some spacing.
llvm-svn: 60153
2008-11-27 06:41:20 +00:00
Zhongxing Xu 7b3d3d3ee1 ImmutableList::getInternalPointer() returns a const ImmutableListImpl<T>* pointer, which must be converted to void* explicitly.
llvm-svn: 60152
2008-11-27 06:32:54 +00:00
Zhongxing Xu 59e2d41a8e Factory objects should not be temporary. It caches all objects in the set.
llvm-svn: 60151
2008-11-27 06:08:40 +00:00
Zhongxing Xu b670f294c9 RegionViewMap factory is actually not used. All GDMs should use factories from
GDMContext.

llvm-svn: 60150
2008-11-27 06:03:03 +00:00
Sanjiv Gupta 7ae1a84465 Removing redundant semicolons. No functionality change.
llvm-svn: 60149
2008-11-27 05:58:04 +00:00
Chris Lattner 98d89d1b1b Make jump threading substantially more powerful, in the following ways:
1. Make it fold blocks separated by an unconditional branch.  This enables
   jump threading to see a broader scope.
2. Make jump threading able to eliminate locally redundant loads when they
   feed the branch condition of a block.  This frequently occurs due to
   reg2mem running.
3. Make jump threading able to eliminate *partially redundant* loads when
   they feed the branch condition of a block.  This is common in code with
   lots of loads and stores like C++ code and 255.vortex.

This implements thread-loads.ll and rdar://6402033.

Per the fixme's, several pieces of this should be moved into Transforms/Utils.

llvm-svn: 60148
2008-11-27 05:07:53 +00:00
Daniel Dunbar e9095f55c7 Test commit.
llvm-svn: 60147
2008-11-27 03:47:29 +00:00
Zhongxing Xu b94f440754 Add comments.
llvm-svn: 60146
2008-11-27 02:39:34 +00:00
Evan Cheng b133907e61 Eliminate a compile time warning.
llvm-svn: 60145
2008-11-27 02:29:25 +00:00
Zhongxing Xu 2d311e8354 Add license comments.
llvm-svn: 60144
2008-11-27 02:19:10 +00:00
Zhongxing Xu 16e3f0e03f Add support for pluggable components of static analyzer.
- Creator function pointers are saved in ManagerRegistry.
 - The Register* class is used to notify ManagerRegistry new module is 
   available.
 - AnalysisManager queries ManagerRegistry for configurable module. Then it
   passes them to GRExprEngine, in turn to GRStateManager.

llvm-svn: 60143
2008-11-27 01:55:08 +00:00
Douglas Gregor a29dc05eaf Add implicit conversions for Objective-C qualified ids, e.g.,
id<P0>

The intended overloading behavior of these entities isn't entirely
clear, and GCC seems to have some strange limitations (e.g., the
inability to overload on id<P0> vs. id<P1>). We'll want to revisit
these semantics and determine just how Objective-C++ overloading
should really work.

llvm-svn: 60142
2008-11-27 01:19:21 +00:00
Evan Cheng 3761143755 Avoid inserting noop's in the middle of a loop.
llvm-svn: 60141
2008-11-27 01:16:00 +00:00
Douglas Gregor bb9bf88fa4 Cleanup formatting
llvm-svn: 60140
2008-11-27 00:52:49 +00:00
Evan Cheng 83bdb38965 On x86 favors folding short immediate into some arithmetic operations (e.g. add, and, xor, etc.) because materializing an immediate in a register is expensive in turns of code size.
e.g.
movl 4(%esp), %eax
addl $4, %eax

is 2 bytes shorter than

movl $4, %eax
addl 4(%esp), %eax

llvm-svn: 60139
2008-11-27 00:49:46 +00:00
Douglas Gregor e7dd145c02 Don't complain about block pointer to void* conversions
llvm-svn: 60138
2008-11-27 00:44:28 +00:00
Dale Johannesen 73bc0ba4c9 Add a missing case in visitADD.
llvm-svn: 60137
2008-11-27 00:43:21 +00:00
Ted Kremenek 1f50dc899f PTHLexer now owns the Token vector.
llvm-svn: 60136
2008-11-27 00:38:24 +00:00
Evan Cheng d1dda5339d Add -march=x86.
llvm-svn: 60135
2008-11-27 00:37:06 +00:00
Ted Kremenek 143b058a8e Add typedef to StringMapEntry.
llvm-svn: 60134
2008-11-27 00:17:25 +00:00
Douglas Gregor 231d1c6f8f Support block pointer conversions in C++. I'm storing the test case locally until we can enable blocks in C++
llvm-svn: 60133
2008-11-27 00:15:41 +00:00
Ted Kremenek b1ef37589c - Enhance PTH generation to write out IdentifierInfo table in two parts:
- a table including the IdentifierInfo data
  - an index from persistent IdentifierInfo IDs to indices within this file.
- Enhance PTH generation to write out file map information, mapping inodes to tokens.

llvm-svn: 60132
2008-11-26 23:58:26 +00:00
Douglas Gregor 9ccbcdfb27 Test conversion from apointer to incomplete type to void* in C++
llvm-svn: 60131
2008-11-26 23:33:36 +00:00
Douglas Gregor 237f96c40f Implement implicit conversions for Objective-C specific types, e.g.,
converting a pointer to one Objective-C interface into a pointer to another
Objective-C interface, and conversions with 'id'. The semantics seems
to match GCC, although they seem somewhat ad hoc.

Fixed a few cases where we assumed the C++ definition of isObjectType,
but were getting the C definition, causing failures in trouble with
conversions to void pointers.

llvm-svn: 60130
2008-11-26 23:31:11 +00:00
Fariborz Jahanian 6de7eb8587 Another test for property code gen.
llvm-svn: 60128
2008-11-26 23:20:29 +00:00
Mikhail Glushenkov 6f4cb52c71 Disallow multiple edges.
llvm-svn: 60127
2008-11-26 22:59:45 +00:00
Bill Wendling a69ced6b68 Add x86-specific test for add-with-overflow intrinsics.
llvm-svn: 60125
2008-11-26 22:42:19 +00:00
Argyrios Kyrtzidis 9323b04b36 Attempt to unravel the if/else mess in Parser::ParseDirectDeclarator.
llvm-svn: 60124
2008-11-26 22:40:03 +00:00
Bill Wendling 751a694ad3 Generate something sensible for an [SU]ADDO op when the overflow/carry flag is
the conditional for the BRCOND statement. For instance, it will generate:

    addl %eax, %ecx
    jo LOF

instead of

    addl %eax, %ecx
    ; About 10 instructions to compare the signs of LHS, RHS, and sum.
    jl LOF

llvm-svn: 60123
2008-11-26 22:37:40 +00:00
Fariborz Jahanian 57251782d0 Code gen for aggregate-valued properties and a test case.
llvm-svn: 60122
2008-11-26 22:36:09 +00:00
Chris Lattner 397a11ccd8 Turn on my codegen prepare heuristic by default. It doesn't affect
performance in most cases on the Grawp tester, but does speed some 
things up (like shootout/hash by 15%).  This also doesn't impact 
compile time in a noticable way on the Grawp tester.

It also, of course, gets the testcase it was designed for right :)

llvm-svn: 60120
2008-11-26 22:16:44 +00:00
Argyrios Kyrtzidis 0c4162a659 Add some comments.
llvm-svn: 60119
2008-11-26 21:51:07 +00:00
Argyrios Kyrtzidis ace521a1e1 Implement some suggestions by Daniel:
-Change Parser::ParseCXXScopeSpecifier to MaybeParseCXXScopeSpecifier
-Remove Parser::isTokenCXXScopeSpecifier and fold it into MaybeParseCXXScopeSpecifier
-Rename Parser::TryAnnotateScopeToken to TryAnnotateCXXScopeToken and only allow it to be called when in C++

llvm-svn: 60117
2008-11-26 21:41:52 +00:00
Argyrios Kyrtzidis 041f958303 Add an overload for operator<<(const DiagnosticBuilder &DB,bool I).
Fixes building error on MSVC where passing bool couldn't resolve to one of the overloads.

llvm-svn: 60116
2008-11-26 20:39:45 +00:00
Fariborz Jahanian e7167c28f6 Removed a FIXME. Added a test case for anonymous category.
llvm-svn: 60115
2008-11-26 20:33:54 +00:00
Fariborz Jahanian f8ef9f3dc9 Set default property attributes on each property.
Implemented anonymous category (also know as continuation class)
used to override main class's property attribute. This is work in 
propgress.

llvm-svn: 60114
2008-11-26 20:01:34 +00:00
Bill Wendling 6e41adddab Small formatting change.
llvm-svn: 60113
2008-11-26 19:19:05 +00:00
Bill Wendling 0f5541e4cf Update to explain how ssp and sspreq attributes override each other.
llvm-svn: 60112
2008-11-26 19:07:40 +00:00
Devang Patel 1e916900ba Fix typo.
llvm-svn: 60111
2008-11-26 18:13:11 +00:00