From: Nuno Lopes Date: Tue, 4 Nov 2008 14:42:19 +0000 (+0000) Subject: fix leakage of APFloats in getExistingVal() X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b0c53da1e1308d9431acfc2ff5626643607fa2e6;p=oota-llvm.git fix leakage of APFloats in getExistingVal() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58696 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AsmParser/ParserInternals.h b/lib/AsmParser/ParserInternals.h index 168d9baa3a0..8af27c77c33 100644 --- a/lib/AsmParser/ParserInternals.h +++ b/lib/AsmParser/ParserInternals.h @@ -152,6 +152,8 @@ struct ValID { delete IAD; else if (Type == ConstAPInt) delete ConstPoolInt; + else if (Type == ConstFPVal) + delete ConstPoolFP; } inline ValID copy() const { diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index d76994a431a..36b827d6b72 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -437,7 +437,11 @@ static Value *getExistingVal(const Type *Ty, const ValID &D) { D.ConstPoolFP->convert(APFloat::IEEEsingle, APFloat::rmNearestTiesToEven, &ignored); } - return ConstantFP::get(*D.ConstPoolFP); + { + ConstantFP *tmp = ConstantFP::get(*D.ConstPoolFP); + D.destroy(); + return tmp; + } case ValID::ConstNullVal: // Is it a null value? if (!isa(Ty)) {