[llvm-commits] CVS: llvm/lib/AsmParser/Lexer.l Lexer.l.cvs llvmAsmParser.y llvmAsmParser.y.cvs

2007-04-29 Thread Anton Korobeynikov


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

2007-01-28 Thread Anton Korobeynikov


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

2007-01-12 Thread Anton Korobeynikov


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

2006-09-14 Thread Anton Korobeynikov


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