2114 Commits

Author SHA1 Message Date
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
beca065b1e storeinst ctor takes isvolatile before alignment. With this, 176.gcc roundtrips
llvm-svn: 36738
2007-05-04 03:57:30 +00:00
Chris Lattner
485a6d8fad fix encoding of invoke instructions. kc++ now round trips
llvm-svn: 36737
2007-05-04 03:52:24 +00:00
Chris Lattner
e11c6ce3bc fix a misplaced error
llvm-svn: 36736
2007-05-04 03:50:29 +00:00
Chris Lattner
70f4566d8a encode and read param attrs along with function type. WE can now roundtrip Olden/voronoi loslessly
llvm-svn: 36735
2007-05-04 03:41:34 +00:00
Chris Lattner
fee5a3752a add support for reading the param attrs block
llvm-svn: 36731
2007-05-04 03:30:17 +00:00
Chris Lattner
fc5b619419 fix a bug encoding param attrs
llvm-svn: 36730
2007-05-04 03:14:09 +00:00
Chris Lattner
a68e3c7cf3 remove dead code
llvm-svn: 36728
2007-05-04 03:02:54 +00:00
Chris Lattner
e72bf9fda6 add writer support for param attrs
llvm-svn: 36724
2007-05-04 02:59:04 +00:00
Reid Spencer
dea02bd840 Allow this to compile with gcc 4.0.X
llvm-svn: 36723
2007-05-04 01:43:33 +00:00
Chris Lattner
874eb28ee6 pass by reference, not by value
llvm-svn: 36721
2007-05-04 00:45:24 +00:00
Chris Lattner
e2f98ef52d trivial scaffolding for param attrs
llvm-svn: 36720
2007-05-04 00:44:52 +00:00
Chris Lattner
e4bbad630f enumerate parameter attr lists.
llvm-svn: 36709
2007-05-03 22:46:43 +00:00
Chris Lattner
4704527576 Encoding calling conv info in call/invoke instrs, tree add now round trips completely
llvm-svn: 36707
2007-05-03 22:34:03 +00:00
Chris Lattner
c1d86cda8c the type field for a store is the type of the pointer, not the value.
With this fix I can round trip treeaadd, only losing calling conv info.

llvm-svn: 36706
2007-05-03 22:21:59 +00:00
Chris Lattner
4bb39dbfde don't bother encoding # varargs
llvm-svn: 36705
2007-05-03 22:19:34 +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
6ce15cb71e bug fixes
llvm-svn: 36701
2007-05-03 22:09:51 +00:00
Chris Lattner
9f600c5d9d implement the rest of the instructions
llvm-svn: 36699
2007-05-03 22:04:19 +00:00
Chris Lattner
c332bbaae4 add a few more instructions, getting close
llvm-svn: 36688
2007-05-03 18:58:09 +00:00
Chris Lattner
5285b5ea2f add reader logic for terminator instrs.
llvm-svn: 36642
2007-05-02 05:46:45 +00:00
Chris Lattner
1fc27f0cdb add reader support for a bunch of new instructions
llvm-svn: 36641
2007-05-02 05:16:49 +00:00
Chris Lattner
e53603e4e2 read a few instructions, fix some bugs. This is enough to be able to round
trip function bodies like this:

