Jakob Stoklund Olesen
20b71e28cc
Teach MachineSinking to handle easy critical edges.
...
Sometimes it is desirable to sink instructions along a critical edge:
x = ...
if (a && b) ...
else use(x);
The 'a && b' condition creates a critical edge to the else block, but we still
want to sink the computation of x into the block. The else block is dominated by
the parent block, so we are not pushing instructions into new code paths.
llvm-svn: 101165
2010-04-13 19:06:14 +00:00
Fariborz Jahanian
dd9a259975
Turn off warning about weak_import attribute
...
on objc classes for Darwin. Radar 7839485.
llvm-svn: 101164
2010-04-13 19:02:07 +00:00
Evan Cheng
4d89dd8353
Fix test on non-x86 hosts.
...
llvm-svn: 101163
2010-04-13 18:54:04 +00:00
Evan Cheng
4ca4bc6f95
Re-apply 101075 and fix it properly. Just reuse the debug info of the branch instruction being optimized. There is no need to --I which can deref off start of the BB.
...
llvm-svn: 101162
2010-04-13 18:50:27 +00:00
Fariborz Jahanian
5e575c03b8
Removes a FIXME.
...
llvm-svn: 101161
2010-04-13 18:43:37 +00:00
Chris Lattner
6b2b064d7a
Make the disassembler respect the assembler dialect when printing instructions,
...
patch by Marius Wachtler!
llvm-svn: 101160
2010-04-13 18:41:17 +00:00
Eric Christopher
d67f66dc0c
Temporarily revert r101075, it's causing invalid iterator assertions
...
in a nightly tester.
llvm-svn: 101158
2010-04-13 18:37:58 +00:00
Fariborz Jahanian
7e9d52aaca
Variation of objc_copyStruct API generation when
...
property (atomic/nonatomic) is of aggregate type with
gc'able member objects) (NeXT runtime).
llvm-svn: 101156
2010-04-13 18:32:24 +00:00
Chris Lattner
ff0e2a36e2
Rework the ConstStructBuilder code to emit missing initializer
...
elements with explicit zero values instead of with tail padding.
On an example like this:
struct foo { int a; int b; };
struct foo fooarray[] = {
{1, 2},
{4},
};
We now lay this out as:
@fooarray = global [2 x %struct.foo] [%struct.foo { i32 1, i32 2 }, %struct.foo { i32 4, i32 0 }]
instead of as:
@fooarray = global %0 <{ %struct.foo { i32 1, i32 2 }, %1 { i32 4, [4 x i8] zeroinitializer } }>
Preserving both the struct type of the second element, but also the array type of the entire thing.
llvm-svn: 101155
2010-04-13 18:16:19 +00:00
Evan Cheng
0a2aff2d12
Teach postra machine licm to hoist more obvious invariants, e.g. instructions with no source operands.
...
llvm-svn: 101154
2010-04-13 18:16:00 +00:00
Chris Lattner
d8d760ce66
unbreak tests.
...
llvm-svn: 101153
2010-04-13 17:57:11 +00:00
Chris Lattner
cfa3e7ae6a
move a bunch of ConstStructBuilder methods out of line.
...
llvm-svn: 101152
2010-04-13 17:45:57 +00:00
Chris Lattner
7a4a29f89a
minor cleanups
...
llvm-svn: 101151
2010-04-13 17:39:09 +00:00
Chris Lattner
a06794201d
Teach HasSideEffect about InitListExprs. Not having
...
this caused us to codegen dead globals like this:
struct foo { int a; int b; };
static struct foo fooarray[] = {
{1, 2},
{4},
};
llvm-svn: 101150
2010-04-13 17:34:23 +00:00
Chris Lattner
8d269dc329
make the rewriter add a #ifndef around the #define of __attribute__.
...
Without it, there is no reason for a compiler that supports it to
emit the dead static globals that the rewriter labels attribute(used).
llvm-svn: 101149
2010-04-13 17:33:56 +00:00
Dan Gohman
8a2dae57e2
Add a few comments.
...
llvm-svn: 101148
2010-04-13 17:07:06 +00:00
Dan Gohman
9d2d053e11
Eliminate MachineBasicBlock::const_livein_iterator and make
...
MachineBasicBlock::livein_iterator a const_iterator, because
clients shouldn't ever be using the iterator interface to
mutate the livein set.
llvm-svn: 101147
2010-04-13 16:57:55 +00:00
Dan Gohman
dcacef3188
Rename MachineFrameInfo variables to MFI, for consistency with
...
the rest of CodeGen.
llvm-svn: 101146
2010-04-13 16:56:45 +00:00
Dan Gohman
6b1b1e4358
Move MachineRegisterInfo's isLiveIn and isLiveOut out of line.
...
llvm-svn: 101145
2010-04-13 16:55:37 +00:00
Dan Gohman
a1cf9fef70
Use MachineBasicBlock::isLiveIn.
...
llvm-svn: 101144
2010-04-13 16:53:51 +00:00
Dan Gohman
39305067ad
Delete an unused member variable.
...
llvm-svn: 101143
2010-04-13 16:51:39 +00:00
Dan Gohman
7ef0dc2163
Teach ScalarEvolution to simplify smax and umax when it can prove
...
that one operand is always greater than another.
llvm-svn: 101142
2010-04-13 16:51:03 +00:00
Dan Gohman
fe4b29180b
Minor code micro-optimizations.
...
llvm-svn: 101141
2010-04-13 16:49:23 +00:00
Eric Christopher
4016dcd625
Actually... return after the check for invalid input.
...
llvm-svn: 101139
2010-04-13 16:41:29 +00:00
Benjamin Kramer
55cfaa37de
BumpPtrAllocator::Reset() doesn't need to allocate anything. (Thanks, Jakob)
...
llvm-svn: 101138
2010-04-13 16:38:06 +00:00
Douglas Gregor
38ae6ab6bc
Refactor and simplify the computation of implicit conversion sequences
...
for reference binding. The code attempted to handle both the
computation of the ICS and the actual conversion, but the latter is an
anachronism: we now use InitializationSequence for that.
Sema::CheckReferenceInit is now a static function TryReferenceInit
that's only use within overload resolution, and has been simplified
slightly. It still needs to be updated per C++ [over.ics.ref], by
eliminating more of the lvalue/rvalue checks.
llvm-svn: 101136
2010-04-13 16:31:36 +00:00
Douglas Gregor
e5e775bc8e
When returning the result of a call to an object of class type, do not
...
return a NULL expression; return either an error or a proper
expression. Fixes PR6078.
llvm-svn: 101133
2010-04-13 15:50:39 +00:00
Douglas Gregor
538be4622c
During referencing binding, only consider conversion functions for
...
direct reference binding when the source and target types are not
reference-related. Fixes PR6066.
llvm-svn: 101132
2010-04-13 15:07:45 +00:00
Benjamin Kramer
5d8eb779d5
Update unittest for allocator laziness.
...
llvm-svn: 101131
2010-04-13 15:01:26 +00:00
Benjamin Kramer
5b0650bf6e
Let BumpPtrAllocator lazily allocate the first slab.
...
We have some code in llvm and clang where a BumpPtrAllocator is declared in a
class but never used in the common case. Stop wasting memory there.
llvm-svn: 101130
2010-04-13 14:41:51 +00:00
Zhongxing Xu
17b33ed0cf
Make all cases that we don't handle explicit.
...
llvm-svn: 101129
2010-04-13 13:15:19 +00:00
Zhongxing Xu
b6f02c3d67
Dispatch all C++ cast expr to VisitCast().
...
llvm-svn: 101128
2010-04-13 12:38:32 +00:00
Zhongxing Xu
7e61217d86
CFGBuilder: always add C++ member call expr as block-level expr.
...
llvm-svn: 101127
2010-04-13 09:38:01 +00:00
Owen Anderson
b516f1c6cc
Remove SCCVN from the CMake build system.
...
llvm-svn: 101125
2010-04-13 08:33:09 +00:00
John McCall
43314ab3ae
Allow classes to befriend implicitly-declared members. Fixes PR6207 for
...
members of non-templated classes.
llvm-svn: 101122
2010-04-13 07:45:41 +00:00
Zhongxing Xu
7d4bc9a106
Add a cc1 option to specify the max number of nodes the analyzer can explore.
...
llvm-svn: 101120
2010-04-13 06:44:31 +00:00
John McCall
84821e7143
Parse constructor names in friend declarations. Part of the fix for
...
PR6207.
llvm-svn: 101119
2010-04-13 06:39:49 +00:00
Chris Lattner
069711865f
checkpoint.
...
llvm-svn: 101118
2010-04-13 06:37:00 +00:00
Owen Anderson
9ed6abfe0b
SCCVN, we hardly knew ye!
...
llvm-svn: 101117
2010-04-13 05:24:08 +00:00
Chris Lattner
33154c1fc6
Fix PR6826: GraphWriter delete the generated file before "dotty" load it,
...
patch by 'ether'.
llvm-svn: 101116
2010-04-13 04:35:39 +00:00
Fariborz Jahanian
33eb59a61b
Remove this test for now until I can figure out
...
why it keeps failing on buildbot (but not for me).
llvm-svn: 101115
2010-04-13 02:16:35 +00:00
Bob Wilson
af7674cbd4
Replace r101053 with a fix for getSOImmValRotate() so that it will correctly
...
recognize all the valid rotated immediates. This fixes the disassembler
issue and will also help codegen for some unusual constant values.
llvm-svn: 101114
2010-04-13 02:11:48 +00:00
Dan Gohman
5867a56db8
Teach IndVarSimplify how to eliminate remainder operators where the
...
numerator is an induction variable. For example, with code like this:
for (i=0;i<n;++i)
x[i%n] = 0;
IndVarSimplify will now recognize that i is always less than n inside
the loop, and eliminate the remainder.
llvm-svn: 101113
2010-04-13 01:46:36 +00:00
John McCall
77e41c1cc6
Don't try to find a scope corresponding to the search DC for an unfound
...
friend declaration; this used to be important but is now just a waste of time
plus an unreasonable assertion. Fixes PR6174.
llvm-svn: 101112
2010-04-13 01:44:10 +00:00
Daniel Dunbar
d33749b4a9
VMCore: Add Type::getIntN[Ptr]Ty, which are the obvious generic forms of
...
Type::getInt{1,8,...}[Ptr]Ty, so code can consistently use the methods on Type
without occasionally needed to call IntegerType::get.
llvm-svn: 101111
2010-04-13 01:39:07 +00:00
Daniel Dunbar
e0a355af5d
IRBuilder: Add Create{Shl,LShr,And,Or,Xor} methods from uin64_t and APInt constants.
...
llvm-svn: 101110
2010-04-13 01:38:57 +00:00
Fariborz Jahanian
cb21e38dc5
Modify test to be darwin specific.
...
llvm-svn: 101109
2010-04-13 01:10:57 +00:00
Chris Lattner
dc6040b357
add frontend support for -fdata-sections and -ffunction-sections,
...
patch by Sylvere Teissier!
llvm-svn: 101108
2010-04-13 00:38:24 +00:00
Fariborz Jahanian
08b0f66d2e
Add support for objc_copyStruct to enforce
...
atomicity of aggregate properties in setter/getter
methods. wip.
llvm-svn: 101107
2010-04-13 00:38:05 +00:00
Chris Lattner
5b212a31a2
add llvm codegen support for -ffunction-sections and -fdata-sections,
...
patch by Sylvere Teissier!
llvm-svn: 101106
2010-04-13 00:36:43 +00:00