Chris Lattner
d68b203337
Fix PR4040: APInt's string constructor is too strict
...
patch by Jeff Yasskin!
llvm-svn: 70058
2009-04-25 18:34:04 +00:00
Chris Lattner
b47e34ac59
add support for detecting process features on win64, patch by
...
Nicolas Capens!
llvm-svn: 70057
2009-04-25 18:27:23 +00:00
Dan Gohman
1031d09a38
Refactor the code to grab the low and high parts of a value
...
using EXTRACT_ELEMENT into a utility function.
llvm-svn: 70056
2009-04-25 17:55:53 +00:00
Dan Gohman
d13f1a3b59
Return null instead of false, as appropriate.
...
llvm-svn: 70054
2009-04-25 17:28:45 +00:00
Dan Gohman
a7fae1f865
Add several more icmp simplifications. Transform signed comparisons
...
into unsigned ones when the operands are known to have the same
sign bit value.
llvm-svn: 70053
2009-04-25 17:12:48 +00:00
Dan Gohman
60349bb21e
Add a top-level comment about DAGCombiner's role in the compiler.
...
llvm-svn: 70052
2009-04-25 17:09:45 +00:00
Dan Gohman
9eb5ba6eb7
Handle ands with 0 and shifts by 0 correctly. These aren't
...
common, but indvars shouldn't crash on them. This fixes PR4054.
llvm-svn: 70051
2009-04-25 17:05:40 +00:00
Torok Edwin
285a5fb1d5
Fix g++-4.4.0 warning, it was causing llvm-nm to fail on wrapped BC files:
...
Path.cpp:59: warning: case label value exceeds maximum value for type
magic[0] is a (signed) char, but some case values are unsigned (e.g. 0xde).
When magic[0] was 0xde, the switch has taken the default branch instead of case
0xde branch.
Apparently this was the behaviour with older versions of gcc too, but not with g++.
Now g++-4.4 behaves as gcc, and ignores unsigned case values out of range signed
range.
llvm-svn: 70038
2009-04-25 10:25:12 +00:00
Evan Cheng
696a04eba2
Do not share a single unknown val# for all the live ranges merged into a physical sub-register live interval. When coalescer is merging in clobbered virtaul register live interval into a physical register live interval, give each virtual register val# a separate val# in the physical register live interval. Otherwise, the coalescer would have lost track of the definitions information it needs to make correct coalescing decisions.
...
llvm-svn: 70026
2009-04-25 09:25:19 +00:00
Sanjiv Gupta
9093a67350
Fixed the gep example for i16 type indices.
...
llvm-svn: 70019
2009-04-25 07:27:44 +00:00
Bob Wilson
162870a4b3
Change LowerCallResult method so that CCValAssign::BCvt can be used with
...
f64 types. This is not used for anything yet.
llvm-svn: 70006
2009-04-25 00:33:20 +00:00
Dale Johannesen
493c3bcdc0
Fix PR 4057, a crash doing float->char const folding.
...
This particular one is undefined behavior (although this
isn't related to the crash), so it will no longer do it
at compile time, which seems better.
llvm-svn: 69990
2009-04-24 21:34:13 +00:00
Bob Wilson
0ac8a0cf95
Adjust a comment to reflect what the code does. Splitting a 64-bit argument
...
between registers and the stack may be required with the APCS ABI, but it
isn't tied to using a particular version of the ARM architecture.
llvm-svn: 69978
2009-04-24 17:05:01 +00:00
Bob Wilson
2a47f01759
Fix up some problems with getCopyToReg and getCopyFromReg nodes being
...
chained and "flagged" together. I also made a few changes to handle the
chain and flag values more consistently. I found these problems by
inspection so I'm not aware of anything that breaks because of them
(thus no testcase).
llvm-svn: 69977
2009-04-24 17:00:36 +00:00
Gabor Greif
228f28e1ac
Use a bigger hammer to coerce subversion into english.
...
Patch by Benjamin Kramer!
llvm-svn: 69976
2009-04-24 17:00:03 +00:00
David Greene
a28b42f818
Fix multiclass inheritance to limit value resolution to new defs added
...
by base multiclasses. Do not attempt to alter defs from previous base
multiclasses. This fixes multiple multiclass inheritance.
llvm-svn: 69974
2009-04-24 16:55:41 +00:00
Bob Wilson
1067abd956
Remove unnecessary references to f32 types. After specifying that f32
...
should be bit-converted to i32, it is sufficient to list only i32 in
subsequent definitions.
llvm-svn: 69973
2009-04-24 16:55:25 +00:00
Rafael Espindola
b01a03d6d5
Add LTO_SYMBOL_DEFINITION_WEAKUNDEF, use that on the gold plugin.
...
llvm-svn: 69972
2009-04-24 16:55:21 +00:00
Sanjiv Gupta
14c405828e
Fixed spaces and the getelementpointer example with i16 type indices.
...
llvm-svn: 69971
2009-04-24 16:38:13 +00:00
Rafael Espindola
4e7a0bf1f1
Fix PR 4004 by including the call to __tls_get_addr in X86tlsaddr. This is not
...
very elegant, but neither is the tls specification :-(
llvm-svn: 69968
2009-04-24 12:59:40 +00:00
Rafael Espindola
0b1037ad26
Revert 69952. Causes testsuite failures on linux x86-64.
...
llvm-svn: 69967
2009-04-24 12:40:33 +00:00
Chris Lattner
961e0a34e0
fix a typo noticed by duncan
...
llvm-svn: 69962
2009-04-24 06:37:12 +00:00
Chris Lattner
e90528cac5
"I got annoyed at the compiler warnings from ConstantInt::get(Ty, -1,
...
true), and casts make me nervous and are verbose anyway, so here's a
ConstantInt::getSigned(Ty, int64_t) method. Just overloading
ConstantInt::get() to take an int64_t too would cause ambiguous
overload errors."
Patch by Jeffrey Yasskin!
llvm-svn: 69958
2009-04-24 05:30:14 +00:00
Nate Begeman
c1a09c7dfa
PR2957
...
ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle
mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes
as the shuffle mask. A value of -1 represents UNDEF.
In addition to eliminating the creation of illegal BUILD_VECTORS just to
represent shuffle masks, we are better about canonicalizing the shuffle mask,
resulting in substantially better code for some classes of shuffles.
A clean up of x86 shuffle code, and some canonicalizing in DAGCombiner is next.
llvm-svn: 69952
2009-04-24 03:42:54 +00:00
Dan Gohman
63dab69b36
Instead of requiring TLI.LowerCallTo to return an ISD::BUILD_PAIR,
...
use ISD::EXTRACT_ELEMENT. SelectionDAG has a special fast-path for
the cast of an EXTRACT_ELEMENT with a BUILD_PAIR operand, for the
common case.
llvm-svn: 69948
2009-04-24 02:40:23 +00:00
Sanjiv Gupta
f1177e1be7
Allow i16 type indices to gep.
...
llvm-svn: 69946
2009-04-24 02:37:54 +00:00
Dan Gohman
9d13b714f5
Factor out a bit of code that appears in several places into a
...
utility function.
llvm-svn: 69937
2009-04-23 23:13:24 +00:00
Dan Gohman
313018c1d3
Handle Void types in ComputeValueVTs. This doesn't currently occur,
...
but this change makes the code more general and easier to adapt for
new purposes.
llvm-svn: 69935
2009-04-23 22:50:03 +00:00
Dan Gohman
46ab8008a8
Fix spurious indentation in a comment.
...
llvm-svn: 69934
2009-04-23 22:41:05 +00:00
David Greene
ddac45edb9
Fix a documentation bug.
...
llvm-svn: 69923
2009-04-23 21:27:58 +00:00
David Greene
a92a50c7c2
Make BinOps typed and require a type specifier for !nameconcat. This
...
allows binops to be used in typed contexts such as when passing
arguments to classes.
llvm-svn: 69921
2009-04-23 21:25:15 +00:00
Evan Cheng
ff776c8193
Update comments.
...
llvm-svn: 69919
2009-04-23 20:39:31 +00:00
Evan Cheng
f20fb20367
Fix an obvious type.
...
llvm-svn: 69918
2009-04-23 20:18:13 +00:00
Dan Gohman
3499a53e1d
Explicitly pass -tailcallopt=false to these tests so that they
...
work as intended no matter what the default setting of that
option is.
llvm-svn: 69911
2009-04-23 19:39:41 +00:00
Dale Johannesen
ab02315fdb
Testcase for 69795.
...
llvm-svn: 69901
2009-04-23 18:04:04 +00:00
Dan Gohman
ea9a6d22d3
Fix an error in this test.
...
llvm-svn: 69893
2009-04-23 15:22:28 +00:00
Dan Gohman
c0f47d6ec1
Change SCEVExpander's expandCodeFor to provide more flexibility
...
with the persistent insertion point, and change IndVars to make
use of it. This fixes a bug where IndVars was holding on to a
stale insertion point and forcing the SCEVExpander to continue to
use it.
This fixes PR4038.
llvm-svn: 69892
2009-04-23 15:16:49 +00:00
Sanjiv Gupta
0457bf4420
Banksel immediate constant will always immediately follow the GA/ES, so scan an insn from beginnin to find out the banksel operand.
...
llvm-svn: 69883
2009-04-23 10:34:58 +00:00
Nick Lewycky
32cfba44df
Simplify trunc(extend(x)) in SCEVs, just for completeness. Also fix some odd
...
whitespace in the same file.
llvm-svn: 69870
2009-04-23 05:15:08 +00:00
Owen Anderson
0c0498a365
Testcase for PR3909.
...
llvm-svn: 69868
2009-04-23 04:33:42 +00:00
Owen Anderson
caa90b2561
Testcase for PR2639.
...
llvm-svn: 69867
2009-04-23 04:30:52 +00:00
Owen Anderson
bf7354995a
Testcase for PR2537.
...
llvm-svn: 69866
2009-04-23 04:26:42 +00:00
Owen Anderson
f04f0e15c7
Fix typo.
...
llvm-svn: 69865
2009-04-23 04:24:19 +00:00
Owen Anderson
a1a09bc01f
Testcase for PR3085.
...
llvm-svn: 69863
2009-04-23 04:21:14 +00:00
Owen Anderson
d4b3279a3f
Add testcase from PR3086.
...
llvm-svn: 69862
2009-04-23 04:14:03 +00:00
Dan Gohman
6a4629e856
Add support for printing MO_ExternalSymbol operands in
...
memory operand tuples. This doesn't ever come up in normal
code however.
llvm-svn: 69848
2009-04-23 00:57:37 +00:00
Dan Gohman
4523a11557
Add more ulimit limits, to catch more kinds of runaway behavior.
...
llvm-svn: 69847
2009-04-23 00:28:31 +00:00
Owen Anderson
d2cf86afcb
Use the testcase from PR2791.
...
llvm-svn: 69846
2009-04-23 00:15:26 +00:00
Evan Cheng
bdfff0ba69
Make sure both operands have binary instructions have the same type.
...
llvm-svn: 69844
2009-04-22 23:39:28 +00:00
Evan Cheng
faa208ae5f
A few more places where the check of use_empty is needed.
...
llvm-svn: 69842
2009-04-22 23:09:16 +00:00