Regenerate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33615 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer
2007-01-29 05:41:34 +00:00
parent 43f76c9925
commit b7046c7352
3 changed files with 1172 additions and 1270 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,7 @@
/* A Bison parser, made by GNU Bison 2.3. */ /* A Bison parser, made by GNU Bison 2.1. */
/* Skeleton interface for Bison's Yacc-like parsers in C /* Skeleton parser for Yacc-like parsing with Bison,
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -20,18 +18,10 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA. */ Boston, MA 02110-1301, USA. */
/* As a special exception, you may create a larger work that contains /* As a special exception, when this file is copied by Bison into a
part or all of the Bison parser skeleton and distribute that work Bison output file, you may use that output file without restriction.
under terms of your choice, so long as that work isn't itself a This special exception was added by the Free Software Foundation
parser generator using the skeleton or a modified version thereof in version 1.24 of Bison. */
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. */
/* Tokens. */ /* Tokens. */
#ifndef YYTOKENTYPE #ifndef YYTOKENTYPE
@ -344,10 +334,9 @@
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
typedef union YYSTYPE #line 1405 "/proj/llvm/llvm-1/tools/llvm-upgrade/UpgradeParser.y"
#line 1391 "/home/asl/proj/llvm/src/tools/llvm-upgrade/UpgradeParser.y" typedef union YYSTYPE {
{
llvm::Module *ModuleVal; llvm::Module *ModuleVal;
llvm::Function *FunctionVal; llvm::Function *FunctionVal;
std::pair<llvm::PATypeInfo, char*> *ArgVal; std::pair<llvm::PATypeInfo, char*> *ArgVal;
@ -387,10 +376,9 @@ typedef union YYSTYPE
llvm::ICmpInst::Predicate IPred; llvm::ICmpInst::Predicate IPred;
llvm::FCmpInst::Predicate FPred; llvm::FCmpInst::Predicate FPred;
llvm::Module::Endianness Endianness; llvm::Module::Endianness Endianness;
} } YYSTYPE;
/* Line 1489 of yacc.c. */ /* Line 1447 of yacc.c. */
#line 393 "UpgradeParser.tab.h" #line 382 "UpgradeParser.tab.h"
YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_TRIVIAL 1
@ -398,3 +386,5 @@ typedef union YYSTYPE
extern YYSTYPE Upgradelval; extern YYSTYPE Upgradelval;

View File

