| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 134116
|
|
|
|
|
|
|
|
| |
sink them into MC layer.
- Added MCInstrInfo, which captures the tablegen generated static data. Chang
TargetInstrInfo so it's based off MCInstrInfo.
llvm-svn: 134021
|
|
|
|
|
|
| |
at top of basic block and do not have debug location. This may misguide debugger while entering the basic block and sometimes debugger provides semi useful view of current location to developer by picking up previous known location as current location. Assign a sensible location to the first instruction in a basic block, if it does not have one location derived from source file, so that debugger can provide meaningful user experience to developers in edge cases.
llvm-svn: 133953
|
|
|
|
|
|
|
|
| |
BranchProbabilityInfo (expect setEdgeWeight which is not available here).
Branch Weights are kept in MachineBasicBlocks. To turn off this analysis
set -use-mbpi=false.
llvm-svn: 133184
|
|
|
|
| |
llvm-svn: 132087
|
|
|
|
|
|
|
|
| |
end of function.
Patch by Micah Villmow
llvm-svn: 131908
|
|
|
|
|
|
|
| |
similarly for stores. Now "make check" passes with the MachineVerifier forced
on with the VerifyCoalescing option!
llvm-svn: 131705
|
|
|
|
|
|
| |
terminators into account; since there are many fewer isel misses with recent changes, misses caused by terminators are more significant.
llvm-svn: 131502
|
|
|
|
| |
llvm-svn: 131430
|
|
|
|
|
|
| |
misses.
llvm-svn: 131426
|
|
|
|
|
|
| |
corrupted when setjmp returns again.
llvm-svn: 131399
|
|
|
|
| |
llvm-svn: 131008
|
|
|
|
|
|
| |
functionality change intended.
llvm-svn: 130926
|
|
|
|
|
|
|
|
|
|
|
| |
fix bugs exposed by the gcc dejagnu testsuite:
1. The load may actually be used by a dead instruction, which
would cause an assert.
2. The load may not be used by the current chain of instructions,
and we could move it past a side-effecting instruction. Change
how we process uses to define the problem away.
llvm-svn: 130018
|
|
|
|
|
|
| |
which broke a couple GCC test suite tests at -O0.
llvm-svn: 129914
|
|
|
|
|
|
| |
unnecessary work where possible.
llvm-svn: 129763
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
less trivial things) into a dummy lea. Before we generated:
_test: ## @test
movq _G@GOTPCREL(%rip), %rax
leaq (%rax), %rax
ret
now we produce:
_test: ## @test
movq _G@GOTPCREL(%rip), %rax
ret
This is part of rdar://9289558
llvm-svn: 129662
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The basic issue here is that bottom-up isel is matching the branch
and compare, and was failing to fold the load into the branch/compare
combo. Fixing this (by allowing folding into any instruction of a
sequence that is selected) allows us to produce things like:
cmpb $0, 52(%rax)
je LBB4_2
instead of:
movb 52(%rax), %cl
cmpb $0, %cl
je LBB4_2
This makes the generated -O0 code run a bit faster, but also speeds up
compile time by putting less pressure on the register allocator and
generating less code.
This was one of the biggest classes of missing load folding. Implementing
this shrinks 176.gcc's c-decl.s (as a random example) by about 4% in (verbose-asm)
line count.
llvm-svn: 129656
|
|
|
|
|
|
|
| |
which don't need to check for falling off the end of a block *and* end of phi
nodes, since terminators are never phis.
llvm-svn: 129655
|
|
|
|
|
|
|
|
| |
I'm tired of doing this manually for each checkout.
If anyone knows a better way debug isel for non-trivial tests feel
free to revert and let me know how to do it.
llvm-svn: 128132
|
|
|
|
| |
llvm-svn: 126733
|
|
|
|
| |
llvm-svn: 126731
|
|
|
|
|
|
|
| |
registers at phis. This enables us to eliminate a lot of pointless zexts during
the DAGCombine phase. This fixes <rdar://problem/8760114>.
llvm-svn: 126380
|
|
|
|
|
|
| |
a block is visited before all of its predecessors.
llvm-svn: 126378
|
|
|
|
| |
llvm-svn: 126377
|
|
|
|
|
|
| |
and make the actual map private.
llvm-svn: 126376
|
|
|
|
|
|
| |
allows for the information propagated across basic blocks to be merged at phis.
llvm-svn: 126375
|
|
|
|
| |
llvm-svn: 126185
|
|
|
|
|
|
|
|
|
| |
registers
at phis. This enables us to eliminate a lot of pointless zexts during the DAGCombine
phase. This fixes <rdar://problem/8760114>.
llvm-svn: 126170
|
|
|
|
|
|
| |
allows for the information propagated across basic blocks to be merged at phis.
llvm-svn: 126169
|
|
|
|
|
|
|
|
|
|
|
| |
LiveIns."
In other words, do not keep track of argument's location. The debugger (gdb) is not prepared to see line table entries for arguments. For the debugger, "second" line table entry marks beginning of function body.
This requires some coordination with debugger to get this working.
- The debugger needs to be aware of prolog_end attribute attached with line table entries.
- The compiler needs to accurately mark prolog_end in line table entries (at -O0 and at -O1+)
llvm-svn: 126155
|
|
|
|
| |
llvm-svn: 124611
|
|
|
|
|
|
|
| |
multi-instruction sequences like calls. Many thanks to Jakob for
finding a testcase.
llvm-svn: 123559
|
|
|
|
|
|
| |
comments.
llvm-svn: 123479
|
|
|
|
|
|
| |
they should go *before* the new instruction not after it.
llvm-svn: 123420
|
|
|
|
|
|
| |
TargetRegisterInfo::FirstVirtualRegister.
llvm-svn: 123096
|
|
|
|
|
|
|
|
|
|
| |
Instead encode llvm IR level property "HasSideEffects" in an operand (shared
with IsAlignStack). Added MachineInstrs::hasUnmodeledSideEffects() to check
the operand when the instruction is an INLINEASM.
This allows memory instructions to be moved around INLINEASM instructions.
llvm-svn: 123044
|
|
|
|
|
|
|
| |
the original type of the switch statement key.
rdar://8781238
llvm-svn: 122935
|
|
|
|
| |
llvm-svn: 122909
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
DAG scheduling during isel. Most new functionality is currently
guarded by -enable-sched-cycles and -enable-sched-hazard.
Added InstrItineraryData::IssueWidth field, currently derived from
ARM itineraries, but could be initialized differently on other targets.
Added ScheduleHazardRecognizer::MaxLookAhead to indicate whether it is
active, and if so how many cycles of state it holds.
Added SchedulingPriorityQueue::HasReadyFilter to allowing gating entry
into the scheduler's available queue.
ScoreboardHazardRecognizer now accesses the ScheduleDAG in order to
get information about it's SUnits, provides RecedeCycle for bottom-up
scheduling, correctly computes scoreboard depth, tracks IssueCount, and
considers potential stall cycles when checking for hazards.
ScheduleDAGRRList now models machine cycles and hazards (under
flags). It tracks MinAvailableCycle, drives the hazard recognizer and
priority queue's ready filter, manages a new PendingQueue, properly
accounts for stall cycles, etc.
llvm-svn: 122541
|
|
|
|
| |
llvm-svn: 122539
|
|
|
|
| |
llvm-svn: 122509
|
|
|
|
| |
llvm-svn: 122507
|
|
|
|
|
|
|
| |
something that just glues two nodes together, even if it is
sometimes used for flags.
llvm-svn: 122310
|
|
|
|
|
|
| |
they are just as useless, but at least a bit more gramatical
llvm-svn: 122305
|
|
|
|
|
|
|
| |
isel is *required* to split the edge. PHI values get evaluated
on the edge, not in their predecessor block.
llvm-svn: 122170
|
|
|
|
| |
llvm-svn: 119875
|
|
|
|
|
|
|
| |
with a SimpleValueType, while an EVT supports equality and
inequality comparisons with SimpleValueType.
llvm-svn: 118169
|
|
|
|
|
|
|
| |
declarations in !NDEBUG to avoid -Wunused-variable warnings. Patch by
Matt Beaumont-Gay!
llvm-svn: 117345
|
|
|
|
|
|
| |
Do not count use of sdisel for single call instruction.
llvm-svn: 117316
|