Dan Gohman
7e7f34ab55
Fix a typo in a comment.
...
llvm-svn: 85120
2009-10-26 15:55:24 +00:00
Chris Lattner
7f9ddaf7e3
reapply r85085 with a bugfix to avoid infinite looping.
...
All of the 'demorgan' related xforms need to use
dyn_castNotVal, not m_Not.
llvm-svn: 85119
2009-10-26 15:40:07 +00:00
Dan Gohman
3d0c010ee4
Make LSR's OptimizeShadowIV ignore induction variables with negative
...
strides for now, because it doesn't handle them correctly. This fixes a
miscompile of SingleSource/Benchmarks/Misc-C++/ray.
This problem was usually hidden because indvars transforms such induction
variables into negations of canonical induction variables.
llvm-svn: 85118
2009-10-26 15:32:57 +00:00
Evan Cheng
4443642def
- Revert some changes from 85044, 85045, and 85047 that broke x86_64 tests and
...
bootstrapping. It's not safe to leave identity subreg_to_reg and insert_subreg
around.
- Relax register scavenging to allow use of partially "not-live" registers. It's
common for targets to operate on registers where the top bits are undef. e.g.
s0 =
d0 = insert_subreg d0<undef>, s0, 1
...
= d0
When the insert_subreg is eliminated by the coalescer, the scavenger used to
complain. The previous fix was to keep to insert_subreg around. But that's
brittle and it's overly conservative when we want to use the scavenger to
allocate registers. It's actually legal and desirable for other instructions
to use the "undef" part of d0. e.g.
s0 =
d0 = insert_subreg d0<undef>, s0, 1
...
s1 =
= s1
= d0
We probably need add a "partial-undef" marker on machine operand so the
machine verifier would not complain.
llvm-svn: 85091
2009-10-26 04:56:07 +00:00
Evan Cheng
7dad155ec7
Revert 85085. It causes infinite looping during llvm-gcc build.
...
llvm-svn: 85090
2009-10-26 03:51:32 +00:00
Edward O'Callaghan
43d45b084e
Fix gmake check for AuroraUX triple.
...
llvm-svn: 85088
2009-10-26 02:37:56 +00:00
Chandler Carruth
766362c707
Move DataTypes.h to include/llvm/System, update all users. This breaks the last
...
direct inclusion edge from System to Support.
llvm-svn: 85086
2009-10-26 01:35:46 +00:00
Chris Lattner
192549ef70
Implement PR3266 & PR5276, folding:
...
not (or (icmp, icmp)) -> and(icmp, icmp)
llvm-svn: 85085
2009-10-26 01:06:31 +00:00
Chris Lattner
c88c01adb6
convert or.ll to filecheck and merge or2 into it.
...
llvm-svn: 85083
2009-10-25 23:47:55 +00:00
Chandler Carruth
88cbba7934
Remove stale reference to ThreadSupport.h.
...
llvm-svn: 85082
2009-10-25 23:41:56 +00:00
Chris Lattner
e3508acbef
fix PR5295 where the .ll parser didn't reject a function after a global
...
or global after a function with conflicting names. Update some testcases
that were accidentally depending on this behavior.
llvm-svn: 85081
2009-10-25 23:22:50 +00:00
Daniel Dunbar
4a18e32e25
Suppress -Asserts warning.
...
llvm-svn: 85078
2009-10-25 23:11:06 +00:00
Chris Lattner
2f00168ed8
fix PR5186: the JIT shouldn't try to codegen available_externally
...
functions it should just look them up like declarations.
llvm-svn: 85077
2009-10-25 23:06:42 +00:00
Chandler Carruth
6e9cf74969
Remove unused includes.
...
llvm-svn: 85074
2009-10-25 22:38:41 +00:00
Jim Grosbach
eae0e509c0
of -> or
...
llvm-svn: 85065
2009-10-25 19:14:48 +00:00
Jim Grosbach
29b842a6c1
80-column cleanup
...
llvm-svn: 85064
2009-10-25 18:55:46 +00:00
Sanjiv Gupta
18574b11b0
Reapply 85006 with a minor fix.
...
llvm-svn: 85052
2009-10-25 08:14:11 +00:00
Evan Cheng
a308ae55a5
Add a couple of ARM cross-rc coalescing tests.
...
llvm-svn: 85051
2009-10-25 08:01:41 +00:00
Evan Cheng
1c169777ca
Update tests.
...
llvm-svn: 85050
2009-10-25 07:53:48 +00:00
Evan Cheng
d748ce45ab
Add ARM getMatchingSuperRegClass to handle S / D / Q cross regclass coalescing.
...
llvm-svn: 85049
2009-10-25 07:53:28 +00:00
Evan Cheng
77ecc0adc5
Don't forget subreg indices when folding load / store.
...
llvm-svn: 85048
2009-10-25 07:52:27 +00:00
Evan Cheng
859d9f3b07
Use isIdentityCopy. Fix a bozo bug (flipped condition) in InvalidateRegDef.
...
llvm-svn: 85047
2009-10-25 07:51:47 +00:00
Evan Cheng
a6242a5d04
Code clean up.
...
llvm-svn: 85046
2009-10-25 07:49:57 +00:00
Evan Cheng
92ad633488
Do not delete identity insert_subreg even if dest is virtual. Let later passes delete them. This avoids register scavenger complain.
...
llvm-svn: 85045
2009-10-25 07:48:51 +00:00
Evan Cheng
2a58cf4921
Add isIdentityCopy to check for identity copy (or extract_subreg, etc.)
...
llvm-svn: 85044
2009-10-25 07:47:07 +00:00
Nick Lewycky
2b8400628d
Remove includes of Support/Compiler.h that are no longer needed after the
...
VISIBILITY_HIDDEN removal.
llvm-svn: 85043
2009-10-25 06:57:41 +00:00
Nick Lewycky
711c726c97
Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.
...
Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.
llvm-svn: 85042
2009-10-25 06:33:48 +00:00
Chris Lattner
81c06b943c
this is done.
...
llvm-svn: 85041
2009-10-25 06:17:51 +00:00
Chris Lattner
d8db8b6952
Teach FoldBitCast to be able to handle bitcasts from (e.g.) i128 -> <4 x float>.
...
This allows us to simplify this:
union vec2d {
double e[2];
double v __attribute__((vector_size(16)));
};
typedef union vec2d vec2d;
static vec2d a={{1,2}}, b={{3,4}};
vec2d foo () {
return (vec2d){ .v = a.v + b.v * (vec2d){{5,5}}.v };
}
down to:
define %0 @foo() nounwind ssp {
entry:
%mrv5 = insertvalue %0 undef, double 1.600000e+01, 0 ; <%0> [#uses=1]
%mrv6 = insertvalue %0 %mrv5, double 2.200000e+01, 1 ; <%0> [#uses=1]
ret %0 %mrv6
}
instead of:
define %0 @foo() nounwind ssp {
entry:
%mrv5 = insertvalue %0 undef, double extractelement (<2 x double> fadd (<2 x double> fmul (<2 x double> bitcast (<1 x i128> <i128 85174437667405312423031577302488055808> to <2 x double>), <2 x double> <double 3.000000e+00, double 4.000000e+00>), <2 x double> <double 1.000000e+00, double 2.000000e+00>), i32 0), 0 ; <%0> [#uses=1]
%mrv6 = insertvalue %0 %mrv5, double extractelement (<2 x double> fadd (<2 x double> fmul (<2 x double> bitcast (<1 x i128> <i128 85174437667405312423031577302488055808> to <2 x double>), <2 x double> <double 3.000000e+00, double 4.000000e+00>), <2 x double> <double 1.000000e+00, double 2.000000e+00>), i32 1), 1 ; <%0> [#uses=1]
ret %0 %mrv6
}
llvm-svn: 85040
2009-10-25 06:15:37 +00:00
Chris Lattner
d80c1f61d2
move FoldBitCast earlier in the file, and use it instead of
...
ConstantExpr::getBitCast in various places.
llvm-svn: 85039
2009-10-25 06:08:26 +00:00
Chris Lattner
f6cb8d6b90
refactor FoldBitCast to reduce nesting and to always return a constantexpr
...
instead of returning null on failure. No functionality change.
llvm-svn: 85038
2009-10-25 06:02:57 +00:00
Nick Lewycky
cacdc4d65a
Remove ICmpInst::isSignedPredicate which was a reimplementation
...
CmpInst::isSigned.
llvm-svn: 85037
2009-10-25 05:20:17 +00:00
Nick Lewycky
a16e115bd4
Sink isTrueWhenEqual from ICmpInst to CmpInst. Add a matching isFalseWhenEqual
...
which is equal to !isTrueWhenEqual for ints but not for floats.
llvm-svn: 85036
2009-10-25 03:50:03 +00:00
Daniel Dunbar
499815e9f9
lit: Add --config-prefix option, to override default config file names.
...
llvm-svn: 85035
2009-10-25 03:30:55 +00:00
Nick Lewycky
242c20ffde
Indent.
...
llvm-svn: 85034
2009-10-25 03:22:00 +00:00
Mikhail Glushenkov
ef7afeb176
Regenerate.
...
llvm-svn: 85031
2009-10-25 01:44:24 +00:00
Mikhail Glushenkov
5f133de5c2
Document OptionPreprocessor.
...
llvm-svn: 85030
2009-10-25 01:44:11 +00:00
Mikhail Glushenkov
98921da4dd
Add a test for OptionPreprocessor.
...
llvm-svn: 85029
2009-10-25 01:43:50 +00:00
Daniel Dunbar
69b298e1c2
lit: Allow use of /dev/null in redirects on Windows (replace by a temporary
...
file).
llvm-svn: 85028
2009-10-25 01:37:26 +00:00
Jim Grosbach
7af2399458
When the scavenger is looking for a good candidate location to restore from a
...
spill, it should avoid doing so inside the live range of a virtual register.
llvm-svn: 85026
2009-10-25 00:45:07 +00:00
Dan Gohman
06621f065a
Update these tests to match what Loop::print now prints.
...
llvm-svn: 85021
2009-10-24 23:52:07 +00:00
Dan Gohman
07044648b2
MapValue doesn't needs its LLVMContext argument.
...
llvm-svn: 85020
2009-10-24 23:37:16 +00:00
Dan Gohman
1e96c6acaf
Rename isLoopExit to isLoopExiting, for consistency with the wording
...
used elsewhere - an exit block is a block outside the loop branched to
from within the loop. An exiting block is a block inside the loop that
branches out.
llvm-svn: 85019
2009-10-24 23:34:26 +00:00
Dan Gohman
3c62b33053
Delete a spurious semicolon.
...
llvm-svn: 85018
2009-10-24 23:24:45 +00:00
Dan Gohman
6e2d1c608b
Make these tests more interesting by using
...
-verify-dom-info and -verify-loop-info, which enable additional
(expensive) consistency checks.
llvm-svn: 85017
2009-10-24 23:23:04 +00:00
Dan Gohman
477456910a
Rewrite LoopRotation's SSA updating code using SSAUpdater.
...
llvm-svn: 85016
2009-10-24 23:19:52 +00:00
Daniel Dunbar
e66bb298d4
lit: Support '>>' redirections when executing scripts internally.
...
llvm-svn: 85014
2009-10-24 20:32:49 +00:00
Daniel Dunbar
59d81da39c
Update CMake dependencies.
...
llvm-svn: 85013
2009-10-24 20:32:43 +00:00
Daniel Dunbar
d98eb10494
Teach macho-dump to dump UUIDs.
...
llvm-svn: 85012
2009-10-24 20:32:36 +00:00
Dan Gohman
e970f8a450
Make DominanceFrontierBase::print's output prettier.
...
llvm-svn: 85011
2009-10-24 20:01:11 +00:00