Nuno Lopes
0d44a50426
PHINode::hasConstantValue(): return undef if the PHI is fully recursive.
...
Thanks Duncan for the idea
llvm-svn: 159687
2012-07-03 21:15:40 +00:00
Bill Wendling
a0bc1083be
Use the DebugInfo's 'print()' method to emit the comments.
...
These give quite a bit more information about the DebugInfo and makes it more
readable.
llvm-svn: 159680
2012-07-03 20:01:02 +00:00
Nuno Lopes
1e8dffdf27
BoundsChecking: optimize out the check for offset < 0 if size is known to be >= 0 (signed).
...
(LLVM optimizers cannot do this optimization by themselves)
llvm-svn: 159668
2012-07-03 17:30:18 +00:00
Nuno Lopes
9291ff4078
fold PHI nodes in SizeOffsetEvaluator whenever possible.
...
Unfortunately this change requires the cache map to hold WeakVHs instead
llvm-svn: 159667
2012-07-03 17:13:25 +00:00
Nuno Lopes
90c76dfb17
improve PHINode::hasConstantValue() to detect recursive cases like %phi = phi(%phi,42) as constant
...
llvm-svn: 159666
2012-07-03 17:10:28 +00:00
Stepan Dyatkovskiy
8b0c97e0dd
Part of r159527. Splitted into series of patches and gone with fixed PR13256:
...
IntegersSubsetMapping
- Replaced type of Items field from std::list with std::map. In neares future I'll test it with DenseMap and do the correspond replacement
if possible.
llvm-svn: 159659
2012-07-03 13:46:45 +00:00
Craig Topper
85c938f44f
Remove extra space.
...
llvm-svn: 159647
2012-07-03 06:48:58 +00:00
Craig Topper
f067f9aa51
Change i128mem/i256mem to f128mem/f256mem on some floating point vector instructions.
...
llvm-svn: 159646
2012-07-03 06:11:06 +00:00
NAKAMURA Takumi
09e3510eb1
MCContext.cpp: Fixup for my odd previous commit. No functional changes.
...
llvm-svn: 159645
2012-07-03 06:01:27 +00:00
Craig Topper
676dcd8c39
Add aliases for pblendvb, blendvpd, and blendvps instructions with the implicit xmm0 operand specified. Fixes PR13252.
...
llvm-svn: 159644
2012-07-03 05:49:45 +00:00
NAKAMURA Takumi
30396ba4aa
MCContext::GetDwarfFile(): Make FileName parsing tolerant of DOSish pathsep with PathV2.
...
It fixes failure in test/MC/MachO/gen-dwarf.s on Win32 w/o bash.
llvm-svn: 159640
2012-07-03 03:59:29 +00:00
Jack Carter
b353094f27
mips32 long long register inline asm constraint support.
...
inlineasm-cnstrnt-bad-r-1.ll is NOT supposed to fail, so it was removed. This resulted in the removal of a negative test (inlineasm-cnstrnt-bad-r-1.ll)
llvm-svn: 159625
2012-07-02 23:35:23 +00:00
Eric Christopher
dfc3e68c40
Revert " mips32 long long register inline asm constraint support." as
...
it appears to be breaking the bots.
This reverts commit 1b055ce320fa13f6f1ac81670d11b45e01f79876.
llvm-svn: 159619
2012-07-02 23:22:25 +00:00
Eric Christopher
b65acc61a5
Revert "IntRange:" as it appears to be breaking self hosting.
...
This reverts commit b2833d9dcba88c6f0520cad760619200adc0442c.
llvm-svn: 159618
2012-07-02 23:22:21 +00:00
Chandler Carruth
34263a0c95
All glory to address sanitizer. ;]
...
It appears to have caught a use-after-free introduced as by r159567
and/or friends which call 'addPass' from many more places. The bug in
'addPass' doesn't appear to be new, and was spotted by inspection when
ASan shown a bright light of a stacktrace at these functions.
Hopefully this will fix the ASan failure -- I have no test case other
than running an ASan-built clang over the test suite.
llvm-svn: 159614
2012-07-02 22:56:41 +00:00
Evan Cheng
39e90029a2
Target option DisableJumpTables is a gross hack. Move it to TargetLowering instead.
...
llvm-svn: 159611
2012-07-02 22:39:56 +00:00
Jack Carter
5c1a01a625
mips32 long long register inline asm constraint support.
...
inlineasm-cnstrnt-bad-r-1.ll is NOT supposed to fail, so it was removed. This resulted in the removal of a negative test (inlineasm-cnstrnt-bad-r-1.ll)
llvm-svn: 159610
2012-07-02 22:39:45 +00:00
Andrew Trick
2f26b34806
misched: allow NULL InstrItineraries.
...
llvm-svn: 159599
2012-07-02 21:55:12 +00:00
Eric Christopher
dd8638fb3e
Turn an assert into an error to make it a bit more friendly.
...
Part of rdar://6880388 and rdar://11766377
llvm-svn: 159590
2012-07-02 21:16:43 +00:00
Jack Carter
06de0fb083
Pass the correct ELFOSABI enumeration to the MipsELFObjectWriter constructor
...
Contributer: Sasa Stankovic
llvm-svn: 159574
2012-07-02 20:04:43 +00:00
Bob Wilson
cac3b90633
Extend TargetPassConfig to allow running only a subset of the normal passes.
...
This is still a work in progress but I believe it is currently good enough
to fix PR13122 "Need unit test driver for codegen IR passes". For example,
you can run llc with -stop-after=loop-reduce to have it dump out the IR after
running LSR. Serializing machine-level IR is not yet supported but we have
some patches in progress for that.
The plan is to serialize the IR to a YAML file, containing separate sections
for the LLVM IR, machine-level IR, and whatever other info is needed. Chad
suggested that we stash the stop-after pass in the YAML file and use that
instead of the start-after option to figure out where to restart the
compilation. I think that's a great idea, but since it's not implemented yet
I put the -start-after option into this patch for testing purposes.
llvm-svn: 159570
2012-07-02 19:48:45 +00:00
Bob Wilson
a3f9fa710a
Move assertion with TargetPassConfig's Initialized flag.
...
llvm-svn: 159569
2012-07-02 19:48:39 +00:00
Bob Wilson
b9b693650a
Consistently use AnalysisID types in TargetPassConfig.
...
This makes it possible to just use a zero value to represent "no pass", so
the phony NoPassID global variable is no longer needed.
llvm-svn: 159568
2012-07-02 19:48:37 +00:00
Bob Wilson
bbd38dd9c0
Add all codegen passes to the PassManager via TargetPassConfig.
...
This is a preliminary step toward having TargetPassConfig be able to
start and stop the compilation at specified passes for unit testing
and debugging. No functionality change.
llvm-svn: 159567
2012-07-02 19:48:31 +00:00
Andrew Trick
21cca97d95
Revert accidental checkin.
...
My last checkin was apparently not the branch I intended. It was missing one change (added by chandlerc), and contained a spurious change.
llvm-svn: 159548
2012-07-02 19:12:29 +00:00
Duncan Sands
e8ce94fcd7
GlobalOpt forgot to handle bitcast when analyzing globals. Found by inspection.
...
llvm-svn: 159546
2012-07-02 18:55:39 +00:00
Manman Ren
72098b2c91
Added assertion in getVRegDef of MachineRegisterInfo to make sure the virtual
...
register does not have multiple definitions. Modified TwoAddressInstructionPass
to use getUniqueVRegDef instead of getVRegDef.
llvm-svn: 159545
2012-07-02 18:55:36 +00:00
Andrew Trick
f161e391f8
Reapply "Make NumMicroOps a variable in the subtarget's instruction itinerary."
...
Reapplies r159406 with minor cleanup. The regressions appear to have been spurious.
llvm-svn: 159541
2012-07-02 18:10:42 +00:00
Bob Wilson
2297221028
Do not attempt to use ROR for Thumb1.
...
Patch by Matt Fischer!
llvm-svn: 159538
2012-07-02 17:22:47 +00:00
Nuno Lopes
d0bcfe4d9d
fix the regression I introduced in r159385 (it's necessary to update PHI nodes in unwind BB
...
llvm-svn: 159534
2012-07-02 16:14:47 +00:00
Stepan Dyatkovskiy
8b9ecca42d
IntRange:
...
- Changed isSingleNumber method behaviour. Now this flag is calculated on demand.
IntegersSubsetMapping
- Optimized diff operation.
- Replaced type of Items field from std::list with std::map.
- Added new methods:
bool isOverlapped(self &RHS)
void add(self& RHS, SuccessorClass *S)
void detachCase(self& NewMapping, SuccessorClass *Succ)
void removeCase(SuccessorClass *Succ)
SuccessorClass *findSuccessor(const IntTy& Val)
const IntTy* getCaseSingleNumber(SuccessorClass *Succ)
IntegersSubsetTest
- DiffTest: Added checks for successors.
SimplifyCFG
Updated SwitchInst usage (now it is case-ragnes compatible) for
- SimplifyEqualityComparisonWithOnlyPredecessor
- FoldValueComparisonIntoPredecessors
llvm-svn: 159527
2012-07-02 13:02:18 +00:00
Kostya Serebryany
eeaf688c0f
[asan] small code simplification
...
llvm-svn: 159522
2012-07-02 11:42:29 +00:00
Alexey Samsonov
f4462fa3ca
This patch extends the libLLVMDebugInfo which contains a minimalistic DWARF parser:
...
1) DIContext is now able to return function name for a given instruction address (besides file/line info).
2) llvm-dwarfdump accepts flag --functions that prints the function name (if address is specified by --address flag).
3) test case that checks the basic functionality of llvm-dwarfdump added
llvm-svn: 159512
2012-07-02 05:54:45 +00:00
Rafael Espindola
a77d31d7fd
Now that RegistersDefinedFromSameValue handles one instruction being an
...
implicit_def, the other instruction can be anything, including instructions
that define multiple values. Be careful about that and don't assume what operand
0 is.
Fixes pr13249.
llvm-svn: 159509
2012-07-01 17:08:01 +00:00
Elena Demikhovsky
9af899fa88
Optimization of shuffle node that can fit to the register form of VBROADCAST instruction on AVX2.
...
llvm-svn: 159504
2012-07-01 06:12:26 +00:00
Craig Topper
3af251dbf1
Reduce code size by using a second switch statement to avoid extra calls to SelectAtomic64. Also catch cases where SelectAtomic64 fails.
...
llvm-svn: 159503
2012-07-01 02:55:34 +00:00
Craig Topper
e15e5f7c5c
Add a break to the end of case statement missed in r159501.
...
llvm-svn: 159502
2012-07-01 02:18:18 +00:00
Craig Topper
fbb954f727
Fix a crash on release builds if gather intrinsics are passed a non-constant value for the last argument.
...
llvm-svn: 159501
2012-07-01 02:17:08 +00:00
Craig Topper
def044b974
Use a second switch statement to reduce number of calls to SelectGather in code. Reduces code size a bit.
...
llvm-svn: 159500
2012-07-01 02:05:52 +00:00
Benjamin Kramer
e2ef47c145
Reduce use list thrashing by using DenseMap's find_as for maps with ValueHandle keys.
...
No functionality change.
llvm-svn: 159497
2012-06-30 22:37:15 +00:00
Bill Wendling
a164735baa
Don't reinsert the 'atexit' function if it already exists.
...
llvm-svn: 159491
2012-06-30 20:21:19 +00:00
Rafael Espindola
efab16d43b
Handle implicit_defs in the register coalescer. I am still trying to produce
...
a reduced testcase, but this fixes pr13209.
llvm-svn: 159479
2012-06-30 01:45:55 +00:00
Nuno Lopes
7b12b87096
revert r159440. As Duncan pointed out, the test for invoke is not needed at this point
...
llvm-svn: 159471
2012-06-29 22:10:10 +00:00
Manman Ren
b1b3db6802
ARM: Clean up optimizeCompare in peephole, no functional change.
...
Use getUniqueVRegDef.
Replace a loop with existing interfaces: modifiesRegister and readsRegister.
Factor out code into inline functions and simplify the code.
llvm-svn: 159470
2012-06-29 22:06:19 +00:00
Manman Ren
6fa76dc0e0
Add SrcReg2 to analyzeCompare and optimizeCompareInstr to handle Compare
...
instructions with two register operands.
llvm-svn: 159465
2012-06-29 21:33:59 +00:00
Jakob Stoklund Olesen
3e3cdecf98
Clear kill flags in InstrEmitter::EmitSubregNode().
...
When a local virtual register is made global, make sure to clear any
existing kill flags.
llvm-svn: 159461
2012-06-29 21:00:03 +00:00
Jakob Stoklund Olesen
da9ea1d6bc
Check for extra kill flags on live-out virtual registers.
...
This would previously get reported as the misleading "Virtual register
def doesn't dominate all uses."
llvm-svn: 159460
2012-06-29 21:00:00 +00:00
Benjamin Kramer
396b3adc10
CodeGenPrepare: Don't crash when TLI is not available.
...
This happens when codegenprepare is invoked via opt.
llvm-svn: 159457
2012-06-29 19:58:21 +00:00
Manman Ren
c146589aa4
Add getUniqueVRegDef to MachineRegisterInfo.
...
This comes in handy during peephole optimization.
llvm-svn: 159453
2012-06-29 19:16:05 +00:00
Duncan Sands
9838286d9e
Rework this to clarify where the removal of nodes from the queue is
...
really happening. No intended functionality change.
llvm-svn: 159451
2012-06-29 19:03:05 +00:00