| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
code that rounded up and capped the size.
llvm-svn: 62958
|
| |
|
|
| |
llvm-svn: 62956
|
| |
|
|
| |
llvm-svn: 62955
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instruction are killed, but the first operand has a use before and after the def, commute if the second operand does not suffer from the same issue.
%reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1
%reg1029<def> = MOV8rr %reg1028
%reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead>
insert => %reg1030<def> = MOV8rr %reg1028
%reg1030<def> = ADD8rr %reg1028<kill>, %reg1029<kill>, %EFLAGS<imp-def,dead>
In this case, it might not be possible to coalesce the second MOV8rr
instruction if the first one is coalesced. So it would be profitable to
commute it:
%reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1
%reg1029<def> = MOV8rr %reg1028
%reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead>
insert => %reg1030<def> = MOV8rr %reg1029
%reg1030<def> = ADD8rr %reg1029<kill>, %reg1028<kill>, %EFLAGS<imp-def,dead>
llvm-svn: 62954
|
| |
|
|
| |
llvm-svn: 62940
|
| |
|
|
|
|
|
| |
more accurate change loses more than it gains on
benchmarks.
llvm-svn: 62938
|
| |
|
|
| |
llvm-svn: 62925
|
| |
|
|
|
|
| |
Also it was an empty struct, not a void after all.
llvm-svn: 62920
|
| |
|
|
|
|
|
| |
Thus we need to check whether the struct is empty before trying to index into
it. This fixes PR3381.
llvm-svn: 62918
|
| |
|
|
| |
llvm-svn: 62917
|
| |
|
|
|
|
| |
Little practical effect.
llvm-svn: 62908
|
| |
|
|
|
|
|
| |
handling the case in Transforms/InstCombine/cast-store-gep.ll, which
is a heavily reduced testcase from Clang on x86-64.
llvm-svn: 62904
|
| |
|
|
| |
llvm-svn: 62893
|
| |
|
|
|
|
|
|
|
|
|
|
| |
DW_AT_APPLE_flags.
DW_AT_APPLE_optimized flag is set when a compile_unit is optimized. The debugger takes advantage of this information some way.
DW_AT_APPLE_flags encodes command line options when certain env. variable is set. This is used by build engineers to track various gcc command lines used by by a project, irrespective of whether the project used makefile, Xcode or something else.
llvm-gcc patch is next.
llvm-svn: 62888
|
| |
|
|
| |
llvm-svn: 62887
|
| |
|
|
| |
llvm-svn: 62877
|
| |
|
|
|
|
|
|
|
| |
There is now a direct way from value-use-iterator to incoming block in PHINode's API.
This way we avoid the iterator->index->iterator trip, and especially the costly
getOperandNo() invocation. Additionally there is now an assertion that the iterator
really refers to one of the PHI's Uses.
llvm-svn: 62869
|
| |
|
|
|
|
| |
does not cause the owned module to be fully materialized.
llvm-svn: 62864
|
| |
|
|
| |
llvm-svn: 62861
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
testcase from PR3376, and in fact is sufficient to completely
avoid the problem in that testcase.
There's an underlying problem though; TLI.isOperationLegal
considers Custom to be Legal, which might be ok in some
cases, but that's what DAGCombiner is using in many places
to test if something is legal when LegalOperations is true.
When DAGCombiner is running after legalize, this isn't
sufficient. I'll address this in a separate commit.
llvm-svn: 62860
|
| |
|
|
|
|
| |
With this, sqlite3 now passes.
llvm-svn: 62839
|
| |
|
|
|
|
|
|
|
| |
This avoids using a dangling pointer.
Reset NumSortedEntries after restoring Cache to avoid extraneous sorts.
This fixes the reduced sqlite3 testcase, but apparently not the whole app.
llvm-svn: 62838
|
| |
|
|
|
|
| |
restrictive register class.
llvm-svn: 62837
|
| |
|
|
|
|
|
|
|
|
| |
restores that are just
going to be re-spilled again.
This also helps performance. Pre-alloc-splitting now seems to be an overall win on SPEC.
llvm-svn: 62834
|
| |
|
|
| |
llvm-svn: 62832
|
| |
|
|
| |
llvm-svn: 62828
|
| |
|
|
| |
llvm-svn: 62827
|
| |
|
|
|
|
| |
when there are multiple iterations of the loop. This fixes PR3375.
llvm-svn: 62822
|
| |
|
|
| |
llvm-svn: 62821
|
| |
|
|
|
|
| |
compatibility with VC++. Patch by Max Burke!
llvm-svn: 62813
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to "C ^ 1" is only valid when C is known to be either 0 or 1. Most of the
similar foldings in this function only handle "i1" types, but this one appears
intentionally written to handle larger integer types. If C has an integer
type larger than "i1", this needs to check if the high bits of a boolean
are known to be zero. I also changed the comment to describe this folding as
"C ^ 1" instead of "~C", since that is what the code does and since the latter
would only be valid for "i1" types. The good news is that most LLVM targets
use TargetLowering::ZeroOrOneBooleanContent so this change will not disable
the optimization; the bad news is that I've been unable to come up with a
testcase to demonstrate the problem.
I have also removed a "FIXME" comment for folding "select C, X, 0" to "C & X",
since the code looks correct to me. It could be made more aggressive by not
limiting the type to "i1", but that would then require checking for
TargetLowering::ZeroOrNegativeOneBooleanContent. Similar changes could be
done for the other SELECT foldings, but it was decided to be not worth the
trouble and complexity (see e.g., r44663).
llvm-svn: 62790
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Simplify x+0 to x in unsafe-fp-math mode. This avoids a bunch of
redundant work in many cases, because in unsafe-fp-math mode,
ISD::FADD with a constant is considered free to negate, so the
DAGCombiner often negates x+0 to -0-x thinking it's free, when
in reality the end result is -x, which is more expensive than x.
Also, combine x*0 to 0.
This fixes PR3374.
llvm-svn: 62789
|
| |
|
|
|
|
| |
of an instruction
llvm-svn: 62788
|
| |
|
|
| |
llvm-svn: 62777
|
| |
|
|
| |
llvm-svn: 62776
|
| |
|
|
|
|
|
| |
corresponding to the "not" and "vnot" PatFrags. Use the new method
in some places where it seems appropriate.
llvm-svn: 62768
|
| |
|
|
| |
llvm-svn: 62763
|
| |
|
|
|
|
| |
SuperRegClasses. These are not necessary. Also eliminate getSubRegisterRegClass and getSuperRegisterRegClass. These are slow and their results can change if register file names change. Just use TargetLowering::getRegClassFor() to get the right TargetRegisterClass instead.
llvm-svn: 62762
|
| |
|
|
| |
llvm-svn: 62761
|
| |
|
|
| |
llvm-svn: 62760
|
| |
|
|
|
|
|
|
| |
analyses could be run without the caches properly sorted. This
can fix all sorts of weirdness. Many thanks to Bill for coming
up with the 'issorted' verification idea.
llvm-svn: 62757
|
| |
|
|
|
|
| |
to be supported in the JIT.
llvm-svn: 62730
|
| |
|
|
|
|
|
|
|
| |
ASCII IR; loading and storing these can change the
bits of NaNs on some hosts. Remove or add warnings
at a few other places using host floating point;
this is a bad thing to do in general.
llvm-svn: 62712
|
| |
|
|
| |
llvm-svn: 62710
|
| |
|
|
| |
llvm-svn: 62699
|
| |
|
|
|
|
| |
PR3364
llvm-svn: 62697
|
| |
|
|
|
|
| |
compatibility with cygwin. Patch by Jay Foad!
llvm-svn: 62695
|
| |
|
|
|
|
|
|
| |
special cases after producing the new reduced-width load, because the
new load already has the needed adjustments built into it. This fixes
several bugs due to the special cases, including PR3317.
llvm-svn: 62692
|
| |
|
|
|
|
|
| |
we want to clear %ah to zero before a division, just use a
zero-extending mov to %al. This fixes PR3366.
llvm-svn: 62691
|
| |
|
|
| |
llvm-svn: 62688
|