Chris Lattner
fb7f87d5a3
add a new SimplifyInstruction API, which is like ConstantFoldInstruction,
...
except that the result may not be a constant. Switch jump threading to
use it so that it gets things like (X & 0) -> 0, which occur when phi preds
are deleted and the remaining phi pred was a zero.
llvm-svn: 86637
2009-11-10 01:08:51 +00:00
Jeffrey Yasskin
b40d3f76a0
Fix DenseMap iterator constness.
...
This patch forbids implicit conversion of DenseMap::const_iterator to
DenseMap::iterator which was possible because DenseMapIterator inherited
(publicly) from DenseMapConstIterator. Conversion the other way around is now
allowed as one may expect.
The template DenseMapConstIterator is removed and the template parameter
IsConst which specifies whether the iterator is constant is added to
DenseMapIterator.
Actually IsConst parameter is not necessary since the constness can be
determined from KeyT but this is not relevant to the fix and can be addressed
later.
Patch by Victor Zverovich!
llvm-svn: 86636
2009-11-10 01:02:17 +00:00
Chris Lattner
a71e9d61be
factor simplification logic for AND and OR out to InstSimplify from instcombine.
...
llvm-svn: 86635
2009-11-10 00:55:12 +00:00
David Goodwin
0d412c2528
Fixed to address code review. No functional changes.
...
llvm-svn: 86634
2009-11-10 00:48:55 +00:00
Daniel Dunbar
a8b869e794
Simplify, following MemoryBuffer::getSTDIN API fix.
...
llvm-svn: 86633
2009-11-10 00:46:25 +00:00
Daniel Dunbar
69914f4134
Switch to getFileOrSTDIN().
...
llvm-svn: 86632
2009-11-10 00:46:19 +00:00
Daniel Dunbar
190401566e
Remove some if-0'd code, we can resurrect this if we ever decide to support
...
continuing after invalid PCH loads.
llvm-svn: 86631
2009-11-10 00:46:12 +00:00
Daniel Dunbar
124fc5e252
Fix MemoryBuffer::getSTDIN to *not* return null if stdin is empty, this is a lame API.
...
Also, Stringrefify some more MemoryBuffer functions, and add two performance FIXMEs.
llvm-svn: 86630
2009-11-10 00:43:58 +00:00
Douglas Gregor
983136e3a1
Move all of the type-printing logic to its own C++ source file
...
llvm-svn: 86629
2009-11-10 00:39:07 +00:00
David Goodwin
cf89db135e
Allow targets to specify register classes whose member registers should not be renamed to break anti-dependencies.
...
llvm-svn: 86628
2009-11-10 00:15:47 +00:00
Chris Lattner
ccfdceb22c
pull a bunch of logic out of instcombine into instsimplify for compare
...
simplification, this handles the foldable fcmp x,x cases among many others.
llvm-svn: 86627
2009-11-09 23:55:12 +00:00
Dan Gohman
2ac504729b
Pass the (optional) TargetData object to ConstantFoldInstOperands
...
and ConstantFoldCompareInstOperands.
llvm-svn: 86626
2009-11-09 23:34:17 +00:00
Chris Lattner
beadc6e8c7
inline a simple function.
...
llvm-svn: 86625
2009-11-09 23:31:49 +00:00
Chris Lattner
c1f19071f8
rename SimplifyCompare -> SimplifyCmpInst and split it into
...
Simplify[IF]Cmp pieces. Add some predicates to CmpInst to
determine whether a predicate is fp or int.
llvm-svn: 86624
2009-11-09 23:28:39 +00:00
Daniel Dunbar
60198df262
Add PreprocessorOptions to CompilerInvocation.
...
llvm-svn: 86623
2009-11-09 23:12:31 +00:00
Jim Grosbach
2524b04d0e
Now that the default is 'enabled,' a separate command line option for ARM is
...
not necessary.
llvm-svn: 86621
2009-11-09 23:11:45 +00:00
Mike Stump
f8a74fc4a5
Add testcase for recent checkin.
...
llvm-svn: 86620
2009-11-09 23:10:49 +00:00
Chris Lattner
cdfb80de16
fix ConstantFoldCompareInstOperands to take the LHS/RHS as
...
individual operands instead of taking a temporary array
llvm-svn: 86619
2009-11-09 23:06:58 +00:00
Daniel Dunbar
3f94a132dd
Add StringSwitch::Cases overloads, for matching multiple strings to a single
...
value.
llvm-svn: 86618
2009-11-09 23:05:44 +00:00
Daniel Dunbar
4df9aa2388
Privatize InitHeaderSearch, this functionality is only exposed via
...
ApplyHeaderSearchOptions now.
llvm-svn: 86617
2009-11-09 23:02:47 +00:00
Chris Lattner
800aad3dda
use instructionsimplify instead of a weak clone of ad-hoc folding stuff.
...
llvm-svn: 86616
2009-11-09 23:00:14 +00:00
Jim Grosbach
47e3bcf180
Update test
...
llvm-svn: 86614
2009-11-09 22:59:01 +00:00
Chris Lattner
084a1b5581
stub out a new libanalysis "instruction simplify" interface that
...
takes decimated instructions and applies identities to them. This
is pretty minimal at this point, but I plan to pull some instcombine
logic out into these and similar routines.
llvm-svn: 86613
2009-11-09 22:57:59 +00:00
Daniel Dunbar
e213db84cb
Move LangOptions, HeaderSearchOptions, and the target feature map into
...
CompilerInvocation.
llvm-svn: 86612
2009-11-09 22:46:17 +00:00
Daniel Dunbar
d673bfa6aa
Switch Target* to Target&.
...
llvm-svn: 86611
2009-11-09 22:46:09 +00:00
Daniel Dunbar
9707d8262b
Add default initializer for Sysroot ivar.
...
llvm-svn: 86610
2009-11-09 22:46:04 +00:00
Daniel Dunbar
1de7855155
Change clang-cc to expect that all inputs have the same language (so we can only construct a single LangInfo). This matches how it is used in practice (since the compiler only it invokes it for one file at a time).
...
llvm-svn: 86609
2009-11-09 22:45:57 +00:00
Daniel Dunbar
06d4716297
(llvm up) Convert clang-cc.cpp:GetLanguage to StringSwitch.
...
llvm-svn: 86608
2009-11-09 22:45:47 +00:00
Mike Stump
68ec7ee0e8
Enable the use of the new llvm objectsize intrinsic.
...
llvm-svn: 86607
2009-11-09 22:40:09 +00:00
Jeffrey Yasskin
8483f12ac5
Remove dlsym stubs, with Nate Begeman's permission.
...
llvm-svn: 86606
2009-11-09 22:34:19 +00:00
Jim Grosbach
1218b804fb
Enable dynamic stack realignment by default.
...
llvm-svn: 86604
2009-11-09 22:32:40 +00:00
Chris Lattner
2978ca7b79
stub out a new form of BasicBlock::RemovePredecessorAndSimplify which
...
simplifies instruction users of PHIs when the phi is eliminated. This
will be moved to transforms/utils after some other refactoring.
llvm-svn: 86603
2009-11-09 22:32:36 +00:00
Jim Grosbach
55d3480769
Set dynamic stack realignment to real values.
...
llvm-svn: 86602
2009-11-09 22:32:03 +00:00
Dan Gohman
a951526510
Remove an unneeded #include.
...
llvm-svn: 86601
2009-11-09 22:28:30 +00:00
Mike Stump
f04c4cdb27
Fix for 64-bit builds.
...
llvm-svn: 86600
2009-11-09 22:28:21 +00:00
Fariborz Jahanian
a44e8d85a7
Further change in a comment.
...
llvm-svn: 86599
2009-11-09 22:28:08 +00:00
Fariborz Jahanian
3fe453c48c
Removed a FIXME on nested type specifier warning.
...
llvm-svn: 86598
2009-11-09 22:25:11 +00:00
Fariborz Jahanian
b98dade25b
Changed error for nested type qualifier mismatch to
...
warning, to match gcc. It used to be warning, so
better keep it a warning (it broke a certain project).
llvm-svn: 86597
2009-11-09 22:16:37 +00:00
Douglas Gregor
4ef1d400d9
Make sure that Type::getAs<ArrayType>() (or Type::getAs<subclass of
...
ArrayType>()) does not instantiate. Update all callers that used this
unsafe feature to use the appropriate ASTContext::getAs*ArrayType method.
llvm-svn: 86596
2009-11-09 22:08:55 +00:00
Ted Kremenek
dd51f7cca2
Remove stale FIXME.
...
llvm-svn: 86595
2009-11-09 21:56:44 +00:00
Bill Wendling
787997f77e
Similar to r86588, but for Darwin this time.
...
llvm-svn: 86592
2009-11-09 21:45:26 +00:00
Douglas Gregor
8caea94c74
Make sure that we look into nested, transparent declaration contexts
...
when looking for a name within a given DeclContext. Now enumerators
will show up in code-completion results.
llvm-svn: 86591
2009-11-09 21:35:27 +00:00
Bill Wendling
7307bff420
The jump table was being generated before the end label for exception handling
...
was generated. This caused code like this:
## The asm code for the function
.section __TEXT,__const
.align 2
lJTI11_0:
LJTI11_0:
.long LBB11_16
.long LBB11_4
.long LBB11_5
.long LBB11_6
.long LBB11_7
.long LBB11_8
.long LBB11_9
.long LBB11_10
.long LBB11_11
.long LBB11_12
.long LBB11_13
.long LBB11_14
Leh_func_end11: ## <---now in the wrong section!
The `Leh_func_end11' would then end up in the wrong section, causing the
resulting EH frame information to be wrong:
__ZL11CheckRightsjPKcbRbRP6NSData.eh:
.set Lset500eh,Leh_frame_end11-Leh_frame_begin11
.long Lset500eh ; Length of Frame Information Entry
Leh_frame_begin11:
.long Leh_frame_begin11-Leh_frame_common
.long Leh_func_begin11-.
.set Lset501eh,Leh_func_end11-Leh_func_begin11
.long Lset501eh ; FDE address range
`Lset501eh' is now something huge instead of the real value.
The X86 back-end generates the jump table after the EH information is
emitted. Do the same here.
llvm-svn: 86588
2009-11-09 21:20:14 +00:00
Fariborz Jahanian
facfdd4d93
For array pointee type, get its cvr qualifier from
...
its element type. Fixes pr5432.
llvm-svn: 86587
2009-11-09 21:02:05 +00:00
Daniel Dunbar
b2eae89108
Add CompilerInvocation object, to capture all the options one needs to invoke
...
the compiler, and start flood filling it into clang-cc.
llvm-svn: 86586
2009-11-09 20:55:08 +00:00
Eli Friedman
0bf69cc7b7
Stub out a few more warning groups.
...
llvm-svn: 86585
2009-11-09 20:19:49 +00:00
Benjamin Kramer
382414d519
Fix build after r86579.
...
llvm-svn: 86584
2009-11-09 20:14:44 +00:00
Dan Gohman
2745d19287
Print "..." instead of all the uninteresting register clobbers on call
...
instructions. This makes CodeGen dumps significantly less noisy.
Example before:
BL <ga:@bar>, %R0<imp-def>, %R1<imp-def,dead>, %R2<imp-def,dead>, %R3<imp-def,dead>, %R12<imp-def,dead>, %LR<imp-def,dead>, %D0<imp-def,dead>, %D1<imp-def,dead>, %D2<imp-def,dead>, %D3<imp-def,dead>, %D4<imp-def,dead>, %D5<imp-def,dead>, %D6<imp-def,dead>, %D7<imp-def,dead>, %D16<imp-def,dead>, %D17<imp-def,dead>, %D18<imp-def,dead>, %D19<imp-def,dead>, %D20<imp-def,dead>, %D21<imp-def,dead>, %D22<imp-def,dead>, %D23<imp-def,dead>, %D24<imp-def,dead>, %D25<imp-def,dead>, %D26<imp-def,dead>, %D27<imp-def,dead>, %D28<imp-def,dead>, %D29<imp-def,dead>, %D30<imp-def,dead>, %D31<imp-def,dead>, %CPSR<imp-def,dead>, %FPSCR<imp-def,dead>
Same example after:
BL <ga:@bar>, %R0<imp-def>, %R1<imp-def,dead>, %LR<imp-def,dead>, %CPSR<imp-def,dead>, ...
llvm-svn: 86583
2009-11-09 19:38:45 +00:00
Dan Gohman
ccb4584edd
Default-addressspace null pointers don't alias anything. This allows
...
GVN to be more aggressive. Patch by Hans Wennborg! (with a comment added by me)
llvm-svn: 86582
2009-11-09 19:29:11 +00:00
Douglas Gregor
1bc688dc60
Make sure that we instantiate default function arguments for an
...
overloaded operator().
llvm-svn: 86581
2009-11-09 19:27:57 +00:00