| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
and asserts.
llvm-svn: 114843
|
| |
|
|
| |
llvm-svn: 114767
|
| |
|
|
| |
llvm-svn: 114750
|
| |
|
|
|
|
| |
doubt it but it's possible it's exposing another bug somewhere.
llvm-svn: 114681
|
| |
|
|
|
|
| |
Patch by Nathan Jeffords!
llvm-svn: 114661
|
| |
|
|
|
|
| |
conditional one.
llvm-svn: 114634
|
| |
|
|
|
|
|
|
|
|
|
|
| |
when the unconditional branch destination is the fallthrough block. The
canonicalization makes it easier to allow optimizations on DAGs to invert
conditional branches. The branch folding pass (and AnalyzeBranch) will clean up
the unnecessary unconditional branches later.
This is one of the patches leading up to disabling codegen prepare critical edge
splitting.
llvm-svn: 114630
|
| |
|
|
|
|
|
| |
lowered using a series of shifts.
Fixes <rdar://problem/8285015>.
llvm-svn: 114599
|
| |
|
|
| |
llvm-svn: 114490
|
| |
|
|
|
|
|
|
| |
that complex patterns are matched after the entire pattern has
a structural match, therefore the NodeStack isn't in a useful
state when the actual call to the matcher happens.
llvm-svn: 114489
|
| |
|
|
|
|
|
|
|
| |
current basic block then insert DBG_VALUE so that debug value of the variable is also transfered to new vreg.
Testcase is in r114476.
This fixes radar 8412415.
llvm-svn: 114478
|
| |
|
|
| |
llvm-svn: 114474
|
| |
|
|
|
|
|
|
|
| |
target-dependent, by using
the predicate to discover the number of sign bits. Enhance X86's target lowering to provide
a useful response to this query.
llvm-svn: 114473
|
| |
|
|
|
|
|
| |
matched, allow ComplexPatterns to opt into getting the parent node
of the operand being matched.
llvm-svn: 114472
|
| |
|
|
|
|
|
| |
I think I've audited all uses, so it should be dependable for address spaces,
and the pointer+offset info should also be accurate when there.
llvm-svn: 114464
|
| |
|
|
| |
llvm-svn: 114461
|
| |
|
|
|
|
| |
and store intrinsics are represented with MemIntrinsicSDNodes.
llvm-svn: 114454
|
| |
|
|
|
|
| |
MachinePointerInfo around more.
llvm-svn: 114452
|
| |
|
|
| |
llvm-svn: 114450
|
| |
|
|
|
|
| |
with an indexed load/store that has an offset in the index.
llvm-svn: 114449
|
| |
|
|
|
|
| |
SelectionDAG::getExtLoad overload, and eliminate it.
llvm-svn: 114446
|
| |
|
|
|
|
| |
getLoad overloads.
llvm-svn: 114443
|
| |
|
|
|
|
| |
with SVOffset computation.
llvm-svn: 114442
|
| |
|
|
| |
llvm-svn: 114437
|
| |
|
|
|
|
| |
no functionality change (step #1)
llvm-svn: 114436
|
| |
|
|
|
|
|
| |
pass a completely incorrect SrcValue, which would result in a miscompile with
combiner-aa.
llvm-svn: 114411
|
| |
|
|
|
|
|
| |
instead of srcvalue/offset pairs. This corrects SV info for mem
operations whose size is > 32-bits.
llvm-svn: 114401
|
| |
|
|
|
|
|
| |
MachinePointerInfo. Among other virtues, this doesn't silently truncate the
svoffset to 32-bits.
llvm-svn: 114399
|
| |
|
|
|
|
| |
MachinePointerInfo
llvm-svn: 114397
|
| |
|
|
|
|
| |
eliminating some weird "infer a frame address" logic which was dead.
llvm-svn: 114396
|
| |
|
|
| |
llvm-svn: 114395
|
| |
|
|
|
|
|
| |
MachinePointerInfo, propagating the type out a level of API. Remove
the old MachineFunction::getMachineMemOperand impl.
llvm-svn: 114393
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Therefore,
CombinerAA cannot assume that different FrameIndex's never alias, but can instead use
MachineFrameInfo to get the actual offsets of these slots and check for actual aliasing.
This fixes CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll and CodeGen/X86/tailcallstack64.ll
when CombinerAA is enabled, modulo a different register allocation sequence.
llvm-svn: 114348
|
| |
|
|
| |
llvm-svn: 114313
|
| |
|
|
|
|
|
| |
r114268 fixed the last of the blockers to enabling it. I will be monitoring
for failures.
llvm-svn: 114312
|
| |
|
|
|
|
|
|
|
|
| |
is that there is
NO path to the destination containing side effects, not that SOME path contains no side effects.
In practice, this only manifests with CombinerAA enabled, because otherwise the chain has little
to no branching, so "any" is effectively equivalent to "all".
llvm-svn: 114268
|
| |
|
|
|
|
| |
This fixes funcargs.exp regression reported by gdb testsuite.
llvm-svn: 113992
|
| |
|
|
|
|
| |
use offset available in StaticAllocaMap to emit DBG_VALUE. Right now, this has no material impact because varible info also collected using offset table maintained in machine module info.
llvm-svn: 113967
|
| |
|
|
|
|
| |
Otherwise let getRegForValue() find register for this argument.
llvm-svn: 113843
|
| |
|
|
|
|
|
|
|
|
| |
This reverts commit r113632
Conflicts:
cmake/modules/AddLLVM.cmake
llvm-svn: 113819
|
| |
|
|
| |
llvm-svn: 113771
|
| |
|
|
| |
llvm-svn: 113766
|
| |
|
|
| |
llvm-svn: 113632
|
| |
|
|
| |
llvm-svn: 113614
|
| |
|
|
|
|
|
|
|
|
|
| |
take multiple cycles to decode.
For the current if-converter clients (actually only ARM), the instructions that
are predicated on false are not nops. They would still take machine cycles to
decode. Micro-coded instructions such as LDM / STM can potentially take multiple
cycles to decode. If-converter should take treat them as non-micro-coded
simple instructions.
llvm-svn: 113570
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since mem2reg isn't run at -O0, we get a ton of reloads from the stack,
for example, before, this code:
int foo(int x, int y, int z) {
return x+y+z;
}
used to compile into:
_foo: ## @foo
subq $12, %rsp
movl %edi, 8(%rsp)
movl %esi, 4(%rsp)
movl %edx, (%rsp)
movl 8(%rsp), %edx
movl 4(%rsp), %esi
addl %edx, %esi
movl (%rsp), %edx
addl %esi, %edx
movl %edx, %eax
addq $12, %rsp
ret
Now we produce:
_foo: ## @foo
subq $12, %rsp
movl %edi, 8(%rsp)
movl %esi, 4(%rsp)
movl %edx, (%rsp)
movl 8(%rsp), %edx
addl 4(%rsp), %edx ## Folded load
addl (%rsp), %edx ## Folded load
movl %edx, %eax
addq $12, %rsp
ret
Fewer instructions and less register use = faster compiles.
llvm-svn: 113102
|
| |
|
|
|
|
|
| |
solve the root problem, but it corrects the bug in the code I added to
support legalizing in the case where the non-extended type is also legal.
llvm-svn: 112997
|
| |
|
|
| |
llvm-svn: 112864
|
| |
|
|
|
|
|
|
|
|
| |
there are clearly no stores between the load and the store. This fixes
this miscompile reported as PR7833.
This breaks the test/CodeGen/X86/narrow_op-2.ll optimization, which is
safe, but awkward to prove safe. Move it to X86's README.txt.
llvm-svn: 112861
|
| |
|
|
| |
llvm-svn: 112858
|