mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-17 04:24:00 +00:00
Cleanup ConstantExpr handling:
* Correctly delete TypeHandles in AsmParser. In addition to not leaking memory, this prevents a bug that could have occurred when a type got resolved that the constexpr was using * Check for errors in the AsmParser instead of hitting assertion failures deep in the code * Simplify the interface to the ConstantExpr class, removing unneccesary parameters to the ::get* methods. * Rename the 'getelementptr' version of ConstantExpr::get to ConstantExpr::getGetElementPtr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3160 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -11,15 +11,10 @@
|
||||
|
||||
#include "llvm/Transforms/Utils/Linker.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/Function.h"
|
||||
#include "llvm/BasicBlock.h"
|
||||
#include "llvm/GlobalVariable.h"
|
||||
#include "llvm/SymbolTable.h"
|
||||
#include "llvm/DerivedTypes.h"
|
||||
#include "llvm/iOther.h"
|
||||
#include "llvm/Constants.h"
|
||||
#include "llvm/Argument.h"
|
||||
#include <iostream>
|
||||
using std::cerr;
|
||||
using std::string;
|
||||
using std::map;
|
||||
@ -134,7 +129,7 @@ static Value *RemapOperand(const Value *In, map<const Value*, Value*> &LocalMap,
|
||||
Value *V2 = RemapOperand(CE->getOperand(1), LocalMap, GlobalMap);
|
||||
|
||||
Result = ConstantExpr::get(CE->getOpcode(), cast<Constant>(V1),
|
||||
cast<Constant>(V2), CE->getType());
|
||||
cast<Constant>(V2));
|
||||
} else {
|
||||
// GetElementPtr Expression
|
||||
assert(CE->getOpcode() == Instruction::GetElementPtr);
|
||||
@ -145,8 +140,7 @@ static Value *RemapOperand(const Value *In, map<const Value*, Value*> &LocalMap,
|
||||
Indices.push_back(cast<Constant>(RemapOperand(CE->getOperand(i),
|
||||
LocalMap, GlobalMap)));
|
||||
|
||||
Result = ConstantExpr::get(CE->getOpcode(), cast<Constant>(Ptr),
|
||||
Indices, CE->getType());
|
||||
Result = ConstantExpr::getGetElementPtr(cast<Constant>(Ptr), Indices);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user