Commit Graph

47 Commits

Author SHA1 Message Date
Benjamin Kramer 0157ffa1ec Use IntrusiveRefCntPtr to manage the lifetime of BitCodeAbbrevs.
This doesn't change the interface or gives additional safety but removes
a ton of retain/release boilerplate.

No functionality change.

llvm-svn: 217778
2014-09-15 15:44:14 +00:00
Craig Topper c2260fc0ab [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr.
llvm-svn: 206252
2014-04-15 06:32:26 +00:00
Justin Bogner 551f5d2c7f Bitcode: Fix a typo in an assert
llvm-svn: 198894
2014-01-09 22:02:05 +00:00
Jordan Rose e4258d9007 Rewrite assert to avoid warning when the record element type is byte-sized.
BitstreamWriter asserts that when blob data is written from the record
element vector, each element fits in a byte. However, if the record
elements are specified as a SmallVector of 'char', this causes a warning
from -Wtautological-constant-out-of-range-compare. Fix this by using
llvm::isUInt<8> instead of a plain comparison against 256.

llvm-svn: 181545
2013-05-09 21:07:43 +00:00
Joe Abbey f809052035 Whitespace cleanup
llvm-svn: 178454
2013-04-01 02:28:07 +00:00
Jakub Staszak f1ea1a7f37 Fix include guards so they exactly match file names.
llvm-svn: 172025
2013-01-10 00:45:19 +00:00
Chandler Carruth ca305491f6 Sort the #include lines for the include/... tree with the script.
AKA: Recompile *ALL* the source code!

This one went much better. No manual edits here. I spot-checked for
silliness and grep-checked for really broken edits and everything seemed
good. It all still compiles. Yell if you see something that looks goofy.

llvm-svn: 169133
2012-12-03 17:02:12 +00:00
Joe Abbey 87ea4ece75 Code Custodian:
- Widespread trailing space removal
  - A dash of OCD spacing to block align enums
  - joined a line that probably needed 80 cols a while back

llvm-svn: 168566
2012-11-25 15:23:39 +00:00
Duncan Sands e740af6a07 Pacify PVS-Studio by changing the type rather than doing a cast, a tweak
suggested by David Blaikie.

llvm-svn: 162286
2012-08-21 16:20:37 +00:00
Duncan Sands 561c04fd8c PVS-Studio noticed that EmitVBR64 would perform undefined behaviour if the
number of bits was bigger than 32.  I checked every use of this function
that I could find and it looks like the maximum number of bits is 32, so I've
added an assertion checking this property, and a type cast to (hopefully) stop
PVS-Studio from warning about this in the future.

llvm-svn: 162277
2012-08-21 13:47:25 +00:00
Jan Sjödin d0ec185e96 Fix windows compilation warning. Patch by Micah.
llvm-svn: 153215
2012-03-21 20:00:30 +00:00
Daniel Dunbar 0f3c632848 BitstreamWriter: Use SmallVector::append instead of multiple push_back calls.
llvm-svn: 151755
2012-02-29 21:02:05 +00:00
Daniel Dunbar ce00dc437f BitstreamWriter: Change primary output buffer to be a SmallVector instead of an
std::vector.
 - Good for 1-2% speedup on writing PCH for Cocoa.h.
 - Clang side API match to follow shortly, there wasn't an easy way to make this
   non-breaking.

llvm-svn: 151750
2012-02-29 20:31:09 +00:00
Daniel Dunbar 4b6c24ce7c BitstreamWriter: Isolate access to the underlying buffer.
llvm-svn: 151749
2012-02-29 20:31:05 +00:00
Daniel Dunbar 769ebcfda1 BitcodeWriter: Expose less implementation details -- make BackpatchWord private
and remove getBuffer().

llvm-svn: 151748
2012-02-29 20:31:01 +00:00
Craig Topper e18a06be4d Convert assert(0) to llvm_unreachable
llvm-svn: 149849
2012-02-05 22:14:15 +00:00
Chris Lattner 25446ccf9f don't emit zero bit fields with Emit, fixing undefined behavior,
PR7778

llvm-svn: 111336
2010-08-18 00:29:18 +00:00
Dan Gohman 92b6122204 Fix "the the" and similar typos.
llvm-svn: 95781
2010-02-10 16:03:48 +00:00
Daniel Dunbar 4daaf9d3f4 Pass StringRef by value.
llvm-svn: 86251
2009-11-06 10:58:06 +00:00
Daniel Dunbar b98f0e9942 Add StringRef based APIs to BitstreamWriter.
llvm-svn: 79904
2009-08-24 09:29:31 +00:00
Douglas Gregor 936c1fd9eb Use 8 instead of CHAR_BIT
llvm-svn: 68616
2009-04-08 16:57:40 +00:00
Douglas Gregor e093e2a759 Add BitstreamWriter::GetCurrentBitNo, to report where we are in the output bitstream
llvm-svn: 68610
2009-04-08 15:18:21 +00:00
Chris Lattner c4c57e4369 Add a new EmitRecordWithBlob API that allows a blob to be emitted
without converting each byte to a uint64_t to stick in a SmallVector.

llvm-svn: 68469
2009-04-06 22:26:26 +00:00
Chris Lattner ac7e143979 add a new Blob encoding abbreviation for bitcode files that emits
elements in a form that is efficient for the reader to just get a
pointer in memory and start reading.  APIs to do efficient reading
and writing are still todo.

llvm-svn: 68465
2009-04-06 21:50:39 +00:00
Chris Lattner 5a3ece0cff simplify code a bit.
llvm-svn: 68461
2009-04-06 21:20:01 +00:00
Chris Lattner 07fdd28798 simplify to reduce indentation.
llvm-svn: 68460
2009-04-06 21:12:29 +00:00
Misha Brukman 5cfd666bde Removed trailing whitespace.
llvm-svn: 65199
2009-02-20 23:04:06 +00:00
Chris Lattner 7819d9c8be Add support for writing LLVM IR to a specified BitstreamWriter.
Patch by Lukasz Janyst!

llvm-svn: 61251
2008-12-19 18:37:59 +00:00
Chris Lattner b650adae49 Add a little wrapper header that is put around bc files when emitting
bc files for modules with a target triple that indicates they are for
darwin.  The reader unconditionally handles this, and the writer could
turn this on for more targets if we care.

This change has two benefits for darwin:

1) it allows us to encode the cpu type of the file in an easy to read
   place that doesn't require decoding the bc file.