define <2 x i64> @foo(<2 x i64> %x, <2 x i64> %y) {
        %tmp4 = bitcast <2 x i64> %y to <8 x i16>               ; <<8 x i16>> [#uses=1]
        %tmp5 = bitcast <2 x i64> %x to <8 x i16>               ; <<8 x i16>> [#uses=1]
        %tmp = add <8 x i16> %tmp5, %tmp4               ; <<8 x i16>> [#uses=1]
        %tmp6 = bitcast <8 x i16> %tmp to <2 x i64>             ; <<2 x i64>> [#uses=1]
        ret <2 x i64> %tmp6
}

llvm-svn: 36640
2007-05-02 04:27:25 +00:00
Chris Lattner
9f35f9112d use the correct code for binop instrs
llvm-svn: 36639
2007-05-02 04:26:36 +00:00
Chris Lattner
b811e951e9 fix build with non-buggy compilers
llvm-svn: 36621
2007-05-01 07:03:37 +00:00
Chris Lattner
8393055447 handle function-level forward references, read binops.
llvm-svn: 36620
2007-05-01 07:01:57 +00:00
Chris Lattner
85b7b40621 implement materializeModule, force deallocation of vector memory when we
are done with them, start implementing ParseFunctionBody

llvm-svn: 36617
2007-05-01 05:52:21 +00:00
Chris Lattner
48a8de3f4d The stream to read from is now an ivar
llvm-svn: 36615
2007-05-01 05:01:34 +00:00
Chris Lattner
51ffe7ce15 implement scafolding for lazy deserialization of function bodies
llvm-svn: 36614
2007-05-01 04:59:48 +00:00
Chris Lattner
fb6f9407ec write the symbol table for function bodies
llvm-svn: 36610
2007-05-01 02:14:57 +00:00
Chris Lattner
0a60325621 encode all of the instructions.
llvm-svn: 36609
2007-05-01 02:13:26 +00:00
Anton Korobeynikov
31fc4f9526 Implement visibility checking during linking. Also implement protected
visibility support for bitcode.

llvm-svn: 36577
2007-04-29 20:56:48 +00:00
Chris Lattner
6694f60bec Switch the bitcode reader interface to take a MemoryBuffer instead of knowing
anything about disk I/O itself.  This greatly simplifies its interface -
eliminating the need for the ReaderWrappers.cpp file.

This adds a new option to llvm-dis (-bitcode) which instructs it to read
the input file as bitcode.  Until/unless the bytecode reader is taught to
read from MemoryBuffer, there is no way to handle stdin reading without it.

I don't plan to switch the bytecode reader over, I'd rather delete it :),
so the option will stay around temporarily.

llvm-svn: 36554
2007-04-29 07:54:31 +00:00
Chris Lattner
f0a1ebae4b Fix this to use the right block ID
llvm-svn: 36550
2007-04-29 05:49:09 +00:00
Chris Lattner
87351e2a52 moved Writer.cpp -> BitcodeWriter.cpp to make it more unique in the tree.
llvm-svn: 36549
2007-04-29 05:31:57 +00:00
Anton Korobeynikov
daf358bbff This is not "FIXME" anymore
llvm-svn: 36541
2007-04-28 14:57:59 +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
a5211c43c2 improve a comment
llvm-svn: 36464
2007-04-26 03:32:43 +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
890683d636 ensure that every error return sets a message (and goes through Error, for
easy breakpointing).

Fix bugs reading constantexpr geps.  We now can disassemble kc++ global
initializers.

llvm-svn: 36398
2007-04-24 18:15:21 +00:00
Chris Lattner
0ee6a3a561 fix memory leak
llvm-svn: 36397
2007-04-24 17:22:05 +00:00
Chris Lattner
1e16bcf7ff implement reading and writing of constant exprs.
llvm-svn: 36394
2007-04-24 07:07:11 +00:00
Chris Lattner
1663ccaf13 implement support for reading aggregate constants, including handling forward
constant references, etc.

llvm-svn: 36391
2007-04-24 05:48:56 +00:00
Chris Lattner
08feb1e73a add supprot for FP constants, wide integers, and fix the encoding of MININT
llvm-svn: 36390
2007-04-24 04:04:35 +00:00
Chris Lattner
fbc1d33b81 read basic constants: null, undef, integers <= 64bits
llvm-svn: 36389
2007-04-24 03:30:34 +00:00
Chris Lattner
1e50c299a8 fix off-by-one computing size for section abbrevs
llvm-svn: 36388
2007-04-24 03:29:47 +00:00