Changeset e6d39fe for src/Parser
- Timestamp:
- Apr 20, 2018, 9:04:41 AM (8 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, with_gc
- Children:
- 22bdc34
- Parents:
- 9181f1d (diff), 88f15ae (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:
-
- 5 edited
-
DeclarationNode.cc (modified) (4 diffs)
-
ExpressionNode.cc (modified) (3 diffs)
-
ParseNode.h (modified) (1 diff)
-
TypeData.cc (modified) (3 diffs)
-
parser.yy (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/DeclarationNode.cc
r9181f1d re6d39fe 10 10 // Created On : Sat May 16 12:34:05 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Feb 22 15:37:17201813 // Update Count : 10 3312 // Last Modified On : Thu Apr 19 15:09:29 2018 13 // Update Count : 1062 14 14 // 15 15 … … 47 47 const char * DeclarationNode::aggregateNames[] = { "struct", "union", "trait", "coroutine", "monitor", "thread", "NoAggregateNames" }; 48 48 const char * DeclarationNode::typeClassNames[] = { "otype", "dtype", "ftype", "NoTypeClassNames" }; 49 const char * DeclarationNode::builtinTypeNames[] = { "__builtin_va_list", " NoBuiltinTypeNames" };49 const char * DeclarationNode::builtinTypeNames[] = { "__builtin_va_list", "zero_t", "one_t", "NoBuiltinTypeNames" }; 50 50 51 51 UniqueName DeclarationNode::anonymous( "__anonymous" ); … … 561 561 562 562 checkQualifiers( type, q->type ); 563 if ( (builtin == Zero || builtin == One) && error.length() == 0 ) { 564 SemanticWarning( yylloc, Warning::BadQualifiersZeroOne, Type::QualifiersNames[log2( q->type->qualifiers.val )], builtinTypeNames[builtin] ); 565 // appendError( error, string( "questionable qualifiers" ) ); 566 } // if 563 567 addQualifiersToType( q->type, type ); 564 568 … … 924 928 delete newType->aggInst.aggregate->enumeration.constants; 925 929 newType->aggInst.aggregate->enumeration.constants = nullptr; 930 newType->aggInst.aggregate->enumeration.body = false; 926 931 } else { 927 932 assert( newType->aggInst.aggregate->kind == TypeData::Aggregate ); 928 933 delete newType->aggInst.aggregate->aggregate.fields; 929 934 newType->aggInst.aggregate->aggregate.fields = nullptr; 935 newType->aggInst.aggregate->aggregate.body = false; 930 936 } // if 931 937 // don't hoist twice -
src/Parser/ExpressionNode.cc
r9181f1d re6d39fe 211 211 if ( Unsigned && size < 2 ) { // hh or h, less than int ? 212 212 // int i = -1uh => 65535 not -1, so cast is necessary for unsigned, which unfortunately eliminates warnings for large values. 213 ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[Unsigned][size] ) );213 ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[Unsigned][size] ), false ); 214 214 } else if ( lnth != -1 ) { // explicit length ? 215 215 if ( lnth == 5 ) { // int128 ? 216 216 size = 5; 217 ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[Unsigned][size] ) );217 ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[Unsigned][size] ), false ); 218 218 } else { 219 ret = new CastExpr( ret, new TypeInstType( Type::Qualifiers(), lnthsInt[Unsigned][lnth], false ) );219 ret = new CastExpr( ret, new TypeInstType( Type::Qualifiers(), lnthsInt[Unsigned][lnth], false ), false ); 220 220 } // if 221 221 } // if … … 285 285 Expression * ret = new ConstantExpr( Constant( new BasicType( noQualifiers, kind[complx][size] ), str, v ) ); 286 286 if ( lnth != -1 ) { // explicit length ? 287 ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[complx][size] ) );287 ret = new CastExpr( ret, new BasicType( Type::Qualifiers(), kind[complx][size] ), false ); 288 288 } // if 289 289 … … 408 408 if ( dynamic_cast< VoidType * >( targetType ) ) { 409 409 delete targetType; 410 return new CastExpr( maybeMoveBuild< Expression >(expr_node) );410 return new CastExpr( maybeMoveBuild< Expression >(expr_node), false ); 411 411 } else { 412 return new CastExpr( maybeMoveBuild< Expression >(expr_node), targetType );412 return new CastExpr( maybeMoveBuild< Expression >(expr_node), targetType, false ); 413 413 } // if 414 414 } // build_cast 415 416 Expression * build_keyword_cast( KeywordCastExpr::Target target, ExpressionNode * expr_node ) { 417 return new KeywordCastExpr( maybeMoveBuild< Expression >(expr_node), target ); 418 } 415 419 416 420 Expression * build_virtual_cast( DeclarationNode * decl_node, ExpressionNode * expr_node ) { -
src/Parser/ParseNode.h
r9181f1d re6d39fe 179 179 180 180 Expression * build_cast( DeclarationNode * decl_node, ExpressionNode * expr_node ); 181 Expression * build_keyword_cast( KeywordCastExpr::Target target, ExpressionNode * expr_node ); 181 182 Expression * build_virtual_cast( DeclarationNode * decl_node, ExpressionNode * expr_node ); 182 183 Expression * build_fieldSel( ExpressionNode * expr_node, Expression * member ); -
src/Parser/TypeData.cc
r9181f1d re6d39fe 10 10 // Created On : Sat May 16 15:12:51 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T hu Feb 22 15:49:00201813 // Update Count : 59712 // Last Modified On : Tue Apr 17 23:00:52 2018 13 // Update Count : 602 14 14 // 15 15 … … 395 395 break; 396 396 case Builtin: 397 os << "gcc builtin type";397 os << DeclarationNode::builtinTypeNames[builtintype]; 398 398 break; 399 399 default: … … 490 490 switch ( td->kind ) { 491 491 case TypeData::Aggregate: 492 if ( ! toplevel && td->aggregate. fields) {492 if ( ! toplevel && td->aggregate.body ) { 493 493 ret = td->clone(); 494 494 } // if 495 495 break; 496 496 case TypeData::Enum: 497 if ( ! toplevel && td->enumeration. constants) {497 if ( ! toplevel && td->enumeration.body ) { 498 498 ret = td->clone(); 499 499 } // if -
src/Parser/parser.yy
r9181f1d re6d39fe 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 28 17:52:24201813 // Update Count : 31 3012 // Last Modified On : Tue Apr 17 17:10:30 2018 13 // Update Count : 3144 14 14 // 15 15 … … 391 391 %precedence '(' 392 392 393 %locations // support location tracking for error messages393 %locations // support location tracking for error messages 394 394 395 395 %start translation_unit // parse-tree root … … 688 688 { $$ = new ExpressionNode( build_cast( $2, $4 ) ); } 689 689 | '(' COROUTINE '&' ')' cast_expression // CFA 690 { SemanticError( yylloc, "coroutine cast is currently unimplemented." ); $$ = nullptr; }690 { $$ = new ExpressionNode( build_keyword_cast( KeywordCastExpr::Coroutine, $5 ) ); } 691 691 | '(' THREAD '&' ')' cast_expression // CFA 692 { SemanticError( yylloc, "monitor cast is currently unimplemented." ); $$ = nullptr; }692 { $$ = new ExpressionNode( build_keyword_cast( KeywordCastExpr::Thread, $5 ) ); } 693 693 | '(' MONITOR '&' ')' cast_expression // CFA 694 { SemanticError( yylloc, "thread cast is currently unimplemented." ); $$ = nullptr; }694 { $$ = new ExpressionNode( build_keyword_cast( KeywordCastExpr::Monitor, $5 ) ); } 695 695 // VIRTUAL cannot be opt because of look ahead issues 696 696 | '(' VIRTUAL ')' cast_expression // CFA … … 1708 1708 | LONG 1709 1709 { $$ = DeclarationNode::newLength( DeclarationNode::Long ); } 1710 | ZERO_T1711 { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }1712 | ONE_T1713 { $$ = DeclarationNode::newBuiltinType( DeclarationNode::One ); }1714 1710 | VALIST // GCC, __builtin_va_list 1715 1711 { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); } … … 1731 1727 basic_type_specifier: 1732 1728 direct_type 1729 // Cannot have type modifiers, e.g., short, long, etc. 1733 1730 | type_qualifier_list_opt indirect_type type_qualifier_list_opt 1734 1731 { $$ = $2->addQualifiers( $1 )->addQualifiers( $3 ); } … … 1736 1733 1737 1734 direct_type: 1738 // A semantic check is necessary for conflicting type qualifiers.1739 1735 basic_type_name 1740 1736 | type_qualifier_list basic_type_name … … 1755 1751 | ATTR_TYPEGENname '(' comma_expression ')' // CFA: e.g., @type(a+b) y; 1756 1752 { $$ = DeclarationNode::newAttr( $1, $3 ); } 1753 | ZERO_T // CFA 1754 { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); } 1755 | ONE_T // CFA 1756 { $$ = DeclarationNode::newBuiltinType( DeclarationNode::One ); } 1757 1757 ; 1758 1758
Note:
See TracChangeset
for help on using the changeset viewer.