Changeset 30dcc47
- Timestamp:
- May 2, 2018, 2:59:29 PM (6 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:
- 44bca7f
- Parents:
- 7f0001c (diff), 6f326b1 (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 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Common/PassVisitor.impl.h
r7f0001c r30dcc47 690 690 VISIT_START( node ); 691 691 692 maybeAccept_impl( node->condition, *this);693 maybeAccept_impl( node->message 692 node->condition = visitExpression( node->condition ); 693 maybeAccept_impl( node->message, *this ); 694 694 695 695 VISIT_END( node ); … … 700 700 MUTATE_START( node ); 701 701 702 maybeMutate_impl( node->condition, *this);703 maybeMutate_impl( node->message 702 node->condition = mutateExpression( node->condition ); 703 maybeMutate_impl( node->message, *this ); 704 704 705 705 MUTATE_END( StaticAssertDecl, node ); -
src/ResolvExpr/AlternativeFinder.cc
r7f0001c r30dcc47 459 459 /// Adds type variables to the open variable set and marks their assertions 460 460 void makeUnifiableVars( Type *type, OpenVarSet &unifiableVars, AssertionSet &needAssertions ) { 461 for ( Type::ForallList::const_iterator tyvar = type-> get_forall().begin(); tyvar != type->get_forall().end(); ++tyvar ) {461 for ( Type::ForallList::const_iterator tyvar = type->forall.begin(); tyvar != type->forall.end(); ++tyvar ) { 462 462 unifiableVars[ (*tyvar)->get_name() ] = TypeDecl::Data{ *tyvar }; 463 for ( std::list< DeclarationWithType* >::iterator assert = (*tyvar)-> get_assertions().begin(); assert != (*tyvar)->get_assertions().end(); ++assert ) {463 for ( std::list< DeclarationWithType* >::iterator assert = (*tyvar)->assertions.begin(); assert != (*tyvar)->assertions.end(); ++assert ) { 464 464 needAssertions[ *assert ].isUsed = true; 465 465 } -
src/ResolvExpr/AlternativeFinder.h
r7f0001c r30dcc47 126 126 void printAlts( const AltList &list, std::ostream &os, unsigned int indentAmt = 0 ); 127 127 128 /// Adds type variables to the open variable set and marks their assertions 129 void makeUnifiableVars( Type *type, OpenVarSet &unifiableVars, AssertionSet &needAssertions ); 130 128 131 template< typename InputIterator > 129 132 void simpleCombineEnvironments( InputIterator begin, InputIterator end, TypeEnvironment &result ) { -
src/ResolvExpr/Resolver.cc
r7f0001c r30dcc47 544 544 OpenVarSet openVars; 545 545 AssertionSet resultNeed, resultHave; 546 TypeEnvironment resultEnv; 546 TypeEnvironment resultEnv( func.env ); 547 makeUnifiableVars( function, openVars, resultNeed ); 548 // add all type variables as open variables now so that those not used in the parameter 549 // list are still considered open. 550 resultEnv.add( function->forall ); 547 551 548 552 // Load type variables from arguemnts into one shared space -
src/SymTab/Mangler.cc
r7f0001c r30dcc47 178 178 printQualifiers( pointerType ); 179 179 mangleName << "P"; 180 maybeAccept( pointerType-> get_base(), *visitor );180 maybeAccept( pointerType->base, *visitor ); 181 181 } 182 182 … … 185 185 printQualifiers( arrayType ); 186 186 mangleName << "A0"; 187 maybeAccept( arrayType-> get_base(), *visitor );187 maybeAccept( arrayType->base, *visitor ); 188 188 } 189 189 … … 191 191 printQualifiers( refType ); 192 192 mangleName << "R"; 193 maybeAccept( refType-> get_base(), *visitor );193 maybeAccept( refType->base, *visitor ); 194 194 } 195 195 -
src/libcfa/interpose.c
r7f0001c r30dcc47 10 10 // Created On : Wed Mar 29 16:10:31 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T hu Feb 8 16:18:09201813 // Update Count : 7512 // Last Modified On : Tue May 1 15:05:35 2018 13 // Update Count : 83 14 14 // 15 15 … … 95 95 void sigHandler_fpe ( __CFA_SIGPARMS__ ); 96 96 void sigHandler_abort( __CFA_SIGPARMS__ ); 97 void sigHandler_term ( __CFA_SIGPARMS__ ); 97 98 98 99 struct { … … 114 115 __cfaabi_sigaction( SIGFPE , sigHandler_fpe , SA_SIGINFO ); // Failure handler 115 116 __cfaabi_sigaction( SIGABRT, sigHandler_abort, SA_SIGINFO ); // Failure handler 117 __cfaabi_sigaction( SIGTERM, sigHandler_term , SA_SIGINFO ); // Failure handler 118 __cfaabi_sigaction( SIGINT , sigHandler_term , SA_SIGINFO ); // Failure handler 116 119 } 117 120 } … … 268 271 } 269 272 273 void sigHandler_term( __CFA_SIGPARMS__ ) { 274 abort( "Application stopped by %s signal.", sig == SIGINT ? "an interrupt (SIGINT)" : "a terminate (SIGTERM)" ); 275 } 276 270 277 // Local Variables: // 271 278 // mode: c // -
src/tests/references.c
r7f0001c r30dcc47 45 45 } 46 46 47 // --- temporary code needed to make array of references subscript work. 48 extern "C" { 49 void ** __index(__attribute__ ((unused)) size_t sizeof_T, __attribute__ ((unused)) size_t alignof_T, void **x, ptrdiff_t y) { 50 return (void **)((char *)x+y*sizeof(void *)); 51 } 52 void __ctor(void ***dst, void **src) { 53 *dst = src; 54 } 55 } 56 __attribute__((alias("__index"))) forall( dtype T | sized(T) ) T && ?[?]( T & * x, ptrdiff_t y ); 57 __attribute__((alias("__ctor"))) forall( dtype DT ) void ?{}( DT & * & dst, DT & * src); 58 forall( dtype DT ) void ^?{}( DT & * & ) {} 59 // --- end of temporary code 60 47 61 int main() { 48 62 int x = 123456, x2 = 789, *p1 = &x, **p2 = &p1, ***p3 = &p2, … … 52 66 *p3 = &p1; // change p2 53 67 int y = 0, z = 11, & ar[3] = { x, y, z }; // initialize array of references 54 //&ar[1] = &z; // change reference array element55 // typeof( ar[1] ) p;// is int, i.e., the type of referenced object56 // typeof( &ar[1] ) q; // is int &, i.e., the type of reference57 // sizeof( ar[1] ) == sizeof( int); // is true, i.e., the size of referenced object58 // sizeof( &ar[1] ) == sizeof( int *); // is true, i.e., the size of a reference68 &ar[1] = &z; // change reference array element 69 typeof( ar[1] ) p = 3; // is int, i.e., the type of referenced object 70 typeof( &ar[1] ) q = &x; // is int *, i.e., the type of pointer 71 _Static_assert( sizeof( ar[1] ) == sizeof( int ), "Array type should be int." ); // is true, i.e., the size of referenced object 72 _Static_assert( sizeof( &ar[1] ) == sizeof( int *), "Address of array should be int *." ); // is true, i.e., the size of a reference 59 73 60 74 ((int*&)&r3) = &x; // change r1, (&*)**r3
Note: See TracChangeset
for help on using the changeset viewer.