Changeset 23a08aa0 for src/Parser
- Timestamp:
- Sep 19, 2022, 8:11:02 PM (3 years ago)
- Branches:
- ADT, ast-experimental, master, pthread-emulation
- Children:
- aa9f215
- Parents:
- ebf8ca5 (diff), ae1d151 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- src/Parser
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/DeclarationNode.cc
rebf8ca5 r23a08aa0 262 262 newnode->type->enumeration.anon = name == nullptr; 263 263 if ( base && base->type) { 264 newnode->type->base = base->type; 264 newnode->type->base = base->type; 265 265 } // if 266 266 … … 505 505 } // for 506 506 // src is the new item being added and has a single bit 507 } else if ( ! src->storageClasses.is_threadlocal ) { // conflict ?507 } else if ( ! src->storageClasses.is_threadlocal_any() ) { // conflict ? 508 508 appendError( error, string( "conflicting " ) + Type::StorageClassesNames[storageClasses.ffs()] + 509 509 " & " + Type::StorageClassesNames[src->storageClasses.ffs()] ); -
src/Parser/lex.ll
rebf8ca5 r23a08aa0 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Sun Jun 20 18:41:09 202113 * Update Count : 7 5912 * Last Modified On : Tue Aug 30 18:39:54 2022 13 * Update Count : 760 14 14 */ 15 15 … … 314 314 switch { KEYWORD_RETURN(SWITCH); } 315 315 thread { KEYWORD_RETURN(THREAD); } // C11 316 _Thread_local { KEYWORD_RETURN(THREADLOCAL); } // C11 316 __thread { KEYWORD_RETURN(THREADLOCALGCC); } // GCC 317 _Thread_local { KEYWORD_RETURN(THREADLOCALC11); } // C11 317 318 throw { KEYWORD_RETURN(THROW); } // CFA 318 319 throwResume { KEYWORD_RETURN(THROWRESUME); } // CFA -
src/Parser/parser.yy
rebf8ca5 r23a08aa0 58 58 59 59 // lex uses __null in a boolean context, it's fine. 60 //#pragma GCC diagnostic ignored "-Wparentheses-equality" 60 #pragma GCC diagnostic ignored "-Wpragmas" 61 #pragma GCC diagnostic ignored "-Wparentheses-equality" 62 #pragma GCC diagnostic warning "-Wpragmas" 61 63 62 64 extern DeclarationNode * parseTree; … … 293 295 %token TYPEDEF 294 296 %token EXTERN STATIC AUTO REGISTER 295 %token THREADLOCAL //C11297 %token THREADLOCALGCC THREADLOCALC11 // GCC, C11 296 298 %token INLINE FORTRAN // C99, extension ISO/IEC 9899:1999 Section J.5.9(1) 297 299 %token NORETURN // C11 … … 1345 1347 { 1346 1348 if ( $2 == OperKinds::LThan || $2 == OperKinds::LEThan ) { SemanticError( yylloc, MISSING_ANON_FIELD ); $$ = nullptr; } 1347 else { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; } 1349 else { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; } 1348 1350 } 1349 1351 | comma_expression updowneq comma_expression '~' comma_expression // CFA, anonymous loop-index … … 1357 1359 { 1358 1360 if ( $2 == OperKinds::LThan || $2 == OperKinds::LEThan ) { SemanticError( yylloc, MISSING_ANON_FIELD ); $$ = nullptr; } 1359 else { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; } 1361 else { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; } 1360 1362 } 1361 1363 | comma_expression updowneq comma_expression '~' '@' // CFA, error … … 2082 2084 | REGISTER 2083 2085 { $$ = DeclarationNode::newStorageClass( Type::Register ); } 2084 | THREADLOCAL // C11 2085 { $$ = DeclarationNode::newStorageClass( Type::Threadlocal ); } 2086 | THREADLOCALGCC // GCC 2087 { $$ = DeclarationNode::newStorageClass( Type::ThreadlocalGcc ); } 2088 | THREADLOCALC11 // C11 2089 { $$ = DeclarationNode::newStorageClass( Type::ThreadlocalC11 ); } 2086 2090 // Put function specifiers here to simplify parsing rules, but separate them semantically. 2087 2091 | INLINE // C99
Note:
See TracChangeset
for help on using the changeset viewer.