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@3161 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2002-07-30 18:54:25 +00:00
parent e8e4605021
commit c188eeb08c
4 changed files with 61 additions and 54 deletions
+4 -3
View File
@@ -100,7 +100,8 @@ bool BytecodeWriter::outputConstant(const Constant *CPV) {
// We must check for a ConstantExpr before switching by type because
// a ConstantExpr can be of any type, and has no explicit value.
//
if (const ConstantExpr* CE = dyn_cast<ConstantExpr>(CPV)) {
if (const ConstantExpr *CE = dyn_cast<ConstantExpr>(CPV)) {
// FIXME: Encoding of constant exprs could be much more compact!
assert(CE->getNumOperands() > 0 && "ConstantExpr with 0 operands");
output_vbr(CE->getNumOperands(), Out); // flags as an expr
output_vbr(CE->getOpcode(), Out); // flags as an expr
@@ -113,9 +114,9 @@ bool BytecodeWriter::outputConstant(const Constant *CPV) {
output_vbr((unsigned)Slot, Out);
}
return false;
}
else
} else {
output_vbr((unsigned)0, Out); // flag as not a ConstantExpr
}
switch (CPV->getType()->getPrimitiveID()) {
case Type::BoolTyID: // Boolean Types