From 5e41f6569918a6e001cadf8dea96819686cf301c Mon Sep 17 00:00:00 2001 From: Duncan Sands Date: Tue, 20 Nov 2007 14:09:29 +0000 Subject: [PATCH] =?utf8?q?In=20order=20for=20parameter=20attribute=20uniqu?= =?utf8?q?ing=20to=20make=20any=20sense=20it=20is=20important=20that=20Par?= =?utf8?q?amAttr::None=20gets=20treated=20the=20same=20as=20not=20supplyin?= =?utf8?q?g=20an=20attribute=20at=20all.=20=20Rather=20than=20stripping=20?= =?utf8?q?ParamAttr::None=20out=20of=20the=20list=20of=20attributes,=20ass?= =?utf8?q?ert=20if=20ParamAttr::None=20is=20seen.=20=20Fix=20up=20the=20bi?= =?utf8?q?tcode=20reader=20which=20liked=20to=20insert=20ParamAttr::None?= =?utf8?q?=20all=20over=20the=20place.=20=20Patch=20based=20on=20one=20by?= =?utf8?q?=20T=C3=B6r=C3=B6k=20Edwin.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44250 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Bitcode/Reader/BitcodeReader.cpp | 10 ++++------ lib/VMCore/Function.cpp | 8 ++++++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index aa78e7c4dc0..119a583358e 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -232,17 +232,15 @@ bool BitcodeReader::ParseParamAttrBlock() { if (Record.size() & 1) return Error("Invalid ENTRY record"); - ParamAttrsWithIndex PAWI; for (unsigned i = 0, e = Record.size(); i != e; i += 2) { - PAWI.index = Record[i]; - PAWI.attrs = Record[i+1]; - Attrs.push_back(PAWI); + if (Record[i+1] != ParamAttr::None) + Attrs.push_back(ParamAttrsWithIndex::get(Record[i], Record[i+1])); } - ParamAttrs.push_back(ParamAttrsList::get(Attrs)); + ParamAttrs.push_back(Attrs.empty() ? NULL : ParamAttrsList::get(Attrs)); Attrs.clear(); break; } - } + } } } diff --git a/lib/VMCore/Function.cpp b/lib/VMCore/Function.cpp index 3256d5b9f63..a011aaea338 100644 --- a/lib/VMCore/Function.cpp +++ b/lib/VMCore/Function.cpp @@ -129,8 +129,12 @@ ParamAttrsList * ParamAttrsList::get(const ParamAttrsVector &attrVec) { assert(!attrVec.empty() && "Illegal to create empty ParamAttrsList"); #ifndef NDEBUG - for (unsigned i = 1, e = attrVec.size(); i < e; ++i) - assert(attrVec[i-1].index < attrVec[i].index && "Misordered ParamAttrsList!"); + for (unsigned i = 0, e = attrVec.size(); i < e; ++i) { + assert(attrVec[i].attrs != ParamAttr::None + && "Pointless parameter attribute!"); + assert((!i || attrVec[i-1].index < attrVec[i].index) + && "Misordered ParamAttrsList!"); + } #endif ParamAttrsList key(attrVec); FoldingSetNodeID ID; -- 2.34.1