aboutsummaryrefslogtreecommitdiff
path: root/lib/Bytecode/Reader/Reader.cpp
AgeCommit message (Collapse)Author
2004-08-04Make getGlobalTableValue not use getTypeSlot, this speeds up the bc readerChris Lattner
by 5% on eon git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15452 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-03Do not do a linear std::find to reconstruct information we had, but later threwChris Lattner
away. This speeds up by .bc reader by 30% in a profile build on 252.eon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15450 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-27Simplify code and silence warningChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15255 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-25Fix a serious bug in the double constant reader. In particular, becauseChris Lattner
(At[3] << 24) is an int type and it is being coerced to uint64_t, it was getting sign extended, causing us to get FFFFFFFFxxxxxxxx constants all of the time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15224 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-25Always write FP values correctly.Reid Spencer
Adjust for new Module.h interface for dependent libraries. Excise unused backwards compatibility flag. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15220 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-25bug 263:Reid Spencer
- encode/decode target triple and dependent libraries bug 401: - fix encoding/decoding of FP values to be little-endian only bug 402: - initial (compatible) cut at 24-bit types instead of 32-bit - reduce size of block headers by 50% Other: - cleanup Writer by consolidating to one compilation unit, rem. other files - use a std::vector instead of std::deque so the buffer can be allocated in multiples of 64KByte chunks rather than in multiples of some smaller (default) number. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15210 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-18bug 122:Reid Spencer
- Replace ConstantPointerRef usage with GlobalValue usage - Correct isa<Constant> for GlobalValue subclass git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14939 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-14Actually set the endian/pointersize flags on the module being read in!Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14826 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-13Fix warning on SparcV9, where sizeof (int) != sizeof (void *).Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14786 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-11Various cleanups:Reid Spencer
- Remove tabs - Standardize use of space around ( and ). - Consolidate the ConstantPlaceHolder class - Rename two methods to be more meaningful (ParseType, ParseTypes) - Correct indentation of blocks - Add documentation - Convert input dependent asserts to error(...) so it throws instead. Provide placeholder implementations of read_float and read_double that still read in platform-specific endianess. When I figure out how to do this without knowing the endianess of the platform, it will get implemented correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14765 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-09Error Handling Cleanup:Reid Spencer
- get rid of PARSE_ERROR macro - add error(std::string) function - use error(std::string) for all errors - make input dependent asserts call error(std::string) instead - ensure asserts are only for logic bugs, not input discrepancies. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14729 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-09Fix a backwards compatibility bug found by Tanya. In version 1.2, theReid Spencer
global type plane starts with a length and the TypeTyID value to identify the type plane has having type definitions. This doesn't happen in 1.3 because the types are read from a known position in the file. However, the TypeTyID must be read in (and ignored) if its a 1.2 bytecode file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14728 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-05Finalize bytecode dumping. The "handleFinish" method was getting calledReid Spencer
too soon so the function data was not getting dumped (it was generated after the call handleFinish). Also cleaned up the output format for proper indentation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14627 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-04- Don't use macros to call the BytecodeHandlerReid Spencer
- Don't use PARSE_ERROR macro unnecessarily (for simple strings) - Add comments before each function - Convert for bug 122 (Type != Value) - Handle new value range on Type::PrimitiveTypeId enumeration by augmenting the reader with a new read_typeid method and sanitizeTypeId method. - Remove BytecodeHandler's default method implementations to header file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14604 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-29MAJOR REWRITE.Reid Spencer
- stop passing Buf/BufEnd to every function (now member vars) - internalize things that used to be in a header file that no one else included/needed. - Remove defunct BCR_TRACE lines - Standardize error handling with the PARSE_ERROR macro. - Integrate ConstantReader.cpp and InstructionReader.cpp and reorgnize the definition order so that gcc has a chance at optimizing this module - Standardize case and style of method names. - Eliminate unneeded header files - Prepare for Type != Value (bug122) change by splitting Types into their own data structures. - Implement the BytecodeHandler interface calls. - Provide default implementation of BytecodeHandler interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14494 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17Rename Type::PrimitiveID to TypeId and ::getPrimitiveID() to ::getTypeID()Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14201 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-05Implement support for a new LLVM 1.3 bytecode format, which uses uint'sChris Lattner
to index into structure types and allows arbitrary 32- and 64-bit integer types to index into sequential types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12651 91177308-0d34-0410-b5e6-96231b3b80d8
2004-04-03Remove a bunch of cruft that was used to be backwards compatible with the lastChris Lattner
prerelease format for LLVM bytecode files. Now we only are compatible with LLVM 1.0+. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12643 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-29Make error message a bit nicer.Chris Lattner
Contributed by Reid Spencer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12523 91177308-0d34-0410-b5e6-96231b3b80d8
2004-02-09Start using the new and improve interface to FunctionType argumentsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11224 91177308-0d34-0410-b5e6-96231b3b80d8
2004-01-20Fix bogus warning and simplify codeChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10924 91177308-0d34-0410-b5e6-96231b3b80d8
2004-01-20Bugfixes for dealing with partially compactified functionsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10920 91177308-0d34-0410-b5e6-96231b3b80d8
2004-01-18Save another 30K from 176.gcc by encoding the compaction table a bit moreChris Lattner
intelligently. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10918 91177308-0d34-0410-b5e6-96231b3b80d8
2004-01-18Add support for reading bytecode files with compactiontables for bytecode files.Chris Lattner
This shrinks the bytecode file for 176.gcc by about 200K (10%), and 254.gap by about 167K, a 25% reduction. There is still a lot of room for improvement in the encoding of the compaction table. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10914 91177308-0d34-0410-b5e6-96231b3b80d8
2004-01-17Bytecode format for LLVM 1.2 no longer explicitly encodes zeros in primitiveChris Lattner
type planes. This saves about 5k on 176.gcc, and is needed for a subsequent patch of mine I'm working on. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10908 91177308-0d34-0410-b5e6-96231b3b80d8
2004-01-15Allow bytecode files to refer directly to global values as constants, insteadChris Lattner
of forcing them to go through ConstantPointerRef's. This allows bytecode files to mirror .ll files, allows more efficient encoding, and makes it easier to eventually eliminate CPR's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10883 91177308-0d34-0410-b5e6-96231b3b80d8
2004-01-15Fix PR73Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10875 91177308-0d34-0410-b5e6-96231b3b80d8
2004-01-15Change all of the bytecode reader primitives to throw exceptions instead ofChris Lattner
returning error codes. Because they don't return an error code, they can return the value read, which simplifies the code and makes the reader more efficient (yaay!). Also eliminate the special case code for little endian machines. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10871 91177308-0d34-0410-b5e6-96231b3b80d8
2004-01-14Version 1.2 now supports encoding strings as a special case, to avoid havingChris Lattner
to emit all of those sbyte constants. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10863 91177308-0d34-0410-b5e6-96231b3b80d8
2004-01-14Remove support for the pre-1.0 bytecode version #1. This will becomeChris Lattner
the bytecode revision generated by LLVM 1.2. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10848 91177308-0d34-0410-b5e6-96231b3b80d8
2003-12-30remove some useless #includesChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10654 91177308-0d34-0410-b5e6-96231b3b80d8
2003-12-01Emit & read more compressed bytecode by not emitting a bytecodeblock forChris Lattner
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10280 91177308-0d34-0410-b5e6-96231b3b80d8
2003-11-19* Finegrainify namespacificationChris Lattner
* 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10085 91177308-0d34-0410-b5e6-96231b3b80d8
2003-11-19Minor speedup to do less linear time searches of information we already have.Chris Lattner
speeds up disassembly of kc++ by .6s git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10079 91177308-0d34-0410-b5e6-96231b3b80d8
2003-11-11Put all LLVM code into the llvm namespace, as per bug 109.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9903 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-20Added LLVM project notice to the top of every C++ source file.John Criswell
Header files will be on the way. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9298 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-18Fix warningChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9236 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-18add support for new linkage typesChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9228 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-18* New revised variable argument handling supportChris Lattner
* More dense bytecode encoding for varargs calls (like printf) * Eliminated the extremely old bytecode format. rev #0 is now 1.0 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9220 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-16Add support for 'weak' linkage.Chris Lattner
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9170 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-13Minor cleanupsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9079 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-13Avoid calling getTypeSlot moreChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9077 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-10Ok, the "fix" for this is to do a real associative container. Symbol tablesChris Lattner
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9002 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-09Another 10% performance improvement by not using replaceAllUsesWithChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8994 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-09Use the version of getValue that takes the type plane instead of the typeChris Lattner
if possible. This provides a consistent 8.5% speedup. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8991 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-09Pass a vector around to reduce dynamic allocationChris Lattner
Throw the RawInst class in an anon namespace git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8990 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-09Change getConstantValue to throw an exception on error, not return nullChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8988 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-09Remove potentially N^2 algorithm from symbol table reader. No speedupChris Lattner
in practice though git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8985 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-09Major refactoring of the bytecode reader. This includes the followingChris Lattner
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8984 91177308-0d34-0410-b5e6-96231b3b80d8
2003-10-09Significantly clean up parsing of instructions. This exceptionizes andChris Lattner
simplifies the control flow a bit. This provides a small (~3%) speedup, but it's primarily a cleanup exercise. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8983 91177308-0d34-0410-b5e6-96231b3b80d8