Changeset 884f1409
- Timestamp:
- Jul 19, 2019, 4:52:59 PM (4 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- b5ce31e, fd642d2
- Parents:
- e723100 (diff), 335d81f (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. - Files:
-
- 4 added
- 28 edited
Legend:
- Unmodified
- Added
- Removed
-
driver/cfa.cc
re723100 r884f1409 405 405 args[nargs] = "--undefined=__cfaabi_appready_startup"; 406 406 nargs += 1; 407 args[nargs] = "-Xlinker";408 nargs += 1;409 args[nargs] = "--undefined=__cfaabi_dbg_record";410 nargs += 1;411 407 412 408 // include the cfa library in case it's needed … … 414 410 nargs += 1; 415 411 args[nargs] = ( *new string( string("-Wl,-rpath," ) + libdir + (intree ? "/src/.libs" : "")) ).c_str(); 412 nargs += 1; 413 args[nargs] = "-Wl,--push-state,--as-needed"; 414 nargs += 1; 415 args[nargs] = "-lcfathread"; 416 nargs += 1; 417 args[nargs] = "-Wl,--pop-state"; 416 418 nargs += 1; 417 419 args[nargs] = "-lcfa"; -
libcfa/src/Makefile.am
re723100 r884f1409 22 22 23 23 libdir = ${CFA_LIBDIR} 24 lib_LTLIBRARIES = libcfa.la 24 lib_LTLIBRARIES = libcfa.la libcfathread.la 25 25 26 26 VPATH += :../prelude … … 41 41 containers/maybe.hfa containers/pair.hfa containers/result.hfa containers/vector.hfa 42 42 43 # not all platforms support concurrency, add option do disable it44 headers_nosrc += concurrency/invoke.h45 headers += concurrency/coroutine.hfa concurrency/thread.hfa concurrency/kernel.hfa concurrency/monitor.hfa concurrency/mutex.hfa46 47 43 libsrc = startup.cfa interpose.cfa bits/debug.cfa assert.cfa exception.c virtual.c heap.cfa ${headers:.hfa=.cfa} 48 44 49 45 # not all platforms support concurrency, add option do disable it 50 libsrc += concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa concurrency/invoke.c concurrency/preemption.cfa 46 thread_headers_nosrc = concurrency/invoke.h 47 thread_headers = concurrency/coroutine.hfa concurrency/thread.hfa concurrency/kernel.hfa concurrency/monitor.hfa concurrency/mutex.hfa 48 thread_libsrc = concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa concurrency/invoke.c concurrency/preemption.cfa ${thread_headers:.hfa=.cfa} 51 49 else 52 50 headers = 51 thread_headers = 53 52 headers_nosrc = 53 thread_headers_nosrc = 54 54 libsrc = 55 55 endif … … 64 64 $(libobjs) : @CFACC@ @CFACPP@ prelude.cfa 65 65 66 thread_libobjs = $(addsuffix .lo, $(basename $(filter %.cfa,$(thread_libsrc)))) 67 $(thread_libobjs) : @CFACC@ @CFACPP@ prelude.cfa 68 66 69 67 70 # .deps inclusion is not done automatically by automake for new languages … … 72 75 73 76 -include $(libdeps) 77 78 thread_libdeps = $(join \ 79 $(addsuffix $(DEPDIR)/ , $(dir $(thread_libobjs) ) ), \ 80 $(notdir ${thread_libobjs:.lo=.Plo}) \ 81 ) 82 83 -include $(thread_libdeps) 84 74 85 75 86 prelude.o : prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACC@ @CFACPP@ … … 85 96 libcfa_la_LDFLAGS = -version-info @CFA_VERSION@ 86 97 98 libcfathread_la_SOURCES = ${thread_libsrc} 99 libcfathread_la_LDFLAGS = -version-info @CFA_VERSION@ 100 87 101 stdhdr = $(shell find $(srcdir)/stdhdr -type f -printf "%p ") 88 102 89 103 cfa_includedir = $(CFA_INCDIR) 90 nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc} 104 nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc} ${thread_headers} ${thread_headers_nosrc} 91 105 92 106 #---------------------------------------------------------------------------------------------------------------- -
libcfa/src/Makefile.in
re723100 r884f1409 142 142 time.cfa stdlib.cfa common.cfa containers/maybe.cfa \ 143 143 containers/pair.cfa containers/result.cfa \ 144 containers/vector.cfa concurrency/coroutine.cfa \ 145 concurrency/thread.cfa concurrency/kernel.cfa \ 146 concurrency/monitor.cfa concurrency/mutex.cfa \ 147 concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa \ 148 concurrency/invoke.c concurrency/preemption.cfa 144 containers/vector.cfa 149 145 am__dirstamp = $(am__leading_dot)dirstamp 150 146 @BUILDLIB_TRUE@am__objects_1 = fstream.lo iostream.lo iterator.lo \ … … 152 148 @BUILDLIB_TRUE@ common.lo containers/maybe.lo \ 153 149 @BUILDLIB_TRUE@ containers/pair.lo containers/result.lo \ 154 @BUILDLIB_TRUE@ containers/vector.lo concurrency/coroutine.lo \ 155 @BUILDLIB_TRUE@ concurrency/thread.lo concurrency/kernel.lo \ 156 @BUILDLIB_TRUE@ concurrency/monitor.lo concurrency/mutex.lo 150 @BUILDLIB_TRUE@ containers/vector.lo 157 151 @BUILDLIB_TRUE@am__objects_2 = startup.lo interpose.lo bits/debug.lo \ 158 152 @BUILDLIB_TRUE@ assert.lo exception.lo virtual.lo heap.lo \ 159 @BUILDLIB_TRUE@ $(am__objects_1) \ 160 @BUILDLIB_TRUE@ concurrency/CtxSwitch-@ARCHITECTURE@.lo \ 161 @BUILDLIB_TRUE@ concurrency/alarm.lo concurrency/invoke.lo \ 162 @BUILDLIB_TRUE@ concurrency/preemption.lo 153 @BUILDLIB_TRUE@ $(am__objects_1) 163 154 am_libcfa_la_OBJECTS = prelude.lo $(am__objects_2) 164 155 libcfa_la_OBJECTS = $(am_libcfa_la_OBJECTS) … … 170 161 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ 171 162 $(libcfa_la_LDFLAGS) $(LDFLAGS) -o $@ 163 libcfathread_la_LIBADD = 164 am__libcfathread_la_SOURCES_DIST = \ 165 concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa \ 166 concurrency/invoke.c concurrency/preemption.cfa \ 167 concurrency/coroutine.cfa concurrency/thread.cfa \ 168 concurrency/kernel.cfa concurrency/monitor.cfa \ 169 concurrency/mutex.cfa 170 @BUILDLIB_TRUE@am__objects_3 = concurrency/coroutine.lo \ 171 @BUILDLIB_TRUE@ concurrency/thread.lo concurrency/kernel.lo \ 172 @BUILDLIB_TRUE@ concurrency/monitor.lo concurrency/mutex.lo 173 @BUILDLIB_TRUE@am__objects_4 = \ 174 @BUILDLIB_TRUE@ concurrency/CtxSwitch-@ARCHITECTURE@.lo \ 175 @BUILDLIB_TRUE@ concurrency/alarm.lo concurrency/invoke.lo \ 176 @BUILDLIB_TRUE@ concurrency/preemption.lo $(am__objects_3) 177 am_libcfathread_la_OBJECTS = $(am__objects_4) 178 libcfathread_la_OBJECTS = $(am_libcfathread_la_OBJECTS) 179 libcfathread_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ 180 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ 181 $(AM_CFLAGS) $(CFLAGS) $(libcfathread_la_LDFLAGS) $(LDFLAGS) \ 182 -o $@ 172 183 AM_V_P = $(am__v_P_@AM_V@) 173 184 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) … … 214 225 am__v_CCLD_0 = @echo " CCLD " $@; 215 226 am__v_CCLD_1 = 216 SOURCES = $(libcfa_la_SOURCES) 217 DIST_SOURCES = $(am__libcfa_la_SOURCES_DIST) 227 SOURCES = $(libcfa_la_SOURCES) $(libcfathread_la_SOURCES) 228 DIST_SOURCES = $(am__libcfa_la_SOURCES_DIST) \ 229 $(am__libcfathread_la_SOURCES_DIST) 218 230 am__can_run_installinfo = \ 219 231 case $$AM_UPDATE_INFO_DIR in \ … … 225 237 limits.hfa rational.hfa time.hfa stdlib.hfa common.hfa \ 226 238 containers/maybe.hfa containers/pair.hfa containers/result.hfa \ 227 containers/vector.hfa concurrency/coroutine.hfa \ 239 containers/vector.hfa math.hfa gmp.hfa time_t.hfa \ 240 bits/align.hfa bits/containers.hfa bits/defs.hfa \ 241 bits/debug.hfa bits/locks.hfa concurrency/coroutine.hfa \ 228 242 concurrency/thread.hfa concurrency/kernel.hfa \ 229 concurrency/monitor.hfa concurrency/mutex.hfa math.hfa gmp.hfa \ 230 time_t.hfa bits/align.hfa bits/containers.hfa bits/defs.hfa \ 231 bits/debug.hfa bits/locks.hfa concurrency/invoke.h 243 concurrency/monitor.hfa concurrency/mutex.hfa \ 244 concurrency/invoke.h 232 245 HEADERS = $(nobase_cfa_include_HEADERS) 233 246 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) … … 421 434 am__v_UPP_0 = @echo " UPP " $@; 422 435 am__v_UPP_1 = 423 lib_LTLIBRARIES = libcfa.la 436 lib_LTLIBRARIES = libcfa.la libcfathread.la 424 437 425 438 # AM_CFLAGS for all cfa source … … 433 446 434 447 #---------------------------------------------------------------------------------------------------------------- 448 @BUILDLIB_TRUE@headers_nosrc = math.hfa gmp.hfa time_t.hfa bits/align.hfa bits/containers.hfa bits/defs.hfa bits/debug.hfa bits/locks.hfa 449 @BUILDLIB_FALSE@headers = 450 @BUILDLIB_TRUE@headers = fstream.hfa iostream.hfa iterator.hfa limits.hfa rational.hfa time.hfa stdlib.hfa common.hfa \ 451 @BUILDLIB_TRUE@ containers/maybe.hfa containers/pair.hfa containers/result.hfa containers/vector.hfa 452 453 @BUILDLIB_FALSE@libsrc = 454 @BUILDLIB_TRUE@libsrc = startup.cfa interpose.cfa bits/debug.cfa assert.cfa exception.c virtual.c heap.cfa ${headers:.hfa=.cfa} 455 @BUILDLIB_FALSE@thread_headers_nosrc = 435 456 436 457 # not all platforms support concurrency, add option do disable it 437 @BUILDLIB_TRUE@headers_nosrc = math.hfa gmp.hfa time_t.hfa \ 438 @BUILDLIB_TRUE@ bits/align.hfa bits/containers.hfa \ 439 @BUILDLIB_TRUE@ bits/defs.hfa bits/debug.hfa bits/locks.hfa \ 440 @BUILDLIB_TRUE@ concurrency/invoke.h 441 @BUILDLIB_FALSE@headers = 442 @BUILDLIB_TRUE@headers = fstream.hfa iostream.hfa iterator.hfa \ 443 @BUILDLIB_TRUE@ limits.hfa rational.hfa time.hfa stdlib.hfa \ 444 @BUILDLIB_TRUE@ common.hfa containers/maybe.hfa \ 445 @BUILDLIB_TRUE@ containers/pair.hfa containers/result.hfa \ 446 @BUILDLIB_TRUE@ containers/vector.hfa concurrency/coroutine.hfa \ 447 @BUILDLIB_TRUE@ concurrency/thread.hfa concurrency/kernel.hfa \ 448 @BUILDLIB_TRUE@ concurrency/monitor.hfa concurrency/mutex.hfa 449 @BUILDLIB_FALSE@libsrc = 450 451 # not all platforms support concurrency, add option do disable it 452 @BUILDLIB_TRUE@libsrc = startup.cfa interpose.cfa bits/debug.cfa \ 453 @BUILDLIB_TRUE@ assert.cfa exception.c virtual.c heap.cfa \ 454 @BUILDLIB_TRUE@ ${headers:.hfa=.cfa} \ 455 @BUILDLIB_TRUE@ concurrency/CtxSwitch-@ARCHITECTURE@.S \ 456 @BUILDLIB_TRUE@ concurrency/alarm.cfa concurrency/invoke.c \ 457 @BUILDLIB_TRUE@ concurrency/preemption.cfa 458 @BUILDLIB_TRUE@thread_headers_nosrc = concurrency/invoke.h 459 @BUILDLIB_FALSE@thread_headers = 460 @BUILDLIB_TRUE@thread_headers = concurrency/coroutine.hfa concurrency/thread.hfa concurrency/kernel.hfa concurrency/monitor.hfa concurrency/mutex.hfa 461 @BUILDLIB_TRUE@thread_libsrc = concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa concurrency/invoke.c concurrency/preemption.cfa ${thread_headers:.hfa=.cfa} 458 462 459 463 #---------------------------------------------------------------------------------------------------------------- … … 463 467 # add dependency of cfa files 464 468 libobjs = $(addsuffix .lo, $(basename $(filter %.cfa,$(libsrc)))) 469 thread_libobjs = $(addsuffix .lo, $(basename $(filter %.cfa,$(thread_libsrc)))) 465 470 466 471 # .deps inclusion is not done automatically by automake for new languages … … 470 475 ) 471 476 477 thread_libdeps = $(join \ 478 $(addsuffix $(DEPDIR)/ , $(dir $(thread_libobjs) ) ), \ 479 $(notdir ${thread_libobjs:.lo=.Plo}) \ 480 ) 481 472 482 473 483 #---------------------------------------------------------------------------------------------------------------- 474 484 libcfa_la_SOURCES = prelude.cfa ${libsrc} 475 485 libcfa_la_LDFLAGS = -version-info @CFA_VERSION@ 486 libcfathread_la_SOURCES = ${thread_libsrc} 487 libcfathread_la_LDFLAGS = -version-info @CFA_VERSION@ 476 488 stdhdr = $(shell find $(srcdir)/stdhdr -type f -printf "%p ") 477 489 cfa_includedir = $(CFA_INCDIR) 478 nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc} 490 nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc} ${thread_headers} ${thread_headers_nosrc} 479 491 all: all-am 480 492 … … 567 579 containers/vector.lo: containers/$(am__dirstamp) \ 568 580 containers/$(DEPDIR)/$(am__dirstamp) 581 582 libcfa.la: $(libcfa_la_OBJECTS) $(libcfa_la_DEPENDENCIES) $(EXTRA_libcfa_la_DEPENDENCIES) 583 $(AM_V_CCLD)$(libcfa_la_LINK) -rpath $(libdir) $(libcfa_la_OBJECTS) $(libcfa_la_LIBADD) $(LIBS) 569 584 concurrency/$(am__dirstamp): 570 585 @$(MKDIR_P) concurrency … … 573 588 @$(MKDIR_P) concurrency/$(DEPDIR) 574 589 @: > concurrency/$(DEPDIR)/$(am__dirstamp) 590 concurrency/CtxSwitch-@ARCHITECTURE@.lo: concurrency/$(am__dirstamp) \ 591 concurrency/$(DEPDIR)/$(am__dirstamp) 592 concurrency/alarm.lo: concurrency/$(am__dirstamp) \ 593 concurrency/$(DEPDIR)/$(am__dirstamp) 594 concurrency/invoke.lo: concurrency/$(am__dirstamp) \ 595 concurrency/$(DEPDIR)/$(am__dirstamp) 596 concurrency/preemption.lo: concurrency/$(am__dirstamp) \ 597 concurrency/$(DEPDIR)/$(am__dirstamp) 575 598 concurrency/coroutine.lo: concurrency/$(am__dirstamp) \ 576 599 concurrency/$(DEPDIR)/$(am__dirstamp) … … 583 606 concurrency/mutex.lo: concurrency/$(am__dirstamp) \ 584 607 concurrency/$(DEPDIR)/$(am__dirstamp) 585 concurrency/CtxSwitch-@ARCHITECTURE@.lo: concurrency/$(am__dirstamp) \ 586 concurrency/$(DEPDIR)/$(am__dirstamp) 587 concurrency/alarm.lo: concurrency/$(am__dirstamp) \ 588 concurrency/$(DEPDIR)/$(am__dirstamp) 589 concurrency/invoke.lo: concurrency/$(am__dirstamp) \ 590 concurrency/$(DEPDIR)/$(am__dirstamp) 591 concurrency/preemption.lo: concurrency/$(am__dirstamp) \ 592 concurrency/$(DEPDIR)/$(am__dirstamp) 593 594 libcfa.la: $(libcfa_la_OBJECTS) $(libcfa_la_DEPENDENCIES) $(EXTRA_libcfa_la_DEPENDENCIES) 595 $(AM_V_CCLD)$(libcfa_la_LINK) -rpath $(libdir) $(libcfa_la_OBJECTS) $(libcfa_la_LIBADD) $(LIBS) 608 609 libcfathread.la: $(libcfathread_la_OBJECTS) $(libcfathread_la_DEPENDENCIES) $(EXTRA_libcfathread_la_DEPENDENCIES) 610 $(AM_V_CCLD)$(libcfathread_la_LINK) -rpath $(libdir) $(libcfathread_la_OBJECTS) $(libcfathread_la_LIBADD) $(LIBS) 596 611 597 612 mostlyclean-compile: … … 922 937 $(am__mv) $$depbase.Tpo $$depbase.Plo 923 938 $(libobjs) : @CFACC@ @CFACPP@ prelude.cfa 939 $(thread_libobjs) : @CFACC@ @CFACPP@ prelude.cfa 924 940 925 941 -include $(libdeps) 942 943 -include $(thread_libdeps) 926 944 927 945 prelude.o : prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACC@ @CFACPP@ -
libcfa/src/bits/defs.hfa
re723100 r884f1409 41 41 } 42 42 #endif 43 44 #if defined(__cforall_thread__) 45 #define OPTIONAL_THREAD 46 #else 47 #define OPTIONAL_THREAD __attribute__((weak)) 48 #endif -
libcfa/src/bits/locks.hfa
re723100 r884f1409 50 50 #ifdef __cforall 51 51 extern "C" { 52 extern void disable_interrupts() ;53 extern void enable_interrupts_noPoll() ;52 extern void disable_interrupts() OPTIONAL_THREAD; 53 extern void enable_interrupts_noPoll() OPTIONAL_THREAD; 54 54 55 55 #ifdef __CFA_DEBUG__ -
libcfa/src/concurrency/alarm.cfa
re723100 r884f1409 13 13 // Update Count : 67 14 14 // 15 16 #define __cforall_thread__ 15 17 16 18 extern "C" { -
libcfa/src/concurrency/coroutine.cfa
re723100 r884f1409 13 13 // Update Count : 9 14 14 // 15 16 #define __cforall_thread__ 15 17 16 18 #include "coroutine.hfa" -
libcfa/src/concurrency/invoke.c
re723100 r884f1409 13 13 // Update Count : 5 14 14 // 15 16 #define __cforall_thread__ 15 17 16 18 #include <stdbool.h> … … 31 33 extern void __finish_creation( struct thread_desc * ); 32 34 extern void __leave_thread_monitor( struct thread_desc * this ); 33 extern void disable_interrupts() ;35 extern void disable_interrupts() OPTIONAL_THREAD; 34 36 extern void enable_interrupts( __cfaabi_dbg_ctx_param ); 35 37 -
libcfa/src/concurrency/kernel.cfa
re723100 r884f1409 13 13 // Update Count : 25 14 14 // 15 16 #define __cforall_thread__ 15 17 16 18 //C Includes … … 943 945 } 944 946 ) 947 948 //----------------------------------------------------------------------------- 949 // Debug 950 bool threading_enabled(void) { 951 return true; 952 } 945 953 // Local Variables: // 946 954 // mode: c // -
libcfa/src/concurrency/kernel_private.hfa
re723100 r884f1409 26 26 27 27 extern "C" { 28 void disable_interrupts() ;28 void disable_interrupts() OPTIONAL_THREAD; 29 29 void enable_interrupts_noPoll(); 30 30 void enable_interrupts( __cfaabi_dbg_ctx_param ); -
libcfa/src/concurrency/monitor.cfa
re723100 r884f1409 13 13 // Update Count : 9 14 14 // 15 16 #define __cforall_thread__ 15 17 16 18 #include "monitor.hfa" -
libcfa/src/concurrency/mutex.cfa
re723100 r884f1409 15 15 // Update Count : 0 16 16 // 17 18 #define __cforall_thread__ 17 19 18 20 #include "mutex.hfa" -
libcfa/src/concurrency/preemption.cfa
re723100 r884f1409 13 13 // Update Count : 37 14 14 // 15 16 #define __cforall_thread__ 15 17 16 18 #include "preemption.hfa" -
libcfa/src/concurrency/thread.cfa
re723100 r884f1409 13 13 // Update Count : 8 14 14 // 15 16 #define __cforall_thread__ 15 17 16 18 #include "thread.hfa" -
libcfa/src/stdlib.cfa
re723100 r884f1409 252 252 long double _Complex random( void ) { return (long double)drand48() + (long double _Complex)(drand48() * _Complex_I); } 253 253 254 //--------------------------------------- 255 256 bool threading_enabled(void) __attribute__((weak)) { 257 return false; 258 } 254 259 255 260 // Local Variables: // -
libcfa/src/stdlib.hfa
re723100 r884f1409 15 15 16 16 #pragma once 17 18 #include "bits/defs.hfa" 17 19 18 20 #include <stdlib.h> // *alloc, strto*, ato* … … 246 248 #include "common.hfa" 247 249 250 //--------------------------------------- 251 252 extern bool threading_enabled(void) OPTIONAL_THREAD; 253 248 254 // Local Variables: // 249 255 // mode: c // -
src/InitTweak/InitTweak.cc
re723100 r884f1409 9 9 // Author : Rob Schluntz 10 10 // Created On : Fri May 13 11:26:36 2016 11 // Last Modified By : A aron B. Moss12 // Last Modified On : Mon Jun 10 13:30:00 201913 // Update Count : 511 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Jun 19 14:34:00 2019 13 // Update Count : 6 14 14 // 15 15 … … 633 633 return nullptr; 634 634 } 635 636 DeclarationWithType * getFunctionCore( const Expression * expr ) { 637 if ( const auto * appExpr = dynamic_cast< const ApplicationExpr * >( expr ) ) { 638 return getCalledFunction( appExpr->function ); 639 } else if ( const auto * untyped = dynamic_cast< const UntypedExpr * >( expr ) ) { 640 return getCalledFunction( untyped->function ); 641 } 642 assertf( false, "getFunction with unknown expression: %s", toString( expr ).c_str() ); 643 } 635 644 } 636 645 637 646 DeclarationWithType * getFunction( Expression * expr ) { 638 if ( ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( expr ) ) { 639 return getCalledFunction( appExpr->get_function() ); 640 } else if ( UntypedExpr * untyped = dynamic_cast< UntypedExpr * > ( expr ) ) { 641 return getCalledFunction( untyped->get_function() ); 642 } 643 assertf( false, "getFunction received unknown expression: %s", toString( expr ).c_str() ); 647 return getFunctionCore( expr ); 648 } 649 650 const DeclarationWithType * getFunction( const Expression * expr ) { 651 return getFunctionCore( expr ); 644 652 } 645 653 -
src/InitTweak/InitTweak.h
re723100 r884f1409 9 9 // Author : Rob Schluntz 10 10 // Created On : Fri May 13 11:26:36 2016 11 // Last Modified By : A aron B. Moss12 // Last Modified On : Mon Jun 10 13:30:00 201913 // Update Count : 511 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Jul 19 14:18:00 2019 13 // Update Count : 6 14 14 // 15 15 … … 61 61 /// returns the declaration of the function called by the expr (must be ApplicationExpr or UntypedExpr) 62 62 DeclarationWithType * getFunction( Expression * expr ); 63 const DeclarationWithType * getFunction( const Expression * expr ); 63 64 const ast::DeclWithType * getFunction( const ast::Expr * expr ); 64 65 -
src/ResolvExpr/FindOpenVars.cc
re723100 r884f1409 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 09:42:48 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Sun May 17 09:45:25 201513 // Update Count : 311 // Last Modified By : Andrew 12 // Last Modified On : Fri Jul 12 14:18:00 2019 13 // Update Count : 4 14 14 // 15 15 … … 29 29 FindOpenVars_old( OpenVarSet &openVars, OpenVarSet &closedVars, AssertionSet &needAssertions, AssertionSet &haveAssertions, bool firstIsOpen ); 30 30 31 void previsit( PointerType * pointerType );32 void previsit( ArrayType * arrayType );33 void previsit( FunctionType * functionType );34 void previsit( TupleType * tupleType );31 void previsit( const PointerType * pointerType ); 32 void previsit( const ArrayType * arrayType ); 33 void previsit( const FunctionType * functionType ); 34 void previsit( const TupleType * tupleType ); 35 35 36 void common_action( Type *type );36 void common_action( const Type *type ); 37 37 38 38 OpenVarSet &openVars, &closedVars; … … 41 41 }; 42 42 43 void findOpenVars( Type *type, OpenVarSet &openVars, OpenVarSet &closedVars, AssertionSet &needAssertions, AssertionSet &haveAssertions, bool firstIsOpen ) {43 void findOpenVars( const Type *type, OpenVarSet &openVars, OpenVarSet &closedVars, AssertionSet &needAssertions, AssertionSet &haveAssertions, bool firstIsOpen ) { 44 44 PassVisitor<FindOpenVars_old> finder( openVars, closedVars, needAssertions, haveAssertions, firstIsOpen ); 45 45 type->accept( finder ); … … 50 50 } 51 51 52 void FindOpenVars_old::common_action( Type *type ) {52 void FindOpenVars_old::common_action( const Type * type ) { 53 53 if ( nextIsOpen ) { 54 for ( Type::ForallList::const_iterator i = type-> get_forall().begin(); i != type->get_forall().end(); ++i ) {54 for ( Type::ForallList::const_iterator i = type->forall.begin(); i != type->forall.end(); ++i ) { 55 55 openVars[ (*i)->get_name() ] = TypeDecl::Data{ (*i) }; 56 56 for ( std::list< DeclarationWithType* >::const_iterator assert = (*i)->get_assertions().begin(); assert != (*i)->get_assertions().end(); ++assert ) { … … 61 61 } 62 62 } else { 63 for ( Type::ForallList::const_iterator i = type-> get_forall().begin(); i != type->get_forall().end(); ++i ) {63 for ( Type::ForallList::const_iterator i = type->forall.begin(); i != type->forall.end(); ++i ) { 64 64 closedVars[ (*i)->get_name() ] = TypeDecl::Data{ (*i) }; 65 65 for ( std::list< DeclarationWithType* >::const_iterator assert = (*i)->get_assertions().begin(); assert != (*i)->get_assertions().end(); ++assert ) { … … 78 78 } 79 79 80 void FindOpenVars_old::previsit( PointerType *pointerType) {80 void FindOpenVars_old::previsit(const PointerType * pointerType) { 81 81 common_action( pointerType ); 82 82 } 83 83 84 void FindOpenVars_old::previsit( ArrayType *arrayType) {84 void FindOpenVars_old::previsit(const ArrayType * arrayType) { 85 85 common_action( arrayType ); 86 86 } 87 87 88 void FindOpenVars_old::previsit( FunctionType *functionType) {88 void FindOpenVars_old::previsit(const FunctionType * functionType) { 89 89 common_action( functionType ); 90 90 nextIsOpen = ! nextIsOpen; … … 92 92 } 93 93 94 void FindOpenVars_old::previsit( TupleType *tupleType) {94 void FindOpenVars_old::previsit(const TupleType * tupleType) { 95 95 common_action( tupleType ); 96 96 } … … 104 104 bool nextIsOpen; 105 105 106 FindOpenVars_new( 107 ast::OpenVarSet & o, ast::OpenVarSet & c, ast::AssertionSet & n, 106 FindOpenVars_new( 107 ast::OpenVarSet & o, ast::OpenVarSet & c, ast::AssertionSet & n, 108 108 ast::AssertionSet & h, FirstMode firstIsOpen ) 109 109 : open( o ), closed( c ), need( n ), have( h ), nextIsOpen( firstIsOpen ) {} … … 135 135 } 136 136 137 void findOpenVars( 138 const ast::Type * type, ast::OpenVarSet & open, ast::OpenVarSet & closed, 137 void findOpenVars( 138 const ast::Type * type, ast::OpenVarSet & open, ast::OpenVarSet & closed, 139 139 ast::AssertionSet & need, ast::AssertionSet & have, FirstMode firstIsOpen ) { 140 140 ast::Pass< FindOpenVars_new > finder{ open, closed, need, have, firstIsOpen }; -
src/ResolvExpr/FindOpenVars.h
re723100 r884f1409 26 26 namespace ResolvExpr { 27 27 // Updates open and closed variables and their associated assertions 28 void findOpenVars( Type *type, OpenVarSet &openVars, OpenVarSet &closedVars, AssertionSet &needAssertions, AssertionSet &haveAssertions, bool firstIsOpen );28 void findOpenVars( const Type *type, OpenVarSet &openVars, OpenVarSet &closedVars, AssertionSet &needAssertions, AssertionSet &haveAssertions, bool firstIsOpen ); 29 29 30 30 enum FirstMode { FirstClosed, FirstOpen }; -
src/ResolvExpr/Occurs.cc
re723100 r884f1409 24 24 struct Occurs : public WithVisitorRef<Occurs> { 25 25 Occurs( std::string varName, const TypeEnvironment &env ); 26 void previsit( TypeInstType * typeInst );26 void previsit( const TypeInstType * typeInst ); 27 27 28 28 bool result; … … 31 31 }; 32 32 33 bool occurs( Type *type, std::stringvarName, const TypeEnvironment &env ) {33 bool occurs( const Type *type, const std::string & varName, const TypeEnvironment &env ) { 34 34 PassVisitor<Occurs> occur( varName, env ); 35 35 type->accept( occur ); … … 45 45 } 46 46 47 void Occurs::previsit( TypeInstType * typeInst ) {47 void Occurs::previsit( const TypeInstType * typeInst ) { 48 48 /// std::cerr << "searching for vars: "; 49 49 /// std::copy( eqvVars.begin(), eqvVars.end(), std::ostream_iterator< std::string >( std::cerr, " " ) ); -
src/ResolvExpr/ResolveAssertions.cc
re723100 r884f1409 73 73 CandidateList matches; 74 74 75 DeferItem( DeclarationWithType* decl, const AssertionSetValue& info, CandidateList&& matches )75 DeferItem( const DeclarationWithType* decl, const AssertionSetValue& info, CandidateList&& matches ) 76 76 : decl(decl), info(info), matches(std::move(matches)) {} 77 77 -
src/ResolvExpr/TypeEnvironment.cc
re723100 r884f1409 315 315 } 316 316 317 bool isFtype( Type *type ) {318 if ( dynamic_cast< FunctionType* >( type ) ) {317 bool isFtype( const Type *type ) { 318 if ( dynamic_cast< const FunctionType * >( type ) ) { 319 319 return true; 320 } else if ( TypeInstType *typeInst = dynamic_cast< TypeInstType* >( type ) ) {320 } else if ( const TypeInstType *typeInst = dynamic_cast< const TypeInstType * >( type ) ) { 321 321 return typeInst->get_isFtype(); 322 322 } // if -
src/ResolvExpr/typeops.h
re723100 r884f1409 149 149 150 150 // in Occurs.cc 151 bool occurs( Type * type, std::stringvarName, const TypeEnvironment & env );151 bool occurs( const Type * type, const std::string & varName, const TypeEnvironment & env ); 152 152 // new AST version in TypeEnvironment.cpp (only place it was used in old AST) 153 153 … … 200 200 201 201 // in TypeEnvironment.cc 202 bool isFtype( Type * type );202 bool isFtype( const Type * type ); 203 203 } // namespace ResolvExpr 204 204 -
src/SynTree/Type.cc
re723100 r884f1409 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Thu Jan 31 21:54:16201913 // Update Count : 4 311 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Jul 12 15:48:00 2019 13 // Update Count : 44 14 14 // 15 15 #include "Type.h" … … 141 141 } 142 142 143 const Type * Type::stripReferences() const { 144 const Type * type; 145 const ReferenceType * ref; 146 for ( type = this; (ref = dynamic_cast<const ReferenceType *>( type )); type = ref->base ); 147 return type; 148 } 149 143 150 int Type::referenceDepth() const { return 0; } 144 151 -
src/SynTree/Type.h
re723100 r884f1409 172 172 /// return type without outer references 173 173 Type * stripReferences(); 174 const Type * stripReferences() const; 174 175 175 176 /// return the number of references occuring consecutively on the outermost layer of this type (i.e. do not count references nested within other types) … … 256 257 BasicType( const Type::Qualifiers & tq, Kind bt, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 257 258 258 Kind get_kind() { return kind; }259 Kind get_kind() const { return kind; } 259 260 void set_kind( Kind newValue ) { kind = newValue; } 260 261 -
src/Tuples/TupleExpansion.cc
re723100 r884f1409 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Wed Feb 13 18:14:12201913 // Update Count : 2 111 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Jul 19 14:39:00 2019 13 // Update Count : 22 14 14 // 15 15 … … 364 364 ImpurityDetector( bool ignoreUnique ) : ignoreUnique( ignoreUnique ) {} 365 365 366 void previsit( ApplicationExpr * appExpr ) {366 void previsit( const ApplicationExpr * appExpr ) { 367 367 visit_children = false; 368 if ( DeclarationWithType * function = InitTweak::getFunction( appExpr ) ) {369 if ( function-> get_linkage()== LinkageSpec::Intrinsic ) {370 if ( function-> get_name() == "*?" || function->get_name()== "?[?]" ) {368 if ( const DeclarationWithType * function = InitTweak::getFunction( appExpr ) ) { 369 if ( function->linkage == LinkageSpec::Intrinsic ) { 370 if ( function->name == "*?" || function->name == "?[?]" ) { 371 371 // intrinsic dereference, subscript are pure, but need to recursively look for impurity 372 372 visit_children = true; … … 377 377 maybeImpure = true; 378 378 } 379 void previsit( UntypedExpr * ) { maybeImpure = true; visit_children = false; }380 void previsit( UniqueExpr * ) {379 void previsit( const UntypedExpr * ) { maybeImpure = true; visit_children = false; } 380 void previsit( const UniqueExpr * ) { 381 381 if ( ignoreUnique ) { 382 382 // bottom out at unique expression. … … 393 393 } // namespace 394 394 395 bool maybeImpure( Expression * expr ) {395 bool maybeImpure( const Expression * expr ) { 396 396 PassVisitor<ImpurityDetector> detector( false ); 397 397 expr->accept( detector ); … … 399 399 } 400 400 401 bool maybeImpureIgnoreUnique( Expression * expr ) {401 bool maybeImpureIgnoreUnique( const Expression * expr ) { 402 402 PassVisitor<ImpurityDetector> detector( true ); 403 403 expr->accept( detector ); -
src/Tuples/Tuples.h
re723100 r884f1409 55 55 56 56 /// returns true if the expression may contain side-effects. 57 bool maybeImpure( Expression * expr );57 bool maybeImpure( const Expression * expr ); 58 58 bool maybeImpure( const ast::Expr * expr ); 59 59 60 60 /// Returns true if the expression may contain side-effect, 61 61 /// ignoring the presence of unique expressions. 62 bool maybeImpureIgnoreUnique( Expression * expr );62 bool maybeImpureIgnoreUnique( const Expression * expr ); 63 63 bool maybeImpureIgnoreUnique( const ast::Expr * expr ); 64 64 } // namespace Tuples
Note: See TracChangeset
for help on using the changeset viewer.