aboutsummaryrefslogtreecommitdiff
path: root/lib/Bytecode/Analyzer/Parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Bytecode/Analyzer/Parser.cpp')
-rw-r--r--lib/Bytecode/Analyzer/Parser.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/Bytecode/Analyzer/Parser.cpp b/lib/Bytecode/Analyzer/Parser.cpp
index 45f761ea67..743db6c315 100644
--- a/lib/Bytecode/Analyzer/Parser.cpp
+++ b/lib/Bytecode/Analyzer/Parser.cpp
@@ -17,6 +17,7 @@
//===----------------------------------------------------------------------===//
#include "AnalyzerInternals.h"
+#include "ReaderPrimitives.h"
#include "llvm/Module.h"
#include "llvm/Bytecode/Format.h"
#include "Support/StringExtras.h"
@@ -25,6 +26,17 @@
using namespace llvm;
+// Enable to trace to figure out what the heck is going on when parsing fails
+//#define TRACE_LEVEL 10
+//#define DEBUG_OUTPUT
+
+#if TRACE_LEVEL // ByteCodeReading_TRACEr
+#define BCR_TRACE(n, X) \
+ if (n < TRACE_LEVEL) std::cerr << std::string(n*2, ' ') << X
+#else
+#define BCR_TRACE(n, X)
+#endif
+
#define PARSE_ERROR(inserters) \
{ \
std::ostringstream errormsg; \
@@ -33,6 +45,15 @@ using namespace llvm;
throw std::string(errormsg.str()); \
}
+
+inline void AbstractBytecodeParser::readBlock(const unsigned char *&Buf,
+ const unsigned char *EndBuf,
+ unsigned &Type, unsigned &Size)
+{
+ Type = read(Buf, EndBuf);
+ Size = read(Buf, EndBuf);
+}
+
const Type *AbstractBytecodeParser::getType(unsigned ID) {
//cerr << "Looking up Type ID: " << ID << "\n";