[llvm-commits] CVS: llvm/lib/AsmParser/Lexer.l Lexer.l.cvs llvmAsmParser.y llvmAsmParser.y.cvs
Changes in directory llvm/lib/AsmParser: Lexer.l updated: 1.106 -> 1.107 Lexer.l.cvs updated: 1.33 -> 1.34 llvmAsmParser.y updated: 1.354 -> 1.355 llvmAsmParser.y.cvs updated: 1.96 -> 1.97 --- Log message: Implement protected visibility. This partly implements PR1363: http://llvm.org/PR1363 . Linker should be taught to deal with protected symbols. --- Diffs of the changes: (+12 -8) Lexer.l |1 + Lexer.l.cvs |1 + llvmAsmParser.y |9 + llvmAsmParser.y.cvs |9 + 4 files changed, 12 insertions(+), 8 deletions(-) Index: llvm/lib/AsmParser/Lexer.l diff -u llvm/lib/AsmParser/Lexer.l:1.106 llvm/lib/AsmParser/Lexer.l:1.107 --- llvm/lib/AsmParser/Lexer.l:1.106Wed Apr 25 09:27:10 2007 +++ llvm/lib/AsmParser/Lexer.l Sun Apr 29 13:35:00 2007 @@ -206,6 +206,7 @@ dllimport { return DLLIMPORT; } dllexport { return DLLEXPORT; } hidden { return HIDDEN; } +protected { return PROTECTED; } extern_weak { return EXTERN_WEAK; } external{ return EXTERNAL; } thread_local{ return THREAD_LOCAL; } Index: llvm/lib/AsmParser/Lexer.l.cvs diff -u llvm/lib/AsmParser/Lexer.l.cvs:1.33 llvm/lib/AsmParser/Lexer.l.cvs:1.34 --- llvm/lib/AsmParser/Lexer.l.cvs:1.33 Wed Apr 25 09:29:12 2007 +++ llvm/lib/AsmParser/Lexer.l.cvs Sun Apr 29 13:35:00 2007 @@ -206,6 +206,7 @@ dllimport { return DLLIMPORT; } dllexport { return DLLEXPORT; } hidden { return HIDDEN; } +protected { return PROTECTED; } extern_weak { return EXTERN_WEAK; } external{ return EXTERNAL; } thread_local{ return THREAD_LOCAL; } Index: llvm/lib/AsmParser/llvmAsmParser.y diff -u llvm/lib/AsmParser/llvmAsmParser.y:1.354 llvm/lib/AsmParser/llvmAsmParser.y:1.355 --- llvm/lib/AsmParser/llvmAsmParser.y:1.354Sat Apr 28 11:06:50 2007 +++ llvm/lib/AsmParser/llvmAsmParser.y Sun Apr 29 13:35:00 2007 @@ -1099,7 +1099,7 @@ %token NORETURN INREG SRET NOUNWIND // Visibility Styles -%token DEFAULT HIDDEN +%token DEFAULT HIDDEN PROTECTED %start Module %% @@ -1180,9 +1180,10 @@ ; GVVisibilityStyle - : /*empty*/ { $$ = GlobalValue::DefaultVisibility; } - | DEFAULT { $$ = GlobalValue::DefaultVisibility; } - | HIDDEN{ $$ = GlobalValue::HiddenVisibility; } + : /*empty*/ { $$ = GlobalValue::DefaultVisibility; } + | DEFAULT { $$ = GlobalValue::DefaultVisibility; } + | HIDDEN{ $$ = GlobalValue::HiddenVisibility;} + | PROTECTED { $$ = GlobalValue::ProtectedVisibility; } ; FunctionDeclareLinkage Index: llvm/lib/AsmParser/llvmAsmParser.y.cvs diff -u llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.96 llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.97 --- llvm/lib/AsmParser/llvmAsmParser.y.cvs:1.96 Sat Apr 28 11:07:31 2007 +++ llvm/lib/AsmParser/llvmAsmParser.y.cvs Sun Apr 29 13:35:00 2007 @@ -1099,7 +1099,7 @@ %token NORETURN INREG SRET NOUNWIND // Visibility Styles -%token DEFAULT HIDDEN +%token DEFAULT HIDDEN PROTECTED %start Module %% @@ -1180,9 +1180,10 @@ ; GVVisibilityStyle - : /*empty*/ { $$ = GlobalValue::DefaultVisibility; } - | DEFAULT { $$ = GlobalValue::DefaultVisibility; } - | HIDDEN{ $$ = GlobalValue::HiddenVisibility; } + : /*empty*/ { $$ = GlobalValue::DefaultVisibility; } + | DEFAULT { $$ = GlobalValue::DefaultVisibility; } + | HIDDEN{ $$ = GlobalValue::HiddenVisibility;} + | PROTECTED { $$ = GlobalValue::ProtectedVisibility; } ; FunctionDeclareLinkage ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/AsmParser/Lexer.l Lexer.l.cvs llvmAsmParser.y llvmAsmParser.y.cvs
Changes in directory llvm/lib/AsmParser: Lexer.l updated: 1.96 -> 1.97 Lexer.l.cvs updated: 1.23 -> 1.24 llvmAsmParser.y updated: 1.313 -> 1.314 llvmAsmParser.y.cvs updated: 1.59 -> 1.60 --- Log message: Propagate changes from my local tree. This patch includes: 1. New parameter attribute called 'inreg'. It has meaning "place this parameter in registers, if possible". This is some generalization of gcc's regparm(n) attribute. It's currently used only in X86-32 backend. 2. Completely rewritten CC handling/lowering code inside X86 backend. Merged stdcall + c CCs and fastcall + fast CC. 3. Dropped CSRET CC. We cannot add struct return variant for each target-specific CC (e.g. stdcall + csretcc and so on). 4. Instead of CSRET CC introduced 'sret' parameter attribute. Setting in on first attribute has meaning 'This is hidden pointer to structure return. Handle it gently'. 5. Fixed small bug in llvm-extract + add new feature to FunctionExtraction pass, which relinks all internal-linkaged callees from deleted function to external linkage. This will allow further linking everything together. NOTEs: 1. Documentation will be updated soon. 2. llvm-upgrade should be improved to translate csret => sret. Before this, there will be some unexpected test fails. --- Diffs of the changes: (+16 -14) Lexer.l |3 ++- Lexer.l.cvs |3 ++- llvmAsmParser.y | 12 ++-- llvmAsmParser.y.cvs | 12 ++-- 4 files changed, 16 insertions(+), 14 deletions(-) Index: llvm/lib/AsmParser/Lexer.l diff -u llvm/lib/AsmParser/Lexer.l:1.96 llvm/lib/AsmParser/Lexer.l:1.97 --- llvm/lib/AsmParser/Lexer.l:1.96 Fri Jan 26 02:04:51 2007 +++ llvm/lib/AsmParser/Lexer.l Sun Jan 28 07:31:35 2007 @@ -227,7 +227,6 @@ cc { return CC_TOK; } ccc { return CCC_TOK; } -csretcc { return CSRETCC_TOK; } fastcc { return FASTCC_TOK; } coldcc { return COLDCC_TOK; } x86_stdcallcc { return X86_STDCALLCC_TOK; } @@ -287,6 +286,8 @@ trunc { RET_TOK(CastOpVal, Trunc, TRUNC); } zext{ RET_TOK(CastOpVal, ZExt, ZEXT); } sext{ RET_TOK(CastOpVal, SExt, SEXT); } +inreg { return INREG; } +sret{ return SRET; } fptrunc { RET_TOK(CastOpVal, FPTrunc, FPTRUNC); } fpext { RET_TOK(CastOpVal, FPExt, FPEXT); } uitofp { RET_TOK(CastOpVal, UIToFP, UITOFP); } Index: llvm/lib/AsmParser/Lexer.l.cvs diff -u llvm/lib/AsmParser/Lexer.l.cvs:1.23 llvm/lib/AsmParser/Lexer.l.cvs:1.24 --- llvm/lib/AsmParser/Lexer.l.cvs:1.23 Fri Jan 26 02:05:27 2007 +++ llvm/lib/AsmParser/Lexer.l.cvs Sun Jan 28 07:31:35 2007 @@ -227,7 +227,6 @@ cc { return CC_TOK; } ccc { return CCC_TOK; } -csretcc { return CSRETCC_TOK; } fastcc { return FASTCC_TOK; } coldcc { return COLDCC_TOK; } x86_stdcallcc { return X86_STDCALLCC_TOK; } @@ -287,6 +286,8 @@ trunc { RET_TOK(CastOpVal, Trunc, TRUNC); } zext{ RET_TOK(CastOpVal, ZExt, ZEXT); } sext{ RET_TOK(CastOpVal, SExt, SEXT); } +inreg { return INREG; } +sret{ return SRET; } fptrunc { RET_TOK(CastOpVal, FPTrunc, FPTRUNC); } fpext { RET_TOK(CastOpVal, FPExt, FPEXT); } uitofp { RET_TOK(CastOpVal, UIToFP, UITOFP); } Index: llvm/lib/AsmParser/llvmAsmParser.y diff -u llvm/lib/AsmParser/llvmAsmParser.y:1.313 llvm/lib/AsmParser/llvmAsmParser.y:1.314 --- llvm/lib/AsmParser/llvmAsmParser.y:1.313Fri Jan 26 02:04:51 2007 +++ llvm/lib/AsmParser/llvmAsmParser.y Sun Jan 28 07:31:35 2007 @@ -984,8 +984,7 @@ %token DLLIMPORT DLLEXPORT EXTERN_WEAK %token OPAQUE EXTERNAL TARGET TRIPLE ALIGN %token DEPLIBS CALL TAIL ASM_TOK MODULE SIDEEFFECT -%token CC_TOK CCC_TOK CSRETCC_TOK FASTCC_TOK COLDCC_TOK -%token X86_STDCALLCC_TOK X86_FASTCALLCC_TOK +%token CC_TOK CCC_TOK FASTCC_TOK COLDCC_TOK X86_STDCALLCC_TOK X86_FASTCALLCC_TOK %token DATALAYOUT %type OptCallingConv %type OptParamAttrs ParamAttr @@ -1017,7 +1016,7 @@ %token EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR // Function Attributes -%token NORETURN +%token NORETURN INREG SRET // Visibility Styles %token DEFAULT HIDDEN @@ -1119,7 +1118,6 @@ OptCallingConv : /*empty*/ { $$ = CallingConv::C; } | CCC_TOK{ $$ = CallingConv::C; } | - CSRETCC_TOK{ $$ = CallingConv::CSRet; } | FASTCC_TOK { $$ = CallingConv::Fast; } | COLDCC_TOK { $$ = CallingConv::Cold; } | X86_STDCALLCC_TOK { $$ = CallingConv::X86_StdCall; } | @@ -1131,8 +1129,10 @@ CHECK_FOR_ERROR }; -ParamAttr : ZEXT { $$ = FunctionType::ZExtAttribute; } - | SEXT { $$ = FunctionType::SExtAttribute; } +ParamAttr : ZEXT { $$ = FunctionType::ZExtAttribute; } + | SEXT { $$ = Functio
[llvm-commits] CVS: llvm/lib/AsmParser/Lexer.l Lexer.l.cvs llvmAsmParser.y llvmAsmParser.y.cvs
Changes in directory llvm/lib/AsmParser: Lexer.l updated: 1.93 -> 1.94 Lexer.l.cvs updated: 1.20 -> 1.21 llvmAsmParser.y updated: 1.306 -> 1.307 llvmAsmParser.y.cvs updated: 1.52 -> 1.53 --- Log message: * PIC codegen for X86/Linux has been implemented * PIC-aware internal structures in X86 Codegen have been refactored * Visibility (default/weak) has been added * Docs fixes (external weak linkage, visibility, formatting) --- Diffs of the changes: (+74 -32) Lexer.l |1 + Lexer.l.cvs |1 + llvmAsmParser.y | 52 llvmAsmParser.y.cvs | 52 4 files changed, 74 insertions(+), 32 deletions(-) Index: llvm/lib/AsmParser/Lexer.l diff -u llvm/lib/AsmParser/Lexer.l:1.93 llvm/lib/AsmParser/Lexer.l:1.94 --- llvm/lib/AsmParser/Lexer.l:1.93 Fri Jan 12 01:27:59 2007 +++ llvm/lib/AsmParser/Lexer.l Fri Jan 12 13:20:46 2007 @@ -203,6 +203,7 @@ appending { return APPENDING; } dllimport { return DLLIMPORT; } dllexport { return DLLEXPORT; } +hidden { return HIDDEN; } extern_weak { return EXTERN_WEAK; } external{ return EXTERNAL; } implementation { return IMPLEMENTATION; } Index: llvm/lib/AsmParser/Lexer.l.cvs diff -u llvm/lib/AsmParser/Lexer.l.cvs:1.20 llvm/lib/AsmParser/Lexer.l.cvs:1.21 --- llvm/lib/AsmParser/Lexer.l.cvs:1.20 Fri Jan 12 01:28:27 2007 +++ llvm/lib/AsmParser/Lexer.l.cvs Fri Jan 12 13:20:46 2007 @@ -203,6 +203,7 @@ appending { return APPENDING; } dllimport { return DLLIMPORT; } dllexport { return DLLEXPORT; } +hidden { return HIDDEN; } extern_weak { return EXTERN_WEAK; } external{ return EXTERNAL; } implementation { return IMPLEMENTATION; } Index: llvm/lib/AsmParser/llvmAsmParser.y diff -u llvm/lib/AsmParser/llvmAsmParser.y:1.306 llvm/lib/AsmParser/llvmAsmParser.y:1.307 --- llvm/lib/AsmParser/llvmAsmParser.y:1.306Fri Jan 12 12:32:39 2007 +++ llvm/lib/AsmParser/llvmAsmParser.y Fri Jan 12 13:20:46 2007 @@ -210,6 +210,7 @@ std::map LateResolveValues; bool isDeclare;// Is this function a forward declararation? GlobalValue::LinkageTypes Linkage; // Linkage for forward declaration. + GlobalValue::VisibilityTypes Visibility; /// BBForwardRefs - When we see forward references to basic blocks, keep /// track of them here. @@ -220,7 +221,8 @@ inline PerFunctionInfo() { CurrentFunction = 0; isDeclare = false; -Linkage = GlobalValue::ExternalLinkage; +Linkage = GlobalValue::ExternalLinkage; +Visibility = GlobalValue::DefaultVisibility; } inline void FunctionStart(Function *M) { @@ -245,6 +247,7 @@ CurrentFunction = 0; isDeclare = false; Linkage = GlobalValue::ExternalLinkage; +Visibility = GlobalValue::DefaultVisibility; } } CurFun; // Info for the current function... @@ -648,7 +651,9 @@ /// ParseGlobalVariable - Handle parsing of a global. If Initializer is null, /// this is a declaration, otherwise it is a definition. static GlobalVariable * -ParseGlobalVariable(char *NameStr,GlobalValue::LinkageTypes Linkage, +ParseGlobalVariable(char *NameStr, +GlobalValue::LinkageTypes Linkage, +GlobalValue::VisibilityTypes Visibility, bool isConstantGlobal, const Type *Ty, Constant *Initializer) { if (isa(Ty)) { @@ -681,6 +686,7 @@ CurModule.CurrentModule->getGlobalList().push_back(GV); GV->setInitializer(Initializer); GV->setLinkage(Linkage); +GV->setVisibility(Visibility); GV->setConstant(isConstantGlobal); InsertValue(GV, CurModule.Values); return GV; @@ -702,6 +708,7 @@ GlobalVariable *GV = new GlobalVariable(Ty, isConstantGlobal, Linkage, Initializer, Name, CurModule.CurrentModule); + GV->setVisibility(Visibility); InsertValue(GV, CurModule.Values); return GV; } @@ -898,6 +905,7 @@ std::vector *ConstVector; llvm::GlobalValue::LinkageTypes Linkage; + llvm::GlobalValue::VisibilityTypes Visibility; llvm::FunctionType::ParameterAttributes ParamAttrs; int64_t SInt64Val; uint64_t UInt64Val; @@ -940,6 +948,7 @@ %typeOptSideEffect // 'sideeffect' or not. %typeGVInternalLinkage GVExternalLinkage %typeFunctionDefineLinkage FunctionDeclareLinkage +%type GVVisibilityStyle %type BigOrLittle // ValueRef - Unresolved reference to a definition or BB @@ -1011,6 +1020,9 @@ // Function Attributes %token NORETURN +// Visibility Styles +%token DEFAULT HIDDEN + %start Module %% @@ -1081,6 +1093,11 @@ | EXTERNAL{ $$ = GlobalValue::ExternalLinkage; } ; +GVVisibilityStyle + : /*empty*/ { $$ = GlobalValue::DefaultVisibility; } + | HIDDEN{ $$ = GlobalValue::HiddenVisibili
[llvm-commits] CVS: llvm/lib/AsmParser/Lexer.l Lexer.l.cvs llvmAsmParser.y llvmAsmParser.y.cvs
Changes in directory llvm/lib/AsmParser: Lexer.l updated: 1.75 -> 1.76 Lexer.l.cvs updated: 1.5 -> 1.6 llvmAsmParser.y updated: 1.258 -> 1.259 llvmAsmParser.y.cvs updated: 1.10 -> 1.11 --- Log message: Adding dllimport, dllexport and external weak linkage types. DLL* linkages got full (I hope) codegeneration support in C & both x86 assembler backends. External weak linkage added for future use, we don't provide any codegeneration, etc. support for it. --- Diffs of the changes: (+106 -30) Lexer.l |3 ++ Lexer.l.cvs |3 ++ llvmAsmParser.y | 65 llvmAsmParser.y.cvs | 65 4 files changed, 106 insertions(+), 30 deletions(-) Index: llvm/lib/AsmParser/Lexer.l diff -u llvm/lib/AsmParser/Lexer.l:1.75 llvm/lib/AsmParser/Lexer.l:1.76 --- llvm/lib/AsmParser/Lexer.l:1.75 Fri Aug 18 03:43:06 2006 +++ llvm/lib/AsmParser/Lexer.l Thu Sep 14 13:23:26 2006 @@ -191,6 +191,9 @@ linkonce{ return LINKONCE; } weak{ return WEAK; } appending { return APPENDING; } +dllimport { return DLLIMPORT; } +dllexport { return DLLEXPORT; } +extern_weak { return EXTERN_WEAK; } uninitialized { return EXTERNAL; }/* Deprecated, turn into external */ external{ return EXTERNAL; } implementation { return IMPLEMENTATION; } Index: llvm/lib/AsmParser/Lexer.l.cvs diff -u llvm/lib/AsmParser/Lexer.l.cvs:1.5 llvm/lib/AsmParser/Lexer.l.cvs:1.6 --- llvm/lib/AsmParser/Lexer.l.cvs:1.5 Fri Aug 18 03:43:06 2006 +++ llvm/lib/AsmParser/Lexer.l.cvs Thu Sep 14 13:23:26 2006 @@ -191,6 +191,9 @@ linkonce{ return LINKONCE; } weak{ return WEAK; } appending { return APPENDING; } +dllimport { return DLLIMPORT; } +dllexport { return DLLEXPORT; } +extern_weak { return EXTERN_WEAK; } uninitialized { return EXTERNAL; }/* Deprecated, turn into external */ external{ return EXTERNAL; } implementation { return IMPLEMENTATION; } Index: llvm/lib/AsmParser/llvmAsmParser.y diff -u llvm/lib/AsmParser/llvmAsmParser.y:1.258 llvm/lib/AsmParser/llvmAsmParser.y:1.259 --- llvm/lib/AsmParser/llvmAsmParser.y:1.258Fri Aug 18 12:34:24 2006 +++ llvm/lib/AsmParser/llvmAsmParser.y Thu Sep 14 13:23:26 2006 @@ -150,9 +150,10 @@ static struct PerFunctionInfo { Function *CurrentFunction; // Pointer to current function being created - std::map Values; // Keep track of #'d definitions + std::map Values; // Keep track of #'d definitions std::map LateResolveValues; - bool isDeclare;// Is this function a forward declararation? + bool isDeclare;// Is this function a forward declararation? + GlobalValue::LinkageTypes Linkage; // Linkage for forward declaration. /// BBForwardRefs - When we see forward references to basic blocks, keep /// track of them here. @@ -163,6 +164,7 @@ inline PerFunctionInfo() { CurrentFunction = 0; isDeclare = false; +Linkage = GlobalValue::ExternalLinkage; } inline void FunctionStart(Function *M) { @@ -184,6 +186,7 @@ Values.clear(); // Clear out function local definitions CurrentFunction = 0; isDeclare = false; +Linkage = GlobalValue::ExternalLinkage; } } CurFun; // Info for the current function... @@ -998,7 +1001,8 @@ %token IMPLEMENTATION ZEROINITIALIZER TRUETOK FALSETOK BEGINTOK ENDTOK %token DECLARE GLOBAL CONSTANT SECTION VOLATILE -%token TO DOTDOTDOT NULL_TOK UNDEF CONST INTERNAL LINKONCE WEAK APPENDING +%token TO DOTDOTDOT NULL_TOK UNDEF CONST INTERNAL LINKONCE WEAK APPENDING +%token DLLIMPORT DLLEXPORT EXTERN_WEAK %token OPAQUE NOT EXTERNAL TARGET TRIPLE ENDIAN POINTERSIZE LITTLE BIG ALIGN %token DEPLIBS CALL TAIL ASM_TOK MODULE SIDEEFFECT %token CC_TOK CCC_TOK CSRETCC_TOK FASTCC_TOK COLDCC_TOK @@ -1070,11 +1074,14 @@ CHECK_FOR_ERROR }; -OptLinkage : INTERNAL { $$ = GlobalValue::InternalLinkage; } | - LINKONCE { $$ = GlobalValue::LinkOnceLinkage; } | - WEAK { $$ = GlobalValue::WeakLinkage; } | - APPENDING { $$ = GlobalValue::AppendingLinkage; } | - /*empty*/ { $$ = GlobalValue::ExternalLinkage; }; +OptLinkage : INTERNAL{ $$ = GlobalValue::InternalLinkage; } | + LINKONCE{ $$ = GlobalValue::LinkOnceLinkage; } | + WEAK{ $$ = GlobalValue::WeakLinkage; } | + APPENDING { $$ = GlobalValue::AppendingLinkage; } | + DLLIMPORT { $$ = GlobalValue::DLLImportLinkage; } | + DLLEXPORT { $$ = GlobalValue::DLLExportLinkage; } | + EXTERN_WEAK { $$ = GlobalValue::ExternalWeakLinkage; } | + /*empty*/ { $$ = GlobalValue::ExternalLinkage; }; OptCallingConv : /*empty*/ { $$ = CallingConv::C; } | CCC_TOK{ $$ = CallingConv::C; } | @@ -1728,8 +1735,24 @@ CHECK_FOR