Eli Friedman
1ff1d1f1bc
Duncan pointed out that if the alignment isn't explicitly specified, it defaults to the ABI alignment. Given that, make this code a bit more aggressive in such cases.
...
llvm-svn: 151584
2012-02-27 23:16:46 +00:00
Eli Friedman
15f56db6c0
Teach BasicAA about the LLVM IR rules that allow reading past the end of an object given sufficient alignment. Fixes PR12098.
...
llvm-svn: 151553
2012-02-27 20:46:07 +00:00
Rafael Espindola
2d9b864afe
Fix this assert. IP can point to an instruction with strange dominance
...
properties (invoke). Just assert that the instruction we return dominates
the insertion point.
llvm-svn: 151511
2012-02-27 02:13:03 +00:00
Rafael Espindola
c333947449
Don't call dominates on unreachable instructions. Should fix the dragonegg
...
build. Testcase is still reducing.
llvm-svn: 151474
2012-02-26 05:30:08 +00:00
Rafael Espindola
137548bb3e
And update the comment...
...
llvm-svn: 151472
2012-02-26 02:36:56 +00:00
Rafael Espindola
e63adef174
Enable the assert that got all this dominator work started.
...
llvm-svn: 151471
2012-02-26 02:29:18 +00:00
Rafael Espindola
34b7c064cb
Change the implementation of dominates(inst, inst) to one based on what the
...
verifier does. This correctly handles invoke.
Thanks to Duncan, Andrew and Chris for the comments.
Thanks to Joerg for the early testing.
llvm-svn: 151469
2012-02-26 02:19:19 +00:00
Nick Lewycky
a93c874757
Reinstate the optimization from r151449 with a fix to not turn 'gep %x' into
...
'gep null' when the icmp predicate is unsigned (or is signed without inbounds).
llvm-svn: 151467
2012-02-26 02:09:49 +00:00
Rafael Espindola
d9e654ca63
Don't call dominates on unreachable instructions.
...
llvm-svn: 151466
2012-02-26 01:50:14 +00:00
Nick Lewycky
849715d31f
Roll these back to r151448 until I figure out how they're breaking
...
MultiSource/Applications/lua.
llvm-svn: 151463
2012-02-25 23:01:19 +00:00
Nick Lewycky
1636c6eaef
An argument and a local identified object (eg. a noalias call) could turn out
...
equal if both are null. In the test, scope type %t and global @y by adding a
'gep' prefix to them.
llvm-svn: 151452
2012-02-25 20:19:07 +00:00
Nick Lewycky
808d0e3fa7
Fix five-letter typo in comment.
...
llvm-svn: 151450
2012-02-25 19:12:58 +00:00
Nick Lewycky
94be1c7d95
Teach instsimplify to be more aggressive when analyzing comparisons of pointers
...
by using llvm::isIdentifiedObject. Also teach it to handle GEPs that have
the same base pointer and constant operands. Fixes PR11238!
llvm-svn: 151449
2012-02-25 19:07:42 +00:00
Nick Lewycky
dce2cfc335
Move isKnownNonNull from private implementation detail of BasicAA to a public
...
function that others can use, next to llvm::isIdentifiedObject.
llvm-svn: 151446
2012-02-25 10:56:28 +00:00
Chris Lattner
b01936f21a
fix PR12075, a regression in a recent transform I added. In unreachable code, gep chains can be infinite. Just like "stripPointerCasts", use a set to keep track of visited instructions so we don't recurse infinitely.
...
llvm-svn: 151383
2012-02-24 19:01:58 +00:00
Rafael Espindola
c378c75761
Fix typo.
...
llvm-svn: 151238
2012-02-23 05:38:51 +00:00
Chad Rosier
3703a1917a
Remove extra semi-colons.
...
llvm-svn: 151169
2012-02-22 17:25:00 +00:00
Rafael Espindola
4f3e648dd0
Improve comment. Thanks for Andrew for the suggestion.
...
llvm-svn: 151127
2012-02-22 03:44:46 +00:00
Rafael Espindola
23cd372dbf
Semantically revert 151015. Add a comment on why we should be able to assert
...
the dominance once the dominates method is fixed and why we can use the builder's
insertion point.
Fixes pr12048.
llvm-svn: 151125
2012-02-22 03:21:39 +00:00
Rafael Espindola
8d727cc0cb
s/the the/the/
...
llvm-svn: 151079
2012-02-21 19:27:16 +00:00
Rafael Espindola
8ef9503d71
Use more idiomatic assert.
...
llvm-svn: 151026
2012-02-21 03:51:14 +00:00
Rafael Espindola
aec58a4177
Avoid warning on non assert builds.
...
llvm-svn: 151025
2012-02-21 03:48:30 +00:00
Rafael Espindola
232a730f45
It turns out that with the current scev organization ReuseOrCreateCast cannot
...
know where users will be added. Because of this, it cannot use
Builder.GetInsertPoint at all.
This patch
* removes the FIXME about adding the assert.
* adds a comment explaining hy we don't have one.
* removes a broken logic that only works for some callers and is not needed
since r150884.
* adds an assert to caller that would have caught the bug fixed by r150884.
llvm-svn: 151015
2012-02-21 01:19:51 +00:00
Eric Christopher
742c530fa0
Make this a bit prettier and more obvious when a derived type isn't
...
derived from anything.
llvm-svn: 150975
2012-02-20 18:04:39 +00:00
Eric Christopher
69a0eb9258
If a derived type is also a composite type, print that information
...
too.
llvm-svn: 150974
2012-02-20 18:04:35 +00:00
Eric Christopher
ed41b1f1ef
Add support for runtime languages on our forward declarations.
...
llvm-svn: 150973
2012-02-20 18:04:14 +00:00
Chris Lattner
50ad7c3f54
fold comparisons of gep'd alloca points with null to false,
...
implementing PR12013. We now compile the testcase to:
__Z4testv: ## @_Z4testv
## BB#0: ## %_ZN4llvm15SmallVectorImplIiE9push_backERKi.exit
pushq %rbx
subq $64, %rsp
leaq 32(%rsp), %rbx
movq %rbx, (%rsp)
leaq 64(%rsp), %rax
movq %rax, 16(%rsp)
movl $1, 32(%rsp)
leaq 36(%rsp), %rax
movq %rax, 8(%rsp)
leaq (%rsp), %rdi
callq __Z1gRN4llvm11SmallVectorIiLj8EEE
movq (%rsp), %rdi
cmpq %rbx, %rdi
je LBB0_2
## BB#1:
callq _free
LBB0_2: ## %_ZN4llvm11SmallVectorIiLj8EED1Ev.exit
addq $64, %rsp
popq %rbx
ret
instead of:
__Z4testv: ## @_Z4testv
## BB#0:
pushq %rbx
subq $64, %rsp
xorl %eax, %eax
leaq (%rsp), %rbx
addq $32, %rbx
movq %rbx, (%rsp)
movq %rbx, 8(%rsp)
leaq 64(%rsp), %rcx
movq %rcx, 16(%rsp)
je LBB0_2
## BB#1:
movl $1, 32(%rsp)
movq %rbx, %rax
LBB0_2: ## %_ZN4llvm15SmallVectorImplIiE9push_backERKi.exit
addq $4, %rax
movq %rax, 8(%rsp)
leaq (%rsp), %rdi
callq __Z1gRN4llvm11SmallVectorIiLj8EEE
movq (%rsp), %rdi
cmpq %rbx, %rdi
je LBB0_4
## BB#3:
callq _free
LBB0_4: ## %_ZN4llvm11SmallVectorIiLj8EED1Ev.exit
addq $64, %rsp
popq %rbx
ret
This doesn't shrink clang noticably though.
llvm-svn: 150944
2012-02-20 00:42:49 +00:00
Rafael Espindola
64fe8ada6e
Temporarily disable this assert. Looks like it found a similar issue when
...
building bullet.
llvm-svn: 150885
2012-02-18 17:51:43 +00:00
Rafael Espindola
5154b9bedb
Don't skip debug instructions when looking for the insertion point of
...
the cast. If we do, we can end up with
inst1
--------------- < Insertion point
dbg inst
new inst
instead of the desired
inst1
new inst
--------------- < Insertion point
dbg inst
Another option would be for InsertNoopCastOfTo (or its callers) to move the
insertion point and we would end up with
inst1
dbg inst
new inst
--------------- < Insertion point
but that complicates the callers. This fixes PR12018 (and firefox's build).
llvm-svn: 150884
2012-02-18 17:22:58 +00:00
Eli Friedman
be89455c98
Fix a rather nasty regression from r150690: LHS != RHS does not imply LHS->stripPointerCasts() != RHS->stripPointerCasts().
...
llvm-svn: 150863
2012-02-18 03:29:25 +00:00
Dan Gohman
eb02ab2f74
Remove a comment about an alternative approach that wouldn't
...
actually work, at least as described. LLVM Metadata is not
intended to suppress LLVM IR rules, as it can be stripped at
any time.
llvm-svn: 150821
2012-02-17 18:33:38 +00:00
Eric Christopher
61e7e5c8c9
Typo in variable name.
...
llvm-svn: 150796
2012-02-17 07:08:46 +00:00
Benjamin Kramer
3bef0c77d1
Revert "InstSimplify: Strip pointer casts early."
...
Turns out this isn't safe, because the code below depends on LHS and RHS having
the same type.
llvm-svn: 150695
2012-02-16 15:19:59 +00:00
Benjamin Kramer
0911ace9f3
InstSimplify: Strip pointer casts early.
...
llvm-svn: 150694
2012-02-16 15:03:04 +00:00
Benjamin Kramer
8c809e592f
InstSimplify: Ignore pointer casts when constant folding compares between pointers.
...
llvm-svn: 150690
2012-02-16 13:49:39 +00:00
Hal Finkel
485162e321
Have AliasSet::aliasesUnknownInst use pointer TBAA info when available
...
llvm-svn: 150249
2012-02-10 15:52:39 +00:00
Duncan Sands
931ce8ee15
Fix PR11948: the result type of an icmp may be a vector of boolean -
...
don't assume it is a boolean.
llvm-svn: 150247
2012-02-10 14:31:24 +00:00
Eric Christopher
4330499af4
Add support for a temporary forward decl type. We want this so we
...
can rauw forward declarations if we decide to emit the full type.
Part of rdar://10809898
llvm-svn: 150024
2012-02-08 00:22:26 +00:00
Devang Patel
5b37f2548b
Remove tabs.
...
llvm-svn: 150022
2012-02-08 00:17:07 +00:00
Craig Topper
639b152ca5
Convert assert(0) to llvm_unreachable
...
llvm-svn: 149967
2012-02-07 05:05:23 +00:00
Kostya Serebryany
f4be131943
The patch resolves the conflict between AddressSanitizer and load widening (GVN).
...
The problem initially reported by Mozilla folks (http://code.google.com/p/address-sanitizer/issues/detail?id=20 ),
but it also prevents us from enabling LLVM bootstrap with AddressSanitizer.
llvm-svn: 149925
2012-02-06 22:48:56 +00:00
Chris Lattner
7a6bd0185e
Remove some dead code and tidy things up now that vectors use ConstantDataVector
...
instead of always using ConstantVector.
llvm-svn: 149912
2012-02-06 21:56:39 +00:00
Bill Wendling
8c63e349bc
[unwind removal] Remove all of the code for the dead 'unwind' instruction. There
...
were no 'unwind' instructions being generated before this, so this is in effect
a no-op.
llvm-svn: 149906
2012-02-06 21:44:22 +00:00
Bill Wendling
4e92f798ff
[unwind removal] We no longer have 'unwind' instructions being generated, so
...
remove the code that handles them.
llvm-svn: 149901
2012-02-06 21:16:41 +00:00
Devang Patel
864da4b549
DebugInfo: Provide a new hook to encode relationship between a property and an ivar.
...
llvm-svn: 149874
2012-02-06 17:49:43 +00:00
Duncan Sands
cc472eec96
Persuade GCC that there is nothing worth warning about here (there isn't).
...
llvm-svn: 149834
2012-02-05 14:20:11 +00:00
Chris Lattner
9782adedd7
reapply the patches reverted in r149470 that reenable ConstantDataArray,
...
but with a critical fix to the SelectionDAG code that optimizes copies
from strings into immediate stores: the previous code was stopping reading
string data at the first nul. Address this by adding a new argument to
llvm::getConstantStringInfo, preserving the behavior before the patch.
llvm-svn: 149800
2012-02-05 02:29:43 +00:00
Qirun Zhang
78cd86ecbf
remove the blank line from previous ci.
...
llvm-svn: 149758
2012-02-04 03:18:47 +00:00
Qirun Zhang
ea06b61d0c
test commit.
...
add a blank line.
llvm-svn: 149757
2012-02-04 03:15:26 +00:00
Devang Patel
7280b69925
Introduce DIObjCProperty. This will be used to encode objective-c property.
...
llvm-svn: 149732
2012-02-04 00:59:25 +00:00