Chris Lattner [Sat, 12 Jan 2008 01:45:22 +0000 (01:45 +0000)]
this actually does pass with 4.0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45899
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 12 Jan 2008 01:08:07 +0000 (01:08 +0000)]
Code clean up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45898
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 12 Jan 2008 01:07:41 +0000 (01:07 +0000)]
ByVal arguments are passed on stack. Make sure to allocate a slot using size and alignment information on the parameter attribute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45897
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 12 Jan 2008 00:53:16 +0000 (00:53 +0000)]
fix a wordo that gordon noticed :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45896
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 12 Jan 2008 00:35:08 +0000 (00:35 +0000)]
Any x86 instruction that reads from an invariant location is invariant.
This allows us to sink things like:
cvtsi2sd 32(%esp), %xmm1
when reading from the argument area, for example.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45895
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 12 Jan 2008 00:17:41 +0000 (00:17 +0000)]
implement support for sinking a load out the bottom of a block that
has no stores between the load and the end of block. This works
great and sinks hundreds of stores, but we can't turn it on because
machineinstrs don't have volatility information and we don't want to
sink volatile stores :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45894
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 23:25:16 +0000 (23:25 +0000)]
remove some incorrect classof's.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45893
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Fri, 11 Jan 2008 23:13:45 +0000 (23:13 +0000)]
When DAE drops the varargs part of a function, ensure any
attributes on the vararg call arguments are also dropped.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45892
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 11 Jan 2008 23:10:11 +0000 (23:10 +0000)]
More cbe byval fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45891
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 23:06:56 +0000 (23:06 +0000)]
llvm-g++ 4.0 has completely different code for this warning,
just xfail it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45890
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 23:04:14 +0000 (23:04 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45888
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Fri, 11 Jan 2008 22:36:48 +0000 (22:36 +0000)]
Do not allow attributes beyond a function's last
parameter, even if it is a varargs function. Do
allow attributes on the varargs part of a call,
but not beyond the last argument. Only allow
selected attributes to be on the varargs part of
a call (currently only 'byval' is allowed). The
reasoning here is that most attributes, eg inreg,
simply make no sense here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45887
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 22:31:41 +0000 (22:31 +0000)]
Teach argpromote to ruthlessly hack small byval structs when it can
get away with it, which exposes opportunities to eliminate the memory
objects entirely. For example, we now compile byval.ll to:
define internal void @f1(i32 %b.0, i64 %b.1) {
entry:
%tmp2 = add i32 %b.0, 1 ; <i32> [#uses=0]
ret void
}
define i32 @main() nounwind {
entry:
call void @f1( i32 1, i64 2 )
ret i32 0
}
This seems like it would trigger a lot for code that passes around small
structs (e.g. SDOperand's or _Complex)...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45886
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Fri, 11 Jan 2008 21:46:24 +0000 (21:46 +0000)]
Two occurrences on one line count as one...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45885
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Fri, 11 Jan 2008 21:23:39 +0000 (21:23 +0000)]
If there are attributes on the varargs part of a
call, don't discard them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45884
91177308-0d34-0410-b5e6-
96231b3b80d8
Scott Michel [Fri, 11 Jan 2008 21:01:19 +0000 (21:01 +0000)]
More CellSPU refinements:
- struct_2.ll: Completely unaligned load/store testing
- call_indirect.ll, struct_1.ll: Add test lines to exercise
X-form [$reg($reg)] addressing
At this point, loads and stores should be under control (he says
in an optimistic tone of voice.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45882
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Fri, 11 Jan 2008 20:47:33 +0000 (20:47 +0000)]
Disable for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45881
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 19:36:30 +0000 (19:36 +0000)]
Use smallptrset instead of std::set for efficiency.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45878
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 19:34:32 +0000 (19:34 +0000)]
a byval argument is guaranteed to be valid to load.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45877
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 19:20:39 +0000 (19:20 +0000)]
Update this code to use eraseFromParent where possible. Compute
whether an argument is byval and pass into isSafeToPromoteArgument.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45876
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 18:55:10 +0000 (18:55 +0000)]
replace a loop with a constant time check.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45875
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 18:47:45 +0000 (18:47 +0000)]
another minor datastructure tweak.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45874
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 18:43:58 +0000 (18:43 +0000)]
start using smallvector to avoid vector heap thrashing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45873
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 18:42:02 +0000 (18:42 +0000)]
add operator==/!= to smallvector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45872
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 18:10:50 +0000 (18:10 +0000)]
rename MachineInstr::setInstrDescriptor -> setDesc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45871
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 18:00:50 +0000 (18:00 +0000)]
remove xchg and shift-reg-by-1 instructions, which are dead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45870
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 18:00:13 +0000 (18:00 +0000)]
add a note, remove a done deed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45869
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Fri, 11 Jan 2008 17:10:15 +0000 (17:10 +0000)]
hrm - correct spelling.
Actually were not riding any arguments. Sadly there is no semantic spell checker that is going to safe you from such a mistake.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45868
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Fri, 11 Jan 2008 16:49:42 +0000 (16:49 +0000)]
Improve tail call optimized call's argument lowering. Before this
commit all arguments where moved to the stack slot where they would
reside on a normal function call before the lowering to the tail call
stack slot. This was done to prevent arguments overwriting each other.
Now only arguments sourcing from a FORMAL_ARGUMENTS node or a
CopyFromReg node with virtual register (could also be a caller's
argument) are lowered indirectly.
--This line, and those below, will be ignored--
M X86/X86ISelLowering.cpp
M X86/README.txt
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45867
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Fri, 11 Jan 2008 14:34:56 +0000 (14:34 +0000)]
Correct a copy and paste error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45865
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 11 Jan 2008 09:12:49 +0000 (09:12 +0000)]
Some C backend ByVal parameter attribute support. Not yet complete.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45864
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 11 Jan 2008 07:37:44 +0000 (07:37 +0000)]
Rename Int_CVTSI642SSr* to Int_CVTSI2SS64r* for naming consistency and remove unused instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45861
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 07:18:17 +0000 (07:18 +0000)]
more flags set right
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45860
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 06:59:07 +0000 (06:59 +0000)]
add some missing flags.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45859
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 06:30:04 +0000 (06:30 +0000)]
don't include loopinfo.h from this file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45858
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 06:29:42 +0000 (06:29 +0000)]
Move typedef of loop to top of the file where it is more obvious.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45857
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 06:27:42 +0000 (06:27 +0000)]
Fix 80 col violations
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45856
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 06:20:47 +0000 (06:20 +0000)]
document the byval parameter attribute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45855
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 06:17:47 +0000 (06:17 +0000)]
add some notes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45854
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 11 Jan 2008 06:09:30 +0000 (06:09 +0000)]
When inlining a functino with a byval argument, make an explicit
copy of it in case the callee modifies the struct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45853
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 11 Jan 2008 03:07:46 +0000 (03:07 +0000)]
A couple of obvious off-by-one bugs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45852
91177308-0d34-0410-b5e6-
96231b3b80d8
Scott Michel [Fri, 11 Jan 2008 02:53:15 +0000 (02:53 +0000)]
More CellSPU refinement and progress:
- Cleaned up custom load/store logic, common code is now shared [see note
below], cleaned up address modes
- More test cases: various intrinsics, structure element access (load/store
test), updated target data strings, indirect function calls.
Note: This patch contains a refactoring of the LoadSDNode and StoreSDNode
structures: they now share a common base class, LSBaseSDNode, that
provides an interface to their common functionality. There is some hackery
to access the proper operand depending on the derived class; otherwise,
to do a proper job would require finding and rearranging the SDOperands
sent to StoreSDNode's constructor. The current refactor errs on the
side of being conservatively and backwardly compatible while providing
functionality that reduces redundant code for targets where loads and
stores are custom-lowered.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45851
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 11 Jan 2008 02:13:09 +0000 (02:13 +0000)]
Allow parameter attributes on varargs function parameters.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45850
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Fri, 11 Jan 2008 01:59:45 +0000 (01:59 +0000)]
Weak zeroes don't go in bss on Darwin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45849
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Fri, 11 Jan 2008 00:54:37 +0000 (00:54 +0000)]
Weak things initialized to 0 don't go in bss on Darwin.
Cosmetic changes to spacing to match gcc (some dejagnu
tests actually care).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45848
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 23:08:24 +0000 (23:08 +0000)]
Simplify the side effect stuff a bit more and make licm/sinking
both work right according to the new flags.
This removes the TII::isReallySideEffectFree predicate, and adds
TII::isInvariantLoad.
It removes NeverHasSideEffects+MayHaveSideEffects and adds
UnmodeledSideEffects as machine instr flags. Now the clients
can decide everything they need.
I think isRematerializable can be implemented in terms of the
flags we have now, though I will let others tackle that.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45843
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 22:35:15 +0000 (22:35 +0000)]
Clamp down on sinking of lots of instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45841
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 19:27:54 +0000 (19:27 +0000)]
IMPLICIT_USE and IMPLICIT_DEF are dead, remove them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45838
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 18:25:41 +0000 (18:25 +0000)]
add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45837
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Thu, 10 Jan 2008 10:28:30 +0000 (10:28 +0000)]
Output sinl for a long double FSIN node, not sin.
Likewise fix up a bunch of other libcalls. While
there I remove NEG_F32 and NEG_F64 since they are
not used anywhere. This fixes 9 Ada ACATS failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45833
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Jan 2008 08:24:38 +0000 (08:24 +0000)]
Only remat loads from immutable stack slots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45831
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Jan 2008 08:22:10 +0000 (08:22 +0000)]
Simplify some code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45830
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 07:59:24 +0000 (07:59 +0000)]
Start inferring side effect information more aggressively, and fix many bugs in the
x86 backend where instructions were not marked maystore/mayload, and perf issues where
instructions were not marked neverHasSideEffects. It would be really nice if we could
write patterns for copy instructions.
I have audited all the x86 instructions down to MOVDQAmr. The flags on others and on
other targets are probably not right in all cases, but no clients currently use this
info that are enabled by default.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45829
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Jan 2008 07:19:43 +0000 (07:19 +0000)]
Clearify the meaning of immutable StackObject.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45828
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 07:01:53 +0000 (07:01 +0000)]
Fix a crash on code like: let x = 1 {x
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45827
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 05:50:42 +0000 (05:50 +0000)]
rename X86InstrX86-64.td -> X86Instr64bit.td
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45826
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 05:48:23 +0000 (05:48 +0000)]
add SDNPSideEffect node property declaration
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45825
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 05:45:39 +0000 (05:45 +0000)]
remove explicit sets of 'neverHasSideEffects' that can now be
inferred from the instr patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45824
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 05:40:54 +0000 (05:40 +0000)]
if an instr lacks a pattern, assume it has side effects (unless never has s-e is true).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45823
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 05:39:30 +0000 (05:39 +0000)]
start inferring 'no side effects'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45822
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 05:12:37 +0000 (05:12 +0000)]
get def use info more correct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45821
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 04:44:48 +0000 (04:44 +0000)]
Infer mayload
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45819
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 04:44:32 +0000 (04:44 +0000)]
add SDNPMayLoad to the 'load' sdnode definition. This is enough to get all the x86
instructions (with patterns) that load memory marked, for example.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45818
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 04:38:57 +0000 (04:38 +0000)]
realize that instructions who match intrinsics that read memory read memory.
Also, instructions with any nodes that are SDNPMayLoad also read memory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45817
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 04:16:31 +0000 (04:16 +0000)]
verify that the frame index is immutable before remat'ing (still disabled)
or being side-effect free.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45816
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 10 Jan 2008 03:12:54 +0000 (03:12 +0000)]
Don't use LiveVariables::VarInfo::DefInst.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45815
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Jan 2008 02:54:40 +0000 (02:54 +0000)]
Codegen improvement has reduced one spill.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45814
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Jan 2008 02:24:25 +0000 (02:24 +0000)]
Mark byval parameter stack objects mutable for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45813
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Jan 2008 02:18:37 +0000 (02:18 +0000)]
Add a isImmutable bit to StackObject. Fixed stack objects are immutable (in the function) unless specified otherwise.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45812
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Thu, 10 Jan 2008 02:03:30 +0000 (02:03 +0000)]
Emit unused EH frames for weak definitions on Darwin,
because assembler/linker can't cope with weak absolutes.
PR 1880.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45811
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 10 Jan 2008 01:36:43 +0000 (01:36 +0000)]
Get rid of all uses of LiveVariables::VarInfo::DefInst in favor of the equivalent API from
MachineRegisterInfo. Once all clients are switched over, the former will be going away.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45805
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 01:01:27 +0000 (01:01 +0000)]
provide def_* and use_* iterators in addition to reg_* iterators.
The first only returns definitions of a register, the second only
returns uses, the third returns both.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45803
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 10 Jan 2008 00:47:01 +0000 (00:47 +0000)]
Add more comments explaining the basics of how the decision of when to rename and when to insert
copies is made.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45799
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Jan 2008 00:37:26 +0000 (00:37 +0000)]
Do not use the stack pointer directly, issue a copyfromreg instead. Otherwise we can end up with something like ADD32ri %esp, x which two-address pass won't like.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45798
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 10 Jan 2008 00:33:11 +0000 (00:33 +0000)]
Get rid of the isKillInst predicate. LiveVariables already provides this information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45797
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 00:30:57 +0000 (00:30 +0000)]
Fix PR1845 and rdar://
5676945. Generic vectors smaller
than hardware supported type will be scalarized, so we
can infer their alignment from that info.
We now codegen pr1845 into:
_boolVectorSelect:
lbz r2, 0(r3)
stb r2, -16(r1)
blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45796
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 10 Jan 2008 00:30:38 +0000 (00:30 +0000)]
new testcase for PR1845
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45795
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 10 Jan 2008 00:09:10 +0000 (00:09 +0000)]
Remove comments that do not correspond to anything after recent refactoring.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45792
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 10 Jan 2008 00:01:41 +0000 (00:01 +0000)]
Copies need to be inserted before the first terminator, not at the end of the block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45791
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 9 Jan 2008 23:01:55 +0000 (23:01 +0000)]
Special copy SUnit's do not have SDNode's.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45787
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 9 Jan 2008 22:40:54 +0000 (22:40 +0000)]
Clean up StrongPHIElimination a bit, and add some more comments to the internal structures. There's
still more work to do on this front.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45783
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Wed, 9 Jan 2008 19:42:09 +0000 (19:42 +0000)]
Fix compile failures with g++-4.3.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45781
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 9 Jan 2008 19:28:50 +0000 (19:28 +0000)]
many cleanups and fixed, contributed by Sam Bishop
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45780
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 9 Jan 2008 10:41:39 +0000 (10:41 +0000)]
StrongPHIElim: Now with even fewer trivial bugs!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45775
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 9 Jan 2008 10:32:30 +0000 (10:32 +0000)]
Fix an infinite recursion bug in InsertCopies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45774
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 9 Jan 2008 06:19:05 +0000 (06:19 +0000)]
Fix some simple bugs. StrongPHIElimination now does not crash on 164.gzip.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45773
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 9 Jan 2008 02:16:44 +0000 (02:16 +0000)]
Fix sse2.psrl.w and sse2.psrl.q definitions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45772
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 9 Jan 2008 01:01:17 +0000 (01:01 +0000)]
Fix llvm-ld -Xlinker, patch by Daniel Teske!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45770
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 9 Jan 2008 00:37:18 +0000 (00:37 +0000)]
add a testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45768
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 9 Jan 2008 00:17:57 +0000 (00:17 +0000)]
add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45766
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jan 2008 23:08:06 +0000 (23:08 +0000)]
Make load->store deletion a bit smarter. This allows us to compile this:
void test(long long *P) { *P ^= 1; }
into just:
_test:
movl 4(%esp), %eax
xorl $1, (%eax)
ret
instead of code like this:
_test:
movl 4(%esp), %ecx
xorl $1, (%ecx)
movl 4(%ecx), %edx
movl %edx, 4(%ecx)
ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45762
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 8 Jan 2008 21:54:52 +0000 (21:54 +0000)]
Rename registers that do not need copies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45759
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 8 Jan 2008 21:51:53 +0000 (21:51 +0000)]
Crashes llc when using Chris's new legalization logic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45758
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 8 Jan 2008 21:05:59 +0000 (21:05 +0000)]
Added "getRoot()" to ImmutableMap.
Made the ctor for ImmutableMap to construct a map from an AVL tree public.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45756
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Tue, 8 Jan 2008 19:38:55 +0000 (19:38 +0000)]
Fixed 80 col. violation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45752
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jan 2008 18:05:21 +0000 (18:05 +0000)]
add a mayLoad property for machine instructions, a correlary to mayStore.
This is currently not set by anything.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45748
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 8 Jan 2008 10:06:15 +0000 (10:06 +0000)]
Use size_t to store Pos, avoid truncating value
on 64-bit builds. Analysis and original patch
by Török Edwin. Code audit found another place
with the same problem, also fixed here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45746
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jan 2008 07:23:51 +0000 (07:23 +0000)]
Implement PR1795, an instcombine hack for forming GEPs with integer pointer arithmetic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45745
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jan 2008 07:02:44 +0000 (07:02 +0000)]
add match support for casts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45744
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 8 Jan 2008 06:52:51 +0000 (06:52 +0000)]
remove darwin/i386 t-t
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45743
91177308-0d34-0410-b5e6-
96231b3b80d8