| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 124188
|
| |
|
|
| |
llvm-svn: 124184
|
| |
|
|
|
|
|
|
|
|
|
| |
optimized code are:
(non-negative number)+(power-of-two) != 0 -> true
and
(x | 1) != 0 -> true
Instcombine knows about the second one of course, but only does it if X|1
has only one use. These fire thousands of times in the testsuite.
llvm-svn: 124183
|
| |
|
|
|
|
|
| |
for now. It's controlled by the HasGlobalAliases variable which is not attached
to any flag yet.
llvm-svn: 124182
|
| |
|
|
|
|
| |
rather than interspersed. No functional change.
llvm-svn: 124168
|
| |
|
|
| |
llvm-svn: 124167
|
| |
|
|
| |
llvm-svn: 124151
|
| |
|
|
|
|
| |
when LSDASection is blank
llvm-svn: 124150
|
| |
|
|
| |
llvm-svn: 124142
|
| |
|
|
|
|
| |
intrinisic.
llvm-svn: 124138
|
| |
|
|
|
|
| |
rdar://problem/8893967
llvm-svn: 124137
|
| |
|
|
|
|
|
|
|
|
|
| |
with BasicAA's DecomposeGEPExpression, which recently began
using a TargetData. This fixes PR8968, though the testcase
is awkward to reduce.
Also, update several off GetUnderlyingObject's users
which happen to have a TargetData handy to pass it in.
llvm-svn: 124134
|
| |
|
|
| |
llvm-svn: 124132
|
| |
|
|
|
|
|
| |
* If the name is a single string, we remove the quotes
* If the name starts without a quote, we include any quotes in the name
llvm-svn: 124127
|
| |
|
|
| |
llvm-svn: 124126
|
| |
|
|
| |
llvm-svn: 124124
|
| |
|
|
| |
llvm-svn: 124102
|
| |
|
|
|
|
| |
code.
llvm-svn: 124100
|
| |
|
|
| |
llvm-svn: 124099
|
| |
|
|
| |
llvm-svn: 124097
|
| |
|
|
|
|
|
|
|
|
|
| |
define i32 @foo(i32 %x) nounwind readnone ssp {
entry:
%tobool = icmp eq i32 %x, 0
%tmp5 = select i1 %tobool, i32 2, i32 1
ret i32 %tmp5
}
llvm-svn: 124091
|
| |
|
|
|
|
|
|
|
|
| |
occurs because instcombine sinks loads and inserts phis. This kicks in
on such apps as 175.vpr, eon, 403.gcc, xalancbmk and a bunch of times in
spec2006 in some app that uses std::deque.
This resolves the last of rdar://7339113.
llvm-svn: 124090
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
common cases. This triggers a surprising number of times in SPEC2K6
because min/max idioms end up doing this. For example, code from the
STL ends up looking like this to SRoA:
%202 = load i64* %__old_size, align 8, !tbaa !3
%203 = load i64* %__old_size, align 8, !tbaa !3
%204 = load i64* %__n, align 8, !tbaa !3
%205 = icmp ult i64 %203, %204
%storemerge.i = select i1 %205, i64* %__n, i64* %__old_size
%206 = load i64* %storemerge.i, align 8, !tbaa !3
We can now promote both the __n and the __old_size allocas.
This addresses another chunk of rdar://7339113, poor codegen on
stringswitch.
llvm-svn: 124088
|
| |
|
|
|
|
| |
dereferencable, noticed by inspection.
llvm-svn: 124085
|
| |
|
|
| |
llvm-svn: 124082
|
| |
|
|
|
|
| |
robust against smarter optimizations, using the power of FileCheck.
llvm-svn: 124081
|
| |
|
|
| |
llvm-svn: 124079
|
| |
|
|
| |
llvm-svn: 124077
|
| |
|
|
|
|
|
|
|
|
| |
clang's -Wuninitialized-experimental warning.
While these don't look like real bugs, clang's
-Wuninitialized-experimental analysis is stricter
than GCC's, and these fixes have the benefit
of being general nice cleanups.
llvm-svn: 124073
|
| |
|
|
| |
llvm-svn: 124071
|
| |
|
|
|
|
|
|
|
|
|
|
| |
that have PHI or select uses of their element pointers. This can often happen
when instcombine sinks two loads into a successor, inserting a phi or select.
With this patch, we can scalarize the alloca, but the pinned elements are not
yet promoted. This is still a win for large aggregates where only one element
is used. This fixes rdar://8904039 and part of rdar://7339113 (poor codegen
on stringswitch).
llvm-svn: 124070
|
| |
|
|
|
|
| |
on test-suite + SPEC2000 & SPEC2006.
llvm-svn: 124068
|
| |
|
|
|
|
| |
No functionality change.
llvm-svn: 124067
|
| |
|
|
|
|
|
|
| |
handle the "Transformation preventing inst" printing,
so that -scalarrepl -debug will always print the rejected
instruction. No functionality change.
llvm-svn: 124066
|
| |
|
|
|
|
| |
X86 backend has been fixed.
llvm-svn: 124064
|
| |
|
|
| |
llvm-svn: 124062
|
| |
|
|
|
|
| |
Add support for SHT_X86_64_UNWIND.
llvm-svn: 124059
|
| |
|
|
| |
llvm-svn: 124056
|
| |
|
|
| |
llvm-svn: 124054
|
| |
|
|
|
|
| |
"make check" alone.
llvm-svn: 124046
|
| |
|
|
|
|
| |
that we can change from indirect to direct.
llvm-svn: 124045
|
| |
|
|
|
|
|
|
| |
target function.
Fixes part of rdar://8546196
llvm-svn: 124044
|
| |
|
|
|
|
| |
backend. It makes the code generated more compliant with the sparc32 ABI.
llvm-svn: 124030
|
| |
|
|
|
|
| |
-mattr=v9 is used.
llvm-svn: 124027
|
| |
|
|
|
|
| |
how they should be checked.
llvm-svn: 123999
|
| |
|
|
|
|
|
| |
Rename FLUSH to FLUSHW.
Output "ta 3" instead of a "flushw" instruction if v8 instruction set is used.
llvm-svn: 123997
|
| |
|
|
|
|
|
| |
A == B, and A > B, does not mean we can fold it to true. We still need to
check for A ? B (A unordered B).
llvm-svn: 123993
|
| |
|
|
|
|
|
|
|
|
| |
1. Fixed ARM pc adjustment.
2. Fixed dynamic-no-pic codegen
3. CSE of pc-relative load of global addresses.
It's now enabled by default for Darwin.
llvm-svn: 123991
|
| |
|
|
|
|
| |
IR (wrong PCS) and passing the wrong information down llc via the target-triple printed in IR. I've fixed this by adding the parsing of EABI into LLVM's Triple class and using it to choose the correct PCS in Clang's Tools. A Clang patch is on its way to use this infrastructure.
llvm-svn: 123990
|
| |
|
|
|
|
| |
Patch by arrowdodger!
llvm-svn: 123976
|