Commit Graph

36159 Commits

Author SHA1 Message Date
Nate Begeman
2281a99141 If custom lowering of insert element fails, the result Val will be 0.
Don't overwrite a variable used by the fallthrough code path in this
case.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45630 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 20:47:37 +00:00
Chris Lattner
54b62f3af5 Fix build issue on certain compilers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45629 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 20:15:42 +00:00
Gordon Henriksen
86737665b8 Refactoring the x86 and x86-64 calling convention implementations,
unifying the copied algorithms and saving over 500 LOC. There should
be no functionality change, but please test on your favorite x86
target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45627 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 16:56:59 +00:00
Bill Wendling
df303bd7f2 Chris and Evan noticed that this check was compleatly fubared. I was
checking that there was a from a global instead of a load from the stub
for a global, which is the one that's safe to hoist.

Consider this program:

volatile char G[100];
int B(char *F, int N) {
  for (; N > 0; --N)
    F[N] = G[N];
}

In static mode, we shouldn't be hoisting the load from G:

$ llc -relocation-model=static -o - a.bc -march=x86 -machine-licm

LBB1_1: # bb.preheader
        leal    -1(%eax), %edx
        testl   %edx, %edx
        movl    $1, %edx
        cmovns  %eax, %edx
        xorl    %esi, %esi
LBB1_2: # bb
        movb    _G(%eax), %bl
        movb    %bl, (%ecx,%eax)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45626 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 09:18:04 +00:00
Chris Lattner
e430e1c072 The current impl is really trivial, add some comments about how it can be made better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45625 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 06:47:58 +00:00
Chris Lattner
3c42f12118 allow sinking to be enabled for the jit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45624 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 06:14:16 +00:00
Chris Lattner
f29495a22f enable sinking and licm of loads from the argument area. I'd like to enable this
for remat, but can't due to an RA bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45623 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 06:10:42 +00:00
Chris Lattner
3b5a221f81 simplify some code by using shorter accessors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45622 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 05:28:30 +00:00
Chris Lattner
a83b34bbeb revert my previous patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45621 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 05:26:26 +00:00
Chris Lattner
505d4abd05 factor some code better to avoid redundancy between
isReallySideEffectFree and isReallyTriviallyReMaterializable.  Why is a load from
a global considered side-effect-free but not rematable?


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45620 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 05:19:56 +00:00
Chris Lattner
e9648f8981 getting the pic base has no side effects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45618 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 03:54:32 +00:00
Chris Lattner
ba84ed7e92 don't sink anything with side effects, this makes lots of stuff work, but sinks almost nothing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45617 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 02:33:22 +00:00
Evan Cheng
2a3e08b596 X86 JIT PIC jumptable support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45616 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 02:26:58 +00:00
Chris Lattner
9bb459b554 fix a common crash.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45614 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 01:39:17 +00:00
Chris Lattner
5a62d0a038 remove a couple more unsafe xforms in the face of overflow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45613 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 01:22:42 +00:00
Chris Lattner
b656601943 remove the (x-y) < 0 comparison xform, it miscompiles
things that are not equality comparisons, for example:
   (2147479553+4096)-2147479553 < 0    !=   (2147479553+4096) < 2147479553


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45612 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 01:18:20 +00:00
Owen Anderson
a393cd3306 I should not be allowed to commit when sleepy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45608 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 00:48:55 +00:00
Owen Anderson
a997c498e0 Didn't mean to commit this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45607 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 00:43:37 +00:00
Owen Anderson
699f5faed5 Didn't mean to commit this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45606 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 00:42:45 +00:00
Evan Cheng
0475ab58b8 Combine MovePCtoStack + POP32r into one instruction MOVPC32r so it can be moved if needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45605 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-05 00:41:47 +00:00
Owen Anderson
d94b6a16fe Move some more functionality from MRegisterInfo to TargetInstrInfo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45603 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 23:57:37 +00:00
Bill Wendling
67d65bb69d Don't recalculate the loop info and loop dominators analyses if they're
preserved.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45596 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 20:54:55 +00:00
Wojciech Matyjewicz
b670a1737b fix typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45595 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 20:04:08 +00:00
Wojciech Matyjewicz
21a715a124 fix typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45594 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 20:02:18 +00:00
Duncan Sands
ad04cb28c5 Testcase with non-integer "bitfields" (in quotes,
since they didn't actually need to be bitfields,
though they are marked as such).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45588 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 17:31:56 +00:00
Gordon Henriksen
6321460440 Fix a typo in llvm.mli noticed by Alain Frisch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45585 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 13:21:02 +00:00
Duncan Sands
e2940c3b70 Testcase for PR1386.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45583 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 13:15:39 +00:00
Bill Wendling
3275908821 doc_code-ify some code in this doc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45581 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 12:04:32 +00:00
Gordon Henriksen
96a6931c0c Quote a path in the Ocaml makefile which is likely to include spaces on Windows.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45580 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 11:55:57 +00:00
Evan Cheng
991500e329 Unbreak tailcall opt in JIT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45576 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 10:50:28 +00:00
Evan Cheng
be8c03fc66 X86 PIC JIT support fixes: encoding bugs, add lazy pointer stubs support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45575 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 10:46:51 +00:00
Bill Wendling
2674d71df0 80-column violations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45574 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 08:59:18 +00:00
Bill Wendling
d5da7048c2 Add that this preserves some analyses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45573 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 08:48:49 +00:00
Bill Wendling
cc8f603f53 Move option to enable machine LICM into LLVMTargetMachine.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45572 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 08:11:03 +00:00
Bill Wendling
b082c6f5d9 Call the parent's getAnalysisUsage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45571 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 07:50:05 +00:00
Chris Lattner
c4ce73f666 Add a really quick hack at a machine code sinking pass, enabled with --enable-sinking.
It is missing validity checks, so it is known broken.  However, it is powerful enough
to compile this contrived code:

