Jay Foad
0159a1ee11
Fix or remove code which seemed to think that the operand of a Constant
...
was always a User.
llvm-svn: 129272
2011-04-11 09:48:55 +00:00
Rafael Espindola
337a1b29e5
Do a topological sort of the types before writing them out.
...
This takes the linking of libxul on linux from 6m54.931s to 5m39.840s.
llvm-svn: 129009
2011-04-06 16:49:37 +00:00
Dan Gohman
22161da9ff
Clear FunctionLocalMDs in purgeFunction along with the rest of the
...
function-specific state.
llvm-svn: 112058
2010-08-25 17:11:16 +00:00
Dan Gohman
1f4b028b75
Fix whitespace.
...
llvm-svn: 112056
2010-08-25 17:09:50 +00:00
Dan Gohman
9cfe532ae5
Eliminate an unnecessary cast.
...
llvm-svn: 112055
2010-08-25 17:09:03 +00:00
Dan Gohman
10215a12e8
Add braces to fix dangling else.
...
llvm-svn: 111896
2010-08-24 02:40:27 +00:00
Dan Gohman
c828c5465d
Extend function-local metadata to be usable as attachments.
...
llvm-svn: 111895
2010-08-24 02:24:03 +00:00
Dan Gohman
ab09a12cad
When we know we have an MDValue or MDString, call EnumerateMetadata
...
directly instead of going through EnumerateValue.
llvm-svn: 111894
2010-08-24 02:10:52 +00:00
Dan Gohman
d3d2bbe620
Simplify this code. NamedMDNode operands are MDNodes.
...
llvm-svn: 111892
2010-08-24 02:01:24 +00:00
Dan Gohman
2637cc1a38
Make NamedMDNode not be a subclass of Value, and simplify the interface
...
for creating and populating NamedMDNodes.
llvm-svn: 109061
2010-07-21 23:38:33 +00:00
Dan Gohman
9a54c17582
Fix whitespace.
...
llvm-svn: 108569
2010-07-16 22:58:39 +00:00
Bob Wilson
4581434c27
Tidy.
...
llvm-svn: 106383
2010-06-19 05:33:57 +00:00
Devang Patel
df84e8baf7
Speedup bitcode writer. Do not walk all values for all functions to emit function local metadata. In one testcase, probably worst case scenario, the 70x speed up is seen.
...
llvm-svn: 105360
2010-06-02 23:05:04 +00:00
Chris Lattner
07d09ed49a
Add special case bitcode support for DebugLoc. This avoids
...
having the bitcode writer materialize mdnodes for all the
debug location tuples when writing out the bc file and
stores the information in a more compact form. For example,
the -O0 -g bc file for combine.c in 176.gcc shrinks from
739392 to 512096 bytes.
This concludes my planned short-term debug info work.
llvm-svn: 100261
2010-04-03 02:17:50 +00:00
Nick Lewycky
a72e1af8bf
Make the side-numbering of instructions used by metadata (which is needed to
...
keep track of instructions that return void) per-function. This fixes PR5278.
This breaks backwards compatibility with the metadata format. That's okay
because we haven't released the metadata bitcode yet.
llvm-svn: 97132
2010-02-25 08:30:17 +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
Victor Hernandez
1b08138152
Function-local metadata whose operands had been optimized to no longer refer to function-local IR were not getting written by BitcodeWriter; solution is for these metadata to be enumerated just like global metadata.
...
llvm-svn: 95467
2010-02-06 01:21:09 +00:00
Victor Hernandez
d44ee35f30
Fix (and test) function-local metadata that occurs before the instruction that it refers to; fix is to not enumerate operands of function-local metadata until after all instructions have been enumerated
...
llvm-svn: 95269
2010-02-04 01:13:08 +00:00
Benjamin Kramer
14bb114c92
Respect operator precedence (and silence a gcc 4.3 warning).
...
llvm-svn: 94304
2010-01-23 09:54:23 +00:00
Devang Patel
ac277eb930
Remove MetadataBase class because it is not adding significant value.
...
llvm-svn: 94243
2010-01-22 22:52:10 +00:00
Victor Hernandez
572218b53b
Simplify code that chooses when to enumerate function-local metadata operands
...
llvm-svn: 93446
2010-01-14 19:54:11 +00:00
Victor Hernandez
b816154268
Clean up unnecessary return and brackets
...
llvm-svn: 93401
2010-01-14 01:46:02 +00:00
Victor Hernandez
cad7328d8c
Enumerate function-local metadata (and its types and operands) only during function-incorporation, global metadata continues to be enumerated during creation of ValueEnumerator
...
llvm-svn: 93338
2010-01-13 19:36:16 +00:00
Devang Patel
44c06e1966
NamedMDNode is never used so there is no need to enumerate it here.
...
llvm-svn: 93039
2010-01-09 01:24:03 +00:00
Devang Patel
99ff5a864b
Derive NamedMDNode from Value.
...
llvm-svn: 93032
2010-01-09 00:30:14 +00:00
Devang Patel
fcfee0ff35
Use separate namespace for named metadata.
...
llvm-svn: 92931
2010-01-07 19:39:36 +00:00
Devang Patel
6edcd3994c
Allow null to be an element of NamedMDNode. e.g. !llvm.stuff = !{!0, !1 , null}
...
llvm-svn: 92783
2010-01-05 21:47:32 +00:00
Benjamin Kramer
ccce8bae14
Avoid going through the LLVMContext for type equality where it's safe to dereference the type pointer.
...
llvm-svn: 92726
2010-01-05 13:12:22 +00:00
Chris Lattner
9b493028df
rename "elements" of metadata to "operands". "Elements" are
...
things that occur in types. "operands" are things that occur
in values.
llvm-svn: 92322
2009-12-31 01:22:29 +00:00
Chris Lattner
8dace893fa
tidy
...
llvm-svn: 92320
2009-12-31 00:51:46 +00:00
Chris Lattner
2f2aa2b067
This is a major cleanup of the instruction metadata interfaces that
...
I asked Devang to do back on Sep 27. Instead of going through the
MetadataContext class with methods like getMD() and getMDs(), just
ask the instruction directly for its metadata with getMetadata()
and getAllMetadata().
This includes a variety of other fixes and improvements: previously
all Value*'s were bloated because the HasMetadata bit was thrown into
value, adding a 9th bit to a byte. Now this is properly sunk down to
the Instruction class (the only place where it makes sense) and it
will be folded away somewhere soon.
This also fixes some confusion in getMDs and its clients about
whether the returned list is indexed by the MDID or densely packed.
This is now returned sorted and densely packed and the comments make
this clear.
This introduces a number of fixme's which I'll follow up on.
llvm-svn: 92235
2009-12-28 23:41:32 +00:00
Chris Lattner
53bb5e4ae0
change the strange MetadataContext::getMDs function to expose less
...
irrelevant internal implementation details to clients.
llvm-svn: 92210
2009-12-28 08:14:54 +00:00
Chris Lattner
f1ef03ad4d
eliminate the elem_* iterator stuff from NamedMDNode.
...
llvm-svn: 92208
2009-12-28 07:57:01 +00:00
Chris Lattner
aa99c94e2a
Revert 85678/85680. The decision is to stay with the current form of
...
indirectbr, thus we don't need "blockaddr(@func, null)". Eliminate it
for simplicity.
llvm-svn: 85699
2009-11-01 01:27:45 +00:00
Chris Lattner
b2c0e243c5
Make blockaddress(@func, null) be valid, and make 'deleting a basic
...
block with a blockaddress still referring to it' replace the invalid
blockaddress with a new blockaddress(@func, null) instead of a
inttoptr(1).
This changes the bitcode encoding format, and still needs codegen
support (this should produce a non-zero value, referring to the entry
block of the function would also be quite reasonable).
llvm-svn: 85678
2009-10-31 20:08:37 +00:00
Chris Lattner
f540d74b58
bitcode writer support for blockaddress.
...
llvm-svn: 85376
2009-10-28 05:24:40 +00:00
Chris Lattner
26a7ae4fba
Type.h doesn't need to #include LLVMContext.h
...
llvm-svn: 85254
2009-10-27 17:08:31 +00:00
Devang Patel
6da5dbf3c2
Fix getMDs() interface such that it does not expose implementation details.
...
llvm-svn: 84885
2009-10-22 18:55:16 +00:00
Devang Patel
084679e70a
Using TrackingVH instead of WeakVH or WeakMetadataVH.
...
llvm-svn: 84884
2009-10-22 18:25:28 +00:00
Devang Patel
49914e6eb3
Do not use SmallVector to store MDNode elements.
...
llvm-svn: 84784
2009-10-21 21:25:09 +00:00
Devang Patel
2d85eef974
s/class Metadata/class MetadataContext/g
...
llvm-svn: 83019
2009-09-28 21:41:20 +00:00
Daniel Dunbar
7d6781b0fe
Tabs -> spaces, and remove trailing whitespace.
...
llvm-svn: 82355
2009-09-20 02:20:51 +00:00
Devang Patel
af206b8c88
Write and read metadata attachments.
...
llvm-svn: 82259
2009-09-18 19:26:43 +00:00
Owen Anderson
55f1c09e31
Push LLVMContexts through the IntegerType APIs.
...
llvm-svn: 78948
2009-08-13 21:58:54 +00:00
Devang Patel
05eb617da5
Use separate ValueList for metadata.
...
This fixes PR4666.
llvm-svn: 78056
2009-08-04 06:00:18 +00:00
Benjamin Kramer
7e7617edf8
Work around a dangling pointer dereference when enumerating NamedMDNodes.
...
llvm-svn: 77675
2009-07-31 14:22:13 +00:00
Devang Patel
d14bacfb7a
Enumerate NamedMDNode elements first.
...
llvm-svn: 77636
2009-07-30 23:03:43 +00:00
Devang Patel
27c87fff7f
Read and write NamedMDNode.
...
llvm-svn: 77517
2009-07-29 22:34:41 +00:00
Devang Patel
a4f43fb5dd
Rename MDNode.h header. It defines MDnode and other metadata classes.
...
New name is Metadata.h.
llvm-svn: 77370
2009-07-28 21:49:47 +00:00
Devang Patel
e059ba6ed2
Derive MDNode from MetadataBase instead of Constant. Emit MDNodes into METADATA_BLOCK in bitcode file.
...
llvm-svn: 76834
2009-07-23 01:07:34 +00:00
Devang Patel
75094f8e83
Use isa<> instead of dyn_cast<>.
...
llvm-svn: 76767
2009-07-22 18:35:25 +00:00
Sanjiv Gupta
8f3169cf4a
Fixed build warning. No functionality change.
...
llvm-svn: 76761
2009-07-22 17:58:47 +00:00
Devang Patel
7428d8acec
Introduce MetadataBase, a base class for MDString and MDNode.
...
Derive MDString directly from MetadataBase.
Introduce new bitcode block to hold metadata.
llvm-svn: 76759
2009-07-22 17:43:22 +00:00
Nick Lewycky
a879819918
Don't remove aggregate-typed module level constants before encoding functions
...
since functions may contain aggregate constants too.
llvm-svn: 73220
2009-06-12 05:20:12 +00:00
Nick Lewycky
b8f9b7a965
Make MDNode use CallbackVH. Also change MDNode to store Value* instead of
...
Constant* in preperation of a future change to support holding non-Constants
in an MDNode.
llvm-svn: 71407
2009-05-10 20:57:05 +00:00
Devang Patel
4c758ea3e0
Large mechanical patch.
...
s/ParamAttr/Attribute/g
s/PAList/AttrList/g
s/FnAttributeWithIndex/AttributeWithIndex/g
s/FnAttr/Attribute/g
This sets the stage
- to implement function notes as function attributes and
- to distinguish between function attributes and return value attributes.
This requires corresponding changes in llvm-gcc and clang.
llvm-svn: 56622
2008-09-25 21:00:45 +00:00
Dan Gohman
30499844ea
Make structs and arrays first-class types, and add assembly
...
and bitcode support for the extractvalue and insertvalue
instructions and constant expressions.
Note that this does not yet include CodeGen support.
llvm-svn: 51468
2008-05-23 01:55:30 +00:00
Dan Gohman
d78c400b5b
Clean up the use of static and anonymous namespaces. This turned up
...
several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017
2008-05-13 00:00:25 +00:00
Chris Lattner
8a923e7c28
Reimplement the parameter attributes support, phase #1 . hilights:
...
1. There is now a "PAListPtr" class, which is a smart pointer around
the underlying uniqued parameter attribute list object, and manages
its refcount. It is now impossible to mess up the refcount.
2. PAListPtr is now the main interface to the underlying object, and
the underlying object is now completely opaque.
3. Implementation details like SmallVector and FoldingSet are now no
longer part of the interface.
4. You can create a PAListPtr with an arbitrary sequence of
ParamAttrsWithIndex's, no need to make a SmallVector of a specific
size (you can just use an array or scalar or vector if you wish).
5. All the client code that had to check for a null pointer before
dereferencing the pointer is simplified to just access the
PAListPtr directly.
6. The interfaces for adding attrs to a list and removing them is a
bit simpler.
Phase #2 will rename some stuff (e.g. PAListPtr) and do other less
invasive changes.
llvm-svn: 48289
2008-03-12 17:45:29 +00:00
Chris Lattner
f3ebc3f3d2
Remove attribution from file headers, per discussion on llvmdev.
...
llvm-svn: 45418
2007-12-29 20:36:04 +00:00
Duncan Sands
ad0ea2d430
Fix PR1146: parameter attributes are longer part of
...
the function type, instead they belong to functions
and function calls. This is an updated and slightly
corrected version of Reid Spencer's original patch.
The only known problem is that auto-upgrading of
bitcode files doesn't seem to work properly (see
test/Bitcode/AutoUpgradeIntrinsics.ll). Hopefully
a bitcode guru (who might that be? :) ) will fix it.
llvm-svn: 44359
2007-11-27 13:23:08 +00:00
Chris Lattner
76fd90fb61
Fix a nasty problem where we would miss enumeration of some types. This fixes
...
issues with CE_CAST etc.
llvm-svn: 36864
2007-05-06 08:35:19 +00:00
Chris Lattner
9ee4836dde
enumerate the operands of a constant before we enumerate the constant itself
...
This avoids fwd references in the reader.
llvm-svn: 36822
2007-05-06 01:00:28 +00:00
Chris Lattner
036d1bddf2
implement the 'string constant' optimization. This shrinks kc.bit from
...
2878544 to 2815788
llvm-svn: 36818
2007-05-06 00:35:24 +00:00
Chris Lattner
430e80d670
optimize constant layout. This fixes encoding of 181.mcf (by ensuring
...
integer structure idx's are emitted before constant expr geps) and shrinks
files slightly. For example kc++ shrinks from 4326188 to 4240128 bytes.
llvm-svn: 36742
2007-05-04 05:21:47 +00:00
Chris Lattner
a8713beddd
simple optimization for the type table
...
llvm-svn: 36741
2007-05-04 05:05:48 +00:00
Chris Lattner
e4bbad630f
enumerate parameter attr lists.
...
llvm-svn: 36709
2007-05-03 22:46:43 +00:00
Chris Lattner
6be58c65d4
fix encoding of BB names in the symtab
...
llvm-svn: 36704
2007-05-03 22:18:21 +00:00
Chris Lattner
e6e364c198
start code for writing out instructions. Separate BB#s from normal value
...
#'s.
llvm-svn: 36472
2007-04-26 05:53:54 +00:00
Chris Lattner
7c37b01998
enumerate BB's separately from other function values.
...
llvm-svn: 36467
2007-04-26 04:42:16 +00:00
Chris Lattner
5f640b9cc9
add support for incorporating and purging functions to the value enumerator
...
llvm-svn: 36465
2007-04-26 03:50:57 +00:00
Chris Lattner
831d420256
move some code around, fix a bug in the reader reading globalinits (which
...
I just introduced), stub out function reading, purge aggregate values from
the value table before reading functions.
llvm-svn: 36463
2007-04-26 03:27:58 +00:00
Chris Lattner
44c1707207
add bitcode alias support
...
llvm-svn: 36461
2007-04-26 02:46:40 +00:00
Chris Lattner
52523561d9
Emit module-level constants.
...
llvm-svn: 36384
2007-04-24 00:16:04 +00:00
Chris Lattner
c1d10d67a1
Initial support for writing bitcode files. This currently only writes types,
...
the type symtab, and global/function protos, and is missing the important
size optimization, but it is a place to start.
llvm-svn: 36331
2007-04-22 06:24:45 +00:00