Chris Lattner
25ce280511
tidy up code.
...
llvm-svn: 123564
2011-01-16 04:37:29 +00:00
Owen Anderson
4e54efd625
Improve the safety of my globalopt enhancement by ensuring that the bitcast
...
of the stored value to the new store type is always. Also, add a testcase.
llvm-svn: 123563
2011-01-16 04:33:33 +00:00
Chris Lattner
08f43456c9
fix PR8983, a broken assertion.
...
llvm-svn: 123562
2011-01-16 03:43:53 +00:00
Venkatraman Govindaraju
1b0e2cbf3f
Implement AnalyzeBranch in Sparc Backend.
...
llvm-svn: 123561
2011-01-16 03:15:11 +00:00
Chris Lattner
218092e68e
fix PR8981, a crash trying to form a conditional inc with a floating point compare.
...
llvm-svn: 123560
2011-01-16 02:56:53 +00:00
Chris Lattner
2d186574a6
reapply my fix for PR8961 with a tweak to properly handle
...
multi-instruction sequences like calls. Many thanks to Jakob for
finding a testcase.
llvm-svn: 123559
2011-01-16 02:27:38 +00:00
Chris Lattner
8b4952fcf7
simplify this code, it is still broken but will follow up on llvm-commits.
...
llvm-svn: 123558
2011-01-16 02:05:10 +00:00
Michael J. Spencer
2ff30b84f8
Revert "Archive: Replace all internal uses of PathV1 with PathV2. The external API still uses PathV1."
...
llvm-svn: 123557
2011-01-16 01:43:22 +00:00
Chandler Carruth
ef28abefd0
Simplify a README.txt entry significantly to expose the core issue.
...
llvm-svn: 123556
2011-01-16 01:40:23 +00:00
Chris Lattner
c703334ff1
one of michael's recent patches broke this, temporarily disable
...
it so the bots go green
llvm-svn: 123555
2011-01-16 01:04:49 +00:00
Chris Lattner
1e209b87ad
remove the partial specialization pass. It is unmaintained and has bugs.
...
llvm-svn: 123554
2011-01-16 00:27:10 +00:00
Michael J. Spencer
a0acb46baa
AST/InheritViz: Remove all internal uses of PathV1.
...
llvm-svn: 123553
2011-01-15 21:43:57 +00:00
Michael J. Spencer
53dcdc7420
Archive: Fix spelling.
...
llvm-svn: 123552
2011-01-15 21:43:45 +00:00
Michael J. Spencer
a0ce763290
Archive: Replace all internal uses of PathV1 with PathV2. The external API still uses PathV1.
...
llvm-svn: 123551
2011-01-15 21:43:37 +00:00
Michael J. Spencer
8685f387eb
Support/GraphWriter: Replace all internal uses of PathV1 with PathV2. The external API still uses PathV1.
...
llvm-svn: 123550
2011-01-15 21:43:25 +00:00
Benjamin Kramer
bec03ea725
Add an assert so we don't silently miscompile ctpop for bit widths > 128.
...
llvm-svn: 123549
2011-01-15 21:19:37 +00:00
Michael J. Spencer
94b2ab3556
Support/PathV2: Add identify_magic.
...
llvm-svn: 123548
2011-01-15 20:39:36 +00:00
Benjamin Kramer
fff2517edc
Reimplement CTPOP legalization with the "best" algorithm from
...
http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel
In a silly microbenchmark on a 65 nm core2 this is 1.5x faster than the old
code in 32 bit mode and about 2x faster in 64 bit mode. It's also a lot shorter,
especially when counting 64 bit population on a 32 bit target.
I hope this is fast enough to replace Kernighan-style counting loops even when
the input is rather sparse.
llvm-svn: 123547
2011-01-15 20:30:30 +00:00
Michael J. Spencer
b587180fa7
Unittests/Support/Path: Tweak test.
...
llvm-svn: 123546
2011-01-15 18:52:49 +00:00
Michael J. Spencer
7887466adc
Support/PathV2: Implement has_magic in terms of get_magic.
...
llvm-svn: 123545
2011-01-15 18:52:41 +00:00
Michael J. Spencer
ee1699c362
Support/PathV2: Implement get_magic.
...
llvm-svn: 123544
2011-01-15 18:52:33 +00:00
Nick Lewycky
4a1ff16b29
Add missing whitespace.
...
llvm-svn: 123543
2011-01-15 18:42:52 +00:00
Ken Dyck
cc56c54889
Add toCharUnitsInBits() to simplify the many calls to CharUnits::fromQuantity() of the form CharUnits::fromQuantity(bitSize, Context.getCharWidth()).
...
llvm-svn: 123542
2011-01-15 18:38:59 +00:00
Nick Lewycky
0296a481f9
Make constmerge a two-pass algorithm so that it won't miss merging
...
opporuntities. Fixes PR8978.
llvm-svn: 123541
2011-01-15 18:14:21 +00:00
Oscar Fuentes
25ac830e72
Make config.h.cmake similar to config.h.in
...
Patch by arrowdodger!
llvm-svn: 123539
2011-01-15 13:35:37 +00:00
Francois Pichet
07a2e14f44
Unbreak the MSVC build again: replace bzero by memset.
...
llvm-svn: 123538
2011-01-15 13:27:47 +00:00
Benjamin Kramer
ed5f2e504e
Try to unbreak selfhost.
...
llvm-svn: 123537
2011-01-15 11:25:34 +00:00
Nick Lewycky
540f9536c8
Add a cache that protects mergefunc's internals from more surprises in DenseSet.
...
Also, replace tabs with spaces. Yes, it's 2011.
llvm-svn: 123535
2011-01-15 10:16:23 +00:00
Nick Lewycky
367f98f000
Teach LazyValueInfo that allocas aren't NULL. Over all of llvm-test, this saves
...
half a million non-local queries, each of which would otherwise have triggered a
linear scan over a basic block.
Also fix a fixme for memory intrinsics which dereference pointers. With this,
we prove that a pointer is non-null because it was dereferenced by an intrinsic
112 times in llvm-test.
llvm-svn: 123533
2011-01-15 09:16:12 +00:00
Rafael Espindola
facb7d0ade
Also set unnamed_addr on declarations.
...
llvm-svn: 123531
2011-01-15 08:23:14 +00:00
Rafael Espindola
f1ed781aea
Add a clarification about merging constants with and without unnamed_addr.
...
llvm-svn: 123530
2011-01-15 08:20:57 +00:00
Rafael Espindola
489e505adf
Allow unnamed_addr on declarations.
...
llvm-svn: 123529
2011-01-15 08:15:00 +00:00
Chris Lattner
af26390790
temporarily revert r123526. While working on a follow-on patch I
...
realize that ConstantFoldTerminator doesn't preserve dominfo.
llvm-svn: 123527
2011-01-15 07:51:19 +00:00
Chris Lattner
8df83c4a24
fix rdar://8785296 - -fcatch-undefined-behavior generates inefficient code
...
The basic issue is that isel (very reasonably!) expects conditional branches
to be folded, so CGP leaving around a bunch dead computation feeding
conditional branches isn't such a good idea. Just fold branches on constants
into unconditional branches.
llvm-svn: 123526
2011-01-15 07:36:13 +00:00
Chris Lattner
ee588defc6
simplify code, no functionality change.
...
llvm-svn: 123525
2011-01-15 07:29:01 +00:00
Chris Lattner
1b93be501d
Now that instruction optzns can update the iterator as they go, we can
...
have objectsize folding recursively simplify away their result when it
folds. It is important to catch this here, because otherwise we won't
eliminate the cross-block values at isel and other times.
llvm-svn: 123524
2011-01-15 07:25:29 +00:00
Chris Lattner
7a2771440f
make the current instruction iterator an ivar, allowing xforms that
...
potentially invalidate it (like inline asm lowering) to be sunk into
their proper place, cleaning up a ton of code.
llvm-svn: 123523
2011-01-15 07:14:54 +00:00
Chris Lattner
008c0a4a68
clean up some dead code around __has_include() processing code identified by the ted-o-matic.
...
rdar://8867482
llvm-svn: 123522
2011-01-15 06:57:04 +00:00
Douglas Gregor
5590be0491
Introduce a new kind of TemplateName that captures a substituted
...
template template parameter pack that cannot be fully expanded because
its enclosing pack expansion could not be expanded. This form of
TemplateName plays the same role as SubstTemplateTypeParmPackType and
SubstNonTypeTemplateParmPackExpr do for template type parameter packs
and non-type template parameter packs, respectively.
We should now handle these multi-level pack expansion substitutions
anywhere. The largest remaining gap in our variadic-templates support
is that we cannot cope with non-type template parameter packs whose
type is a pack expansion.
llvm-svn: 123521
2011-01-15 06:45:20 +00:00
Chris Lattner
9c10d587f6
implement an instcombine xform that canonicalizes casts outside of and-with-constant operations.
...
This fixes rdar://8808586 which observed that we used to compile:
union xy {
struct x { _Bool b[15]; } x;
__attribute__((packed))
struct y {
__attribute__((packed)) unsigned long b0to7;
__attribute__((packed)) unsigned int b8to11;
__attribute__((packed)) unsigned short b12to13;
__attribute__((packed)) unsigned char b14;
} y;
};
struct x
foo(union xy *xy)
{
return xy->x;
}
into:
_foo: ## @foo
movq (%rdi), %rax
movabsq $1095216660480, %rcx ## imm = 0xFF00000000
andq %rax, %rcx
movabsq $-72057594037927936, %rdx ## imm = 0xFF00000000000000
andq %rax, %rdx
movzbl %al, %esi
orq %rdx, %rsi
movq %rax, %rdx
andq $65280, %rdx ## imm = 0xFF00
orq %rsi, %rdx
movq %rax, %rsi
andq $16711680, %rsi ## imm = 0xFF0000
orq %rdx, %rsi
movl %eax, %edx
andl $-16777216, %edx ## imm = 0xFFFFFFFFFF000000
orq %rsi, %rdx
orq %rcx, %rdx
movabsq $280375465082880, %rcx ## imm = 0xFF0000000000
movq %rax, %rsi
andq %rcx, %rsi
orq %rdx, %rsi
movabsq $71776119061217280, %r8 ## imm = 0xFF000000000000
andq %r8, %rax
orq %rsi, %rax
movzwl 12(%rdi), %edx
movzbl 14(%rdi), %esi
shlq $16, %rsi
orl %edx, %esi
movq %rsi, %r9
shlq $32, %r9
movl 8(%rdi), %edx
orq %r9, %rdx
andq %rdx, %rcx
movzbl %sil, %esi
shlq $32, %rsi
orq %rcx, %rsi
movl %edx, %ecx
andl $-16777216, %ecx ## imm = 0xFFFFFFFFFF000000
orq %rsi, %rcx
movq %rdx, %rsi
andq $16711680, %rsi ## imm = 0xFF0000
orq %rcx, %rsi
movq %rdx, %rcx
andq $65280, %rcx ## imm = 0xFF00
orq %rsi, %rcx
movzbl %dl, %esi
orq %rcx, %rsi
andq %r8, %rdx
orq %rsi, %rdx
ret
We now compile this into:
_foo: ## @foo
## BB#0: ## %entry
movzwl 12(%rdi), %eax
movzbl 14(%rdi), %ecx
shlq $16, %rcx
orl %eax, %ecx
shlq $32, %rcx
movl 8(%rdi), %edx
orq %rcx, %rdx
movq (%rdi), %rax
ret
A small improvement :-)
llvm-svn: 123520
2011-01-15 06:32:33 +00:00
Chris Lattner
c23ca1f217
fix typo
...
llvm-svn: 123519
2011-01-15 06:27:35 +00:00
Chris Lattner
76580f0ec3
Fix m_Not and m_Neg to not match random ConstantInt's. Before
...
these would try hard to match constants by inverting the bits
and recursively matching. There are two problems with this:
1) some patterns would match when we didn't want them to (theoretical)
2) this is insanely expensive to do, and most often pointless.
This was apparently useful in just 2 instcombine cases, which I
added code to handle explicitly. This change speeds up 'opt'
time on 176.gcc by 1% and produces bitwise identical code.
llvm-svn: 123518
2011-01-15 05:52:27 +00:00
Chris Lattner
e20dd530d0
one more instcombine variant that is needed to work with future changes,
...
no functionality change currently.
llvm-svn: 123517
2011-01-15 05:50:18 +00:00
Chris Lattner
497459d5fd
fix typo
...
llvm-svn: 123516
2011-01-15 05:42:47 +00:00
Chris Lattner
f3c4eefff8
Catch ~x < cst just like ~x < ~y, we currently handle this through
...
means that are about to disappear.
llvm-svn: 123515
2011-01-15 05:41:33 +00:00
Chris Lattner
311aa63c87
reduce indentation
...
llvm-svn: 123514
2011-01-15 05:40:29 +00:00
Greg Clayton
45eacff2ad
lldb-41 and debugserver-126 are set in the Xcode projects.
...
llvm-svn: 123513
2011-01-15 03:06:23 +00:00
Ted Kremenek
b749a6d62a
Add initial prototype for implementation of
...
-Wuninitialized based on CFG dataflow analysis. WIP.
llvm-svn: 123512
2011-01-15 02:58:47 +00:00
Ted Kremenek
688b674087
Add const version if CFG::isBlkExpr().
...
llvm-svn: 123511
2011-01-15 02:58:42 +00:00
Argyrios Kyrtzidis
a88942ad9c
Store/retrieve -fshort-enums for PCH, fixes rdar://8854933.
...
llvm-svn: 123510
2011-01-15 02:56:16 +00:00