Commit Graph

34351 Commits

Author SHA1 Message Date
Devang Patel
8893ca6dab Do not eliminate loop when it is invalid to do so. For example,
for(int i = 0; i < N; i++) {
	if ( i == XYZ) {
		A;
	else
		B;
	}
	C;
	D;
}



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42058 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 21:01:05 +00:00
Devang Patel
5279d064bc Skeleton for transformations to truncate loop's iteration space.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42054 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 20:39:48 +00:00
Gordon Henriksen
8c33da5dc4 Fix for PR1633: Verifier doesn't fully verify GC intrinsics
LLVM now enforces the following prototypes for the write barriers:

<ty>* @llvm.gcread(<ty2>*, <ty>**)
void @llvm.gcwrite(<ty>*, <ty2>*, <ty>**)

And for @llvm.gcroot, the first stack slot is verified to be an alloca or a 
bitcast of an alloca.

Fixes test/CodeGen/Generic/GC/lower_gcroot.ll, which violated these.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42051 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 20:30:04 +00:00
Dale Johannesen
ca8035e356 Remove RSTRegClass case from loadRegFromStackSlot
and storeRegToStackSlot.  Evan and I concluded this
should never be needed and it appears to be true.
(It if is needed, adjustment would be needed for
long double to work.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42049 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 20:15:38 +00:00
Devang Patel
161660e6d2 Fix comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42048 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 20:07:40 +00:00
Devang Patel
ffe3612af4 This is not ideal but unbreaks build failure.
APInt::dump() is inside #ifndef NDEBUG, however SelectionDAG dump() routines are not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42047 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 20:03:03 +00:00
Dale Johannesen
1abac0d725 Implement x86 long double in jit (not really
complete, but common cases work)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42043 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 18:44:13 +00:00
Chris Lattner
76c1b97e40 Merge DenseMapKeyInfo & DenseMapValueInfo into DenseMapInfo
Add a new DenseMapInfo::isEqual method to allow clients to redefine
the equality predicate used when probing the hash table.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42042 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 18:34:04 +00:00
Daniel Berlin
430817ba18 That's what i get for using carbon emacs in a terminal
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42040 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 18:05:59 +00:00
Daniel Berlin
8180cf65a5 Fix iterator so it doesn't sometimes report bits that aren't in the bitmap
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42039 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 18:04:21 +00:00
Dan Gohman
e1b50639a8 Add a utility function to SDOperand for testing if a value is unused.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42038 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 17:44:31 +00:00
Evan Cheng
7d6ff3a25d X86ISD::TEST is dead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42037 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 17:42:53 +00:00
Chris Lattner
10814820f6 regenerate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42036 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 17:40:48 +00:00
Dan Gohman
5d066ff7f0 Instcombine x-((x/y)*y) into a remainder operator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42035 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 17:31:57 +00:00
Gordon Henriksen
baa2fa5823 Adding myself to credits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42032 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 17:04:44 +00:00
Dan Gohman
a0a7c1de9c Add 64-bit jmp instructions to the list of instructions that
can terminate a block with no fall-through.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42029 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 15:19:08 +00:00
Dan Gohman
959062475d Use xorl instead of xorq to enter a zero into a 64-bit register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42027 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 14:55:08 +00:00
Dan Gohman
5f6913cecd Emit integer x<1 as x<=0, as comparisons with zero (now includeing
64-bit) can use test instead of cmp with an immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42026 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 14:49:27 +00:00
Dan Gohman
11f7bfbb83 Use "test reg,reg" in place of "cmp reg,0" for 64-bit operands. This was
previously only done for 32-bit and smaller operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42024 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 14:35:24 +00:00
Duncan Sands
cdb6d929d0 Factor the trampoline transformation into a subroutine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42021 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 10:26:40 +00:00
Dale Johannesen
53f0bc1b25 Implement x86 long double (uses host long double,
so only works on x86 target).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42019 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17 00:38:27 +00:00
Daniel Berlin
c6d939818b Fix bug in andersen's related to test_and_set.
Add operator == and != to SparseBitVector.
Simplify code for test_and_set


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42018 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16 23:59:53 +00:00
Daniel Berlin
7f44657c2f Fix a few bugs related to zero'ing of elements
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42017 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16 22:31:47 +00:00
Daniel Berlin
aad158891c Rewrite of andersen's to be about 100x faster, cleaner, and begin to support field sensitivity
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42016 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16 21:45:02 +00:00
Bill Wendling
bd626b885f Follow-up to patch r41999. Make the conditional that emits the personality stub
match the conditional that turns on exception handling emittion in the asm
printer.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42008 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16 19:21:08 +00:00
Dale Johannesen
118cd9dbba Adjust per revew comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42002 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16 16:51:49 +00:00
Bill Wendling
656ab16c56 Only emit the personality function as a global value if the backend actually
supports it. This solves this error on the Darwin x86-64 platform:

$ cat testcase.ii
struct A {
  A();
};

A *bork() {
  return new A;
}
$ llvm-g++ -arch x86_64 -c testcase.ii
/var/tmp//cc3U8fd8.s:52:unknown section type: non_lazy_symbol_pointers
/var/tmp//cc3U8fd8.s:52:Rest of line ignored. 1st junk character valued 76 (L).
/var/tmp//cc3U8fd8.s:53:Unknown pseudo-op: .indirect_symbol
/var/tmp//cc3U8fd8.s:53:Rest of line ignored. 1st junk character valued 95 (_).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41999 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16 10:36:17 +00:00
Owen Anderson
2486686689 Be more careful when constant-folding PHI nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41998 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16 08:04:16 +00:00
Chris Lattner
402a7888a9 remove obsolete tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41984 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-15 17:38:04 +00:00
Chris Lattner
5bda9e49ec Fix PR1666, SPASS with the CBE and 254.gap with the CBE.
GCC optimizes away things like ptr < NULL  to false.  To "fix" this,
have the CBE emit casts of pointers to intptr_t when doing relational
pointer comparisons.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41983 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-15 06:51:03 +00:00
Chris Lattner
b90795fd79 New testcase for PR1662. GCC trees are horrible :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41979 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-15 05:46:41 +00:00
Dan Gohman
e47f1f9633 Add patterns for SHLD64* and SHRD64*.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41975 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 23:17:45 +00:00
Chris Lattner
2204906892 fix a gcc warning: comparison between signed and unsigned integer expressions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41972 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 22:57:00 +00:00
Owen Anderson
7e9edda51d Remove RLE from the headers, since the pass itself is gone now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41971 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 22:54:46 +00:00
Owen Anderson
86f91e1757 Remove RLE. It is subsumed by GVN.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41968 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 22:33:52 +00:00
Dale Johannesen
9e3d3abd93 Remove the assumption that FP's are either float or
double from some of the many places in the optimizers
it appears, and do something reasonable with x86
long double.
Make APInt::dump() public, remove newline, use it to
dump ConstantSDNode's.
Allow APFloats in FoldingSet.
Expand X86 backend handling of long doubles (conversions
to/from int, mostly).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41967 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 22:26:36 +00:00
Evan Cheng
24f2ea3971 Add implicit def of EFLAGS on those instructions that may modify flags.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41962 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 21:48:26 +00:00
Dan Gohman
f82e1e66ce And an FoldingSetImpl::NodeID::AddInteger overload for int64_t, to avoid
ambiguity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41960 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 20:48:42 +00:00
Dan Gohman
99da4e719c Add explicit triples to avoid default behavior that varies by host.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41959 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 20:37:18 +00:00
Dan Gohman
92dfe2001e Remove isReg, isImm, and isMBB, and change all their users to use
isRegister, isImmediate, and isMachineBasicBlock, which are equivalent,
and more popular.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41958 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 20:33:02 +00:00
Dan Gohman
693f541526 Change "tmp." to "tmp" for temporaries created by ScalarEvolutionExpander
for consistency with many other transforms.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41957 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 20:11:40 +00:00
Dan Gohman
cb648f90a2 Remove spurious consts. This fixes warnings with compilers that
are strict about such things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41956 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 20:08:19 +00:00
Rafael Espindola
7effac5475 Add support for functions with byval arguments on x86
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41953 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 15:48:13 +00:00
Chris Lattner
5e6e494a97 Fix a logic error in ValueIsOnlyUsedLocallyOrStoredToOneGlobal that caused
miscompilation of 188.ammp.  Reject select and bitcast in 
ValueIsOnlyUsedLocallyOrStoredToOneGlobal because RewriteHeapSROALoadUser can't handle it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41950 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 03:41:21 +00:00
Chris Lattner
ce4e748565 silence a bogus gcc warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41949 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 03:07:24 +00:00
Evan Cheng
fdd9f006bc Fix comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41947 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 01:57:02 +00:00
Tanya Lattner
5c70954d97 Change to 2.2svn.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41941 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 01:24:13 +00:00
Bill Wendling
c68491069a Temporary reverting r41817
(http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070910/053370.html). It's
causing SPASS to fail.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41938 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14 01:13:55 +00:00
Chris Lattner
309f20fc45 Teach GlobalLoadUsesSimpleEnoughForHeapSRA and the SROA rewriter how to handle
a limited form of PHI nodes.  This finally fixes PR1639, speeding 179.art up
from 7.84s to 3.13s on PPC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41933 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-13 21:31:36 +00:00
Chris Lattner
a637a8b1e7 be tolerant of PHI nodes when rewriting heap SROA code. This is a step
along the way of PR1639


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41930 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-13 18:00:31 +00:00