- Timestamp:
- Aug 15, 2017, 11:09:40 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, resolv-new, with_gc
- Children:
- 08fc48f
- Parents:
- c3acf0aa (diff), 6a36975 (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
- Files:
-
- 7 added
- 1 deleted
- 7 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
src/ControlStruct/MLEMutator.cc
rc3acf0aa r84993ff2 154 154 return switchStmt; 155 155 } 156 157 void addUnused( Statement * stmt, const Label & originalTarget ) { 158 // break/continue without a label doesn't need unused attribute 159 if ( originalTarget == "" ) return; 160 // add unused attribute to the originalTarget of a labelled break/continue 161 for ( Label & l : stmt->get_labels() ) { 162 // find the label to add unused attribute to 163 if ( l == originalTarget ) { 164 for ( Attribute * attr : l.get_attributes() ) { 165 // ensure attribute isn't added twice 166 if ( attr->get_name() == "unused" ) return; 167 } 168 l.get_attributes().push_back( new Attribute( "unused" ) ); 169 return; 170 } 171 } 172 assertf( false, "Could not find label '%s' on statement %s", originalTarget.get_name().c_str(), toString( stmt ).c_str() ); 173 } 174 156 175 157 176 Statement *MLEMutator::mutate( BranchStmt *branchStmt ) throw ( SemanticError ) { … … 204 223 } // switch 205 224 225 // add unused attribute to label to silence warnings 226 addUnused( targetEntry->get_controlStructure(), branchStmt->get_originalTarget() ); 227 206 228 // transform break/continue statements into goto to simplify later handling of branches 207 229 delete branchStmt; -
src/Parser/TypeData.cc
rc3acf0aa r84993ff2 10 10 // Created On : Sat May 16 15:12:51 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Aug 11 10:50:00 201713 // Update Count : 56 712 // Last Modified On : Mon Aug 14 10:41:00 2017 13 // Update Count : 568 14 14 // 15 15 … … 628 628 break; 629 629 case DeclarationNode::Union: 630 at = new UnionDecl( *td->aggregate.name, attributes );630 at = new UnionDecl( *td->aggregate.name, attributes, linkage ); 631 631 buildForall( td->aggregate.params, at->get_parameters() ); 632 632 break; 633 633 case DeclarationNode::Trait: 634 at = new TraitDecl( *td->aggregate.name, attributes );634 at = new TraitDecl( *td->aggregate.name, attributes, linkage ); 635 635 buildList( td->aggregate.params, at->get_parameters() ); 636 636 break; … … 649 649 case TypeData::Enum: { 650 650 if ( type->enumeration.body ) { 651 EnumDecl * typedecl = buildEnum( type, attributes );651 EnumDecl * typedecl = buildEnum( type, attributes, linkage ); 652 652 return new EnumInstType( buildQualifiers( type ), typedecl ); 653 653 } else { … … 754 754 } // buildSymbolic 755 755 756 EnumDecl * buildEnum( const TypeData * td, std::list< Attribute * > attributes ) {756 EnumDecl * buildEnum( const TypeData * td, std::list< Attribute * > attributes, LinkageSpec::Spec linkage ) { 757 757 assert( td->kind == TypeData::Enum ); 758 EnumDecl * ret = new EnumDecl( *td->enumeration.name, attributes );758 EnumDecl * ret = new EnumDecl( *td->enumeration.name, attributes, linkage ); 759 759 buildList( td->enumeration.constants, ret->get_members() ); 760 760 list< Declaration * >::iterator members = ret->get_members().begin(); … … 807 807 return buildAggregate( td, attributes, linkage ); 808 808 } else if ( td->kind == TypeData::Enum ) { 809 return buildEnum( td, attributes );809 return buildEnum( td, attributes, linkage ); 810 810 } else if ( td->kind == TypeData::Symbolic ) { 811 811 return buildSymbolic( td, name, scs, linkage ); -
src/Parser/TypeData.h
rc3acf0aa r84993ff2 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 15:18:36 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Sat Jul 22 09:32:47201713 // Update Count : 18 811 // Last Modified By : Andrew Beach 12 // Last Modified On : Mon Aug 14 10:38:00 2017 13 // Update Count : 189 14 14 // 15 15 … … 107 107 ReferenceToType * buildAggInst( const TypeData * ); 108 108 TypeDecl * buildVariable( const TypeData * ); 109 EnumDecl * buildEnum( const TypeData *, std::list< Attribute * > );109 EnumDecl * buildEnum( const TypeData *, std::list< Attribute * >, LinkageSpec::Spec ); 110 110 TypeInstType * buildSymbolicInst( const TypeData * ); 111 111 TupleType * buildTuple( const TypeData * ); -
src/ResolvExpr/Resolver.cc
rc3acf0aa r84993ff2 390 390 391 391 void Resolver::visit( CatchStmt *catchStmt ) { 392 Parent::visit( catchStmt ); 393 392 394 if ( catchStmt->get_cond() ) { 393 395 Expression * wrapped = new CastExpr( -
src/SynTree/Declaration.h
rc3acf0aa r84993ff2 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Aug 11 10:20:00 201713 // Update Count : 12 712 // Last Modified On : Mon Aug 14 10:15:00 2017 13 // Update Count : 128 14 14 // 15 15 … … 313 313 typedef AggregateDecl Parent; 314 314 public: 315 TraitDecl( const std::string &name, const std::list< Attribute * > & attributes ) : Parent( name ) {315 TraitDecl( const std::string &name, const std::list< Attribute * > & attributes, LinkageSpec::Spec linkage ) : Parent( name, attributes, linkage ) { 316 316 assertf( attributes.empty(), "attribute unsupported for traits" ); 317 317 } -
src/SynTree/Statement.cc
rc3acf0aa r84993ff2 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Mon Jun 12 10:37:00 201713 // Update Count : 6 412 // Last Modified On : Mon Aug 14 12:26:00 2017 13 // Update Count : 65 14 14 // 15 15 … … 329 329 void TryStmt::print( std::ostream &os, int indent ) const { 330 330 os << "Try Statement" << endl; 331 os << string( indent + 2, ' ' ) << "with block: " << endl; 331 os << string( indent + 2, ' ' ) << "with block:" << endl; 332 os << string( indent + 4, ' ' ); 332 333 block->print( os, indent + 4 ); 333 334 334 335 // handlers 335 os << string( indent + 2, ' ' ) << "and handlers: " << endl; 336 for ( std::list<CatchStmt *>::const_iterator i = handlers.begin(); i != handlers.end(); i++) 336 os << string( indent + 2, ' ' ) << "and handlers:" << endl; 337 for ( std::list<CatchStmt *>::const_iterator i = handlers.begin(); i != handlers.end(); i++) { 338 os << string( indent + 4, ' ' ); 337 339 (*i )->print( os, indent + 4 ); 340 } 338 341 339 342 // finally block 340 343 if ( finallyBlock != 0 ) { 341 os << string( indent + 2, ' ' ) << " Finally block:" << endl;344 os << string( indent + 2, ' ' ) << "and finally:" << endl; 342 345 finallyBlock->print( os, indent + 4 ); 343 346 } // if … … 360 363 os << "Catch " << ((Terminate == kind) ? "Terminate" : "Resume") << " Statement" << endl; 361 364 362 os << string( indent , ' ' ) << "... catching" << endl;365 os << string( indent + 2, ' ' ) << "... catching: "; 363 366 if ( decl ) { 364 367 decl->printShort( os, indent + 4 ); … … 367 370 else 368 371 os << string( indent + 4 , ' ' ) << ">>> Error: this catch clause must have a declaration <<<" << endl; 372 373 if ( cond ) { 374 os << string( indent + 2, ' ' ) << "with conditional:" << endl; 375 os << string( indent + 4, ' ' ); 376 cond->print( os, indent + 4 ); 377 } 378 else 379 os << string( indent + 2, ' ' ) << "with no conditional" << endl; 380 381 os << string( indent + 2, ' ' ) << "with block:" << endl; 382 os << string( indent + 4, ' ' ); 383 body->print( os, indent + 4 ); 369 384 } 370 385 … … 383 398 void FinallyStmt::print( std::ostream &os, int indent ) const { 384 399 os << "Finally Statement" << endl; 385 os << string( indent + 2, ' ' ) << "with block: " << endl; 400 os << string( indent + 2, ' ' ) << "with block:" << endl; 401 os << string( indent + 4, ' ' ); 386 402 block->print( os, indent + 4 ); 387 403 } -
src/tests/.expect/32/math2.txt
rc3acf0aa r84993ff2 1 fmod:1 1 1 1 1 12 remainder:-1 -1 -13 remquo:7 0.0999999 7 0.1 7 0.09999999999999999994 div:7, 0.2 7, 0.2 7, 0.25 fma:-2 -2 -26 fdim:2 2 27 nan:nan nan nan8 exp:2.71828 2.71828182845905 2.71828182845904524 1.46869+2.28736i 1.46869393991589+2.28735528717884i 1.46869393991588516+2.28735528717884239i9 exp2:2 2 210 expm1:1.71828 1.71828182845905 1.7182818284590452411 pow:1 1 1 0.273957+0.583701i 0.273957253830121+0.583700758758615i 0.273957253830121071+0.583700758758614628i12 16 25613 912673 256 64 -64 0.015625 -0.015625 18.3791736799526 0.264715-1.1922i14 log:0 0 0 0.346574+0.785398i 0.346573590279973+0.785398163397448i 0.346573590279972655+0.78539816339744831i15 log2:3 3 316 log10:2 2 217 log1p:0.693147 0.693147180559945 0.69314718055994530918 ilogb:0 0 019 logb:3 3 320 sqrt:1 1 1 1.09868+0.45509i 1.09868411346781+0.455089860562227i 1.09868411346780997+0.455089860562227341i21 cbrt:3 3 322 hypot:1.41421 1.4142135623731 1.4142135623730950523 1 sin:0.841471 0.841470984807897 0.841470984807896507 1.29846+0.634964i 1.29845758141598+0.634963914784736i 1.29845758141597729+0.634963914784736108i 24 2 cos:0.540302 0.54030230586814 0.540302305868139717 0.83373-0.988898i 0.833730025131149-0.988897705762865i 0.833730025131149049-0.988897705762865096i … … 27 5 acos:0 0 0 0.904557-1.06128i 0.904556894302381-1.06127506190504i 0.904556894302381364-1.06127506190503565i 28 6 atan:0.785398 0.785398163397448 0.78539816339744831 1.01722+0.402359i 1.01722196789785+0.402359478108525i 1.01722196789785137+0.402359478108525094i 29 atan2:0.785398 0.785398163397448 0.78539816339744831 atan:0.785398 0.785398163397448 0.78539816339744831 sinh:1.1752 1.1752011936438 1.17520119364380146 0.634964+1.29846i 0.634963914784736+1.29845758141598i 0.634963914784736108+1.29845758141597729i 7 atan2:0.785398 0.785398163397448 0.78539816339744831 atan:0.785398 0.785398163397448 0.78539816339744831 8 sinh:1.1752 1.1752011936438 1.17520119364380146 0.634964+1.29846i 0.634963914784736+1.29845758141598i 0.634963914784736108+1.29845758141597729i 30 9 cosh:1.54308 1.54308063481524 1.54308063481524378 0.83373+0.988898i 0.833730025131149+0.988897705762865i 0.833730025131149049+0.988897705762865096i 31 10 tanh:0.761594 0.761594155955765 0.761594155955764888 1.08392+0.271753i 1.08392332733869+0.271752585319512i 1.08392332733869454+0.271752585319511717i … … 38 17 lgamma:1.79176 1 1.79175946922805 1 1.791759469228055 1 39 18 tgamma:6 6 6 40 floor:1 1 141 ceil:2 2 242 trunc:3 3 343 rint:2 2 244 rint:2 2 245 rint:2 2 246 lrint:2 2 247 llrint:2 2 248 nearbyint:4 4 449 round:2 2 250 round:2 2 251 round:2 2 252 lround:2 2 253 llround:2 2 254 copysign:-1 -1 -155 frexp:0.5 3 0.5 3 0.5 356 ldexp:8 8 857 modf:2 0.3 2 0.3 2 0.358 modf:2, 0.3 2, 0.3 2, 0.359 nextafter:2 2 260 nexttoward:2 2 261 scalbn:16 16 1662 scalbln:16 16 16 -
src/tests/.expect/64/math2.txt
rc3acf0aa r84993ff2 1 fmod:1 1 1 1 1 12 remainder:-1 -1 -13 remquo:7 0.0999999 7 0.1 7 0.09999999999999999994 div:7, 0.2 7, 0.2 7, 0.25 fma:-2 -2 -26 fdim:2 2 27 nan:nan nan nan8 exp:2.71828 2.71828182845905 2.71828182845904524 1.46869+2.28736i 1.46869393991589+2.28735528717884i 1.46869393991588516+2.28735528717884239i9 exp2:2 2 210 expm1:1.71828 1.71828182845905 1.7182818284590452411 pow:1 1 1 0.273957+0.583701i 0.273957253830121+0.583700758758615i 0.273957253830121071+0.583700758758614627i12 16 25613 912673 256 64 -64 0.015625 -0.015625 18.3791736799526 0.264715-1.1922i14 log:0 0 0 0.346574+0.785398i 0.346573590279973+0.785398163397448i 0.346573590279972655+0.78539816339744831i15 log2:3 3 316 log10:2 2 217 log1p:0.693147 0.693147180559945 0.69314718055994530918 ilogb:0 0 019 logb:3 3 320 sqrt:1 1 1 1.09868+0.45509i 1.09868411346781+0.455089860562227i 1.09868411346780997+0.455089860562227341i21 cbrt:3 3 322 hypot:1.41421 1.4142135623731 1.4142135623730950523 1 sin:0.841471 0.841470984807897 0.841470984807896507 1.29846+0.634964i 1.29845758141598+0.634963914784736i 1.29845758141597729+0.634963914784736108i 24 2 cos:0.540302 0.54030230586814 0.540302305868139717 0.83373-0.988898i 0.833730025131149-0.988897705762865i 0.833730025131149049-0.988897705762865096i … … 27 5 acos:0 0 0 0.904557-1.06128i 0.904556894302381-1.06127506190504i 0.904556894302381364-1.06127506190503565i 28 6 atan:0.785398 0.785398163397448 0.78539816339744831 1.01722+0.402359i 1.01722196789785+0.402359478108525i 1.01722196789785137+0.402359478108525094i 29 atan2:0.785398 0.785398163397448 0.78539816339744831 atan:0.785398 0.785398163397448 0.78539816339744831 sinh:1.1752 1.1752011936438 1.17520119364380146 0.634964+1.29846i 0.634963914784736+1.29845758141598i 0.634963914784736108+1.29845758141597729i 7 atan2:0.785398 0.785398163397448 0.78539816339744831 atan:0.785398 0.785398163397448 0.78539816339744831 8 sinh:1.1752 1.1752011936438 1.17520119364380146 0.634964+1.29846i 0.634963914784736+1.29845758141598i 0.634963914784736108+1.29845758141597729i 30 9 cosh:1.54308 1.54308063481524 1.54308063481524378 0.83373+0.988898i 0.833730025131149+0.988897705762865i 0.833730025131149049+0.988897705762865096i 31 10 tanh:0.761594 0.761594155955765 0.761594155955764888 1.08392+0.271753i 1.08392332733869+0.271752585319512i 1.08392332733869454+0.271752585319511717i … … 38 17 lgamma:1.79176 1 1.79175946922805 1 1.791759469228055 1 39 18 tgamma:6 6 6 40 floor:1 1 141 ceil:2 2 242 trunc:3 3 343 rint:2 2 244 rint:2 2 245 rint:2 2 246 lrint:2 2 247 llrint:2 2 248 nearbyint:4 4 449 round:2 2 250 round:2 2 251 round:2 2 252 lround:2 2 253 llround:2 2 254 copysign:-1 -1 -155 frexp:0.5 3 0.5 3 0.5 356 ldexp:8 8 857 modf:2 0.3 2 0.3 2 0.358 modf:2, 0.3 2, 0.3 2, 0.359 nextafter:2 2 260 nexttoward:2 2 261 scalbn:16 16 1662 scalbln:16 16 16 -
src/tests/except-2.c
rc3acf0aa r84993ff2 5 5 6 6 // Local Exception Types and manual vtable types. 7 #define GLUE2(left, right) left##right 8 #define GLUE3(left, middle, right) left##middle##right 7 9 #define BASE_EXCEPT __cfaehm__base_exception_t 8 #define TABLE(name) name##_vtable9 #define INSTANCE(name) _##name##_vtable_instance10 #define TABLE(name) GLUE2(name,_vtable) 11 #define INSTANCE(name) GLUE3(_,name,_vtable_instance) 10 12 #define TRIVIAL_EXCEPTION(name) \ 11 13 struct name; \ 12 14 struct TABLE(name) { \ 13 struct __cfaehm__base_exception_t_vtableconst * parent; \15 struct TABLE(BASE_EXCEPT) const * parent; \ 14 16 size_t size; \ 15 17 void (*copy)(name *this, name * other); \ … … 28 30 } \ 29 31 TABLE(name) INSTANCE(name) @= { \ 30 .parent : &INSTANCE( __cfaehm__base_exception_t), \32 .parent : &INSTANCE(BASE_EXCEPT), \ 31 33 .size : sizeof(name), .copy : name##_copy, \ 32 34 .free : ^?{}, .msg : name##_msg \ … … 40 42 struct num_error; 41 43 struct num_error_vtable { 42 struct exception_t_vtableconst * parent;44 struct TABLE(BASE_EXCEPT) const * parent; 43 45 size_t size; 44 46 void (*copy)(num_error *this, num_error * other); … … 62 64 } 63 65 void ?{}(num_error * this, int num) { 64 this->virtual_table = & _num_error_vtable_instance;66 this->virtual_table = &INSTANCE(num_error); 65 67 this->msg = 0; 66 68 this->num = num;
Note:
See TracChangeset
for help on using the changeset viewer.