@ -171,6 +171,7 @@ static struct PerFunctionInfo {
std::map<BasicBlock*, std::pair<ValID, int> > BBForwardRefs; std::map<BasicBlock*, std::pair<ValID, int> > BBForwardRefs;
std::vector<BasicBlock*> NumberedBlocks; std::vector<BasicBlock*> NumberedBlocks;
RenameMapType RenameMap; RenameMapType RenameMap;
unsigned LastCC;
unsigned NextBBNum; unsigned NextBBNum;
inline PerFunctionInfo() { inline PerFunctionInfo() {
@ -1243,6 +1244,19 @@ const Type* upgradeGEPIndices(const Type* PTy,
return IdxTy; return IdxTy;
} }
unsigned upgradeCallingConv(unsigned CC) {
switch (CC) {
case OldCallingConv::C : return CallingConv::C;
case OldCallingConv::CSRet : return CallingConv::C;
case OldCallingConv::Fast : return CallingConv::Fast;
case OldCallingConv::Cold : return CallingConv::Cold;
case OldCallingConv::X86_StdCall : return CallingConv::X86_StdCall;
case OldCallingConv::X86_FastCall: return CallingConv::X86_FastCall;
default:
return CC;
}
}
Module* UpgradeAssembly(const std::string &infile, std::istream& in, Module* UpgradeAssembly(const std::string &infile, std::istream& in,
bool debug, bool addAttrs) bool debug, bool addAttrs)
{ {
@ -1626,13 +1640,13 @@ OptLinkage
; ;
OptCallingConv OptCallingConv
: /*empty*/ { $$ = CallingConv::C; } : /*empty*/ { CurFun.LastCC = $$ = OldCallingConv::C; }
| CCC_TOK { $$ = CallingConv::C; } | CCC_TOK { CurFun.LastCC = $$ = OldCallingConv::C; }
| CSRETCC_TOK { $$ = CallingConv::C; } | CSRETCC_TOK { CurFun.LastCC = $$ = OldCallingConv::CSRet; }
| FASTCC_TOK { $$ = CallingConv::Fast; } | FASTCC_TOK { CurFun.LastCC = $$ = OldCallingConv::Fast; }
| COLDCC_TOK { $$ = CallingConv::Cold; } | COLDCC_TOK { CurFun.LastCC = $$ = OldCallingConv::Cold; }
| X86_STDCALLCC_TOK { $$ = CallingConv::X86_StdCall; } | X86_STDCALLCC_TOK { CurFun.LastCC = $$ = OldCallingConv::X86_StdCall; }
| X86_FASTCALLCC_TOK { $$ = CallingConv::X86_FastCall; } | X86_FASTCALLCC_TOK { CurFun.LastCC = $$ = OldCallingConv::X86_FastCall; }
| CC_TOK EUINT64VAL { | CC_TOK EUINT64VAL {
if ((unsigned)$2 != $2) if ((unsigned)$2 != $2)
error("Calling conv too large"); error("Calling conv too large");
@ -1762,11 +1776,16 @@ UpRTypes
Params.push_back(I->T->get()); Params.push_back(I->T->get());
delete I->T; delete I->T;
} }
FunctionType::ParamAttrsList ParamAttrs;
if (CurFun.LastCC == OldCallingConv::CSRet) {
ParamAttrs.push_back(FunctionType::NoAttributeSet);
ParamAttrs.push_back(FunctionType::StructRetAttribute);
}
bool isVarArg = Params.size() && Params.back() == Type::VoidTy; bool isVarArg = Params.size() && Params.back() == Type::VoidTy;
if (isVarArg) Params.pop_back(); if (isVarArg) Params.pop_back();
$$.T = new PATypeHolder(HandleUpRefs( $$.T = new PATypeHolder(
FunctionType::get($1.T->get(),Params,isVarArg))); HandleUpRefs(FunctionType::get($1.T->get(),Params,isVarArg, ParamAttrs)));
$$.S = $1.S; $$.S = $1.S;
delete $1.T; // Delete the return type handle delete $1.T; // Delete the return type handle
delete $3; // Delete the argument list delete $3; // Delete the argument list
@ -2533,7 +2552,16 @@ FunctionHeaderH
ParamTypeList.size() && ParamTypeList.back() == Type::VoidTy; ParamTypeList.size() && ParamTypeList.back() == Type::VoidTy;
if (isVarArg) ParamTypeList.pop_back(); if (isVarArg) ParamTypeList.pop_back();
const FunctionType *FT = FunctionType::get(RetTy, ParamTypeList, isVarArg); // Convert the CSRet calling convention into the corresponding parameter
// attribute.
FunctionType::ParamAttrsList ParamAttrs;
if ($1 == OldCallingConv::CSRet) {
ParamAttrs.push_back(FunctionType::NoAttributeSet); // result
ParamAttrs.push_back(FunctionType::StructRetAttribute); // first arg
}
const FunctionType *FT = FunctionType::get(RetTy, ParamTypeList, isVarArg,
ParamAttrs);
const PointerType *PFT = PointerType::get(FT); const PointerType *PFT = PointerType::get(FT);
delete $2.T; delete $2.T;
@ -2579,7 +2607,7 @@ FunctionHeaderH
// argument to another function. // argument to another function.
Fn->setLinkage(CurFun.Linkage); Fn->setLinkage(CurFun.Linkage);
} }
Fn->setCallingConv($1); Fn->setCallingConv(upgradeCallingConv($1));
Fn->setAlignment($8); Fn->setAlignment($8);
if ($7) { if ($7) {
Fn->setSection($7); Fn->setSection($7);
@ -2825,9 +2853,14 @@ BBTerminatorInst
I != E; ++I) I != E; ++I)
ParamTypes.push_back((*I).V->getType()); ParamTypes.push_back((*I).V->getType());
} }
FunctionType::ParamAttrsList ParamAttrs;
if ($2 == OldCallingConv::CSRet) {
ParamAttrs.push_back(FunctionType::NoAttributeSet);
ParamAttrs.push_back(FunctionType::StructRetAttribute);
}
bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy; bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy;
if (isVarArg) ParamTypes.pop_back(); if (isVarArg) ParamTypes.pop_back();
Ty = FunctionType::get($3.T->get(), ParamTypes, isVarArg); Ty = FunctionType::get($3.T->get(), ParamTypes, isVarArg, ParamAttrs);
PFTy = PointerType::get(Ty); PFTy = PointerType::get(Ty);
} }
Value *V = getVal(PFTy, $4); // Get the function we're calling... Value *V = getVal(PFTy, $4); // Get the function we're calling...
@ -2858,7 +2891,7 @@ BBTerminatorInst
$$ = new InvokeInst(V, Normal, Except, Args); $$ = new InvokeInst(V, Normal, Except, Args);
} }
cast<InvokeInst>($$)->setCallingConv($2); cast<InvokeInst>($$)->setCallingConv(upgradeCallingConv($2));
delete $3.T; delete $3.T;
delete $6; delete $6;
} }
@ -3174,6 +3207,11 @@ InstVal
ParamTypes.push_back((*I).V->getType()); ParamTypes.push_back((*I).V->getType());
} }
FunctionType::ParamAttrsList ParamAttrs;
if ($2 == OldCallingConv::CSRet) {
ParamAttrs.push_back(FunctionType::NoAttributeSet);
ParamAttrs.push_back(FunctionType::StructRetAttribute);
}
bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy; bool isVarArg = ParamTypes.size() && ParamTypes.back() == Type::VoidTy;
if (isVarArg) ParamTypes.pop_back(); if (isVarArg) ParamTypes.pop_back();
@ -3181,7 +3219,7 @@ InstVal
if (!RetTy->isFirstClassType() && RetTy != Type::VoidTy) if (!RetTy->isFirstClassType() && RetTy != Type::VoidTy)
error("Functions cannot return aggregate types"); error("Functions cannot return aggregate types");
FTy = FunctionType::get(RetTy, ParamTypes, isVarArg); FTy = FunctionType::get(RetTy, ParamTypes, isVarArg, ParamAttrs);
PFTy = PointerType::get(FTy); PFTy = PointerType::get(FTy);
} }
@ -3225,7 +3263,7 @@ InstVal
// Create the call instruction // Create the call instruction
CallInst *CI = new CallInst(V, Args); CallInst *CI = new CallInst(V, Args);
CI->setTailCall($1); CI->setTailCall($1);
CI->setCallingConv($2); CI->setCallingConv(upgradeCallingConv($2));
$$.I = CI; $$.I = CI;
$$.S = $3.S; $$.S = $3.S;
} }