|
@@ -57,7 +57,8 @@ bool LLParser::ValidateEndOfModule() {
|
|
|
for (unsigned i = 0, e = MDList.size(); i != e; ++i) {
|
|
|
unsigned SlotNo = MDList[i].MDSlot;
|
|
|
|
|
|
- if (SlotNo >= NumberedMetadata.size() || NumberedMetadata[SlotNo] == 0)
|
|
|
+ if (SlotNo >= NumberedMetadata.size() ||
|
|
|
+ NumberedMetadata[SlotNo] == nullptr)
|
|
|
return Error(MDList[i].Loc, "use of undefined metadata '!" +
|
|
|
Twine(SlotNo) + "'");
|
|
|
Inst->setMetadata(MDList[i].MDKind, NumberedMetadata[SlotNo]);
|
|
@@ -132,20 +133,20 @@ bool LLParser::ValidateEndOfModule() {
|
|
|
// references after the function was defined. Resolve those now.
|
|
|
while (!ForwardRefBlockAddresses.empty()) {
|
|
|
// Okay, we are referencing an already-parsed function, resolve them now.
|
|
|
- Function *TheFn = 0;
|
|
|
+ Function *TheFn = nullptr;
|
|
|
const ValID &Fn = ForwardRefBlockAddresses.begin()->first;
|
|
|
if (Fn.Kind == ValID::t_GlobalName)
|
|
|
TheFn = M->getFunction(Fn.StrVal);
|
|
|
else if (Fn.UIntVal < NumberedVals.size())
|
|
|
TheFn = dyn_cast<Function>(NumberedVals[Fn.UIntVal]);
|
|
|
|
|
|
- if (TheFn == 0)
|
|
|
+ if (!TheFn)
|
|
|
return Error(Fn.Loc, "unknown function referenced by blockaddress");
|
|
|
|
|
|
// Resolve all these references.
|
|
|
if (ResolveForwardRefBlockAddresses(TheFn,
|
|
|
ForwardRefBlockAddresses.begin()->second,
|
|
|
- 0))
|
|
|
+ nullptr))
|
|
|
return true;
|
|
|
|
|
|
ForwardRefBlockAddresses.erase(ForwardRefBlockAddresses.begin());
|
|
@@ -206,7 +207,7 @@ bool LLParser::ResolveForwardRefBlockAddresses(Function *TheFn,
|
|
|
TheFn->getValueSymbolTable().lookup(Refs[i].first.StrVal));
|
|
|
}
|
|
|
|
|
|
- if (Res == 0)
|
|
|
+ if (!Res)
|
|
|
return Error(Refs[i].first.Loc,
|
|
|
"referenced value is not a basic block");
|
|
|
|
|
@@ -364,7 +365,7 @@ bool LLParser::ParseUnnamedType() {
|
|
|
if (TypeID >= NumberedTypes.size())
|
|
|
NumberedTypes.resize(TypeID+1);
|
|
|
|
|
|
- Type *Result = 0;
|
|
|
+ Type *Result = nullptr;
|
|
|
if (ParseStructDefinition(TypeLoc, "",
|
|
|
NumberedTypes[TypeID], Result)) return true;
|
|
|
|
|
@@ -391,7 +392,7 @@ bool LLParser::ParseNamedType() {
|
|
|
ParseToken(lltok::kw_type, "expected 'type' after name"))
|
|
|
return true;
|
|
|
|
|
|
- Type *Result = 0;
|
|
|
+ Type *Result = nullptr;
|
|
|
if (ParseStructDefinition(NameLoc, Name,
|
|
|
NamedTypes[Name], Result)) return true;
|
|
|
|
|
@@ -523,10 +524,10 @@ bool LLParser::ParseMDNodeID(MDNode *&Result, unsigned &SlotNo) {
|
|
|
if (ParseUInt32(SlotNo)) return true;
|
|
|
|
|
|
// Check existing MDNode.
|
|
|
- if (SlotNo < NumberedMetadata.size() && NumberedMetadata[SlotNo] != 0)
|
|
|
+ if (SlotNo < NumberedMetadata.size() && NumberedMetadata[SlotNo] != nullptr)
|
|
|
Result = NumberedMetadata[SlotNo];
|
|
|
else
|
|
|
- Result = 0;
|
|
|
+ Result = nullptr;
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -567,7 +568,7 @@ bool LLParser::ParseNamedMetadata() {
|
|
|
if (ParseToken(lltok::exclaim, "Expected '!' here"))
|
|
|
return true;
|
|
|
|
|
|
- MDNode *N = 0;
|
|
|
+ MDNode *N = nullptr;
|
|
|
if (ParseMDNodeID(N)) return true;
|
|
|
NMD->addOperand(N);
|
|
|
} while (EatIfPresent(lltok::comma));
|
|
@@ -586,14 +587,14 @@ bool LLParser::ParseStandaloneMetadata() {
|
|
|
unsigned MetadataID = 0;
|
|
|
|
|
|
LocTy TyLoc;
|
|
|
- Type *Ty = 0;
|
|
|
+ Type *Ty = nullptr;
|
|
|
SmallVector<Value *, 16> Elts;
|
|
|
if (ParseUInt32(MetadataID) ||
|
|
|
ParseToken(lltok::equal, "expected '=' here") ||
|
|
|
ParseType(Ty, TyLoc) ||
|
|
|
ParseToken(lltok::exclaim, "Expected '!' here") ||
|
|
|
ParseToken(lltok::lbrace, "Expected '{' here") ||
|
|
|
- ParseMDNodeVector(Elts, NULL) ||
|
|
|
+ ParseMDNodeVector(Elts, nullptr) ||
|
|
|
ParseToken(lltok::rbrace, "expected end of metadata node"))
|
|
|
return true;
|
|
|
|
|
@@ -613,7 +614,7 @@ bool LLParser::ParseStandaloneMetadata() {
|
|
|
if (MetadataID >= NumberedMetadata.size())
|
|
|
NumberedMetadata.resize(MetadataID+1);
|
|
|
|
|
|
- if (NumberedMetadata[MetadataID] != 0)
|
|
|
+ if (NumberedMetadata[MetadataID] != nullptr)
|
|
|
return TokError("Metadata id is already used");
|
|
|
NumberedMetadata[MetadataID] = Init;
|
|
|
}
|
|
@@ -720,7 +721,7 @@ bool LLParser::ParseGlobal(const std::string &Name, LocTy NameLoc,
|
|
|
LocTy IsExternallyInitializedLoc;
|
|
|
LocTy TyLoc;
|
|
|
|
|
|
- Type *Ty = 0;
|
|
|
+ Type *Ty = nullptr;
|
|
|
if (ParseOptionalThreadLocal(TLM) ||
|
|
|
ParseOptionalAddrSpace(AddrSpace) ||
|
|
|
ParseOptionalToken(lltok::kw_unnamed_addr, UnnamedAddr,
|
|
@@ -734,7 +735,7 @@ bool LLParser::ParseGlobal(const std::string &Name, LocTy NameLoc,
|
|
|
|
|
|
// If the linkage is specified and is external, then no initializer is
|
|
|
// present.
|
|
|
- Constant *Init = 0;
|
|
|
+ Constant *Init = nullptr;
|
|
|
if (!HasLinkage || (Linkage != GlobalValue::ExternalWeakLinkage &&
|
|
|
Linkage != GlobalValue::ExternalLinkage)) {
|
|
|
if (ParseGlobalValue(Ty, Init))
|
|
@@ -744,7 +745,7 @@ bool LLParser::ParseGlobal(const std::string &Name, LocTy NameLoc,
|
|
|
if (Ty->isFunctionTy() || Ty->isLabelTy())
|
|
|
return Error(TyLoc, "invalid type for global variable");
|
|
|
|
|
|
- GlobalVariable *GV = 0;
|
|
|
+ GlobalVariable *GV = nullptr;
|
|
|
|
|
|
// See if the global was forward referenced, if so, use the global.
|
|
|
if (!Name.empty()) {
|
|
@@ -762,9 +763,9 @@ bool LLParser::ParseGlobal(const std::string &Name, LocTy NameLoc,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (GV == 0) {
|
|
|
- GV = new GlobalVariable(*M, Ty, false, GlobalValue::ExternalLinkage, 0,
|
|
|
- Name, 0, GlobalVariable::NotThreadLocal,
|
|
|
+ if (!GV) {
|
|
|
+ GV = new GlobalVariable(*M, Ty, false, GlobalValue::ExternalLinkage, nullptr,
|
|
|
+ Name, nullptr, GlobalVariable::NotThreadLocal,
|
|
|
AddrSpace);
|
|
|
} else {
|
|
|
if (GV->getType()->getElementType() != Ty)
|
|
@@ -980,9 +981,9 @@ bool LLParser::ParseFnAttributeValuePairs(AttrBuilder &B,
|
|
|
GlobalValue *LLParser::GetGlobalVal(const std::string &Name, Type *Ty,
|
|
|
LocTy Loc) {
|
|
|
PointerType *PTy = dyn_cast<PointerType>(Ty);
|
|
|
- if (PTy == 0) {
|
|
|
+ if (!PTy) {
|
|
|
Error(Loc, "global variable reference must have pointer type");
|
|
|
- return 0;
|
|
|
+ return nullptr;
|
|
|
}
|
|
|
|
|
|
// Look this name up in the normal function symbol table.
|
|
@@ -991,7 +992,7 @@ GlobalValue *LLParser::GetGlobalVal(const std::string &Name, Type *Ty,
|
|
|
|
|
|
// If this is a forward reference for the value, see if we already created a
|
|
|
// forward ref record.
|
|
|
- if (Val == 0) {
|
|
|
+ if (!Val) {
|
|
|
std::map<std::string, std::pair<GlobalValue*, LocTy> >::iterator
|
|
|
I = ForwardRefVals.find(Name);
|
|
|
if (I != ForwardRefVals.end())
|
|
@@ -1003,7 +1004,7 @@ GlobalValue *LLParser::GetGlobalVal(const std::string &Name, Type *Ty,
|
|
|
if (Val->getType() == Ty) return Val;
|
|
|
Error(Loc, "'@" + Name + "' defined with type '" +
|
|
|
getTypeString(Val->getType()) + "'");
|
|
|
- return 0;
|
|
|
+ return nullptr;
|
|
|
}
|
|
|
|
|
|
// Otherwise, create a new forward reference for this value and remember it.
|
|
@@ -1012,8 +1013,8 @@ GlobalValue *LLParser::GetGlobalVal(const std::string &Name, Type *Ty,
|
|
|
FwdVal = Function::Create(FT, GlobalValue::ExternalWeakLinkage, Name, M);
|
|
|
else
|
|
|
FwdVal = new GlobalVariable(*M, PTy->getElementType(), false,
|
|
|
- GlobalValue::ExternalWeakLinkage, 0, Name,
|
|
|
- 0, GlobalVariable::NotThreadLocal,
|
|
|
+ GlobalValue::ExternalWeakLinkage, nullptr, Name,
|
|
|
+ nullptr, GlobalVariable::NotThreadLocal,
|
|
|
PTy->getAddressSpace());
|
|
|
|
|
|
ForwardRefVals[Name] = std::make_pair(FwdVal, Loc);
|
|
@@ -1022,16 +1023,16 @@ GlobalValue *LLParser::GetGlobalVal(const std::string &Name, Type *Ty,
|
|
|
|
|
|
GlobalValue *LLParser::GetGlobalVal(unsigned ID, Type *Ty, LocTy Loc) {
|
|
|
PointerType *PTy = dyn_cast<PointerType>(Ty);
|
|
|
- if (PTy == 0) {
|
|
|
+ if (!PTy) {
|
|
|
Error(Loc, "global variable reference must have pointer type");
|
|
|
- return 0;
|
|
|
+ return nullptr;
|
|
|
}
|
|
|
|
|
|
- GlobalValue *Val = ID < NumberedVals.size() ? NumberedVals[ID] : 0;
|
|
|
+ GlobalValue *Val = ID < NumberedVals.size() ? NumberedVals[ID] : nullptr;
|
|
|
|
|
|
// If this is a forward reference for the value, see if we already created a
|
|
|
// forward ref record.
|
|
|
- if (Val == 0) {
|
|
|
+ if (!Val) {
|
|
|
std::map<unsigned, std::pair<GlobalValue*, LocTy> >::iterator
|
|
|
I = ForwardRefValIDs.find(ID);
|
|
|
if (I != ForwardRefValIDs.end())
|
|
@@ -1043,7 +1044,7 @@ GlobalValue *LLParser::GetGlobalVal(unsigned ID, Type *Ty, LocTy Loc) {
|
|
|
if (Val->getType() == Ty) return Val;
|
|
|
Error(Loc, "'@" + Twine(ID) + "' defined with type '" +
|
|
|
getTypeString(Val->getType()) + "'");
|
|
|
- return 0;
|
|
|
+ return nullptr;
|
|
|
}
|
|
|
|
|
|
// Otherwise, create a new forward reference for this value and remember it.
|
|
@@ -1052,7 +1053,7 @@ GlobalValue *LLParser::GetGlobalVal(unsigned ID, Type *Ty, LocTy Loc) {
|
|
|
FwdVal = Function::Create(FT, GlobalValue::ExternalWeakLinkage, "", M);
|
|
|
else
|
|
|
FwdVal = new GlobalVariable(*M, PTy->getElementType(), false,
|
|
|
- GlobalValue::ExternalWeakLinkage, 0, "");
|
|
|
+ GlobalValue::ExternalWeakLinkage, nullptr, "");
|
|
|
|
|
|
ForwardRefValIDs[ID] = std::make_pair(FwdVal, Loc);
|
|
|
return FwdVal;
|
|
@@ -1638,7 +1639,7 @@ bool LLParser::ParseType(Type *&Result, bool AllowVoid) {
|
|
|
|
|
|
// If the type hasn't been defined yet, create a forward definition and
|
|
|
// remember where that forward def'n was seen (in case it never is defined).
|
|
|
- if (Entry.first == 0) {
|
|
|
+ if (!Entry.first) {
|
|
|
Entry.first = StructType::create(Context, Lex.getStrVal());
|
|
|
Entry.second = Lex.getLoc();
|
|
|
}
|
|
@@ -1655,7 +1656,7 @@ bool LLParser::ParseType(Type *&Result, bool AllowVoid) {
|
|
|
|
|
|
// If the type hasn't been defined yet, create a forward definition and
|
|
|
// remember where that forward def'n was seen (in case it never is defined).
|
|
|
- if (Entry.first == 0) {
|
|
|
+ if (!Entry.first) {
|
|
|
Entry.first = StructType::create(Context);
|
|
|
Entry.second = Lex.getLoc();
|
|
|
}
|
|
@@ -1731,7 +1732,7 @@ bool LLParser::ParseParameterList(SmallVectorImpl<ParamInfo> &ArgList,
|
|
|
|
|
|
// Parse the argument.
|
|
|
LocTy ArgLoc;
|
|
|
- Type *ArgTy = 0;
|
|
|
+ Type *ArgTy = nullptr;
|
|
|
AttrBuilder ArgAttrs;
|
|
|
Value *V;
|
|
|
if (ParseType(ArgTy, ArgLoc))
|
|
@@ -1773,7 +1774,7 @@ bool LLParser::ParseArgumentList(SmallVectorImpl<ArgInfo> &ArgList,
|
|
|
Lex.Lex();
|
|
|
} else {
|
|
|
LocTy TypeLoc = Lex.getLoc();
|
|
|
- Type *ArgTy = 0;
|
|
|
+ Type *ArgTy = nullptr;
|
|
|
AttrBuilder Attrs;
|
|
|
std::string Name;
|
|
|
|
|
@@ -1885,7 +1886,7 @@ bool LLParser::ParseStructDefinition(SMLoc TypeLoc, StringRef Name,
|
|
|
Entry.second = SMLoc();
|
|
|
|
|
|
// If this type number has never been uttered, create it.
|
|
|
- if (Entry.first == 0)
|
|
|
+ if (!Entry.first)
|
|
|
Entry.first = StructType::create(Context, Name);
|
|
|
ResultTy = Entry.first;
|
|
|
return false;
|
|
@@ -1901,7 +1902,7 @@ bool LLParser::ParseStructDefinition(SMLoc TypeLoc, StringRef Name,
|
|
|
if (Entry.first)
|
|
|
return Error(TypeLoc, "forward references to non-struct type");
|
|
|
|
|
|
- ResultTy = 0;
|
|
|
+ ResultTy = nullptr;
|
|
|
if (isPacked)
|
|
|
return ParseArrayVectorType(ResultTy, true);
|
|
|
return ParseType(ResultTy);
|
|
@@ -1911,7 +1912,7 @@ bool LLParser::ParseStructDefinition(SMLoc TypeLoc, StringRef Name,
|
|
|
Entry.second = SMLoc();
|
|
|
|
|
|
// If this type number has never been uttered, create it.
|
|
|
- if (Entry.first == 0)
|
|
|
+ if (!Entry.first)
|
|
|
Entry.first = StructType::create(Context, Name);
|
|
|
|
|
|
StructType *STy = cast<StructType>(Entry.first);
|
|
@@ -1942,7 +1943,7 @@ bool LLParser::ParseStructBody(SmallVectorImpl<Type*> &Body) {
|
|
|
return false;
|
|
|
|
|
|
LocTy EltTyLoc = Lex.getLoc();
|
|
|
- Type *Ty = 0;
|
|
|
+ Type *Ty = nullptr;
|
|
|
if (ParseType(Ty)) return true;
|
|
|
Body.push_back(Ty);
|
|
|
|
|
@@ -1980,7 +1981,7 @@ bool LLParser::ParseArrayVectorType(Type *&Result, bool isVector) {
|
|
|
return true;
|
|
|
|
|
|
LocTy TypeLoc = Lex.getLoc();
|
|
|
- Type *EltTy = 0;
|
|
|
+ Type *EltTy = nullptr;
|
|
|
if (ParseType(EltTy)) return true;
|
|
|
|
|
|
if (ParseToken(isVector ? lltok::greater : lltok::rsquare,
|
|
@@ -2026,7 +2027,7 @@ LLParser::PerFunctionState::~PerFunctionState() {
|
|
|
I->second.first->replaceAllUsesWith(
|
|
|
UndefValue::get(I->second.first->getType()));
|
|
|
delete I->second.first;
|
|
|
- I->second.first = 0;
|
|
|
+ I->second.first = nullptr;
|
|
|
}
|
|
|
|
|
|
for (std::map<unsigned, std::pair<Value*, LocTy> >::iterator
|
|
@@ -2035,7 +2036,7 @@ LLParser::PerFunctionState::~PerFunctionState() {
|
|
|
I->second.first->replaceAllUsesWith(
|
|
|
UndefValue::get(I->second.first->getType()));
|
|
|
delete I->second.first;
|
|
|
- I->second.first = 0;
|
|
|
+ I->second.first = nullptr;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -2084,7 +2085,7 @@ Value *LLParser::PerFunctionState::GetVal(const std::string &Name,
|
|
|
|
|
|
// If this is a forward reference for the value, see if we already created a
|
|
|
// forward ref record.
|
|
|
- if (Val == 0) {
|
|
|
+ if (!Val) {
|
|
|
std::map<std::string, std::pair<Value*, LocTy> >::iterator
|
|
|
I = ForwardRefVals.find(Name);
|
|
|
if (I != ForwardRefVals.end())
|
|
@@ -2099,13 +2100,13 @@ Value *LLParser::PerFunctionState::GetVal(const std::string &Name,
|
|
|
else
|
|
|
P.Error(Loc, "'%" + Name + "' defined with type '" +
|
|
|
getTypeString(Val->getType()) + "'");
|
|
|
- return 0;
|
|
|
+ return nullptr;
|
|
|
}
|
|
|
|
|
|
// Don't make placeholders with invalid type.
|
|
|
if (!Ty->isFirstClassType() && !Ty->isLabelTy()) {
|
|
|
P.Error(Loc, "invalid use of a non-first-class type");
|
|
|
- return 0;
|
|
|
+ return nullptr;
|
|
|
}
|
|
|
|
|
|
// Otherwise, create a new forward reference for this value and remember it.
|
|
@@ -2122,11 +2123,11 @@ Value *LLParser::PerFunctionState::GetVal(const std::string &Name,
|
|
|
Value *LLParser::PerFunctionState::GetVal(unsigned ID, Type *Ty,
|
|
|
LocTy Loc) {
|
|
|
// Look this name up in the normal function symbol table.
|
|
|
- Value *Val = ID < NumberedVals.size() ? NumberedVals[ID] : 0;
|
|
|
+ Value *Val = ID < NumberedVals.size() ? NumberedVals[ID] : nullptr;
|
|
|
|
|
|
// If this is a forward reference for the value, see if we already created a
|
|
|
// forward ref record.
|
|
|
- if (Val == 0) {
|
|
|
+ if (!Val) {
|
|
|
std::map<unsigned, std::pair<Value*, LocTy> >::iterator
|
|
|
I = ForwardRefValIDs.find(ID);
|
|
|
if (I != ForwardRefValIDs.end())
|
|
@@ -2141,12 +2142,12 @@ Value *LLParser::PerFunctionState::GetVal(unsigned ID, Type *Ty,
|
|
|
else
|
|
|
P.Error(Loc, "'%" + Twine(ID) + "' defined with type '" +
|
|
|
getTypeString(Val->getType()) + "'");
|
|
|
- return 0;
|
|
|
+ return nullptr;
|
|
|
}
|
|
|
|
|
|
if (!Ty->isFirstClassType() && !Ty->isLabelTy()) {
|
|
|
P.Error(Loc, "invalid use of a non-first-class type");
|
|
|
- return 0;
|
|
|
+ return nullptr;
|
|
|
}
|
|
|
|
|
|
// Otherwise, create a new forward reference for this value and remember it.
|
|
@@ -2242,7 +2243,7 @@ BasicBlock *LLParser::PerFunctionState::DefineBB(const std::string &Name,
|
|
|
BB = GetBB(NumberedVals.size(), Loc);
|
|
|
else
|
|
|
BB = GetBB(Name, Loc);
|
|
|
- if (BB == 0) return 0; // Already diagnosed error.
|
|
|
+ if (!BB) return nullptr; // Already diagnosed error.
|
|
|
|
|
|
// Move the block to the end of the function. Forward ref'd blocks are
|
|
|
// inserted wherever they happen to be referenced.
|
|
@@ -2450,7 +2451,7 @@ bool LLParser::ParseValID(ValID &ID, PerFunctionState *PFS) {
|
|
|
// Make a global variable as a placeholder for this reference.
|
|
|
GlobalVariable *FwdRef = new GlobalVariable(*M, Type::getInt8Ty(Context),
|
|
|
false, GlobalValue::InternalLinkage,
|
|
|
- 0, "");
|
|
|
+ nullptr, "");
|
|
|
ForwardRefBlockAddresses[Fn].push_back(std::make_pair(Label, FwdRef));
|
|
|
ID.ConstantVal = FwdRef;
|
|
|
ID.Kind = ValID::t_Constant;
|
|
@@ -2471,7 +2472,7 @@ bool LLParser::ParseValID(ValID &ID, PerFunctionState *PFS) {
|
|
|
case lltok::kw_inttoptr:
|
|
|
case lltok::kw_ptrtoint: {
|
|
|
unsigned Opc = Lex.getUIntVal();
|
|
|
- Type *DestTy = 0;
|
|
|
+ Type *DestTy = nullptr;
|
|
|
Constant *SrcVal;
|
|
|
Lex.Lex();
|
|
|
if (ParseToken(lltok::lparen, "expected '(' after constantexpr cast") ||
|
|
@@ -2735,18 +2736,18 @@ bool LLParser::ParseValID(ValID &ID, PerFunctionState *PFS) {
|
|
|
|
|
|
/// ParseGlobalValue - Parse a global value with the specified type.
|
|
|
bool LLParser::ParseGlobalValue(Type *Ty, Constant *&C) {
|
|
|
- C = 0;
|
|
|
+ C = nullptr;
|
|
|
ValID ID;
|
|
|
- Value *V = NULL;
|
|
|
+ Value *V = nullptr;
|
|
|
bool Parsed = ParseValID(ID) ||
|
|
|
- ConvertValIDToValue(Ty, ID, V, NULL);
|
|
|
+ ConvertValIDToValue(Ty, ID, V, nullptr);
|
|
|
if (V && !(C = dyn_cast<Constant>(V)))
|
|
|
return Error(ID.Loc, "global values must be constants");
|
|
|
return Parsed;
|
|
|
}
|
|
|
|
|
|
bool LLParser::ParseGlobalTypeAndValue(Constant *&V) {
|
|
|
- Type *Ty = 0;
|
|
|
+ Type *Ty = nullptr;
|
|
|
return ParseType(Ty) ||
|
|
|
ParseGlobalValue(Ty, V);
|
|
|
}
|
|
@@ -2830,15 +2831,15 @@ bool LLParser::ConvertValIDToValue(Type *Ty, ValID &ID, Value *&V,
|
|
|
case ValID::t_LocalID:
|
|
|
if (!PFS) return Error(ID.Loc, "invalid use of function-local name");
|
|
|
V = PFS->GetVal(ID.UIntVal, Ty, ID.Loc);
|
|
|
- return (V == 0);
|
|
|
+ return V == nullptr;
|
|
|
case ValID::t_LocalName:
|
|
|
if (!PFS) return Error(ID.Loc, "invalid use of function-local name");
|
|
|
V = PFS->GetVal(ID.StrVal, Ty, ID.Loc);
|
|
|
- return (V == 0);
|
|
|
+ return V == nullptr;
|
|
|
case ValID::t_InlineAsm: {
|
|
|
PointerType *PTy = dyn_cast<PointerType>(Ty);
|
|
|
FunctionType *FTy =
|
|
|
- PTy ? dyn_cast<FunctionType>(PTy->getElementType()) : 0;
|
|
|
+ PTy ? dyn_cast<FunctionType>(PTy->getElementType()) : nullptr;
|
|
|
if (!FTy || !InlineAsm::Verify(FTy, ID.StrVal2))
|
|
|
return Error(ID.Loc, "invalid type for inline asm constraint string");
|
|
|
V = InlineAsm::get(FTy, ID.StrVal, ID.StrVal2, ID.UIntVal&1,
|
|
@@ -2857,10 +2858,10 @@ bool LLParser::ConvertValIDToValue(Type *Ty, ValID &ID, Value *&V,
|
|
|
return false;
|
|
|
case ValID::t_GlobalName:
|
|
|
V = GetGlobalVal(ID.StrVal, Ty, ID.Loc);
|
|
|
- return V == 0;
|
|
|
+ return V == nullptr;
|
|
|
case ValID::t_GlobalID:
|
|
|
V = GetGlobalVal(ID.UIntVal, Ty, ID.Loc);
|
|
|
- return V == 0;
|
|
|
+ return V == nullptr;
|
|
|
case ValID::t_APSInt:
|
|
|
if (!Ty->isIntegerTy())
|
|
|
return Error(ID.Loc, "integer constant must have integer type");
|
|
@@ -2943,14 +2944,14 @@ bool LLParser::ConvertValIDToValue(Type *Ty, ValID &ID, Value *&V,
|
|
|
}
|
|
|
|
|
|
bool LLParser::ParseValue(Type *Ty, Value *&V, PerFunctionState *PFS) {
|
|
|
- V = 0;
|
|
|
+ V = nullptr;
|
|
|
ValID ID;
|
|
|
return ParseValID(ID, PFS) ||
|
|
|
ConvertValIDToValue(Ty, ID, V, PFS);
|
|
|
}
|
|
|
|
|
|
bool LLParser::ParseTypeAndValue(Value *&V, PerFunctionState *PFS) {
|
|
|
- Type *Ty = 0;
|
|
|
+ Type *Ty = nullptr;
|
|
|
return ParseType(Ty) ||
|
|
|
ParseValue(Ty, V, PFS);
|
|
|
}
|
|
@@ -2980,7 +2981,7 @@ bool LLParser::ParseFunctionHeader(Function *&Fn, bool isDefine) {
|
|
|
unsigned DLLStorageClass;
|
|
|
AttrBuilder RetAttrs;
|
|
|
CallingConv::ID CC;
|
|
|
- Type *RetType = 0;
|
|
|
+ Type *RetType = nullptr;
|
|
|
LocTy RetTypeLoc = Lex.getLoc();
|
|
|
if (ParseOptionalLinkage(Linkage) ||
|
|
|
ParseOptionalVisibility(Visibility) ||
|
|
@@ -3046,7 +3047,7 @@ bool LLParser::ParseFunctionHeader(Function *&Fn, bool isDefine) {
|
|
|
std::string GC;
|
|
|
bool UnnamedAddr;
|
|
|
LocTy UnnamedAddrLoc;
|
|
|
- Constant *Prefix = 0;
|
|
|
+ Constant *Prefix = nullptr;
|
|
|
|
|
|
if (ParseArgumentList(ArgList, isVarArg) ||
|
|
|
ParseOptionalToken(lltok::kw_unnamed_addr, UnnamedAddr,
|
|
@@ -3103,7 +3104,7 @@ bool LLParser::ParseFunctionHeader(Function *&Fn, bool isDefine) {
|
|
|
FunctionType::get(RetType, ParamTypeList, isVarArg);
|
|
|
PointerType *PFT = PointerType::getUnqual(FT);
|
|
|
|
|
|
- Fn = 0;
|
|
|
+ Fn = nullptr;
|
|
|
if (!FunctionName.empty()) {
|
|
|
// If this was a definition of a forward reference, remove the definition
|
|
|
// from the forward reference table and fill in the forward ref.
|
|
@@ -3141,7 +3142,7 @@ bool LLParser::ParseFunctionHeader(Function *&Fn, bool isDefine) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (Fn == 0)
|
|
|
+ if (!Fn)
|
|
|
Fn = Function::Create(FT, GlobalValue::ExternalLinkage, FunctionName, M);
|
|
|
else // Move the forward-reference to the correct spot in the module.
|
|
|
M->getFunctionList().splice(M->end(), M->getFunctionList(), Fn);
|
|
@@ -3218,7 +3219,7 @@ bool LLParser::ParseBasicBlock(PerFunctionState &PFS) {
|
|
|
}
|
|
|
|
|
|
BasicBlock *BB = PFS.DefineBB(Name, NameLoc);
|
|
|
- if (BB == 0) return true;
|
|
|
+ if (!BB) return true;
|
|
|
|
|
|
std::string NameStr;
|
|
|
|
|
@@ -3432,7 +3433,7 @@ bool LLParser::ParseCmpPredicate(unsigned &P, unsigned Opc) {
|
|
|
bool LLParser::ParseRet(Instruction *&Inst, BasicBlock *BB,
|
|
|
PerFunctionState &PFS) {
|
|
|
SMLoc TypeLoc = Lex.getLoc();
|
|
|
- Type *Ty = 0;
|
|
|
+ Type *Ty = nullptr;
|
|
|
if (ParseType(Ty, true /*void allowed*/)) return true;
|
|
|
|
|
|
Type *ResType = PFS.getFunction().getReturnType();
|
|
@@ -3582,7 +3583,7 @@ bool LLParser::ParseInvoke(Instruction *&Inst, PerFunctionState &PFS) {
|
|
|
std::vector<unsigned> FwdRefAttrGrps;
|
|
|
LocTy NoBuiltinLoc;
|
|
|
CallingConv::ID CC;
|
|
|
- Type *RetType = 0;
|
|
|
+ Type *RetType = nullptr;
|
|
|
LocTy RetTypeLoc;
|
|
|
ValID CalleeID;
|
|
|
SmallVector<ParamInfo, 16> ArgList;
|
|
@@ -3604,8 +3605,8 @@ bool LLParser::ParseInvoke(Instruction *&Inst, PerFunctionState &PFS) {
|
|
|
// If RetType is a non-function pointer type, then this is the short syntax
|
|
|
// for the call, which means that RetType is just the return type. Infer the
|
|
|
// rest of the function argument types from the arguments that are present.
|
|
|
- PointerType *PFTy = 0;
|
|
|
- FunctionType *Ty = 0;
|
|
|
+ PointerType *PFTy = nullptr;
|
|
|
+ FunctionType *Ty = nullptr;
|
|
|
if (!(PFTy = dyn_cast<PointerType>(RetType)) ||
|
|
|
!(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) {
|
|
|
// Pull out the types of all of the arguments...
|
|
@@ -3638,7 +3639,7 @@ bool LLParser::ParseInvoke(Instruction *&Inst, PerFunctionState &PFS) {
|
|
|
FunctionType::param_iterator I = Ty->param_begin();
|
|
|
FunctionType::param_iterator E = Ty->param_end();
|
|
|
for (unsigned i = 0, e = ArgList.size(); i != e; ++i) {
|
|
|
- Type *ExpectedTy = 0;
|
|
|
+ Type *ExpectedTy = nullptr;
|
|
|
if (I != E) {
|
|
|
ExpectedTy = *I++;
|
|
|
} else if (!Ty->isVarArg()) {
|
|
@@ -3779,7 +3780,7 @@ bool LLParser::ParseCast(Instruction *&Inst, PerFunctionState &PFS,
|
|
|
unsigned Opc) {
|
|
|
LocTy Loc;
|
|
|
Value *Op;
|
|
|
- Type *DestTy = 0;
|
|
|
+ Type *DestTy = nullptr;
|
|
|
if (ParseTypeAndValue(Op, Loc, PFS) ||
|
|
|
ParseToken(lltok::kw_to, "expected 'to' after cast value") ||
|
|
|
ParseType(DestTy))
|
|
@@ -3818,7 +3819,7 @@ bool LLParser::ParseSelect(Instruction *&Inst, PerFunctionState &PFS) {
|
|
|
/// ::= 'va_arg' TypeAndValue ',' Type
|
|
|
bool LLParser::ParseVA_Arg(Instruction *&Inst, PerFunctionState &PFS) {
|
|
|
Value *Op;
|
|
|
- Type *EltTy = 0;
|
|
|
+ Type *EltTy = nullptr;
|
|
|
LocTy TypeLoc;
|
|
|
if (ParseTypeAndValue(Op, PFS) ||
|
|
|
ParseToken(lltok::comma, "expected ',' after vaarg operand") ||
|
|
@@ -3890,7 +3891,7 @@ bool LLParser::ParseShuffleVector(Instruction *&Inst, PerFunctionState &PFS) {
|
|
|
/// ParsePHI
|
|
|
/// ::= 'phi' Type '[' Value ',' Value ']' (',' '[' Value ',' Value ']')*
|
|
|
int LLParser::ParsePHI(Instruction *&Inst, PerFunctionState &PFS) {
|
|
|
- Type *Ty = 0; LocTy TypeLoc;
|
|
|
+ Type *Ty = nullptr; LocTy TypeLoc;
|
|
|
Value *Op0, *Op1;
|
|
|
|
|
|
if (ParseType(Ty, TypeLoc) ||
|
|
@@ -3939,7 +3940,7 @@ int LLParser::ParsePHI(Instruction *&Inst, PerFunctionState &PFS) {
|
|
|
/// ::= 'filter'
|
|
|
/// ::= 'filter' TypeAndValue ( ',' TypeAndValue )*
|
|
|
bool LLParser::ParseLandingPad(Instruction *&Inst, PerFunctionState &PFS) {
|
|
|
- Type *Ty = 0; LocTy TyLoc;
|
|
|
+ Type *Ty = nullptr; LocTy TyLoc;
|
|
|
Value *PersFn; LocTy PersFnLoc;
|
|
|
|
|
|
if (ParseType(Ty, TyLoc) ||
|
|
@@ -3991,7 +3992,7 @@ bool LLParser::ParseCall(Instruction *&Inst, PerFunctionState &PFS,
|
|
|
std::vector<unsigned> FwdRefAttrGrps;
|
|
|
LocTy BuiltinLoc;
|
|
|
CallingConv::ID CC;
|
|
|
- Type *RetType = 0;
|
|
|
+ Type *RetType = nullptr;
|
|
|
LocTy RetTypeLoc;
|
|
|
ValID CalleeID;
|
|
|
SmallVector<ParamInfo, 16> ArgList;
|
|
@@ -4010,8 +4011,8 @@ bool LLParser::ParseCall(Instruction *&Inst, PerFunctionState &PFS,
|
|
|
// If RetType is a non-function pointer type, then this is the short syntax
|
|
|
// for the call, which means that RetType is just the return type. Infer the
|
|
|
// rest of the function argument types from the arguments that are present.
|
|
|
- PointerType *PFTy = 0;
|
|
|
- FunctionType *Ty = 0;
|
|
|
+ PointerType *PFTy = nullptr;
|
|
|
+ FunctionType *Ty = nullptr;
|
|
|
if (!(PFTy = dyn_cast<PointerType>(RetType)) ||
|
|
|
!(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) {
|
|
|
// Pull out the types of all of the arguments...
|
|
@@ -4044,7 +4045,7 @@ bool LLParser::ParseCall(Instruction *&Inst, PerFunctionState &PFS,
|
|
|
FunctionType::param_iterator I = Ty->param_begin();
|
|
|
FunctionType::param_iterator E = Ty->param_end();
|
|
|
for (unsigned i = 0, e = ArgList.size(); i != e; ++i) {
|
|
|
- Type *ExpectedTy = 0;
|
|
|
+ Type *ExpectedTy = nullptr;
|
|
|
if (I != E) {
|
|
|
ExpectedTy = *I++;
|
|
|
} else if (!Ty->isVarArg()) {
|
|
@@ -4088,10 +4089,10 @@ bool LLParser::ParseCall(Instruction *&Inst, PerFunctionState &PFS,
|
|
|
/// ParseAlloc
|
|
|
/// ::= 'alloca' 'inalloca'? Type (',' TypeAndValue)? (',' 'align' i32)?
|
|
|
int LLParser::ParseAlloc(Instruction *&Inst, PerFunctionState &PFS) {
|
|
|
- Value *Size = 0;
|
|
|
+ Value *Size = nullptr;
|
|
|
LocTy SizeLoc;
|
|
|
unsigned Alignment = 0;
|
|
|
- Type *Ty = 0;
|
|
|
+ Type *Ty = nullptr;
|
|
|
|
|
|
bool IsInAlloca = EatIfPresent(lltok::kw_inalloca);
|
|
|
|
|
@@ -4330,8 +4331,8 @@ int LLParser::ParseFence(Instruction *&Inst, PerFunctionState &PFS) {
|
|
|
/// ParseGetElementPtr
|
|
|
/// ::= 'getelementptr' 'inbounds'? TypeAndValue (',' TypeAndValue)*
|
|
|
int LLParser::ParseGetElementPtr(Instruction *&Inst, PerFunctionState &PFS) {
|
|
|
- Value *Ptr = 0;
|
|
|
- Value *Val = 0;
|
|
|
+ Value *Ptr = nullptr;
|
|
|
+ Value *Val = nullptr;
|
|
|
LocTy Loc, EltLoc;
|
|
|
|
|
|
bool InBounds = EatIfPresent(lltok::kw_inbounds);
|
|
@@ -4433,11 +4434,11 @@ bool LLParser::ParseMDNodeVector(SmallVectorImpl<Value*> &Elts,
|
|
|
do {
|
|
|
// Null is a special case since it is typeless.
|
|
|
if (EatIfPresent(lltok::kw_null)) {
|
|
|
- Elts.push_back(0);
|
|
|
+ Elts.push_back(nullptr);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- Value *V = 0;
|
|
|
+ Value *V = nullptr;
|
|
|
if (ParseTypeAndValue(V, PFS)) return true;
|
|
|
Elts.push_back(V);
|
|
|
} while (EatIfPresent(lltok::comma));
|