Lang Hames
2176edf1c4
Fix kill flags when moving instructions using LiveIntervals::moveInstr(...).
...
llvm-svn: 150150
2012-02-09 04:45:38 +00:00
Lang Hames
95d6edeba8
Remove assertion. Not all use operands are reads.
...
llvm-svn: 150149
2012-02-09 04:39:48 +00:00
Andrew Trick
f542675ae3
Improve TargetPassConfig. No intended functionality.
...
Split CodeGen into stages.
Distinguish between optimization and correctness.
llvm-svn: 150122
2012-02-09 00:40:55 +00:00
Andrew Trick
c24e09b226
comment
...
llvm-svn: 150121
2012-02-09 00:40:52 +00:00
David Blaikie
e7d7a5dfaa
Remove static initializer from DataStream.cpp
...
If someone would prefer a clear name for the 'success' error_value we could
come up with one - potentially just a 'named constructor' style
'error_value::success()' to make this expression more self-documenting. If
I see this come up in other cases I'll certainly consider it.
One step along the way to resolving PR11944.
llvm-svn: 150120
2012-02-09 00:29:19 +00:00
Jakob Stoklund Olesen
938b4d26f1
Erase dead copies that are clobbered by a call.
...
This does make a difference, at least when using RABasic.
llvm-svn: 150118
2012-02-09 00:19:08 +00:00
Jakob Stoklund Olesen
4519fd0b21
Handle register masks when searching for EFLAGS clobbers.
...
Calls clobber the flags, but when using register masks there is no
EFLAGS<imp-def> operand.
llvm-svn: 150117
2012-02-09 00:17:22 +00:00
Jakob Stoklund Olesen
5d33291e8e
Never delete instructions that define reserved registers.
...
I think this was already the intention, but DeadMachineInstructionElim
was accidentally tracking the liveness of reserved registers. Now,
instructions with reserved defs are never deleted.
This prevents the call stack adjustment instructions from getting
deleted when enabling register masks.
llvm-svn: 150116
2012-02-09 00:15:39 +00:00
Jakob Stoklund Olesen
8610a59de1
Handle register masks in MachineCopyPropagation.
...
For simplicity, treat calls with register masks as basic block
boundaries. This means we can't copy propagate callee-saved registers
across calls, but I don't think that is a big deal.
llvm-svn: 150108
2012-02-08 22:37:35 +00:00
Evan Cheng
55e7d6aeff
Commit Andy Zhang's test for the lea patch.
...
llvm-svn: 150107
2012-02-08 22:33:17 +00:00
Chris Lattner
8776bc13f5
fix broken link
...
llvm-svn: 150105
2012-02-08 22:20:00 +00:00
Kostya Serebryany
154a54d972
[asan] unpoison the stack before every noreturn call. Fixes asan issue 37. llvm part
...
llvm-svn: 150102
2012-02-08 21:36:17 +00:00
Andrew Trick
1fa5bcbe2a
Codegen pass definition cleanup. No functionality.
...
Moving toward a uniform style of pass definition to allow easier target configuration.
Globally declare Pass ID.
Globally declare pass initializer.
Use INITIALIZE_PASS consistently.
Add a call to the initializer from CodeGen.cpp.
Remove redundant "createPass" functions and "getPassName" methods.
While cleaning up declarations, cleaned up comments (sorry for large diff).
llvm-svn: 150100
2012-02-08 21:23:13 +00:00
Andrew Trick
c40815de62
Move pass configuration out of pass constructors: MachineLICM.
...
llvm-svn: 150099
2012-02-08 21:23:03 +00:00
Andrew Trick
5209c739cd
whitespace
...
llvm-svn: 150098
2012-02-08 21:23:00 +00:00
Andrew Trick
3ed444a16a
Move pass configuration out of pass constructors: StackSlotColoring.
...
llvm-svn: 150097
2012-02-08 21:22:57 +00:00
Andrew Trick
df7e3769b5
Move pass configuration out of pass constructors: PostRAScheduler.
...
llvm-svn: 150096
2012-02-08 21:22:53 +00:00
Andrew Trick
58648e4e98
Move pass configuration out of pass constructors: BranchFolderPass
...
llvm-svn: 150095
2012-02-08 21:22:48 +00:00
Andrew Trick
9e761997d8
whitespace
...
llvm-svn: 150094
2012-02-08 21:22:43 +00:00
Andrew Trick
dd37d52f95
Added TargetPassConfig::setOpt
...
llvm-svn: 150093
2012-02-08 21:22:39 +00:00
Andrew Trick
3a61b7862b
Added Pass::createPass(ID) to handle pass configuration by ID
...
llvm-svn: 150092
2012-02-08 21:22:34 +00:00
Andrew Trick
c044917a8a
Move pass configuration out of pass constructors: TailDuplicate::PreRegAlloc
...
llvm-svn: 150091
2012-02-08 21:22:30 +00:00
Jakob Stoklund Olesen
0c1eea2922
Add Register mask support to RABasic.
...
When a virtual register is live across a call, limit the search space to
call-preserved registers.
llvm-svn: 150081
2012-02-08 18:54:35 +00:00
Benjamin Kramer
0e4319ec99
Don't map registers to the invalid dwarf register (-1). It's the default value.
...
X86GenRegisterInfo.inc | 1032 -------------------------------------------------
1 file changed, 1032 deletions(-)
llvm-svn: 150080
2012-02-08 18:46:26 +00:00
Brendon Cahoon
6f35837048
Use TSFlag bit to describe instruction properties.
...
Creating the isPredicated TSFlag enables the code
to use the property defined in the instruction format
instead of using a large switch statement.
llvm-svn: 150078
2012-02-08 18:25:47 +00:00
Jakob Stoklund Olesen
3ff74d8e62
Keep track of register masks in LiveIntervalAnalysis.
...
Build an ordered vector of register mask operands (i.e., calls) when
computing live intervals. Provide a checkRegMaskInterference() function
that computes a bit mask of usable registers for a live range.
This is a quick way of determining of a live range crosses any calls,
and restricting it to the callee saved registers if it does.
Previously, we had to discover call clobbers for each candidate register
independently.
llvm-svn: 150077
2012-02-08 17:33:45 +00:00
Benjamin Kramer
fbe5d3a78f
Value initialize MCRegisterClasses. Not sure how could miss this during the MCTargetDesc refactor.
...
llvm-svn: 150076
2012-02-08 14:43:53 +00:00
Duncan Sands
0920308a7e
Use Use::set rather than finding the operand number of the use
...
and setting that.
llvm-svn: 150074
2012-02-08 14:10:53 +00:00
Benjamin Kramer
5e4f0a4a31
PathV2: Remove static StringRef ctors.
...
llvm-svn: 150071
2012-02-08 13:13:47 +00:00
Elena Demikhovsky
1adc1d53dd
Fixed a bug in printing "cmp" pseudo ops.
...
> This IR code
> %res = call <8 x float> @llvm.x86.avx.cmp.ps.256(<8 x float> %a0, <8 x float> %a1, i8 14)
> fails with assertion:
>
> llc: X86ATTInstPrinter.cpp:62: void llvm::X86ATTInstPrinter::printSSECC(const llvm::MCInst*, unsigned int, llvm::raw_ostream&): Assertion `0 && "Invalid ssecc argument!"' failed.
> 0 llc 0x0000000001355803
> 1 llc 0x0000000001355dc9
> 2 libpthread.so.0 0x00007f79a30575d0
> 3 libc.so.6 0x00007f79a23a1945 gsignal + 53
> 4 libc.so.6 0x00007f79a23a2f21 abort + 385
> 5 libc.so.6 0x00007f79a239a810 __assert_fail + 240
> 6 llc 0x00000000011858d5 llvm::X86ATTInstPrinter::printSSECC(llvm::MCInst const*, unsigned int, llvm::raw_ostream&) + 119
I added the full testing for all possible pseudo-ops of cmp.
I extended X86AsmPrinter.cpp and X86IntelInstPrinter.cpp.
You'l also see lines alignments (unrelated to this fix) in X86IselLowering.cpp from my previous check-in.
llvm-svn: 150068
2012-02-08 08:37:26 +00:00
Craig Topper
172b9243cd
Remove a couple unneeded intrinsic patterns
...
llvm-svn: 150067
2012-02-08 08:29:30 +00:00
Chris Lattner
13f118f47b
No actual functional change here, just some clarifications:
...
Clarify that contributors are agreeing to license their code under the
license corresponding to the subproject that they are contributing to,
as requested by a potential contributor.
Also, as a drive-by, update the llvm-gcc/GPL section to mention dragonegg
and say that GPL code is all in its own repo's.
llvm-svn: 150065
2012-02-08 07:58:38 +00:00
Craig Topper
5405571fe0
Remove GCC builtins for vpermilp* intrinsics as clang no longer needs them. Custom lower the intrinsics to the vpermilp target specific node and remove intrinsic patterns.
...
llvm-svn: 150060
2012-02-08 06:36:57 +00:00
Chad Rosier
0ee8c513f7
[fast-isel] Add support for SUBs with non-legal types.
...
llvm-svn: 150047
2012-02-08 02:45:44 +00:00
Chad Rosier
bfe7393d7d
Add comment to test case.
...
llvm-svn: 150046
2012-02-08 02:30:12 +00:00
Chad Rosier
bd471255a9
[fast-isel] Add support for ORs with non-legal types.
...
llvm-svn: 150045
2012-02-08 02:29:21 +00:00
Andrew Trick
3bc0e0c651
Added MachineInstr::isBundled() to check if an instruction is part of a bundle.
...
llvm-svn: 150044
2012-02-08 02:17:25 +00:00
Andrew Trick
e57583ab19
misched: bug in debug output.
...
llvm-svn: 150043
2012-02-08 02:17:21 +00:00
Andrew Trick
036fece5bb
whitespace
...
llvm-svn: 150042
2012-02-08 02:17:18 +00:00
Andrew Trick
de9f8979c4
stale comment
...
llvm-svn: 150041
2012-02-08 02:17:16 +00:00
Chris Lattner
042e3720c3
add an explicit section on static constructors.
...
llvm-svn: 150037
2012-02-08 01:44:00 +00:00
Kostya Serebryany
5c3c1286a5
Don't use static CTORs for the Attributes constants, while still keeping the class type-safe
...
llvm-svn: 150031
2012-02-08 01:11:21 +00:00
Eric Christopher
ae56eecf5f
Add support for a temporary forward decl type. We want this so we
...
can rauw forward declarations if we decide to emit the full type.
Part of rdar://10809898
llvm-svn: 150024
2012-02-08 00:22:26 +00:00
Devang Patel
a93cc25b79
Remove tabs.
...
llvm-svn: 150022
2012-02-08 00:17:07 +00:00
Chad Rosier
ded4c99f2e
[fast-isel] Add support for indirect branches.
...
llvm-svn: 150014
2012-02-07 23:56:08 +00:00
Devang Patel
d925d1a8d7
Remove tabs.
...
llvm-svn: 150012
2012-02-07 23:33:58 +00:00
Evan Cheng
1b81fddd65
Use LEA to adjust stack ptr for Atom. Patch by Andy Zhang.
...
llvm-svn: 150008
2012-02-07 22:50:41 +00:00
Hal Finkel
61f210b5c0
Allow bugpoint to recognize -bb-vectorize
...
llvm-svn: 150003
2012-02-07 21:11:12 +00:00
David Blaikie
0210e97680
Correct use of const in ParseCommandLineOptions
...
llvm-svn: 149999
2012-02-07 19:36:01 +00:00
Benjamin Kramer
57d2c78572
ocaml bindings: landing pad is now the last opcode.
...
llvm-svn: 149997
2012-02-07 18:58:19 +00:00