| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
1. Make instcombine always canonicalize trunc x to i1 into an icmp(x&1). This
exposes the AND to other instcombine xforms and is more of what the code
generator expects.
2. Rewrite the remaining trunc pattern match to use 'match', which
simplifies it a lot.
llvm-svn: 67635
|
| |
|
|
| |
llvm-svn: 67629
|
| |
|
|
|
|
| |
the target constraint specifies a specific physreg.
llvm-svn: 67618
|
| |
|
|
| |
llvm-svn: 67617
|
| |
|
|
|
|
| |
fail.
llvm-svn: 67616
|
| |
|
|
|
|
|
|
|
|
|
| |
to be returned in DL. LLVM's multiple-return-value support is
not ABI-conforming; front-ends that wish to have code emitted
that conforms to an ABI are currently expected to make
arrangements for this on their own rather than assuming that
multiple-return-values will automatically do the right thing.
This commit doesn't fundamentally change this situation.
llvm-svn: 67588
|
| |
|
|
|
|
|
| |
canClobberPhysRegDefs if the successor node doesn't
clobber any physical registers.
llvm-svn: 67587
|
| |
|
|
|
|
|
|
|
| |
help out the register pressure reduction heuristics in the case of
nodes with multiple uses. Currently this uses very conservative
heuristics, so it doesn't have a broad impact, but in cases where it
does help it can make a big difference.
llvm-svn: 67586
|
| |
|
|
| |
llvm-svn: 67580
|
| |
|
|
| |
llvm-svn: 67578
|
| |
|
|
|
|
|
|
|
|
|
| |
the super-register is in the register class we are trying to allocate. Then add the weight to all sub-registers of the super-register even if they are not aliases.
e.g. allocating for GR32, bh is not used, updating bl spill weight.
bl should get the same spill weight otherwise it will be choosen
as a spill candidate since spilling bh doesn't make ebx available.
This fix PR2866.
llvm-svn: 67574
|
| |
|
|
|
|
|
|
|
|
| |
same as a normal i80 {low64, high16} rather
than its own {high64, low16}. A depressing number
of places know about this; I think I got them all.
Bitcode readers and writers convert back to the old
form to avoid breaking compatibility.
llvm-svn: 67562
|
| |
|
|
|
|
|
|
|
|
| |
a data dependency on the load node, so it really needs a
data-dependence edge to the load node, even if the load previously
existed.
And add a few comments.
llvm-svn: 67554
|
| |
|
|
| |
llvm-svn: 67544
|
| |
|
|
|
|
| |
actually have uses, which reflects the way it's used.
llvm-svn: 67540
|
| |
|
|
|
|
|
| |
in an SUnit, instead of just the first one. This fix is needed
by some upcoming scheduler changes.
llvm-svn: 67531
|
| |
|
|
|
|
| |
defs, regardless of whether they are actually used.
llvm-svn: 67528
|
| |
|
|
|
|
| |
explicitly flush it.
llvm-svn: 67526
|
| |
|
|
| |
llvm-svn: 67524
|
| |
|
|
| |
llvm-svn: 67523
|
| |
|
|
| |
llvm-svn: 67518
|
| |
|
|
|
|
| |
machine operand TIED_TO constraint. This eliminated the need to pre-allocate registers for these. This also allows register allocator can eliminate the unneeded copies.
llvm-svn: 67512
|
| |
|
|
|
|
|
|
|
|
| |
index. That means the source register is taking a sub-register of a larger register. e.g. On x86
%RAX<def> = ...
%RAX<def> = SUBREG_TO_REG 0, %EAX:3<kill>, 3
The first def is defining RAX, not EAX so the top bits were not zero-extended.
llvm-svn: 67511
|
| |
|
|
| |
llvm-svn: 67510
|
| |
|
|
|
|
|
| |
were when we came around, not to their default handler. This
should fix PR3848
llvm-svn: 67509
|
| |
|
|
| |
llvm-svn: 67508
|
| |
|
|
| |
llvm-svn: 67507
|
| |
|
|
|
|
| |
i8 return values.
llvm-svn: 67502
|
| |
|
|
| |
llvm-svn: 67454
|
| |
|
|
|
|
|
|
|
| |
unneeded bitcast is requested. This is common for frontends who just unconditionally
cast even if the target is often the right type already. THis prevents going into
getFoldedCast which switches on the opcode and does a bunch of other stuff before
doing the same opzn.
llvm-svn: 67435
|
| |
|
|
|
|
| |
Handle odd registers allocation in FGR32.
llvm-svn: 67422
|
| |
|
|
| |
llvm-svn: 67416
|
| |
|
|
| |
llvm-svn: 67412
|
| |
|
|
|
|
| |
shifts together. This fixes PR3851.
llvm-svn: 67411
|
| |
|
|
|
|
|
|
|
| |
linkage: the value may be replaced with something
different at link time. (Frontends that want to
allow values to be loaded out of weak constants can
give their constants weak_odr linkage).
llvm-svn: 67407
|
| |
|
|
| |
llvm-svn: 67400
|
| |
|
|
|
|
| |
operand index in the high bits.
llvm-svn: 67387
|
| |
|
|
| |
llvm-svn: 67373
|
| |
|
|
| |
llvm-svn: 67372
|
| |
|
|
|
|
| |
Removed unncessary code. No functionality change.
llvm-svn: 67371
|
| |
|
|
| |
llvm-svn: 67370
|
| |
|
|
| |
llvm-svn: 67364
|
| |
|
|
|
|
| |
for those architectures that support the instruction.
llvm-svn: 67363
|
| |
|
|
|
|
| |
(return or unreachable) is a kill.
llvm-svn: 67357
|
| |
|
|
|
|
|
|
|
|
| |
- Make type declarations match the struct/class keyword of the definition.
- Move AddSignalHandler into the namespace where it belongs.
- Correctly call functions from template base.
- Some other small changes.
With this patch, LLVM and Clang should build properly and with far less noise under VS2008.
llvm-svn: 67347
|
| |
|
|
| |
llvm-svn: 67335
|
| |
|
|
|
|
|
|
|
| |
the inliner; prevents nondeterministic behavior
when the same address is reallocated.
Don't build call graph nodes for debug intrinsic calls;
they're useless, and there were typically a lot of them.
llvm-svn: 67311
|
| |
|
|
|
|
|
|
|
| |
the set of blocks in which values are used, the set in which
values are live-through, and the set in which values are
killed. For the live-through and killed sets, conservative
approximations are used.
llvm-svn: 67309
|
| |
|
|
| |
llvm-svn: 67307
|
| |
|
|
|
|
|
|
|
| |
and was deleting Instructions without clearing the
corresponding map entry. This led to nondeterministic
behavior if the same address got allocated to another
Instruction within a short time.
llvm-svn: 67306
|