-/* A Bison parser, made by GNU Bison 2.3. */
+/* A Bison parser, made by GNU Bison 2.1. */
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
+/* Skeleton parser for Yacc-like parsing with Bison,
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA. */
-/* As a special exception, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
-
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison. */
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
-/* C LALR(1) parser skeleton written by Richard Stallman, by
- simplifying the original so-called "semantic" parser. */
+/* Written by Richard Stallman by simplifying the original so called
+ ``semantic'' parser. */
/* All symbols defined below should begin with yy or YY, to avoid
infringing on user name space. This should be done even for local
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.3"
+#define YYBISON_VERSION "2.1"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
/* Copy the first part of user declarations. */
-#line 14 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 14 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
#include "UpgradeInternals.h"
#include "llvm/CallingConv.h"
#include "llvm/InlineAsm.h"
#include "llvm/Instructions.h"
#include "llvm/Module.h"
+#include "llvm/ParameterAttributes.h"
#include "llvm/ValueSymbolTable.h"
#include "llvm/Support/GetElementPtrTypeIterator.h"
#include "llvm/ADT/STLExtras.h"
//
typedef std::vector<Value *> ValueList; // Numbered defs
-typedef std::pair<std::string,const Type*> RenameMapKey;
+typedef std::pair<std::string,TypeInfo> RenameMapKey;
typedef std::map<RenameMapKey,std::string> RenameMapType;
static void
Module *CurrentModule;
std::map<const Type *, ValueList> Values; // Module level numbered definitions
std::map<const Type *,ValueList> LateResolveValues;
- std::vector<PATypeHolder> Types;
+ std::vector<PATypeHolder> Types;
+ std::vector<Signedness> TypeSigns;
+ std::map<std::string,Signedness> NamedTypeSigns;
+ std::map<std::string,Signedness> NamedValueSigns;
std::map<ValID, PATypeHolder> LateResolveTypes;
static Module::Endianness Endian;
static Module::PointerSize PointerSize;
Values.clear(); // Clear out function local definitions
Types.clear();
+ TypeSigns.clear();
+ NamedTypeSigns.clear();
+ NamedValueSigns.clear();
CurrentModule = 0;
}
static bool inFunctionScope() { return CurFun.CurrentFunction != 0; }
+/// This function is just a utility to make a Key value for the rename map.
+/// The Key is a combination of the name, type, Signedness of the original
+/// value (global/function). This just constructs the key and ensures that
+/// named Signedness values are resolved to the actual Signedness.
+/// @brief Make a key for the RenameMaps
+static RenameMapKey makeRenameMapKey(const std::string &Name, const Type* Ty,
+ const Signedness &Sign) {
+ TypeInfo TI;
+ TI.T = Ty;
+ if (Sign.isNamed())
+ // Don't allow Named Signedness nodes because they won't match. The actual
+ // Signedness must be looked up in the NamedTypeSigns map.
+ TI.S.copy(CurModule.NamedTypeSigns[Sign.getName()]);
+ else
+ TI.S.copy(Sign);
+ return std::make_pair(Name, TI);
+}
+
//===----------------------------------------------------------------------===//
// Code to handle definitions of all the types
break;
case ValID::NameVal: // Is it a named definition?
if (const Type *N = CurModule.CurrentModule->getTypeByName(D.Name)) {
- D.destroy(); // Free old strdup'd memory...
return N;
}
break;
//
if (DoNotImprovise) return 0; // Do we just want a null to be returned?
-
if (inFunctionScope()) {
if (D.Type == ValID::NameVal) {
error("Reference to an undefined type: '" + D.getName() + "'");
Type *Typ = OpaqueType::get();
CurModule.LateResolveTypes.insert(std::make_pair(D, Typ));
return Typ;
- }
+}
+
+/// This is like the getType method except that instead of looking up the type
+/// for a given ID, it looks up that type's sign.
+/// @brief Get the signedness of a referenced type
+static Signedness getTypeSign(const ValID &D) {
+ switch (D.Type) {
+ case ValID::NumberVal: // Is it a numbered definition?
+ // Module constants occupy the lowest numbered slots...
+ if ((unsigned)D.Num < CurModule.TypeSigns.size()) {
+ return CurModule.TypeSigns[(unsigned)D.Num];
+ }
+ break;
+ case ValID::NameVal: { // Is it a named definition?
+ std::map<std::string,Signedness>::const_iterator I =
+ CurModule.NamedTypeSigns.find(D.Name);
+ if (I != CurModule.NamedTypeSigns.end())
+ return I->second;
+ // Perhaps its a named forward .. just cache the name
+ Signedness S;
+ S.makeNamed(D.Name);
+ return S;
+ }
+ default:
+ break;
+ }
+ // If we don't find it, its signless
+ Signedness S;
+ S.makeSignless();
+ return S;
+}
+
+/// This function is analagous to getElementType in LLVM. It provides the same
+/// function except that it looks up the Signedness instead of the type. This is
+/// used when processing GEP instructions that need to extract the type of an
+/// indexed struct/array/ptr member.
+/// @brief Look up an element's sign.
+static Signedness getElementSign(const ValueInfo& VI,
+ const std::vector<Value*> &Indices) {
+ const Type *Ptr = VI.V->getType();
+ assert(isa<PointerType>(Ptr) && "Need pointer type");
+
+ unsigned CurIdx = 0;
+ Signedness S(VI.S);
+ while (const CompositeType *CT = dyn_cast<CompositeType>(Ptr)) {
+ if (CurIdx == Indices.size())
+ break;
+
+ Value *Index = Indices[CurIdx++];
+ assert(!isa<PointerType>(CT) || CurIdx == 1 && "Invalid type");
+ Ptr = CT->getTypeAtIndex(Index);
+ if (const Type* Ty = Ptr->getForwardedType())
+ Ptr = Ty;
+ assert(S.isComposite() && "Bad Signedness type");
+ if (isa<StructType>(CT)) {
+ S = S.get(cast<ConstantInt>(Index)->getZExtValue());
+ } else {
+ S = S.get(0UL);
+ }
+ if (S.isNamed())
+ S = CurModule.NamedTypeSigns[S.getName()];
+ }
+ Signedness Result;
+ Result.makeComposite(S);
+ return Result;
+}
+
+/// This function just translates a ConstantInfo into a ValueInfo and calls
+/// getElementSign(ValueInfo,...). Its just a convenience.
+/// @brief ConstantInfo version of getElementSign.
+static Signedness getElementSign(const ConstInfo& CI,
+ const std::vector<Constant*> &Indices) {
+ ValueInfo VI;
+ VI.V = CI.C;
+ VI.S.copy(CI.S);
+ std::vector<Value*> Idx;
+ for (unsigned i = 0; i < Indices.size(); ++i)
+ Idx.push_back(Indices[i]);
+ Signedness result = getElementSign(VI, Idx);
+ VI.destroy();
+ return result;
+}
/// This function determines if two function types differ only in their use of
/// the sret parameter attribute in the first argument. If they are identical
/// in all other respects, it returns true. Otherwise, it returns false.
-bool FuncTysDifferOnlyBySRet(const FunctionType *F1,
- const FunctionType *F2) {
+static bool FuncTysDifferOnlyBySRet(const FunctionType *F1,
+ const FunctionType *F2) {
if (F1->getReturnType() != F2->getReturnType() ||
- F1->getNumParams() != F2->getNumParams() ||
- F1->getParamAttrs(0) != F2->getParamAttrs(0))
+ F1->getNumParams() != F2->getNumParams())
return false;
- unsigned SRetMask = ~unsigned(FunctionType::StructRetAttribute);
+ ParamAttrsList PAL1;
+ if (F1->getParamAttrs())
+ PAL1 = *F1->getParamAttrs();
+ ParamAttrsList PAL2;
+ if (F2->getParamAttrs())
+ PAL2 = *F2->getParamAttrs();
+ if (PAL1.getParamAttrs(0) != PAL2.getParamAttrs(0))
+ return false;
+ unsigned SRetMask = ~unsigned(ParamAttr::StructRet);
for (unsigned i = 0; i < F1->getNumParams(); ++i) {
if (F1->getParamType(i) != F2->getParamType(i) ||
- unsigned(F1->getParamAttrs(i+1)) & SRetMask !=
- unsigned(F2->getParamAttrs(i+1)) & SRetMask)
+ unsigned(PAL1.getParamAttrs(i+1)) & SRetMask !=
+ unsigned(PAL2.getParamAttrs(i+1)) & SRetMask)
return false;
}
return true;
}
+/// This function determines if the type of V and Ty differ only by the SRet
+/// parameter attribute. This is a more generalized case of
+/// FuncTysDIfferOnlyBySRet since it doesn't require FunctionType arguments.
+static bool TypesDifferOnlyBySRet(Value *V, const Type* Ty) {
+ if (V->getType() == Ty)
+ return true;
+ const PointerType *PF1 = dyn_cast<PointerType>(Ty);
+ const PointerType *PF2 = dyn_cast<PointerType>(V->getType());
+ if (PF1 && PF2) {
+ const FunctionType* FT1 = dyn_cast<FunctionType>(PF1->getElementType());
+ const FunctionType* FT2 = dyn_cast<FunctionType>(PF2->getElementType());
+ if (FT1 && FT2)
+ return FuncTysDifferOnlyBySRet(FT1, FT2);
+ }
+ return false;
+}
+
// The upgrade of csretcc to sret param attribute may have caused a function
// to not be found because the param attribute changed the type of the called
// function. This helper function, used in getExistingValue, detects that
-// situation and returns V if it occurs and 0 otherwise.
+// situation and bitcasts the function to the correct type.
static Value* handleSRetFuncTypeMerge(Value *V, const Type* Ty) {
// Handle degenerate cases
if (!V)
if (V->getType() == Ty)
return V;
- Value* Result = 0;
const PointerType *PF1 = dyn_cast<PointerType>(Ty);
const PointerType *PF2 = dyn_cast<PointerType>(V->getType());
if (PF1 && PF2) {
- const FunctionType *FT1 =
- dyn_cast<FunctionType>(PF1->getElementType());
- const FunctionType *FT2 =
- dyn_cast<FunctionType>(PF2->getElementType());
- if (FT1 && FT2 && FuncTysDifferOnlyBySRet(FT1, FT2))
- if (FT2->paramHasAttr(1, FunctionType::StructRetAttribute))
- Result = V;
+ const FunctionType *FT1 = dyn_cast<FunctionType>(PF1->getElementType());
+ const FunctionType *FT2 = dyn_cast<FunctionType>(PF2->getElementType());
+ if (FT1 && FT2 && FuncTysDifferOnlyBySRet(FT1, FT2)) {
+ const ParamAttrsList *PAL2 = FT2->getParamAttrs();
+ if (PAL2 && PAL2->paramHasAttr(1, ParamAttr::StructRet))
+ return V;
else if (Constant *C = dyn_cast<Constant>(V))
- Result = ConstantExpr::getBitCast(C, PF1);
+ return ConstantExpr::getBitCast(C, PF1);
else
- Result = new BitCastInst(V, PF1, "upgrd.cast", CurBB);
+ return new BitCastInst(V, PF1, "upgrd.cast", CurBB);
+ }
+
}
- return Result;
+ return 0;
}
// getExistingValue - Look up the value specified by the provided type and
case ValID::NameVal: { // Is it a named definition?
// Get the name out of the ID
- std::string Name(D.Name);
- Value* V = 0;
- RenameMapKey Key = std::make_pair(Name, Ty);
+ RenameMapKey Key = makeRenameMapKey(D.Name, Ty, D.S);
+ Value *V = 0;
if (inFunctionScope()) {
// See if the name was renamed
RenameMapType::const_iterator I = CurFun.RenameMap.find(Key);
if (I != CurFun.RenameMap.end())
LookupName = I->second;
else
- LookupName = Name;
+ LookupName = D.Name;
ValueSymbolTable &SymTab = CurFun.CurrentFunction->getValueSymbolTable();
V = SymTab.lookup(LookupName);
- V = handleSRetFuncTypeMerge(V, Ty);
+ if (V && V->getType() != Ty)
+ V = handleSRetFuncTypeMerge(V, Ty);
+ assert((!V || TypesDifferOnlyBySRet(V, Ty)) && "Found wrong type");
}
if (!V) {
RenameMapType::const_iterator I = CurModule.RenameMap.find(Key);
if (I != CurModule.RenameMap.end())
LookupName = I->second;
else
- LookupName = Name;
+ LookupName = D.Name;
V = CurModule.CurrentModule->getValueSymbolTable().lookup(LookupName);
- V = handleSRetFuncTypeMerge(V, Ty);
+ if (V && V->getType() != Ty)
+ V = handleSRetFuncTypeMerge(V, Ty);
+ assert((!V || TypesDifferOnlyBySRet(V, Ty)) && "Found wrong type");
}
if (!V)
return 0;
break;
case ValID::NameVal: // Is it a named definition?
Name = ID.Name;
- if (Value *N = CurFun.CurrentFunction->
- getValueSymbolTable().lookup(Name)) {
+ if (Value *N = CurFun.CurrentFunction->getValueSymbolTable().lookup(Name)) {
if (N->getType() != Type::LabelTy) {
// Register names didn't use to conflict with basic block names
// because of type planes. Now they all have to be unique. So, we just
// rename the register and treat this name as if no basic block
// had been found.
- RenameMapKey Key = std::make_pair(N->getName(),N->getType());
+ RenameMapKey Key = makeRenameMapKey(ID.Name, N->getType(), ID.S);
N->setName(makeNameUnique(N->getName()));
CurModule.RenameMap[Key] = N->getName();
BB = 0;
LateResolvers.clear();
}
-// ResolveTypeTo - A brand new type was just declared. This means that (if
-// name is not null) things referencing Name can be resolved. Otherwise, things
-// refering to the number can be resolved. Do this now.
-//
-static void ResolveTypeTo(char *Name, const Type *ToTy) {
+/// This function is used for type resolution and upref handling. When a type
+/// becomes concrete, this function is called to adjust the signedness for the
+/// concrete type.
+static void ResolveTypeSign(const Type* oldTy, const Signedness &Sign) {
+ std::string TyName = CurModule.CurrentModule->getTypeName(oldTy);
+ if (!TyName.empty())
+ CurModule.NamedTypeSigns[TyName] = Sign;
+}
+
+/// ResolveTypeTo - A brand new type was just declared. This means that (if
+/// name is not null) things referencing Name can be resolved. Otherwise,
+/// things refering to the number can be resolved. Do this now.
+static void ResolveTypeTo(char *Name, const Type *ToTy, const Signedness& Sign){
ValID D;
- if (Name) D = ValID::create(Name);
- else D = ValID::create((int)CurModule.Types.size());
+ if (Name)
+ D = ValID::create(Name);
+ else
+ D = ValID::create((int)CurModule.Types.size());
+ D.S.copy(Sign);
+
+ if (Name)
+ CurModule.NamedTypeSigns[Name] = Sign;
std::map<ValID, PATypeHolder>::iterator I =
CurModule.LateResolveTypes.find(D);
if (I != CurModule.LateResolveTypes.end()) {
- ((DerivedType*)I->second.get())->refineAbstractTypeTo(ToTy);
+ const Type *OldTy = I->second.get();
+ ((DerivedType*)OldTy)->refineAbstractTypeTo(ToTy);
CurModule.LateResolveTypes.erase(I);
}
}
// null potentially, in which case this is a noop. The string passed in is
// assumed to be a malloc'd string buffer, and is free'd by this function.
//
-static void setValueName(Value *V, char *NameStr) {
+static void setValueName(const ValueInfo &V, char *NameStr) {
if (NameStr) {
std::string Name(NameStr); // Copy string
free(NameStr); // Free old string
- if (V->getType() == Type::VoidTy) {
+ if (V.V->getType() == Type::VoidTy) {
error("Can't assign name '" + Name + "' to value with void type");
return;
}
if (Existing) {
// An existing value of the same name was found. This might have happened
// because of the integer type planes collapsing in LLVM 2.0.
- if (Existing->getType() == V->getType() &&
+ if (Existing->getType() == V.V->getType() &&
!TypeHasInteger(Existing->getType())) {
// If the type does not contain any integers in them then this can't be
// a type plane collapsing issue. It truly is a redefinition and we
// should error out as the assembly is invalid.
error("Redefinition of value named '" + Name + "' of type '" +
- V->getType()->getDescription() + "'");
+ V.V->getType()->getDescription() + "'");
return;
}
// In LLVM 2.0 we don't allow names to be re-used for any values in a
// We're changing the name but it will probably be used by other
// instructions as operands later on. Consequently we have to retain
// a mapping of the renaming that we're doing.
- RenameMapKey Key = std::make_pair(Name,V->getType());
+ RenameMapKey Key = makeRenameMapKey(Name, V.V->getType(), V.S);
CurFun.RenameMap[Key] = NewName;
Name = NewName;
}
// Set the name.
- V->setName(Name);
+ V.V->setName(Name);
}
}
static GlobalVariable *
ParseGlobalVariable(char *NameStr,GlobalValue::LinkageTypes Linkage,
bool isConstantGlobal, const Type *Ty,
- Constant *Initializer) {
+ Constant *Initializer,
+ const Signedness &Sign) {
if (isa<FunctionType>(Ty))
error("Cannot declare global vars of function type");
} else {
ID = ValID::create((int)CurModule.Values[PTy].size());
}
+ ID.S.makeComposite(Sign);
if (GlobalValue *FWGV = CurModule.GetForwardRefForGlobal(PTy, ID)) {
// Move the global to the end of the list, from whereever it was
// of this global in the module and emit warnings if there are conflicts.
if (!Name.empty()) {
// The global has a name. See if there's an existing one of the same name.
- if (CurModule.CurrentModule->getNamedGlobal(Name)) {
- // We found an existing global ov the same name. This isn't allowed
+ if (CurModule.CurrentModule->getNamedGlobal(Name) ||
+ CurModule.CurrentModule->getFunction(Name)) {
+ // We found an existing global of the same name. This isn't allowed
// in LLVM 2.0. Consequently, we must alter the name of the global so it
// can at least compile. This can happen because of type planes
// There is alread a global of the same name which means there is a
// conflict. Let's see what we can do about it.
std::string NewName(makeNameUnique(Name));
- if (Linkage == GlobalValue::InternalLinkage) {
- // The linkage type is internal so just warn about the rename without
- // invoking "scarey language" about linkage failures. GVars with
- // InternalLinkage can be renamed at will.
- warning("Global variable '" + Name + "' was renamed to '"+
- NewName + "'");
- } else {
+ if (Linkage != GlobalValue::InternalLinkage) {
// The linkage of this gval is external so we can't reliably rename
// it because it could potentially create a linking problem.
// However, we can't leave the name conflict in the output either or
}
// Put the renaming in the global rename map
- RenameMapKey Key = std::make_pair(Name,PointerType::get(Ty));
+ RenameMapKey Key = makeRenameMapKey(Name, PointerType::get(Ty), ID.S);
CurModule.RenameMap[Key] = NewName;
// Rename it
new GlobalVariable(Ty, isConstantGlobal, Linkage, Initializer, Name,
CurModule.CurrentModule);
InsertValue(GV, CurModule.Values);
+ // Remember the sign of this global.
+ CurModule.NamedValueSigns[Name] = ID.S;
return GV;
}
// This function returns true if the type has already been defined, but is
// allowed to be redefined in the specified context. If the name is a new name
// for the type plane, it is inserted and false is returned.
-static bool setTypeName(const Type *T, char *NameStr) {
+static bool setTypeName(const PATypeInfo& TI, char *NameStr) {
assert(!inFunctionScope() && "Can't give types function-local names");
if (NameStr == 0) return false;
std::string Name(NameStr); // Copy string
free(NameStr); // Free old string
+ const Type* Ty = TI.PAT->get();
+
// We don't allow assigning names to void type
- if (T == Type::VoidTy) {
+ if (Ty == Type::VoidTy) {
error("Can't assign name '" + Name + "' to the void type");
return false;
}
// Set the type name, checking for conflicts as we do so.
- bool AlreadyExists = CurModule.CurrentModule->addTypeName(Name, T);
+ bool AlreadyExists = CurModule.CurrentModule->addTypeName(Name, Ty);
+
+ // Save the sign information for later use
+ CurModule.NamedTypeSigns[Name] = TI.S;
if (AlreadyExists) { // Inserting a name that is already defined???
const Type *Existing = CurModule.CurrentModule->getTypeByName(Name);
// opaque type. In this case, Existing will be an opaque type.
if (const OpaqueType *OpTy = dyn_cast<OpaqueType>(Existing)) {
// We ARE replacing an opaque type!
- const_cast<OpaqueType*>(OpTy)->refineAbstractTypeTo(T);
+ const_cast<OpaqueType*>(OpTy)->refineAbstractTypeTo(Ty);
return true;
}
// the redefinition is identical to the original. This will be so if
// Existing and T point to the same Type object. In this one case we
// allow the equivalent redefinition.
- if (Existing == T) return true; // Yes, it's equal.
+ if (Existing == Ty) return true; // Yes, it's equal.
// Any other kind of (non-equivalent) redefinition is an error.
error("Redefinition of type named '" + Name + "' in the '" +
- T->getDescription() + "' type plane");
+ Ty->getDescription() + "' type plane");
}
return false;
OpaqueType *UpRefTy;
UpRefRecord(unsigned NL, OpaqueType *URTy)
- : NestingLevel(NL), LastContainedTy(URTy), UpRefTy(URTy) {}
+ : NestingLevel(NL), LastContainedTy(URTy), UpRefTy(URTy) { }
};
}
/// count reaches zero, the upreferenced type is the type that is passed in:
/// thus we can complete the cycle.
///
-static PATypeHolder HandleUpRefs(const Type *ty) {
+static PATypeHolder HandleUpRefs(const Type *ty, const Signedness& Sign) {
// If Ty isn't abstract, or if there are no up-references in it, then there is
// nothing to resolve here.
if (!ty->isAbstract() || UpRefs.empty()) return ty;
// this variable.
OpaqueType *TypeToResolve = 0;
- for (unsigned i = 0; i != UpRefs.size(); ++i) {
+ unsigned i = 0;
+ for (; i != UpRefs.size(); ++i) {
UR_OUT(" UR#" << i << " - TypeContains(" << Ty->getDescription() << ", "
- << UpRefs[i].second->getDescription() << ") = "
- << (TypeContains(Ty, UpRefs[i].second) ? "true" : "false") << "\n");
+ << UpRefs[i].UpRefTy->getDescription() << ") = "
+ << (TypeContains(Ty, UpRefs[i].UpRefTy) ? "true" : "false") << "\n");
if (TypeContains(Ty, UpRefs[i].LastContainedTy)) {
// Decrement level of upreference
unsigned Level = --UpRefs[i].NestingLevel;
TypeToResolve = UpRefs[i].UpRefTy;
} else {
UR_OUT(" * Resolving upreference for "
- << UpRefs[i].second->getDescription() << "\n";
- std::string OldName = UpRefs[i].UpRefTy->getDescription());
+ << UpRefs[i].UpRefTy->getDescription() << "\n";
+ std::string OldName = UpRefs[i].UpRefTy->getDescription());
+ ResolveTypeSign(UpRefs[i].UpRefTy, Sign);
UpRefs[i].UpRefTy->refineAbstractTypeTo(TypeToResolve);
UR_OUT(" * Type '" << OldName << "' refined upreference to: "
<< (const void*)Ty << ", " << Ty->getDescription() << "\n");
if (TypeToResolve) {
UR_OUT(" * Resolving upreference for "
- << UpRefs[i].second->getDescription() << "\n";
+ << UpRefs[i].UpRefTy->getDescription() << "\n";
std::string OldName = TypeToResolve->getDescription());
+ ResolveTypeSign(TypeToResolve, Sign);
TypeToResolve->refineAbstractTypeTo(Ty);
}
return Ty;
}
+bool Signedness::operator<(const Signedness &that) const {
+ if (isNamed()) {
+ if (that.isNamed())
+ return *(this->name) < *(that.name);
+ else
+ return CurModule.NamedTypeSigns[*name] < that;
+ } else if (that.isNamed()) {
+ return *this < CurModule.NamedTypeSigns[*that.name];
+ }
+
+ if (isComposite() && that.isComposite()) {
+ if (sv->size() == that.sv->size()) {
+ SignVector::const_iterator thisI = sv->begin(), thisE = sv->end();
+ SignVector::const_iterator thatI = that.sv->begin(),
+ thatE = that.sv->end();
+ for (; thisI != thisE; ++thisI, ++thatI) {
+ if (*thisI < *thatI)
+ return true;
+ else if (!(*thisI == *thatI))
+ return false;
+ }
+ return false;
+ }
+ return sv->size() < that.sv->size();
+ }
+ return kind < that.kind;
+}
+
+bool Signedness::operator==(const Signedness &that) const {
+ if (isNamed())
+ if (that.isNamed())
+ return *(this->name) == *(that.name);
+ else
+ return CurModule.NamedTypeSigns[*(this->name)] == that;
+ else if (that.isNamed())
+ return *this == CurModule.NamedTypeSigns[*(that.name)];
+ if (isComposite() && that.isComposite()) {
+ if (sv->size() == that.sv->size()) {
+ SignVector::const_iterator thisI = sv->begin(), thisE = sv->end();
+ SignVector::const_iterator thatI = that.sv->begin(),
+ thatE = that.sv->end();
+ for (; thisI != thisE; ++thisI, ++thatI) {
+ if (!(*thisI == *thatI))
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
+ return kind == that.kind;
+}
+
+void Signedness::copy(const Signedness &that) {
+ if (that.isNamed()) {
+ kind = Named;
+ name = new std::string(*that.name);
+ } else if (that.isComposite()) {
+ kind = Composite;
+ sv = new SignVector();
+ *sv = *that.sv;
+ } else {
+ kind = that.kind;
+ sv = 0;
+ }
+}
+
+void Signedness::destroy() {
+ if (isNamed()) {
+ delete name;
+ } else if (isComposite()) {
+ delete sv;
+ }
+}
+
+#ifndef NDEBUG
+void Signedness::dump() const {
+ if (isComposite()) {
+ if (sv->size() == 1) {
+ (*sv)[0].dump();
+ std::cerr << "*";
+ } else {
+ std::cerr << "{ " ;
+ for (unsigned i = 0; i < sv->size(); ++i) {
+ if (i != 0)
+ std::cerr << ", ";
+ (*sv)[i].dump();
+ }
+ std::cerr << "} " ;
+ }
+ } else if (isNamed()) {
+ std::cerr << *name;
+ } else if (isSigned()) {
+ std::cerr << "S";
+ } else if (isUnsigned()) {
+ std::cerr << "U";
+ } else
+ std::cerr << ".";
+}
+#endif
+
static inline Instruction::TermOps
getTermOp(TermOps op) {
switch (op) {
}
static inline Instruction::BinaryOps
-getBinaryOp(BinaryOps op, const Type *Ty, Signedness Sign) {
+getBinaryOp(BinaryOps op, const Type *Ty, const Signedness& Sign) {
switch (op) {
default : assert(0 && "Invalid OldBinaryOps");
case SetEQ :
// This is an obsolete instruction so we must upgrade it based on the
// types of its operands.
bool isFP = Ty->isFloatingPoint();
- if (const PackedType* PTy = dyn_cast<PackedType>(Ty))
- // If its a packed type we want to use the element type
+ if (const VectorType* PTy = dyn_cast<VectorType>(Ty))
+ // If its a vector type we want to use the element type
isFP = PTy->getElementType()->isFloatingPoint();
if (isFP)
return Instruction::FDiv;
- else if (Sign == Signed)
+ else if (Sign.isSigned())
return Instruction::SDiv;
return Instruction::UDiv;
}
// This is an obsolete instruction so we must upgrade it based on the
// types of its operands.
bool isFP = Ty->isFloatingPoint();
- if (const PackedType* PTy = dyn_cast<PackedType>(Ty))
- // If its a packed type we want to use the element type
+ if (const VectorType* PTy = dyn_cast<VectorType>(Ty))
+ // If its a vector type we want to use the element type
isFP = PTy->getElementType()->isFloatingPoint();
// Select correct opcode
if (isFP)
return Instruction::FRem;
- else if (Sign == Signed)
+ else if (Sign.isSigned())
return Instruction::SRem;
return Instruction::URem;
}
case AShrOp : return Instruction::AShr;
case ShlOp : return Instruction::Shl;
case ShrOp :
- if (Sign == Signed)
+ if (Sign.isSigned())
return Instruction::AShr;
return Instruction::LShr;
case AndOp : return Instruction::And;
static inline Instruction::OtherOps
getCompareOp(BinaryOps op, unsigned short &predicate, const Type* &Ty,
- Signedness Sign) {
- bool isSigned = Sign == Signed;
+ const Signedness &Sign) {
+ bool isSigned = Sign.isSigned();
bool isFP = Ty->isFloatingPoint();
switch (op) {
default : assert(0 && "Invalid OldSetCC");
}
static inline Instruction::OtherOps
-getOtherOp(OtherOps op, Signedness Sign) {
+getOtherOp(OtherOps op, const Signedness &Sign) {
switch (op) {
default : assert(0 && "Invalid OldOtherOps");
case PHIOp : return Instruction::PHI;
}
static inline Value*
-getCast(CastOps op, Value *Src, Signedness SrcSign, const Type *DstTy,
- Signedness DstSign, bool ForceInstruction = false) {
+getCast(CastOps op, Value *Src, const Signedness &SrcSign, const Type *DstTy,
+ const Signedness &DstSign, bool ForceInstruction = false) {
Instruction::CastOps Opcode;
const Type* SrcTy = Src->getType();
if (op == CastOp) {
}
// Determine the opcode to use by calling CastInst::getCastOpcode
Opcode =
- CastInst::getCastOpcode(Src, SrcSign == Signed, DstTy, DstSign == Signed);
+ CastInst::getCastOpcode(Src, SrcSign.isSigned(), DstTy,
+ DstSign.isSigned());
} else switch (op) {
default: assert(0 && "Invalid cast token");
std::vector<Value*>& Args) {
std::string Name = ID.Type == ValID::NameVal ? ID.Name : "";
- if (Name == "llvm.isunordered.f32" || Name == "llvm.isunordered.f64") {
- if (Args.size() != 2)
- error("Invalid prototype for " + Name + " prototype");
- return new FCmpInst(FCmpInst::FCMP_UNO, Args[0], Args[1]);
- } else {
- const Type* PtrTy = PointerType::get(Type::Int8Ty);
- std::vector<const Type*> Params;
- if (Name == "llvm.va_start" || Name == "llvm.va_end") {
- if (Args.size() != 1)
- error("Invalid prototype for " + Name + " prototype");
- Params.push_back(PtrTy);
- const FunctionType *FTy = FunctionType::get(Type::VoidTy, Params, false);
- const PointerType *PFTy = PointerType::get(FTy);
- Value* Func = getVal(PFTy, ID);
- Args[0] = new BitCastInst(Args[0], PtrTy, makeNameUnique("va"), CurBB);
- return new CallInst(Func, Args);
- } else if (Name == "llvm.va_copy") {
- if (Args.size() != 2)
- error("Invalid prototype for " + Name + " prototype");
- Params.push_back(PtrTy);
- Params.push_back(PtrTy);
- const FunctionType *FTy = FunctionType::get(Type::VoidTy, Params, false);
- const PointerType *PFTy = PointerType::get(FTy);
- Value* Func = getVal(PFTy, ID);
- std::string InstName0(makeNameUnique("va0"));
- std::string InstName1(makeNameUnique("va1"));
- Args[0] = new BitCastInst(Args[0], PtrTy, InstName0, CurBB);
- Args[1] = new BitCastInst(Args[1], PtrTy, InstName1, CurBB);
- return new CallInst(Func, Args);
+ switch (Name[5]) {
+ case 'i':
+ if (Name == "llvm.isunordered.f32" || Name == "llvm.isunordered.f64") {
+ if (Args.size() != 2)
+ error("Invalid prototype for " + Name);
+ return new FCmpInst(FCmpInst::FCMP_UNO, Args[0], Args[1]);
+ }
+ break;
+ case 'b':
+ if (Name.length() == 14 && !memcmp(&Name[5], "bswap.i", 7)) {
+ const Type* ArgTy = Args[0]->getType();
+ Name += ".i" + utostr(cast<IntegerType>(ArgTy)->getBitWidth());
+ Function *F = cast<Function>(
+ CurModule.CurrentModule->getOrInsertFunction(Name, RetTy, ArgTy,
+ (void*)0));
+ return new CallInst(F, Args[0]);
+ }
+ break;
+ case 'c':
+ if ((Name.length() <= 14 && !memcmp(&Name[5], "ctpop.i", 7)) ||
+ (Name.length() <= 13 && !memcmp(&Name[5], "ctlz.i", 6)) ||
+ (Name.length() <= 13 && !memcmp(&Name[5], "cttz.i", 6))) {
+ // These intrinsics changed their result type.
+ const Type* ArgTy = Args[0]->getType();
+ Function *OldF = CurModule.CurrentModule->getFunction(Name);
+ if (OldF)
+ OldF->setName("upgrd.rm." + Name);
+
+ Function *NewF = cast<Function>(
+ CurModule.CurrentModule->getOrInsertFunction(Name, Type::Int32Ty,
+ ArgTy, (void*)0));
+
+ Instruction *Call = new CallInst(NewF, Args[0], "", CurBB);
+ return CastInst::createIntegerCast(Call, RetTy, false);
+ }
+ break;
+
+ case 'v' : {
+ const Type* PtrTy = PointerType::get(Type::Int8Ty);
+ std::vector<const Type*> Params;
+ if (Name == "llvm.va_start" || Name == "llvm.va_end") {
+ if (Args.size() != 1)
+ error("Invalid prototype for " + Name + " prototype");
+ Params.push_back(PtrTy);
+ const FunctionType *FTy =
+ FunctionType::get(Type::VoidTy, Params, false);
+ const PointerType *PFTy = PointerType::get(FTy);
+ Value* Func = getVal(PFTy, ID);
+ Args[0] = new BitCastInst(Args[0], PtrTy, makeNameUnique("va"), CurBB);
+ return new CallInst(Func, &Args[0], Args.size());
+ } else if (Name == "llvm.va_copy") {
+ if (Args.size() != 2)
+ error("Invalid prototype for " + Name + " prototype");
+ Params.push_back(PtrTy);
+ Params.push_back(PtrTy);
+ const FunctionType *FTy =
+ FunctionType::get(Type::VoidTy, Params, false);
+ const PointerType *PFTy = PointerType::get(FTy);
+ Value* Func = getVal(PFTy, ID);
+ std::string InstName0(makeNameUnique("va0"));
+ std::string InstName1(makeNameUnique("va1"));
+ Args[0] = new BitCastInst(Args[0], PtrTy, InstName0, CurBB);
+ Args[1] = new BitCastInst(Args[1], PtrTy, InstName1, CurBB);
+ return new CallInst(Func, &Args[0], Args.size());
+ }
}
}
return 0;
}
-const Type* upgradeGEPIndices(const Type* PTy,
- std::vector<ValueInfo> *Indices,
- std::vector<Value*> &VIndices,
- std::vector<Constant*> *CIndices = 0) {
- // Traverse the indices with a gep_type_iterator so we can build the list
- // of constant and value indices for use later. Also perform upgrades
- VIndices.clear();
- if (CIndices) CIndices->clear();
- for (unsigned i = 0, e = Indices->size(); i != e; ++i)
- VIndices.push_back((*Indices)[i].V);
- generic_gep_type_iterator<std::vector<Value*>::iterator>
- GTI = gep_type_begin(PTy, VIndices.begin(), VIndices.end()),
- GTE = gep_type_end(PTy, VIndices.begin(), VIndices.end());
- for (unsigned i = 0, e = Indices->size(); i != e && GTI != GTE; ++i, ++GTI) {
- Value *Index = VIndices[i];
- if (CIndices && !isa<Constant>(Index))
- error("Indices to constant getelementptr must be constants");
- // LLVM 1.2 and earlier used ubyte struct indices. Convert any ubyte
- // struct indices to i32 struct indices with ZExt for compatibility.
- else if (isa<StructType>(*GTI)) { // Only change struct indices
- if (ConstantInt *CUI = dyn_cast<ConstantInt>(Index))
- if (CUI->getType()->getBitWidth() == 8)
- Index =
- ConstantExpr::getCast(Instruction::ZExt, CUI, Type::Int32Ty);
+const Type* upgradeGEPCEIndices(const Type* PTy,
+ std::vector<ValueInfo> *Indices,
+ std::vector<Constant*> &Result) {
+ const Type *Ty = PTy;
+ Result.clear();
+ for (unsigned i = 0, e = Indices->size(); i != e ; ++i) {
+ Constant *Index = cast<Constant>((*Indices)[i].V);
+
+ if (ConstantInt *CI = dyn_cast<ConstantInt>(Index)) {
+ // LLVM 1.2 and earlier used ubyte struct indices. Convert any ubyte
+ // struct indices to i32 struct indices with ZExt for compatibility.
+ if (CI->getBitWidth() < 32)
+ Index = ConstantExpr::getCast(Instruction::ZExt, CI, Type::Int32Ty);
+ }
+
+ if (isa<SequentialType>(Ty)) {
+ // Make sure that unsigned SequentialType indices are zext'd to
+ // 64-bits if they were smaller than that because LLVM 2.0 will sext
+ // all indices for SequentialType elements. We must retain the same
+ // semantic (zext) for unsigned types.
+ if (const IntegerType *Ity = dyn_cast<IntegerType>(Index->getType())) {
+ if (Ity->getBitWidth() < 64 && (*Indices)[i].S.isUnsigned()) {
+ Index = ConstantExpr::getCast(Instruction::ZExt, Index,Type::Int64Ty);
+ }
+ }
+ }
+ Result.push_back(Index);
+ Ty = GetElementPtrInst::getIndexedType(PTy, (Value**)&Result[0],
+ Result.size(),true);
+ if (!Ty)
+ error("Index list invalid for constant getelementptr");
+ }
+ return Ty;
+}
+
+const Type* upgradeGEPInstIndices(const Type* PTy,
+ std::vector<ValueInfo> *Indices,
+ std::vector<Value*> &Result) {
+ const Type *Ty = PTy;
+ Result.clear();
+ for (unsigned i = 0, e = Indices->size(); i != e ; ++i) {
+ Value *Index = (*Indices)[i].V;
+
+ if (ConstantInt *CI = dyn_cast<ConstantInt>(Index)) {
+ // LLVM 1.2 and earlier used ubyte struct indices. Convert any ubyte
+ // struct indices to i32 struct indices with ZExt for compatibility.
+ if (CI->getBitWidth() < 32)
+ Index = ConstantExpr::getCast(Instruction::ZExt, CI, Type::Int32Ty);
+ }
+
+
+ if (isa<StructType>(Ty)) { // Only change struct indices
+ if (!isa<Constant>(Index)) {
+ error("Invalid non-constant structure index");
+ return 0;
+ }
} else {
// Make sure that unsigned SequentialType indices are zext'd to
// 64-bits if they were smaller than that because LLVM 2.0 will sext
// all indices for SequentialType elements. We must retain the same
// semantic (zext) for unsigned types.
- if (const IntegerType *Ity = dyn_cast<IntegerType>(Index->getType()))
- if (Ity->getBitWidth() < 64 && (*Indices)[i].S == Unsigned) {
- if (CIndices)
+ if (const IntegerType *Ity = dyn_cast<IntegerType>(Index->getType())) {
+ if (Ity->getBitWidth() < 64 && (*Indices)[i].S.isUnsigned()) {
+ if (isa<Constant>(Index))
Index = ConstantExpr::getCast(Instruction::ZExt,
cast<Constant>(Index), Type::Int64Ty);
else
Index = CastInst::create(Instruction::ZExt, Index, Type::Int64Ty,
makeNameUnique("gep"), CurBB);
- VIndices[i] = Index;
}
+ }
}
- // Add to the CIndices list, if requested.
- if (CIndices)
- CIndices->push_back(cast<Constant>(Index));
- }
-
- const Type *IdxTy =
- GetElementPtrInst::getIndexedType(PTy, &VIndices[0], VIndices.size(), true);
- if (!IdxTy)
+ Result.push_back(Index);
+ Ty = GetElementPtrInst::getIndexedType(PTy, &Result[0], Result.size(),true);
+ if (!Ty)
error("Index list invalid for constant getelementptr");
- return IdxTy;
+ }
+ return Ty;
}
unsigned upgradeCallingConv(unsigned CC) {
# define YYTOKEN_TABLE 0
#endif
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
-#line 1454 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
-{
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 1771 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+typedef union YYSTYPE {
llvm::Module *ModuleVal;
llvm::Function *FunctionVal;
std::pair<llvm::PATypeInfo, char*> *ArgVal;
llvm::BasicBlock *BasicBlockVal;
- llvm::TerminatorInst *TermInstVal;
+ llvm::TermInstInfo TermInstVal;
llvm::InstrInfo InstVal;
llvm::ConstInfo ConstVal;
llvm::ValueInfo ValueVal;
llvm::ICmpInst::Predicate IPred;
llvm::FCmpInst::Predicate FPred;
llvm::Module::Endianness Endianness;
-}
-/* Line 193 of yacc.c. */
-#line 1888 "UpgradeParser.tab.c"
- YYSTYPE;
+} YYSTYPE;
+/* Line 196 of yacc.c. */
+#line 2194 "UpgradeParser.tab.c"
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
/* Copy the second part of user declarations. */
-/* Line 216 of yacc.c. */
-#line 1901 "UpgradeParser.tab.c"
-
-#ifdef short
-# undef short
-#endif
-
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
-#endif
+/* Line 219 of yacc.c. */
+#line 2206 "UpgradeParser.tab.c"
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
-#else
-typedef short int yytype_int8;
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
#endif
-
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
-#else
-typedef short int yytype_int16;
+#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
#endif
-
-#ifndef YYSIZE_T
-# ifdef __SIZE_TYPE__
-# define YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-# define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-# else
-# define YYSIZE_T unsigned int
-# endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
#endif
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-
#ifndef YY_
# if YYENABLE_NLS
# if ENABLE_NLS
# endif
#endif
-/* Suppress unused-variable warnings by "using" E. */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
-#else
-# define YYUSE(e) /* empty */
-#endif
-
-/* Identity function, used to suppress warnings about constant conditions. */
-#ifndef lint
-# define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int i)
-#else
-static int
-YYID (i)
- int i;
-#endif
-{
- return i;
-}
-#endif
-
-#if ! defined yyoverflow || YYERROR_VERBOSE
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
/* The parser invokes alloca or malloc; define the necessary symbols. */
# if YYSTACK_USE_ALLOCA
# ifdef __GNUC__
# define YYSTACK_ALLOC __builtin_alloca
-# elif defined __BUILTIN_VA_ARG_INCR
-# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-# elif defined _AIX
-# define YYSTACK_ALLOC __alloca
-# elif defined _MSC_VER
-# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-# define alloca _alloca
# else
# define YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# if defined (__STDC__) || defined (__cplusplus)
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef _STDLIB_H
-# define _STDLIB_H 1
-# endif
+# define YYINCLUDED_STDLIB_H
# endif
# endif
# endif
# endif
# ifdef YYSTACK_ALLOC
- /* Pacify GCC's `empty if-body' warning. */
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
# ifndef YYSTACK_ALLOC_MAXIMUM
/* The OS might guarantee only one guard page at the bottom of the stack,
and a page size can be as small as 4096 bytes. So we cannot safely
invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
to allow for a few compiler-allocated temporary stack slots. */
-# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
# endif
# else
# define YYSTACK_ALLOC YYMALLOC
# define YYSTACK_FREE YYFREE
# ifndef YYSTACK_ALLOC_MAXIMUM
-# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
# endif
-# if (defined __cplusplus && ! defined _STDLIB_H \
- && ! ((defined YYMALLOC || defined malloc) \
- && (defined YYFREE || defined free)))
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef _STDLIB_H
-# define _STDLIB_H 1
-# endif
+# ifdef __cplusplus
+extern "C" {
# endif
# ifndef YYMALLOC
# define YYMALLOC malloc
-# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
+ && (defined (__STDC__) || defined (__cplusplus)))
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# ifndef YYFREE
# define YYFREE free
-# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+# if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
+ && (defined (__STDC__) || defined (__cplusplus)))
void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
+# ifdef __cplusplus
+}
+# endif
# endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
-#if (! defined yyoverflow \
- && (! defined __cplusplus \
- || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+#if (! defined (yyoverflow) \
+ && (! defined (__cplusplus) \
+ || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
/* A type that is properly aligned for any stack member. */
union yyalloc
{
- yytype_int16 yyss;
+ short int yyss;
YYSTYPE yyvs;
};
/* The size of an array large to enough to hold all stacks, each with
N elements. */
# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
/* Copy COUNT objects from FROM to TO. The source and destination do
not overlap. */
# ifndef YYCOPY
-# if defined __GNUC__ && 1 < __GNUC__
+# if defined (__GNUC__) && 1 < __GNUC__
# define YYCOPY(To, From, Count) \
__builtin_memcpy (To, From, (Count) * sizeof (*(From)))
# else
for (yyi = 0; yyi < (Count); yyi++) \
(To)[yyi] = (From)[yyi]; \
} \
- while (YYID (0))
+ while (0)
# endif
# endif
yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
- while (YYID (0))
+ while (0)
+
+#endif
+#if defined (__STDC__) || defined (__cplusplus)
+ typedef signed char yysigned_char;
+#else
+ typedef short int yysigned_char;
#endif
-/* YYFINAL -- State number of the termination state. */
+/* YYFINAL -- State number of the termination state. */
#define YYFINAL 4
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 1762
+#define YYLAST 1630
-/* YYNTOKENS -- Number of terminals. */
+/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 166
-/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 80
-/* YYNRULES -- Number of rules. */
-#define YYNRULES 309
-/* YYNRULES -- Number of states. */
-#define YYNSTATES 605
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 81
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 310
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 606
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
-static const yytype_uint8 yytranslate[] =
+static const unsigned char yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
#if YYDEBUG
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
YYRHS. */
-static const yytype_uint16 yyprhs[] =
+static const unsigned short int yyprhs[] =
{
0, 0, 3, 5, 7, 9, 11, 13, 15, 17,
19, 21, 23, 25, 27, 29, 31, 33, 35, 37,
528, 529, 537, 538, 546, 547, 555, 559, 564, 565,
567, 569, 571, 575, 579, 583, 587, 591, 595, 597,
598, 600, 602, 604, 605, 608, 612, 614, 616, 620,
- 622, 623, 632, 634, 636, 640, 642, 644, 647, 648,
- 650, 652, 653, 654, 660, 661, 663, 665, 667, 669,
- 671, 673, 675, 677, 679, 683, 685, 691, 693, 695,
- 697, 699, 702, 705, 708, 712, 715, 716, 718, 720,
- 722, 725, 728, 732, 742, 752, 761, 775, 777, 779,
- 786, 792, 795, 802, 810, 812, 816, 818, 819, 822,
- 824, 830, 836, 842, 849, 856, 859, 864, 869, 876,
- 881, 886, 891, 896, 903, 910, 913, 921, 923, 926,
- 927, 929, 930, 934, 941, 945, 952, 955, 960, 967
+ 622, 623, 632, 634, 636, 637, 642, 644, 646, 649,
+ 650, 652, 654, 655, 656, 662, 663, 665, 667, 669,
+ 671, 673, 675, 677, 679, 681, 685, 687, 693, 695,
+ 697, 699, 701, 704, 707, 710, 714, 717, 718, 720,
+ 722, 724, 727, 730, 734, 744, 754, 763, 777, 779,
+ 781, 788, 794, 797, 804, 812, 814, 818, 820, 821,
+ 824, 826, 832, 838, 844, 851, 858, 861, 866, 871,
+ 878, 883, 888, 893, 898, 905, 912, 915, 923, 925,
+ 928, 929, 931, 932, 936, 943, 947, 954, 957, 962,
+ 969
};
-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-static const yytype_int16 yyrhs[] =
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const short int yyrhs[] =
{
200, 0, -1, 5, -1, 6, -1, 3, -1, 4,
-1, 79, -1, 80, -1, 81, -1, 82, -1, 83,
-1, 191, -1, 8, -1, 193, -1, 8, -1, 193,
-1, 9, -1, 10, -1, 11, -1, 12, -1, 13,
-1, 14, -1, 15, -1, 16, -1, 17, -1, 18,
- -1, 19, -1, 21, -1, 192, -1, 48, -1, 228,
+ -1, 19, -1, 21, -1, 192, -1, 48, -1, 229,
-1, 154, 4, -1, 190, 155, 195, 156, -1, 157,
4, 158, 193, 159, -1, 160, 4, 158, 193, 161,
-1, 162, 194, 163, -1, 162, 163, -1, 160, 162,
191, 160, 198, 161, -1, 191, 162, 198, 163, -1,
191, 162, 163, -1, 191, 160, 162, 198, 163, 161,
-1, 191, 160, 162, 163, 161, -1, 191, 38, -1,
- 191, 39, -1, 191, 228, -1, 191, 197, -1, 191,
+ 191, 39, -1, 191, 229, -1, 191, 197, -1, 191,
26, -1, 176, 168, -1, 177, 4, -1, 9, 27,
-1, 9, 28, -1, 179, 7, -1, 175, 155, 196,
- 36, 191, 156, -1, 110, 155, 196, 243, 156, -1,
+ 36, 191, 156, -1, 110, 155, 196, 244, 156, -1,
112, 155, 196, 153, 196, 153, 196, 156, -1, 169,
155, 196, 153, 196, 156, -1, 170, 155, 196, 153,
196, 156, -1, 171, 155, 196, 153, 196, 156, -1,
115, 155, 196, 153, 196, 153, 196, 156, -1, 116,
155, 196, 153, 196, 153, 196, 156, -1, 198, 153,
196, -1, 196, -1, 32, -1, 33, -1, 201, -1,
- 201, 221, -1, 201, 223, -1, 201, 62, 61, 207,
+ 201, 222, -1, 201, 224, -1, 201, 62, 61, 207,
-1, 201, 25, -1, 202, -1, 202, 180, 20, 189,
- -1, 202, 223, -1, 202, 62, 61, 207, -1, -1,
+ -1, 202, 224, -1, 202, 62, 61, 207, -1, -1,
202, 180, 181, 199, 196, 203, 187, -1, -1, 202,
180, 50, 199, 191, 204, 187, -1, -1, 202, 180,
45, 199, 191, 205, 187, -1, -1, 202, 180, 47,
24, -1, 212, -1, -1, 191, 213, -1, 215, 153,
214, -1, 214, -1, 215, -1, 215, 153, 37, -1,
37, -1, -1, 182, 189, 212, 155, 216, 156, 186,
- 183, -1, 29, -1, 162, -1, 181, 217, 218, -1,
- 30, -1, 163, -1, 231, 220, -1, -1, 45, -1,
- 47, -1, -1, -1, 31, 224, 222, 225, 217, -1,
- -1, 63, -1, 3, -1, 4, -1, 7, -1, 27,
- -1, 28, -1, 38, -1, 39, -1, 26, -1, 160,
- 198, 161, -1, 197, -1, 61, 226, 24, 153, 24,
- -1, 167, -1, 212, -1, 228, -1, 227, -1, 191,
- 229, -1, 231, 232, -1, 219, 232, -1, 233, 180,
- 235, -1, 233, 237, -1, -1, 23, -1, 77, -1,
- 78, -1, 72, 230, -1, 72, 8, -1, 73, 21,
- 229, -1, 73, 9, 229, 153, 21, 229, 153, 21,
- 229, -1, 74, 178, 229, 153, 21, 229, 157, 236,
- 159, -1, 74, 178, 229, 153, 21, 229, 157, 159,
- -1, 75, 182, 189, 229, 155, 240, 156, 36, 21,
- 229, 234, 21, 229, -1, 234, -1, 76, -1, 236,
- 178, 227, 153, 21, 229, -1, 178, 227, 153, 21,
- 229, -1, 180, 242, -1, 191, 157, 229, 153, 229,
- 159, -1, 238, 153, 157, 229, 153, 229, 159, -1,
- 230, -1, 239, 153, 230, -1, 239, -1, -1, 60,
- 59, -1, 59, -1, 169, 191, 229, 153, 229, -1,
- 170, 191, 229, 153, 229, -1, 171, 191, 229, 153,
- 229, -1, 103, 172, 191, 229, 153, 229, -1, 104,
- 173, 191, 229, 153, 229, -1, 49, 230, -1, 174,
- 230, 153, 230, -1, 175, 230, 36, 191, -1, 112,
- 230, 153, 230, 153, 230, -1, 113, 230, 153, 191,
- -1, 117, 230, 153, 191, -1, 118, 230, 153, 191,
- -1, 114, 230, 153, 230, -1, 115, 230, 153, 230,
- 153, 230, -1, 116, 230, 153, 230, 153, 230, -1,
- 111, 238, -1, 241, 182, 189, 229, 155, 240, 156,
- -1, 245, -1, 153, 239, -1, -1, 35, -1, -1,
- 105, 191, 184, -1, 105, 191, 153, 15, 229, 184,
- -1, 106, 191, 184, -1, 106, 191, 153, 15, 229,
- 184, -1, 107, 230, -1, 244, 108, 191, 229, -1,
- 244, 109, 230, 153, 191, 229, -1, 110, 191, 229,
- 243, -1
+ 183, -1, 29, -1, 162, -1, -1, 181, 220, 217,
+ 218, -1, 30, -1, 163, -1, 232, 221, -1, -1,
+ 45, -1, 47, -1, -1, -1, 31, 225, 223, 226,
+ 217, -1, -1, 63, -1, 3, -1, 4, -1, 7,
+ -1, 27, -1, 28, -1, 38, -1, 39, -1, 26,
+ -1, 160, 198, 161, -1, 197, -1, 61, 227, 24,
+ 153, 24, -1, 167, -1, 212, -1, 229, -1, 228,
+ -1, 191, 230, -1, 232, 233, -1, 219, 233, -1,
+ 234, 180, 236, -1, 234, 238, -1, -1, 23, -1,
+ 77, -1, 78, -1, 72, 231, -1, 72, 8, -1,
+ 73, 21, 230, -1, 73, 9, 230, 153, 21, 230,
+ 153, 21, 230, -1, 74, 178, 230, 153, 21, 230,
+ 157, 237, 159, -1, 74, 178, 230, 153, 21, 230,
+ 157, 159, -1, 75, 182, 189, 230, 155, 241, 156,
+ 36, 21, 230, 235, 21, 230, -1, 235, -1, 76,
+ -1, 237, 178, 228, 153, 21, 230, -1, 178, 228,
+ 153, 21, 230, -1, 180, 243, -1, 191, 157, 230,
+ 153, 230, 159, -1, 239, 153, 157, 230, 153, 230,
+ 159, -1, 231, -1, 240, 153, 231, -1, 240, -1,
+ -1, 60, 59, -1, 59, -1, 169, 191, 230, 153,
+ 230, -1, 170, 191, 230, 153, 230, -1, 171, 191,
+ 230, 153, 230, -1, 103, 172, 191, 230, 153, 230,
+ -1, 104, 173, 191, 230, 153, 230, -1, 49, 231,
+ -1, 174, 231, 153, 231, -1, 175, 231, 36, 191,
+ -1, 112, 231, 153, 231, 153, 231, -1, 113, 231,
+ 153, 191, -1, 117, 231, 153, 191, -1, 118, 231,
+ 153, 191, -1, 114, 231, 153, 231, -1, 115, 231,
+ 153, 231, 153, 231, -1, 116, 231, 153, 231, 153,
+ 231, -1, 111, 239, -1, 242, 182, 189, 230, 155,
+ 241, 156, -1, 246, -1, 153, 240, -1, -1, 35,
+ -1, -1, 105, 191, 184, -1, 105, 191, 153, 15,
+ 230, 184, -1, 106, 191, 184, -1, 106, 191, 153,
+ 15, 230, 184, -1, 107, 231, -1, 245, 108, 191,
+ 230, -1, 245, 109, 231, 153, 191, 230, -1, 110,
+ 191, 230, 244, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
-static const yytype_uint16 yyrline[] =
+static const unsigned short int yyrline[] =
{
- 0, 1594, 1594, 1595, 1603, 1604, 1614, 1614, 1614, 1614,
- 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1618, 1618, 1618,
- 1622, 1622, 1622, 1622, 1622, 1622, 1626, 1626, 1627, 1627,
- 1628, 1628, 1629, 1629, 1630, 1630, 1634, 1634, 1635, 1635,
- 1636, 1636, 1637, 1637, 1638, 1638, 1639, 1639, 1640, 1640,
- 1641, 1642, 1645, 1645, 1645, 1645, 1649, 1649, 1649, 1649,
- 1649, 1649, 1649, 1650, 1650, 1650, 1650, 1650, 1650, 1656,
- 1656, 1656, 1656, 1660, 1660, 1660, 1660, 1664, 1664, 1668,
- 1668, 1673, 1676, 1681, 1682, 1683, 1684, 1685, 1686, 1687,
- 1688, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1709,
- 1710, 1718, 1719, 1727, 1736, 1737, 1744, 1745, 1749, 1753,
- 1769, 1770, 1777, 1778, 1785, 1793, 1793, 1793, 1793, 1793,
- 1793, 1793, 1794, 1794, 1794, 1794, 1794, 1799, 1803, 1807,
- 1812, 1821, 1838, 1844, 1857, 1866, 1870, 1881, 1885, 1898,
- 1902, 1909, 1910, 1916, 1923, 1935, 1965, 1978, 2001, 2029,
- 2051, 2062, 2084, 2095, 2104, 2109, 2167, 2174, 2182, 2189,
- 2196, 2200, 2204, 2213, 2228, 2241, 2250, 2278, 2291, 2300,
- 2306, 2312, 2323, 2329, 2335, 2346, 2347, 2356, 2357, 2369,
- 2378, 2379, 2380, 2381, 2382, 2398, 2418, 2420, 2422, 2422,
- 2429, 2429, 2436, 2436, 2443, 2443, 2451, 2453, 2455, 2460,
- 2474, 2475, 2479, 2482, 2490, 2494, 2501, 2505, 2509, 2513,
- 2521, 2521, 2525, 2526, 2530, 2538, 2543, 2551, 2552, 2559,
- 2566, 2570, 2746, 2746, 2750, 2760, 2760, 2764, 2769, 2770,
- 2771, 2775, 2776, 2775, 2788, 2789, 2794, 2795, 2796, 2797,
- 2798, 2799, 2800, 2801, 2802, 2823, 2826, 2841, 2842, 2847,
- 2847, 2855, 2864, 2867, 2876, 2886, 2891, 2900, 2911, 2911,
- 2914, 2917, 2920, 2924, 2930, 2945, 2951, 3007, 3010, 3016,
- 3026, 3039, 3068, 3076, 3084, 3088, 3095, 3096, 3100, 3103,
- 3109, 3126, 3142, 3156, 3168, 3180, 3191, 3209, 3218, 3227,
- 3234, 3255, 3279, 3285, 3291, 3297, 3313, 3391, 3399, 3400,
- 3404, 3405, 3409, 3415, 3421, 3427, 3433, 3440, 3452, 3477
+ 0, 1911, 1911, 1912, 1920, 1921, 1931, 1931, 1931, 1931,
+ 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1935, 1935, 1935,
+ 1939, 1939, 1939, 1939, 1939, 1939, 1943, 1943, 1944, 1944,
+ 1945, 1945, 1946, 1946, 1947, 1947, 1951, 1951, 1952, 1952,
+ 1953, 1953, 1954, 1954, 1955, 1955, 1956, 1956, 1957, 1957,
+ 1958, 1959, 1962, 1962, 1962, 1962, 1966, 1966, 1966, 1966,
+ 1966, 1966, 1966, 1967, 1967, 1967, 1967, 1967, 1967, 1973,
+ 1973, 1973, 1973, 1977, 1977, 1977, 1977, 1981, 1981, 1985,
+ 1985, 1990, 1993, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2026,
+ 2027, 2035, 2036, 2044, 2053, 2054, 2061, 2062, 2066, 2070,
+ 2086, 2087, 2094, 2095, 2102, 2110, 2110, 2110, 2110, 2110,
+ 2110, 2110, 2111, 2111, 2111, 2111, 2111, 2116, 2120, 2124,
+ 2129, 2138, 2156, 2162, 2175, 2186, 2190, 2203, 2207, 2221,
+ 2225, 2232, 2233, 2239, 2246, 2258, 2288, 2301, 2324, 2352,
+ 2374, 2385, 2407, 2418, 2427, 2432, 2491, 2498, 2506, 2513,
+ 2520, 2524, 2528, 2537, 2552, 2564, 2573, 2601, 2614, 2623,
+ 2629, 2635, 2646, 2652, 2658, 2669, 2670, 2679, 2680, 2692,
+ 2701, 2702, 2703, 2704, 2705, 2721, 2741, 2743, 2745, 2745,
+ 2752, 2752, 2760, 2760, 2768, 2768, 2777, 2779, 2781, 2786,
+ 2800, 2801, 2805, 2808, 2816, 2820, 2827, 2831, 2835, 2839,
+ 2847, 2847, 2851, 2852, 2856, 2864, 2869, 2877, 2878, 2885,
+ 2892, 2896, 3083, 3083, 3087, 3087, 3097, 3097, 3101, 3106,
+ 3107, 3108, 3112, 3113, 3112, 3125, 3126, 3131, 3132, 3133,
+ 3134, 3138, 3142, 3143, 3144, 3145, 3166, 3170, 3184, 3185,
+ 3190, 3190, 3198, 3208, 3211, 3220, 3231, 3236, 3245, 3256,
+ 3256, 3259, 3263, 3267, 3272, 3282, 3300, 3309, 3379, 3383,
+ 3390, 3402, 3417, 3447, 3457, 3467, 3471, 3478, 3479, 3483,
+ 3486, 3492, 3511, 3529, 3545, 3559, 3573, 3584, 3602, 3611,
+ 3620, 3627, 3648, 3672, 3678, 3684, 3690, 3706, 3796, 3804,
+ 3805, 3809, 3810, 3814, 3820, 3827, 3833, 3840, 3847, 3860,
+ 3886
};
#endif
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
- First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
"$end", "error", "$undefined", "ESINT64VAL", "EUINT64VAL", "SINTVAL",
"@2", "@3", "@4", "AsmBlock", "BigOrLittle", "TargetDefinition",
"LibrariesDefinition", "LibList", "Name", "OptName", "ArgVal",
"ArgListH", "ArgList", "FunctionHeaderH", "BEGIN", "FunctionHeader",
- "END", "Function", "FnDeclareLinkage", "FunctionProto", "@5", "@6",
+ "@5", "END", "Function", "FnDeclareLinkage", "FunctionProto", "@6", "@7",
"OptSideEffect", "ConstValueRef", "SymbolicValueRef", "ValueRef",
"ResolvedVal", "BasicBlockList", "BasicBlock", "InstructionList",
"Unwind", "BBTerminatorInst", "JumpTable", "Inst", "PHIList",
# ifdef YYPRINT
/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
token YYLEX-NUM. */
-static const yytype_uint16 yytoknum[] =
+static const unsigned short int yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const yytype_uint8 yyr1[] =
+static const unsigned char yyr1[] =
{
0, 166, 167, 167, 168, 168, 169, 169, 169, 169,
169, 169, 169, 169, 169, 169, 169, 170, 170, 170,
204, 202, 205, 202, 206, 202, 202, 202, 202, 207,
208, 208, 209, 209, 209, 209, 210, 211, 211, 211,
212, 212, 213, 213, 214, 215, 215, 216, 216, 216,
- 216, 217, 218, 218, 219, 220, 220, 221, 222, 222,
- 222, 224, 225, 223, 226, 226, 227, 227, 227, 227,
- 227, 227, 227, 227, 227, 227, 227, 228, 228, 229,
- 229, 230, 231, 231, 232, 233, 233, 233, 234, 234,
- 235, 235, 235, 235, 235, 235, 235, 235, 235, 236,
- 236, 237, 238, 238, 239, 239, 240, 240, 241, 241,
- 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
- 242, 242, 242, 242, 242, 242, 242, 242, 243, 243,
- 244, 244, 245, 245, 245, 245, 245, 245, 245, 245
+ 216, 217, 218, 218, 220, 219, 221, 221, 222, 223,
+ 223, 223, 225, 226, 224, 227, 227, 228, 228, 228,
+ 228, 228, 228, 228, 228, 228, 228, 228, 229, 229,
+ 230, 230, 231, 232, 232, 233, 234, 234, 234, 235,
+ 235, 236, 236, 236, 236, 236, 236, 236, 236, 236,
+ 237, 237, 238, 239, 239, 240, 240, 241, 241, 242,
+ 242, 243, 243, 243, 243, 243, 243, 243, 243, 243,
+ 243, 243, 243, 243, 243, 243, 243, 243, 243, 244,
+ 244, 245, 245, 246, 246, 246, 246, 246, 246, 246,
+ 246
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-static const yytype_uint8 yyr2[] =
+static const unsigned char yyr2[] =
{
0, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 7, 0, 7, 0, 7, 3, 4, 0, 1,
1, 1, 3, 3, 3, 3, 3, 3, 1, 0,
1, 1, 1, 0, 2, 3, 1, 1, 3, 1,
- 0, 8, 1, 1, 3, 1, 1, 2, 0, 1,
- 1, 0, 0, 5, 0, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 1, 5, 1, 1, 1,
- 1, 2, 2, 2, 3, 2, 0, 1, 1, 1,
- 2, 2, 3, 9, 9, 8, 13, 1, 1, 6,
- 5, 2, 6, 7, 1, 3, 1, 0, 2, 1,
- 5, 5, 5, 6, 6, 2, 4, 4, 6, 4,
- 4, 4, 4, 6, 6, 2, 7, 1, 2, 0,
- 1, 0, 3, 6, 3, 6, 2, 4, 6, 4
+ 0, 8, 1, 1, 0, 4, 1, 1, 2, 0,
+ 1, 1, 0, 0, 5, 0, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 3, 1, 5, 1, 1,
+ 1, 1, 2, 2, 2, 3, 2, 0, 1, 1,
+ 1, 2, 2, 3, 9, 9, 8, 13, 1, 1,
+ 6, 5, 2, 6, 7, 1, 3, 1, 0, 2,
+ 1, 5, 5, 5, 6, 6, 2, 4, 4, 6,
+ 4, 4, 4, 4, 6, 6, 2, 7, 1, 2,
+ 0, 1, 0, 3, 6, 3, 6, 2, 4, 6,
+ 4
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
STATE-NUM when YYTABLE doesn't specify something else to do. Zero
means the default is an error. */
-static const yytype_uint16 yydefact[] =
+static const unsigned short int yydefact[] =
{
- 198, 0, 90, 184, 1, 183, 231, 83, 84, 85,
- 86, 87, 88, 89, 0, 91, 256, 180, 181, 256,
- 210, 211, 0, 0, 0, 90, 0, 186, 228, 0,
- 0, 92, 93, 94, 95, 96, 97, 0, 0, 257,
- 253, 82, 225, 226, 227, 252, 0, 0, 0, 0,
- 196, 0, 0, 0, 0, 0, 0, 0, 81, 229,
- 230, 232, 199, 182, 98, 2, 3, 111, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 128, 0, 0, 0, 0, 247, 0, 0, 110, 127,
- 114, 248, 129, 222, 223, 224, 301, 255, 0, 0,
- 0, 0, 209, 197, 187, 185, 177, 178, 0, 0,
- 0, 0, 91, 130, 0, 0, 0, 113, 135, 139,
- 0, 0, 144, 138, 300, 0, 279, 0, 0, 0,
- 0, 91, 268, 258, 259, 6, 7, 8, 9, 10,
+ 198, 0, 90, 184, 1, 183, 232, 83, 84, 85,
+ 86, 87, 88, 89, 0, 224, 257, 180, 181, 257,
+ 210, 211, 0, 0, 0, 90, 0, 186, 229, 0,
+ 91, 258, 254, 82, 226, 227, 228, 253, 0, 0,
+ 0, 0, 196, 0, 0, 0, 0, 0, 0, 0,
+ 81, 230, 231, 233, 199, 182, 0, 92, 93, 94,
+ 95, 96, 97, 0, 0, 302, 256, 0, 0, 0,
+ 0, 209, 197, 187, 2, 3, 111, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 128,
+ 0, 0, 0, 0, 248, 185, 0, 110, 127, 114,
+ 249, 129, 177, 178, 0, 0, 0, 0, 91, 98,
+ 0, 222, 223, 225, 301, 0, 280, 0, 0, 0,
+ 0, 91, 269, 259, 260, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 52,
53, 54, 55, 20, 21, 22, 23, 24, 25, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 68, 56, 57, 58, 59, 60, 61,
62, 63, 64, 65, 66, 67, 0, 0, 0, 0,
- 0, 267, 254, 91, 271, 0, 297, 204, 201, 200,
- 202, 203, 205, 208, 0, 192, 194, 190, 115, 116,
+ 0, 268, 255, 91, 272, 0, 298, 204, 201, 200,
+ 202, 203, 205, 208, 0, 130, 0, 0, 0, 113,
+ 135, 139, 0, 144, 138, 192, 194, 190, 115, 116,
117, 118, 119, 120, 121, 122, 123, 124, 125, 0,
- 0, 0, 0, 188, 233, 0, 0, 0, 0, 0,
- 134, 220, 143, 141, 0, 0, 285, 278, 261, 260,
- 0, 0, 72, 76, 71, 75, 70, 74, 69, 73,
- 77, 78, 0, 0, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 0, 50, 51, 46, 47, 48,
- 49, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 0, 101, 101, 306, 0, 0, 295, 0, 0,
+ 0, 0, 0, 188, 234, 0, 0, 286, 279, 262,
+ 261, 0, 0, 72, 76, 71, 75, 70, 74, 69,
+ 73, 77, 78, 0, 0, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 0, 50, 51, 46, 47,
+ 48, 49, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 0, 101, 101, 307, 0, 0, 296, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 206, 106, 106, 106, 160, 161,
+ 0, 0, 0, 0, 0, 206, 0, 0, 0, 0,
+ 0, 134, 143, 141, 0, 106, 106, 106, 160, 161,
4, 5, 158, 159, 162, 157, 153, 154, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 156, 155, 106, 112, 112, 137,
- 0, 140, 219, 213, 216, 217, 0, 0, 131, 236,
- 237, 238, 243, 239, 240, 241, 242, 234, 0, 245,
- 250, 249, 251, 0, 262, 0, 0, 0, 0, 0,
- 302, 0, 304, 299, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 156, 155, 106, 220, 237, 238,
+ 239, 244, 240, 241, 242, 243, 235, 0, 246, 251,
+ 250, 252, 0, 263, 0, 0, 0, 0, 0, 303,
+ 0, 305, 300, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 207, 0, 193, 195, 191, 0, 0, 0, 0,
- 0, 0, 0, 146, 176, 0, 0, 0, 150, 0,
- 147, 0, 0, 0, 0, 0, 189, 132, 133, 136,
- 212, 214, 0, 104, 142, 235, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 309, 0, 0,
- 0, 289, 292, 0, 0, 290, 291, 0, 0, 0,
- 286, 287, 0, 307, 0, 0, 0, 108, 106, 0,
- 0, 299, 0, 0, 0, 0, 0, 145, 135, 114,
- 0, 148, 149, 0, 0, 0, 0, 0, 218, 215,
- 105, 99, 0, 244, 0, 0, 277, 0, 0, 101,
- 102, 101, 274, 298, 0, 0, 0, 0, 0, 280,
- 281, 282, 277, 0, 103, 109, 107, 0, 0, 0,
- 0, 0, 0, 0, 175, 152, 0, 0, 0, 0,
- 0, 0, 0, 221, 0, 0, 0, 276, 0, 283,
- 284, 0, 303, 305, 0, 0, 0, 288, 293, 294,
- 0, 308, 0, 0, 164, 0, 0, 0, 0, 151,
- 0, 0, 0, 0, 0, 100, 246, 0, 0, 0,
- 275, 272, 0, 296, 0, 0, 0, 172, 0, 0,
- 166, 167, 168, 171, 163, 0, 265, 0, 0, 0,
- 273, 169, 170, 0, 0, 0, 263, 0, 264, 0,
- 0, 165, 173, 174, 0, 0, 0, 0, 0, 0,
- 270, 0, 0, 269, 266
+ 207, 112, 112, 137, 0, 140, 0, 131, 0, 193,
+ 195, 191, 0, 0, 0, 0, 0, 0, 0, 146,
+ 176, 0, 0, 0, 150, 0, 147, 0, 0, 0,
+ 0, 0, 189, 219, 213, 216, 217, 0, 236, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 310, 0, 0, 0, 290, 293, 0, 0, 291, 292,
+ 0, 0, 0, 287, 288, 0, 308, 0, 132, 133,
+ 136, 142, 0, 0, 108, 106, 0, 0, 300, 0,
+ 0, 0, 0, 0, 145, 135, 114, 0, 148, 149,
+ 0, 0, 0, 0, 0, 212, 214, 0, 104, 0,
+ 245, 0, 0, 278, 0, 0, 101, 102, 101, 275,
+ 299, 0, 0, 0, 0, 0, 281, 282, 283, 278,
+ 0, 103, 109, 107, 0, 0, 0, 0, 0, 0,
+ 0, 175, 152, 0, 0, 0, 0, 0, 0, 218,
+ 215, 105, 99, 0, 0, 0, 277, 0, 284, 285,
+ 0, 304, 306, 0, 0, 0, 289, 294, 295, 0,
+ 309, 0, 0, 164, 0, 0, 0, 0, 151, 0,
+ 0, 0, 0, 0, 0, 221, 247, 0, 0, 0,
+ 276, 273, 0, 297, 0, 0, 0, 172, 0, 0,
+ 166, 167, 168, 171, 163, 100, 0, 266, 0, 0,
+ 0, 274, 169, 170, 0, 0, 0, 264, 0, 265,
+ 0, 0, 165, 173, 174, 0, 0, 0, 0, 0,
+ 0, 271, 0, 0, 270, 267
};
-/* YYDEFGOTO[NTERM-NUM]. */
-static const yytype_int16 yydefgoto[] =
+/* YYDEFGOTO[NTERM-NUM]. */
+static const short int yydefgoto[] =
{
- -1, 85, 312, 329, 330, 331, 264, 281, 332, 333,
- 219, 220, 252, 221, 25, 15, 37, 523, 370, 457,
- 481, 393, 458, 86, 87, 222, 89, 90, 120, 234,
- 404, 359, 405, 108, 1, 2, 3, 336, 307, 305,
- 306, 63, 200, 50, 103, 204, 91, 421, 344, 345,
- 346, 38, 95, 16, 44, 17, 61, 18, 28, 112,
- 426, 360, 92, 362, 492, 19, 40, 41, 191, 192,
- 578, 97, 287, 527, 528, 193, 194, 437, 195, 196
+ -1, 94, 312, 329, 330, 331, 255, 272, 332, 333,
+ 219, 220, 243, 221, 25, 15, 63, 555, 359, 454,
+ 522, 389, 455, 95, 96, 222, 98, 99, 202, 304,
+ 400, 348, 401, 104, 1, 2, 3, 336, 307, 305,
+ 306, 55, 190, 42, 72, 194, 100, 476, 415, 416,
+ 417, 64, 113, 16, 30, 36, 17, 53, 18, 28,
+ 108, 419, 349, 101, 351, 489, 19, 32, 33, 181,
+ 182, 579, 66, 278, 526, 527, 183, 184, 430, 185,
+ 186
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -555
-static const yytype_int16 yypact[] =
+#define YYPACT_NINF -542
+static const short int yypact[] =
{
- -555, 136, 58, 247, -555, -555, -555, -555, -555, -555,
- -555, -555, -555, -555, 96, 181, 141, -555, -555, -9,
- -555, -555, 16, 7, 114, 65, 39, -555, 50, 188,
- 210, -555, -555, -555, -555, -555, -555, 1357, -19, -555,
- -555, 134, -555, -555, -555, -555, 68, 69, 70, 73,
- -555, 60, 188, 1357, 4, 4, 4, 4, -555, -555,
- -555, -555, -555, -555, -555, -555, -555, 63, -555, -555,
- -555, -555, -555, -555, -555, -555, -555, -555, -555, -555,
- -555, 222, 224, 1, 171, -555, 134, 84, -555, -555,
- -103, -555, -555, -555, -555, -555, 1611, -555, 216, 66,
- 238, 219, 233, -555, -555, -555, -555, -555, 1418, 1418,
- 1418, 1459, 181, -555, 100, 101, 737, -555, -555, -103,
- -112, 105, 803, -555, -555, 1418, -555, 202, 1479, 13,
- 221, 181, -555, -555, -555, -555, -555, -555, -555, -555,
- -555, -555, -555, -555, -555, -555, -555, -555, -555, -555,
- -555, -555, -555, -555, -555, -555, -555, -555, -555, 77,
- 377, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418, 1418,
- 1418, 1418, 1418, -555, -555, -555, -555, -555, -555, -555,
- -555, -555, -555, -555, -555, -555, 1418, 1418, 1418, 1418,
- 1418, -555, -555, 181, -555, 33, -555, -555, -555, -555,
- -555, -555, -555, -555, -15, -555, -555, -555, 36, 158,
- 262, 164, 264, 167, 266, 169, 268, 269, 270, 204,
- 271, 274, 579, -555, -555, 1418, 1418, 121, -67, 1418,
- -555, 1199, -555, 120, 127, 920, -555, -555, 63, -555,
- 920, 920, -555, -555, -555, -555, -555, -555, -555, -555,
- -555, -555, 920, 1357, -555, -555, -555, -555, -555, -555,
- -555, -555, -555, -555, 1418, -555, -555, -555, -555, -555,
- -555, -555, -555, -555, -555, -555, -555, -555, -555, -555,
- -555, 1418, 142, 143, -555, 920, 147, 153, 154, 155,
- 157, 165, 166, 168, 170, 920, 920, 920, 173, 275,
- 1357, 1418, 1418, 293, -555, 174, 174, 174, -555, -555,
- -555, -555, -555, -555, -555, -555, -555, -555, 77, 377,
- 175, 177, 180, 182, 183, 1240, 1520, 757, 296, 192,
- 193, 199, 203, 207, -555, -555, 174, -45, -71, -555,
- 161, -103, -555, 134, -555, 176, 209, 1260, -555, -555,
- -555, -555, -555, -555, -555, -555, -555, 261, 1459, -555,
- -555, -555, -555, 206, -555, 213, 920, 920, 920, -2,
- -555, 0, -555, 215, 920, 179, 1418, 1418, 1418, 1418,
- 1418, 1418, 1418, 217, 218, 223, 1418, 1418, 920, 920,
- 226, -555, -17, -555, -555, -555, 214, 220, 1459, 1459,
- 1459, 1459, 1459, -555, -555, -13, 778, -94, -555, -40,
- -555, 1459, 1459, 1459, 1459, 1459, -555, -555, -555, -555,
- -555, -555, 1301, 346, -555, -555, 357, -69, 361, 362,
- 229, 234, 235, 920, 382, 920, 1418, -555, 236, 920,
- 237, -555, -555, 239, 240, -555, -555, 920, 920, 920,
- -555, -555, 241, -555, 1418, 367, 390, -555, 174, 1459,
- 1459, 215, 242, 245, 248, 249, 1459, -555, 254, -16,
- -8, -555, -555, 250, 253, 263, 272, 364, -555, -555,
- -555, 366, 273, -555, 920, 920, 1418, 920, 920, 276,
- -555, 276, -555, 279, 920, 280, 1418, 1418, 1418, -555,
- -555, -555, 1418, 920, -555, -555, -555, 281, 282, 283,
- 1459, 1459, 1459, 1459, -555, -555, 284, 1459, 1459, 1459,
- 1459, 1418, 423, -555, 416, 288, 285, 279, 290, -555,
- -555, 391, -555, -555, 1418, 294, 920, -555, -555, -555,
- 291, -555, 1459, 1459, -555, 299, 298, 302, 303, -555,
- 301, 306, 307, 308, 310, -555, -555, 437, 15, 432,
- -555, -555, 312, -555, 316, 319, 1459, -555, 1459, 1459,
- -555, -555, -555, -555, -555, 920, -555, 1046, 64, 460,
- -555, -555, -555, 326, 329, 331, -555, 335, -555, 1046,
- 920, -555, -555, -555, 468, 337, 132, 920, 470, 472,
- -555, 920, 920, -555, -555
+ -542, 13, 162, 567, -542, -542, -542, -542, -542, -542,
+ -542, -542, -542, -542, 83, -542, 19, -542, -542, -14,
+ -542, -542, 50, -87, 87, 233, 27, -542, 123, 141,
+ 175, -542, -542, 98, -542, -542, -542, -542, 33, 40,
+ 66, 68, -542, 14, 141, 1265, 156, 156, 156, 156,
+ -542, -542, -542, -542, -542, -542, 221, -542, -542, -542,
+ -542, -542, -542, 1265, -19, 1479, -542, 204, 135, 226,
+ 227, 235, -542, -542, -542, -542, 81, -542, -542, -542,
+ -542, -542, -542, -542, -542, -542, -542, -542, -542, -542,
+ 256, 257, 4, 15, -542, -542, 108, -542, -542, 12,
+ -542, -542, -542, -542, 1306, 1306, 1306, 1326, 175, -542,
+ 98, -542, -542, -542, -542, 1306, -542, 205, 1367, 116,
+ 479, 175, -542, -542, -542, -542, -542, -542, -542, -542,
+ -542, -542, -542, -542, -542, -542, -542, -542, -542, -542,
+ -542, -542, -542, -542, -542, -542, -542, -542, -542, 355,
+ 429, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306,
+ 1306, 1306, 1306, -542, -542, -542, -542, -542, -542, -542,
+ -542, -542, -542, -542, -542, -542, 1306, 1306, 1306, 1306,
+ 1306, -542, -542, 175, -542, 86, -542, -542, -542, -542,
+ -542, -542, -542, -542, -13, -542, 110, 111, 75, -542,
+ -542, 12, -81, 1046, -542, -542, -542, -542, 174, 208,
+ 266, 210, 267, 212, 268, 230, 277, 275, 278, 246,
+ 280, 279, 566, -542, -542, 136, 766, -542, -542, 81,
+ -542, 766, 766, -542, -542, -542, -542, -542, -542, -542,
+ -542, -542, -542, 766, 1265, -542, -542, -542, -542, -542,
+ -542, -542, -542, -542, -542, 1306, -542, -542, -542, -542,
+ -542, -542, -542, -542, -542, -542, -542, -542, -542, -542,
+ -542, -542, 1306, 137, 145, -542, 766, 132, 146, 147,
+ 148, 149, 151, 152, 158, 160, 766, 766, 766, 161,
+ 281, 1265, 1306, 1306, 291, -542, 1306, 1306, 155, -27,
+ 1306, -542, -542, 165, 163, 176, 176, 176, -542, -542,
+ -542, -542, -542, -542, -542, -542, -542, -542, 355, 429,
+ 172, 177, 178, 179, 182, 1087, 1387, 529, 311, 184,
+ 185, 186, 188, 189, -542, -542, 176, 1107, -542, -542,
+ -542, -542, -542, -542, -542, -542, 282, 1326, -542, -542,
+ -542, -542, 193, -542, 194, 766, 766, 766, 7, -542,
+ 20, -542, 195, 766, 192, 1306, 1306, 1306, 1306, 1306,
+ 1306, 1306, 200, 201, 206, 1306, 1306, 766, 766, 207,
+ -542, -59, -149, -542, 196, 12, 1148, -542, 44, -542,
+ -542, -542, 203, 211, 1326, 1326, 1326, 1326, 1326, -542,
+ -542, -8, 741, -82, -542, 10, -542, 1326, 1326, 1326,
+ 1326, 1326, -542, -542, 98, -542, 214, 209, -542, 337,
+ -34, 342, 348, 215, 218, 219, 766, 371, 766, 1306,
+ -542, 223, 766, 224, -542, -542, 225, 234, -542, -542,
+ 766, 766, 766, -542, -542, 228, -542, 1306, -542, -542,
+ -542, -542, 362, 375, -542, 176, 1326, 1326, 195, 236,
+ 237, 240, 243, 1326, -542, 238, -25, 11, -542, -542,
+ 244, 245, 247, 250, 352, -542, -542, 1205, 370, 252,
+ -542, 766, 766, 1306, 766, 766, 258, -542, 258, -542,
+ 259, 766, 264, 1306, 1306, 1306, -542, -542, -542, 1306,
+ 766, -542, -542, -542, 270, 271, 263, 1326, 1326, 1326,
+ 1326, -542, -542, 260, 1326, 1326, 1326, 1326, 1306, -542,
+ -542, -542, 368, 402, 274, 276, 259, 287, -542, -542,
+ 374, -542, -542, 1306, 285, 766, -542, -542, -542, 290,
+ -542, 1326, 1326, -542, 283, 295, 284, 294, -542, 296,
+ 297, 299, 302, 303, 430, -542, -542, 414, 41, 425,
+ -542, -542, 305, -542, 306, 310, 1326, -542, 1326, 1326,
+ -542, -542, -542, -542, -542, -542, 766, -542, 893, 144,
+ 448, -542, -542, -542, 314, 315, 316, -542, 331, -542,
+ 893, 766, -542, -542, -542, 464, 334, 180, 766, 481,
+ 482, -542, 766, 766, -542, -542
};
/* YYPGOTO[NTERM-NUM]. */
-static const yytype_int16 yypgoto[] =
+static const short int yypgoto[] =
{
- -555, -555, -555, 398, 399, 400, 198, 200, 402, 403,
- -128, -127, -525, -555, 476, 493, -111, -555, -276, 97,
- -555, -298, -555, -47, -555, -37, -555, -60, -62, -555,
- -99, 300, -308, 61, -555, -555, -555, -555, -555, -555,
- -555, 469, -555, -555, -555, -555, 8, -555, 102, -555,
- -555, 411, -555, -555, -555, -555, -555, 523, -555, -555,
- -555, -554, -11, 112, -124, -555, 508, -555, -68, -555,
- -555, -555, -555, 93, 28, -555, -555, 71, -555, -555
+ -542, -542, -542, 435, 439, 441, 191, 197, 442, 445,
+ -119, -116, -541, -542, 478, 489, -107, -542, -267, 37,
+ -542, -238, -542, -60, -542, -45, -542, -74, -51, -542,
+ -101, 300, -252, 134, -542, -542, -542, -542, -542, -542,
+ -542, 473, -542, -542, -542, -542, 8, -542, 46, -542,
+ -542, 410, -542, -542, -542, -542, -542, -542, 518, -542,
+ -542, -542, -528, 142, -90, -113, -542, 505, -542, -72,
+ -542, -542, -542, -542, 97, 28, -542, -542, 70, -542,
+ -542
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
number is the opposite. If zero, do what YYDEFACT says.
If YYTABLE_NINF, syntax error. */
#define YYTABLE_NINF -180
-static const yytype_int16 yytable[] =
+static const short int yytable[] =
{
- 88, 236, 250, 251, 239, 115, 105, 372, 394, 395,
- 93, 26, 223, 433, 39, 435, 88, 455, 407, 409,
- 253, 42, 240, 587, 119, 242, 243, 244, 245, 246,
- 247, 248, 249, 577, 241, 595, 106, 107, 416, 284,
- 456, 229, 288, 289, 290, 291, 292, 293, 294, 26,
- 427, 230, -112, 589, 228, 434, 119, 434, -179, 466,
- 233, 123, 119, 308, 309, 298, 299, 471, 46, 47,
- 48, 205, 206, 207, 242, 243, 244, 245, 246, 247,
- 248, 249, 300, 5, 466, 53, 229, 49, 235, 6,
- 418, 235, 483, 123, 121, 59, 340, 60, 470, 7,
- 8, 9, 10, 11, 12, 13, 7, 8, 9, 10,
- 54, 12, 55, 466, 417, 56, 109, 110, 111, 123,
- 14, 198, 199, 472, 282, 283, 235, 285, 286, 235,
- 235, 235, 235, 235, 235, 235, 4, -139, 303, -112,
- 466, 301, 302, 94, 304, 466, 467, -139, 123, 295,
- 296, 297, 235, 235, 43, 516, 20, 29, 21, 51,
- 506, -72, -72, 116, 39, 337, 338, -71, -71, 341,
- -70, -70, -69, -69, 576, 52, 65, 66, 390, 117,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 58, 79, 20, 343, 21, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 366, 310, 311, 133,
- 134, 335, 62, 532, 64, 533, 88, 102, -113, 80,
- 98, 99, 100, 588, 361, 101, 113, 367, 114, 361,
- 361, 242, 243, 244, 245, 246, 247, 248, 249, 122,
- 197, 361, 201, 202, 368, 30, 31, 32, 33, 34,
- 35, 36, 440, 388, 442, 443, 444, 203, 225, 226,
- 231, 237, 450, 88, 389, 235, -76, -82, -75, 20,
- -74, 21, -73, 347, 361, 313, -79, -80, 6, -82,
- -82, 314, 339, 348, 361, 361, 361, 341, -82, -82,
- -82, -82, -82, -82, -82, 369, 371, -82, 22, 461,
- 462, 463, 464, 465, 374, 23, 375, 376, 377, 24,
- 378, 387, 473, 474, 475, 476, 477, 391, 379, 380,
- 410, 381, 419, 382, 425, 81, 386, 392, 82, 422,
- 398, 83, 399, 84, 118, 400, 439, 401, 402, 235,
- 441, 235, 235, 235, 445, 446, 469, 411, 412, 235,
- 451, 420, 363, 364, 413, 361, 361, 361, 414, 428,
- 507, 508, 415, 361, 365, 423, 429, 514, 436, 459,
- 447, 448, 537, 538, 539, 460, 449, 361, 361, 454,
- 455, 482, 484, 485, 486, 343, 490, 487, 488, 494,
- 496, 504, 497, 498, 505, 510, 502, 373, 511, 235,
- 521, 512, 513, 517, 265, 266, 518, 383, 384, 385,
- 560, 545, 546, 547, 548, 515, 519, 503, 550, 551,
- 552, 553, 361, 522, 361, 520, 524, 555, 361, 531,
- 250, 251, 534, 536, 542, 543, 361, 361, 361, 544,
- 556, 557, 558, 564, 565, 549, 559, 563, 434, 235,
- 250, 251, 566, 561, 567, 568, 569, 570, 575, 235,
- 235, 235, 571, 572, 573, 235, 574, 583, 579, 584,
- 585, 580, 581, 361, 361, 582, 361, 361, 430, 431,
- 432, 590, 591, 361, 554, 592, 438, 593, 594, 597,
- 598, 601, 361, 602, 186, 187, 188, 235, 189, 190,
- 452, 453, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 396, 96, 57, 397,
- 480, 104, 334, 224, 479, 361, 27, 45, 599, 493,
- 540, 0, 509, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 489, 0, 491, 0, 0,
- 0, 495, 0, 0, 0, 0, 0, 0, 0, 499,
- 500, 501, 0, 0, 361, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 361,
- 0, 0, 0, 0, 65, 66, 361, 0, 0, 0,
- 361, 361, 0, 0, 0, 0, 525, 526, 0, 529,
- 530, 20, 0, 21, 0, 315, 535, 0, 0, 0,
- 0, 0, 0, 0, 0, 541, 0, 316, 317, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 562, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 318, 319, 0, 0, 0, 586, 0, 320,
- 0, 321, 0, 322, 323, 324, 0, 0, 0, 0,
- 0, 0, 596, 0, 0, 0, 0, 0, 0, 600,
- 0, 0, 0, 603, 604, 0, 0, 0, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 0, 0, 0, 0, 0, 325, 0, 0, 326,
- 0, 327, 65, 66, 328, 117, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 0, 79, 20,
- 0, 21, 65, 66, 0, 117, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 0, 79, 20,
- 0, 21, 0, 65, 66, 80, 117, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 217, 218, 0, 79,
- 20, 0, 21, 0, 0, 80, 0, 0, 65, 66,
- 0, 117, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 0, 79, 20, 80, 21, 0, 0,
+ 97, 241, 227, 110, 242, 230, 223, 361, 197, 31,
+ 111, 26, 449, 4, 244, 204, 34, 578, 97, 201,
+ 74, 75, 426, 199, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 428, 88, 20, 590, 21,
+ 275, 26, 31, 279, 280, 281, 282, 283, 284, 285,
+ 588, 233, 234, 235, 236, 237, 238, 239, 240, 205,
+ 206, 207, 596, 89, 427, 43, 289, 290, 390, 391,
+ 226, 463, 300, 226, 403, 405, 291, 427, 452, 468,
+ 74, 75, 301, 199, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 420, 88, 20, 412, 21,
+ 448, 453, 38, 39, 40, 204, 273, 274, 226, 276,
+ 277, 226, 226, 226, 226, 226, 226, 226, 225, 463,
+ 20, 41, 21, 89, 201, 231, 300, 480, -139, 201,
+ -112, 286, 287, 288, 226, 226, 384, 232, -139, 204,
+ 294, 352, 353, 112, 29, 463, 295, 299, 44, 35,
+ 467, 464, 303, 354, 233, 234, 235, 236, 237, 238,
+ 239, 240, -179, 463, 463, 54, 198, -112, 51, 90,
+ 52, 71, 91, 469, 513, 92, 204, 93, 200, 50,
+ 379, 105, 106, 107, 355, 67, 362, 5, 102, 103,
+ 188, 189, 68, 6, 292, 293, 372, 373, 374, 97,
+ 577, 308, 309, 7, 8, 9, 10, 11, 12, 13,
+ 356, -72, -72, -71, -71, -70, -70, 503, 69, 531,
+ 70, 532, 381, 382, 14, 109, 385, 357, 187, 90,
+ 191, 377, 91, -69, -69, 92, -113, 93, 298, 56,
+ 57, 58, 59, 60, 61, 62, 97, 378, 226, 310,
+ 311, 192, 433, 45, 435, 436, 437, 123, 124, 193,
+ 195, 196, 443, 203, 228, 423, 424, 425, 296, 297,
+ -76, -75, -74, 431, 7, 8, 9, 10, 46, 12,
+ 47, -73, -79, 48, 313, -80, 314, 445, 446, 363,
+ 358, 337, 414, 458, 459, 460, 461, 462, 360, 364,
+ 365, 366, 367, 589, 368, 369, 470, 471, 472, 473,
+ 474, 370, 385, 371, 375, 380, 383, 376, 386, 387,
+ 226, 434, 226, 226, 226, 438, 439, 394, 466, 388,
+ 226, 444, 395, 396, 397, 406, 486, 398, 488, 407,
+ 408, 409, 492, 410, 411, 418, 421, 422, 429, 432,
+ 496, 497, 498, 440, 441, 504, 505, 450, 456, 442,
+ 447, 479, 511, 481, 335, 478, 457, 477, 350, 482,
+ 483, 484, 485, 350, 350, 487, 491, 493, 494, 502,
+ 536, 537, 538, 499, 226, 350, 501, 495, 518, 507,
+ 508, 524, 525, 509, 528, 529, 510, 514, 515, 512,
+ 516, 534, 500, 517, 452, 523, 544, 545, 546, 547,
+ 540, 530, 533, 549, 550, 551, 552, 535, 350, 543,
+ 560, 548, 475, 541, 542, 554, 556, 557, 350, 350,
+ 350, 427, 414, 558, 575, 576, 566, 568, 226, 241,
+ 564, 565, 242, 559, 561, 562, 563, 569, 226, 226,
+ 226, 567, 570, 571, 226, 572, 256, 257, 573, 574,
+ 241, 580, 582, 242, 581, 584, 583, 585, 586, 591,
+ 592, 593, 594, 553, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 595, 598, 587, 599, 226, 233,
+ 234, 235, 236, 237, 238, 239, 240, 350, 350, 350,
+ 176, 597, 602, 603, 177, 350, 178, 179, 601, 392,
+ 180, 65, 604, 605, 49, 521, 393, 73, 224, 350,
+ 350, 27, 334, 520, 37, 600, 490, 539, 506, 0,
+ 0, 0, 0, 0, 74, 75, 0, 199, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 0,
+ 88, 20, 0, 21, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 350, 0,
+ 350, 74, 75, 0, 350, 0, 0, 89, 0, 0,
+ 0, 0, 350, 350, 350, 0, 0, -82, 20, 20,
+ 21, 21, 315, 0, 0, 0, 0, 0, 6, -82,
+ -82, 0, 0, 0, 316, 317, 0, 0, -82, -82,
+ -82, -82, -82, -82, -82, 0, 0, -82, 22, 0,
+ 0, 0, 0, 350, 350, 23, 350, 350, 0, 24,
+ 0, 0, 0, 350, 0, 0, 0, 0, 0, 0,
+ 0, 0, 350, 0, 0, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 318,
+ 319, 0, 0, 0, 0, 0, 320, 350, 321, 0,
+ 322, 323, 324, 90, 0, 0, 91, 0, 0, 92,
+ 0, 93, 404, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 350, 0,
+ 0, 0, 0, 325, 0, 0, 326, 0, 327, 0,
+ 0, 328, 0, 350, 0, 0, 0, 0, 0, 0,
+ 350, 0, 0, 0, 350, 350, 74, 75, 0, 199,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 0, 88, 20, 0, 21, 0, 0, 0, 338,
+ 339, 74, 75, 340, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 20, 89,
+ 21, 0, 341, 342, 343, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 344, 345, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 232, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 346, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 318,
+ 319, 0, 0, 0, 0, 0, 320, 0, 321, 0,
+ 322, 323, 324, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 90, 338, 339, 91, 0,
+ 340, 92, 0, 93, 465, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 0, 341,
+ 342, 343, 0, 0, 0, 0, 347, 0, 0, 0,
+ 0, 344, 345, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 346, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 81, 0, 0, 82, 0, 0, 83, 0, 84,
- 227, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 81, 0, 0, 82, 0, 0, 83, 0, 84,
- 408, 0, 0, 349, 350, 65, 66, 351, 0, 0,
- 0, 0, 81, 0, 0, 82, 0, 0, 83, 0,
- 84, 468, 20, 0, 21, 0, 352, 353, 354, 0,
- 0, 0, 0, 0, 0, 0, 0, 81, 355, 356,
- 82, 0, 0, 83, 0, 84, 0, 0, 0, 0,
+ 0, 0, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 318, 319, 0, 0,
+ 0, 0, 0, 320, 0, 321, 0, 322, 323, 324,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 357, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 318, 319, 0, 0, 0, 0, 0,
- 320, 0, 321, 0, 322, 323, 324, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 349,
- 350, 0, 0, 351, 0, 0, 0, 0, 0, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 352, 353, 354, 0, 0, 0, 0, 0,
- 358, 0, 0, 0, 355, 356, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 357, 0, 0,
+ 0, 0, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 0, 0, 0, 0, 0,
+ 0, 74, 75, 347, 199, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 0, 88, 20, 0,
+ 21, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 302, 0, 0, 0, 0, 0, 0,
+ 0, 0, 74, 75, 89, 199, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 0, 88, 20,
+ 0, 21, 74, 75, 0, 199, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 0, 88, 20,
+ 0, 21, 0, 0, 0, 89, 0, 0, 0, 0,
+ 0, 0, 0, 0, 413, 0, 0, 0, 0, 0,
+ 0, 0, 0, 74, 75, 89, 199, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 0, 88,
+ 20, 0, 21, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 451, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 89, 0, 0, 0,
+ 90, 0, 0, 91, 0, 0, 92, 0, 93, 0,
+ 74, 75, 0, 199, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 0, 88, 20, 0, 21,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 318,
- 319, 0, 0, 0, 0, 0, 320, 0, 321, 0,
- 322, 323, 324, 0, 0, 0, 0, 0, 0, 0,
+ 0, 90, 519, 0, 91, 0, 399, 92, 0, 93,
+ 0, 0, 0, 89, 0, 0, 0, 0, 0, 0,
+ 0, 90, 0, 0, 91, 0, 0, 92, 0, 93,
+ 74, 75, 0, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 0, 88, 20, 0, 21,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 0, 0,
- 0, 0, 0, 0, 65, 66, 358, 117, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 0,
- 79, 20, 0, 21, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 342, 0, 0, 0,
- 0, 0, 0, 0, 0, 65, 66, 80, 117, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 0, 79, 20, 0, 21, 65, 66, 0, 117, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 0, 79, 20, 0, 21, 0, 0, 0, 80, 0,
- 0, 0, 0, 0, 0, 0, 0, 424, 0, 0,
- 0, 0, 0, 0, 0, 0, 65, 66, 80, 117,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 0, 79, 20, 0, 21, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 478, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
- 0, 0, 0, 81, 0, 0, 82, 0, 0, 83,
- 0, 84, 65, 66, 0, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 0, 79, 20,
- 0, 21, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 81, 0, 0, 82, 0, 403,
- 83, 0, 84, 0, 0, 80, 0, 0, 0, 0,
- 0, 0, 0, 0, 81, 0, 0, 82, 0, 0,
- 83, 0, 84, 65, 66, 0, 117, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 0, 79,
- 20, 0, 21, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 81, 0, 0, 82, 0,
- 0, 83, 0, 84, 65, 66, 80, 117, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 0,
- 79, 20, 0, 21, 65, 66, 0, 238, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 0,
- 79, 20, 0, 21, 0, 0, 0, 80, 0, 0,
- 0, 81, 0, 0, 82, 0, 0, 83, 0, 84,
- 0, 0, 0, 0, 0, 65, 66, 80, 117, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 0, 79, 20, 0, 21, 0, 0, 0, 0, 0,
+ 0, 0, 90, 0, 0, 91, 0, 0, 92, 0,
+ 93, 74, 75, 89, 199, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 0, 88, 20, 0,
+ 21, 74, 75, 0, 199, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 0, 88, 20, 0,
+ 21, 0, 0, 0, 89, 0, 0, 0, 0, 90,
+ 0, 0, 91, 0, 0, 92, 0, 93, 0, 0,
+ 0, 0, 74, 75, 89, 229, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 0, 88, 20,
+ 0, 21, 74, 75, 0, 199, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 0, 88, 20,
+ 0, 21, 0, 0, 0, 89, 0, 0, 0, 90,
+ 0, 0, 91, 0, 0, 92, 0, 93, 0, 0,
+ 0, 0, 0, 0, 0, 89, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
- 0, 0, 81, 0, 0, 82, 0, 0, 83, 0,
- 84, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 90, 0, 0, 91, 0, 0, 92, 0, 93, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 81, 0, 0, 82, 0, 0, 83,
- 0, 84, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 81, 0, 0, 82, 0, 0, 83,
- 0, 84, 0, 0, 0, 0, 124, 0, 0, 0,
+ 90, 0, 0, 91, 0, 0, 92, 0, 93, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 125, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 126, 127, 0, 0, 81, 0, 0, 82, 0, 0,
- 83, 0, 406, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 0,
- 0, 164, 165, 166, 167, 168, 169, 170, 171, 172,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 114, 0, 0, 0, 0, 0,
+ 0, 90, 0, 0, 91, 0, 0, 92, 115, 93,
+ 0, 0, 0, 0, 0, 0, 0, 0, 116, 117,
+ 0, 90, 0, 0, 91, 0, 0, 92, 0, 402,
+ 0, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 0, 0, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185
+ 0, 0, 0, 0, 0, 0, 0, 0, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175
};
-static const yytype_int16 yycheck[] =
+static const short int yycheck[] =
{
- 37, 125, 130, 130, 128, 4, 53, 283, 306, 307,
- 29, 3, 111, 15, 23, 15, 53, 34, 326, 327,
- 131, 30, 9, 577, 84, 10, 11, 12, 13, 14,
- 15, 16, 17, 558, 21, 589, 32, 33, 336, 163,
- 57, 153, 166, 167, 168, 169, 170, 171, 172, 41,
- 358, 163, 155, 578, 116, 57, 116, 57, 0, 153,
- 122, 164, 122, 27, 28, 189, 190, 161, 52, 53,
- 54, 108, 109, 110, 10, 11, 12, 13, 14, 15,
- 16, 17, 193, 25, 153, 20, 153, 71, 125, 31,
- 161, 128, 161, 164, 86, 45, 163, 47, 406, 41,
- 42, 43, 44, 45, 46, 47, 41, 42, 43, 44,
- 45, 46, 47, 153, 159, 50, 55, 56, 57, 164,
- 62, 55, 56, 163, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 0, 153, 153, 155,
- 153, 108, 109, 162, 159, 153, 159, 163, 164, 186,
- 187, 188, 189, 190, 163, 163, 22, 61, 24, 152,
- 458, 3, 4, 162, 23, 225, 226, 3, 4, 229,
- 3, 4, 3, 4, 159, 61, 5, 6, 302, 8,
+ 45, 120, 115, 63, 120, 118, 107, 274, 4, 23,
+ 29, 3, 161, 0, 121, 164, 30, 558, 63, 93,
+ 5, 6, 15, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 15, 21, 22, 579, 24,
+ 153, 33, 23, 156, 157, 158, 159, 160, 161, 162,
+ 578, 10, 11, 12, 13, 14, 15, 16, 17, 104,
+ 105, 106, 590, 48, 57, 152, 179, 180, 306, 307,
+ 115, 153, 153, 118, 326, 327, 183, 57, 34, 161,
+ 5, 6, 163, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 347, 21, 22, 336, 24,
+ 159, 57, 52, 53, 54, 164, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 110, 153,
+ 22, 71, 24, 48, 198, 9, 153, 161, 153, 203,
+ 155, 176, 177, 178, 179, 180, 163, 21, 163, 164,
+ 153, 231, 232, 162, 61, 153, 159, 198, 61, 163,
+ 402, 159, 203, 243, 10, 11, 12, 13, 14, 15,
+ 16, 17, 0, 153, 153, 24, 162, 155, 45, 154,
+ 47, 157, 157, 163, 163, 160, 164, 162, 163, 152,
+ 293, 47, 48, 49, 244, 152, 276, 25, 32, 33,
+ 55, 56, 152, 31, 108, 109, 286, 287, 288, 244,
+ 159, 27, 28, 41, 42, 43, 44, 45, 46, 47,
+ 255, 3, 4, 3, 4, 3, 4, 455, 152, 486,
+ 152, 488, 296, 297, 62, 4, 300, 272, 24, 154,
+ 4, 291, 157, 3, 4, 160, 155, 162, 163, 64,
+ 65, 66, 67, 68, 69, 70, 291, 292, 293, 3,
+ 4, 24, 365, 20, 367, 368, 369, 77, 78, 24,
+ 4, 4, 375, 155, 59, 355, 356, 357, 158, 158,
+ 4, 4, 4, 363, 41, 42, 43, 44, 45, 46,
+ 47, 4, 7, 50, 4, 7, 7, 377, 378, 157,
+ 153, 155, 337, 394, 395, 396, 397, 398, 153, 153,
+ 153, 153, 153, 159, 153, 153, 407, 408, 409, 410,
+ 411, 153, 386, 153, 153, 24, 161, 36, 153, 156,
+ 365, 366, 367, 368, 369, 370, 371, 155, 402, 153,
+ 375, 376, 155, 155, 155, 24, 426, 155, 428, 155,
+ 155, 155, 432, 155, 155, 63, 153, 153, 153, 157,
+ 440, 441, 442, 153, 153, 456, 457, 161, 155, 153,
+ 153, 24, 463, 21, 222, 156, 155, 153, 226, 21,
+ 155, 153, 153, 231, 232, 4, 153, 153, 153, 4,
+ 493, 494, 495, 155, 429, 243, 24, 153, 36, 153,
+ 153, 481, 482, 153, 484, 485, 153, 153, 153, 161,
+ 153, 491, 447, 153, 34, 153, 507, 508, 509, 510,
+ 500, 153, 153, 514, 515, 516, 517, 153, 276, 156,
+ 533, 161, 414, 153, 153, 57, 24, 153, 286, 287,
+ 288, 57, 477, 157, 4, 21, 153, 153, 483, 558,
+ 541, 542, 558, 156, 159, 535, 156, 153, 493, 494,
+ 495, 156, 156, 156, 499, 156, 27, 28, 156, 156,
+ 579, 36, 156, 579, 159, 566, 156, 568, 569, 21,
+ 156, 156, 156, 518, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 153, 21, 576, 153, 533, 10,
+ 11, 12, 13, 14, 15, 16, 17, 355, 356, 357,
+ 65, 591, 21, 21, 65, 363, 65, 65, 598, 318,
+ 65, 33, 602, 603, 25, 478, 319, 44, 108, 377,
+ 378, 3, 222, 477, 19, 597, 429, 499, 458, -1,
+ -1, -1, -1, -1, 5, 6, -1, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, -1,
+ 21, 22, -1, 24, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 426, -1,
+ 428, 5, 6, -1, 432, -1, -1, 48, -1, -1,
+ -1, -1, 440, 441, 442, -1, -1, 20, 22, 22,
+ 24, 24, 26, -1, -1, -1, -1, -1, 31, 32,
+ 33, -1, -1, -1, 38, 39, -1, -1, 41, 42,
+ 43, 44, 45, 46, 47, -1, -1, 50, 51, -1,
+ -1, -1, -1, 481, 482, 58, 484, 485, -1, 62,
+ -1, -1, -1, 491, -1, -1, -1, -1, -1, -1,
+ -1, -1, 500, -1, -1, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, -1, -1, -1, -1, -1, 110, 535, 112, -1,
+ 114, 115, 116, 154, -1, -1, 157, -1, -1, 160,
+ -1, 162, 163, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 576, -1,
+ -1, -1, -1, 157, -1, -1, 160, -1, 162, -1,
+ -1, 165, -1, 591, -1, -1, -1, -1, -1, -1,
+ 598, -1, -1, -1, 602, 603, 5, 6, -1, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 152, 21, 22, 231, 24, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 253, 3, 4, 77,
- 78, 222, 24, 489, 4, 491, 253, 157, 155, 48,
- 152, 152, 152, 159, 235, 152, 4, 264, 4, 240,
- 241, 10, 11, 12, 13, 14, 15, 16, 17, 155,
- 24, 252, 4, 24, 281, 64, 65, 66, 67, 68,
- 69, 70, 376, 300, 378, 379, 380, 24, 158, 158,
- 155, 59, 386, 300, 301, 302, 4, 20, 4, 22,
- 4, 24, 4, 153, 285, 4, 7, 7, 31, 32,
- 33, 7, 161, 156, 295, 296, 297, 347, 41, 42,
- 43, 44, 45, 46, 47, 153, 153, 50, 51, 398,
- 399, 400, 401, 402, 157, 58, 153, 153, 153, 62,
- 153, 36, 411, 412, 413, 414, 415, 24, 153, 153,
- 24, 153, 161, 153, 63, 154, 153, 153, 157, 153,
- 155, 160, 155, 162, 163, 155, 157, 155, 155, 376,
- 377, 378, 379, 380, 381, 382, 406, 155, 155, 386,
- 387, 343, 240, 241, 155, 366, 367, 368, 155, 153,
- 459, 460, 155, 374, 252, 156, 153, 466, 153, 155,
- 153, 153, 496, 497, 498, 155, 153, 388, 389, 153,
- 34, 24, 21, 21, 155, 422, 4, 153, 153, 153,
- 153, 24, 153, 153, 4, 153, 155, 285, 153, 436,
- 36, 153, 153, 153, 27, 28, 153, 295, 296, 297,
- 534, 510, 511, 512, 513, 161, 153, 454, 517, 518,
- 519, 520, 433, 57, 435, 153, 153, 4, 439, 153,
- 558, 558, 153, 153, 153, 153, 447, 448, 449, 156,
- 24, 153, 157, 542, 543, 161, 156, 156, 57, 486,
- 578, 578, 153, 159, 156, 153, 153, 156, 21, 496,
- 497, 498, 156, 156, 156, 502, 156, 566, 36, 568,
- 569, 159, 156, 484, 485, 156, 487, 488, 366, 367,
- 368, 21, 156, 494, 521, 156, 374, 156, 153, 21,
- 153, 21, 503, 21, 96, 96, 96, 534, 96, 96,
- 388, 389, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 138, 318, 41, 25, 319,
- 423, 52, 222, 112, 422, 536, 3, 19, 596, 436,
- 502, -1, 461, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 433, -1, 435, -1, -1,
- -1, 439, -1, -1, -1, -1, -1, -1, -1, 447,
- 448, 449, -1, -1, 575, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 590,
- -1, -1, -1, -1, 5, 6, 597, -1, -1, -1,
- 601, 602, -1, -1, -1, -1, 484, 485, -1, 487,
- 488, 22, -1, 24, -1, 26, 494, -1, -1, -1,
- -1, -1, -1, -1, -1, 503, -1, 38, 39, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 536, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, -1, -1, -1, 575, -1, 110,
- -1, 112, -1, 114, 115, 116, -1, -1, -1, -1,
- -1, -1, 590, -1, -1, -1, -1, -1, -1, 597,
- -1, -1, -1, 601, 602, -1, -1, -1, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, -1, -1, -1, -1, -1, 157, -1, -1, 160,
- -1, 162, 5, 6, 165, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, -1, 21, 22,
- -1, 24, 5, 6, -1, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, -1, 21, 22,
- -1, 24, -1, 5, 6, 48, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, -1, 21,
- 22, -1, 24, -1, -1, 48, -1, -1, 5, 6,
- -1, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, -1, 21, 22, 48, 24, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 37, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 48, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 154, -1, -1, 157, -1, -1, 160, -1, 162,
- 163, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 154, -1, -1, 157, -1, -1, 160, -1, 162,
- 163, -1, -1, 3, 4, 5, 6, 7, -1, -1,
- -1, -1, 154, -1, -1, 157, -1, -1, 160, -1,
- 162, 163, 22, -1, 24, -1, 26, 27, 28, -1,
- -1, -1, -1, -1, -1, -1, -1, 154, 38, 39,
- 157, -1, -1, 160, -1, 162, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 61, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, -1, -1, -1, -1, -1,
- 110, -1, 112, -1, 114, 115, 116, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
- 4, -1, -1, 7, -1, -1, -1, -1, -1, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 26, 27, 28, -1, -1, -1, -1, -1,
- 160, -1, -1, -1, 38, 39, -1, -1, -1, -1,
+ 19, -1, 21, 22, -1, 24, -1, -1, -1, 3,
+ 4, 5, 6, 7, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 22, 48,
+ 24, -1, 26, 27, 28, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 38, 39, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 61, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
104, -1, -1, -1, -1, -1, 110, -1, 112, -1,
114, 115, 116, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 154, 3, 4, 157, -1,
+ 7, 160, -1, 162, 163, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, -1, 26,
+ 27, 28, -1, -1, -1, -1, 160, -1, -1, -1,
+ -1, 38, 39, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, -1, -1,
- -1, -1, -1, -1, 5, 6, 160, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, -1,
- 21, 22, -1, 24, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 37, -1, -1, -1,
- -1, -1, -1, -1, -1, 5, 6, 48, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- -1, 21, 22, -1, 24, 5, 6, -1, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- -1, 21, 22, -1, 24, -1, -1, -1, 48, -1,
- -1, -1, -1, -1, -1, -1, -1, 37, -1, -1,
- -1, -1, -1, -1, -1, -1, 5, 6, 48, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, -1, 21, 22, -1, 24, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 37, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 48,
- -1, -1, -1, 154, -1, -1, 157, -1, -1, 160,
- -1, 162, 5, 6, -1, 8, 9, 10, 11, 12,
+ -1, -1, -1, -1, 61, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, -1, -1,
+ -1, -1, -1, 110, -1, 112, -1, 114, 115, 116,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, -1, -1, -1, -1, -1,
+ -1, 5, 6, 160, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, -1, 21, 22, -1,
+ 24, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 37, -1, -1, -1, -1, -1, -1,
+ -1, -1, 5, 6, 48, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, -1, 21, 22,
+ -1, 24, 5, 6, -1, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, -1, 21, 22,
- -1, 24, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 154, -1, -1, 157, -1, 159,
- 160, -1, 162, -1, -1, 48, -1, -1, -1, -1,
- -1, -1, -1, -1, 154, -1, -1, 157, -1, -1,
- 160, -1, 162, 5, 6, -1, 8, 9, 10, 11,
+ -1, 24, -1, -1, -1, 48, -1, -1, -1, -1,
+ -1, -1, -1, -1, 37, -1, -1, -1, -1, -1,
+ -1, -1, -1, 5, 6, 48, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, -1, 21,
22, -1, 24, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 154, -1, -1, 157, -1,
- -1, 160, -1, 162, 5, 6, 48, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, -1,
- 21, 22, -1, 24, 5, 6, -1, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, -1,
- 21, 22, -1, 24, -1, -1, -1, 48, -1, -1,
+ -1, -1, -1, -1, -1, 37, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 48, -1, -1, -1,
+ 154, -1, -1, 157, -1, -1, 160, -1, 162, -1,
+ 5, 6, -1, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, -1, 21, 22, -1, 24,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 154, 37, -1, 157, -1, 159, 160, -1, 162,
+ -1, -1, -1, 48, -1, -1, -1, -1, -1, -1,
-1, 154, -1, -1, 157, -1, -1, 160, -1, 162,
- -1, -1, -1, -1, -1, 5, 6, 48, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- -1, 21, 22, -1, 24, -1, -1, -1, -1, -1,
+ 5, 6, -1, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, -1, 21, 22, -1, 24,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 48, -1,
-1, -1, 154, -1, -1, 157, -1, -1, 160, -1,
- 162, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 162, 5, 6, 48, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, -1, 21, 22, -1,
+ 24, 5, 6, -1, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, -1, 21, 22, -1,
+ 24, -1, -1, -1, 48, -1, -1, -1, -1, 154,
+ -1, -1, 157, -1, -1, 160, -1, 162, -1, -1,
+ -1, -1, 5, 6, 48, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, -1, 21, 22,
+ -1, 24, 5, 6, -1, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, -1, 21, 22,
+ -1, 24, -1, -1, -1, 48, -1, -1, -1, 154,
+ -1, -1, 157, -1, -1, 160, -1, 162, -1, -1,
+ -1, -1, -1, -1, -1, 48, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 154, -1, -1, 157, -1, -1, 160, -1, 162, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 154, -1, -1, 157, -1, -1, 160,
- -1, 162, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 154, -1, -1, 157, -1, -1, 160,
- -1, 162, -1, -1, -1, -1, 35, -1, -1, -1,
+ 154, -1, -1, 157, -1, -1, 160, -1, 162, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 49, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 59, 60, -1, -1, 154, -1, -1, 157, -1, -1,
- 160, -1, 162, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, -1,
- -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 35, -1, -1, -1, -1, -1,
+ -1, 154, -1, -1, 157, -1, -1, 160, 49, 162,
+ -1, -1, -1, -1, -1, -1, -1, -1, 59, 60,
+ -1, 154, -1, -1, 157, -1, -1, 160, -1, 162,
+ -1, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, -1, -1, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151
+ -1, -1, -1, -1, -1, -1, -1, -1, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
-static const yytype_uint8 yystos[] =
+static const unsigned char yystos[] =
{
0, 200, 201, 202, 0, 25, 31, 41, 42, 43,
- 44, 45, 46, 47, 62, 181, 219, 221, 223, 231,
- 22, 24, 51, 58, 62, 180, 212, 223, 224, 61,
- 64, 65, 66, 67, 68, 69, 70, 182, 217, 23,
- 232, 233, 30, 163, 220, 232, 52, 53, 54, 71,
- 209, 152, 61, 20, 45, 47, 50, 181, 152, 45,
- 47, 222, 24, 207, 4, 5, 6, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 21,
- 48, 154, 157, 160, 162, 167, 189, 190, 191, 192,
- 193, 212, 228, 29, 162, 218, 180, 237, 152, 152,
- 152, 152, 157, 210, 207, 189, 32, 33, 199, 199,
- 199, 199, 225, 4, 4, 4, 162, 8, 163, 193,
- 194, 212, 155, 164, 35, 49, 59, 60, 72, 73,
+ 44, 45, 46, 47, 62, 181, 219, 222, 224, 232,
+ 22, 24, 51, 58, 62, 180, 212, 224, 225, 61,
+ 220, 23, 233, 234, 30, 163, 221, 233, 52, 53,
+ 54, 71, 209, 152, 61, 20, 45, 47, 50, 181,
+ 152, 45, 47, 223, 24, 207, 64, 65, 66, 67,
+ 68, 69, 70, 182, 217, 180, 238, 152, 152, 152,
+ 152, 157, 210, 207, 5, 6, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 21, 48,
+ 154, 157, 160, 162, 167, 189, 190, 191, 192, 193,
+ 212, 229, 32, 33, 199, 199, 199, 199, 226, 4,
+ 189, 29, 162, 218, 35, 49, 59, 60, 72, 73,
74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
104, 105, 106, 107, 110, 111, 112, 113, 114, 115,
116, 117, 118, 139, 140, 141, 142, 143, 144, 145,
146, 147, 148, 149, 150, 151, 169, 170, 171, 174,
- 175, 234, 235, 241, 242, 244, 245, 24, 55, 56,
- 208, 4, 24, 24, 211, 191, 191, 191, 9, 10,
+ 175, 235, 236, 242, 243, 245, 246, 24, 55, 56,
+ 208, 4, 24, 24, 211, 4, 4, 4, 162, 8,
+ 163, 193, 194, 155, 164, 191, 191, 191, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 176,
- 177, 179, 191, 196, 217, 158, 158, 163, 194, 153,
- 163, 155, 37, 194, 195, 191, 230, 59, 8, 230,
- 9, 21, 10, 11, 12, 13, 14, 15, 16, 17,
- 176, 177, 178, 182, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 172, 27, 28, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 173, 191, 191, 230, 191, 191, 238, 230, 230,
- 230, 230, 230, 230, 230, 191, 191, 191, 230, 230,
- 182, 108, 109, 153, 159, 205, 206, 204, 27, 28,
+ 177, 179, 191, 196, 217, 212, 191, 231, 59, 8,
+ 231, 9, 21, 10, 11, 12, 13, 14, 15, 16,
+ 17, 176, 177, 178, 182, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 172, 27, 28, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 173, 191, 191, 231, 191, 191, 239, 231,
+ 231, 231, 231, 231, 231, 231, 191, 191, 191, 231,
+ 231, 182, 108, 109, 153, 159, 158, 158, 163, 194,
+ 153, 163, 37, 194, 195, 205, 206, 204, 27, 28,
3, 4, 168, 4, 7, 26, 38, 39, 103, 104,
110, 112, 114, 115, 116, 157, 160, 162, 165, 169,
- 170, 171, 174, 175, 197, 228, 203, 193, 193, 161,
- 163, 193, 37, 191, 214, 215, 216, 153, 156, 3,
- 4, 7, 26, 27, 28, 38, 39, 61, 160, 197,
- 227, 228, 229, 229, 229, 229, 189, 191, 191, 153,
- 184, 153, 184, 229, 157, 153, 153, 153, 153, 153,
- 153, 153, 153, 229, 229, 229, 153, 36, 189, 191,
- 230, 24, 153, 187, 187, 187, 172, 173, 155, 155,
- 155, 155, 155, 159, 196, 198, 162, 198, 163, 198,
- 24, 155, 155, 155, 155, 155, 187, 159, 161, 161,
- 212, 213, 153, 156, 37, 63, 226, 198, 153, 153,
- 229, 229, 229, 15, 57, 15, 153, 243, 229, 157,
- 230, 191, 230, 230, 230, 191, 191, 153, 153, 153,
- 230, 191, 229, 229, 153, 34, 57, 185, 188, 155,
- 155, 196, 196, 196, 196, 196, 153, 159, 163, 193,
- 198, 161, 163, 196, 196, 196, 196, 196, 37, 214,
- 185, 186, 24, 161, 21, 21, 155, 153, 153, 229,
- 4, 229, 230, 239, 153, 229, 153, 153, 153, 229,
- 229, 229, 155, 191, 24, 4, 187, 196, 196, 243,
- 153, 153, 153, 153, 196, 161, 163, 153, 153, 153,
- 153, 36, 57, 183, 153, 229, 229, 239, 240, 229,
- 229, 153, 184, 184, 153, 229, 153, 230, 230, 230,
- 240, 229, 153, 153, 156, 196, 196, 196, 196, 161,
- 196, 196, 196, 196, 191, 4, 24, 153, 157, 156,
- 230, 159, 229, 156, 196, 196, 153, 156, 153, 153,
- 156, 156, 156, 156, 156, 21, 159, 178, 236, 36,
- 159, 156, 156, 196, 196, 196, 229, 227, 159, 178,
- 21, 156, 156, 156, 153, 227, 229, 21, 153, 234,
- 229, 21, 21, 229, 229
+ 170, 171, 174, 175, 197, 229, 203, 155, 3, 4,
+ 7, 26, 27, 28, 38, 39, 61, 160, 197, 228,
+ 229, 230, 230, 230, 230, 189, 191, 191, 153, 184,
+ 153, 184, 230, 157, 153, 153, 153, 153, 153, 153,
+ 153, 153, 230, 230, 230, 153, 36, 189, 191, 231,
+ 24, 193, 193, 161, 163, 193, 153, 156, 153, 187,
+ 187, 187, 172, 173, 155, 155, 155, 155, 155, 159,
+ 196, 198, 162, 198, 163, 198, 24, 155, 155, 155,
+ 155, 155, 187, 37, 191, 214, 215, 216, 63, 227,
+ 198, 153, 153, 230, 230, 230, 15, 57, 15, 153,
+ 244, 230, 157, 231, 191, 231, 231, 231, 191, 191,
+ 153, 153, 153, 231, 191, 230, 230, 153, 159, 161,
+ 161, 37, 34, 57, 185, 188, 155, 155, 196, 196,
+ 196, 196, 196, 153, 159, 163, 193, 198, 161, 163,
+ 196, 196, 196, 196, 196, 212, 213, 153, 156, 24,
+ 161, 21, 21, 155, 153, 153, 230, 4, 230, 231,
+ 240, 153, 230, 153, 153, 153, 230, 230, 230, 155,
+ 191, 24, 4, 187, 196, 196, 244, 153, 153, 153,
+ 153, 196, 161, 163, 153, 153, 153, 153, 36, 37,
+ 214, 185, 186, 153, 230, 230, 240, 241, 230, 230,
+ 153, 184, 184, 153, 230, 153, 231, 231, 231, 241,
+ 230, 153, 153, 156, 196, 196, 196, 196, 161, 196,
+ 196, 196, 196, 191, 57, 183, 24, 153, 157, 156,
+ 231, 159, 230, 156, 196, 196, 153, 156, 153, 153,
+ 156, 156, 156, 156, 156, 4, 21, 159, 178, 237,
+ 36, 159, 156, 156, 196, 196, 196, 230, 228, 159,
+ 178, 21, 156, 156, 156, 153, 228, 230, 21, 153,
+ 235, 230, 21, 21, 230, 230
};
#define yyerrok (yyerrstatus = 0)
yychar = (Token); \
yylval = (Value); \
yytoken = YYTRANSLATE (yychar); \
- YYPOPSTACK (1); \
+ YYPOPSTACK; \
goto yybackup; \
} \
else \
yyerror (YY_("syntax error: cannot back up")); \
YYERROR; \
} \
-while (YYID (0))
+while (0)
#define YYTERROR 1
#ifndef YYLLOC_DEFAULT
# define YYLLOC_DEFAULT(Current, Rhs, N) \
do \
- if (YYID (N)) \
+ if (N) \
{ \
(Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
(Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
(Current).first_column = (Current).last_column = \
YYRHSLOC (Rhs, 0).last_column; \
} \
- while (YYID (0))
+ while (0)
#endif
# if YYLTYPE_IS_TRIVIAL
# define YY_LOCATION_PRINT(File, Loc) \
fprintf (File, "%d.%d-%d.%d", \
- (Loc).first_line, (Loc).first_column, \
- (Loc).last_line, (Loc).last_column)
+ (Loc).first_line, (Loc).first_column, \
+ (Loc).last_line, (Loc).last_column)
# else
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
# endif
do { \
if (yydebug) \
YYFPRINTF Args; \
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yy_symbol_print (stderr, \
- Type, Value); \
- YYFPRINTF (stderr, "\n"); \
- } \
-} while (YYID (0))
-
+} while (0)
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
- FILE *yyoutput;
- int yytype;
- YYSTYPE const * const yyvaluep;
-#endif
-{
- if (!yyvaluep)
- return;
-# ifdef YYPRINT
- if (yytype < YYNTOKENS)
- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
- YYUSE (yyoutput);
-# endif
- switch (yytype)
- {
- default:
- break;
- }
-}
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
- FILE *yyoutput;
- int yytype;
- YYSTYPE const * const yyvaluep;
-#endif
-{
- if (yytype < YYNTOKENS)
- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
- else
- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-
- yy_symbol_value_print (yyoutput, yytype, yyvaluep);
- YYFPRINTF (yyoutput, ")");
-}
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yysymprint (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
/*------------------------------------------------------------------.
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
| TOP (included). |
`------------------------------------------------------------------*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+#if defined (__STDC__) || defined (__cplusplus)
static void
-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+yy_stack_print (short int *bottom, short int *top)
#else
static void
yy_stack_print (bottom, top)
- yytype_int16 *bottom;
- yytype_int16 *top;
+ short int *bottom;
+ short int *top;
#endif
{
YYFPRINTF (stderr, "Stack now");
- for (; bottom <= top; ++bottom)
+ for (/* Nothing. */; bottom <= top; ++bottom)
YYFPRINTF (stderr, " %d", *bottom);
YYFPRINTF (stderr, "\n");
}
do { \
if (yydebug) \
yy_stack_print ((Bottom), (Top)); \
-} while (YYID (0))
+} while (0)
/*------------------------------------------------.
| Report that the YYRULE is going to be reduced. |
`------------------------------------------------*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+#if defined (__STDC__) || defined (__cplusplus)
static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+yy_reduce_print (int yyrule)
#else
static void
-yy_reduce_print (yyvsp, yyrule)
- YYSTYPE *yyvsp;
+yy_reduce_print (yyrule)
int yyrule;
#endif
{
- int yynrhs = yyr2[yyrule];
int yyi;
unsigned long int yylno = yyrline[yyrule];
- YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
- yyrule - 1, yylno);
- /* The symbols being reduced. */
- for (yyi = 0; yyi < yynrhs; yyi++)
- {
- fprintf (stderr, " $%d = ", yyi + 1);
- yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
- &(yyvsp[(yyi + 1) - (yynrhs)])
- );
- fprintf (stderr, "\n");
- }
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
+ yyrule - 1, yylno);
+ /* Print the symbols being reduced, and their result. */
+ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+ YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+ YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
}
# define YY_REDUCE_PRINT(Rule) \
do { \
if (yydebug) \
- yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
+ yy_reduce_print (Rule); \
+} while (0)
/* Nonzero means print parse trace. It is left uninitialized so that
multiple parsers can coexist. */
#if YYERROR_VERBOSE
# ifndef yystrlen
-# if defined __GLIBC__ && defined _STRING_H
+# if defined (__GLIBC__) && defined (_STRING_H)
# define yystrlen strlen
# else
/* Return the length of YYSTR. */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static YYSIZE_T
+# if defined (__STDC__) || defined (__cplusplus)
yystrlen (const char *yystr)
-#else
-static YYSIZE_T
+# else
yystrlen (yystr)
- const char *yystr;
-#endif
+ const char *yystr;
+# endif
{
- YYSIZE_T yylen;
- for (yylen = 0; yystr[yylen]; yylen++)
+ const char *yys = yystr;
+
+ while (*yys++ != '\0')
continue;
- return yylen;
+
+ return yys - yystr - 1;
}
# endif
# endif
# ifndef yystpcpy
-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
# define yystpcpy stpcpy
# else
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
YYDEST. */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
static char *
+# if defined (__STDC__) || defined (__cplusplus)
yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
+# else
yystpcpy (yydest, yysrc)
- char *yydest;
- const char *yysrc;
-#endif
+ char *yydest;
+ const char *yysrc;
+# endif
{
char *yyd = yydest;
const char *yys = yysrc;
{
if (*yystr == '"')
{
- YYSIZE_T yyn = 0;
+ size_t yyn = 0;
char const *yyp = yystr;
for (;;)
}
# endif
-/* Copy into YYRESULT an error message about the unexpected token
- YYCHAR while in state YYSTATE. Return the number of bytes copied,
- including the terminating null byte. If YYRESULT is null, do not
- copy anything; just return the number of bytes that would be
- copied. As a special case, return 0 if an ordinary "syntax error"
- message will do. Return YYSIZE_MAXIMUM if overflow occurs during
- size calculation. */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
- int yyn = yypact[yystate];
+#endif /* YYERROR_VERBOSE */
- if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
- return 0;
- else
- {
- int yytype = YYTRANSLATE (yychar);
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
- YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
- int yysize_overflow = 0;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- int yyx;
-
-# if 0
- /* This is so xgettext sees the translatable formats that are
- constructed on the fly. */
- YY_("syntax error, unexpected %s");
- YY_("syntax error, unexpected %s, expecting %s");
- YY_("syntax error, unexpected %s, expecting %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
- char *yyfmt;
- char const *yyf;
- static char const yyunexpected[] = "syntax error, unexpected %s";
- static char const yyexpecting[] = ", expecting %s";
- static char const yyor[] = " or %s";
- char yyformat[sizeof yyunexpected
- + sizeof yyexpecting - 1
- + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
- * (sizeof yyor - 1))];
- char const *yyprefix = yyexpecting;
-
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
-
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yycount = 1;
-
- yyarg[0] = yytname[yytype];
- yyfmt = yystpcpy (yyformat, yyunexpected);
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- yyformat[sizeof yyunexpected - 1] = '\0';
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
- yyfmt = yystpcpy (yyfmt, yyprefix);
- yyprefix = yyor;
- }
+\f
- yyf = YY_(yyformat);
- yysize1 = yysize + yystrlen (yyf);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
- if (yysize_overflow)
- return YYSIZE_MAXIMUM;
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE *yyvaluep;
+#endif
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvaluep;
- if (yyresult)
- {
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- char *yyp = yyresult;
- int yyi = 0;
- while ((*yyp = *yyf) != '\0')
- {
- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yyarg[yyi++]);
- yyf += 2;
- }
- else
- {
- yyp++;
- yyf++;
- }
- }
- }
- return yysize;
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
}
+ YYFPRINTF (yyoutput, ")");
}
-#endif /* YYERROR_VERBOSE */
-\f
+#endif /* ! YYDEBUG */
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
`-----------------------------------------------*/
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+#if defined (__STDC__) || defined (__cplusplus)
static void
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
#else
YYSTYPE *yyvaluep;
#endif
{
- YYUSE (yyvaluep);
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvaluep;
if (!yymsg)
yymsg = "Deleting";
{
default:
- break;
+ break;
}
}
\f
/* Prevent warnings from -Wmissing-prototypes. */
#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
+# if defined (__STDC__) || defined (__cplusplus)
int yyparse (void *YYPARSE_PARAM);
-#else
+# else
int yyparse ();
-#endif
+# endif
#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
+#if defined (__STDC__) || defined (__cplusplus)
int yyparse (void);
#else
int yyparse ();
`----------*/
#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
- void *YYPARSE_PARAM;
-#endif
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+# endif
#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
+#if defined (__STDC__) || defined (__cplusplus)
int
yyparse (void)
#else
int yyerrstatus;
/* Look-ahead token as an internal (translated) token number. */
int yytoken = 0;
-#if YYERROR_VERBOSE
- /* Buffer for error messages, and its allocated size. */
- char yymsgbuf[128];
- char *yymsg = yymsgbuf;
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
/* Three stacks and their tools:
`yyss': related to states,
to reallocate them elsewhere. */
/* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss = yyssa;
- yytype_int16 *yyssp;
+ short int yyssa[YYINITDEPTH];
+ short int *yyss = yyssa;
+ short int *yyssp;
/* The semantic value stack. */
YYSTYPE yyvsa[YYINITDEPTH];
-#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+#define YYPOPSTACK (yyvsp--, yyssp--)
YYSIZE_T yystacksize = YYINITDEPTH;
YYSTYPE yyval;
- /* The number of symbols on the RHS of the reduced rule.
- Keep to zero when no symbol should be popped. */
- int yylen = 0;
+ /* When reducing, the number of symbols on the RHS of the reduced
+ rule. */
+ int yylen;
YYDPRINTF ((stderr, "Starting parse\n"));
`------------------------------------------------------------*/
yynewstate:
/* In all cases, when you get here, the value and location stacks
- have just been pushed. So pushing a state here evens the stacks. */
+ have just been pushed. so pushing a state here evens the stacks.
+ */
yyssp++;
yysetstate:
#ifdef yyoverflow
{
- /* Give user a chance to reallocate the stack. Use copies of
+ /* Give user a chance to reallocate the stack. Use copies of
these so that the &'s don't force the real ones into
memory. */
YYSTYPE *yyvs1 = yyvs;
- yytype_int16 *yyss1 = yyss;
+ short int *yyss1 = yyss;
/* Each stack pointer address is followed by the size of the
yystacksize = YYMAXDEPTH;
{
- yytype_int16 *yyss1 = yyss;
+ short int *yyss1 = yyss;
union yyalloc *yyptr =
(union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
if (! yyptr)
`-----------*/
yybackup:
- /* Do appropriate processing given the current state. Read a
- look-ahead token if we need one and don't already have one. */
+/* Do appropriate processing given the current state. */
+/* Read a look-ahead token if we need one and don't already have one. */
+/* yyresume: */
/* First try to decide what to do without reference to look-ahead token. */
+
yyn = yypact[yystate];
if (yyn == YYPACT_NINF)
goto yydefault;
if (yyn == YYFINAL)
YYACCEPT;
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (yyerrstatus)
- yyerrstatus--;
-
/* Shift the look-ahead token. */
YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
- /* Discard the shifted token unless it is eof. */
+ /* Discard the token being shifted unless it is eof. */
if (yychar != YYEOF)
yychar = YYEMPTY;
- yystate = yyn;
*++yyvsp = yylval;
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ yystate = yyn;
goto yynewstate;
switch (yyn)
{
case 3:
-#line 1595 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1912 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if ((yyvsp[(1) - (1)].UIntVal) > (uint32_t)INT32_MAX) // Outside of my range!
+ if ((yyvsp[0].UIntVal) > (uint32_t)INT32_MAX) // Outside of my range!
error("Value too large for type");
- (yyval.SIntVal) = (int32_t)(yyvsp[(1) - (1)].UIntVal);
+ (yyval.SIntVal) = (int32_t)(yyvsp[0].UIntVal);
;}
break;
case 5:
-#line 1604 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1921 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if ((yyvsp[(1) - (1)].UInt64Val) > (uint64_t)INT64_MAX) // Outside of my range!
+ if ((yyvsp[0].UInt64Val) > (uint64_t)INT64_MAX) // Outside of my range!
error("Value too large for type");
- (yyval.SInt64Val) = (int64_t)(yyvsp[(1) - (1)].UInt64Val);
+ (yyval.SInt64Val) = (int64_t)(yyvsp[0].UInt64Val);
;}
break;
case 26:
-#line 1626 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1943 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.IPred) = ICmpInst::ICMP_EQ; ;}
break;
case 27:
-#line 1626 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1943 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.IPred) = ICmpInst::ICMP_NE; ;}
break;
case 28:
-#line 1627 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1944 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.IPred) = ICmpInst::ICMP_SLT; ;}
break;
case 29:
-#line 1627 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1944 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.IPred) = ICmpInst::ICMP_SGT; ;}
break;
case 30:
-#line 1628 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1945 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.IPred) = ICmpInst::ICMP_SLE; ;}
break;
case 31:
-#line 1628 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1945 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.IPred) = ICmpInst::ICMP_SGE; ;}
break;
case 32:
-#line 1629 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1946 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.IPred) = ICmpInst::ICMP_ULT; ;}
break;
case 33:
-#line 1629 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1946 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.IPred) = ICmpInst::ICMP_UGT; ;}
break;
case 34:
-#line 1630 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1947 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.IPred) = ICmpInst::ICMP_ULE; ;}
break;
case 35:
-#line 1630 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1947 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.IPred) = ICmpInst::ICMP_UGE; ;}
break;
case 36:
-#line 1634 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1951 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_OEQ; ;}
break;
case 37:
-#line 1634 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1951 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_ONE; ;}
break;
case 38:
-#line 1635 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1952 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_OLT; ;}
break;
case 39:
-#line 1635 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1952 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_OGT; ;}
break;
case 40:
-#line 1636 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1953 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_OLE; ;}
break;
case 41:
-#line 1636 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1953 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_OGE; ;}
break;
case 42:
-#line 1637 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1954 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_ORD; ;}
break;
case 43:
-#line 1637 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1954 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_UNO; ;}
break;
case 44:
-#line 1638 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1955 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_UEQ; ;}
break;
case 45:
-#line 1638 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1955 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_UNE; ;}
break;
case 46:
-#line 1639 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1956 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_ULT; ;}
break;
case 47:
-#line 1639 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1956 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_UGT; ;}
break;
case 48:
-#line 1640 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1957 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_ULE; ;}
break;
case 49:
-#line 1640 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1957 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_UGE; ;}
break;
case 50:
-#line 1641 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1958 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_TRUE; ;}
break;
case 51:
-#line 1642 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1959 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.FPred) = FCmpInst::FCMP_FALSE; ;}
break;
case 81:
-#line 1673 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1990 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.StrVal) = (yyvsp[(1) - (2)].StrVal);
+ (yyval.StrVal) = (yyvsp[-1].StrVal);
;}
break;
case 82:
-#line 1676 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1993 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
(yyval.StrVal) = 0;
;}
break;
case 83:
-#line 1681 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1998 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.Linkage) = GlobalValue::InternalLinkage; ;}
break;
case 84:
-#line 1682 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 1999 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.Linkage) = GlobalValue::LinkOnceLinkage; ;}
break;
case 85:
-#line 1683 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2000 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.Linkage) = GlobalValue::WeakLinkage; ;}
break;
case 86:
-#line 1684 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2001 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.Linkage) = GlobalValue::AppendingLinkage; ;}
break;
case 87:
-#line 1685 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2002 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
break;
case 88:
-#line 1686 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2003 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.Linkage) = GlobalValue::DLLExportLinkage; ;}
break;
case 89:
-#line 1687 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2004 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
break;
case 90:
-#line 1688 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2005 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
break;
case 91:
-#line 1692 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2009 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.UIntVal) = OldCallingConv::C; ;}
break;
case 92:
-#line 1693 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2010 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.UIntVal) = OldCallingConv::C; ;}
break;
case 93:
-#line 1694 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2011 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.UIntVal) = OldCallingConv::CSRet; ;}
break;
case 94:
-#line 1695 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2012 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.UIntVal) = OldCallingConv::Fast; ;}
break;
case 95:
-#line 1696 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2013 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.UIntVal) = OldCallingConv::Cold; ;}
break;
case 96:
-#line 1697 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2014 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.UIntVal) = OldCallingConv::X86_StdCall; ;}
break;
case 97:
-#line 1698 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2015 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.UIntVal) = OldCallingConv::X86_FastCall; ;}
break;
case 98:
-#line 1699 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2016 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if ((unsigned)(yyvsp[(2) - (2)].UInt64Val) != (yyvsp[(2) - (2)].UInt64Val))
+ if ((unsigned)(yyvsp[0].UInt64Val) != (yyvsp[0].UInt64Val))
error("Calling conv too large");
- (yyval.UIntVal) = (yyvsp[(2) - (2)].UInt64Val);
+ (yyval.UIntVal) = (yyvsp[0].UInt64Val);
;}
break;
case 99:
-#line 1709 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2026 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.UIntVal) = 0; ;}
break;
case 100:
-#line 1710 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2027 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.UIntVal) = (yyvsp[(2) - (2)].UInt64Val);
+ (yyval.UIntVal) = (yyvsp[0].UInt64Val);
if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
error("Alignment must be a power of two");
;}
break;
case 101:
-#line 1718 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2035 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.UIntVal) = 0; ;}
break;
case 102:
-#line 1719 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2036 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.UIntVal) = (yyvsp[(3) - (3)].UInt64Val);
+ (yyval.UIntVal) = (yyvsp[0].UInt64Val);
if ((yyval.UIntVal) != 0 && !isPowerOf2_32((yyval.UIntVal)))
error("Alignment must be a power of two");
;}
break;
case 103:
-#line 1727 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2044 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- for (unsigned i = 0, e = strlen((yyvsp[(2) - (2)].StrVal)); i != e; ++i)
- if ((yyvsp[(2) - (2)].StrVal)[i] == '"' || (yyvsp[(2) - (2)].StrVal)[i] == '\\')
+ for (unsigned i = 0, e = strlen((yyvsp[0].StrVal)); i != e; ++i)
+ if ((yyvsp[0].StrVal)[i] == '"' || (yyvsp[0].StrVal)[i] == '\\')
error("Invalid character in section name");
- (yyval.StrVal) = (yyvsp[(2) - (2)].StrVal);
+ (yyval.StrVal) = (yyvsp[0].StrVal);
;}
break;
case 104:
-#line 1736 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2053 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.StrVal) = 0; ;}
break;
case 105:
-#line 1737 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.StrVal) = (yyvsp[(1) - (1)].StrVal); ;}
+#line 2054 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.StrVal) = (yyvsp[0].StrVal); ;}
break;
case 106:
-#line 1744 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2061 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{;}
break;
case 107:
-#line 1745 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2062 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{;}
break;
case 108:
-#line 1749 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2066 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- CurGV->setSection((yyvsp[(1) - (1)].StrVal));
- free((yyvsp[(1) - (1)].StrVal));
+ CurGV->setSection((yyvsp[0].StrVal));
+ free((yyvsp[0].StrVal));
;}
break;
case 109:
-#line 1753 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2070 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if ((yyvsp[(2) - (2)].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[(2) - (2)].UInt64Val)))
+ if ((yyvsp[0].UInt64Val) != 0 && !isPowerOf2_32((yyvsp[0].UInt64Val)))
error("Alignment must be a power of two");
- CurGV->setAlignment((yyvsp[(2) - (2)].UInt64Val));
+ CurGV->setAlignment((yyvsp[0].UInt64Val));
;}
break;
case 111:
-#line 1770 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2087 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.TypeVal).PAT = new PATypeHolder((yyvsp[(1) - (1)].PrimType).T);
- (yyval.TypeVal).S = Signless;
+ (yyval.TypeVal).PAT = new PATypeHolder((yyvsp[0].PrimType).T);
+ (yyval.TypeVal).S.makeSignless();
;}
break;
case 113:
-#line 1778 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2095 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.TypeVal).PAT = new PATypeHolder((yyvsp[(1) - (1)].PrimType).T);
- (yyval.TypeVal).S = Signless;
+ (yyval.TypeVal).PAT = new PATypeHolder((yyvsp[0].PrimType).T);
+ (yyval.TypeVal).S.makeSignless();
;}
break;
case 114:
-#line 1785 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2102 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
if (!UpRefs.empty())
- error("Invalid upreference in type: " + (*(yyvsp[(1) - (1)].TypeVal).PAT)->getDescription());
- (yyval.TypeVal) = (yyvsp[(1) - (1)].TypeVal);
+ error("Invalid upreference in type: " + (*(yyvsp[0].TypeVal).PAT)->getDescription());
+ (yyval.TypeVal) = (yyvsp[0].TypeVal);
;}
break;
case 127:
-#line 1799 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2116 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.TypeVal).PAT = new PATypeHolder((yyvsp[(1) - (1)].PrimType).T);
- (yyval.TypeVal).S = (yyvsp[(1) - (1)].PrimType).S;
+ (yyval.TypeVal).PAT = new PATypeHolder((yyvsp[0].PrimType).T);
+ (yyval.TypeVal).S.copy((yyvsp[0].PrimType).S);
;}
break;
case 128:
-#line 1803 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2120 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
(yyval.TypeVal).PAT = new PATypeHolder(OpaqueType::get());
- (yyval.TypeVal).S = Signless;
+ (yyval.TypeVal).S.makeSignless();
;}
break;
case 129:
-#line 1807 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2124 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Named types are also simple types...
- const Type* tmp = getType((yyvsp[(1) - (1)].ValIDVal));
+ (yyval.TypeVal).S.copy(getTypeSign((yyvsp[0].ValIDVal)));
+ const Type* tmp = getType((yyvsp[0].ValIDVal));
(yyval.TypeVal).PAT = new PATypeHolder(tmp);
- (yyval.TypeVal).S = Signless; // FIXME: what if its signed?
;}
break;
case 130:
-#line 1812 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2129 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Type UpReference
- if ((yyvsp[(2) - (2)].UInt64Val) > (uint64_t)~0U)
+ if ((yyvsp[0].UInt64Val) > (uint64_t)~0U)
error("Value out of range");
OpaqueType *OT = OpaqueType::get(); // Use temporary placeholder
- UpRefs.push_back(UpRefRecord((unsigned)(yyvsp[(2) - (2)].UInt64Val), OT)); // Add to vector...
+ UpRefs.push_back(UpRefRecord((unsigned)(yyvsp[0].UInt64Val), OT)); // Add to vector...
(yyval.TypeVal).PAT = new PATypeHolder(OT);
- (yyval.TypeVal).S = Signless;
+ (yyval.TypeVal).S.makeSignless();
UR_OUT("New Upreference!\n");
;}
break;
case 131:
-#line 1821 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2138 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Function derived type?
+ (yyval.TypeVal).S.makeComposite((yyvsp[-3].TypeVal).S);
std::vector<const Type*> Params;
- for (std::list<llvm::PATypeInfo>::iterator I = (yyvsp[(3) - (4)].TypeList)->begin(),
- E = (yyvsp[(3) - (4)].TypeList)->end(); I != E; ++I) {
+ for (std::list<llvm::PATypeInfo>::iterator I = (yyvsp[-1].TypeList)->begin(),
+ E = (yyvsp[-1].TypeList)->end(); I != E; ++I) {
Params.push_back(I->PAT->get());
+ (yyval.TypeVal).S.add(I->S);
}
- FunctionType::ParamAttrsList ParamAttrs;
bool isVarArg = Params.size() && Params.back() == Type::VoidTy;
if (isVarArg) Params.pop_back();
- (yyval.TypeVal).PAT = new PATypeHolder(
- HandleUpRefs(FunctionType::get((yyvsp[(1) - (4)].TypeVal).PAT->get(), Params, isVarArg,
- ParamAttrs)));
- (yyval.TypeVal).S = (yyvsp[(1) - (4)].TypeVal).S;
- delete (yyvsp[(1) - (4)].TypeVal).PAT; // Delete the return type handle
- delete (yyvsp[(3) - (4)].TypeList); // Delete the argument list
+ const FunctionType *FTy =
+ FunctionType::get((yyvsp[-3].TypeVal).PAT->get(), Params, isVarArg, 0);
+
+ (yyval.TypeVal).PAT = new PATypeHolder( HandleUpRefs(FTy, (yyval.TypeVal).S) );
+ delete (yyvsp[-3].TypeVal).PAT; // Delete the return type handle
+ delete (yyvsp[-1].TypeList); // Delete the argument list
;}
break;
case 132:
-#line 1838 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2156 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Sized array type?
- (yyval.TypeVal).PAT = new PATypeHolder(HandleUpRefs(ArrayType::get((yyvsp[(4) - (5)].TypeVal).PAT->get(),
- (unsigned)(yyvsp[(2) - (5)].UInt64Val))));
- (yyval.TypeVal).S = (yyvsp[(4) - (5)].TypeVal).S;
- delete (yyvsp[(4) - (5)].TypeVal).PAT;
+ (yyval.TypeVal).S.makeComposite((yyvsp[-1].TypeVal).S);
+ (yyval.TypeVal).PAT = new PATypeHolder(HandleUpRefs(ArrayType::get((yyvsp[-1].TypeVal).PAT->get(),
+ (unsigned)(yyvsp[-3].UInt64Val)), (yyval.TypeVal).S));
+ delete (yyvsp[-1].TypeVal).PAT;
;}
break;
case 133:
-#line 1844 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { // Packed array type?
- const llvm::Type* ElemTy = (yyvsp[(4) - (5)].TypeVal).PAT->get();
- if ((unsigned)(yyvsp[(2) - (5)].UInt64Val) != (yyvsp[(2) - (5)].UInt64Val))
- error("Unsigned result not equal to signed result");
- if (!(ElemTy->isInteger() || ElemTy->isFloatingPoint()))
- error("Elements of a PackedType must be integer or floating point");
- if (!isPowerOf2_32((yyvsp[(2) - (5)].UInt64Val)))
- error("PackedType length should be a power of 2");
- (yyval.TypeVal).PAT = new PATypeHolder(HandleUpRefs(PackedType::get(ElemTy,
- (unsigned)(yyvsp[(2) - (5)].UInt64Val))));
- (yyval.TypeVal).S = (yyvsp[(4) - (5)].TypeVal).S;
- delete (yyvsp[(4) - (5)].TypeVal).PAT;
+#line 2162 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { // Vector type?
+ const llvm::Type* ElemTy = (yyvsp[-1].TypeVal).PAT->get();
+ if ((unsigned)(yyvsp[-3].UInt64Val) != (yyvsp[-3].UInt64Val))
+ error("Unsigned result not equal to signed result");
+ if (!(ElemTy->isInteger() || ElemTy->isFloatingPoint()))
+ error("Elements of a VectorType must be integer or floating point");
+ if (!isPowerOf2_32((yyvsp[-3].UInt64Val)))
+ error("VectorType length should be a power of 2");
+ (yyval.TypeVal).S.makeComposite((yyvsp[-1].TypeVal).S);
+ (yyval.TypeVal).PAT = new PATypeHolder(HandleUpRefs(VectorType::get(ElemTy,
+ (unsigned)(yyvsp[-3].UInt64Val)), (yyval.TypeVal).S));
+ delete (yyvsp[-1].TypeVal).PAT;
;}
break;
case 134:
-#line 1857 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2175 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Structure type?
std::vector<const Type*> Elements;
- for (std::list<llvm::PATypeInfo>::iterator I = (yyvsp[(2) - (3)].TypeList)->begin(),
- E = (yyvsp[(2) - (3)].TypeList)->end(); I != E; ++I)
+ (yyval.TypeVal).S.makeComposite();
+ for (std::list<llvm::PATypeInfo>::iterator I = (yyvsp[-1].TypeList)->begin(),
+ E = (yyvsp[-1].TypeList)->end(); I != E; ++I) {
Elements.push_back(I->PAT->get());
- (yyval.TypeVal).PAT = new PATypeHolder(HandleUpRefs(StructType::get(Elements)));
- (yyval.TypeVal).S = Signless;
- delete (yyvsp[(2) - (3)].TypeList);
+ (yyval.TypeVal).S.add(I->S);
+ }
+ (yyval.TypeVal).PAT = new PATypeHolder(HandleUpRefs(StructType::get(Elements), (yyval.TypeVal).S));
+ delete (yyvsp[-1].TypeList);
;}
break;
case 135:
-#line 1866 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2186 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Empty structure type?
(yyval.TypeVal).PAT = new PATypeHolder(StructType::get(std::vector<const Type*>()));
- (yyval.TypeVal).S = Signless;
+ (yyval.TypeVal).S.makeComposite();
;}
break;
case 136:
-#line 1870 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2190 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Packed Structure type?
+ (yyval.TypeVal).S.makeComposite();
std::vector<const Type*> Elements;
- for (std::list<llvm::PATypeInfo>::iterator I = (yyvsp[(3) - (5)].TypeList)->begin(),
- E = (yyvsp[(3) - (5)].TypeList)->end(); I != E; ++I) {
+ for (std::list<llvm::PATypeInfo>::iterator I = (yyvsp[-2].TypeList)->begin(),
+ E = (yyvsp[-2].TypeList)->end(); I != E; ++I) {
Elements.push_back(I->PAT->get());
+ (yyval.TypeVal).S.add(I->S);
delete I->PAT;
}
- (yyval.TypeVal).PAT = new PATypeHolder(HandleUpRefs(StructType::get(Elements, true)));
- (yyval.TypeVal).S = Signless;
- delete (yyvsp[(3) - (5)].TypeList);
+ (yyval.TypeVal).PAT = new PATypeHolder(HandleUpRefs(StructType::get(Elements, true),
+ (yyval.TypeVal).S));
+ delete (yyvsp[-2].TypeList);
;}
break;
case 137:
-#line 1881 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2203 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Empty packed structure type?
(yyval.TypeVal).PAT = new PATypeHolder(StructType::get(std::vector<const Type*>(),true));
- (yyval.TypeVal).S = Signless;
+ (yyval.TypeVal).S.makeComposite();
;}
break;
case 138:
-#line 1885 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2207 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Pointer type?
- if ((yyvsp[(1) - (2)].TypeVal).PAT->get() == Type::LabelTy)
+ if ((yyvsp[-1].TypeVal).PAT->get() == Type::LabelTy)
error("Cannot form a pointer to a basic block");
- (yyval.TypeVal).PAT = new PATypeHolder(HandleUpRefs(PointerType::get((yyvsp[(1) - (2)].TypeVal).PAT->get())));
- (yyval.TypeVal).S = (yyvsp[(1) - (2)].TypeVal).S;
- delete (yyvsp[(1) - (2)].TypeVal).PAT;
+ (yyval.TypeVal).S.makeComposite((yyvsp[-1].TypeVal).S);
+ (yyval.TypeVal).PAT = new PATypeHolder(HandleUpRefs(PointerType::get((yyvsp[-1].TypeVal).PAT->get()),
+ (yyval.TypeVal).S));
+ delete (yyvsp[-1].TypeVal).PAT;
;}
break;
case 139:
-#line 1898 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2221 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
(yyval.TypeList) = new std::list<PATypeInfo>();
- (yyval.TypeList)->push_back((yyvsp[(1) - (1)].TypeVal));
+ (yyval.TypeList)->push_back((yyvsp[0].TypeVal));
;}
break;
case 140:
-#line 1902 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2225 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- ((yyval.TypeList)=(yyvsp[(1) - (3)].TypeList))->push_back((yyvsp[(3) - (3)].TypeVal));
+ ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back((yyvsp[0].TypeVal));
;}
break;
case 142:
-#line 1910 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2233 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
PATypeInfo VoidTI;
VoidTI.PAT = new PATypeHolder(Type::VoidTy);
- VoidTI.S = Signless;
- ((yyval.TypeList)=(yyvsp[(1) - (3)].TypeList))->push_back(VoidTI);
+ VoidTI.S.makeSignless();
+ ((yyval.TypeList)=(yyvsp[-2].TypeList))->push_back(VoidTI);
;}
break;
case 143:
-#line 1916 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2239 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
(yyval.TypeList) = new std::list<PATypeInfo>();
PATypeInfo VoidTI;
VoidTI.PAT = new PATypeHolder(Type::VoidTy);
- VoidTI.S = Signless;
+ VoidTI.S.makeSignless();
(yyval.TypeList)->push_back(VoidTI);
;}
break;
case 144:
-#line 1923 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2246 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
(yyval.TypeList) = new std::list<PATypeInfo>();
;}
break;
case 145:
-#line 1935 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2258 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Nonempty unsized arr
- const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[(1) - (4)].TypeVal).PAT->get());
+ const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-3].TypeVal).PAT->get());
if (ATy == 0)
error("Cannot make array constant with type: '" +
- (yyvsp[(1) - (4)].TypeVal).PAT->get()->getDescription() + "'");
+ (yyvsp[-3].TypeVal).PAT->get()->getDescription() + "'");
const Type *ETy = ATy->getElementType();
int NumElements = ATy->getNumElements();
// Verify that we have the correct size...
- if (NumElements != -1 && NumElements != (int)(yyvsp[(3) - (4)].ConstVector)->size())
+ if (NumElements != -1 && NumElements != (int)(yyvsp[-1].ConstVector)->size())
error("Type mismatch: constant sized array initialized with " +
- utostr((yyvsp[(3) - (4)].ConstVector)->size()) + " arguments, but has size of " +
+ utostr((yyvsp[-1].ConstVector)->size()) + " arguments, but has size of " +
itostr(NumElements) + "");
// Verify all elements are correct type!
std::vector<Constant*> Elems;
- for (unsigned i = 0; i < (yyvsp[(3) - (4)].ConstVector)->size(); i++) {
- Constant *C = (*(yyvsp[(3) - (4)].ConstVector))[i].C;
+ for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) {
+ Constant *C = (*(yyvsp[-1].ConstVector))[i].C;
const Type* ValTy = C->getType();
if (ETy != ValTy)
error("Element #" + utostr(i) + " is not of type '" +
Elems.push_back(C);
}
(yyval.ConstVal).C = ConstantArray::get(ATy, Elems);
- (yyval.ConstVal).S = (yyvsp[(1) - (4)].TypeVal).S;
- delete (yyvsp[(1) - (4)].TypeVal).PAT;
- delete (yyvsp[(3) - (4)].ConstVector);
+ (yyval.ConstVal).S.copy((yyvsp[-3].TypeVal).S);
+ delete (yyvsp[-3].TypeVal).PAT;
+ delete (yyvsp[-1].ConstVector);
;}
break;
case 146:
-#line 1965 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2288 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[(1) - (3)].TypeVal).PAT->get());
+ const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal).PAT->get());
if (ATy == 0)
error("Cannot make array constant with type: '" +
- (yyvsp[(1) - (3)].TypeVal).PAT->get()->getDescription() + "'");
+ (yyvsp[-2].TypeVal).PAT->get()->getDescription() + "'");
int NumElements = ATy->getNumElements();
if (NumElements != -1 && NumElements != 0)
error("Type mismatch: constant sized array initialized with 0"
" arguments, but has size of " + itostr(NumElements) +"");
(yyval.ConstVal).C = ConstantArray::get(ATy, std::vector<Constant*>());
- (yyval.ConstVal).S = (yyvsp[(1) - (3)].TypeVal).S;
- delete (yyvsp[(1) - (3)].TypeVal).PAT;
+ (yyval.ConstVal).S.copy((yyvsp[-2].TypeVal).S);
+ delete (yyvsp[-2].TypeVal).PAT;
;}
break;
case 147:
-#line 1978 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2301 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[(1) - (3)].TypeVal).PAT->get());
+ const ArrayType *ATy = dyn_cast<ArrayType>((yyvsp[-2].TypeVal).PAT->get());
if (ATy == 0)
error("Cannot make array constant with type: '" +
- (yyvsp[(1) - (3)].TypeVal).PAT->get()->getDescription() + "'");
+ (yyvsp[-2].TypeVal).PAT->get()->getDescription() + "'");
int NumElements = ATy->getNumElements();
const Type *ETy = dyn_cast<IntegerType>(ATy->getElementType());
if (!ETy || cast<IntegerType>(ETy)->getBitWidth() != 8)
error("String arrays require type i8, not '" + ETy->getDescription() +
"'");
- char *EndStr = UnEscapeLexed((yyvsp[(3) - (3)].StrVal), true);
- if (NumElements != -1 && NumElements != (EndStr-(yyvsp[(3) - (3)].StrVal)))
+ char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true);
+ if (NumElements != -1 && NumElements != (EndStr-(yyvsp[0].StrVal)))
error("Can't build string constant of size " +
- itostr((int)(EndStr-(yyvsp[(3) - (3)].StrVal))) + " when array has size " +
+ itostr((int)(EndStr-(yyvsp[0].StrVal))) + " when array has size " +
itostr(NumElements) + "");
std::vector<Constant*> Vals;
- for (char *C = (char *)(yyvsp[(3) - (3)].StrVal); C != (char *)EndStr; ++C)
+ for (char *C = (char *)(yyvsp[0].StrVal); C != (char *)EndStr; ++C)
Vals.push_back(ConstantInt::get(ETy, *C));
- free((yyvsp[(3) - (3)].StrVal));
+ free((yyvsp[0].StrVal));
(yyval.ConstVal).C = ConstantArray::get(ATy, Vals);
- (yyval.ConstVal).S = (yyvsp[(1) - (3)].TypeVal).S;
- delete (yyvsp[(1) - (3)].TypeVal).PAT;
+ (yyval.ConstVal).S.copy((yyvsp[-2].TypeVal).S);
+ delete (yyvsp[-2].TypeVal).PAT;
;}
break;
case 148:
-#line 2001 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2324 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Nonempty unsized arr
- const PackedType *PTy = dyn_cast<PackedType>((yyvsp[(1) - (4)].TypeVal).PAT->get());
+ const VectorType *PTy = dyn_cast<VectorType>((yyvsp[-3].TypeVal).PAT->get());
if (PTy == 0)
error("Cannot make packed constant with type: '" +
- (yyvsp[(1) - (4)].TypeVal).PAT->get()->getDescription() + "'");
+ (yyvsp[-3].TypeVal).PAT->get()->getDescription() + "'");
const Type *ETy = PTy->getElementType();
int NumElements = PTy->getNumElements();
// Verify that we have the correct size...
- if (NumElements != -1 && NumElements != (int)(yyvsp[(3) - (4)].ConstVector)->size())
+ if (NumElements != -1 && NumElements != (int)(yyvsp[-1].ConstVector)->size())
error("Type mismatch: constant sized packed initialized with " +
- utostr((yyvsp[(3) - (4)].ConstVector)->size()) + " arguments, but has size of " +
+ utostr((yyvsp[-1].ConstVector)->size()) + " arguments, but has size of " +
itostr(NumElements) + "");
// Verify all elements are correct type!
std::vector<Constant*> Elems;
- for (unsigned i = 0; i < (yyvsp[(3) - (4)].ConstVector)->size(); i++) {
- Constant *C = (*(yyvsp[(3) - (4)].ConstVector))[i].C;
+ for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) {
+ Constant *C = (*(yyvsp[-1].ConstVector))[i].C;
const Type* ValTy = C->getType();
if (ETy != ValTy)
error("Element #" + utostr(i) + " is not of type '" +
ValTy->getDescription() + "'");
Elems.push_back(C);
}
- (yyval.ConstVal).C = ConstantPacked::get(PTy, Elems);
- (yyval.ConstVal).S = (yyvsp[(1) - (4)].TypeVal).S;
- delete (yyvsp[(1) - (4)].TypeVal).PAT;
- delete (yyvsp[(3) - (4)].ConstVector);
+ (yyval.ConstVal).C = ConstantVector::get(PTy, Elems);
+ (yyval.ConstVal).S.copy((yyvsp[-3].TypeVal).S);
+ delete (yyvsp[-3].TypeVal).PAT;
+ delete (yyvsp[-1].ConstVector);
;}
break;
case 149:
-#line 2029 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2352 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (4)].TypeVal).PAT->get());
+ const StructType *STy = dyn_cast<StructType>((yyvsp[-3].TypeVal).PAT->get());
if (STy == 0)
error("Cannot make struct constant with type: '" +
- (yyvsp[(1) - (4)].TypeVal).PAT->get()->getDescription() + "'");
- if ((yyvsp[(3) - (4)].ConstVector)->size() != STy->getNumContainedTypes())
+ (yyvsp[-3].TypeVal).PAT->get()->getDescription() + "'");
+ if ((yyvsp[-1].ConstVector)->size() != STy->getNumContainedTypes())
error("Illegal number of initializers for structure type");
// Check to ensure that constants are compatible with the type initializer!
std::vector<Constant*> Fields;
- for (unsigned i = 0, e = (yyvsp[(3) - (4)].ConstVector)->size(); i != e; ++i) {
- Constant *C = (*(yyvsp[(3) - (4)].ConstVector))[i].C;
+ for (unsigned i = 0, e = (yyvsp[-1].ConstVector)->size(); i != e; ++i) {
+ Constant *C = (*(yyvsp[-1].ConstVector))[i].C;
if (C->getType() != STy->getElementType(i))
error("Expected type '" + STy->getElementType(i)->getDescription() +
"' for element #" + utostr(i) + " of structure initializer");
Fields.push_back(C);
}
(yyval.ConstVal).C = ConstantStruct::get(STy, Fields);
- (yyval.ConstVal).S = (yyvsp[(1) - (4)].TypeVal).S;
- delete (yyvsp[(1) - (4)].TypeVal).PAT;
- delete (yyvsp[(3) - (4)].ConstVector);
+ (yyval.ConstVal).S.copy((yyvsp[-3].TypeVal).S);
+ delete (yyvsp[-3].TypeVal).PAT;
+ delete (yyvsp[-1].ConstVector);
;}
break;
case 150:
-#line 2051 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2374 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (3)].TypeVal).PAT->get());
+ const StructType *STy = dyn_cast<StructType>((yyvsp[-2].TypeVal).PAT->get());
if (STy == 0)
error("Cannot make struct constant with type: '" +
- (yyvsp[(1) - (3)].TypeVal).PAT->get()->getDescription() + "'");
+ (yyvsp[-2].TypeVal).PAT->get()->getDescription() + "'");
if (STy->getNumContainedTypes() != 0)
error("Illegal number of initializers for structure type");
(yyval.ConstVal).C = ConstantStruct::get(STy, std::vector<Constant*>());
- (yyval.ConstVal).S = (yyvsp[(1) - (3)].TypeVal).S;
- delete (yyvsp[(1) - (3)].TypeVal).PAT;
+ (yyval.ConstVal).S.copy((yyvsp[-2].TypeVal).S);
+ delete (yyvsp[-2].TypeVal).PAT;
;}
break;
case 151:
-#line 2062 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2385 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (6)].TypeVal).PAT->get());
+ const StructType *STy = dyn_cast<StructType>((yyvsp[-5].TypeVal).PAT->get());
if (STy == 0)
error("Cannot make packed struct constant with type: '" +
- (yyvsp[(1) - (6)].TypeVal).PAT->get()->getDescription() + "'");
- if ((yyvsp[(4) - (6)].ConstVector)->size() != STy->getNumContainedTypes())
+ (yyvsp[-5].TypeVal).PAT->get()->getDescription() + "'");
+ if ((yyvsp[-2].ConstVector)->size() != STy->getNumContainedTypes())
error("Illegal number of initializers for packed structure type");
// Check to ensure that constants are compatible with the type initializer!
std::vector<Constant*> Fields;
- for (unsigned i = 0, e = (yyvsp[(4) - (6)].ConstVector)->size(); i != e; ++i) {
- Constant *C = (*(yyvsp[(4) - (6)].ConstVector))[i].C;
+ for (unsigned i = 0, e = (yyvsp[-2].ConstVector)->size(); i != e; ++i) {
+ Constant *C = (*(yyvsp[-2].ConstVector))[i].C;
if (C->getType() != STy->getElementType(i))
error("Expected type '" + STy->getElementType(i)->getDescription() +
"' for element #" + utostr(i) + " of packed struct initializer");
Fields.push_back(C);
}
(yyval.ConstVal).C = ConstantStruct::get(STy, Fields);
- (yyval.ConstVal).S = (yyvsp[(1) - (6)].TypeVal).S;
- delete (yyvsp[(1) - (6)].TypeVal).PAT;
- delete (yyvsp[(4) - (6)].ConstVector);
+ (yyval.ConstVal).S.copy((yyvsp[-5].TypeVal).S);
+ delete (yyvsp[-5].TypeVal).PAT;
+ delete (yyvsp[-2].ConstVector);
;}
break;
case 152:
-#line 2084 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2407 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const StructType *STy = dyn_cast<StructType>((yyvsp[(1) - (5)].TypeVal).PAT->get());
+ const StructType *STy = dyn_cast<StructType>((yyvsp[-4].TypeVal).PAT->get());
if (STy == 0)
error("Cannot make packed struct constant with type: '" +
- (yyvsp[(1) - (5)].TypeVal).PAT->get()->getDescription() + "'");
+ (yyvsp[-4].TypeVal).PAT->get()->getDescription() + "'");
if (STy->getNumContainedTypes() != 0)
error("Illegal number of initializers for packed structure type");
(yyval.ConstVal).C = ConstantStruct::get(STy, std::vector<Constant*>());
- (yyval.ConstVal).S = (yyvsp[(1) - (5)].TypeVal).S;
- delete (yyvsp[(1) - (5)].TypeVal).PAT;
+ (yyval.ConstVal).S.copy((yyvsp[-4].TypeVal).S);
+ delete (yyvsp[-4].TypeVal).PAT;
;}
break;
case 153:
-#line 2095 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2418 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const PointerType *PTy = dyn_cast<PointerType>((yyvsp[(1) - (2)].TypeVal).PAT->get());
+ const PointerType *PTy = dyn_cast<PointerType>((yyvsp[-1].TypeVal).PAT->get());
if (PTy == 0)
error("Cannot make null pointer constant with type: '" +
- (yyvsp[(1) - (2)].TypeVal).PAT->get()->getDescription() + "'");
+ (yyvsp[-1].TypeVal).PAT->get()->getDescription() + "'");
(yyval.ConstVal).C = ConstantPointerNull::get(PTy);
- (yyval.ConstVal).S = (yyvsp[(1) - (2)].TypeVal).S;
- delete (yyvsp[(1) - (2)].TypeVal).PAT;
+ (yyval.ConstVal).S.copy((yyvsp[-1].TypeVal).S);
+ delete (yyvsp[-1].TypeVal).PAT;
;}
break;
case 154:
-#line 2104 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2427 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.ConstVal).C = UndefValue::get((yyvsp[(1) - (2)].TypeVal).PAT->get());
- (yyval.ConstVal).S = (yyvsp[(1) - (2)].TypeVal).S;
- delete (yyvsp[(1) - (2)].TypeVal).PAT;
+ (yyval.ConstVal).C = UndefValue::get((yyvsp[-1].TypeVal).PAT->get());
+ (yyval.ConstVal).S.copy((yyvsp[-1].TypeVal).S);
+ delete (yyvsp[-1].TypeVal).PAT;
;}
break;
case 155:
-#line 2109 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2432 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const PointerType *Ty = dyn_cast<PointerType>((yyvsp[(1) - (2)].TypeVal).PAT->get());
+ const PointerType *Ty = dyn_cast<PointerType>((yyvsp[-1].TypeVal).PAT->get());
if (Ty == 0)
error("Global const reference must be a pointer type, not" +
- (yyvsp[(1) - (2)].TypeVal).PAT->get()->getDescription());
+ (yyvsp[-1].TypeVal).PAT->get()->getDescription());
// ConstExprs can exist in the body of a function, thus creating
// GlobalValues whenever they refer to a variable. Because we are in
//
Function *SavedCurFn = CurFun.CurrentFunction;
CurFun.CurrentFunction = 0;
- Value *V = getExistingValue(Ty, (yyvsp[(2) - (2)].ValIDVal));
+ (yyvsp[0].ValIDVal).S.copy((yyvsp[-1].TypeVal).S);
+ Value *V = getExistingValue(Ty, (yyvsp[0].ValIDVal));
CurFun.CurrentFunction = SavedCurFn;
// If this is an initializer for a constant pointer, which is referencing a
// First check to see if the forward references value is already created!
PerModuleInfo::GlobalRefsType::iterator I =
- CurModule.GlobalRefs.find(std::make_pair(PT, (yyvsp[(2) - (2)].ValIDVal)));
+ CurModule.GlobalRefs.find(std::make_pair(PT, (yyvsp[0].ValIDVal)));
if (I != CurModule.GlobalRefs.end()) {
V = I->second; // Placeholder already exists, use it...
- (yyvsp[(2) - (2)].ValIDVal).destroy();
+ (yyvsp[0].ValIDVal).destroy();
} else {
std::string Name;
- if ((yyvsp[(2) - (2)].ValIDVal).Type == ValID::NameVal) Name = (yyvsp[(2) - (2)].ValIDVal).Name;
+ if ((yyvsp[0].ValIDVal).Type == ValID::NameVal) Name = (yyvsp[0].ValIDVal).Name;
// Create the forward referenced global.
GlobalValue *GV;
}
// Keep track of the fact that we have a forward ref to recycle it
- CurModule.GlobalRefs.insert(std::make_pair(std::make_pair(PT, (yyvsp[(2) - (2)].ValIDVal)), GV));
+ CurModule.GlobalRefs.insert(std::make_pair(std::make_pair(PT, (yyvsp[0].ValIDVal)), GV));
V = GV;
}
}
(yyval.ConstVal).C = cast<GlobalValue>(V);
- (yyval.ConstVal).S = (yyvsp[(1) - (2)].TypeVal).S;
- delete (yyvsp[(1) - (2)].TypeVal).PAT; // Free the type handle
+ (yyval.ConstVal).S.copy((yyvsp[-1].TypeVal).S);
+ delete (yyvsp[-1].TypeVal).PAT; // Free the type handle
;}
break;
case 156:
-#line 2167 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2491 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if ((yyvsp[(1) - (2)].TypeVal).PAT->get() != (yyvsp[(2) - (2)].ConstVal).C->getType())
+ if ((yyvsp[-1].TypeVal).PAT->get() != (yyvsp[0].ConstVal).C->getType())
error("Mismatched types for constant expression");
- (yyval.ConstVal) = (yyvsp[(2) - (2)].ConstVal);
- (yyval.ConstVal).S = (yyvsp[(1) - (2)].TypeVal).S;
- delete (yyvsp[(1) - (2)].TypeVal).PAT;
+ (yyval.ConstVal) = (yyvsp[0].ConstVal);
+ (yyval.ConstVal).S.copy((yyvsp[-1].TypeVal).S);
+ delete (yyvsp[-1].TypeVal).PAT;
;}
break;
case 157:
-#line 2174 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2498 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(1) - (2)].TypeVal).PAT->get();
+ const Type *Ty = (yyvsp[-1].TypeVal).PAT->get();
if (isa<FunctionType>(Ty) || Ty == Type::LabelTy || isa<OpaqueType>(Ty))
error("Cannot create a null initialized value of this type");
(yyval.ConstVal).C = Constant::getNullValue(Ty);
- (yyval.ConstVal).S = (yyvsp[(1) - (2)].TypeVal).S;
- delete (yyvsp[(1) - (2)].TypeVal).PAT;
+ (yyval.ConstVal).S.copy((yyvsp[-1].TypeVal).S);
+ delete (yyvsp[-1].TypeVal).PAT;
;}
break;
case 158:
-#line 2182 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2506 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // integral constants
- const Type *Ty = (yyvsp[(1) - (2)].PrimType).T;
- if (!ConstantInt::isValueValidForType(Ty, (yyvsp[(2) - (2)].SInt64Val)))
+ const Type *Ty = (yyvsp[-1].PrimType).T;
+ if (!ConstantInt::isValueValidForType(Ty, (yyvsp[0].SInt64Val)))
error("Constant value doesn't fit in type");
- (yyval.ConstVal).C = ConstantInt::get(Ty, (yyvsp[(2) - (2)].SInt64Val));
- (yyval.ConstVal).S = Signed;
+ (yyval.ConstVal).C = ConstantInt::get(Ty, (yyvsp[0].SInt64Val));
+ (yyval.ConstVal).S.makeSigned();
;}
break;
case 159:
-#line 2189 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2513 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // integral constants
- const Type *Ty = (yyvsp[(1) - (2)].PrimType).T;
- if (!ConstantInt::isValueValidForType(Ty, (yyvsp[(2) - (2)].UInt64Val)))
+ const Type *Ty = (yyvsp[-1].PrimType).T;
+ if (!ConstantInt::isValueValidForType(Ty, (yyvsp[0].UInt64Val)))
error("Constant value doesn't fit in type");
- (yyval.ConstVal).C = ConstantInt::get(Ty, (yyvsp[(2) - (2)].UInt64Val));
- (yyval.ConstVal).S = Unsigned;
+ (yyval.ConstVal).C = ConstantInt::get(Ty, (yyvsp[0].UInt64Val));
+ (yyval.ConstVal).S.makeUnsigned();
;}
break;
case 160:
-#line 2196 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2520 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Boolean constants
(yyval.ConstVal).C = ConstantInt::get(Type::Int1Ty, true);
- (yyval.ConstVal).S = Unsigned;
+ (yyval.ConstVal).S.makeUnsigned();
;}
break;
case 161:
-#line 2200 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2524 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Boolean constants
(yyval.ConstVal).C = ConstantInt::get(Type::Int1Ty, false);
- (yyval.ConstVal).S = Unsigned;
+ (yyval.ConstVal).S.makeUnsigned();
;}
break;
case 162:
-#line 2204 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2528 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Float & Double constants
- if (!ConstantFP::isValueValidForType((yyvsp[(1) - (2)].PrimType).T, (yyvsp[(2) - (2)].FPVal)))
+ if (!ConstantFP::isValueValidForType((yyvsp[-1].PrimType).T, (yyvsp[0].FPVal)))
error("Floating point constant invalid for type");
- (yyval.ConstVal).C = ConstantFP::get((yyvsp[(1) - (2)].PrimType).T, (yyvsp[(2) - (2)].FPVal));
- (yyval.ConstVal).S = Signless;
+ (yyval.ConstVal).C = ConstantFP::get((yyvsp[-1].PrimType).T, (yyvsp[0].FPVal));
+ (yyval.ConstVal).S.makeSignless();
;}
break;
case 163:
-#line 2213 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2537 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type* SrcTy = (yyvsp[(3) - (6)].ConstVal).C->getType();
- const Type* DstTy = (yyvsp[(5) - (6)].TypeVal).PAT->get();
- Signedness SrcSign = (yyvsp[(3) - (6)].ConstVal).S;
- Signedness DstSign = (yyvsp[(5) - (6)].TypeVal).S;
+ const Type* SrcTy = (yyvsp[-3].ConstVal).C->getType();
+ const Type* DstTy = (yyvsp[-1].TypeVal).PAT->get();
+ Signedness SrcSign((yyvsp[-3].ConstVal).S);
+ Signedness DstSign((yyvsp[-1].TypeVal).S);
if (!SrcTy->isFirstClassType())
error("cast constant expression from a non-primitive type: '" +
SrcTy->getDescription() + "'");
if (!DstTy->isFirstClassType())
error("cast constant expression to a non-primitive type: '" +
DstTy->getDescription() + "'");
- (yyval.ConstVal).C = cast<Constant>(getCast((yyvsp[(1) - (6)].CastOpVal), (yyvsp[(3) - (6)].ConstVal).C, SrcSign, DstTy, DstSign));
- (yyval.ConstVal).S = DstSign;
- delete (yyvsp[(5) - (6)].TypeVal).PAT;
+ (yyval.ConstVal).C = cast<Constant>(getCast((yyvsp[-5].CastOpVal), (yyvsp[-3].ConstVal).C, SrcSign, DstTy, DstSign));
+ (yyval.ConstVal).S.copy(DstSign);
+ delete (yyvsp[-1].TypeVal).PAT;
;}
break;
case 164:
-#line 2228 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2552 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(3) - (5)].ConstVal).C->getType();
+ const Type *Ty = (yyvsp[-2].ConstVal).C->getType();
if (!isa<PointerType>(Ty))
error("GetElementPtr requires a pointer operand");
- std::vector<Value*> VIndices;
std::vector<Constant*> CIndices;
- upgradeGEPIndices((yyvsp[(3) - (5)].ConstVal).C->getType(), (yyvsp[(4) - (5)].ValueList), VIndices, &CIndices);
+ upgradeGEPCEIndices((yyvsp[-2].ConstVal).C->getType(), (yyvsp[-1].ValueList), CIndices);
- delete (yyvsp[(4) - (5)].ValueList);
- (yyval.ConstVal).C = ConstantExpr::getGetElementPtr((yyvsp[(3) - (5)].ConstVal).C, CIndices);
- (yyval.ConstVal).S = Signless;
+ delete (yyvsp[-1].ValueList);
+ (yyval.ConstVal).C = ConstantExpr::getGetElementPtr((yyvsp[-2].ConstVal).C, &CIndices[0], CIndices.size());
+ (yyval.ConstVal).S.copy(getElementSign((yyvsp[-2].ConstVal), CIndices));
;}
break;
case 165:
-#line 2241 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2564 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if (!(yyvsp[(3) - (8)].ConstVal).C->getType()->isInteger() ||
- cast<IntegerType>((yyvsp[(3) - (8)].ConstVal).C->getType())->getBitWidth() != 1)
+ if (!(yyvsp[-5].ConstVal).C->getType()->isInteger() ||
+ cast<IntegerType>((yyvsp[-5].ConstVal).C->getType())->getBitWidth() != 1)
error("Select condition must be bool type");
- if ((yyvsp[(5) - (8)].ConstVal).C->getType() != (yyvsp[(7) - (8)].ConstVal).C->getType())
+ if ((yyvsp[-3].ConstVal).C->getType() != (yyvsp[-1].ConstVal).C->getType())
error("Select operand types must match");
- (yyval.ConstVal).C = ConstantExpr::getSelect((yyvsp[(3) - (8)].ConstVal).C, (yyvsp[(5) - (8)].ConstVal).C, (yyvsp[(7) - (8)].ConstVal).C);
- (yyval.ConstVal).S = Unsigned;
+ (yyval.ConstVal).C = ConstantExpr::getSelect((yyvsp[-5].ConstVal).C, (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C);
+ (yyval.ConstVal).S.copy((yyvsp[-3].ConstVal).S);
;}
break;
case 166:
-#line 2250 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2573 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(3) - (6)].ConstVal).C->getType();
- if (Ty != (yyvsp[(5) - (6)].ConstVal).C->getType())
+ const Type *Ty = (yyvsp[-3].ConstVal).C->getType();
+ if (Ty != (yyvsp[-1].ConstVal).C->getType())
error("Binary operator types must match");
// First, make sure we're dealing with the right opcode by upgrading from
// obsolete versions.
- Instruction::BinaryOps Opcode = getBinaryOp((yyvsp[(1) - (6)].BinaryOpVal), Ty, (yyvsp[(3) - (6)].ConstVal).S);
+ Instruction::BinaryOps Opcode = getBinaryOp((yyvsp[-5].BinaryOpVal), Ty, (yyvsp[-3].ConstVal).S);
// HACK: llvm 1.3 and earlier used to emit invalid pointer constant exprs.
// To retain backward compatibility with these early compilers, we emit a
// cast to the appropriate integer type automatically if we are in the
// broken case. See PR424 for more information.
if (!isa<PointerType>(Ty)) {
- (yyval.ConstVal).C = ConstantExpr::get(Opcode, (yyvsp[(3) - (6)].ConstVal).C, (yyvsp[(5) - (6)].ConstVal).C);
+ (yyval.ConstVal).C = ConstantExpr::get(Opcode, (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C);
} else {
const Type *IntPtrTy = 0;
switch (CurModule.CurrentModule->getPointerSize()) {
default: error("invalid pointer binary constant expr");
}
(yyval.ConstVal).C = ConstantExpr::get(Opcode,
- ConstantExpr::getCast(Instruction::PtrToInt, (yyvsp[(3) - (6)].ConstVal).C, IntPtrTy),
- ConstantExpr::getCast(Instruction::PtrToInt, (yyvsp[(5) - (6)].ConstVal).C, IntPtrTy));
+ ConstantExpr::getCast(Instruction::PtrToInt, (yyvsp[-3].ConstVal).C, IntPtrTy),
+ ConstantExpr::getCast(Instruction::PtrToInt, (yyvsp[-1].ConstVal).C, IntPtrTy));
(yyval.ConstVal).C = ConstantExpr::getCast(Instruction::IntToPtr, (yyval.ConstVal).C, Ty);
}
- (yyval.ConstVal).S = (yyvsp[(3) - (6)].ConstVal).S;
+ (yyval.ConstVal).S.copy((yyvsp[-3].ConstVal).S);
;}
break;
case 167:
-#line 2278 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2601 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type* Ty = (yyvsp[(3) - (6)].ConstVal).C->getType();
- if (Ty != (yyvsp[(5) - (6)].ConstVal).C->getType())
+ const Type* Ty = (yyvsp[-3].ConstVal).C->getType();
+ if (Ty != (yyvsp[-1].ConstVal).C->getType())
error("Logical operator types must match");
if (!Ty->isInteger()) {
- if (!isa<PackedType>(Ty) ||
- !cast<PackedType>(Ty)->getElementType()->isInteger())
+ if (!isa<VectorType>(Ty) ||
+ !cast<VectorType>(Ty)->getElementType()->isInteger())
error("Logical operator requires integer operands");
}
- Instruction::BinaryOps Opcode = getBinaryOp((yyvsp[(1) - (6)].BinaryOpVal), Ty, (yyvsp[(3) - (6)].ConstVal).S);
- (yyval.ConstVal).C = ConstantExpr::get(Opcode, (yyvsp[(3) - (6)].ConstVal).C, (yyvsp[(5) - (6)].ConstVal).C);
- (yyval.ConstVal).S = (yyvsp[(3) - (6)].ConstVal).S;
+ Instruction::BinaryOps Opcode = getBinaryOp((yyvsp[-5].BinaryOpVal), Ty, (yyvsp[-3].ConstVal).S);
+ (yyval.ConstVal).C = ConstantExpr::get(Opcode, (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C);
+ (yyval.ConstVal).S.copy((yyvsp[-3].ConstVal).S);
;}
break;
case 168:
-#line 2291 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2614 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type* Ty = (yyvsp[(3) - (6)].ConstVal).C->getType();
- if (Ty != (yyvsp[(5) - (6)].ConstVal).C->getType())
+ const Type* Ty = (yyvsp[-3].ConstVal).C->getType();
+ if (Ty != (yyvsp[-1].ConstVal).C->getType())
error("setcc operand types must match");
unsigned short pred;
- Instruction::OtherOps Opcode = getCompareOp((yyvsp[(1) - (6)].BinaryOpVal), pred, Ty, (yyvsp[(3) - (6)].ConstVal).S);
- (yyval.ConstVal).C = ConstantExpr::getCompare(Opcode, (yyvsp[(3) - (6)].ConstVal).C, (yyvsp[(5) - (6)].ConstVal).C);
- (yyval.ConstVal).S = Unsigned;
+ Instruction::OtherOps Opcode = getCompareOp((yyvsp[-5].BinaryOpVal), pred, Ty, (yyvsp[-3].ConstVal).S);
+ (yyval.ConstVal).C = ConstantExpr::getCompare(Opcode, (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C);
+ (yyval.ConstVal).S.makeUnsigned();
;}
break;
case 169:
-#line 2300 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2623 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if ((yyvsp[(4) - (7)].ConstVal).C->getType() != (yyvsp[(6) - (7)].ConstVal).C->getType())
+ if ((yyvsp[-3].ConstVal).C->getType() != (yyvsp[-1].ConstVal).C->getType())
error("icmp operand types must match");
- (yyval.ConstVal).C = ConstantExpr::getCompare((yyvsp[(2) - (7)].IPred), (yyvsp[(4) - (7)].ConstVal).C, (yyvsp[(6) - (7)].ConstVal).C);
- (yyval.ConstVal).S = Unsigned;
+ (yyval.ConstVal).C = ConstantExpr::getCompare((yyvsp[-5].IPred), (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C);
+ (yyval.ConstVal).S.makeUnsigned();
;}
break;
case 170:
-#line 2306 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2629 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if ((yyvsp[(4) - (7)].ConstVal).C->getType() != (yyvsp[(6) - (7)].ConstVal).C->getType())
+ if ((yyvsp[-3].ConstVal).C->getType() != (yyvsp[-1].ConstVal).C->getType())
error("fcmp operand types must match");
- (yyval.ConstVal).C = ConstantExpr::getCompare((yyvsp[(2) - (7)].FPred), (yyvsp[(4) - (7)].ConstVal).C, (yyvsp[(6) - (7)].ConstVal).C);
- (yyval.ConstVal).S = Unsigned;
+ (yyval.ConstVal).C = ConstantExpr::getCompare((yyvsp[-5].FPred), (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C);
+ (yyval.ConstVal).S.makeUnsigned();
;}
break;
case 171:
-#line 2312 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2635 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if (!(yyvsp[(5) - (6)].ConstVal).C->getType()->isInteger() ||
- cast<IntegerType>((yyvsp[(5) - (6)].ConstVal).C->getType())->getBitWidth() != 8)
+ if (!(yyvsp[-1].ConstVal).C->getType()->isInteger() ||
+ cast<IntegerType>((yyvsp[-1].ConstVal).C->getType())->getBitWidth() != 8)
error("Shift count for shift constant must be unsigned byte");
- const Type* Ty = (yyvsp[(3) - (6)].ConstVal).C->getType();
- if (!(yyvsp[(3) - (6)].ConstVal).C->getType()->isInteger())
+ const Type* Ty = (yyvsp[-3].ConstVal).C->getType();
+ if (!(yyvsp[-3].ConstVal).C->getType()->isInteger())
error("Shift constant expression requires integer operand");
- Constant *ShiftAmt = ConstantExpr::getZExt((yyvsp[(5) - (6)].ConstVal).C, Ty);
- (yyval.ConstVal).C = ConstantExpr::get(getBinaryOp((yyvsp[(1) - (6)].BinaryOpVal), Ty, (yyvsp[(3) - (6)].ConstVal).S), (yyvsp[(3) - (6)].ConstVal).C, ShiftAmt);
- (yyval.ConstVal).S = (yyvsp[(3) - (6)].ConstVal).S;
+ Constant *ShiftAmt = ConstantExpr::getZExt((yyvsp[-1].ConstVal).C, Ty);
+ (yyval.ConstVal).C = ConstantExpr::get(getBinaryOp((yyvsp[-5].BinaryOpVal), Ty, (yyvsp[-3].ConstVal).S), (yyvsp[-3].ConstVal).C, ShiftAmt);
+ (yyval.ConstVal).S.copy((yyvsp[-3].ConstVal).S);
;}
break;
case 172:
-#line 2323 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2646 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if (!ExtractElementInst::isValidOperands((yyvsp[(3) - (6)].ConstVal).C, (yyvsp[(5) - (6)].ConstVal).C))
+ if (!ExtractElementInst::isValidOperands((yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C))
error("Invalid extractelement operands");
- (yyval.ConstVal).C = ConstantExpr::getExtractElement((yyvsp[(3) - (6)].ConstVal).C, (yyvsp[(5) - (6)].ConstVal).C);
- (yyval.ConstVal).S = (yyvsp[(3) - (6)].ConstVal).S;
+ (yyval.ConstVal).C = ConstantExpr::getExtractElement((yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C);
+ (yyval.ConstVal).S.copy((yyvsp[-3].ConstVal).S.get(0));
;}
break;
case 173:
-#line 2329 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2652 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if (!InsertElementInst::isValidOperands((yyvsp[(3) - (8)].ConstVal).C, (yyvsp[(5) - (8)].ConstVal).C, (yyvsp[(7) - (8)].ConstVal).C))
+ if (!InsertElementInst::isValidOperands((yyvsp[-5].ConstVal).C, (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C))
error("Invalid insertelement operands");
- (yyval.ConstVal).C = ConstantExpr::getInsertElement((yyvsp[(3) - (8)].ConstVal).C, (yyvsp[(5) - (8)].ConstVal).C, (yyvsp[(7) - (8)].ConstVal).C);
- (yyval.ConstVal).S = (yyvsp[(3) - (8)].ConstVal).S;
+ (yyval.ConstVal).C = ConstantExpr::getInsertElement((yyvsp[-5].ConstVal).C, (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C);
+ (yyval.ConstVal).S.copy((yyvsp[-5].ConstVal).S);
;}
break;
case 174:
-#line 2335 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2658 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if (!ShuffleVectorInst::isValidOperands((yyvsp[(3) - (8)].ConstVal).C, (yyvsp[(5) - (8)].ConstVal).C, (yyvsp[(7) - (8)].ConstVal).C))
+ if (!ShuffleVectorInst::isValidOperands((yyvsp[-5].ConstVal).C, (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C))
error("Invalid shufflevector operands");
- (yyval.ConstVal).C = ConstantExpr::getShuffleVector((yyvsp[(3) - (8)].ConstVal).C, (yyvsp[(5) - (8)].ConstVal).C, (yyvsp[(7) - (8)].ConstVal).C);
- (yyval.ConstVal).S = (yyvsp[(3) - (8)].ConstVal).S;
+ (yyval.ConstVal).C = ConstantExpr::getShuffleVector((yyvsp[-5].ConstVal).C, (yyvsp[-3].ConstVal).C, (yyvsp[-1].ConstVal).C);
+ (yyval.ConstVal).S.copy((yyvsp[-5].ConstVal).S);
;}
break;
case 175:
-#line 2346 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { ((yyval.ConstVector) = (yyvsp[(1) - (3)].ConstVector))->push_back((yyvsp[(3) - (3)].ConstVal)); ;}
+#line 2669 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { ((yyval.ConstVector) = (yyvsp[-2].ConstVector))->push_back((yyvsp[0].ConstVal)); ;}
break;
case 176:
-#line 2347 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2670 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
(yyval.ConstVector) = new std::vector<ConstInfo>();
- (yyval.ConstVector)->push_back((yyvsp[(1) - (1)].ConstVal));
+ (yyval.ConstVector)->push_back((yyvsp[0].ConstVal));
;}
break;
case 177:
-#line 2356 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2679 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.BoolVal) = false; ;}
break;
case 178:
-#line 2357 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2680 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.BoolVal) = true; ;}
break;
case 179:
-#line 2369 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2692 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.ModuleVal) = ParserResult = (yyvsp[(1) - (1)].ModuleVal);
+ (yyval.ModuleVal) = ParserResult = (yyvsp[0].ModuleVal);
CurModule.ModuleDone();
;}
break;
case 180:
-#line 2378 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ModuleVal) = (yyvsp[(1) - (2)].ModuleVal); CurFun.FunctionDone(); ;}
+#line 2701 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); CurFun.FunctionDone(); ;}
break;
case 181:
-#line 2379 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ModuleVal) = (yyvsp[(1) - (2)].ModuleVal); ;}
+#line 2702 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); ;}
break;
case 182:
-#line 2380 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ModuleVal) = (yyvsp[(1) - (4)].ModuleVal); ;}
+#line 2703 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ModuleVal) = (yyvsp[-3].ModuleVal); ;}
break;
case 183:
-#line 2381 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ModuleVal) = (yyvsp[(1) - (2)].ModuleVal); ;}
+#line 2704 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ModuleVal) = (yyvsp[-1].ModuleVal); ;}
break;
case 184:
-#line 2382 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2705 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
(yyval.ModuleVal) = CurModule.CurrentModule;
// Emit an error if there are any unresolved types left.
break;
case 185:
-#line 2398 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2721 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
// Eagerly resolve types. This is not an optimization, this is a
// requirement that is due to the fact that we could have this:
// If types are not resolved eagerly, then the two types will not be
// determined to be the same type!
//
- const Type* Ty = (yyvsp[(4) - (4)].TypeVal).PAT->get();
- ResolveTypeTo((yyvsp[(2) - (4)].StrVal), Ty);
+ ResolveTypeTo((yyvsp[-2].StrVal), (yyvsp[0].TypeVal).PAT->get(), (yyvsp[0].TypeVal).S);
- if (!setTypeName(Ty, (yyvsp[(2) - (4)].StrVal)) && !(yyvsp[(2) - (4)].StrVal)) {
- // If this is a named type that is not a redefinition, add it to the slot
- // table.
- CurModule.Types.push_back(Ty);
+ if (!setTypeName((yyvsp[0].TypeVal), (yyvsp[-2].StrVal)) && !(yyvsp[-2].StrVal)) {
+ // If this is a numbered type that is not a redefinition, add it to the
+ // slot table.
+ CurModule.Types.push_back((yyvsp[0].TypeVal).PAT->get());
+ CurModule.TypeSigns.push_back((yyvsp[0].TypeVal).S);
}
- delete (yyvsp[(4) - (4)].TypeVal).PAT;
+ delete (yyvsp[0].TypeVal).PAT;
;}
break;
case 186:
-#line 2418 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2741 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Function prototypes can be in const pool
;}
break;
case 187:
-#line 2420 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2743 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Asm blocks can be in the const pool
;}
break;
case 188:
-#line 2422 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2745 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if ((yyvsp[(5) - (5)].ConstVal).C == 0)
+ if ((yyvsp[0].ConstVal).C == 0)
error("Global value initializer is not a constant");
- CurGV = ParseGlobalVariable((yyvsp[(2) - (5)].StrVal), (yyvsp[(3) - (5)].Linkage), (yyvsp[(4) - (5)].BoolVal), (yyvsp[(5) - (5)].ConstVal).C->getType(), (yyvsp[(5) - (5)].ConstVal).C);
+ CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), (yyvsp[-2].Linkage), (yyvsp[-1].BoolVal), (yyvsp[0].ConstVal).C->getType(), (yyvsp[0].ConstVal).C, (yyvsp[0].ConstVal).S);
;}
break;
case 189:
-#line 2426 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2749 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
CurGV = 0;
;}
break;
case 190:
-#line 2429 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2752 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(5) - (5)].TypeVal).PAT->get();
- CurGV = ParseGlobalVariable((yyvsp[(2) - (5)].StrVal), GlobalValue::ExternalLinkage, (yyvsp[(4) - (5)].BoolVal), Ty, 0);
- delete (yyvsp[(5) - (5)].TypeVal).PAT;
+ const Type *Ty = (yyvsp[0].TypeVal).PAT->get();
+ CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::ExternalLinkage, (yyvsp[-1].BoolVal), Ty, 0,
+ (yyvsp[0].TypeVal).S);
+ delete (yyvsp[0].TypeVal).PAT;
;}
break;
case 191:
-#line 2433 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2757 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
CurGV = 0;
;}
break;
case 192:
-#line 2436 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2760 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(5) - (5)].TypeVal).PAT->get();
- CurGV = ParseGlobalVariable((yyvsp[(2) - (5)].StrVal), GlobalValue::DLLImportLinkage, (yyvsp[(4) - (5)].BoolVal), Ty, 0);
- delete (yyvsp[(5) - (5)].TypeVal).PAT;
+ const Type *Ty = (yyvsp[0].TypeVal).PAT->get();
+ CurGV = ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::DLLImportLinkage, (yyvsp[-1].BoolVal), Ty, 0,
+ (yyvsp[0].TypeVal).S);
+ delete (yyvsp[0].TypeVal).PAT;
;}
break;
case 193:
-#line 2440 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2765 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
CurGV = 0;
;}
break;
case 194:
-#line 2443 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2768 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(5) - (5)].TypeVal).PAT->get();
+ const Type *Ty = (yyvsp[0].TypeVal).PAT->get();
CurGV =
- ParseGlobalVariable((yyvsp[(2) - (5)].StrVal), GlobalValue::ExternalWeakLinkage, (yyvsp[(4) - (5)].BoolVal), Ty, 0);
- delete (yyvsp[(5) - (5)].TypeVal).PAT;
+ ParseGlobalVariable((yyvsp[-3].StrVal), GlobalValue::ExternalWeakLinkage, (yyvsp[-1].BoolVal), Ty, 0,
+ (yyvsp[0].TypeVal).S);
+ delete (yyvsp[0].TypeVal).PAT;
;}
break;
case 195:
-#line 2448 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2774 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
CurGV = 0;
;}
break;
case 196:
-#line 2451 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2777 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
;}
break;
case 197:
-#line 2453 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2779 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
;}
break;
case 198:
-#line 2455 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2781 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
;}
break;
case 199:
-#line 2460 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2786 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
const std::string &AsmSoFar = CurModule.CurrentModule->getModuleInlineAsm();
- char *EndStr = UnEscapeLexed((yyvsp[(1) - (1)].StrVal), true);
- std::string NewAsm((yyvsp[(1) - (1)].StrVal), EndStr);
- free((yyvsp[(1) - (1)].StrVal));
+ char *EndStr = UnEscapeLexed((yyvsp[0].StrVal), true);
+ std::string NewAsm((yyvsp[0].StrVal), EndStr);
+ free((yyvsp[0].StrVal));
if (AsmSoFar.empty())
CurModule.CurrentModule->setModuleInlineAsm(NewAsm);
break;
case 200:
-#line 2474 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2800 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.Endianness) = Module::BigEndian; ;}
break;
case 201:
-#line 2475 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2801 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.Endianness) = Module::LittleEndian; ;}
break;
case 202:
-#line 2479 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2805 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- CurModule.setEndianness((yyvsp[(3) - (3)].Endianness));
+ CurModule.setEndianness((yyvsp[0].Endianness));
;}
break;
case 203:
-#line 2482 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2808 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if ((yyvsp[(3) - (3)].UInt64Val) == 32)
+ if ((yyvsp[0].UInt64Val) == 32)
CurModule.setPointerSize(Module::Pointer32);
- else if ((yyvsp[(3) - (3)].UInt64Val) == 64)
+ else if ((yyvsp[0].UInt64Val) == 64)
CurModule.setPointerSize(Module::Pointer64);
else
- error("Invalid pointer size: '" + utostr((yyvsp[(3) - (3)].UInt64Val)) + "'");
+ error("Invalid pointer size: '" + utostr((yyvsp[0].UInt64Val)) + "'");
;}
break;
case 204:
-#line 2490 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2816 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- CurModule.CurrentModule->setTargetTriple((yyvsp[(3) - (3)].StrVal));
- free((yyvsp[(3) - (3)].StrVal));
+ CurModule.CurrentModule->setTargetTriple((yyvsp[0].StrVal));
+ free((yyvsp[0].StrVal));
;}
break;
case 205:
-#line 2494 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2820 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- CurModule.CurrentModule->setDataLayout((yyvsp[(3) - (3)].StrVal));
- free((yyvsp[(3) - (3)].StrVal));
+ CurModule.CurrentModule->setDataLayout((yyvsp[0].StrVal));
+ free((yyvsp[0].StrVal));
;}
break;
case 207:
-#line 2505 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2831 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- CurModule.CurrentModule->addLibrary((yyvsp[(3) - (3)].StrVal));
- free((yyvsp[(3) - (3)].StrVal));
+ CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal));
+ free((yyvsp[0].StrVal));
;}
break;
case 208:
-#line 2509 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2835 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- CurModule.CurrentModule->addLibrary((yyvsp[(1) - (1)].StrVal));
- free((yyvsp[(1) - (1)].StrVal));
+ CurModule.CurrentModule->addLibrary((yyvsp[0].StrVal));
+ free((yyvsp[0].StrVal));
;}
break;
case 209:
-#line 2513 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2839 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ ;}
break;
case 213:
-#line 2526 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2852 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.StrVal) = 0; ;}
break;
case 214:
-#line 2530 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2856 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if ((yyvsp[(1) - (2)].TypeVal).PAT->get() == Type::VoidTy)
+ if ((yyvsp[-1].TypeVal).PAT->get() == Type::VoidTy)
error("void typed arguments are invalid");
- (yyval.ArgVal) = new std::pair<PATypeInfo, char*>((yyvsp[(1) - (2)].TypeVal), (yyvsp[(2) - (2)].StrVal));
+ (yyval.ArgVal) = new std::pair<PATypeInfo, char*>((yyvsp[-1].TypeVal), (yyvsp[0].StrVal));
;}
break;
case 215:
-#line 2538 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2864 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.ArgList) = (yyvsp[(1) - (3)].ArgList);
- (yyval.ArgList)->push_back(*(yyvsp[(3) - (3)].ArgVal));
- delete (yyvsp[(3) - (3)].ArgVal);
+ (yyval.ArgList) = (yyvsp[-2].ArgList);
+ (yyval.ArgList)->push_back(*(yyvsp[0].ArgVal));
+ delete (yyvsp[0].ArgVal);
;}
break;
case 216:
-#line 2543 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2869 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
(yyval.ArgList) = new std::vector<std::pair<PATypeInfo,char*> >();
- (yyval.ArgList)->push_back(*(yyvsp[(1) - (1)].ArgVal));
- delete (yyvsp[(1) - (1)].ArgVal);
+ (yyval.ArgList)->push_back(*(yyvsp[0].ArgVal));
+ delete (yyvsp[0].ArgVal);
;}
break;
case 217:
-#line 2551 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ArgList) = (yyvsp[(1) - (1)].ArgList); ;}
+#line 2877 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ArgList) = (yyvsp[0].ArgList); ;}
break;
case 218:
-#line 2552 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2878 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.ArgList) = (yyvsp[(1) - (3)].ArgList);
+ (yyval.ArgList) = (yyvsp[-2].ArgList);
PATypeInfo VoidTI;
VoidTI.PAT = new PATypeHolder(Type::VoidTy);
- VoidTI.S = Signless;
+ VoidTI.S.makeSignless();
(yyval.ArgList)->push_back(std::pair<PATypeInfo, char*>(VoidTI, 0));
;}
break;
case 219:
-#line 2559 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2885 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
(yyval.ArgList) = new std::vector<std::pair<PATypeInfo,char*> >();
PATypeInfo VoidTI;
VoidTI.PAT = new PATypeHolder(Type::VoidTy);
- VoidTI.S = Signless;
+ VoidTI.S.makeSignless();
(yyval.ArgList)->push_back(std::pair<PATypeInfo, char*>(VoidTI, 0));
;}
break;
case 220:
-#line 2566 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2892 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.ArgList) = 0; ;}
break;
case 221:
-#line 2570 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 2896 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- UnEscapeLexed((yyvsp[(3) - (8)].StrVal));
- std::string FunctionName((yyvsp[(3) - (8)].StrVal));
- free((yyvsp[(3) - (8)].StrVal)); // Free strdup'd memory!
+ UnEscapeLexed((yyvsp[-5].StrVal));
+ std::string FunctionName((yyvsp[-5].StrVal));
+ free((yyvsp[-5].StrVal)); // Free strdup'd memory!
- const Type* RetTy = (yyvsp[(2) - (8)].TypeVal).PAT->get();
+ const Type* RetTy = (yyvsp[-6].TypeVal).PAT->get();
if (!RetTy->isFirstClassType() && RetTy != Type::VoidTy)
error("LLVM functions cannot return aggregate types");
+ Signedness FTySign;
+ FTySign.makeComposite((yyvsp[-6].TypeVal).S);
std::vector<const Type*> ParamTyList;
// In LLVM 2.0 the signatures of three varargs intrinsics changed to take
} else if (FunctionName == "llvm.va_copy") {
ParamTyList.push_back(PointerType::get(Type::Int8Ty));
ParamTyList.push_back(PointerType::get(Type::Int8Ty));
- } else if ((yyvsp[(5) - (8)].ArgList)) { // If there are arguments...
+ } else if ((yyvsp[-3].ArgList)) { // If there are arguments...
for (std::vector<std::pair<PATypeInfo,char*> >::iterator
- I = (yyvsp[(5) - (8)].ArgList)->begin(), E = (yyvsp[(5) - (8)].ArgList)->end(); I != E; ++I) {
+ I = (yyvsp[-3].ArgList)->begin(), E = (yyvsp[-3].ArgList)->end(); I != E; ++I) {
const Type *Ty = I->first.PAT->get();
ParamTyList.push_back(Ty);
+ FTySign.add(I->first.S);
}
}
// Convert the CSRet calling convention into the corresponding parameter
// attribute.
- FunctionType::ParamAttrsList ParamAttrs;
- if ((yyvsp[(1) - (8)].UIntVal) == OldCallingConv::CSRet) {
- ParamAttrs.push_back(FunctionType::NoAttributeSet); // result
- ParamAttrs.push_back(FunctionType::StructRetAttribute); // first arg
+ ParamAttrsList *ParamAttrs = 0;
+ if ((yyvsp[-7].UIntVal) == OldCallingConv::CSRet) {
+ ParamAttrs = new ParamAttrsList();
+ ParamAttrs->addAttributes(0, ParamAttr::None); // result
+ ParamAttrs->addAttributes(1, ParamAttr::StructRet); // first arg
}
- const FunctionType *FT = FunctionType::get(RetTy, ParamTyList, isVarArg,
- ParamAttrs);
+ const FunctionType *FT =
+ FunctionType::get(RetTy, ParamTyList, isVarArg, ParamAttrs);
const PointerType *PFT = PointerType::get(FT);
- delete (yyvsp[(2) - (8)].TypeVal).PAT;
+ delete (yyvsp[-6].TypeVal).PAT;
ValID ID;
if (!FunctionName.empty()) {
} else {
ID = ValID::create((int)CurModule.Values[PFT].size());
}
+ ID.S.makeComposite(FTySign);
Function *Fn = 0;
Module* M = CurModule.CurrentModule;
std::string NewName(makeNameUnique(FunctionName));
if (Conflict->hasInternalLinkage()) {
Conflict->setName(NewName);
- RenameMapKey Key = std::make_pair(FunctionName,Conflict->getType());
+ RenameMapKey Key =
+ makeRenameMapKey(FunctionName, Conflict->getType(), ID.S);
CurModule.RenameMap[Key] = NewName;
Fn = new Function(FT, CurFun.Linkage, FunctionName, M);
InsertValue(Fn, CurModule.Values);
} else {
Fn = new Function(FT, CurFun.Linkage, NewName, M);
InsertValue(Fn, CurModule.Values);
- RenameMapKey Key = std::make_pair(FunctionName,PFT);
+ RenameMapKey Key =
+ makeRenameMapKey(FunctionName, PFT, ID.S);
CurModule.RenameMap[Key] = NewName;
}
} else {
AI->setName("");
}
} else if (Conflict) {
- // We have two globals with the same name and different types.
+ // We have two globals with the same name and different types.
// Previously, this was permitted because the symbol table had
// "type planes" and names only needed to be distinct within a
// type plane. After PR411 was fixed, this is no loner the case.
// To resolve this we must rename one of the two.
if (Conflict->hasInternalLinkage()) {
- // We can safely renamed the Conflict.
+ // We can safely rename the Conflict.
+ RenameMapKey Key =
+ makeRenameMapKey(Conflict->getName(), Conflict->getType(),
+ CurModule.NamedValueSigns[Conflict->getName()]);
Conflict->setName(makeNameUnique(Conflict->getName()));
- RenameMapKey Key = std::make_pair(FunctionName,Conflict->getType());
CurModule.RenameMap[Key] = Conflict->getName();
Fn = new Function(FT, CurFun.Linkage, FunctionName, M);
InsertValue(Fn, CurModule.Values);
- } else if (CurFun.Linkage == GlobalValue::InternalLinkage) {
- // We can safely rename the function we're defining
- std::string NewName = makeNameUnique(FunctionName);
- Fn = new Function(FT, CurFun.Linkage, NewName, M);
- InsertValue(Fn, CurModule.Values);
- RenameMapKey Key = std::make_pair(FunctionName,PFT);
- CurModule.RenameMap[Key] = NewName;
- } else {
+ } else {
// We can't quietly rename either of these things, but we must
- // rename one of them. Generate a warning about the renaming and
- // elect to rename the thing we're now defining.
+ // rename one of them. Only if the function's linkage is internal can
+ // we forgo a warning message about the renamed function.
std::string NewName = makeNameUnique(FunctionName);
- warning("Renaming function '" + FunctionName + "' as '" + NewName +
- "' may cause linkage errors");
+ if (CurFun.Linkage != GlobalValue::InternalLinkage) {
+ warning("Renaming function '" + FunctionName + "' as '" + NewName +
+ "' may cause linkage errors");
+ }
+ // Elect to rename the thing we're now defining.
Fn = new Function(FT, CurFun.Linkage, NewName, M);
InsertValue(Fn, CurModule.Values);
- RenameMapKey Key = std::make_pair(FunctionName,PFT);
+ RenameMapKey Key = makeRenameMapKey(FunctionName, PFT, ID.S);
CurModule.RenameMap[Key] = NewName;
- }
+ }
} else {
// There's no conflict, just define the function
Fn = new Function(FT, CurFun.Linkage, FunctionName, M);
InsertValue(Fn, CurModule.Values);
}
+ } else {
+ // There's no conflict, just define the function
+ Fn = new Function(FT, CurFun.Linkage, FunctionName, M);
+ InsertValue(Fn, CurModule.Values);
}
+
CurFun.FunctionStart(Fn);
if (CurFun.isDeclare) {
// argument to another function.
Fn->setLinkage(CurFun.Linkage);
}
- Fn->setCallingConv(upgradeCallingConv((yyvsp[(1) - (8)].UIntVal)));
- Fn->setAlignment((yyvsp[(8) - (8)].UIntVal));
- if ((yyvsp[(7) - (8)].StrVal)) {
- Fn->setSection((yyvsp[(7) - (8)].StrVal));
- free((yyvsp[(7) - (8)].StrVal));
+ Fn->setCallingConv(upgradeCallingConv((yyvsp[-7].UIntVal)));
+ Fn->setAlignment((yyvsp[0].UIntVal));
+ if ((yyvsp[-1].StrVal)) {
+ Fn->setSection((yyvsp[-1].StrVal));
+ free((yyvsp[-1].StrVal));
}
// Add all of the arguments we parsed to the function...
- if ((yyvsp[(5) - (8)].ArgList)) { // Is null if empty...
+ if ((yyvsp[-3].ArgList)) { // Is null if empty...
if (isVarArg) { // Nuke the last entry
- assert((yyvsp[(5) - (8)].ArgList)->back().first.PAT->get() == Type::VoidTy &&
- (yyvsp[(5) - (8)].ArgList)->back().second == 0 && "Not a varargs marker");
- delete (yyvsp[(5) - (8)].ArgList)->back().first.PAT;
- (yyvsp[(5) - (8)].ArgList)->pop_back(); // Delete the last entry
+ assert((yyvsp[-3].ArgList)->back().first.PAT->get() == Type::VoidTy &&
+ (yyvsp[-3].ArgList)->back().second == 0 && "Not a varargs marker");
+ delete (yyvsp[-3].ArgList)->back().first.PAT;
+ (yyvsp[-3].ArgList)->pop_back(); // Delete the last entry
}
Function::arg_iterator ArgIt = Fn->arg_begin();
Function::arg_iterator ArgEnd = Fn->arg_end();
- std::vector<std::pair<PATypeInfo,char*> >::iterator I = (yyvsp[(5) - (8)].ArgList)->begin();
- std::vector<std::pair<PATypeInfo,char*> >::iterator E = (yyvsp[(5) - (8)].ArgList)->end();
+ std::vector<std::pair<PATypeInfo,char*> >::iterator I = (yyvsp[-3].ArgList)->begin();
+ std::vector<std::pair<PATypeInfo,char*> >::iterator E = (yyvsp[-3].ArgList)->end();
for ( ; I != E && ArgIt != ArgEnd; ++I, ++ArgIt) {
delete I->first.PAT; // Delete the typeholder...
- setValueName(ArgIt, I->second); // Insert arg into symtab...
+ ValueInfo VI; VI.V = ArgIt; VI.S.copy(I->first.S);
+ setValueName(VI, I->second); // Insert arg into symtab...
InsertValue(ArgIt);
}
- delete (yyvsp[(5) - (8)].ArgList); // We're now done with the argument list
+ delete (yyvsp[-3].ArgList); // We're now done with the argument list
}
;}
break;
case 224:
-#line 2750 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 3087 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { CurFun.Linkage = (yyvsp[0].Linkage); ;}
+ break;
+
+ case 225:
+#line 3087 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
(yyval.FunctionVal) = CurFun.CurrentFunction;
// Make sure that we keep track of the linkage type even if there was a
// previous "declare".
- (yyval.FunctionVal)->setLinkage((yyvsp[(1) - (3)].Linkage));
+ (yyval.FunctionVal)->setLinkage((yyvsp[-3].Linkage));
;}
break;
- case 227:
-#line 2764 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 228:
+#line 3101 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
+ (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
;}
break;
- case 228:
-#line 2769 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 229:
+#line 3106 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.Linkage) = GlobalValue::ExternalLinkage; ;}
break;
- case 229:
-#line 2770 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 230:
+#line 3107 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.Linkage) = GlobalValue::DLLImportLinkage; ;}
break;
- case 230:
-#line 2771 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 231:
+#line 3108 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.Linkage) = GlobalValue::ExternalWeakLinkage; ;}
break;
- case 231:
-#line 2775 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 232:
+#line 3112 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ CurFun.isDeclare = true; ;}
break;
- case 232:
-#line 2776 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { CurFun.Linkage = (yyvsp[(3) - (3)].Linkage); ;}
+ case 233:
+#line 3113 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { CurFun.Linkage = (yyvsp[0].Linkage); ;}
break;
- case 233:
-#line 2776 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 234:
+#line 3113 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
(yyval.FunctionVal) = CurFun.CurrentFunction;
CurFun.FunctionDone();
;}
break;
- case 234:
-#line 2788 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.BoolVal) = false; ;}
- break;
-
case 235:
-#line 2789 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.BoolVal) = true; ;}
+#line 3125 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.BoolVal) = false; ;}
break;
case 236:
-#line 2794 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].SInt64Val)); ;}
+#line 3126 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.BoolVal) = true; ;}
break;
case 237:
-#line 2795 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].UInt64Val)); ;}
+#line 3131 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ValIDVal) = ValID::create((yyvsp[0].SInt64Val)); ;}
break;
case 238:
-#line 2796 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].FPVal)); ;}
+#line 3132 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ValIDVal) = ValID::create((yyvsp[0].UInt64Val)); ;}
break;
case 239:
-#line 2797 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ValIDVal) = ValID::create(ConstantInt::get(Type::Int1Ty, true)); ;}
+#line 3133 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ValIDVal) = ValID::create((yyvsp[0].FPVal)); ;}
break;
case 240:
-#line 2798 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ValIDVal) = ValID::create(ConstantInt::get(Type::Int1Ty, false)); ;}
+#line 3134 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ {
+ (yyval.ValIDVal) = ValID::create(ConstantInt::get(Type::Int1Ty, true));
+ (yyval.ValIDVal).S.makeUnsigned();
+ ;}
break;
case 241:
-#line 2799 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ValIDVal) = ValID::createNull(); ;}
+#line 3138 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ {
+ (yyval.ValIDVal) = ValID::create(ConstantInt::get(Type::Int1Ty, false));
+ (yyval.ValIDVal).S.makeUnsigned();
+ ;}
break;
case 242:
-#line 2800 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ValIDVal) = ValID::createUndef(); ;}
+#line 3142 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ValIDVal) = ValID::createNull(); ;}
break;
case 243:
-#line 2801 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ValIDVal) = ValID::createZeroInit(); ;}
+#line 3143 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ValIDVal) = ValID::createUndef(); ;}
break;
case 244:
-#line 2802 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 3144 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ValIDVal) = ValID::createZeroInit(); ;}
+ break;
+
+ case 245:
+#line 3145 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Nonempty unsized packed vector
- const Type *ETy = (*(yyvsp[(2) - (3)].ConstVector))[0].C->getType();
- int NumElements = (yyvsp[(2) - (3)].ConstVector)->size();
- PackedType* pt = PackedType::get(ETy, NumElements);
- PATypeHolder* PTy = new PATypeHolder(
- HandleUpRefs(PackedType::get(ETy, NumElements)));
+ const Type *ETy = (*(yyvsp[-1].ConstVector))[0].C->getType();
+ int NumElements = (yyvsp[-1].ConstVector)->size();
+ VectorType* pt = VectorType::get(ETy, NumElements);
+ (yyval.ValIDVal).S.makeComposite((*(yyvsp[-1].ConstVector))[0].S);
+ PATypeHolder* PTy = new PATypeHolder(HandleUpRefs(pt, (yyval.ValIDVal).S));
// Verify all elements are correct type!
std::vector<Constant*> Elems;
- for (unsigned i = 0; i < (yyvsp[(2) - (3)].ConstVector)->size(); i++) {
- Constant *C = (*(yyvsp[(2) - (3)].ConstVector))[i].C;
+ for (unsigned i = 0; i < (yyvsp[-1].ConstVector)->size(); i++) {
+ Constant *C = (*(yyvsp[-1].ConstVector))[i].C;
const Type *CTy = C->getType();
if (ETy != CTy)
error("Element #" + utostr(i) + " is not of type '" +
CTy->getDescription() + "'");
Elems.push_back(C);
}
- (yyval.ValIDVal) = ValID::create(ConstantPacked::get(pt, Elems));
- delete PTy; delete (yyvsp[(2) - (3)].ConstVector);
+ (yyval.ValIDVal) = ValID::create(ConstantVector::get(pt, Elems));
+ delete PTy; delete (yyvsp[-1].ConstVector);
;}
break;
- case 245:
-#line 2823 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 246:
+#line 3166 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].ConstVal).C);
+ (yyval.ValIDVal) = ValID::create((yyvsp[0].ConstVal).C);
+ (yyval.ValIDVal).S.copy((yyvsp[0].ConstVal).S);
;}
break;
- case 246:
-#line 2826 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 247:
+#line 3170 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- char *End = UnEscapeLexed((yyvsp[(3) - (5)].StrVal), true);
- std::string AsmStr = std::string((yyvsp[(3) - (5)].StrVal), End);
- End = UnEscapeLexed((yyvsp[(5) - (5)].StrVal), true);
- std::string Constraints = std::string((yyvsp[(5) - (5)].StrVal), End);
- (yyval.ValIDVal) = ValID::createInlineAsm(AsmStr, Constraints, (yyvsp[(2) - (5)].BoolVal));
- free((yyvsp[(3) - (5)].StrVal));
- free((yyvsp[(5) - (5)].StrVal));
+ char *End = UnEscapeLexed((yyvsp[-2].StrVal), true);
+ std::string AsmStr = std::string((yyvsp[-2].StrVal), End);
+ End = UnEscapeLexed((yyvsp[0].StrVal), true);
+ std::string Constraints = std::string((yyvsp[0].StrVal), End);
+ (yyval.ValIDVal) = ValID::createInlineAsm(AsmStr, Constraints, (yyvsp[-3].BoolVal));
+ free((yyvsp[-2].StrVal));
+ free((yyvsp[0].StrVal));
;}
break;
- case 247:
-#line 2841 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].SIntVal)); ;}
+ case 248:
+#line 3184 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ValIDVal) = ValID::create((yyvsp[0].SIntVal)); (yyval.ValIDVal).S.makeSignless(); ;}
break;
- case 248:
-#line 2842 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ValIDVal) = ValID::create((yyvsp[(1) - (1)].StrVal)); ;}
+ case 249:
+#line 3185 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ValIDVal) = ValID::create((yyvsp[0].StrVal)); (yyval.ValIDVal).S.makeSignless(); ;}
break;
- case 251:
-#line 2855 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 252:
+#line 3198 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(1) - (2)].TypeVal).PAT->get();
- (yyval.ValueVal).S = (yyvsp[(1) - (2)].TypeVal).S;
- (yyval.ValueVal).V = getVal(Ty, (yyvsp[(2) - (2)].ValIDVal));
- delete (yyvsp[(1) - (2)].TypeVal).PAT;
+ const Type *Ty = (yyvsp[-1].TypeVal).PAT->get();
+ (yyvsp[0].ValIDVal).S.copy((yyvsp[-1].TypeVal).S);
+ (yyval.ValueVal).V = getVal(Ty, (yyvsp[0].ValIDVal));
+ (yyval.ValueVal).S.copy((yyvsp[-1].TypeVal).S);
+ delete (yyvsp[-1].TypeVal).PAT;
;}
break;
- case 252:
-#line 2864 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 253:
+#line 3208 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
+ (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
;}
break;
- case 253:
-#line 2867 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 254:
+#line 3211 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Do not allow functions with 0 basic blocks
- (yyval.FunctionVal) = (yyvsp[(1) - (2)].FunctionVal);
+ (yyval.FunctionVal) = (yyvsp[-1].FunctionVal);
;}
break;
- case 254:
-#line 2876 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 255:
+#line 3220 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- setValueName((yyvsp[(3) - (3)].TermInstVal), (yyvsp[(2) - (3)].StrVal));
- InsertValue((yyvsp[(3) - (3)].TermInstVal));
- (yyvsp[(1) - (3)].BasicBlockVal)->getInstList().push_back((yyvsp[(3) - (3)].TermInstVal));
- InsertValue((yyvsp[(1) - (3)].BasicBlockVal));
- (yyval.BasicBlockVal) = (yyvsp[(1) - (3)].BasicBlockVal);
+ ValueInfo VI; VI.V = (yyvsp[0].TermInstVal).TI; VI.S.copy((yyvsp[0].TermInstVal).S);
+ setValueName(VI, (yyvsp[-1].StrVal));
+ InsertValue((yyvsp[0].TermInstVal).TI);
+ (yyvsp[-2].BasicBlockVal)->getInstList().push_back((yyvsp[0].TermInstVal).TI);
+ InsertValue((yyvsp[-2].BasicBlockVal));
+ (yyval.BasicBlockVal) = (yyvsp[-2].BasicBlockVal);
;}
break;
- case 255:
-#line 2886 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 256:
+#line 3231 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if ((yyvsp[(2) - (2)].InstVal).I)
- (yyvsp[(1) - (2)].BasicBlockVal)->getInstList().push_back((yyvsp[(2) - (2)].InstVal).I);
- (yyval.BasicBlockVal) = (yyvsp[(1) - (2)].BasicBlockVal);
+ if ((yyvsp[0].InstVal).I)
+ (yyvsp[-1].BasicBlockVal)->getInstList().push_back((yyvsp[0].InstVal).I);
+ (yyval.BasicBlockVal) = (yyvsp[-1].BasicBlockVal);
;}
break;
- case 256:
-#line 2891 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 257:
+#line 3236 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.BasicBlockVal) = CurBB = getBBVal(ValID::create((int)CurFun.NextBBNum++), true);
+ (yyval.BasicBlockVal) = CurBB = getBBVal(ValID::create((int)CurFun.NextBBNum++),true);
// Make sure to move the basic block to the correct location in the
// function, instead of leaving it inserted wherever it was first
// referenced.
;}
break;
- case 257:
-#line 2900 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 258:
+#line 3245 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.BasicBlockVal) = CurBB = getBBVal(ValID::create((yyvsp[(1) - (1)].StrVal)), true);
+ (yyval.BasicBlockVal) = CurBB = getBBVal(ValID::create((yyvsp[0].StrVal)), true);
// Make sure to move the basic block to the correct location in the
// function, instead of leaving it inserted wherever it was first
// referenced.
;}
break;
- case 260:
-#line 2914 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 261:
+#line 3259 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Return with a result...
- (yyval.TermInstVal) = new ReturnInst((yyvsp[(2) - (2)].ValueVal).V);
+ (yyval.TermInstVal).TI = new ReturnInst((yyvsp[0].ValueVal).V);
+ (yyval.TermInstVal).S.makeSignless();
;}
break;
- case 261:
-#line 2917 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 262:
+#line 3263 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Return with no result...
- (yyval.TermInstVal) = new ReturnInst();
+ (yyval.TermInstVal).TI = new ReturnInst();
+ (yyval.TermInstVal).S.makeSignless();
;}
break;
- case 262:
-#line 2920 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 263:
+#line 3267 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Unconditional Branch...
- BasicBlock* tmpBB = getBBVal((yyvsp[(3) - (3)].ValIDVal));
- (yyval.TermInstVal) = new BranchInst(tmpBB);
+ BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal));
+ (yyval.TermInstVal).TI = new BranchInst(tmpBB);
+ (yyval.TermInstVal).S.makeSignless();
;}
break;
- case 263:
-#line 2924 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 264:
+#line 3272 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- BasicBlock* tmpBBA = getBBVal((yyvsp[(6) - (9)].ValIDVal));
- BasicBlock* tmpBBB = getBBVal((yyvsp[(9) - (9)].ValIDVal));
- Value* tmpVal = getVal(Type::Int1Ty, (yyvsp[(3) - (9)].ValIDVal));
- (yyval.TermInstVal) = new BranchInst(tmpBBA, tmpBBB, tmpVal);
+ (yyvsp[-3].ValIDVal).S.makeSignless();
+ (yyvsp[0].ValIDVal).S.makeSignless();
+ BasicBlock* tmpBBA = getBBVal((yyvsp[-3].ValIDVal));
+ BasicBlock* tmpBBB = getBBVal((yyvsp[0].ValIDVal));
+ (yyvsp[-6].ValIDVal).S.makeUnsigned();
+ Value* tmpVal = getVal(Type::Int1Ty, (yyvsp[-6].ValIDVal));
+ (yyval.TermInstVal).TI = new BranchInst(tmpBBA, tmpBBB, tmpVal);
+ (yyval.TermInstVal).S.makeSignless();
;}
break;
- case 264:
-#line 2930 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- {
- Value* tmpVal = getVal((yyvsp[(2) - (9)].PrimType).T, (yyvsp[(3) - (9)].ValIDVal));
- BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (9)].ValIDVal));
- SwitchInst *S = new SwitchInst(tmpVal, tmpBB, (yyvsp[(8) - (9)].JumpTable)->size());
- (yyval.TermInstVal) = S;
- std::vector<std::pair<Constant*,BasicBlock*> >::iterator I = (yyvsp[(8) - (9)].JumpTable)->begin(),
- E = (yyvsp[(8) - (9)].JumpTable)->end();
+ case 265:
+#line 3282 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ {
+ (yyvsp[-6].ValIDVal).S.copy((yyvsp[-7].PrimType).S);
+ Value* tmpVal = getVal((yyvsp[-7].PrimType).T, (yyvsp[-6].ValIDVal));
+ (yyvsp[-3].ValIDVal).S.makeSignless();
+ BasicBlock* tmpBB = getBBVal((yyvsp[-3].ValIDVal));
+ SwitchInst *S = new SwitchInst(tmpVal, tmpBB, (yyvsp[-1].JumpTable)->size());
+ (yyval.TermInstVal).TI = S;
+ (yyval.TermInstVal).S.makeSignless();
+ std::vector<std::pair<Constant*,BasicBlock*> >::iterator I = (yyvsp[-1].JumpTable)->begin(),
+ E = (yyvsp[-1].JumpTable)->end();
for (; I != E; ++I) {
if (ConstantInt *CI = dyn_cast<ConstantInt>(I->first))
S->addCase(CI, I->second);
else
error("Switch case is constant, but not a simple integer");
}
- delete (yyvsp[(8) - (9)].JumpTable);
+ delete (yyvsp[-1].JumpTable);
;}
break;
- case 265:
-#line 2945 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 266:
+#line 3300 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- Value* tmpVal = getVal((yyvsp[(2) - (8)].PrimType).T, (yyvsp[(3) - (8)].ValIDVal));
- BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (8)].ValIDVal));
+ (yyvsp[-5].ValIDVal).S.copy((yyvsp[-6].PrimType).S);
+ Value* tmpVal = getVal((yyvsp[-6].PrimType).T, (yyvsp[-5].ValIDVal));
+ (yyvsp[-2].ValIDVal).S.makeSignless();
+ BasicBlock* tmpBB = getBBVal((yyvsp[-2].ValIDVal));
SwitchInst *S = new SwitchInst(tmpVal, tmpBB, 0);
- (yyval.TermInstVal) = S;
+ (yyval.TermInstVal).TI = S;
+ (yyval.TermInstVal).S.makeSignless();
;}
break;
- case 266:
-#line 2952 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 267:
+#line 3310 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
const PointerType *PFTy;
const FunctionType *Ty;
+ Signedness FTySign;
- if (!(PFTy = dyn_cast<PointerType>((yyvsp[(3) - (13)].TypeVal).PAT->get())) ||
+ if (!(PFTy = dyn_cast<PointerType>((yyvsp[-10].TypeVal).PAT->get())) ||
!(Ty = dyn_cast<FunctionType>(PFTy->getElementType()))) {
// Pull out the types of all of the arguments...
std::vector<const Type*> ParamTypes;
- if ((yyvsp[(6) - (13)].ValueList)) {
- for (std::vector<ValueInfo>::iterator I = (yyvsp[(6) - (13)].ValueList)->begin(), E = (yyvsp[(6) - (13)].ValueList)->end();
- I != E; ++I)
+ FTySign.makeComposite((yyvsp[-10].TypeVal).S);
+ if ((yyvsp[-7].ValueList)) {
+ for (std::vector<ValueInfo>::iterator I = (yyvsp[-7].ValueList)->begin(), E = (yyvsp[-7].ValueList)->end();
+ I != E; ++I) {
ParamTypes.push_back((*I).V->getType());
+ FTySign.add(I->S);
+ }
}
- FunctionType::ParamAttrsList ParamAttrs;
- if ((yyvsp[(2) - (13)].UIntVal) == OldCallingConv::CSRet) {
- ParamAttrs.push_back(FunctionType::NoAttributeSet);
- ParamAttrs.push_back(FunctionType::StructRetAttribute);
+ ParamAttrsList *ParamAttrs = 0;
+ if ((yyvsp[-11].UIntVal) == OldCallingConv::CSRet) {
+ ParamAttrs = new ParamAttrsList();
+ ParamAttrs->addAttributes(0, ParamAttr::None); // Function result
+ ParamAttrs->addAttributes(1, ParamAttr::StructRet); // first param
}
bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy;
if (isVarArg) ParamTypes.pop_back();
- Ty = FunctionType::get((yyvsp[(3) - (13)].TypeVal).PAT->get(), ParamTypes, isVarArg, ParamAttrs);
+ Ty = FunctionType::get((yyvsp[-10].TypeVal).PAT->get(), ParamTypes, isVarArg, ParamAttrs);
PFTy = PointerType::get(Ty);
+ (yyval.TermInstVal).S.copy((yyvsp[-10].TypeVal).S);
+ } else {
+ FTySign = (yyvsp[-10].TypeVal).S;
+ // Get the signedness of the result type. $3 is the pointer to the
+ // function type so we get the 0th element to extract the function type,
+ // and then the 0th element again to get the result type.
+ (yyval.TermInstVal).S.copy((yyvsp[-10].TypeVal).S.get(0).get(0));
}
- Value *V = getVal(PFTy, (yyvsp[(4) - (13)].ValIDVal)); // Get the function we're calling...
- BasicBlock *Normal = getBBVal((yyvsp[(10) - (13)].ValIDVal));
- BasicBlock *Except = getBBVal((yyvsp[(13) - (13)].ValIDVal));
+
+ (yyvsp[-9].ValIDVal).S.makeComposite(FTySign);
+ Value *V = getVal(PFTy, (yyvsp[-9].ValIDVal)); // Get the function we're calling...
+ BasicBlock *Normal = getBBVal((yyvsp[-3].ValIDVal));
+ BasicBlock *Except = getBBVal((yyvsp[0].ValIDVal));
// Create the call node...
- if (!(yyvsp[(6) - (13)].ValueList)) { // Has no arguments?
- (yyval.TermInstVal) = new InvokeInst(V, Normal, Except, std::vector<Value*>());
+ if (!(yyvsp[-7].ValueList)) { // Has no arguments?
+ (yyval.TermInstVal).TI = new InvokeInst(V, Normal, Except, 0, 0);
} else { // Has arguments?
// Loop through FunctionType's arguments and ensure they are specified
// correctly!
//
FunctionType::param_iterator I = Ty->param_begin();
FunctionType::param_iterator E = Ty->param_end();
- std::vector<ValueInfo>::iterator ArgI = (yyvsp[(6) - (13)].ValueList)->begin(), ArgE = (yyvsp[(6) - (13)].ValueList)->end();
+ std::vector<ValueInfo>::iterator ArgI = (yyvsp[-7].ValueList)->begin(), ArgE = (yyvsp[-7].ValueList)->end();
std::vector<Value*> Args;
for (; ArgI != ArgE && I != E; ++ArgI, ++I) {
if (I != E || (ArgI != ArgE && !Ty->isVarArg()))
error("Invalid number of parameters detected");
- (yyval.TermInstVal) = new InvokeInst(V, Normal, Except, Args);
+ (yyval.TermInstVal).TI = new InvokeInst(V, Normal, Except, &Args[0], Args.size());
}
- cast<InvokeInst>((yyval.TermInstVal))->setCallingConv(upgradeCallingConv((yyvsp[(2) - (13)].UIntVal)));
- delete (yyvsp[(3) - (13)].TypeVal).PAT;
- delete (yyvsp[(6) - (13)].ValueList);
+ cast<InvokeInst>((yyval.TermInstVal).TI)->setCallingConv(upgradeCallingConv((yyvsp[-11].UIntVal)));
+ delete (yyvsp[-10].TypeVal).PAT;
+ delete (yyvsp[-7].ValueList);
;}
break;
- case 267:
-#line 3007 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 268:
+#line 3379 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.TermInstVal) = new UnwindInst();
+ (yyval.TermInstVal).TI = new UnwindInst();
+ (yyval.TermInstVal).S.makeSignless();
;}
break;
- case 268:
-#line 3010 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 269:
+#line 3383 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.TermInstVal) = new UnreachableInst();
+ (yyval.TermInstVal).TI = new UnreachableInst();
+ (yyval.TermInstVal).S.makeSignless();
;}
break;
- case 269:
-#line 3016 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 270:
+#line 3390 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.JumpTable) = (yyvsp[(1) - (6)].JumpTable);
- Constant *V = cast<Constant>(getExistingValue((yyvsp[(2) - (6)].PrimType).T, (yyvsp[(3) - (6)].ValIDVal)));
+ (yyval.JumpTable) = (yyvsp[-5].JumpTable);
+ (yyvsp[-3].ValIDVal).S.copy((yyvsp[-4].PrimType).S);
+ Constant *V = cast<Constant>(getExistingValue((yyvsp[-4].PrimType).T, (yyvsp[-3].ValIDVal)));
if (V == 0)
error("May only switch on a constant pool value");
- BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (6)].ValIDVal));
+ (yyvsp[0].ValIDVal).S.makeSignless();
+ BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal));
(yyval.JumpTable)->push_back(std::make_pair(V, tmpBB));
;}
break;
- case 270:
-#line 3026 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 271:
+#line 3402 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
(yyval.JumpTable) = new std::vector<std::pair<Constant*, BasicBlock*> >();
- Constant *V = cast<Constant>(getExistingValue((yyvsp[(1) - (5)].PrimType).T, (yyvsp[(2) - (5)].ValIDVal)));
+ (yyvsp[-3].ValIDVal).S.copy((yyvsp[-4].PrimType).S);
+ Constant *V = cast<Constant>(getExistingValue((yyvsp[-4].PrimType).T, (yyvsp[-3].ValIDVal)));
if (V == 0)
error("May only switch on a constant pool value");
- BasicBlock* tmpBB = getBBVal((yyvsp[(5) - (5)].ValIDVal));
+ (yyvsp[0].ValIDVal).S.makeSignless();
+ BasicBlock* tmpBB = getBBVal((yyvsp[0].ValIDVal));
(yyval.JumpTable)->push_back(std::make_pair(V, tmpBB));
;}
break;
- case 271:
-#line 3039 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 272:
+#line 3417 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
bool omit = false;
- if ((yyvsp[(1) - (2)].StrVal))
- if (BitCastInst *BCI = dyn_cast<BitCastInst>((yyvsp[(2) - (2)].InstVal).I))
+ if ((yyvsp[-1].StrVal))
+ if (BitCastInst *BCI = dyn_cast<BitCastInst>((yyvsp[0].InstVal).I))
if (BCI->getSrcTy() == BCI->getDestTy() &&
- BCI->getOperand(0)->getName() == (yyvsp[(1) - (2)].StrVal))
+ BCI->getOperand(0)->getName() == (yyvsp[-1].StrVal))
// This is a useless bit cast causing a name redefinition. It is
// a bit cast from a type to the same type of an operand with the
// same name as the name we would give this instruction. Since this
omit = true;
if (omit) {
(yyval.InstVal).I = 0;
- (yyval.InstVal).S = Signless;
+ (yyval.InstVal).S.makeSignless();
} else {
- setValueName((yyvsp[(2) - (2)].InstVal).I, (yyvsp[(1) - (2)].StrVal));
- InsertValue((yyvsp[(2) - (2)].InstVal).I);
- (yyval.InstVal) = (yyvsp[(2) - (2)].InstVal);
+ ValueInfo VI; VI.V = (yyvsp[0].InstVal).I; VI.S.copy((yyvsp[0].InstVal).S);
+ setValueName(VI, (yyvsp[-1].StrVal));
+ InsertValue((yyvsp[0].InstVal).I);
+ (yyval.InstVal) = (yyvsp[0].InstVal);
}
;}
break;
- case 272:
-#line 3068 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 273:
+#line 3447 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Used for PHI nodes
(yyval.PHIList).P = new std::list<std::pair<Value*, BasicBlock*> >();
- (yyval.PHIList).S = (yyvsp[(1) - (6)].TypeVal).S;
- Value* tmpVal = getVal((yyvsp[(1) - (6)].TypeVal).PAT->get(), (yyvsp[(3) - (6)].ValIDVal));
- BasicBlock* tmpBB = getBBVal((yyvsp[(5) - (6)].ValIDVal));
+ (yyval.PHIList).S.copy((yyvsp[-5].TypeVal).S);
+ (yyvsp[-3].ValIDVal).S.copy((yyvsp[-5].TypeVal).S);
+ Value* tmpVal = getVal((yyvsp[-5].TypeVal).PAT->get(), (yyvsp[-3].ValIDVal));
+ (yyvsp[-1].ValIDVal).S.makeSignless();
+ BasicBlock* tmpBB = getBBVal((yyvsp[-1].ValIDVal));
(yyval.PHIList).P->push_back(std::make_pair(tmpVal, tmpBB));
- delete (yyvsp[(1) - (6)].TypeVal).PAT;
+ delete (yyvsp[-5].TypeVal).PAT;
;}
break;
- case 273:
-#line 3076 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 274:
+#line 3457 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.PHIList) = (yyvsp[(1) - (7)].PHIList);
- Value* tmpVal = getVal((yyvsp[(1) - (7)].PHIList).P->front().first->getType(), (yyvsp[(4) - (7)].ValIDVal));
- BasicBlock* tmpBB = getBBVal((yyvsp[(6) - (7)].ValIDVal));
- (yyvsp[(1) - (7)].PHIList).P->push_back(std::make_pair(tmpVal, tmpBB));
+ (yyval.PHIList) = (yyvsp[-6].PHIList);
+ (yyvsp[-3].ValIDVal).S.copy((yyvsp[-6].PHIList).S);
+ Value* tmpVal = getVal((yyvsp[-6].PHIList).P->front().first->getType(), (yyvsp[-3].ValIDVal));
+ (yyvsp[-1].ValIDVal).S.makeSignless();
+ BasicBlock* tmpBB = getBBVal((yyvsp[-1].ValIDVal));
+ (yyvsp[-6].PHIList).P->push_back(std::make_pair(tmpVal, tmpBB));
;}
break;
- case 274:
-#line 3084 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 275:
+#line 3467 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ // Used for call statements, and memory insts...
(yyval.ValueList) = new std::vector<ValueInfo>();
- (yyval.ValueList)->push_back((yyvsp[(1) - (1)].ValueVal));
+ (yyval.ValueList)->push_back((yyvsp[0].ValueVal));
;}
break;
- case 275:
-#line 3088 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 276:
+#line 3471 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.ValueList) = (yyvsp[(1) - (3)].ValueList);
- (yyvsp[(1) - (3)].ValueList)->push_back((yyvsp[(3) - (3)].ValueVal));
+ (yyval.ValueList) = (yyvsp[-2].ValueList);
+ (yyvsp[-2].ValueList)->push_back((yyvsp[0].ValueVal));
;}
break;
- case 277:
-#line 3096 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 278:
+#line 3479 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{ (yyval.ValueList) = 0; ;}
break;
- case 278:
-#line 3100 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 279:
+#line 3483 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
(yyval.BoolVal) = true;
;}
break;
- case 279:
-#line 3103 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 280:
+#line 3486 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
(yyval.BoolVal) = false;
;}
break;
- case 280:
-#line 3109 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 281:
+#line 3492 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type* Ty = (yyvsp[(2) - (5)].TypeVal).PAT->get();
- if (!Ty->isInteger() && !Ty->isFloatingPoint() && !isa<PackedType>(Ty))
+ (yyvsp[-2].ValIDVal).S.copy((yyvsp[-3].TypeVal).S);
+ (yyvsp[0].ValIDVal).S.copy((yyvsp[-3].TypeVal).S);
+ const Type* Ty = (yyvsp[-3].TypeVal).PAT->get();
+ if (!Ty->isInteger() && !Ty->isFloatingPoint() && !isa<VectorType>(Ty))
error("Arithmetic operator requires integer, FP, or packed operands");
- if (isa<PackedType>(Ty) &&
- ((yyvsp[(1) - (5)].BinaryOpVal) == URemOp || (yyvsp[(1) - (5)].BinaryOpVal) == SRemOp || (yyvsp[(1) - (5)].BinaryOpVal) == FRemOp || (yyvsp[(1) - (5)].BinaryOpVal) == RemOp))
- error("Remainder not supported on packed types");
+ if (isa<VectorType>(Ty) &&
+ ((yyvsp[-4].BinaryOpVal) == URemOp || (yyvsp[-4].BinaryOpVal) == SRemOp || (yyvsp[-4].BinaryOpVal) == FRemOp || (yyvsp[-4].BinaryOpVal) == RemOp))
+ error("Remainder not supported on vector types");
// Upgrade the opcode from obsolete versions before we do anything with it.
- Instruction::BinaryOps Opcode = getBinaryOp((yyvsp[(1) - (5)].BinaryOpVal), Ty, (yyvsp[(2) - (5)].TypeVal).S);
- Value* val1 = getVal(Ty, (yyvsp[(3) - (5)].ValIDVal));
- Value* val2 = getVal(Ty, (yyvsp[(5) - (5)].ValIDVal));
+ Instruction::BinaryOps Opcode = getBinaryOp((yyvsp[-4].BinaryOpVal), Ty, (yyvsp[-3].TypeVal).S);
+ Value* val1 = getVal(Ty, (yyvsp[-2].ValIDVal));
+ Value* val2 = getVal(Ty, (yyvsp[0].ValIDVal));
(yyval.InstVal).I = BinaryOperator::create(Opcode, val1, val2);
if ((yyval.InstVal).I == 0)
error("binary operator returned null");
- (yyval.InstVal).S = (yyvsp[(2) - (5)].TypeVal).S;
- delete (yyvsp[(2) - (5)].TypeVal).PAT;
+ (yyval.InstVal).S.copy((yyvsp[-3].TypeVal).S);
+ delete (yyvsp[-3].TypeVal).PAT;
;}
break;
- case 281:
-#line 3126 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 282:
+#line 3511 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(2) - (5)].TypeVal).PAT->get();
+ (yyvsp[-2].ValIDVal).S.copy((yyvsp[-3].TypeVal).S);
+ (yyvsp[0].ValIDVal).S.copy((yyvsp[-3].TypeVal).S);
+ const Type *Ty = (yyvsp[-3].TypeVal).PAT->get();
if (!Ty->isInteger()) {
- if (!isa<PackedType>(Ty) ||
- !cast<PackedType>(Ty)->getElementType()->isInteger())
+ if (!isa<VectorType>(Ty) ||
+ !cast<VectorType>(Ty)->getElementType()->isInteger())
error("Logical operator requires integral operands");
}
- Instruction::BinaryOps Opcode = getBinaryOp((yyvsp[(1) - (5)].BinaryOpVal), Ty, (yyvsp[(2) - (5)].TypeVal).S);
- Value* tmpVal1 = getVal(Ty, (yyvsp[(3) - (5)].ValIDVal));
- Value* tmpVal2 = getVal(Ty, (yyvsp[(5) - (5)].ValIDVal));
+ Instruction::BinaryOps Opcode = getBinaryOp((yyvsp[-4].BinaryOpVal), Ty, (yyvsp[-3].TypeVal).S);
+ Value* tmpVal1 = getVal(Ty, (yyvsp[-2].ValIDVal));
+ Value* tmpVal2 = getVal(Ty, (yyvsp[0].ValIDVal));
(yyval.InstVal).I = BinaryOperator::create(Opcode, tmpVal1, tmpVal2);
if ((yyval.InstVal).I == 0)
error("binary operator returned null");
- (yyval.InstVal).S = (yyvsp[(2) - (5)].TypeVal).S;
- delete (yyvsp[(2) - (5)].TypeVal).PAT;
+ (yyval.InstVal).S.copy((yyvsp[-3].TypeVal).S);
+ delete (yyvsp[-3].TypeVal).PAT;
;}
break;
- case 282:
-#line 3142 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 283:
+#line 3529 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type* Ty = (yyvsp[(2) - (5)].TypeVal).PAT->get();
- if(isa<PackedType>(Ty))
- error("PackedTypes currently not supported in setcc instructions");
+ (yyvsp[-2].ValIDVal).S.copy((yyvsp[-3].TypeVal).S);
+ (yyvsp[0].ValIDVal).S.copy((yyvsp[-3].TypeVal).S);
+ const Type* Ty = (yyvsp[-3].TypeVal).PAT->get();
+ if(isa<VectorType>(Ty))
+ error("VectorTypes currently not supported in setcc instructions");
unsigned short pred;
- Instruction::OtherOps Opcode = getCompareOp((yyvsp[(1) - (5)].BinaryOpVal), pred, Ty, (yyvsp[(2) - (5)].TypeVal).S);
- Value* tmpVal1 = getVal(Ty, (yyvsp[(3) - (5)].ValIDVal));
- Value* tmpVal2 = getVal(Ty, (yyvsp[(5) - (5)].ValIDVal));
+ Instruction::OtherOps Opcode = getCompareOp((yyvsp[-4].BinaryOpVal), pred, Ty, (yyvsp[-3].TypeVal).S);
+ Value* tmpVal1 = getVal(Ty, (yyvsp[-2].ValIDVal));
+ Value* tmpVal2 = getVal(Ty, (yyvsp[0].ValIDVal));
(yyval.InstVal).I = CmpInst::create(Opcode, pred, tmpVal1, tmpVal2);
if ((yyval.InstVal).I == 0)
error("binary operator returned null");
- (yyval.InstVal).S = Unsigned;
- delete (yyvsp[(2) - (5)].TypeVal).PAT;
+ (yyval.InstVal).S.makeUnsigned();
+ delete (yyvsp[-3].TypeVal).PAT;
;}
break;
- case 283:
-#line 3156 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 284:
+#line 3545 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(3) - (6)].TypeVal).PAT->get();
- if (isa<PackedType>(Ty))
- error("PackedTypes currently not supported in icmp instructions");
+ (yyvsp[-2].ValIDVal).S.copy((yyvsp[-3].TypeVal).S);
+ (yyvsp[0].ValIDVal).S.copy((yyvsp[-3].TypeVal).S);
+ const Type *Ty = (yyvsp[-3].TypeVal).PAT->get();
+ if (isa<VectorType>(Ty))
+ error("VectorTypes currently not supported in icmp instructions");
else if (!Ty->isInteger() && !isa<PointerType>(Ty))
error("icmp requires integer or pointer typed operands");
- Value* tmpVal1 = getVal(Ty, (yyvsp[(4) - (6)].ValIDVal));
- Value* tmpVal2 = getVal(Ty, (yyvsp[(6) - (6)].ValIDVal));
- (yyval.InstVal).I = new ICmpInst((yyvsp[(2) - (6)].IPred), tmpVal1, tmpVal2);
- (yyval.InstVal).S = Unsigned;
- delete (yyvsp[(3) - (6)].TypeVal).PAT;
+ Value* tmpVal1 = getVal(Ty, (yyvsp[-2].ValIDVal));
+ Value* tmpVal2 = getVal(Ty, (yyvsp[0].ValIDVal));
+ (yyval.InstVal).I = new ICmpInst((yyvsp[-4].IPred), tmpVal1, tmpVal2);
+ (yyval.InstVal).S.makeUnsigned();
+ delete (yyvsp[-3].TypeVal).PAT;
;}
break;
- case 284:
-#line 3168 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 285:
+#line 3559 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(3) - (6)].TypeVal).PAT->get();
- if (isa<PackedType>(Ty))
- error("PackedTypes currently not supported in fcmp instructions");
+ (yyvsp[-2].ValIDVal).S.copy((yyvsp[-3].TypeVal).S);
+ (yyvsp[0].ValIDVal).S.copy((yyvsp[-3].TypeVal).S);
+ const Type *Ty = (yyvsp[-3].TypeVal).PAT->get();
+ if (isa<VectorType>(Ty))
+ error("VectorTypes currently not supported in fcmp instructions");
else if (!Ty->isFloatingPoint())
error("fcmp instruction requires floating point operands");
- Value* tmpVal1 = getVal(Ty, (yyvsp[(4) - (6)].ValIDVal));
- Value* tmpVal2 = getVal(Ty, (yyvsp[(6) - (6)].ValIDVal));
- (yyval.InstVal).I = new FCmpInst((yyvsp[(2) - (6)].FPred), tmpVal1, tmpVal2);
- (yyval.InstVal).S = Unsigned;
- delete (yyvsp[(3) - (6)].TypeVal).PAT;
+ Value* tmpVal1 = getVal(Ty, (yyvsp[-2].ValIDVal));
+ Value* tmpVal2 = getVal(Ty, (yyvsp[0].ValIDVal));
+ (yyval.InstVal).I = new FCmpInst((yyvsp[-4].FPred), tmpVal1, tmpVal2);
+ (yyval.InstVal).S.makeUnsigned();
+ delete (yyvsp[-3].TypeVal).PAT;
;}
break;
- case 285:
-#line 3180 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 286:
+#line 3573 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
warning("Use of obsolete 'not' instruction: Replacing with 'xor");
- const Type *Ty = (yyvsp[(2) - (2)].ValueVal).V->getType();
+ const Type *Ty = (yyvsp[0].ValueVal).V->getType();
Value *Ones = ConstantInt::getAllOnesValue(Ty);
if (Ones == 0)
error("Expected integral type for not instruction");
- (yyval.InstVal).I = BinaryOperator::create(Instruction::Xor, (yyvsp[(2) - (2)].ValueVal).V, Ones);
+ (yyval.InstVal).I = BinaryOperator::create(Instruction::Xor, (yyvsp[0].ValueVal).V, Ones);
if ((yyval.InstVal).I == 0)
error("Could not create a xor instruction");
- (yyval.InstVal).S = (yyvsp[(2) - (2)].ValueVal).S
+ (yyval.InstVal).S.copy((yyvsp[0].ValueVal).S);
;}
break;
- case 286:
-#line 3191 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 287:
+#line 3584 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if (!(yyvsp[(4) - (4)].ValueVal).V->getType()->isInteger() ||
- cast<IntegerType>((yyvsp[(4) - (4)].ValueVal).V->getType())->getBitWidth() != 8)
+ if (!(yyvsp[0].ValueVal).V->getType()->isInteger() ||
+ cast<IntegerType>((yyvsp[0].ValueVal).V->getType())->getBitWidth() != 8)
error("Shift amount must be int8");
- const Type* Ty = (yyvsp[(2) - (4)].ValueVal).V->getType();
+ const Type* Ty = (yyvsp[-2].ValueVal).V->getType();
if (!Ty->isInteger())
error("Shift constant expression requires integer operand");
Value* ShiftAmt = 0;
if (cast<IntegerType>(Ty)->getBitWidth() > Type::Int8Ty->getBitWidth())
- if (Constant *C = dyn_cast<Constant>((yyvsp[(4) - (4)].ValueVal).V))
+ if (Constant *C = dyn_cast<Constant>((yyvsp[0].ValueVal).V))
ShiftAmt = ConstantExpr::getZExt(C, Ty);
else
- ShiftAmt = new ZExtInst((yyvsp[(4) - (4)].ValueVal).V, Ty, makeNameUnique("shift"), CurBB);
+ ShiftAmt = new ZExtInst((yyvsp[0].ValueVal).V, Ty, makeNameUnique("shift"), CurBB);
else
- ShiftAmt = (yyvsp[(4) - (4)].ValueVal).V;
- (yyval.InstVal).I = BinaryOperator::create(getBinaryOp((yyvsp[(1) - (4)].BinaryOpVal), Ty, (yyvsp[(2) - (4)].ValueVal).S), (yyvsp[(2) - (4)].ValueVal).V, ShiftAmt);
- (yyval.InstVal).S = (yyvsp[(2) - (4)].ValueVal).S;
+ ShiftAmt = (yyvsp[0].ValueVal).V;
+ (yyval.InstVal).I = BinaryOperator::create(getBinaryOp((yyvsp[-3].BinaryOpVal), Ty, (yyvsp[-2].ValueVal).S), (yyvsp[-2].ValueVal).V, ShiftAmt);
+ (yyval.InstVal).S.copy((yyvsp[-2].ValueVal).S);
;}
break;
- case 287:
-#line 3209 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 288:
+#line 3602 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *DstTy = (yyvsp[(4) - (4)].TypeVal).PAT->get();
+ const Type *DstTy = (yyvsp[0].TypeVal).PAT->get();
if (!DstTy->isFirstClassType())
error("cast instruction to a non-primitive type: '" +
DstTy->getDescription() + "'");
- (yyval.InstVal).I = cast<Instruction>(getCast((yyvsp[(1) - (4)].CastOpVal), (yyvsp[(2) - (4)].ValueVal).V, (yyvsp[(2) - (4)].ValueVal).S, DstTy, (yyvsp[(4) - (4)].TypeVal).S, true));
- (yyval.InstVal).S = (yyvsp[(4) - (4)].TypeVal).S;
- delete (yyvsp[(4) - (4)].TypeVal).PAT;
+ (yyval.InstVal).I = cast<Instruction>(getCast((yyvsp[-3].CastOpVal), (yyvsp[-2].ValueVal).V, (yyvsp[-2].ValueVal).S, DstTy, (yyvsp[0].TypeVal).S, true));
+ (yyval.InstVal).S.copy((yyvsp[0].TypeVal).S);
+ delete (yyvsp[0].TypeVal).PAT;
;}
break;
- case 288:
-#line 3218 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 289:
+#line 3611 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if (!(yyvsp[(2) - (6)].ValueVal).V->getType()->isInteger() ||
- cast<IntegerType>((yyvsp[(2) - (6)].ValueVal).V->getType())->getBitWidth() != 1)
+ if (!(yyvsp[-4].ValueVal).V->getType()->isInteger() ||
+ cast<IntegerType>((yyvsp[-4].ValueVal).V->getType())->getBitWidth() != 1)
error("select condition must be bool");
- if ((yyvsp[(4) - (6)].ValueVal).V->getType() != (yyvsp[(6) - (6)].ValueVal).V->getType())
+ if ((yyvsp[-2].ValueVal).V->getType() != (yyvsp[0].ValueVal).V->getType())
error("select value types should match");
- (yyval.InstVal).I = new SelectInst((yyvsp[(2) - (6)].ValueVal).V, (yyvsp[(4) - (6)].ValueVal).V, (yyvsp[(6) - (6)].ValueVal).V);
- (yyval.InstVal).S = (yyvsp[(2) - (6)].ValueVal).S;
+ (yyval.InstVal).I = new SelectInst((yyvsp[-4].ValueVal).V, (yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V);
+ (yyval.InstVal).S.copy((yyvsp[-2].ValueVal).S);
;}
break;
- case 289:
-#line 3227 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 290:
+#line 3620 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(4) - (4)].TypeVal).PAT->get();
+ const Type *Ty = (yyvsp[0].TypeVal).PAT->get();
NewVarArgs = true;
- (yyval.InstVal).I = new VAArgInst((yyvsp[(2) - (4)].ValueVal).V, Ty);
- (yyval.InstVal).S = (yyvsp[(4) - (4)].TypeVal).S;
- delete (yyvsp[(4) - (4)].TypeVal).PAT;
+ (yyval.InstVal).I = new VAArgInst((yyvsp[-2].ValueVal).V, Ty);
+ (yyval.InstVal).S.copy((yyvsp[0].TypeVal).S);
+ delete (yyvsp[0].TypeVal).PAT;
;}
break;
- case 290:
-#line 3234 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 291:
+#line 3627 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type* ArgTy = (yyvsp[(2) - (4)].ValueVal).V->getType();
- const Type* DstTy = (yyvsp[(4) - (4)].TypeVal).PAT->get();
+ const Type* ArgTy = (yyvsp[-2].ValueVal).V->getType();
+ const Type* DstTy = (yyvsp[0].TypeVal).PAT->get();
ObsoleteVarArgs = true;
Function* NF = cast<Function>(CurModule.CurrentModule->
getOrInsertFunction("llvm.va_copy", ArgTy, ArgTy, (Type *)0));
//b = vaarg foo, t
AllocaInst* foo = new AllocaInst(ArgTy, 0, "vaarg.fix");
CurBB->getInstList().push_back(foo);
- CallInst* bar = new CallInst(NF, (yyvsp[(2) - (4)].ValueVal).V);
+ CallInst* bar = new CallInst(NF, (yyvsp[-2].ValueVal).V);
CurBB->getInstList().push_back(bar);
CurBB->getInstList().push_back(new StoreInst(bar, foo));
(yyval.InstVal).I = new VAArgInst(foo, DstTy);
- (yyval.InstVal).S = (yyvsp[(4) - (4)].TypeVal).S;
- delete (yyvsp[(4) - (4)].TypeVal).PAT;
+ (yyval.InstVal).S.copy((yyvsp[0].TypeVal).S);
+ delete (yyvsp[0].TypeVal).PAT;
;}
break;
- case 291:
-#line 3255 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 292:
+#line 3648 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type* ArgTy = (yyvsp[(2) - (4)].ValueVal).V->getType();
- const Type* DstTy = (yyvsp[(4) - (4)].TypeVal).PAT->get();
+ const Type* ArgTy = (yyvsp[-2].ValueVal).V->getType();
+ const Type* DstTy = (yyvsp[0].TypeVal).PAT->get();
ObsoleteVarArgs = true;
Function* NF = cast<Function>(CurModule.CurrentModule->
getOrInsertFunction("llvm.va_copy", ArgTy, ArgTy, (Type *)0));
//b = load foo
AllocaInst* foo = new AllocaInst(ArgTy, 0, "vanext.fix");
CurBB->getInstList().push_back(foo);
- CallInst* bar = new CallInst(NF, (yyvsp[(2) - (4)].ValueVal).V);
+ CallInst* bar = new CallInst(NF, (yyvsp[-2].ValueVal).V);
CurBB->getInstList().push_back(bar);
CurBB->getInstList().push_back(new StoreInst(bar, foo));
Instruction* tmp = new VAArgInst(foo, DstTy);
CurBB->getInstList().push_back(tmp);
(yyval.InstVal).I = new LoadInst(foo);
- (yyval.InstVal).S = (yyvsp[(4) - (4)].TypeVal).S;
- delete (yyvsp[(4) - (4)].TypeVal).PAT;
+ (yyval.InstVal).S.copy((yyvsp[0].TypeVal).S);
+ delete (yyvsp[0].TypeVal).PAT;
;}
break;
- case 292:
-#line 3279 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 293:
+#line 3672 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if (!ExtractElementInst::isValidOperands((yyvsp[(2) - (4)].ValueVal).V, (yyvsp[(4) - (4)].ValueVal).V))
+ if (!ExtractElementInst::isValidOperands((yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V))
error("Invalid extractelement operands");
- (yyval.InstVal).I = new ExtractElementInst((yyvsp[(2) - (4)].ValueVal).V, (yyvsp[(4) - (4)].ValueVal).V);
- (yyval.InstVal).S = (yyvsp[(2) - (4)].ValueVal).S;
+ (yyval.InstVal).I = new ExtractElementInst((yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V);
+ (yyval.InstVal).S.copy((yyvsp[-2].ValueVal).S.get(0));
;}
break;
- case 293:
-#line 3285 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 294:
+#line 3678 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if (!InsertElementInst::isValidOperands((yyvsp[(2) - (6)].ValueVal).V, (yyvsp[(4) - (6)].ValueVal).V, (yyvsp[(6) - (6)].ValueVal).V))
+ if (!InsertElementInst::isValidOperands((yyvsp[-4].ValueVal).V, (yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V))
error("Invalid insertelement operands");
- (yyval.InstVal).I = new InsertElementInst((yyvsp[(2) - (6)].ValueVal).V, (yyvsp[(4) - (6)].ValueVal).V, (yyvsp[(6) - (6)].ValueVal).V);
- (yyval.InstVal).S = (yyvsp[(2) - (6)].ValueVal).S;
+ (yyval.InstVal).I = new InsertElementInst((yyvsp[-4].ValueVal).V, (yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V);
+ (yyval.InstVal).S.copy((yyvsp[-4].ValueVal).S);
;}
break;
- case 294:
-#line 3291 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 295:
+#line 3684 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- if (!ShuffleVectorInst::isValidOperands((yyvsp[(2) - (6)].ValueVal).V, (yyvsp[(4) - (6)].ValueVal).V, (yyvsp[(6) - (6)].ValueVal).V))
+ if (!ShuffleVectorInst::isValidOperands((yyvsp[-4].ValueVal).V, (yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V))
error("Invalid shufflevector operands");
- (yyval.InstVal).I = new ShuffleVectorInst((yyvsp[(2) - (6)].ValueVal).V, (yyvsp[(4) - (6)].ValueVal).V, (yyvsp[(6) - (6)].ValueVal).V);
- (yyval.InstVal).S = (yyvsp[(2) - (6)].ValueVal).S;
+ (yyval.InstVal).I = new ShuffleVectorInst((yyvsp[-4].ValueVal).V, (yyvsp[-2].ValueVal).V, (yyvsp[0].ValueVal).V);
+ (yyval.InstVal).S.copy((yyvsp[-4].ValueVal).S);
;}
break;
- case 295:
-#line 3297 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 296:
+#line 3690 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(2) - (2)].PHIList).P->front().first->getType();
+ const Type *Ty = (yyvsp[0].PHIList).P->front().first->getType();
if (!Ty->isFirstClassType())
error("PHI node operands must be of first class type");
PHINode *PHI = new PHINode(Ty);
- PHI->reserveOperandSpace((yyvsp[(2) - (2)].PHIList).P->size());
- while ((yyvsp[(2) - (2)].PHIList).P->begin() != (yyvsp[(2) - (2)].PHIList).P->end()) {
- if ((yyvsp[(2) - (2)].PHIList).P->front().first->getType() != Ty)
+ PHI->reserveOperandSpace((yyvsp[0].PHIList).P->size());
+ while ((yyvsp[0].PHIList).P->begin() != (yyvsp[0].PHIList).P->end()) {
+ if ((yyvsp[0].PHIList).P->front().first->getType() != Ty)
error("All elements of a PHI node must be of the same type");
- PHI->addIncoming((yyvsp[(2) - (2)].PHIList).P->front().first, (yyvsp[(2) - (2)].PHIList).P->front().second);
- (yyvsp[(2) - (2)].PHIList).P->pop_front();
+ PHI->addIncoming((yyvsp[0].PHIList).P->front().first, (yyvsp[0].PHIList).P->front().second);
+ (yyvsp[0].PHIList).P->pop_front();
}
(yyval.InstVal).I = PHI;
- (yyval.InstVal).S = (yyvsp[(2) - (2)].PHIList).S;
- delete (yyvsp[(2) - (2)].PHIList).P; // Free the list...
+ (yyval.InstVal).S.copy((yyvsp[0].PHIList).S);
+ delete (yyvsp[0].PHIList).P; // Free the list...
;}
break;
- case 296:
-#line 3313 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 297:
+#line 3706 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
-
// Handle the short call syntax
const PointerType *PFTy;
const FunctionType *FTy;
- if (!(PFTy = dyn_cast<PointerType>((yyvsp[(3) - (7)].TypeVal).PAT->get())) ||
+ Signedness FTySign;
+ if (!(PFTy = dyn_cast<PointerType>((yyvsp[-4].TypeVal).PAT->get())) ||
!(FTy = dyn_cast<FunctionType>(PFTy->getElementType()))) {
// Pull out the types of all of the arguments...
std::vector<const Type*> ParamTypes;
- if ((yyvsp[(6) - (7)].ValueList)) {
- for (std::vector<ValueInfo>::iterator I = (yyvsp[(6) - (7)].ValueList)->begin(), E = (yyvsp[(6) - (7)].ValueList)->end();
- I != E; ++I)
+ FTySign.makeComposite((yyvsp[-4].TypeVal).S);
+ if ((yyvsp[-1].ValueList)) {
+ for (std::vector<ValueInfo>::iterator I = (yyvsp[-1].ValueList)->begin(), E = (yyvsp[-1].ValueList)->end();
+ I != E; ++I) {
ParamTypes.push_back((*I).V->getType());
+ FTySign.add(I->S);
+ }
}
- FunctionType::ParamAttrsList ParamAttrs;
- if ((yyvsp[(2) - (7)].UIntVal) == OldCallingConv::CSRet) {
- ParamAttrs.push_back(FunctionType::NoAttributeSet);
- ParamAttrs.push_back(FunctionType::StructRetAttribute);
- }
bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy;
if (isVarArg) ParamTypes.pop_back();
- const Type *RetTy = (yyvsp[(3) - (7)].TypeVal).PAT->get();
+ const Type *RetTy = (yyvsp[-4].TypeVal).PAT->get();
if (!RetTy->isFirstClassType() && RetTy != Type::VoidTy)
error("Functions cannot return aggregate types");
+ // Deal with CSRetCC
+ ParamAttrsList *ParamAttrs = 0;
+ if ((yyvsp[-5].UIntVal) == OldCallingConv::CSRet) {
+ ParamAttrs = new ParamAttrsList();
+ ParamAttrs->addAttributes(0, ParamAttr::None); // function result
+ ParamAttrs->addAttributes(1, ParamAttr::StructRet); // first parameter
+ }
+
FTy = FunctionType::get(RetTy, ParamTypes, isVarArg, ParamAttrs);
PFTy = PointerType::get(FTy);
+ (yyval.InstVal).S.copy((yyvsp[-4].TypeVal).S);
+ } else {
+ FTySign = (yyvsp[-4].TypeVal).S;
+ // Get the signedness of the result type. $3 is the pointer to the
+ // function type so we get the 0th element to extract the function type,
+ // and then the 0th element again to get the result type.
+ (yyval.InstVal).S.copy((yyvsp[-4].TypeVal).S.get(0).get(0));
}
+ (yyvsp[-3].ValIDVal).S.makeComposite(FTySign);
// First upgrade any intrinsic calls.
std::vector<Value*> Args;
- if ((yyvsp[(6) - (7)].ValueList))
- for (unsigned i = 0, e = (yyvsp[(6) - (7)].ValueList)->size(); i < e; ++i)
- Args.push_back((*(yyvsp[(6) - (7)].ValueList))[i].V);
- Instruction *Inst = upgradeIntrinsicCall(FTy, (yyvsp[(4) - (7)].ValIDVal), Args);
+ if ((yyvsp[-1].ValueList))
+ for (unsigned i = 0, e = (yyvsp[-1].ValueList)->size(); i < e; ++i)
+ Args.push_back((*(yyvsp[-1].ValueList))[i].V);
+ Instruction *Inst = upgradeIntrinsicCall(FTy->getReturnType(), (yyvsp[-3].ValIDVal), Args);
// If we got an upgraded intrinsic
if (Inst) {
(yyval.InstVal).I = Inst;
- (yyval.InstVal).S = Signless;
} else {
// Get the function we're calling
- Value *V = getVal(PFTy, (yyvsp[(4) - (7)].ValIDVal));
+ Value *V = getVal(PFTy, (yyvsp[-3].ValIDVal));
// Check the argument values match
- if (!(yyvsp[(6) - (7)].ValueList)) { // Has no arguments?
+ if (!(yyvsp[-1].ValueList)) { // Has no arguments?
// Make sure no arguments is a good thing!
if (FTy->getNumParams() != 0)
error("No arguments passed to a function that expects arguments");
//
FunctionType::param_iterator I = FTy->param_begin();
FunctionType::param_iterator E = FTy->param_end();
- std::vector<ValueInfo>::iterator ArgI = (yyvsp[(6) - (7)].ValueList)->begin(), ArgE = (yyvsp[(6) - (7)].ValueList)->end();
+ std::vector<ValueInfo>::iterator ArgI = (yyvsp[-1].ValueList)->begin(), ArgE = (yyvsp[-1].ValueList)->end();
for (; ArgI != ArgE && I != E; ++ArgI, ++I)
if ((*ArgI).V->getType() != *I)
}
// Create the call instruction
- CallInst *CI = new CallInst(V, Args);
- CI->setTailCall((yyvsp[(1) - (7)].BoolVal));
- CI->setCallingConv(upgradeCallingConv((yyvsp[(2) - (7)].UIntVal)));
+ CallInst *CI = new CallInst(V, &Args[0], Args.size());
+ CI->setTailCall((yyvsp[-6].BoolVal));
+ CI->setCallingConv(upgradeCallingConv((yyvsp[-5].UIntVal)));
(yyval.InstVal).I = CI;
- (yyval.InstVal).S = (yyvsp[(3) - (7)].TypeVal).S;
}
- delete (yyvsp[(3) - (7)].TypeVal).PAT;
- delete (yyvsp[(6) - (7)].ValueList);
+ delete (yyvsp[-4].TypeVal).PAT;
+ delete (yyvsp[-1].ValueList);
;}
break;
- case 297:
-#line 3391 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 298:
+#line 3796 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- (yyval.InstVal) = (yyvsp[(1) - (1)].InstVal);
+ (yyval.InstVal) = (yyvsp[0].InstVal);
;}
break;
- case 298:
-#line 3399 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ValueList) = (yyvsp[(2) - (2)].ValueList); ;}
- break;
-
case 299:
-#line 3400 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.ValueList) = new std::vector<ValueInfo>(); ;}
+#line 3804 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ValueList) = (yyvsp[0].ValueList); ;}
break;
case 300:
-#line 3404 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.BoolVal) = true; ;}
+#line 3805 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.ValueList) = new std::vector<ValueInfo>(); ;}
break;
case 301:
-#line 3405 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- { (yyval.BoolVal) = false; ;}
+#line 3809 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.BoolVal) = true; ;}
break;
case 302:
-#line 3409 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
- {
- const Type *Ty = (yyvsp[(2) - (3)].TypeVal).PAT->get();
- (yyval.InstVal).S = (yyvsp[(2) - (3)].TypeVal).S;
- (yyval.InstVal).I = new MallocInst(Ty, 0, (yyvsp[(3) - (3)].UIntVal));
- delete (yyvsp[(2) - (3)].TypeVal).PAT;
- ;}
+#line 3810 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ { (yyval.BoolVal) = false; ;}
break;
case 303:
-#line 3415 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 3814 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(2) - (6)].TypeVal).PAT->get();
- (yyval.InstVal).S = (yyvsp[(2) - (6)].TypeVal).S;
- (yyval.InstVal).I = new MallocInst(Ty, getVal((yyvsp[(4) - (6)].PrimType).T, (yyvsp[(5) - (6)].ValIDVal)), (yyvsp[(6) - (6)].UIntVal));
- delete (yyvsp[(2) - (6)].TypeVal).PAT;
+ const Type *Ty = (yyvsp[-1].TypeVal).PAT->get();
+ (yyval.InstVal).S.makeComposite((yyvsp[-1].TypeVal).S);
+ (yyval.InstVal).I = new MallocInst(Ty, 0, (yyvsp[0].UIntVal));
+ delete (yyvsp[-1].TypeVal).PAT;
;}
break;
case 304:
-#line 3421 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 3820 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(2) - (3)].TypeVal).PAT->get();
- (yyval.InstVal).S = (yyvsp[(2) - (3)].TypeVal).S;
- (yyval.InstVal).I = new AllocaInst(Ty, 0, (yyvsp[(3) - (3)].UIntVal));
- delete (yyvsp[(2) - (3)].TypeVal).PAT;
+ const Type *Ty = (yyvsp[-4].TypeVal).PAT->get();
+ (yyvsp[-1].ValIDVal).S.makeUnsigned();
+ (yyval.InstVal).S.makeComposite((yyvsp[-4].TypeVal).S);
+ (yyval.InstVal).I = new MallocInst(Ty, getVal((yyvsp[-2].PrimType).T, (yyvsp[-1].ValIDVal)), (yyvsp[0].UIntVal));
+ delete (yyvsp[-4].TypeVal).PAT;
;}
break;
case 305:
-#line 3427 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 3827 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *Ty = (yyvsp[(2) - (6)].TypeVal).PAT->get();
- (yyval.InstVal).S = (yyvsp[(2) - (6)].TypeVal).S;
- (yyval.InstVal).I = new AllocaInst(Ty, getVal((yyvsp[(4) - (6)].PrimType).T, (yyvsp[(5) - (6)].ValIDVal)), (yyvsp[(6) - (6)].UIntVal));
- delete (yyvsp[(2) - (6)].TypeVal).PAT;
+ const Type *Ty = (yyvsp[-1].TypeVal).PAT->get();
+ (yyval.InstVal).S.makeComposite((yyvsp[-1].TypeVal).S);
+ (yyval.InstVal).I = new AllocaInst(Ty, 0, (yyvsp[0].UIntVal));
+ delete (yyvsp[-1].TypeVal).PAT;
;}
break;
case 306:
-#line 3433 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 3833 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
+ {
+ const Type *Ty = (yyvsp[-4].TypeVal).PAT->get();
+ (yyvsp[-1].ValIDVal).S.makeUnsigned();
+ (yyval.InstVal).S.makeComposite((yyvsp[-2].PrimType).S);
+ (yyval.InstVal).I = new AllocaInst(Ty, getVal((yyvsp[-2].PrimType).T, (yyvsp[-1].ValIDVal)), (yyvsp[0].UIntVal));
+ delete (yyvsp[-4].TypeVal).PAT;
+ ;}
+ break;
+
+ case 307:
+#line 3840 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type *PTy = (yyvsp[(2) - (2)].ValueVal).V->getType();
+ const Type *PTy = (yyvsp[0].ValueVal).V->getType();
if (!isa<PointerType>(PTy))
error("Trying to free nonpointer type '" + PTy->getDescription() + "'");
- (yyval.InstVal).I = new FreeInst((yyvsp[(2) - (2)].ValueVal).V);
- (yyval.InstVal).S = Signless;
+ (yyval.InstVal).I = new FreeInst((yyvsp[0].ValueVal).V);
+ (yyval.InstVal).S.makeSignless();
;}
break;
- case 307:
-#line 3440 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 308:
+#line 3847 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type* Ty = (yyvsp[(3) - (4)].TypeVal).PAT->get();
- (yyval.InstVal).S = (yyvsp[(3) - (4)].TypeVal).S;
+ const Type* Ty = (yyvsp[-1].TypeVal).PAT->get();
+ (yyvsp[0].ValIDVal).S.copy((yyvsp[-1].TypeVal).S);
if (!isa<PointerType>(Ty))
error("Can't load from nonpointer type: " + Ty->getDescription());
if (!cast<PointerType>(Ty)->getElementType()->isFirstClassType())
error("Can't load from pointer of non-first-class type: " +
Ty->getDescription());
- Value* tmpVal = getVal(Ty, (yyvsp[(4) - (4)].ValIDVal));
- (yyval.InstVal).I = new LoadInst(tmpVal, "", (yyvsp[(1) - (4)].BoolVal));
- delete (yyvsp[(3) - (4)].TypeVal).PAT;
+ Value* tmpVal = getVal(Ty, (yyvsp[0].ValIDVal));
+ (yyval.InstVal).I = new LoadInst(tmpVal, "", (yyvsp[-3].BoolVal));
+ (yyval.InstVal).S.copy((yyvsp[-1].TypeVal).S.get(0));
+ delete (yyvsp[-1].TypeVal).PAT;
;}
break;
- case 308:
-#line 3452 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 309:
+#line 3860 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const PointerType *PTy = dyn_cast<PointerType>((yyvsp[(5) - (6)].TypeVal).PAT->get());
+ (yyvsp[0].ValIDVal).S.copy((yyvsp[-1].TypeVal).S);
+ const PointerType *PTy = dyn_cast<PointerType>((yyvsp[-1].TypeVal).PAT->get());
if (!PTy)
error("Can't store to a nonpointer type: " +
- (yyvsp[(5) - (6)].TypeVal).PAT->get()->getDescription());
+ (yyvsp[-1].TypeVal).PAT->get()->getDescription());
const Type *ElTy = PTy->getElementType();
- Value *StoreVal = (yyvsp[(3) - (6)].ValueVal).V;
- Value* tmpVal = getVal(PTy, (yyvsp[(6) - (6)].ValIDVal));
- if (ElTy != (yyvsp[(3) - (6)].ValueVal).V->getType()) {
- StoreVal = handleSRetFuncTypeMerge((yyvsp[(3) - (6)].ValueVal).V, ElTy);
+ Value *StoreVal = (yyvsp[-3].ValueVal).V;
+ Value* tmpVal = getVal(PTy, (yyvsp[0].ValIDVal));
+ if (ElTy != (yyvsp[-3].ValueVal).V->getType()) {
+ StoreVal = handleSRetFuncTypeMerge((yyvsp[-3].ValueVal).V, ElTy);
if (!StoreVal)
- error("Can't store '" + (yyvsp[(3) - (6)].ValueVal).V->getType()->getDescription() +
+ error("Can't store '" + (yyvsp[-3].ValueVal).V->getType()->getDescription() +
"' into space of type '" + ElTy->getDescription() + "'");
else {
PTy = PointerType::get(StoreVal->getType());
tmpVal = new BitCastInst(tmpVal, PTy, "upgrd.cast", CurBB);
}
}
- (yyval.InstVal).I = new StoreInst(StoreVal, tmpVal, (yyvsp[(1) - (6)].BoolVal));
- (yyval.InstVal).S = Signless;
- delete (yyvsp[(5) - (6)].TypeVal).PAT;
+ (yyval.InstVal).I = new StoreInst(StoreVal, tmpVal, (yyvsp[-5].BoolVal));
+ (yyval.InstVal).S.makeSignless();
+ delete (yyvsp[-1].TypeVal).PAT;
;}
break;
- case 309:
-#line 3477 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+ case 310:
+#line 3886 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
{
- const Type* Ty = (yyvsp[(2) - (4)].TypeVal).PAT->get();
+ (yyvsp[-1].ValIDVal).S.copy((yyvsp[-2].TypeVal).S);
+ const Type* Ty = (yyvsp[-2].TypeVal).PAT->get();
if (!isa<PointerType>(Ty))
error("getelementptr insn requires pointer operand");
std::vector<Value*> VIndices;
- upgradeGEPIndices(Ty, (yyvsp[(4) - (4)].ValueList), VIndices);
+ upgradeGEPInstIndices(Ty, (yyvsp[0].ValueList), VIndices);
- Value* tmpVal = getVal(Ty, (yyvsp[(3) - (4)].ValIDVal));
+ Value* tmpVal = getVal(Ty, (yyvsp[-1].ValIDVal));
(yyval.InstVal).I = new GetElementPtrInst(tmpVal, &VIndices[0], VIndices.size());
- (yyval.InstVal).S = Signless;
- delete (yyvsp[(2) - (4)].TypeVal).PAT;
- delete (yyvsp[(4) - (4)].ValueList);
+ ValueInfo VI; VI.V = tmpVal; VI.S.copy((yyvsp[-2].TypeVal).S);
+ (yyval.InstVal).S.copy(getElementSign(VI, VIndices));
+ delete (yyvsp[-2].TypeVal).PAT;
+ delete (yyvsp[0].ValueList);
;}
break;
-/* Line 1267 of yacc.c. */
-#line 6443 "UpgradeParser.tab.c"
default: break;
}
- YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
- YYPOPSTACK (yylen);
- yylen = 0;
+/* Line 1126 of yacc.c. */
+#line 6622 "UpgradeParser.tab.c"
+\f
+ yyvsp -= yylen;
+ yyssp -= yylen;
+
+
YY_STACK_PRINT (yyss, yyssp);
*++yyvsp = yyval;
if (!yyerrstatus)
{
++yynerrs;
-#if ! YYERROR_VERBOSE
- yyerror (YY_("syntax error"));
-#else
- {
- YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
- if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
- {
- YYSIZE_T yyalloc = 2 * yysize;
- if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
- yyalloc = YYSTACK_ALLOC_MAXIMUM;
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yyalloc);
- if (yymsg)
- yymsg_alloc = yyalloc;
- else
+#if YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (YYPACT_NINF < yyn && yyn < YYLAST)
+ {
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ char *yymsg = 0;
+# define YYERROR_VERBOSE_ARGS_MAXIMUM 5
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ int yyx;
+
+#if 0
+ /* This is so xgettext sees the translatable formats that are
+ constructed on the fly. */
+ YY_("syntax error, unexpected %s");
+ YY_("syntax error, unexpected %s, expecting %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+#endif
+ char *yyfmt;
+ char const *yyf;
+ static char const yyunexpected[] = "syntax error, unexpected %s";
+ static char const yyexpecting[] = ", expecting %s";
+ static char const yyor[] = " or %s";
+ char yyformat[sizeof yyunexpected
+ + sizeof yyexpecting - 1
+ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+ * (sizeof yyor - 1))];
+ char const *yyprefix = yyexpecting;
+
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yycount = 1;
+
+ yyarg[0] = yytname[yytype];
+ yyfmt = yystpcpy (yyformat, yyunexpected);
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
{
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ yyformat[sizeof yyunexpected - 1] = '\0';
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ yysize_overflow |= yysize1 < yysize;
+ yysize = yysize1;
+ yyfmt = yystpcpy (yyfmt, yyprefix);
+ yyprefix = yyor;
}
- }
- if (0 < yysize && yysize <= yymsg_alloc)
- {
- (void) yysyntax_error (yymsg, yystate, yychar);
- yyerror (yymsg);
- }
- else
- {
- yyerror (YY_("syntax error"));
- if (yysize != 0)
+ yyf = YY_(yyformat);
+ yysize1 = yysize + yystrlen (yyf);
+ yysize_overflow |= yysize1 < yysize;
+ yysize = yysize1;
+
+ if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
+ yymsg = (char *) YYSTACK_ALLOC (yysize);
+ if (yymsg)
+ {
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ char *yyp = yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyf))
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ yyerror (yymsg);
+ YYSTACK_FREE (yymsg);
+ }
+ else
+ {
+ yyerror (YY_("syntax error"));
goto yyexhaustedlab;
- }
- }
-#endif
+ }
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror (YY_("syntax error"));
}
error, discard it. */
if (yychar <= YYEOF)
- {
+ {
/* Return failure if at end of input. */
if (yychar == YYEOF)
YYABORT;
- }
+ }
else
{
- yydestruct ("Error: discarding",
- yytoken, &yylval);
+ yydestruct ("Error: discarding", yytoken, &yylval);
yychar = YYEMPTY;
}
}
/* Pacify compilers like GCC when the user code never invokes
YYERROR and the label yyerrorlab therefore never appears in user
code. */
- if (/*CONSTCOND*/ 0)
+ if (0)
goto yyerrorlab;
- /* Do not reclaim the symbols of the rule which action triggered
- this YYERROR. */
- YYPOPSTACK (yylen);
- yylen = 0;
- YY_STACK_PRINT (yyss, yyssp);
+yyvsp -= yylen;
+ yyssp -= yylen;
yystate = *yyssp;
goto yyerrlab1;
YYABORT;
- yydestruct ("Error: popping",
- yystos[yystate], yyvsp);
- YYPOPSTACK (1);
+ yydestruct ("Error: popping", yystos[yystate], yyvsp);
+ YYPOPSTACK;
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
}
*++yyvsp = yylval;
- /* Shift the error token. */
+ /* Shift the error token. */
YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
yystate = yyn;
if (yychar != YYEOF && yychar != YYEMPTY)
yydestruct ("Cleanup: discarding lookahead",
yytoken, &yylval);
- /* Do not reclaim the symbols of the rule which action triggered
- this YYABORT or YYACCEPT. */
- YYPOPSTACK (yylen);
- YY_STACK_PRINT (yyss, yyssp);
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
yystos[*yyssp], yyvsp);
- YYPOPSTACK (1);
+ YYPOPSTACK;
}
#ifndef yyoverflow
if (yyss != yyssa)
YYSTACK_FREE (yyss);
#endif
-#if YYERROR_VERBOSE
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
-#endif
- /* Make sure YYID is used. */
- return YYID (yyresult);
+ return yyresult;
}
-#line 3493 "/Users/sabre/llvm/tools/llvm-upgrade/UpgradeParser.y"
+#line 3904 "/proj/llvm/llvm-2/tools/llvm-upgrade/UpgradeParser.y"
int yyerror(const char *ErrorMsg) {