Mehdi Amini
e47bc8657f
Bitcode reader: Inline readAbbreviatedField in readRecord and move the enclosing loop in each case (NFC)
...
Summary: This make readRecord 20% faster, measured on an LTO build
Reviewers: rafael
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D17911
From: Mehdi Amini <mehdi.amini@apple.com >
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262811 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-07 00:38:09 +00:00
Filipe Cabecinhas
316f9e05ce
[BitstreamReader] Make sure the Array operand type is an encoding
...
Bug found with AFL fuzz.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238269 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-27 00:48:43 +00:00
Filipe Cabecinhas
ba7ccd4201
clang-format a couple of lines
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238268 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-27 00:48:37 +00:00
Filipe Cabecinhas
c756772b8d
[BitcodeReader] Make sure abbrev records have at least one operand (record code)
...
Bug found with AFL fuzz.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238265 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-26 23:52:21 +00:00
Rafael Espindola
b9f5ce3a43
Simplify boolean conditional return statements.
...
Patch by Richard <legalize@xmission.com >
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238134 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-25 13:50:21 +00:00
Filipe Cabecinhas
c3ccd67d72
[BitcodeReader] It's a malformed block if CodeLenWidth is too big
...
Bug found with AFL fuzz.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237646 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-19 00:34:17 +00:00
Filipe Cabecinhas
7b30f32d3d
Turn an assert into report_fatal_error since it's reachable based on user input
...
Bug found with AFL fuzz.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236076 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-29 01:58:31 +00:00
Filipe Cabecinhas
0236022390
Be more strict about the operand for the array type in BitcodeReader
...
Summary: Bug found with AFL fuzz.
Reviewers: rafael
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9016
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235596 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-23 13:38:21 +00:00
Filipe Cabecinhas
81f9bd3e19
Verify sizes when trying to read a BitcodeAbbrevOp
...
Summary:
Make sure the abbrev operands are valid and that we can read/skip them
afterwards.
Bug found with AFL fuzz.
Reviewers: rafael
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9030
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235595 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-23 13:25:35 +00:00
Filipe Cabecinhas
f72ee4c275
Revert "Verify sizes when trying to read a VBR"
...
This reverts r234984 since it seems to break some bots (most of them
seemed arm*-selfhost).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234998 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-15 11:10:17 +00:00
Filipe Cabecinhas
4c0055402f
Verify sizes when trying to read a VBR
...
Also added an assert to ReadVBR64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234984 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-15 08:48:08 +00:00
David Blaikie
da4471d726
Simplify expressions involving boolean constants with clang-tidy
...
Patch by Richard (legalize at xmission dot com).
Differential Revision: http://reviews.llvm.org/D8154
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231617 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-09 01:57:13 +00:00
Richard Smith
348cc93b15
Clean up some inappropriate choices of type in the bitcode reader. None of
...
these are expected to fix any 64->32 bit real truncation issues.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229153 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-13 21:05:11 +00:00
Filipe Cabecinhas
5d8bb5c7c5
[Bitcode] Diagnose errors instead of asserting from bad input
...
Eventually we can make some of these pass the error along to the caller.
Reports a fatal error if:
We find an invalid abbrev record
We try to get an invalid abbrev number
We can't fill the current word due to an EOF
Fixed an invalid bitcode test to check for output with FileCheck
Bugs found with afl-fuzz
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226986 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-24 04:15:05 +00:00
Reid Kleckner
b036e71e41
Silence MSVC warning on missing return after fully covered switch
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221943 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-13 23:07:22 +00:00
Rafael Espindola
83e56d6b47
Move calls to push_back out of readAbbreviated(Literal|Field).
...
These functions always return a single value and not all callers want to
push them into a SmallVector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221934 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-13 22:29:02 +00:00
Rafael Espindola
b92db75a03
Make a few helper functions static. NFC.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221930 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-13 21:54:59 +00:00
Rafael Espindola
8e617cceb1
Factor out call to push_back. NFC.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221490 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-06 22:39:16 +00:00
Benjamin Kramer
57a73c27b1
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217778 91177308-0d34-0410-b5e6-96231b3b80d8
2014-09-15 15:44:14 +00:00
Craig Topper
10d664fee7
Replace some assert(0)'s with llvm_unreachable.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211141 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-18 05:05:13 +00:00
Craig Topper
0b6cb7104b
[C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206252 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-15 06:32:26 +00:00
Jordan Rose
1197e38f33
Micro-optimization: don't shift an entire bitcode record over to get the code.
...
Previously, BitstreamCursor read an abbreviated record by splatting the
whole thing into a data vector, then extracting and removing the /first/
element. Now, it reads the first element--the record code--separately from
the actual field values.
No (intended) functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181639 91177308-0d34-0410-b5e6-96231b3b80d8
2013-05-10 22:17:10 +00:00
Joe Abbey
ef7964c1b7
Whitespace cleanup
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178454 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-01 02:28:07 +00:00
Jakub Staszak
c61e83e6de
Simplify code. No functionality change.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175501 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-19 09:48:30 +00:00
Chris Lattner
b24f5b7c08
Fix the underlying problem that was causing read(0) to be called: sometimes the
...
bitcode writer would generate abbrev records saying that the abbrev should be
filled with fixed zero-bit bitfields (this happens in the .bc writer when
the number of types used in a module is exactly one, since log2(1) == 0).
In this case, just handle it as a literal zero. We can't "just fix" the writer
without breaking compatibility with existing bc files, so have the abbrev reader
do the substitution.
Strengthen the assert in read to reject reads of zero bits so we catch such
crimes in the future, and remove the special case designed to handle this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174801 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-09 07:07:29 +00:00
Joe Abbey
acb6194f93
Code Custodian (trivial whitespace cleanup)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174550 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06 22:14:06 +00:00
Chris Lattner
69582cf6c4
Fix a heinous inefficiency introduced in r149918, wherein reading each byte of a
...
BLOB (i.e., large, performance intensive data) in a bitcode file was switched to
invoking one virtual method call per byte read. Now we do one virtual call per
BLOB.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173065 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-21 18:24:49 +00:00
Chris Lattner
47543a8a66
wean Blob handling logic off of banging on NextChar directly. Instead, make
...
it reason about the current bit position, which is always independent of the
underlying cursors word size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173063 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-21 18:18:25 +00:00
Chris Lattner
fd0543d9be
rename "SkipToWord" to "SkipToFourByteBoundary" since a word is not always 4 bytes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173062 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-21 18:04:19 +00:00
Chris Lattner
5a4251c767
convert the bitstream reader itself and the IR .bc file parser to use the new advance() APIs,
...
simplifying things and making a bunch of details more private to BitstreamCursor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172947 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-20 02:13:19 +00:00
Chris Lattner
194ef24dfe
stringref'ize readRecord and properly capitalize it. Add a compatibility method to easy
...
the transition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172940 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-20 01:06:48 +00:00
Chris Lattner
f9147c41d8
move some private methods out of line, add a skipRecord() method.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172931 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-20 00:00:00 +00:00
Chris Lattner
63246aa04f
Add a new BitstreamEntry concept, and add two helper methods for walking
...
through a BitstreamCursor that produce it: advance() and
advanceSkippingSubblocks(), representing the two most common ways clients
want to walk through bitcode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172919 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-19 21:35:24 +00:00
Chris Lattner
312c7d9dc1
BitstreamReader hasn't aged well. It's been hacked on by various people and
...
has past the point of making sense. Lets tidy things up: first step, moving
a ton of big functions out of line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172904 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-19 18:19:39 +00:00