Brian Gaeke
36fb4f19cd
In getObjectType(), doxygenify comment, and take a pointer to the
...
beginning of the archive member data as an argument.
Get rid of ParseLongFilenameSection(), which is dead.
In ReadArchiveBuffer(), implement support for 4.4BSD/MacOSX long filenames.
This is kind of invasive, because they prepend the long filename to the archive
member data, and then lie about the size. So we have to keep track of the real
size.
llvm-svn: 10392
2003-12-11 00:38:04 +00:00
Chris Lattner
d9cf9b30eb
Emit & read more compressed bytecode by not emitting a bytecodeblock for
...
each basic block in function. Instead, just emit a stream of instructions,
chopping up basic blocks based on when we find terminator instructions. This
saves a fairly substantial chunk of bytecode space. In stripped, sample
cases, for example, we get this reduction in size:
197.parser: 163036 -> 137180: 18.8% reduction
254.gap : 844936 -> 689392: 22.6%
255.vortex: 621724 -> 528444: 17.7%
...
Not bad for something this simple. :) Note that this doesn't require a new
bytecode version number at all, though version 1.1 should not need to support
the old format.
llvm-svn: 10280
2003-12-01 07:05:31 +00:00
Chris Lattner
9c68fa3ab1
* Finegrainify namespacification
...
* Strength reduce several data structures which were left over from the
"bad old days"
* Minor efficiency improvements
* Major efficiency improvement: In BytecodeParser::insertValue, do not allocate
a new ValueTab entry just because some value exists with a large type. This
dramatically reduces the number of allocations/deallocations performed by the
bytecode reader, and speeds up parsing of Kimwitu++ from 34s to 17s. This is
to help address PR127
llvm-svn: 10085
2003-11-19 17:27:18 +00:00
Chris Lattner
8700c28ac9
Minor efficiency improvements, finegrainify namespacification
...
llvm-svn: 10084
2003-11-19 17:21:11 +00:00
Chris Lattner
bf346b526f
In the future, these slabs can be null...
...
llvm-svn: 10083
2003-11-19 17:20:42 +00:00
Chris Lattner
11e8f1b595
Minor efficiency improvements all over. Finegrainify Namespacification
...
llvm-svn: 10082
2003-11-19 17:17:36 +00:00
Chris Lattner
e8de15976a
Fine grainify namespacification, #include file that defines the interface!
...
llvm-svn: 10081
2003-11-19 16:06:55 +00:00
Chris Lattner
ffa9d511f9
Minor speedup to do less linear time searches of information we already have.
...
speeds up disassembly of kc++ by .6s
llvm-svn: 10079
2003-11-19 06:01:12 +00:00
Chris Lattner
ea25538936
Remove usage of ConstantPointer
...
llvm-svn: 10051
2003-11-17 17:28:29 +00:00
Brian Gaeke
900cc96e08
Implement skeletal support for __.SYMDEF (ranlib) sections in archives.
...
Correctly parse the Long Filename section of the archive.
When reading in archive members, set their ModuleIDs to
"ARCHIVENAME(MEMBERNAME)", as is traditional.
llvm-svn: 10043
2003-11-16 23:08:48 +00:00
Chris Lattner
93dea78f85
I can't believe the incompetence of the people I have to deal with around here.
...
These fools don't even wrap code at 80 columns.
Oh wait, _I_ wrote that. That explains a lot!!
llvm-svn: 9999
2003-11-14 16:34:25 +00:00
Chris Lattner
cd45bc4086
Fix PR 110: the constant folding code assumes that if something is not a
...
constant expression, but is of (for example) ubyte type, then it is a
ConstantUInt. This was not true for placeholders.
llvm-svn: 9994
2003-11-14 06:38:46 +00:00
Brian Gaeke
960707c335
Put all LLVM code into the llvm namespace, as per bug 109.
...
llvm-svn: 9903
2003-11-11 22:41:34 +00:00
Chris Lattner
c3d6f21bbe
no need for endl
...
llvm-svn: 9736
2003-11-05 19:53:32 +00:00
Chris Lattner
b36e8a1a2e
Add support for constant expr shifts
...
llvm-svn: 9735
2003-11-05 19:53:03 +00:00
Alkis Evlogimenos
404beb98ef
Put DEBUG_OUTPUT at the top along with TRACE_LEVEL. Also fix the code
...
inside DEBUG_OUTPUT so that it compiles.
llvm-svn: 9614
2003-10-30 18:33:58 +00:00
Brian Gaeke
45eb2eeb74
Explicitly cast type, so we aren't passing output_vbr a size_t.
...
llvm-svn: 9590
2003-10-29 20:09:01 +00:00
John Criswell
29265fe981
Added LLVM copyright header.
...
llvm-svn: 9321
2003-10-21 15:17:13 +00:00
John Criswell
4436c49787
Added LLVM copyright notice to Makefiles.
...
llvm-svn: 9312
2003-10-20 22:26:57 +00:00
John Criswell
482202a601
Added LLVM project notice to the top of every C++ source file.
...
Header files will be on the way.
llvm-svn: 9298
2003-10-20 19:43:21 +00:00
Chris Lattner
b94550e537
Change the Opcode enum for PHI nodes from "Instruction::PHINode" to "Instruction::PHI" to be more consistent with the other instructions.
...
llvm-svn: 9269
2003-10-19 21:34:28 +00:00
Chris Lattner
eb6cfaef4b
Fix warning
...
llvm-svn: 9236
2003-10-18 19:48:10 +00:00
Chris Lattner
dc83293a38
add support for new linkage types
...
llvm-svn: 9228
2003-10-18 06:30:21 +00:00
Chris Lattner
9d57347490
Updated to emit the final 1.0 bytecode format. This supports weak linkage,
...
more efficient encoding of varargs calls, and the new varargs intrinsics.
llvm-svn: 9221
2003-10-18 05:54:48 +00:00
Chris Lattner
7c6c539296
* New revised variable argument handling support
...
* More dense bytecode encoding for varargs calls (like printf)
* Eliminated the extremely old bytecode format. rev #0 is now 1.0
llvm-svn: 9220
2003-10-18 05:54:18 +00:00
Alkis Evlogimenos
8faf8d93d5
Eliminate some extraneous code in SlotCalculator::insertVal().
...
Rename SlotCalculator::getValSlot() to SlotCalculator::getSlot(),
SlotCalculator::insertValue() to SlotCalculator::getOrCreateSlot(),
SlotCalculator::insertVal() to SlotCalculator::insertValue(), and
SlotCalculator::doInsertVal() to SlotCalculator::doInsertValue().
llvm-svn: 9190
2003-10-17 02:02:40 +00:00
Misha Brukman
0659ddc455
Add separator between different types of readers.
...
llvm-svn: 9183
2003-10-16 21:19:54 +00:00
Chris Lattner
2d05c60bac
Add support for 'weak' linkage.
...
For now, we translate linkonce into weak linkage in the bytecode format because
we don't have enough bits to represent it. We will rev the bytecode version
soon anyways, so this will be fixed in the near future.
llvm-svn: 9170
2003-10-16 18:28:50 +00:00
Chris Lattner
aa78cc9e5d
Minor cleanups
...
llvm-svn: 9079
2003-10-13 14:57:53 +00:00
Chris Lattner
a785563692
Avoid calling getTypeSlot more
...
llvm-svn: 9077
2003-10-13 14:34:59 +00:00
Chris Lattner
f0bf7cb739
This is a header file, thus it needs a -*-C++-*-
...
llvm-svn: 9072
2003-10-13 04:22:07 +00:00
Chris Lattner
44d2c3514a
Regularize header file comments
...
llvm-svn: 9071
2003-10-13 03:32:08 +00:00
Chris Lattner
fdf472a83a
Ok, the "fix" for this is to do a real associative container. Symbol tables
...
are ordered by name, not by slot, so the previous solution wasn't any good.
On a large testcase, this reduces time to parse from 2.17s to 1.58s.
llvm-svn: 9002
2003-10-10 05:43:47 +00:00
Chris Lattner
1434d68164
Another 10% performance improvement by not using replaceAllUsesWith
...
llvm-svn: 8994
2003-10-09 23:10:14 +00:00
Chris Lattner
2ec9de30cd
Reserve space for PHI nodes when we read them in. This provides a VERY
...
tasty 15% speedup on the testcase from Bill.
llvm-svn: 8993
2003-10-09 22:46:58 +00:00
Chris Lattner
5255bed8bc
Use the version of getValue that takes the type plane instead of the type
...
if possible. This provides a consistent 8.5% speedup.
llvm-svn: 8991
2003-10-09 22:39:30 +00:00
Chris Lattner
819ce2dca1
Pass a vector around to reduce dynamic allocation
...
Throw the RawInst class in an anon namespace
llvm-svn: 8990
2003-10-09 20:45:42 +00:00
Chris Lattner
1ae8a48a62
Change getConstantValue to throw an exception on error, not return null
...
llvm-svn: 8988
2003-10-09 20:41:16 +00:00
Chris Lattner
a89c91020c
Remove potentially N^2 algorithm from symbol table reader. No speedup
...
in practice though
llvm-svn: 8985
2003-10-09 20:30:04 +00:00
Chris Lattner
e7691a4520
Major refactoring of the bytecode reader. This includes the following
...
changes:
* BytecodeReader::getType(...) used to return a null pointer
on error. This was only checked about half the time. Now we convert
it to throw an exception, and delete the half that checked for error.
This was checked in before, but psmith crashed and lost the change :(
* insertValue no longer returns -1 on error, so callers don't need to
check for it.
* Substantial rewrite of InstructionReader.cpp, to use more efficient,
simpler, data structures. This provides another 5% speedup. This also
makes the code much easier to read and understand.
llvm-svn: 8984
2003-10-09 20:22:47 +00:00
Chris Lattner
bd26abdc95
Significantly clean up parsing of instructions. This exceptionizes and
...
simplifies the control flow a bit. This provides a small (~3%) speedup,
but it's primarily a cleanup exercise.
llvm-svn: 8983
2003-10-09 18:25:19 +00:00
Chris Lattner
1e8addf890
Eliminate the instruction placeholder. Simplify a bunch of code.
...
This results in no significant speedup, but does provide simpler code
llvm-svn: 8980
2003-10-09 06:14:26 +00:00
Chris Lattner
42dce1e365
Eliminate the old LateResolveValues data structure, replacing it with a
...
new, simpler, ForwardReferences data structure. This is just the first
simple replacement, subsequent changes will improve the code more.
This simple change improves the performance of loading a file from HDF5
(contributed by Bill) from 2.36s to 1.93s, a 22% improvement. This
presumably has to do with the fact that we only create ONE placeholder for
a particular forward referenced values, and also may be because the data
structure is much simpler.
llvm-svn: 8979
2003-10-09 06:05:40 +00:00
Chris Lattner
a9c297c8ea
Remove a dead method
...
llvm-svn: 8978
2003-10-09 05:25:34 +00:00
Chris Lattner
abf6412c09
This patch substantially simplifies and cleans up handling of basic blocks
...
in the bytecode parser. Before we tried to shoehorn basic blocks into the
"getValue" code path with other types of values. For a variety of reasons
this was a bad idea, so this patch separates it out into its own data structure.
This simplifies the code, makes it fit in 80 columns, and is also much faster.
In a testcase provided by Bill, which has lots of PHI nodes, this patch speeds
up bytecode parsing from taking 6.9s to taking 2.32s. More speedups to
follow later.
llvm-svn: 8977
2003-10-08 22:52:54 +00:00
Chris Lattner
f29c7b1a3f
Inline the postResolveValues method. It was poorly named anyway
...
llvm-svn: 8976
2003-10-08 21:51:46 +00:00
Chris Lattner
85555779de
Various cleanups and simplifications. This speeds up reading a bytecode file
...
Bill gave me from 8.69s to 6.90s.
llvm-svn: 8971
2003-10-08 21:18:57 +00:00
Misha Brukman
b5c59fa16d
Destroy allocated resources on exception.
...
llvm-svn: 8969
2003-10-08 19:55:47 +00:00
Brian Gaeke
82f64531f6
All of our supported operating systems (so far) and FreeBSD technically
...
want you to include <sys/stat.h> for fstat(), struct stat, and friends.
llvm-svn: 8887
2003-10-06 03:30:28 +00:00
Chris Lattner
cc593fb6c6
Rename AbstractModuleProvider -> ModuleProvider, to match the header file name,
...
and because, while the class used by the interface is abstract, the actual
concept is not.
llvm-svn: 8850
2003-10-04 20:14:59 +00:00
Chris Lattner
069d6493c9
Transform two methods to return pointers directly instead of returning them
...
as 'by reference' arguments.
llvm-svn: 8849
2003-10-04 20:00:03 +00:00
Chris Lattner
4318c4b549
Use V for values, not D.
...
llvm-svn: 8848
2003-10-04 19:29:21 +00:00
Chris Lattner
a0d15e4d9e
Do not leak the ModuleProvider if releaseModule() throws.
...
llvm-svn: 8847
2003-10-04 19:19:37 +00:00
Chris Lattner
c7caffab32
There is no need for BytecodeParser to be an AbstractTypeUser. Instead, it
...
can just use PATypeHolders
llvm-svn: 8832
2003-10-02 20:26:18 +00:00
Chris Lattner
4437995826
Just rethrow previous exception instead of making a new one
...
llvm-svn: 8718
2003-09-26 14:44:52 +00:00
Chris Lattner
1e9402d93d
Define the instance variable Buffer, not the automatic variable Buffer.
...
This was causing us to munmap random stuff, which is obviously bad.
llvm-svn: 8709
2003-09-25 04:13:53 +00:00
Chris Lattner
ce6feda799
Fix alignment problem
...
llvm-svn: 8707
2003-09-24 22:34:17 +00:00
Misha Brukman
86c8a485d0
Actually assign the string correctly through the std::string pointer.
...
llvm-svn: 8704
2003-09-24 22:10:47 +00:00
Misha Brukman
c3634809e6
* Eliminate BytecodeBufferReader::Length member variable
...
* Kill unused ALIN_PTRS #define
* Set the error string if user passed it in to be compatible with former API
llvm-svn: 8701
2003-09-24 22:04:02 +00:00
John Criswell
89f4dcf5bc
Added code that ensures that we pass the beginning of the data buffer to
...
the parsing routines regardless of whether the buffer is re-aligned or not.
llvm-svn: 8693
2003-09-23 21:19:11 +00:00
Misha Brukman
1a74cffdec
Stop returning bool and pass Instruction by reference;
...
return std::auto_ptr and use exceptions
llvm-svn: 8684
2003-09-23 16:17:50 +00:00
Misha Brukman
0c0a882bc3
Suggestions made by Chris:
...
* Instead of a #define, use inline function
* Fix the name on the #define, errr... now inline function to be more logical:
it doesn't CHECK the alignment, it PERFORMS the alignment
* To get string name of a Type*, use getDescription(), not getName()
llvm-svn: 8683
2003-09-23 16:15:29 +00:00
Misha Brukman
301f7dfa19
* Group class definitions & implementations together
...
* Make sure we align the buffer we're given
* Do not let exceptions propagate when the caller asks for a Module*
* Add doxygenified comments to wrapper functions
llvm-svn: 8682
2003-09-23 16:13:28 +00:00
Misha Brukman
715fe875bb
* Constantify arguments to copy function
...
* Stop using a #define, make it an inline if statement
llvm-svn: 8678
2003-09-23 15:09:26 +00:00
Misha Brukman
3e18bc1518
Removed no longer used member variable.
...
llvm-svn: 8677
2003-09-22 23:58:08 +00:00
Misha Brukman
bafce80ba4
Added file header comment.
...
llvm-svn: 8675
2003-09-22 23:44:46 +00:00
Chris Lattner
df60fe04ab
Update file header for renamed file
...
llvm-svn: 8673
2003-09-22 23:42:00 +00:00
Misha Brukman
6e9a3517f2
* Cleaned up code:
...
- no more passing around a string pointer to set errors
- no more returning booleans and checking for errors, we use C++ exceptions
* Broke functionality into 2 new classes, one reads from file, one from a stream
* Implemented lazy function streaming - the parser can read in a function at-a-time
llvm-svn: 8671
2003-09-22 23:38:23 +00:00
Chris Lattner
af4c95a051
Fix a spello Misha made while fixing one of my appostrifications
...
llvm-svn: 8510
2003-09-15 00:33:20 +00:00
Misha Brukman
acda7df68b
Fixed spelling and grammar.
...
llvm-svn: 8489
2003-09-11 22:34:13 +00:00
Chris Lattner
0b792b4ed3
Fix bug
...
llvm-svn: 8410
2003-09-08 19:43:46 +00:00
Chris Lattner
9c58cf6d03
Add support for the unwind instruction
...
llvm-svn: 8408
2003-09-08 18:54:55 +00:00
Chris Lattner
a9083c961e
Read volatile loads/stores
...
llvm-svn: 8401
2003-09-08 18:20:14 +00:00
Chris Lattner
53bd0b24f2
Remove a gross hack that was there to support bytecode files that are over a year old.
...
If you still have these suckers laying around, you have GOT to rebuild them. geeze.
llvm-svn: 8395
2003-09-08 18:04:16 +00:00
Chris Lattner
8e8593a2c4
Add support for writing volatile load/stores
...
llvm-svn: 8394
2003-09-08 17:58:37 +00:00
Chris Lattner
15ad3f07db
Fix reading of invoke instrs
...
llvm-svn: 8365
2003-09-05 18:25:29 +00:00
Chris Lattner
7f8d98776f
Whoa, we were misreading invoke instructions "normal" destinations quite badly.
...
llvm-svn: 8363
2003-09-05 05:27:58 +00:00
Chris Lattner
b4520603a4
Non-functional change
...
llvm-svn: 8352
2003-09-04 23:47:07 +00:00
Chris Lattner
54d85e389f
Avoid printing meaningless numbers
...
llvm-svn: 8342
2003-09-03 20:25:27 +00:00
Chris Lattner
53db94da05
Follow the pattern of all other atu's
...
llvm-svn: 8340
2003-09-03 16:01:54 +00:00
Chris Lattner
55a07adc36
Allow modules to have 'any' pointer size and endianness. Luckily, we had
...
some space for extra flags, so we don't need to bump the revision number.
llvm-svn: 8118
2003-08-24 13:47:36 +00:00
Chris Lattner
6a2b859191
Rename SwitchInst::dest_push_back -> addCase
...
llvm-svn: 8089
2003-08-23 23:14:52 +00:00
Misha Brukman
7eb05a170a
Spell `necessary' correctly.
...
llvm-svn: 7944
2003-08-18 14:43:39 +00:00
Chris Lattner
f26a8ee580
Remove redundant const qualifiers from cast<> expressions
...
llvm-svn: 7253
2003-07-23 15:30:06 +00:00
Chris Lattner
c5372125b9
Remove explicit const qualifiers
...
llvm-svn: 7245
2003-07-23 14:54:33 +00:00
Misha Brukman
7fdaab4f68
The word `separate' only has one `e'.
...
llvm-svn: 7173
2003-07-14 17:20:40 +00:00
John Criswell
3ef61afb76
Merged in autoconf branch. This provides configuration via the autoconf
...
system.
llvm-svn: 7014
2003-06-30 21:59:07 +00:00
Chris Lattner
8826647168
Detemplatize the PATypeHandle class, which was only really instantiated on 'Type'.
...
llvm-svn: 6774
2003-06-18 19:22:36 +00:00
Chris Lattner
bbd00c12e0
Fix bug: Assembler/2003-06-17-InvokeDisassemble.llx
...
"yes, invoke instructions can have just three arguments"
llvm-svn: 6736
2003-06-17 13:31:10 +00:00
Chris Lattner
4a20791049
Fix bug: Assembler/2003-05-03-BytecodeReaderProblem.llx
...
by emitting the type planes before any constants (which could be constant
expressions involving undefined types!)
llvm-svn: 6285
2003-05-22 18:35:38 +00:00
Chris Lattner
c56bdc5520
Do not assert fail or crash when a bytecode parse fails!
...
llvm-svn: 6284
2003-05-22 18:26:48 +00:00
Chris Lattner
e69a1b9866
Eliminate the uchar typedef, use unsigned char explicitly
...
llvm-svn: 6283
2003-05-22 18:08:30 +00:00
Chris Lattner
09eb76ddfd
Fix Bug: Assembler/2003-05-12-MinIntProblem.llx
...
llvm-svn: 6123
2003-05-12 15:13:52 +00:00
Chris Lattner
f70da10697
Add support for the new va_arg instruction
...
llvm-svn: 6029
2003-05-08 02:44:12 +00:00
Misha Brukman
1d6f220a87
Fixed 'prevalent'.
...
llvm-svn: 5860
2003-04-23 02:59:05 +00:00
Chris Lattner
35834a503b
Add support for reading and writing pointersize/endianness to and from bytecode
...
llvm-svn: 5839
2003-04-22 18:15:10 +00:00
Chris Lattner
b672b5607f
Preserve module source information in the ModuleID
...
llvm-svn: 5836
2003-04-22 18:02:52 +00:00
Chris Lattner
bc35e27dfd
Initial support for reading standard .a files
...
llvm-svn: 5820
2003-04-19 21:45:34 +00:00
Chris Lattner
561e0005c5
Add support for reading unaligned bytecode buffers
...
llvm-svn: 5819
2003-04-19 21:45:17 +00:00
Chris Lattner
56d9f7f02a
Fix a big bad bug I checked in yesterday :(
...
llvm-svn: 5807
2003-04-18 04:11:56 +00:00