Chris Lattner
cf9e8f6968
reapply the patches reverted in r149470 that reenable ConstantDataArray,
...
but with a critical fix to the SelectionDAG code that optimizes copies
from strings into immediate stores: the previous code was stopping reading
string data at the first nul. Address this by adding a new argument to
llvm::getConstantStringInfo, preserving the behavior before the patch.
llvm-svn: 149800
2012-02-05 02:29:43 +00:00
Argyrios Kyrtzidis
17c981a45b
Revert Chris' commits up to r149348 that started causing VMCoreTests unit test to fail.
...
These are:
r149348
r149351
r149352
r149354
r149356
r149357
r149361
r149362
r149364
r149365
llvm-svn: 149470
2012-02-01 04:51:17 +00:00
Chris Lattner
f1179025ae
eliminate the "string" form of ConstantArray::get, using
...
ConstantDataArray::getString instead.
llvm-svn: 149365
2012-01-31 06:18:43 +00:00
Chris Lattner
8ea967d050
with recent changes, ConstantArray is never a "string". Remove the associated
...
methods and constant fold the clients to false.
llvm-svn: 149362
2012-01-31 06:05:00 +00:00
Chris Lattner
06d673678e
fix a small oversight that broke the fhourstones app.
...
llvm-svn: 149357
2012-01-31 05:18:56 +00:00
Chris Lattner
108423a94a
Change ConstantArray::get to form a ConstantDataArray when possible,
...
kicking in the big win of ConstantDataArray. As part of this, change
the implementation of GetConstantStringInfo in ValueTracking to work
with ConstantDataArray (and not ConstantArray) making it dramatically,
amazingly, more efficient in the process and renaming it to
getConstantStringInfo.
This keeps around a GetConstantStringInfo entrypoint that (grossly)
forwards to getConstantStringInfo and constructs the std::string
required, but existing clients should move over to
getConstantStringInfo instead.
llvm-svn: 149351
2012-01-31 04:42:22 +00:00
Chris Lattner
f06039b39d
Various improvements suggested by Duncan
...
llvm-svn: 149255
2012-01-30 18:19:30 +00:00
Chris Lattner
978fe0c75a
First step of flipping on ConstantDataSequential: enable ConstantDataVector
...
to be formed whenever ConstantVector::get is used.
llvm-svn: 149226
2012-01-30 06:21:21 +00:00
Chris Lattner
0256be96f2
continue making the world safe for ConstantDataVector. At this point,
...
we should (theoretically optimize and codegen ConstantDataVector as well
as ConstantVector.
llvm-svn: 149116
2012-01-27 03:08:05 +00:00
Chris Lattner
a474bb265b
smallvectorize and ArrayRef'ize some stuff.
...
llvm-svn: 149077
2012-01-26 20:40:56 +00:00
Chris Lattner
37e3835a94
Reduce a lot of code duplication by implementing
...
ConstantExpr::getWithOperandReplaced and ConstantExpr::replaceUsesOfWithOnConstant
in terms of ConstantExpr::getWithOperands. While we're at it,
make sure that ConstantExpr::getWithOperands covers all instructions: it was
missing insert/extractvalue.
llvm-svn: 149076
2012-01-26 20:37:11 +00:00
Chris Lattner
cf12970bd0
eliminate the Constant::getVectorElements method. There are better (and
...
more robust) ways to do what it was doing now. Also, add static methods
for decoding a ShuffleVector mask.
llvm-svn: 149028
2012-01-26 02:51:13 +00:00
Chris Lattner
f14a67f5d3
Add a ConstantDataVector::getSplatValue() method, for parity with
...
ConstantVector. Fix some outright bugs in the implementation of
ConstantArray and Constant struct, which would cause us to not make
one big UndefValue when asking for an array/struct with all undef
elements. Enhance Constant::isAllOnesValue to work with
ConstantDataVector.
llvm-svn: 149021
2012-01-26 02:31:22 +00:00
Chris Lattner
8326bd8e10
some general cleanup, using new methods and tidying up old code.
...
llvm-svn: 149006
2012-01-26 00:42:34 +00:00
Chris Lattner
7e683d10a8
constify some methods and add a new Constant::getAggregateElement
...
helper method for the common operation of extracting an element
out of a constant aggregate.
llvm-svn: 148931
2012-01-25 06:16:32 +00:00
Chris Lattner
e9eed29b5b
reapply r148901 with a crucial fix.
...
"Introduce a new ConstantVector::getSplat constructor function to
simplify a really common case."
llvm-svn: 148924
2012-01-25 05:19:54 +00:00
Nick Lewycky
ff50962534
Fix assert("msg"). Fix unused-variable warnings complaining about VT used only
...
in asserts.
llvm-svn: 148910
2012-01-25 03:20:12 +00:00
Argyrios Kyrtzidis
939b7a0b7c
Revert r148901 because it crashes llvm tests.
...
Original log:
Introduce a new ConstantVector::getSplat constructor function to
simplify a really common case.
llvm-svn: 148906
2012-01-25 02:42:41 +00:00
Chris Lattner
9fe7dd872b
Introduce a new ConstantVector::getSplat constructor function to
...
simplify a really common case.
llvm-svn: 148901
2012-01-25 01:53:58 +00:00
Chris Lattner
8a3df5495a
Remove the Type::getNumElements() method, which is only called in 4 places,
...
did something extremely surprising, and shadowed actually useful
implementations that had completely different behavior.
llvm-svn: 148898
2012-01-25 01:32:59 +00:00
Chris Lattner
139822fc83
C++, CBE, and TLOF support for ConstantDataSequential
...
llvm-svn: 148805
2012-01-24 14:17:05 +00:00
Chris Lattner
2068393140
Rearrange argument order of ::get methods so that LLVMContext comes first,
...
add a ConstantDataArray::getString method that corresponds to the (to be
removed) StringRef version of ConstantArray::get, but is dramatically more
efficient.
llvm-svn: 148804
2012-01-24 14:04:40 +00:00
Chris Lattner
00245f420a
add more support for ConstantDataSequential
...
llvm-svn: 148802
2012-01-24 13:41:11 +00:00
Chris Lattner
5d4497bf4a
Add AsmPrinter (aka MCLowering) support for ConstantDataSequential,
...
and clean up some other misc stuff. Unlike ConstantArray, we will
prefer to emit .fill directives for "String" arrays that all have
the same value, since they are denser than emitting a .ascii
llvm-svn: 148793
2012-01-24 09:31:43 +00:00
Chris Lattner
5dd4d87ce0
Add various "string" methods to ConstantDataSequential, which have the
...
same semantics as ConstantArray's but much more efficient because they
don't have to return std::string's. The ConstantArray methods will
eventually be removed.
llvm-svn: 148792
2012-01-24 09:01:07 +00:00
Chris Lattner
f7eb543380
teach valuetracking about ConstantDataSequential
...
llvm-svn: 148790
2012-01-24 07:54:10 +00:00
Chris Lattner
030af79b14
Add some accessor methods to CAZ and UndefValue that help simplify clients.
...
Make some CDS methods public.
llvm-svn: 148785
2012-01-24 05:42:11 +00:00
Chris Lattner
e4f3f102c2
implement the ConstantDataSequential accessor methods.
...
No need for 'getOperand' :)
llvm-svn: 148778
2012-01-24 04:43:41 +00:00
Chris Lattner
3756b91313
start the implementation of a new ConstantDataVector and ConstantDataArray
...
classes, per PR1324. Not all of their helper functions are implemented,
nothing creates them, and the rest of the compiler doesn't handle them yet.
llvm-svn: 148741
2012-01-23 22:57:10 +00:00
Chris Lattner
c7f9fd4da8
convert CAZ, UndefValue, and CPN to use DenseMap's again, this time without
...
using OwningPtr. OwningPtr would barf when the densemap had to reallocate,
which doesn't appear to happen on the regression test suite, but obviously
happens in real life :)
llvm-svn: 148700
2012-01-23 15:20:12 +00:00
Chris Lattner
962c272f95
revert r148691 and 148693
...
llvm-svn: 148698
2012-01-23 15:09:44 +00:00
Chris Lattner
4494e1ae25
switch UndefValue and ConstantPointerNull over to DenseMap's for uniquing.
...
llvm-svn: 148693
2012-01-23 08:52:32 +00:00
Chris Lattner
1910c9c3a0
Replace a use of ConstantUniqueMap for CAZ constants with a simple DenseMap.
...
Now that the type system rewrite has landed, there is no need for its
complexity and std::map'ness.
llvm-svn: 148691
2012-01-23 08:42:38 +00:00
David Blaikie
46a9f016c5
More dead code removal (using -Wunreachable-code)
...
llvm-svn: 148578
2012-01-20 21:51:11 +00:00
David Blaikie
a379b18173
Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
...
llvm-svn: 146960
2011-12-20 02:50:00 +00:00
Dan Gohman
518cda42b9
The powers that be have decided that LLVM IR should now support 16-bit
...
"half precision" floating-point with a first-class type.
This patch adds basic IR support (but not codegen support).
llvm-svn: 146786
2011-12-17 00:04:22 +00:00
Nadav Rotem
3924cb0267
Add support for vectors of pointers.
...
llvm-svn: 145801
2011-12-05 06:29:09 +00:00
Benjamin Kramer
42d098e1b4
Fold ConstantVector::isAllOnesValue into Constant::isAllOnesValue and simplify it.
...
llvm-svn: 144555
2011-11-14 19:12:20 +00:00
Richard Trieu
a318b8dce6
Change:
...
assert(!"error message");
To:
assert(0 && "error message");
which is more consistant across the code base.
llvm-svn: 140234
2011-09-21 03:09:09 +00:00
Nadav Rotem
365af6f17b
Implement Constant::isAllOnesValue(). Fix ConstantFolding to use the new api.
...
llvm-svn: 138469
2011-08-24 20:18:38 +00:00
Eric Christopher
7bc78f692c
Revert "Address Duncan's CR request:"
...
This reverts commit 20a05be15ea5271ab6185b83200fa88263362400. (svn rev 138340)
Conflicts:
test/Transforms/InstCombine/bitcast.ll
llvm-svn: 138366
2011-08-23 20:11:10 +00:00
Nadav Rotem
c78e6607b5
Address Duncan's CR request:
...
1. Cleanup the tests in ConstantFolding.cpp
2. Implement isAllOnes for Constant, ConstantFP, ConstantVector
llvm-svn: 138340
2011-08-23 17:48:43 +00:00
Chris Lattner
c3e74cdf4d
strengthen up an assertion: you can't create a constant struct
...
with an opaque struct type, it doesn't make sense. This should
resolve PR10473.
llvm-svn: 137028
2011-08-07 04:18:48 +00:00
Jay Foad
89d9b81a3a
Use ArrayRef in the (protected) constructors of ConstantArray, ConstantStruct and ConstantVector.
...
llvm-svn: 135905
2011-07-25 10:14:44 +00:00
Jay Foad
d1b7849d49
Convert GetElementPtrInst to use ArrayRef.
...
llvm-svn: 135904
2011-07-25 09:48:08 +00:00
Jay Foad
2f5fc8c67d
Make better use of ConstantExpr::getGetElementPtr's InBounds parameter.
...
llvm-svn: 135676
2011-07-21 15:15:37 +00:00
Jay Foad
ed8db7d9df
Convert ConstantExpr::getGetElementPtr and
...
ConstantExpr::getInBoundsGetElementPtr to use ArrayRef.
llvm-svn: 135673
2011-07-21 14:31:17 +00:00
Jay Foad
ca3fc38839
Convert ConstantFoldGetElementPtr to use ArrayRef.
...
llvm-svn: 135483
2011-07-19 15:30:30 +00:00
Chris Lattner
229907cd11
land David Blaikie's patch to de-constify Type, with a few tweaks.
...
llvm-svn: 135375
2011-07-18 04:54:35 +00:00
Chris Lattner
d04e32d308
tidy up
...
llvm-svn: 135360
2011-07-17 06:01:30 +00:00