[llvm-commits] CVS: llvm/lib/Bytecode/Analyzer/Parser.cpp
LLVM
llvm at cs.uiuc.edu
Tue Jun 8 01:00:05 PDT 2004
Changes in directory llvm/lib/Bytecode/Analyzer:
Parser.cpp updated: 1.1 -> 1.2
---
Log message:
Fix the bug that was preventing the parser from working on all bytecode
files. It was reading non-initialized global vars when the flag said it was
initialized and vice versa. Causes mis-alignment since initialized and
non-initialized constants have different bytecode lengths.
---
Diffs of the changes: (+5 -5)
Index: llvm/lib/Bytecode/Analyzer/Parser.cpp
diff -u llvm/lib/Bytecode/Analyzer/Parser.cpp:1.1 llvm/lib/Bytecode/Analyzer/Parser.cpp:1.2
--- llvm/lib/Bytecode/Analyzer/Parser.cpp:1.1 Mon Jun 7 12:53:43 2004
+++ llvm/lib/Bytecode/Analyzer/Parser.cpp Tue Jun 8 00:54:47 2004
@@ -156,7 +156,8 @@
/// ParseInstructionList - Parse all of the BasicBlock's & Instruction's in the
/// body of a function. In post 1.0 bytecode files, we no longer emit basic
/// block individually, in order to avoid per-basic-block overhead.
-unsigned AbstractBytecodeParser::ParseInstructionList( BufPtr &Buf, BufPtr EndBuf) {
+unsigned AbstractBytecodeParser::ParseInstructionList( BufPtr &Buf,
+ BufPtr EndBuf) {
unsigned BlockNo = 0;
std::vector<unsigned> Args;
@@ -698,12 +699,11 @@
const Type *ElTy = cast<PointerType>(Ty)->getElementType();
// Create the global variable...
- if (hasInitializer)
- handler->handleGlobalVariable( ElTy, isConstant, Linkage );
- else {
+ if (hasInitializer) {
unsigned initSlot = read_vbr_uint(Buf,End);
handler->handleInitializedGV( ElTy, isConstant, Linkage, initSlot );
- }
+ } else
+ handler->handleGlobalVariable( ElTy, isConstant, Linkage );
// Get next item
VarType = read_vbr_uint(Buf, End);
More information about the llvm-commits
mailing list