Jay Foad
1a180156b6
Remove unused STL header includes.
...
llvm-svn: 130068
2011-04-23 19:53:52 +00:00
Jay Foad
0091fe8ca1
PR9214: Convert ConstantExpr::getIndices() to return an ArrayRef, plus
...
related tweaks to ExprMapKeyType.
llvm-svn: 129443
2011-04-13 15:22:40 +00:00
Jay Foad
47f89e0f55
Remove some redundant llvm:: prefixes.
...
llvm-svn: 129441
2011-04-13 14:39:42 +00:00
Jay Foad
5c984e563b
PR9214: Convert ConstantExpr::getWithOperands() to use ArrayRef.
...
llvm-svn: 129439
2011-04-13 13:46:01 +00:00
Nick Lewycky
92db8e8e39
ConstantInt has some getters which return ConstantInt's or ConstantVector's of
...
the value splatted into every element. Extend this to getTrue and getFalse which
by providing new overloads that take Types that are either i1 or <N x i1>. Use
it in InstCombine to add vector support to some code, fixing PR8469!
llvm-svn: 127116
2011-03-06 03:36:19 +00:00
Talin
de422beba4
Added missing va_end().
...
llvm-svn: 126759
2011-03-01 18:00:49 +00:00
Talin
3a0a30d44d
Add an END_WITH_NULL accessor for ConstantStruct.
...
llvm-svn: 126714
2011-02-28 23:53:27 +00:00
Chris Lattner
8488640da7
hoist GlobalValue::removeDeadConstantUsers up to being a method on Constant.
...
llvm-svn: 125828
2011-02-18 04:41:42 +00:00
Nadav Rotem
7cc6d12ad0
Enhance constant folding of bitcast operations on vectors of floats.
...
Add getAllOnesValue of FP numbers to Constants and APFloat.
Add more tests.
llvm-svn: 125776
2011-02-17 21:22:27 +00:00
Chris Lattner
69229316aa
convert ConstantVector::get to use ArrayRef.
...
llvm-svn: 125537
2011-02-15 00:14:00 +00:00
Chris Lattner
34442e6ebf
revert my ConstantVector patch, it seems to have made the llvm-gcc
...
builders unhappy.
llvm-svn: 125504
2011-02-14 18:15:46 +00:00
Chris Lattner
d9f5b88548
Switch ConstantVector::get to use ArrayRef instead of a pointer+size
...
idiom. Change various clients to simplify their code.
llvm-svn: 125487
2011-02-14 07:55:32 +00:00
Chris Lattner
603af18826
make ConstantExpr::replaceUsesOfWithOnConstant preserve the inbounds
...
flag. Noticed by Jin Gu Kang!
llvm-svn: 125366
2011-02-11 05:37:21 +00:00
Chris Lattner
94c8d2941f
make the constantexpr interfaces for inbounds GEPs follow the same style
...
as other constantexpr flags, reducing redundancy.
llvm-svn: 125365
2011-02-11 05:34:33 +00:00
Chris Lattner
e9b4ad7391
switch the constantexpr, target folder, and IRBuilder interfaces
...
for NSW/NUW binops to follow the pattern of exact binops. This
allows someone to use Builder.CreateAdd(x, y, "tmp", MaybeNUW);
llvm-svn: 125270
2011-02-10 07:01:55 +00:00
Chris Lattner
0d75eac350
refactor ConstantExpr interfaces a bit around "exactness".
...
llvm-svn: 125190
2011-02-09 16:43:07 +00:00
Chris Lattner
e17322b3b7
fix comment change.
...
llvm-svn: 125047
2011-02-07 20:03:14 +00:00
Chris Lattner
a676c0fc77
implement .ll and .bc support for nsw/nuw on shl and exact on lshr/ashr.
...
Factor some code better.
llvm-svn: 125006
2011-02-07 16:40:21 +00:00
Chris Lattner
35315d065b
enhance vmcore to know that udiv's can be exact, and add a trivial
...
instcombine xform to exercise this.
Nothing forms exact udivs yet though. This is progress on PR8862
llvm-svn: 124992
2011-02-06 21:44:57 +00:00
Duncan Sands
cf0ff030a8
Have m_One also match constant vectors for which every element is 1.
...
llvm-svn: 124655
2011-02-01 08:39:12 +00:00
Jay Foad
9f32cfd35e
Fix indentation.
...
llvm-svn: 124375
2011-01-27 14:44:55 +00:00
Jay Foad
1d4a8fe156
Remove casts between Value** and Constant**, which won't work if a
...
static_cast from Constant* to Value* has to adjust the "this" pointer.
This is groundwork for PR889.
llvm-svn: 123435
2011-01-14 08:07:43 +00:00
Benjamin Kramer
6f88fcb16b
Apparently APFloat::getZero doesn't like PPCDoubleDoubles.
...
llvm-svn: 120909
2010-12-04 14:43:08 +00:00
Benjamin Kramer
8ceebfaa04
Simplify code. No functionality change.
...
llvm-svn: 120907
2010-12-04 14:22:24 +00:00
Benjamin Kramer
ddd1b7b801
Simplify code. No change in functionality.
...
llvm-svn: 119908
2010-11-20 18:43:35 +00:00
Chris Lattner
13ee795c42
remove unions from LLVM IR. They are severely buggy and not
...
being actively maintained, improved, or extended.
llvm-svn: 112356
2010-08-28 04:09:24 +00:00
Oscar Fuentes
40b31ad3ee
Prefix `next' iterator operation with `llvm::'.
...
Fixes potential ambiguity problems on VS 2010.
Patch by nobled!
llvm-svn: 110029
2010-08-02 06:00:15 +00:00
Benjamin Kramer
3d4af4e91e
Preallocate vector, avoid unnecessary vector growth.
...
llvm-svn: 109971
2010-08-01 11:43:26 +00:00
Chris Lattner
718da70ca2
Fix PR7658, a problem where type refinement can trigger
...
constant replacement which was botching its handling of
types. Use of getType() instead of getRawType() was causing
the type map in constant folding to be updated wrong.
llvm-svn: 108610
2010-07-17 06:13:52 +00:00
Dan Gohman
a2414ea190
Remove the API compatibility layer which converted add, sub, and mul
...
to fadd, fsub, and fmul, when used with a floating-point type. LLVM
has supported the new instructions since 2.6, so it's time to get
on board.
llvm-svn: 102971
2010-05-03 22:44:19 +00:00
Dan Gohman
3cdcc3f728
Simplify this code.
...
llvm-svn: 101074
2010-04-12 22:12:29 +00:00
Chris Lattner
a3b94ba2c5
move some method definitions to files that make sense.
...
llvm-svn: 99927
2010-03-30 20:48:48 +00:00
Chris Lattner
61f3bd6772
add support for zero initialized unions, patch by Tim Northover!
...
llvm-svn: 99818
2010-03-29 17:36:02 +00:00
Gabor Greif
c78d720f02
rename use_const_iterator to const_use_iterator for consistency's sake
...
llvm-svn: 99564
2010-03-25 23:06:16 +00:00
Talin
1feba3c980
replaceUsesOfWithOnConstant implementation for unions.
...
llvm-svn: 96616
2010-02-18 21:43:45 +00:00
Duncan Sands
19d0b47b1f
There are two ways of checking for a given type, for example isa<PointerType>(T)
...
and T->isPointerTy(). Convert most instances of the first form to the second form.
Requested by Chris.
llvm-svn: 96344
2010-02-16 11:11:14 +00:00
Duncan Sands
9dff9bec31
Uniformize the names of type predicates: rather than having isFloatTy and
...
isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris!
llvm-svn: 96223
2010-02-15 16:12:20 +00:00
Chris Lattner
392be58cad
Add support for a union type in LLVM IR. Patch by Talin!
...
llvm-svn: 96011
2010-02-12 20:49:41 +00:00
Duncan Sands
fa5f5965de
Adding missing methods for creating Add, Mul, Neg and Sub with NUW.
...
llvm-svn: 95086
2010-02-02 12:53:04 +00:00
Chris Lattner
f5edeebd8c
eliminate a bunch of pointless LLVMContext arguments.
...
llvm-svn: 95001
2010-02-01 20:48:08 +00:00
Dan Gohman
de047f2051
Add a getNUWMul function.
...
llvm-svn: 94982
2010-02-01 16:38:14 +00:00
Dan Gohman
ede94e6850
Add a generalized form of ConstantExpr::getOffsetOf which works for
...
array types as well as struct types, and which accepts arbitrary
Constant indicies.
llvm-svn: 94981
2010-02-01 16:37:38 +00:00
Dan Gohman
a9be73929f
Make getAlignOf return an i64, for consistency with getSizeOf and
...
getOffsetOf, and remove the comment about assuming i8 is byte-aligned,
which is no longer applicable.
llvm-svn: 94738
2010-01-28 02:43:22 +00:00
Dan Gohman
cf9138307d
Remove SCEVAllocSizeExpr and SCEVFieldOffsetExpr, and in their place
...
use plain SCEVUnknowns with ConstantExpr::getSizeOf and
ConstantExpr::getOffsetOf constants. This eliminates a bunch of
special-case code.
Also add code for pattern-matching these expressions, for clients that
want to recognize them.
Move ScalarEvolution's logic for expanding array and vector sizeof
expressions into an element count times the element size, to expose
the multiplication to subsequent folding, into the regular constant
folder.
llvm-svn: 94737
2010-01-28 02:15:55 +00:00
Chris Lattner
37bc78a5e2
fix CastInst::castIsValid to reject aggregate types, fixing PR6153:
...
llvm-as: t.ll:1:25: error: invalid cast opcode for cast from '[4 x i8]' to '[1 x i32]'
@x = constant [1 x i32] bitcast ([4 x i8] c"abcd" to [1 x i32])
^
llvm-svn: 94595
2010-01-26 21:51:43 +00:00
Nick Lewycky
9e26c1cc0c
Fix a crasher trying to fold each element in a comparison between two vectors
...
if one of the vectors didn't have elements (such as undef). Fixes PR 6096.
Fix an issue in the constant folder where fcmp (<2 x %ty>, <2 x %ty>) would
have <2 x i1> type if constant folding was successful and i1 type if it wasn't.
This exposed a related issue in the bitcode reader.
llvm-svn: 94069
2010-01-21 07:03:21 +00:00
Benjamin Kramer
d2564e3afb
Move remaining stuff to the isInteger predicate.
...
llvm-svn: 92771
2010-01-05 21:05:54 +00:00
Benjamin Kramer
a81a6dff0d
Convert a ton of simple integer type equality tests to the new predicate.
...
llvm-svn: 92760
2010-01-05 20:07:06 +00:00
David Greene
1e27a13838
Change errs() to dbgs().
...
llvm-svn: 92650
2010-01-05 01:29:19 +00:00
Chris Lattner
a7cfc43af8
differences between two blockaddress's don't cause a
...
global variable initializer to require relocations.
llvm-svn: 92450
2010-01-03 18:09:40 +00:00