2) it works around a bug (IMO) in darwin's AR where it is incapable of
   handling files that are not a multiple of 8 bytes long.  BC files
   are only guaranteed to be multiples of 4 bytes long.

llvm-svn: 53275
2008-07-09 05:14:23 +00:00
Evan Cheng d9353009b7 Fix more -Wshorten-64-to-32 warnings.
llvm-svn: 50659
2008-05-05 18:30:58 +00:00
Chris Lattner e0b1ee937a Don't attribute in file headers anymore. See llvmdev for the
discussion of this change.  Boy are my fingers tired. ;-)

llvm-svn: 45411
2007-12-29 19:59:42 +00:00
Dan Gohman 7fa473514d Add explicit keywords.
llvm-svn: 42747
2007-10-08 15:08:41 +00:00
Chris Lattner 87753518a9 allow zero-length arrays
llvm-svn: 36863
2007-05-06 08:22:10 +00:00
Jeff Cohen ce844b2aaa Unbreak VC++.
llvm-svn: 36831
2007-05-06 03:12:47 +00:00
Chris Lattner 9818d0a7e6 fix a bug I introduced when I merged some code together
llvm-svn: 36813
2007-05-05 23:40:48 +00:00
Chris Lattner cedc5577f2 add a 6-bit encoding type for strings.
llvm-svn: 36770
2007-05-05 01:15:42 +00:00
Chris Lattner eca2bb1334 Implement support for globally associating abbrevs with block IDs, which
relieves us from having to emit the abbrevs into each instance of the block.
This shrinks kc.bit from 3368K to 3333K, but will be a more significant win
once instructions are abbreviated.

The VST went from:

  Block ID #14 (VALUE_SYMTAB):
      Num Instances: 2345
         Total Size: 1.29508e+07b/1.61885e+06B/404713W
       Average Size: 5522.73b/690.342B/172.585W
          % of file: 48.0645
  Tot/Avg SubBlocks: 0/0
    Tot/Avg Abbrevs: 7035/3
    Tot/Avg Records: 120924/51.5667
      % Abbrev Recs: 100

to:

  Block ID #14 (VALUE_SYMTAB):
      Num Instances: 2345
         Total Size: 1.26713e+07b/1.58391e+06B/395978W
       Average Size: 5403.53b/675.442B/168.86W
          % of file: 47.5198
  Tot/Avg SubBlocks: 0/0
    Tot/Avg Abbrevs: 0/0
    Tot/Avg Records: 120924/51.5667
      % Abbrev Recs: 100

because we didn't emit the same 3 abbrevs 2345 times :)

llvm-svn: 36767
2007-05-05 00:17:00 +00:00
Chris Lattner e2b2272c53 use a template to eliminate manual code duplication
llvm-svn: 36757
2007-05-04 20:40:50 +00:00
Chris Lattner 75b84adf6b add support for array abbreviations.
llvm-svn: 36754
2007-05-04 20:33:47 +00:00
Chris Lattner 4e0c6003b7 minor cleanups. Add provisions for a new standard BLOCKINFO_BLOCK
block type.

llvm-svn: 36748
2007-05-04 18:25:49 +00:00
Chris Lattner f0086ffafa refcount BitCodeAbbrev objects
llvm-svn: 36747
2007-05-04 17:35:19 +00:00
Chris Lattner 8f45aa08fa Fix a bug in bitstream writer handling abbrevs, add value symtab
llvm-svn: 36373
2007-04-23 20:34:46 +00:00
Chris Lattner 38568c7454 minor cleanups
llvm-svn: 36365
2007-04-23 18:57:32 +00:00
Chris Lattner 69a8eda44d finish implementation of basic abbrev writing.
llvm-svn: 36364
2007-04-23 17:43:52 +00:00
Chris Lattner 5510ac5a56 first part of implementation of abbrevs. The writer isn't fully there yet and the
reader doesn't handle them at all yet.

llvm-svn: 36363
2007-04-23 16:04:05 +00:00
Jeff Cohen 2cf2830f4d Teach Visual Studio about Bitcode.
llvm-svn: 36341
2007-04-22 15:00:52 +00:00
Chris Lattner 97852839f7 Define the content-independent interfaces to read/write bitcode files and
the high-level interface to read/write LLVM IR bitcode files.

This is a work in progress.

llvm-svn: 36329
2007-04-22 06:22:05 +00:00