void test1(int C, double A, double B, double *P) {
  double Tmp = A*A+B*B;
  *P = C ? Tmp : A;
}

into:

_test1:
	movsd	8(%esp), %xmm0
	cmpl	$0, 4(%esp)
	je	LBB1_2	# entry
LBB1_1:	# entry
	movsd	16(%esp), %xmm1
	mulsd	%xmm1, %xmm1
	mulsd	%xmm0, %xmm0
	addsd	%xmm1, %xmm0
LBB1_2:	# entry
	movl	24(%esp), %eax
	movsd	%xmm0, (%eax)
	ret

instead of:

_test1:
	movsd	16(%esp), %xmm0
	mulsd	%xmm0, %xmm0
	movsd	8(%esp), %xmm1
	movapd	%xmm1, %xmm2
	mulsd	%xmm2, %xmm2
	addsd	%xmm0, %xmm2
	cmpl	$0, 4(%esp)
	je	LBB1_2	# entry
LBB1_1:	# entry
	movapd	%xmm2, %xmm1
LBB1_2:	# entry
	movl	24(%esp), %eax
	movsd	%xmm1, (%eax)
	ret

woo.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45570 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 07:36:53 +00:00
Chris Lattner
ac69582664 remove dead #includes and reorder the rest.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45569 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 06:41:45 +00:00
Chris Lattner
9027b3cc7f Fix PR1896
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45568 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 05:04:53 +00:00
Chris Lattner
331bf92fb5 Change the builtin matcher to emit a decision tree, which should help out
the VC++ 'nesting depth' issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45567 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 04:38:35 +00:00
Chris Lattner
8f8c7b7c26 fix nesting issues.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45566 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 04:34:14 +00:00
Chris Lattner
c7d3ab365f fix validation issues.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45565 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 04:33:49 +00:00
Chris Lattner
4f69f46d3d improve the description of types, patch by Alain Frisch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45564 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 04:32:38 +00:00
Chris Lattner
81442c0d83 Don't let IntrinsicID be uninitialized if it doesn't match.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45563 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 03:32:52 +00:00
Evan Cheng
165b60de0b Correct order of parameters.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45562 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-04 02:22:21 +00:00
Bill Wendling
f840f87baf Remove the default else. This was ending in code that looked like this:
if (!strcmp(Target, "x86")) {
  // ...
}
else
  IntrinsicID = Intrinsic::not_intrinsic;


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45557 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-03 23:02:16 +00:00
Chris Lattner
c45f5c7652 Remove symbols that don't exist, remove tabs, fix comment typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45553 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-03 22:15:32 +00:00
Chuck Rose III
0b589912a8 Adding new files to win32 build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45545 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-03 19:53:03 +00:00
Gordon Henriksen
069266b52f Ignoring output files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45538 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-03 17:42:08 +00:00
Chris Lattner
2e438ca03b add info on walking preds/succs of a block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45537 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-03 16:56:04 +00:00
Gordon Henriksen
ae636f8e99 First steps in in X86 calling convention cleanup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45536 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-03 16:47:34 +00:00