Changes in / [b4d65c7:c0aa336]
- Files:
-
- 3 added
- 13 deleted
- 28 edited
-
Jenkinsfile (modified) (1 diff)
-
configure (modified) (2 diffs)
-
configure.ac (modified) (1 diff)
-
src/CodeTools/DeclStats.cc (deleted)
-
src/CodeTools/DeclStats.h (deleted)
-
src/CodeTools/module.mk (deleted)
-
src/Common/ScopedMap.h (modified) (2 diffs)
-
src/Common/VectorMap.h (deleted)
-
src/Makefile.am (modified) (1 diff)
-
src/Makefile.in (modified) (13 diffs)
-
src/ResolvExpr/Resolver.cc (modified) (2 diffs)
-
src/benchmark/CorCtxSwitch.c (deleted)
-
src/benchmark/Makefile.am (deleted)
-
src/benchmark/Makefile.in (deleted)
-
src/benchmark/ThrdCtxSwitch.c (deleted)
-
src/benchmark/bench.c (deleted)
-
src/examples/Bench.c (added)
-
src/examples/a.out (added)
-
src/examples/thread.c (added)
-
src/libcfa/concurrency/CtxSwitch-x86_64.S (modified) (2 diffs)
-
src/libcfa/concurrency/coroutines (modified) (4 diffs)
-
src/libcfa/concurrency/coroutines.c (modified) (2 diffs)
-
src/libcfa/concurrency/invoke.c (modified) (7 diffs)
-
src/libcfa/concurrency/kernel.c (modified) (8 diffs)
-
src/libcfa/concurrency/threads (modified) (1 diff)
-
src/libcfa/concurrency/threads.c (modified) (5 diffs)
-
src/libcfa/containers/vector (modified) (2 diffs)
-
src/libcfa/stdlib (modified) (2 diffs)
-
src/libcfa/stdlib.c (modified) (2 diffs)
-
src/main.cc (modified) (7 diffs)
-
src/prelude/Makefile.am (modified) (1 diff)
-
src/prelude/Makefile.in (modified) (1 diff)
-
src/prelude/builtins.c (modified) (3 diffs)
-
src/prelude/builtins.def (modified) (16 diffs)
-
src/prelude/prototypes.awk (modified) (2 diffs)
-
src/prelude/prototypes.sed (deleted)
-
src/prelude/sync-builtins.def (deleted)
-
src/tests/.expect/thread.txt (deleted)
-
src/tests/Makefile.am (modified) (1 diff)
-
src/tests/Makefile.in (modified) (1 diff)
-
src/tests/dtor-early-exit.c (modified) (1 diff)
-
src/tests/test.py (modified) (2 diffs)
-
src/tests/thread.c (deleted)
-
src/tests/tupleVariadic.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
Jenkinsfile
rb4d65c7 rc0aa336 31 31 32 32 //Run the tests from the tests directory 33 if (full_build) { 34 sh 'make -C src/tests all-tests debug=yes' 35 sh 'make -C src/tests all-tests debug=no' 36 } 37 else { 38 sh 'make -C src/tests' 33 dir ('src/tests') { 34 if (full_build) { 35 sh 'make all-tests debug=yes' 36 sh 'make all-tests debug=no' 37 } 38 else { 39 sh 'make' 40 } 39 41 } 40 42 -
configure
rb4d65c7 rc0aa336 6184 6184 6185 6185 6186 ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/ benchmark/Makefile src/examples/Makefile src/tests/Makefile src/prelude/Makefile src/libcfa/Makefile"6186 ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/tests/Makefile src/prelude/Makefile src/libcfa/Makefile" 6187 6187 6188 6188 … … 6945 6945 "src/driver/Makefile") CONFIG_FILES="$CONFIG_FILES src/driver/Makefile" ;; 6946 6946 "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; 6947 "src/benchmark/Makefile") CONFIG_FILES="$CONFIG_FILES src/benchmark/Makefile" ;;6948 6947 "src/examples/Makefile") CONFIG_FILES="$CONFIG_FILES src/examples/Makefile" ;; 6949 6948 "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;; -
configure.ac
rb4d65c7 rc0aa336 190 190 src/driver/Makefile 191 191 src/Makefile 192 src/benchmark/Makefile193 192 src/examples/Makefile 194 193 src/tests/Makefile -
src/Common/ScopedMap.h
rb4d65c7 rc0aa336 102 102 iterator operator-- (int) { iterator tmp = *this; --(*this); return tmp; } 103 103 104 bool operator== (const iterator &that) const{104 bool operator== (const iterator &that) { 105 105 return scopes == that.scopes && level == that.level && it == that.it; 106 106 } 107 bool operator!= (const iterator &that) const{ return !( *this == that ); }107 bool operator!= (const iterator &that) { return !( *this == that ); } 108 108 109 109 size_type get_level() const { return level; } … … 180 180 const_iterator operator-- (int) { const_iterator tmp = *this; --(*this); return tmp; } 181 181 182 bool operator== (const const_iterator &that) const{182 bool operator== (const const_iterator &that) { 183 183 return scopes == that.scopes && level == that.level && it == that.it; 184 184 } 185 bool operator!= (const const_iterator &that) const{ return !( *this == that ); }185 bool operator!= (const const_iterator &that) { return !( *this == that ); } 186 186 187 187 size_type get_level() const { return level; } -
src/Makefile.am
rb4d65c7 rc0aa336 26 26 27 27 include CodeGen/module.mk 28 include CodeTools/module.mk29 28 include Common/module.mk 30 29 include ControlStruct/module.mk -
src/Makefile.in
rb4d65c7 rc0aa336 24 24 #SRC += ArgTweak/Rewriter.cc \ 25 25 # ArgTweak/Mutate.cc 26 27 ######################### -*- Mode: Makefile-Gmake -*- ########################28 ###############################################################################29 26 30 27 ######################### -*- Mode: Makefile-Gmake -*- ######################## … … 74 71 build_triplet = @build@ 75 72 host_triplet = @host@ 76 DIST_COMMON = $(srcdir)/CodeGen/module.mk \ 77 $(srcdir)/CodeTools/module.mk $(srcdir)/Common/module.mk \ 73 DIST_COMMON = $(srcdir)/CodeGen/module.mk $(srcdir)/Common/module.mk \ 78 74 $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk \ 79 75 $(srcdir)/InitTweak/module.mk $(srcdir)/Makefile.am \ … … 103 99 CodeGen/driver_cfa_cpp-FixMain.$(OBJEXT) \ 104 100 CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT) \ 105 CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT) \106 101 Common/driver_cfa_cpp-SemanticError.$(OBJEXT) \ 107 102 Common/driver_cfa_cpp-UniqueName.$(OBJEXT) \ … … 381 376 CodeGen/CodeGenerator.cc CodeGen/GenType.cc \ 382 377 CodeGen/FixNames.cc CodeGen/FixMain.cc \ 383 CodeGen/OperatorTable.cc CodeTools/DeclStats.cc \ 384 Common/SemanticError.cc Common/UniqueName.cc \ 385 Common/DebugMalloc.cc Common/Assert.cc \ 378 CodeGen/OperatorTable.cc Common/SemanticError.cc \ 379 Common/UniqueName.cc Common/DebugMalloc.cc Common/Assert.cc \ 386 380 ControlStruct/LabelGenerator.cc ControlStruct/LabelFixer.cc \ 387 381 ControlStruct/MLEMutator.cc ControlStruct/Mutate.cc \ … … 446 440 .SUFFIXES: 447 441 .SUFFIXES: .cc .ll .o .obj .yy 448 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/CodeGen/module.mk $(srcdir)/Co deTools/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $(am__configure_deps)442 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/CodeGen/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $(am__configure_deps) 449 443 @for dep in $?; do \ 450 444 case '$(am__configure_deps)' in \ … … 467 461 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ 468 462 esac; 469 $(srcdir)/CodeGen/module.mk $(srcdir)/Co deTools/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk:463 $(srcdir)/CodeGen/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk: 470 464 471 465 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) … … 532 526 CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT): \ 533 527 CodeGen/$(am__dirstamp) CodeGen/$(DEPDIR)/$(am__dirstamp) 534 CodeTools/$(am__dirstamp):535 @$(MKDIR_P) CodeTools536 @: > CodeTools/$(am__dirstamp)537 CodeTools/$(DEPDIR)/$(am__dirstamp):538 @$(MKDIR_P) CodeTools/$(DEPDIR)539 @: > CodeTools/$(DEPDIR)/$(am__dirstamp)540 CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT): \541 CodeTools/$(am__dirstamp) CodeTools/$(DEPDIR)/$(am__dirstamp)542 528 Common/$(am__dirstamp): 543 529 @$(MKDIR_P) Common … … 827 813 -rm -f CodeGen/driver_cfa_cpp-Generate.$(OBJEXT) 828 814 -rm -f CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT) 829 -rm -f CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT)830 815 -rm -f Common/driver_cfa_cpp-Assert.$(OBJEXT) 831 816 -rm -f Common/driver_cfa_cpp-DebugMalloc.$(OBJEXT) … … 937 922 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po@am__quote@ 938 923 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po@am__quote@ 939 @AMDEP_TRUE@@am__include@ @am__quote@CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Po@am__quote@940 924 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po@am__quote@ 941 925 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Po@am__quote@ … … 1164 1148 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-OperatorTable.obj `if test -f 'CodeGen/OperatorTable.cc'; then $(CYGPATH_W) 'CodeGen/OperatorTable.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/OperatorTable.cc'; fi` 1165 1149 1166 CodeTools/driver_cfa_cpp-DeclStats.o: CodeTools/DeclStats.cc1167 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeTools/driver_cfa_cpp-DeclStats.o -MD -MP -MF CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo -c -o CodeTools/driver_cfa_cpp-DeclStats.o `test -f 'CodeTools/DeclStats.cc' || echo '$(srcdir)/'`CodeTools/DeclStats.cc1168 @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Po1169 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='CodeTools/DeclStats.cc' object='CodeTools/driver_cfa_cpp-DeclStats.o' libtool=no @AMDEPBACKSLASH@1170 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@1171 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeTools/driver_cfa_cpp-DeclStats.o `test -f 'CodeTools/DeclStats.cc' || echo '$(srcdir)/'`CodeTools/DeclStats.cc1172 1173 CodeTools/driver_cfa_cpp-DeclStats.obj: CodeTools/DeclStats.cc1174 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeTools/driver_cfa_cpp-DeclStats.obj -MD -MP -MF CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo -c -o CodeTools/driver_cfa_cpp-DeclStats.obj `if test -f 'CodeTools/DeclStats.cc'; then $(CYGPATH_W) 'CodeTools/DeclStats.cc'; else $(CYGPATH_W) '$(srcdir)/CodeTools/DeclStats.cc'; fi`1175 @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Po1176 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='CodeTools/DeclStats.cc' object='CodeTools/driver_cfa_cpp-DeclStats.obj' libtool=no @AMDEPBACKSLASH@1177 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@1178 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeTools/driver_cfa_cpp-DeclStats.obj `if test -f 'CodeTools/DeclStats.cc'; then $(CYGPATH_W) 'CodeTools/DeclStats.cc'; else $(CYGPATH_W) '$(srcdir)/CodeTools/DeclStats.cc'; fi`1179 1180 1150 Common/driver_cfa_cpp-SemanticError.o: Common/SemanticError.cc 1181 1151 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-SemanticError.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo -c -o Common/driver_cfa_cpp-SemanticError.o `test -f 'Common/SemanticError.cc' || echo '$(srcdir)/'`Common/SemanticError.cc … … 2661 2631 -rm -f CodeGen/$(DEPDIR)/$(am__dirstamp) 2662 2632 -rm -f CodeGen/$(am__dirstamp) 2663 -rm -f CodeTools/$(DEPDIR)/$(am__dirstamp)2664 -rm -f CodeTools/$(am__dirstamp)2665 2633 -rm -f Common/$(DEPDIR)/$(am__dirstamp) 2666 2634 -rm -f Common/$(am__dirstamp) … … 2696 2664 2697 2665 distclean: distclean-am 2698 -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) Co deTools/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)2666 -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR) 2699 2667 -rm -f Makefile 2700 2668 distclean-am: clean-am distclean-compile distclean-generic \ … … 2742 2710 2743 2711 maintainer-clean: maintainer-clean-am 2744 -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) Co deTools/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)2712 -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR) 2745 2713 -rm -f Makefile 2746 2714 maintainer-clean-am: distclean-am maintainer-clean-generic -
src/ResolvExpr/Resolver.cc
rb4d65c7 rc0aa336 449 449 TypeSubstitution sub = makeGenericSubstitutuion( sit ); 450 450 StructDecl * st = sit->get_baseStruct(); 451 if(st->get_members().empty()) return;452 451 // want to resolve each initializer to the members of the struct, 453 452 // but if there are more initializers than members we should stop … … 459 458 TypeSubstitution sub = makeGenericSubstitutuion( uit ); 460 459 UnionDecl * un = uit->get_baseUnion(); 461 if(un->get_members().empty()) return;462 460 // only resolve to the first member of a union 463 461 resolveSingleAggrInit( *un->get_members().begin(), init, initEnd, sub ); -
src/libcfa/concurrency/CtxSwitch-x86_64.S
rb4d65c7 rc0aa336 49 49 // Save volatile registers on the stack. 50 50 51 subq $8,%rsp52 stmxcsr 0(%rsp) // 4 bytes53 fnstcw 4(%rsp) // 2 bytes54 51 pushq %r15 55 52 pushq %r14 … … 75 72 popq %r14 76 73 popq %r15 77 fldcw 4(%rsp)78 ldmxcsr 0(%rsp)79 addq $8,%rsp80 74 81 75 // Return to thread. -
src/libcfa/concurrency/coroutines
rb4d65c7 rc0aa336 30 30 }; 31 31 32 #define DECL_COROUTINE(X) static inline coroutine* get_coroutine(X* this) { return &this->c; } void main(X* this) 32 #define DECL_COROUTINE(X) static inline coroutine* get_coroutine(X* this) { return &this->c; } void main(X* this); 33 33 34 34 //----------------------------------------------------------------------------- … … 65 65 66 66 // Private wrappers for context switch and stack creation 67 extern void CoroutineCtxSwitch(coroutine * src, coroutine * dst);67 extern void corCxtSw(coroutine * src, coroutine * dst); 68 68 extern void create_stack( coStack_t * this, unsigned int storageSize ); 69 69 … … 81 81 src->name, src, src->last->name, src->last ); 82 82 83 CoroutineCtxSwitch( src, src->last );83 corCxtSw( src, src->last ); 84 84 } 85 85 … … 107 107 108 108 // always done for performance testing 109 CoroutineCtxSwitch( src, dst ); 110 } 111 112 static inline void resume(coroutine * dst) { 113 coroutine * src = this_coroutine(); // optimization 114 115 // not resuming self ? 116 if ( src != dst ) { 117 assertf( dst->notHalted , 118 "Attempt by coroutine %.256s (%p) to resume terminated coroutine %.256s (%p).\n" 119 "Possible cause is terminated coroutine's main routine has already returned.", 120 src->name, src, dst->name, dst ); 121 122 // set last resumer 123 dst->last = src; 124 } // if 125 126 // always done for performance testing 127 CoroutineCtxSwitch( src, dst ); 109 corCxtSw( src, dst ); 128 110 } 129 111 -
src/libcfa/concurrency/coroutines.c
rb4d65c7 rc0aa336 98 98 } 99 99 100 // Wrapper for co 101 void CoroutineCtxSwitch(coroutine* src, coroutine* dst) { 100 // We need to call suspend from invoke.c, so we expose this wrapper that 101 // is not inline (We can't inline Cforall in C) 102 void suspend_no_inline(void) { 103 suspend(); 104 } 105 106 void corCxtSw(coroutine* src, coroutine* dst) { 102 107 // THREAD_GETMEM( This )->disableInterrupts(); 103 108 … … 162 167 } 163 168 164 // We need to call suspend from invoke.c, so we expose this wrapper that165 // is not inline (We can't inline Cforall in C)166 extern "C" {167 void __suspend_internal(void) {168 suspend();169 }170 }171 172 169 // Local Variables: // 173 170 // mode: c // -
src/libcfa/concurrency/invoke.c
rb4d65c7 rc0aa336 28 28 // Called from the kernel when starting a coroutine or task so must switch back to user mode. 29 29 30 extern void __suspend_ internal(void);31 extern void __ thread_signal_termination(struct thread*);30 extern void __suspend_no_inline__F___1(void); 31 extern void __signal_termination__F_P7sthread__1(struct thread*); 32 32 33 33 void CtxInvokeCoroutine( … … 41 41 42 42 if(cor->state == Primed) { 43 __suspend_ internal();43 __suspend_no_inline__F___1(); 44 44 } 45 45 … … 52 52 53 53 //Final suspend, should never return 54 __suspend_ internal();55 a bortf("Resumed dead coroutine");54 __suspend_no_inline__F___1(); 55 assertf(false, "Resumed dead coroutine"); 56 56 } 57 57 … … 61 61 void *this 62 62 ) { 63 __suspend_internal(); 63 // LIB_DEBUG_PRINTF("Invoke Thread : Received %p (main %p, get_t %p)\n", this, main, get_thread); 64 65 __suspend_no_inline__F___1(); 64 66 65 67 struct thread* thrd = get_thread( this ); … … 70 72 main( this ); 71 73 72 __ thread_signal_termination(thrd);74 __signal_termination__F_P7sthread__1(thrd); 73 75 74 76 //Final suspend, should never return 75 __suspend_ internal();76 a bortf("Resumed dead thread");77 __suspend_no_inline__F___1(); 78 assertf(false, "Resumed dead thread"); 77 79 } 78 80 … … 109 111 struct FakeStack { 110 112 void *fixedRegisters[5]; // fixed registers rbx, r12, r13, r14, r15 111 uint32_t mxcr; // SSE Status and Control bits (control bits are preserved across function calls) 112 uint16_t fcw; // X97 FPU control word (preserved across function calls) 113 void *rturn; // where to go on return from uSwitch 113 void *rturn; // where to go on return from uSwitch 114 114 void *dummyReturn; // NULL return address to provide proper alignment 115 115 }; … … 122 122 ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fixedRegisters[0] = this; 123 123 ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fixedRegisters[1] = invoke; 124 ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->mxcr = 0x1F80; //Vol. 2A 3-520125 ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fcw = 0x037F; //Vol. 1 8-7126 124 #else 127 125 #error Only __i386__ and __x86_64__ is supported for threads in cfa -
src/libcfa/concurrency/kernel.c
rb4d65c7 rc0aa336 15 15 // 16 16 17 //Start and stop routine for the kernel, declared first to make sure they run first18 void kernel_startup(void) __attribute__((constructor(101)));19 void kernel_shutdown(void) __attribute__((destructor(101)));20 21 17 //Header 22 18 #include "kernel" … … 43 39 }; 44 40 45 DECL_COROUTINE(processorCtx_t) ;41 DECL_COROUTINE(processorCtx_t) 46 42 47 43 #define KERNEL_STORAGE(T,X) static char X##_storage[sizeof(T)] … … 56 52 processor * systemProcessor; 57 53 thread * mainThread; 54 55 void kernel_startup(void) __attribute__((constructor(101))); 56 void kernel_shutdown(void) __attribute__((destructor(101))); 58 57 59 58 //----------------------------------------------------------------------------- … … 185 184 void main(processorCtx_t * ctx); 186 185 thread * nextThread(cluster * this); 187 void scheduleInternal(processor * this, thread * dst);186 void runThread(processor * this, thread * dst); 188 187 void spin(processor * this, unsigned int * spin_count); 189 188 … … 198 197 199 198 if(readyThread) { 200 scheduleInternal(this, readyThread);199 runThread(this, readyThread); 201 200 spin_count = 0; 202 201 } else { … … 210 209 } 211 210 212 //Declarations for scheduleInternal 213 extern void ThreadCtxSwitch(coroutine * src, coroutine * dst); 214 215 // scheduleInternal runs a thread by context switching 216 // from the processor coroutine to the target thread 217 void scheduleInternal(processor * this, thread * dst) { 218 // coroutine * proc_ctx = get_coroutine(this->ctx); 219 // coroutine * thrd_ctx = get_coroutine(dst); 220 221 // //Update global state 222 // this->current_thread = dst; 223 224 // // Context Switch to the thread 225 // ThreadCtxSwitch(proc_ctx, thrd_ctx); 226 // // when ThreadCtxSwitch returns we are back in the processor coroutine 227 211 void runThread(processor * this, thread * dst) { 228 212 coroutine * proc_ctx = get_coroutine(this->ctx); 229 213 coroutine * thrd_ctx = get_coroutine(dst); 230 thrd_ctx->last = proc_ctx; 231 232 // context switch to specified coroutine 233 // Which is now the current_coroutine 234 LIB_DEBUG_PRINTF("Kernel : switching to ctx %p (from %p, current %p)\n", thrd_ctx, proc_ctx, this->current_coroutine); 235 this->current_thread = dst; 236 this->current_coroutine = thrd_ctx; 237 CtxSwitch( proc_ctx->stack.context, thrd_ctx->stack.context ); 238 this->current_coroutine = proc_ctx; 239 LIB_DEBUG_PRINTF("Kernel : returned from ctx %p (to %p, current %p)\n", thrd_ctx, proc_ctx, this->current_coroutine); 240 241 // when CtxSwitch returns we are back in the processor coroutine 242 } 243 244 // Handles spinning logic 245 // TODO : find some strategy to put cores to sleep after some time 214 thrd_ctx->last = proc_ctx; 215 216 // context switch to specified coroutine 217 // Which is now the current_coroutine 218 // LIB_DEBUG_PRINTF("Kernel : switching to ctx %p (from %p, current %p)\n", thrd_ctx, proc_ctx, current_coroutine); 219 this->current_thread = dst; 220 this->current_coroutine = thrd_ctx; 221 CtxSwitch( proc_ctx->stack.context, thrd_ctx->stack.context ); 222 this->current_coroutine = proc_ctx; 223 // LIB_DEBUG_PRINTF("Kernel : returned from ctx %p (to %p, current %p)\n", thrd_ctx, proc_ctx, current_coroutine); 224 225 // when CtxSwitch returns we are back in the processor coroutine 226 } 227 246 228 void spin(processor * this, unsigned int * spin_count) { 247 229 (*spin_count)++; 248 230 } 249 231 250 // Context invoker for processors251 // This is the entry point for processors (kernel threads)252 // It effectively constructs a coroutine by stealing the pthread stack253 232 void * CtxInvokeProcessor(void * arg) { 254 233 processor * proc = (processor *) arg; … … 262 241 processorCtx_t proc_cor_storage = { proc, &info }; 263 242 264 //Set global state265 243 proc->current_coroutine = &proc->ctx->c; 266 244 proc->current_thread = NULL; 267 245 246 LIB_DEBUG_PRINTF("Kernel : core %p created (%p)\n", proc, proc->ctx); 247 248 // LIB_DEBUG_PRINTF("Kernel : core base : %p \n", info.base ); 249 // LIB_DEBUG_PRINTF("Kernel : core storage : %p \n", info.storage ); 250 // LIB_DEBUG_PRINTF("Kernel : core size : %x \n", info.size ); 251 // LIB_DEBUG_PRINTF("Kernel : core limit : %p \n", info.limit ); 252 // LIB_DEBUG_PRINTF("Kernel : core context : %p \n", info.context ); 253 // LIB_DEBUG_PRINTF("Kernel : core top : %p \n", info.top ); 254 268 255 //We now have a proper context from which to schedule threads 269 LIB_DEBUG_PRINTF("Kernel : core %p created (%p)\n", proc, proc->ctx);270 256 271 257 // SKULLDUGGERY: Since the coroutine doesn't have its own stack, we can't … … 278 264 proc_cor_storage.c.notHalted = false; 279 265 280 // Main routine of the core returned, the core is now fully terminated281 266 LIB_DEBUG_PRINTF("Kernel : core %p main ended (%p)\n", proc, proc->ctx); 282 267 -
src/libcfa/concurrency/threads
rb4d65c7 rc0aa336 27 27 // Anything that implements this trait can be resumed. 28 28 // Anything that is resumed is a coroutine. 29 trait is_thread(dtype T ) {29 trait is_thread(dtype T | sized(T)) { 30 30 void main(T* this); 31 31 thread* get_thread(T* this); 32 32 }; 33 33 34 #define DECL_THREAD(X) thread* get_thread(X* this) { return &this->t; } void main(X* this)34 #define DECL_THREAD(X) static inline thread* get_thread(X* this) { return &this->t; } void main(X* this); 35 35 36 forall( dtype T | is_thread(T) )36 forall( dtype T | sized(T) | is_thread(T) ) 37 37 static inline coroutine* get_coroutine(T* this) { 38 38 return &get_thread(this)->c; -
src/libcfa/concurrency/threads.c
rb4d65c7 rc0aa336 31 31 //----------------------------------------------------------------------------- 32 32 // Forward declarations 33 forall( dtype T | is_thread(T) )33 forall( dtype T | sized(T) | is_thread(T) ) 34 34 void start( T* this ); 35 35 36 forall( dtype T | is_thread(T) )36 forall( dtype T | sized(T) | is_thread(T) ) 37 37 void stop( T* this ); 38 38 … … 78 78 extern void thread_schedule( thread * ); 79 79 80 forall( dtype T | is_thread(T) )80 forall( dtype T | sized(T) | is_thread(T) ) 81 81 void start( T* this ) { 82 82 coroutine* thrd_c = get_coroutine(this); … … 85 85 get_this_processor()->current_coroutine = thrd_c; 86 86 87 LIB_DEBUG_PRINTF("Thread start : %p (t %p, c %p)\n", this, thrd_c, thrd_h);87 // LIB_DEBUG_PRINTF("Thread start : %p (t %p, c %p)\n", handle, thrd_c, thrd_h); 88 88 89 89 create_stack(&thrd_c->stack, thrd_c->stack.size); … … 91 91 CtxSwitch( thrd_c->last->stack.context, thrd_c->stack.context ); 92 92 93 LIB_DEBUG_PRINTF("Thread started : %p (t %p, c %p)\n", this, thrd_c, thrd_h);94 95 93 thread_schedule(thrd_h); 96 94 } 97 95 98 forall( dtype T | is_thread(T) )96 forall( dtype T | sized(T) | is_thread(T) ) 99 97 void stop( T* this ) { 100 98 thread* thrd = get_thread(this); … … 104 102 } 105 103 104 void signal_termination( thread * this ) { 105 this->c.state = Halt; 106 this->c.notHalted = false; 107 unlock( &this->lock ); 108 } 109 106 110 void yield( void ) { 107 111 thread_schedule( this_thread() ); 108 112 suspend(); 109 }110 111 void ThreadCtxSwitch(coroutine* src, coroutine* dst) {112 dst->last = src;113 114 // set state of current coroutine to inactive115 src->state = Inactive;116 117 // set new coroutine that task is executing118 get_this_processor()->current_coroutine = dst;119 120 // context switch to specified coroutine121 CtxSwitch( src->stack.context, dst->stack.context );122 // when CtxSwitch returns we are back in the src coroutine123 124 // set state of new coroutine to active125 src->state = Active;126 }127 128 // C Helper to signal the termination of a thread129 // Used in invoke.c130 extern "C" {131 void __thread_signal_termination( thread * this ) {132 this->c.state = Halt;133 this->c.notHalted = false;134 unlock( &this->lock );135 }136 113 } 137 114 -
src/libcfa/containers/vector
rb4d65c7 rc0aa336 118 118 } 119 119 120 //forall(otype T, otype allocator_t | allocator_c(T, allocator_t))121 //static inline const T* cbegin(const vector(T, allocator_t)* this)122 //{123 //return data(&this->storage);124 //}120 forall(otype T, otype allocator_t | allocator_c(T, allocator_t)) 121 static inline const T* cbegin(const vector(T, allocator_t)* this) 122 { 123 return data(&this->storage); 124 } 125 125 126 126 forall(otype T, otype allocator_t | allocator_c(T, allocator_t)) … … 130 130 } 131 131 132 //forall(otype T, otype allocator_t | allocator_c(T, allocator_t))133 //static inline const T* cend(const vector(T, allocator_t)* this)134 //{135 //return data(&this->storage) + this->size;136 //}132 forall(otype T, otype allocator_t | allocator_c(T, allocator_t)) 133 static inline const T* cend(const vector(T, allocator_t)* this) 134 { 135 return data(&this->storage) + this->size; 136 } 137 137 138 138 //------------------------------------------------------------------------------ -
src/libcfa/stdlib
rb4d65c7 rc0aa336 29 29 30 30 extern "C" { void * malloc( size_t ); } // use default C routine for void * 31 forall( dtype T | sized(T)) T * malloc( void );32 forall( dtype T | sized(T)) T * malloc( char fill );33 forall( dtype T | sized(T)) T * malloc( T * ptr, size_t size );34 forall( dtype T | sized(T)) T * malloc( T * ptr, size_t size, unsigned char fill );31 forall( otype T ) T * malloc( void ); 32 forall( otype T ) T * malloc( char fill ); 33 forall( otype T ) T * malloc( T * ptr, size_t size ); 34 forall( otype T ) T * malloc( T * ptr, size_t size, unsigned char fill ); 35 35 extern "C" { void * calloc( size_t nmemb, size_t size ); } // use default C routine for void * 36 forall( dtype T | sized(T)) T * calloc( size_t nmemb );36 forall( otype T ) T * calloc( size_t nmemb ); 37 37 extern "C" { void * realloc( void * ptr, size_t size ); } // use default C routine for void * 38 forall( dtype T | sized(T)) T * realloc( T * ptr, size_t size );39 forall( dtype T | sized(T)) T * realloc( T * ptr, size_t size, unsigned char fill );38 forall( otype T ) T * realloc( T * ptr, size_t size ); 39 forall( otype T ) T * realloc( T * ptr, size_t size, unsigned char fill ); 40 40 41 forall( dtype T | sized(T)) T * aligned_alloc( size_t alignment );42 forall( dtype T | sized(T)) T * memalign( size_t alignment ); // deprecated43 forall( dtype T | sized(T)) int posix_memalign( T ** ptr, size_t alignment );41 forall( otype T ) T * aligned_alloc( size_t alignment ); 42 forall( otype T ) T * memalign( size_t alignment ); // deprecated 43 forall( otype T ) int posix_memalign( T ** ptr, size_t alignment ); 44 44 45 45 extern "C" { … … 48 48 } // extern "C" 49 49 50 forall( dtype T, ttype Params | sized(T)| { void ?{}(T *, Params); } ) T * new( Params p );50 forall( otype T, ttype Params | { void ?{}(T *, Params); } ) T * new( Params p ); 51 51 forall( dtype T | { void ^?{}(T *); } ) void delete( T * ptr ); 52 52 -
src/libcfa/stdlib.c
rb4d65c7 rc0aa336 27 27 } // extern "C" 28 28 29 forall( dtype T | sized(T)) T * malloc( void ) {29 forall( otype T ) T * malloc( void ) { 30 30 //printf( "malloc1\n" ); 31 return (T *) (void*)malloc( (size_t)sizeof(T) );32 } // malloc 33 forall( dtype T | sized(T)) T * malloc( char fill ) {31 return (T *)malloc( sizeof(T) ); 32 } // malloc 33 forall( otype T ) T * malloc( char fill ) { 34 34 //printf( "malloc3\n" ); 35 T * ptr = (T *) (void*)malloc( (size_t)sizeof(T) );35 T * ptr = (T *)malloc( sizeof(T) ); 36 36 return memset( ptr, (int)fill, sizeof(T) ); 37 37 } // malloc 38 38 39 forall( dtype T | sized(T)) T * calloc( size_t nmemb ) {39 forall( otype T ) T * calloc( size_t nmemb ) { 40 40 //printf( "calloc\n" ); 41 41 return (T *)calloc( nmemb, sizeof(T) ); 42 42 } // calloc 43 43 44 forall( dtype T | sized(T)) T * realloc( T * ptr, size_t size ) {44 forall( otype T ) T * realloc( T * ptr, size_t size ) { 45 45 //printf( "realloc1\n" ); 46 46 return (T *)(void *)realloc( (void *)ptr, size ); 47 47 } // realloc 48 forall( dtype T | sized(T)) T * realloc( T * ptr, size_t size, unsigned char fill ) {48 forall( otype T ) T * realloc( T * ptr, size_t size, unsigned char fill ) { 49 49 //printf( "realloc2\n" ); 50 50 char * nptr = (T *)(void *)realloc( (void *)ptr, size ); … … 54 54 } // realloc 55 55 56 forall( dtype T | sized(T)) T * malloc( T * ptr, size_t size ) {56 forall( otype T ) T * malloc( T * ptr, size_t size ) { 57 57 //printf( "malloc4\n" ); 58 58 return (T *)realloc( ptr, size ); 59 59 } // malloc 60 forall( dtype T | sized(T)) T * malloc( T * ptr, size_t size, unsigned char fill ) {60 forall( otype T ) T * malloc( T * ptr, size_t size, unsigned char fill ) { 61 61 //printf( "malloc5\n" ); 62 62 return (T *)realloc( ptr, size, fill ); 63 63 } // malloc 64 64 65 forall( dtype T | sized(T)) T * aligned_alloc( size_t alignment ) {65 forall( otype T ) T * aligned_alloc( size_t alignment ) { 66 66 //printf( "aligned_alloc\n" ); 67 67 return (T *)memalign( alignment, sizeof(T) ); 68 68 } // aligned_alloc 69 69 70 forall( dtype T | sized(T)) T * memalign( size_t alignment ) {70 forall( otype T ) T * memalign( size_t alignment ) { 71 71 //printf( "memalign\n" ); 72 72 return (T *)memalign( alignment, sizeof(T) ); 73 73 } // memalign 74 74 75 forall( dtype T | sized(T)) int posix_memalign( T ** ptr, size_t alignment ) {75 forall( otype T ) int posix_memalign( T ** ptr, size_t alignment ) { 76 76 //printf( "posix_memalign\n" ); 77 77 return posix_memalign( (void **)ptr, alignment, sizeof(T) ); 78 78 } // posix_memalign 79 79 80 forall( dtype T, ttype Params | sized(T)| { void ?{}(T *, Params); } )80 forall( otype T, ttype Params | { void ?{}(T *, Params); } ) 81 81 T * new( Params p ) { 82 82 return ((T*)malloc()){ p }; -
src/main.cc
rb4d65c7 rc0aa336 35 35 #include "CodeGen/FixNames.h" 36 36 #include "CodeGen/FixMain.h" 37 #include "CodeTools/DeclStats.h"38 37 #include "ControlStruct/Mutate.h" 39 38 #include "SymTab/Validate.h" … … 62 61 bboxp = false, 63 62 ctorinitp = false, 64 declstatsp = false,65 63 exprp = false, 66 64 expraltp = false, … … 246 244 } // if 247 245 248 if ( declstatsp ) {249 CodeTools::printDeclStats( translationUnit );250 deleteAll( translationUnit );251 return 0;252 }253 254 246 if ( bresolvep ) { 255 247 dump( translationUnit ); … … 347 339 348 340 void parse_cmdline( int argc, char * argv[], const char *& filename ) { 349 enum { Ast, Bbox, Bresolver, CtorInitFix, DeclStats,Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, TupleExpansion, Validate, };341 enum { Ast, Bbox, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, TupleExpansion, Validate, }; 350 342 351 343 static struct option long_opts[] = { … … 354 346 { "before-resolver", no_argument, 0, Bresolver }, 355 347 { "ctorinitfix", no_argument, 0, CtorInitFix }, 356 { "decl-stats", no_argument, 0, DeclStats },357 348 { "expr", no_argument, 0, Expr }, 358 349 { "expralt", no_argument, 0, ExprAlt }, … … 374 365 375 366 int c; 376 while ( (c = getopt_long( argc, argv, "abBc defglmnpqrstTvyzD:F:", long_opts, &long_index )) != -1 ) {367 while ( (c = getopt_long( argc, argv, "abBcefglmnpqrstTvyzD:F:", long_opts, &long_index )) != -1 ) { 377 368 switch ( c ) { 378 369 case Ast: … … 390 381 case 'c': 391 382 ctorinitp = true; 392 break;393 case DeclStats:394 case 'd':395 declstatsp = true;396 383 break; 397 384 case Expr: -
src/prelude/Makefile.am
rb4d65c7 rc0aa336 28 28 29 29 # create forward declarations for gcc builtins 30 builtins.cf : builtins.c prototypes.sed 31 ${AM_V_GEN}@BACKEND_CC@ -E -P $< | sed -f prototypes.sed > $@ 30 builtins.cf : builtins.c 31 ${AM_V_GEN}if [ -e $< ] ; then \ 32 @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \ 33 fi 32 34 33 35 builtins.c : builtins.def prototypes.awk 34 ${AM_V_GEN}@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ 36 ${AM_V_GEN}if [ -e $< ] ; then \ 37 @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \ 38 fi 35 39 36 40 builtins.def : -
src/prelude/Makefile.in
rb4d65c7 rc0aa336 424 424 425 425 # create forward declarations for gcc builtins 426 builtins.cf : builtins.c prototypes.sed 427 ${AM_V_GEN}@BACKEND_CC@ -E -P $< | sed -f prototypes.sed > $@ 426 builtins.cf : builtins.c 427 ${AM_V_GEN}if [ -e $< ] ; then \ 428 @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \ 429 fi 428 430 429 431 builtins.c : builtins.def prototypes.awk 430 ${AM_V_GEN}@BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ 432 ${AM_V_GEN}if [ -e $< ] ; then \ 433 @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \ 434 fi 431 435 432 436 builtins.def : -
src/prelude/builtins.c
rb4d65c7 rc0aa336 3 3 #define BT_LAST(NAME) FUNC_SIMPLE(void, NAME) 4 4 5 #define BT_BOOL _Bool6 5 #define BT_UINTMAX unsigned long int 7 6 #define BT_UINT16 short int … … 23 22 #define BT_LONGLONG long long 24 23 #define BT_LONG long 25 #define BT_DFLOAT32 _ _Unsupported26 #define BT_DFLOAT64 _ _Unsupported27 #define BT_DFLOAT128 _ _Unsupported24 #define BT_DFLOAT32 _Decimal32 25 #define BT_DFLOAT64 _Decimal64 26 #define BT_DFLOAT128 _Decimal128 28 27 #define BT_DOUBLEPTR double * 29 28 #define BT_DOUBLE double 30 29 #define BT_FLOATPTR float * 31 #define BT_FLOAT128X __Unsupported32 #define BT_FLOAT128 __Unsupported33 #define BT_FLOAT64X __Unsupported34 #define BT_FLOAT64 __Unsupported35 #define BT_FLOAT32X __Unsupported36 #define BT_FLOAT32 __Unsupported37 #define BT_FLOAT16 __Unsupported38 30 #define BT_FLOAT float 39 #define BT_CONST_VPTR const volatile void *40 31 #define BT_CONST_PTR const void * 41 32 #define BT_CONST_STRING const char * 42 #define BT_CONST_TM_PTR const struct tm *43 33 #define BT_PTR_FN_VOID_VAR_PTR_SIZE 44 34 #define BT_PTR_CONST_STRING char *const 45 35 #define BT_PTRMODE_PTR 46 36 #define BT_PTRPTR void ** 47 #define BT_VPTR volatile void *48 37 #define BT_PTR void * 49 38 #define BT_VOID void … … 58 47 #define BT_SSIZE long int 59 48 #define BT_PID int 60 #define BT_I16 __int128 61 #define BT_I8 long long int 62 #define BT_I4 int 63 #define BT_I2 short 64 #define BT_I1 char 65 49 50 #define BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_LONGDOUBLE) 51 #define BT_FN_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_VALIST_ARG) 52 #define BT_FN_VOID_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR) 53 #define BT_FN_INT_CONST_PTR_CONST_PTR_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE) 54 #define BT_FN_VOID_VALIST_REF(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF) 55 #define BT_FN_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_COMPLEX_FLOAT) 56 #define BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VAR) 57 #define BT_FN_VOID_PTR_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_PTR) 58 #define BT_FN_FLOAT_FLOAT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_LONGDOUBLE) 59 #define BT_FN_INT_UINT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_UINT) 60 #define BT_FN_CONST_STRING(NAME) FUNC_SIMPLE(BT_CONST_STRING, NAME) 61 #define BT_FN_FLOAT_FLOAT_FLOATPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOATPTR) 66 62 #define BT_FN_INT_INT_INT_INT_INT_INT_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_INT, BT_INT, BT_INT, BT_INT, BT_VAR) 63 #define BT_FN_INT_INT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT) 64 #define BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VALIST_ARG) 67 65 #define BT_FN_INT_LONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONG) 66 #define BT_FN_INT_STRING_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VAR) 67 #define BT_FN_VOID_PTR_WORD_WORD_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_WORD, BT_WORD, BT_PTR) 68 68 #define BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_CONST_PTR) 69 #define BT_FN_VOID_VPTR_I4_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VPTR, BT_I4, BT_INT) 70 #define BT_FN_I1_VPTR_I1_INT(NAME) FUNC_SIMPLE(BT_I1, NAME, BT_VPTR, BT_I1, BT_INT) 69 #define BT_FN_INT_DFLOAT128(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT128) 70 #define BT_FN_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE) 71 #define BT_FN_FLOAT_CONST_STRING(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_CONST_STRING) 72 #define BT_FN_LONGDOUBLE_LONGDOUBLE_INT(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_INT) 73 #define BT_FN_FLOAT_FLOAT_INT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_INT) 74 #define BT_FN_INT_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING) 75 #define BT_FN_INT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONGDOUBLE) 76 #define BT_FN_SIZE_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_STRING, BT_CONST_STRING) 77 #define BT_FN_VOID_PTR_SIZE(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_SIZE) 78 #define BT_FN_INT_CONST_STRING_PTR_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_PTR_CONST_STRING) 79 #define BT_FN_DFLOAT64(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME) 80 #define BT_FN_INT_UINTMAX(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_UINTMAX) 81 #define BT_FN_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME) 71 82 #define BT_FN_INT(NAME) FUNC_SIMPLE(BT_INT, NAME) 72 #define BT_FN_STRING_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_CONST_STRING) 83 #define BT_FN_FLOAT_FLOAT_FLOAT_INTPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT, BT_INTPTR) 84 #define BT_FN_DOUBLE_DOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_LONGDOUBLE) 73 85 #define BT_FN_PTR_CONST_PTR_SIZE_VAR(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_CONST_PTR, BT_SIZE, BT_VAR) 74 #define BT_FN_INT_ULONGLONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_ULONGLONG) 75 #define BT_FN_INT_CONST_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE) 76 #define BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING) 77 #define BT_FN_STRING_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING, BT_SIZE) 78 #define BT_FN_VOID_PTR_SIZE(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_SIZE) 86 #define BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT) 87 #define BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE) 88 #define BT_FN_STRING_CONST_STRING_CONST_STRING_INT(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_INT) 89 #define BT_FN_LONGDOUBLE_LONGDOUBLE_LONG(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONG) 90 #define BT_FN_COMPLEX_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_DOUBLE) 91 #define BT_FN_VOID(NAME) FUNC_SIMPLE(BT_VOID, NAME) 92 #define BT_FN_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT) 93 #define BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG) 94 #define BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_FLOAT, BT_FLOATPTR, BT_FLOATPTR) 95 #define BT_FN_INT_DFLOAT64(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT64) 96 #define BT_FN_FLOAT_FLOAT_INTPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_INTPTR) 97 #define BT_FN_WINT_WINT(NAME) FUNC_SIMPLE(BT_WINT, NAME, BT_WINT) 98 #define BT_FN_LONGLONG_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_LONGDOUBLE) 99 #define BT_FN_DOUBLE_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE) 100 #define BT_FN_DFLOAT64_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME, BT_CONST_STRING) 101 #define BT_FN_DOUBLE_DOUBLE_INT(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_INT) 79 102 #define BT_FN_INTMAX_INTMAX(NAME) FUNC_SIMPLE(BT_INTMAX, NAME, BT_INTMAX) 80 #define BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR) 81 #define BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_CONST_PTR, BT_SIZE, BT_SIZE) 103 #define BT_FN_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_VAR) 104 #define BT_FN_LONG_LONG_LONG(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONG, BT_LONG) 105 #define BT_FN_DOUBLE_DOUBLE_LONG(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_LONG) 106 #define BT_FN_LONG_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONGDOUBLE) 107 #define BT_FN_FLOAT_FLOAT_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT, BT_FLOAT) 108 #define BT_FN_VOID_VALIST_REF_VAR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF, BT_VAR) 109 #define BT_FN_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING) 82 110 #define BT_FN_VOID_VALIST_REF_VALIST_ARG(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF, BT_VALIST_ARG) 83 111 #define BT_FN_LONGDOUBLE_CONST_STRING(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_CONST_STRING) 112 #define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INTPTR) 113 #define BT_FN_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_SIZE) 114 #define BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE) 115 #define BT_FN_STRING_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING) 116 #define BT_FN_VOID_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_INT) 117 #define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE) 118 #define BT_FN_INT_ULONGLONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_ULONGLONG) 119 #define BT_FN_INT_FILEPTR_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_CONST_STRING, BT_VAR) 120 #define BT_FN_LONGLONG_DOUBLE(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_DOUBLE) 121 #define BT_FN_INT_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_CONST_STRING, BT_VAR) 122 #define BT_FN_VOID_PTR_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_INT) 123 #define BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_COMPLEX_FLOAT) 124 #define BT_FN_INT_WINT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_WINT) 125 #define BT_FN_PTR_PTR_INT_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_INT, BT_SIZE) 126 #define BT_FN_STRING_CONST_STRING_INT(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_INT) 127 #define BT_FN_INT_FLOAT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FLOAT) 128 #define BT_FN_DOUBLE_CONST_STRING(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_CONST_STRING) 129 #define BT_FN_LONG_FLOAT(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_FLOAT) 130 #define BT_FN_PTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_SIZE, BT_SIZE) 131 #define BT_FN_STRING_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING, BT_SIZE) 132 #define BT_FN_LONGLONG_LONGLONG(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_LONGLONG) 133 #define BT_FN_PTR_PTR(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR) 134 #define BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_CONST_PTR, BT_SIZE, BT_SIZE) 135 #define BT_FN_FLOAT_FLOAT_LONG(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_LONG) 136 #define BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE) 137 #define BT_FN_PTR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_SIZE) 138 #define BT_FN_PTR_VAR(NAME) FUNC_SIMPLE(BT_PTR, NAME) 139 #define BT_FN_SIZE_CONST_PTR_INT(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_PTR, BT_INT) 140 #define BT_FN_INT_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING) 141 #define BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG) 142 #define BT_FN_INT_STRING_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG) 143 #define BT_FN_DFLOAT32(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME) 144 #define BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_INTPTR) 145 #define BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING, BT_SIZE, BT_SIZE) 146 #define BT_FN_PTR_UINT(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_UINT) 147 #define BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG) 148 #define BT_FN_DFLOAT128_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME, BT_CONST_STRING) 149 #define BT_FN_DOUBLE_DOUBLE_DOUBLEPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLEPTR) 150 #define BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_SSIZE, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VAR) 151 #define BT_FN_DFLOAT32_DFLOAT32(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME, BT_DFLOAT32) 152 #define BT_FN_INT_PTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_PTR) 153 #define BT_FN_UINT32_UINT32(NAME) FUNC_SIMPLE(BT_UINT32, NAME, BT_UINT32) 154 #define BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR_FN_VOID_VAR_PTR_SIZE) 155 #define BT_FN_INT_DOUBLE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DOUBLE) 156 #define BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VAR) 157 #define BT_FN_INT_ULONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_ULONG) 158 #define BT_FN_DOUBLE_DOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_INTPTR) 159 #define BT_FN_UINT64_UINT64(NAME) FUNC_SIMPLE(BT_UINT64, NAME, BT_UINT64) 160 #define BT_FN_STRING_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_CONST_STRING) 161 #define BT_FN_INT_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_CONST_STRING, BT_VALIST_ARG) 162 #define BT_FN_PTR_PTR_INT_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_INT, BT_SIZE, BT_SIZE) 163 #define BT_FN_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_COMPLEX_DOUBLE) 164 #define BT_FN_VOID_CONST_PTR_VAR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_CONST_PTR, BT_VAR) 165 #define BT_FN_INT_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME) 166 #define BT_FN_INT_PTRPTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_PTRPTR, BT_SIZE, BT_SIZE) 167 #define BT_FN_INT_CONST_STRING_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_VAR) 168 #define BT_FN_INT_DFLOAT32(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT32) 169 #define BT_FN_DFLOAT64_DFLOAT64(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME, BT_DFLOAT64) 170 #define BT_FN_VOID_CONST_PTR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_CONST_PTR, BT_PTR, BT_SIZE) 171 #define BT_FN_UNWINDWORD_PTR(NAME) FUNC_SIMPLE(BT_UNWINDWORD, NAME, BT_PTR) 172 #define BT_FN_FLOAT_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT) 173 #define BT_FN_COMPLEX_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_FLOAT) 174 #define BT_FN_UINT(NAME) FUNC_SIMPLE(BT_UINT, NAME) 175 #define BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE, BT_INTPTR) 176 #define BT_FN_UINT16_UINT16(NAME) FUNC_SIMPLE(BT_UINT16, NAME, BT_UINT16) 177 #define BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG) 178 #define BT_FN_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE) 179 #define BT_FN_LONG_LONG(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONG) 180 #define BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG) 181 #define BT_FN_FLOAT_INT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_INT, BT_FLOAT) 182 #define BT_FN_PTR(NAME) FUNC_SIMPLE(BT_PTR, NAME) 183 #define BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR) 184 #define BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_DOUBLE, BT_DOUBLEPTR, BT_DOUBLEPTR) 185 #define BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE) 186 #define BT_FN_LONG_DOUBLE(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_DOUBLE) 187 #define BT_FN_SIZE_CONST_STRING(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_STRING) 84 188 #define BT_FN_LONGLONG_FLOAT(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_FLOAT) 85 #define BT_FN_DFLOAT32(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME) 86 #define BT_FN_INT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONGDOUBLE) 87 #define BT_FN_BOOL_VPTR_I2_I2(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_I2, BT_I2) 88 #define BT_FN_FLOAT_FLOAT_FLOATPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOATPTR) 189 #define BT_FN_INT_CONST_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE) 190 #define BT_FN_PTR_PTR_CONST_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_CONST_PTR, BT_SIZE) 191 #define BT_FN_DFLOAT128(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME) 192 #define BT_FN_PID(NAME) FUNC_SIMPLE(BT_PID, NAME) 193 #define BT_FN_INT_CONST_STRING_FILEPTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_FILEPTR) 194 #define BT_FN_INT_LONGLONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONGLONG) 89 195 #define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE) 90 #define BT_FN_VOID_PTR_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_INT) 91 #define BT_FN_LONG_LONG(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONG) 92 #define BT_FN_INT_DOUBLE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DOUBLE) 93 #define BT_FN_BOOL_VPTR_PTR_I16_BOOL_INT_INT(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_PTR, BT_I16, BT_BOOL, BT_INT, BT_INT) 94 #define BT_FN_UINT(NAME) FUNC_SIMPLE(BT_UINT, NAME) 95 #define BT_FN_DOUBLE_DOUBLE_INT(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_INT) 196 #define BT_FN_INT_INT_FILEPTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_FILEPTR) 197 #define BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE) 198 #define BT_FN_VOID_PTRMODE_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTRMODE_PTR) 199 #define BT_FN_INT_STRING_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_CONST_STRING, BT_VAR) 200 #define BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_COMPLEX_DOUBLE) 201 #define BT_FN_DFLOAT32_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME, BT_CONST_STRING) 202 #define BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING) 203 #define BT_FN_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_SIZE) 204 #define BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VAR) 205 #define BT_FN_DFLOAT128_DFLOAT128(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME, BT_DFLOAT128) 206 #define BT_FN_DOUBLE_INT_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_INT, BT_DOUBLE) 207 #define BT_FN_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME) 208 #define BT_FN_LONGDOUBLE_INT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_INT, BT_LONGDOUBLE) 209 #define BT_FN_PTR_CONST_PTR_INT_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_CONST_PTR, BT_INT, BT_SIZE) 96 210 #define BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_LONGDOUBLE, BT_LONGDOUBLEPTR, BT_LONGDOUBLEPTR) 97 #define BT_FN_INT_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_CONST_STRING, BT_VAR)98 #define BT_FN_BOOL_INT_INT_INTPTR(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_INT, BT_INT, BT_INTPTR)99 #define BT_FN_DFLOAT32_DFLOAT32(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME, BT_DFLOAT32)100 #define BT_FN_VOID_VAR(NAME) FUNC_SIMPLE(BT_VOID, NAME)101 #define BT_FN_INT_CONST_STRING_FILEPTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_FILEPTR)102 #define BT_FN_VOID_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_INT)103 #define BT_FN_DFLOAT128_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME, BT_CONST_STRING)104 #define BT_FN_BOOL_VPTR_I16_I16(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_I16, BT_I16)105 #define BT_FN_BOOL_LONG_LONG_LONGPTR(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_LONG, BT_LONG, BT_LONG, BT_PTR)106 #define BT_FN_INT_DFLOAT64(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT64)107 #define BT_FN_LONG_FLOAT(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_FLOAT)108 #define BT_FN_CONST_STRING(NAME) FUNC_SIMPLE(BT_CONST_STRING, NAME)109 #define BT_FN_SIZE_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_STRING, BT_CONST_STRING)110 #define BT_FN_COMPLEX_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_FLOAT)111 #define BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_SIZE, BT_VPTR, BT_PTR, BT_PTR, BT_INT)112 #define BT_FN_STRING_CONST_STRING_CONST_STRING_INT(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_INT)113 #define BT_FN_INT_CONST_STRING_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_VAR)114 #define BT_FN_LONGDOUBLE_LONGDOUBLE_INT(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_INT)115 #define BT_FN_BOOL_VPTR_I1_I1(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_I1, BT_I1)116 #define BT_FN_DOUBLE_DOUBLE_DOUBLEPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLEPTR)117 #define BT_FN_DOUBLE_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE)118 #define BT_FN_LONGDOUBLE_LONGDOUBLE_LONG(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONG)119 #define BT_FN_I16_VPTR_I16_INT(NAME) FUNC_SIMPLE(BT_I16, NAME, BT_VPTR, BT_I16, BT_INT)120 #define BT_FN_INT_STRING_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG)121 #define BT_FN_INT_STRING_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_CONST_STRING, BT_VAR)122 #define BT_FN_UINT64_UINT64(NAME) FUNC_SIMPLE(BT_UINT64, NAME, BT_UINT64)123 #define BT_FN_BOOL_VPTR_PTR_I2_BOOL_INT_INT(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_PTR, BT_I2, BT_BOOL, BT_INT, BT_INT)124 #define BT_FN_PTR_PTR_CONST_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_CONST_PTR, BT_SIZE)125 #define BT_FN_STRING_CONST_STRING_INT(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_INT)126 #define BT_FN_FLOAT_FLOAT_LONG(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_LONG)127 #define BT_FN_FLOAT_CONST_STRING(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_CONST_STRING)128 #define BT_FN_FLOAT_FLOAT_INTPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_INTPTR)129 #define BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)130 #define BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)131 #define BT_FN_INT_LONGLONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_LONGLONG)132 #define BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)133 #define BT_FN_PTR_PTR(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR)134 #define BT_FN_I1_VPTR_I1_I1(NAME) FUNC_SIMPLE(BT_I1, NAME, BT_VPTR, BT_I1, BT_I1)135 #define BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE)136 #define BT_FN_FLOAT_FLOAT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_LONGDOUBLE)137 #define BT_FN_DOUBLE_CONST_STRING(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_CONST_STRING)138 #define BT_FN_DFLOAT128(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME)139 #define BT_FN_I16_CONST_VPTR_INT(NAME) FUNC_SIMPLE(BT_I16, NAME, BT_CONST_VPTR, BT_INT)140 #define BT_FN_FLOAT_FLOAT_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT, BT_FLOAT)141 #define BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VAR)142 #define BT_FN_SIZE_CONST_PTR_INT(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_PTR, BT_INT)143 #define BT_FN_DOUBLE_DOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_LONGDOUBLE)144 #define BT_FN_LONG_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONGDOUBLE)145 #define BT_FN_BOOL_SIZE_CONST_VPTR(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_SIZE, BT_CONST_VPTR)146 #define BT_FN_I16_VPTR_I16(NAME) FUNC_SIMPLE(BT_I16, NAME, BT_VPTR, BT_I16)147 #define BT_FN_VOID_VPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VPTR)148 #define BT_FN_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME)149 #define BT_FN_VOID_PTRMODE_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTRMODE_PTR)150 #define BT_FN_WINT_WINT(NAME) FUNC_SIMPLE(BT_WINT, NAME, BT_WINT)151 #define BT_FN_BOOL_VPTR_I8_I8(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_I8, BT_I8)152 #define BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_INTPTR)153 #define BT_FN_DOUBLE_DOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_INTPTR)154 #define BT_FN_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_COMPLEX_FLOAT)155 #define BT_FN_BOOL_VPTR_PTR_I8_BOOL_INT_INT(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_PTR, BT_I8, BT_BOOL, BT_INT, BT_INT)156 #define BT_FN_I4_CONST_VPTR_INT(NAME) FUNC_SIMPLE(BT_I4, NAME, BT_CONST_VPTR, BT_INT)157 #define BT_FN_INT_WINT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_WINT)158 #define BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_DOUBLE, BT_DOUBLEPTR, BT_DOUBLEPTR)159 #define BT_FN_I8_VPTR_I8_INT(NAME) FUNC_SIMPLE(BT_I8, NAME, BT_VPTR, BT_I8, BT_INT)160 #define BT_FN_VOID_PTR_WORD_WORD_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_WORD, BT_WORD, BT_PTR)161 #define BT_FN_I4_VPTR_I4_I4(NAME) FUNC_SIMPLE(BT_I4, NAME, BT_VPTR, BT_I4, BT_I4)162 #define BT_FN_PTR_CONST_PTR_INT_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_CONST_PTR, BT_INT, BT_SIZE)163 #define BT_FN_INT_UINTMAX(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_UINTMAX)164 #define BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_ULONGLONG, BT_ULONGLONG, BT_ULONGLONG, BT_PTR)165 #define BT_FN_LONGLONG_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_LONGDOUBLE)166 #define BT_FN_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT)167 #define BT_FN_INT_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)168 #define BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING, BT_SIZE, BT_SIZE)169 #define BT_FN_INT_DFLOAT128(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT128)170 #define BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR_FN_VOID_VAR_PTR_SIZE)171 #define BT_FN_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_SIZE)172 #define BT_FN_DFLOAT32_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT32, NAME, BT_CONST_STRING)173 #define BT_FN_LONG_LONG_LONG(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_LONG, BT_LONG)174 #define BT_FN_VOID_VPTR_I8_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VPTR, BT_I8, BT_INT)175 #define BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VAR)176 #define BT_FN_BOOL_VAR(NAME) FUNC_SIMPLE(BT_BOOL, NAME)177 #define BT_FN_INT_FILEPTR_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_CONST_STRING, BT_VAR)178 #define BT_FN_COMPLEX_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_DOUBLE)179 #define BT_FN_INT_ULONG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_ULONG)180 #define BT_FN_STRING_CONST_STRING_SIZE(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING, BT_SIZE)181 #define BT_FN_VOID(NAME) FUNC_SIMPLE(BT_VOID, NAME)182 #define BT_FN_INT_DFLOAT32(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_DFLOAT32)183 #define BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_SIZE, BT_CONST_VPTR, BT_PTR, BT_INT)184 #define BT_FN_UNWINDWORD_PTR(NAME) FUNC_SIMPLE(BT_UNWINDWORD, NAME, BT_PTR)185 #define BT_FN_I1_CONST_VPTR_INT(NAME) FUNC_SIMPLE(BT_I1, NAME, BT_CONST_VPTR, BT_INT)186 #define BT_FN_INT_STRING_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VAR)187 #define BT_FN_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_CONST_STRING)188 #define BT_FN_PTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_SIZE, BT_SIZE)189 #define BT_FN_VOID_VPTR_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VPTR, BT_INT)190 #define BT_FN_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME)191 #define BT_FN_PTR_VAR(NAME) FUNC_SIMPLE(BT_PTR, NAME)192 #define BT_FN_I8_CONST_VPTR_INT(NAME) FUNC_SIMPLE(BT_I8, NAME, BT_CONST_VPTR, BT_INT)193 #define BT_FN_LONG_DOUBLE(NAME) FUNC_SIMPLE(BT_LONG, NAME, BT_DOUBLE)194 #define BT_FN_LONGLONG_DOUBLE(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_DOUBLE)195 #define BT_FN_BOOL_VPTR_PTR_I4_BOOL_INT_INT(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_PTR, BT_I4, BT_BOOL, BT_INT, BT_INT)196 #define BT_FN_VOID_CONST_PTR_VAR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_CONST_PTR, BT_VAR)197 #define BT_FN_DOUBLE_DOUBLE_LONG(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_LONG)198 #define BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE, BT_DOUBLE, BT_INTPTR)199 #define BT_FN_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE)200 #define BT_FN_INT_PTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_PTR)201 #define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INTPTR)202 #define BT_FN_BOOL_VPTR_INT(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_INT)203 #define BT_FN_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_VALIST_ARG)204 #define BT_FN_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_COMPLEX_DOUBLE)205 #define BT_FN_DOUBLE_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_DOUBLE)206 #define BT_FN_I2_VPTR_I2_INT(NAME) FUNC_SIMPLE(BT_I2, NAME, BT_VPTR, BT_I2, BT_INT)207 #define BT_FN_INT_INT_FILEPTR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT, BT_FILEPTR)208 #define BT_FN_DFLOAT64_DFLOAT64(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME, BT_DFLOAT64)209 #define BT_FN_I8_VPTR_I8(NAME) FUNC_SIMPLE(BT_I8, NAME, BT_VPTR, BT_I8)210 #define BT_FN_DOUBLE_INT_DOUBLE(NAME) FUNC_SIMPLE(BT_DOUBLE, NAME, BT_INT, BT_DOUBLE)211 #define BT_FN_I16_VPTR_I16_I16(NAME) FUNC_SIMPLE(BT_I16, NAME, BT_VPTR, BT_I16, BT_I16)212 #define BT_FN_VOID_VPTR_I16_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VPTR, BT_I16, BT_INT)213 #define BT_FN_VOID_VPTR_I1_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VPTR, BT_I1, BT_INT)214 #define BT_FN_DFLOAT64(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME)215 #define BT_FN_FLOAT_INT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_INT, BT_FLOAT)216 #define BT_FN_I2_VPTR_I2_I2(NAME) FUNC_SIMPLE(BT_I2, NAME, BT_VPTR, BT_I2, BT_I2)217 #define BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_COMPLEX_FLOAT)218 #define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLE)219 #define BT_FN_VOID_VALIST_REF_VAR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF, BT_VAR)220 #define BT_FN_UINT32_UINT32(NAME) FUNC_SIMPLE(BT_UINT32, NAME, BT_UINT32)221 #define BT_FN_FLOAT_FLOAT_FLOAT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT)222 #define BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)223 #define BT_FN_INT_CONST_PTR_CONST_PTR_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)224 #define BT_FN_PTR(NAME) FUNC_SIMPLE(BT_PTR, NAME)225 #define BT_FN_FLOAT_FLOAT_INT(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_INT)226 #define BT_FN_INT_UINT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_UINT)227 #define BT_FN_SIZE_CONST_STRING(NAME) FUNC_SIMPLE(BT_SIZE, NAME, BT_CONST_STRING)228 #define BT_FN_PTR_PTR_INT_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_INT, BT_SIZE)229 #define BT_FN_I2_VPTR_I2(NAME) FUNC_SIMPLE(BT_I2, NAME, BT_VPTR, BT_I2)230 #define BT_FN_UINT16_UINT16(NAME) FUNC_SIMPLE(BT_UINT16, NAME, BT_UINT16)231 211 #define BT_FN_INT_INTMAX(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INTMAX) 232 #define BT_FN_VOID_PTR_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR, BT_PTR)233 #define BT_FN_STRING_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_STRING, NAME, BT_STRING, BT_CONST_STRING)234 #define BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)235 #define BT_FN_I2_CONST_VPTR_INT(NAME) FUNC_SIMPLE(BT_I2, NAME, BT_CONST_VPTR, BT_INT)236 #define BT_FN_I1_VPTR_I1(NAME) FUNC_SIMPLE(BT_I1, NAME, BT_VPTR, BT_I1)237 #define BT_FN_LONGLONG_LONGLONG(NAME) FUNC_SIMPLE(BT_LONGLONG, NAME, BT_LONGLONG)238 #define BT_FN_PID(NAME) FUNC_SIMPLE(BT_PID, NAME)239 #define BT_FN_I4_VPTR_I4(NAME) FUNC_SIMPLE(BT_I4, NAME, BT_VPTR, BT_I4)240 #define BT_FN_I8_VPTR_I8_I8(NAME) FUNC_SIMPLE(BT_I8, NAME, BT_VPTR, BT_I8, BT_I8)241 #define BT_FN_VOID_PTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_PTR)242 #define BT_FN_VOID_VPTR_I2_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VPTR, BT_I2, BT_INT)243 #define BT_FN_VOID_SIZE_VPTR_PTR_INT(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_SIZE, BT_VPTR, BT_PTR, BT_INT)244 #define BT_FN_VOID_VALIST_REF(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_VALIST_REF)245 #define BT_FN_INT_PTRPTR_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_PTRPTR, BT_SIZE, BT_SIZE)246 #define BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG)247 #define BT_FN_INT_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING)248 #define BT_FN_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_VAR)249 #define BT_FN_DFLOAT64_CONST_STRING(NAME) FUNC_SIMPLE(BT_DFLOAT64, NAME, BT_CONST_STRING)250 212 #define BT_FN_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME) 251 #define BT_FN_PTR_PTR_INT_SIZE_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_INT, BT_SIZE, BT_SIZE)252 #define BT_FN_INT_CONST_STRING_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_CONST_STRING)253 #define BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_LONGDOUBLE)254 213 #define BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_LONGDOUBLE, BT_LONGDOUBLEPTR) 255 #define BT_FN_BOOL_SIZE_VPTR_PTR_PTR_INT_INT(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_SIZE, BT_VPTR, BT_PTR, BT_PTR, BT_INT, BT_INT)256 #define BT_FN_BOOL_UINT_UINT_UINTPTR(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_UINT, BT_UINT, BT_UINT, BT_PTR)257 #define BT_FN_BOOL_VPTR_I4_I4(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_I4, BT_I4)258 #define BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT(NAME) FUNC_SIMPLE(BT_COMPLEX_FLOAT, NAME, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)259 #define BT_FN_FLOAT_FLOAT_FLOAT_INTPTR(NAME) FUNC_SIMPLE(BT_FLOAT, NAME, BT_FLOAT, BT_FLOAT, BT_INTPTR)260 #define BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_DOUBLE, NAME, BT_COMPLEX_DOUBLE)261 #define BT_FN_I4_VPTR_I4_INT(NAME) FUNC_SIMPLE(BT_I4, NAME, BT_VPTR, BT_I4, BT_INT)262 #define BT_FN_VOID_CONST_PTR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_CONST_PTR, BT_PTR, BT_SIZE)263 #define BT_FN_DFLOAT128_DFLOAT128(NAME) FUNC_SIMPLE(BT_DFLOAT128, NAME, BT_DFLOAT128)264 #define BT_FN_LONGDOUBLE_INT_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_LONGDOUBLE, NAME, BT_INT, BT_LONGDOUBLE)265 #define BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_STRING, BT_SIZE, BT_INT, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)266 #define BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG)267 #define BT_FN_INT_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME)268 #define BT_FN_INT_CONST_STRING_PTR_CONST_STRING(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_CONST_STRING, BT_PTR_CONST_STRING)269 #define BT_FN_INT_INT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_INT)270 #define BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR(NAME) FUNC_SIMPLE(BT_VOID, NAME, BT_FLOAT, BT_FLOATPTR, BT_FLOATPTR)271 #define BT_FN_INT_FLOAT(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FLOAT)272 #define BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)273 #define BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_INT, NAME, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VAR)274 #define BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR(NAME) FUNC_SIMPLE(BT_SSIZE, NAME, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VAR)275 #define BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_LONGLONG, BT_LONGLONG, BT_LONGLONG, BT_PTR)276 #define BT_FN_PTR_PTR_SIZE(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_PTR, BT_SIZE)277 #define BT_FN_PTR_UINT(NAME) FUNC_SIMPLE(BT_PTR, NAME, BT_UINT)278 #define BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE(NAME) FUNC_SIMPLE(BT_COMPLEX_LONGDOUBLE, NAME, BT_COMPLEX_LONGDOUBLE)279 #define BT_FN_BOOL_VPTR_PTR_I1_BOOL_INT_INT(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_VPTR, BT_PTR, BT_I1, BT_BOOL, BT_INT, BT_INT)280 #define BT_FN_BOOL_ULONG_ULONG_ULONGPTR(NAME) FUNC_SIMPLE(BT_BOOL, NAME, BT_ULONG, BT_ULONG, BT_ULONG, BT_PTR)281 214 282 215 #include "builtins.def" -
src/prelude/builtins.def
rb4d65c7 rc0aa336 1 1 /* This file contains the definitions and documentation for the 2 2 builtins used in the GNU compiler. 3 Copyright (C) 2000-201 6Free Software Foundation, Inc.3 Copyright (C) 2000-2014 Free Software Foundation, Inc. 4 4 5 5 This file is part of GCC. … … 63 63 64 64 The builtins is registered only if COND is true. */ 65 66 /* A macro for builtins where the67 BUILT_IN_*_CHKP = BUILT_IN_* + BEGIN_CHKP_BUILTINS + 168 enums should be defined too. */69 #ifndef DEF_BUILTIN_CHKP70 #define DEF_BUILTIN_CHKP(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, \71 FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) \72 DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P, \73 NONANSI_P, ATTRS, IMPLICIT, COND)74 #endif75 65 76 66 /* A GCC builtin (like __builtin_saveregs) is provided by the … … 98 88 DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ 99 89 true, true, false, ATTRS, true, true) 100 #undef DEF_LIB_BUILTIN_CHKP101 #define DEF_LIB_BUILTIN_CHKP(ENUM, NAME, TYPE, ATTRS) \102 DEF_BUILTIN_CHKP (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, \103 TYPE, true, true, false, ATTRS, true, true)104 90 105 91 /* Like DEF_LIB_BUILTIN, except that the function is not one that is … … 111 97 DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ 112 98 true, true, true, ATTRS, false, true) 113 #undef DEF_EXT_LIB_BUILTIN_CHKP114 #define DEF_EXT_LIB_BUILTIN_CHKP(ENUM, NAME, TYPE, ATTRS) \115 DEF_BUILTIN_CHKP (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, \116 TYPE, true, true, true, ATTRS, false, true)117 99 118 100 /* Like DEF_LIB_BUILTIN, except that the function is only a part of … … 129 111 DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ 130 112 true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true) 131 132 /* Like DEF_LIB_BUILTIN, except that the function is only a part of133 the standard in C11 or above. */134 #undef DEF_C11_BUILTIN135 #define DEF_C11_BUILTIN(ENUM, NAME, TYPE, ATTRS) \136 DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE, \137 true, true, !flag_isoc11, ATTRS, targetm.libc_has_function (function_c11_misc), true)138 113 139 114 /* Like DEF_C99_BUILTIN, but for complex math functions. */ … … 165 140 false, ATTR_LAST, false, false) 166 141 167 /* Builtin used by the implementation of OpenACC and OpenMP. Few of these are 168 actually implemented in the compiler; most are in libgomp. */ 169 /* These builtins also need to be enabled in offloading compilers invoked from 170 mkoffload; for that purpose, we're checking the -foffload-abi flag here. */ 171 #undef DEF_GOACC_BUILTIN 172 #define DEF_GOACC_BUILTIN(ENUM, NAME, TYPE, ATTRS) \ 173 DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ 174 false, true, true, ATTRS, false, \ 175 (flag_openacc \ 176 || flag_offload_abi != OFFLOAD_ABI_UNSET)) 177 #undef DEF_GOACC_BUILTIN_COMPILER 178 #define DEF_GOACC_BUILTIN_COMPILER(ENUM, NAME, TYPE, ATTRS) \ 179 DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ 180 flag_openacc, true, true, ATTRS, false, true) 142 /* Builtin used by the implementation of GNU OpenMP. None of these are 143 actually implemented in the compiler; they're all in libgomp. */ 181 144 #undef DEF_GOMP_BUILTIN 182 145 #define DEF_GOMP_BUILTIN(ENUM, NAME, TYPE, ATTRS) \ 183 146 DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ 184 147 false, true, true, ATTRS, false, \ 185 (flag_openacc \ 186 || flag_openmp \ 187 || flag_tree_parallelize_loops > 1 \ 188 || flag_cilkplus \ 189 || flag_offload_abi != OFFLOAD_ABI_UNSET)) 148 (flag_openmp || flag_tree_parallelize_loops)) 190 149 191 150 /* Builtin used by implementation of Cilk Plus. Most of these are decomposed … … 211 170 true, true, true, ATTRS, true, \ 212 171 (flag_sanitize & (SANITIZE_ADDRESS | SANITIZE_THREAD \ 213 | SANITIZE_UNDEFINED | SANITIZE_NONDEFAULT) \ 214 || flag_sanitize_coverage)) 172 | SANITIZE_UNDEFINED))) 215 173 216 174 #undef DEF_CILKPLUS_BUILTIN … … 218 176 DEF_BUILTIN (ENUM, NAME, BUILT_IN_NORMAL, BT_FN_INT_VAR, BT_LAST, \ 219 177 false, false, false, ATTRS, false, flag_cilkplus) 220 221 /* Builtin used by the implementation of Pointer Bounds Checker. */222 #undef DEF_CHKP_BUILTIN223 #define DEF_CHKP_BUILTIN(ENUM, NAME, TYPE, ATTRS) \224 DEF_BUILTIN_CHKP (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, \225 TYPE, true, true, false, ATTRS, true, true)226 178 227 179 /* Define an attribute list for math functions that are normally … … 272 224 DEF_C99_BUILTIN (BUILT_IN_ACOSHL, "acoshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) 273 225 DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSL, "acosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) 274 DEF_C11_BUILTIN (BUILT_IN_ALIGNED_ALLOC, "aligned_alloc", BT_FN_PTR_SIZE_SIZE, ATTR_MALLOC_NOTHROW_LIST)275 226 DEF_LIB_BUILTIN (BUILT_IN_ASIN, "asin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) 276 227 DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINF, "asinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO) … … 477 428 DEF_C99_BUILTIN (BUILT_IN_REMQUOF, "remquof", BT_FN_FLOAT_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE) 478 429 DEF_C99_BUILTIN (BUILT_IN_REMQUOL, "remquol", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE) 479 DEF_C99_BUILTIN (BUILT_IN_RINT, "rint", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING )480 DEF_C99_BUILTIN (BUILT_IN_RINTF, "rintf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING )481 DEF_C99_BUILTIN (BUILT_IN_RINTL, "rintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING )430 DEF_C99_BUILTIN (BUILT_IN_RINT, "rint", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) 431 DEF_C99_BUILTIN (BUILT_IN_RINTF, "rintf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO) 432 DEF_C99_BUILTIN (BUILT_IN_RINTL, "rintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) 482 433 DEF_C99_BUILTIN (BUILT_IN_ROUND, "round", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST) 483 434 DEF_C99_BUILTIN (BUILT_IN_ROUNDF, "roundf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST) … … 492 443 DEF_C99_BUILTIN (BUILT_IN_SCALBNF, "scalbnf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO) 493 444 DEF_C99_BUILTIN (BUILT_IN_SCALBNL, "scalbnl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO) 494 DEF_EXT_LIB_BUILTIN (BUILT_IN_SIGNBIT, "signbit", BT_FN_INT_ VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)445 DEF_EXT_LIB_BUILTIN (BUILT_IN_SIGNBIT, "signbit", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST) 495 446 DEF_EXT_LIB_BUILTIN (BUILT_IN_SIGNBITF, "signbitf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST) 496 447 DEF_EXT_LIB_BUILTIN (BUILT_IN_SIGNBITL, "signbitl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST) … … 618 569 DEF_LIB_BUILTIN (BUILT_IN_MEMCHR, "memchr", BT_FN_PTR_CONST_PTR_INT_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF) 619 570 DEF_LIB_BUILTIN (BUILT_IN_MEMCMP, "memcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF) 620 DEF_LIB_BUILTIN _CHKP(BUILT_IN_MEMCPY, "memcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)621 DEF_LIB_BUILTIN _CHKP(BUILT_IN_MEMMOVE, "memmove", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)622 DEF_EXT_LIB_BUILTIN _CHKP(BUILT_IN_MEMPCPY, "mempcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL_LEAF)623 DEF_LIB_BUILTIN _CHKP(BUILT_IN_MEMSET, "memset", BT_FN_PTR_PTR_INT_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)571 DEF_LIB_BUILTIN (BUILT_IN_MEMCPY, "memcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF) 572 DEF_LIB_BUILTIN (BUILT_IN_MEMMOVE, "memmove", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF) 573 DEF_EXT_LIB_BUILTIN (BUILT_IN_MEMPCPY, "mempcpy", BT_FN_PTR_PTR_CONST_PTR_SIZE, ATTR_NOTHROW_NONNULL_LEAF) 574 DEF_LIB_BUILTIN (BUILT_IN_MEMSET, "memset", BT_FN_PTR_PTR_INT_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF) 624 575 DEF_EXT_LIB_BUILTIN (BUILT_IN_RINDEX, "rindex", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF) 625 DEF_EXT_LIB_BUILTIN _CHKP(BUILT_IN_STPCPY, "stpcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)576 DEF_EXT_LIB_BUILTIN (BUILT_IN_STPCPY, "stpcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF) 626 577 DEF_EXT_LIB_BUILTIN (BUILT_IN_STPNCPY, "stpncpy", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF) 627 578 DEF_EXT_LIB_BUILTIN (BUILT_IN_STRCASECMP, "strcasecmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF) 628 DEF_LIB_BUILTIN _CHKP(BUILT_IN_STRCAT, "strcat", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF)629 DEF_LIB_BUILTIN _CHKP(BUILT_IN_STRCHR, "strchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF)579 DEF_LIB_BUILTIN (BUILT_IN_STRCAT, "strcat", BT_FN_STRING_STRING_CONST_STRING, ATTR_NOTHROW_NONNULL_LEAF) 580 DEF_LIB_BUILTIN (BUILT_IN_STRCHR, "strchr", BT_FN_STRING_CONST_STRING_INT, ATTR_PURE_NOTHROW_NONNULL_LEAF) 630 581 DEF_LIB_BUILTIN (BUILT_IN_STRCMP, "strcmp", BT_FN_INT_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF) 631 DEF_LIB_BUILTIN _CHKP(BUILT_IN_STRCPY, "strcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_RET1_NOTHROW_NONNULL_LEAF)582 DEF_LIB_BUILTIN (BUILT_IN_STRCPY, "strcpy", BT_FN_STRING_STRING_CONST_STRING, ATTR_RET1_NOTHROW_NONNULL_LEAF) 632 583 DEF_LIB_BUILTIN (BUILT_IN_STRCSPN, "strcspn", BT_FN_SIZE_CONST_STRING_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF) 633 584 DEF_EXT_LIB_BUILTIN (BUILT_IN_STRDUP, "strdup", BT_FN_STRING_CONST_STRING, ATTR_MALLOC_NOTHROW_NONNULL_LEAF) 634 585 DEF_EXT_LIB_BUILTIN (BUILT_IN_STRNDUP, "strndup", BT_FN_STRING_CONST_STRING_SIZE, ATTR_MALLOC_NOTHROW_NONNULL_LEAF) 635 DEF_LIB_BUILTIN _CHKP(BUILT_IN_STRLEN, "strlen", BT_FN_SIZE_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF)586 DEF_LIB_BUILTIN (BUILT_IN_STRLEN, "strlen", BT_FN_SIZE_CONST_STRING, ATTR_PURE_NOTHROW_NONNULL_LEAF) 636 587 DEF_EXT_LIB_BUILTIN (BUILT_IN_STRNCASECMP, "strncasecmp", BT_FN_INT_CONST_STRING_CONST_STRING_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF) 637 588 DEF_LIB_BUILTIN (BUILT_IN_STRNCAT, "strncat", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF) … … 707 658 DEF_C94_BUILTIN (BUILT_IN_TOWUPPER, "towupper", BT_FN_WINT_WINT, ATTR_PURE_NOTHROW_LEAF_LIST) 708 659 709 /* Category: integer overflow checking builtins. */710 DEF_GCC_BUILTIN (BUILT_IN_ADD_OVERFLOW, "add_overflow", BT_FN_BOOL_VAR, ATTR_NOTHROW_TYPEGENERIC_LEAF)711 DEF_GCC_BUILTIN (BUILT_IN_SUB_OVERFLOW, "sub_overflow", BT_FN_BOOL_VAR, ATTR_NOTHROW_TYPEGENERIC_LEAF)712 DEF_GCC_BUILTIN (BUILT_IN_MUL_OVERFLOW, "mul_overflow", BT_FN_BOOL_VAR, ATTR_NOTHROW_TYPEGENERIC_LEAF)713 /* Clang compatibility. */714 DEF_GCC_BUILTIN (BUILT_IN_SADD_OVERFLOW, "sadd_overflow", BT_FN_BOOL_INT_INT_INTPTR, ATTR_NOTHROW_LEAF_LIST)715 DEF_GCC_BUILTIN (BUILT_IN_SADDL_OVERFLOW, "saddl_overflow", BT_FN_BOOL_LONG_LONG_LONGPTR, ATTR_NOTHROW_LEAF_LIST)716 DEF_GCC_BUILTIN (BUILT_IN_SADDLL_OVERFLOW, "saddll_overflow", BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)717 DEF_GCC_BUILTIN (BUILT_IN_SSUB_OVERFLOW, "ssub_overflow", BT_FN_BOOL_INT_INT_INTPTR, ATTR_NOTHROW_LEAF_LIST)718 DEF_GCC_BUILTIN (BUILT_IN_SSUBL_OVERFLOW, "ssubl_overflow", BT_FN_BOOL_LONG_LONG_LONGPTR, ATTR_NOTHROW_LEAF_LIST)719 DEF_GCC_BUILTIN (BUILT_IN_SSUBLL_OVERFLOW, "ssubll_overflow", BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)720 DEF_GCC_BUILTIN (BUILT_IN_SMUL_OVERFLOW, "smul_overflow", BT_FN_BOOL_INT_INT_INTPTR, ATTR_NOTHROW_LEAF_LIST)721 DEF_GCC_BUILTIN (BUILT_IN_SMULL_OVERFLOW, "smull_overflow", BT_FN_BOOL_LONG_LONG_LONGPTR, ATTR_NOTHROW_LEAF_LIST)722 DEF_GCC_BUILTIN (BUILT_IN_SMULLL_OVERFLOW, "smulll_overflow", BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)723 DEF_GCC_BUILTIN (BUILT_IN_UADD_OVERFLOW, "uadd_overflow", BT_FN_BOOL_UINT_UINT_UINTPTR, ATTR_NOTHROW_LEAF_LIST)724 DEF_GCC_BUILTIN (BUILT_IN_UADDL_OVERFLOW, "uaddl_overflow", BT_FN_BOOL_ULONG_ULONG_ULONGPTR, ATTR_NOTHROW_LEAF_LIST)725 DEF_GCC_BUILTIN (BUILT_IN_UADDLL_OVERFLOW, "uaddll_overflow", BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)726 DEF_GCC_BUILTIN (BUILT_IN_USUB_OVERFLOW, "usub_overflow", BT_FN_BOOL_UINT_UINT_UINTPTR, ATTR_NOTHROW_LEAF_LIST)727 DEF_GCC_BUILTIN (BUILT_IN_USUBL_OVERFLOW, "usubl_overflow", BT_FN_BOOL_ULONG_ULONG_ULONGPTR, ATTR_NOTHROW_LEAF_LIST)728 DEF_GCC_BUILTIN (BUILT_IN_USUBLL_OVERFLOW, "usubll_overflow", BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)729 DEF_GCC_BUILTIN (BUILT_IN_UMUL_OVERFLOW, "umul_overflow", BT_FN_BOOL_UINT_UINT_UINTPTR, ATTR_NOTHROW_LEAF_LIST)730 DEF_GCC_BUILTIN (BUILT_IN_UMULL_OVERFLOW, "umull_overflow", BT_FN_BOOL_ULONG_ULONG_ULONGPTR, ATTR_NOTHROW_LEAF_LIST)731 DEF_GCC_BUILTIN (BUILT_IN_UMULLL_OVERFLOW, "umulll_overflow", BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR, ATTR_NOTHROW_LEAF_LIST)732 733 660 /* Category: miscellaneous builtins. */ 734 DEF_LIB_BUILTIN (BUILT_IN_ABORT, "abort", BT_FN_VOID, ATTR_ TMPURE_NORETURN_NOTHROW_LEAF_LIST)661 DEF_LIB_BUILTIN (BUILT_IN_ABORT, "abort", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LEAF_LIST) 735 662 DEF_LIB_BUILTIN (BUILT_IN_ABS, "abs", BT_FN_INT_INT, ATTR_CONST_NOTHROW_LEAF_LIST) 736 663 DEF_GCC_BUILTIN (BUILT_IN_AGGREGATE_INCOMING_ADDRESS, "aggregate_incoming_address", BT_FN_PTR_VAR, ATTR_LEAF_LIST) … … 867 794 /* Object size checking builtins. */ 868 795 DEF_GCC_BUILTIN (BUILT_IN_OBJECT_SIZE, "object_size", BT_FN_SIZE_CONST_PTR_INT, ATTR_PURE_NOTHROW_LEAF_LIST) 869 DEF_EXT_LIB_BUILTIN _CHKP(BUILT_IN_MEMCPY_CHK, "__memcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)870 DEF_EXT_LIB_BUILTIN _CHKP(BUILT_IN_MEMMOVE_CHK, "__memmove_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF)871 DEF_EXT_LIB_BUILTIN _CHKP(BUILT_IN_MEMPCPY_CHK, "__mempcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)872 DEF_EXT_LIB_BUILTIN _CHKP(BUILT_IN_MEMSET_CHK, "__memset_chk", BT_FN_PTR_PTR_INT_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF)873 DEF_EXT_LIB_BUILTIN _CHKP(BUILT_IN_STPCPY_CHK, "__stpcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)796 DEF_EXT_LIB_BUILTIN (BUILT_IN_MEMCPY_CHK, "__memcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF) 797 DEF_EXT_LIB_BUILTIN (BUILT_IN_MEMMOVE_CHK, "__memmove_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_RET1_NOTHROW_NONNULL_LEAF) 798 DEF_EXT_LIB_BUILTIN (BUILT_IN_MEMPCPY_CHK, "__mempcpy_chk", BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF) 799 DEF_EXT_LIB_BUILTIN (BUILT_IN_MEMSET_CHK, "__memset_chk", BT_FN_PTR_PTR_INT_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF) 800 DEF_EXT_LIB_BUILTIN (BUILT_IN_STPCPY_CHK, "__stpcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF) 874 801 DEF_EXT_LIB_BUILTIN (BUILT_IN_STPNCPY_CHK, "__stpncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF) 875 DEF_EXT_LIB_BUILTIN _CHKP(BUILT_IN_STRCAT_CHK, "__strcat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)876 DEF_EXT_LIB_BUILTIN _CHKP(BUILT_IN_STRCPY_CHK, "__strcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF)802 DEF_EXT_LIB_BUILTIN (BUILT_IN_STRCAT_CHK, "__strcat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF) 803 DEF_EXT_LIB_BUILTIN (BUILT_IN_STRCPY_CHK, "__strcpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE, ATTR_NOTHROW_NONNULL_LEAF) 877 804 DEF_EXT_LIB_BUILTIN (BUILT_IN_STRNCAT_CHK, "__strncat_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF) 878 805 DEF_EXT_LIB_BUILTIN (BUILT_IN_STRNCPY_CHK, "__strncpy_chk", BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE, ATTR_NOTHROW_NONNULL_LEAF) … … 927 854 DEF_GCC_BUILTIN (BUILT_IN_LINE, "LINE", BT_FN_INT, ATTR_NOTHROW_LEAF_LIST) 928 855 856 #if 0 929 857 /* Synchronization Primitives. */ 930 858 #include "sync-builtins.def" 931 859 932 #if 0 933 /* Offloading and Multi Processing builtins. */ 860 /* OpenMP builtins. */ 934 861 #include "omp-builtins.def" 935 862 … … 945 872 /* Cilk Plus builtins. */ 946 873 #include "cilkplus.def" 947 948 /* Pointer Bounds Checker builtins. */949 #include "chkp-builtins.def"950 874 #endif 951 952 #undef DEF_BUILTIN_CHKP953 #undef DEF_BUILTIN -
src/prelude/prototypes.awk
rb4d65c7 rc0aa336 17 17 18 18 BEGIN { 19 FS = "[( )]"19 FS = "(" 20 20 # order so string search is longest string 21 i=-1 22 types[i+=1] = "BOOL"; vtypes[i] = "_Bool" 23 types[i+=1] = "UINTMAX"; vtypes[i] = "unsigned long int" 24 types[i+=1] = "UINT16"; vtypes[i] = "short int" 25 types[i+=1] = "UINT32"; vtypes[i] = "int" 26 types[i+=1] = "UINT64"; vtypes[i] = "long long int" 27 types[i+=1] = "UINT"; vtypes[i] = "unsigned int" 28 types[i+=1] = "INTMAX"; vtypes[i] = "long int" 29 types[i+=1] = "INTPTR"; vtypes[i] = "int *" 30 types[i+=1] = "WINT"; vtypes[i] = "unsigned int" 31 types[i+=1] = "INT"; vtypes[i] = "int" 32 types[i+=1] = "ULONGLONG"; vtypes[i] = "unsigned long long" 33 types[i+=1] = "ULONG"; vtypes[i] = "unsigned long" 34 types[i+=1] = "UNSIGNED"; vtypes[i] = "unsigned" 35 types[i+=1] = "COMPLEX_LONGDOUBLE"; vtypes[i] = "_Complex long double" 36 types[i+=1] = "COMPLEX_DOUBLE"; vtypes[i] = "_Complex double" 37 types[i+=1] = "COMPLEX_FLOAT"; vtypes[i] = "_Complex float" 38 types[i+=1] = "LONGDOUBLEPTR"; vtypes[i] = "long double *" 39 types[i+=1] = "LONGDOUBLE"; vtypes[i] = "long double" 40 types[i+=1] = "LONGLONG"; vtypes[i] = "long long" 41 types[i+=1] = "LONG"; vtypes[i] = "long" 42 types[i+=1] = "DFLOAT32"; vtypes[i] = "__Unsupported" 43 types[i+=1] = "DFLOAT64"; vtypes[i] = "__Unsupported" 44 types[i+=1] = "DFLOAT128"; vtypes[i] = "__Unsupported" 45 types[i+=1] = "DOUBLEPTR"; vtypes[i] = "double *" 46 types[i+=1] = "DOUBLE"; vtypes[i] = "double" 47 types[i+=1] = "FLOATPTR"; vtypes[i] = "float *" 48 types[i+=1] = "FLOAT128X"; vtypes[i] = "__Unsupported" 49 types[i+=1] = "FLOAT128"; vtypes[i] = "__Unsupported" 50 types[i+=1] = "FLOAT64X"; vtypes[i] = "__Unsupported" 51 types[i+=1] = "FLOAT64"; vtypes[i] = "__Unsupported" 52 types[i+=1] = "FLOAT32X"; vtypes[i] = "__Unsupported" 53 types[i+=1] = "FLOAT32"; vtypes[i] = "__Unsupported" 54 types[i+=1] = "FLOAT16"; vtypes[i] = "__Unsupported" 55 types[i+=1] = "FLOAT"; vtypes[i] = "float" 56 types[i+=1] = "CONST_VPTR"; vtypes[i] = "const volatile void *" 57 types[i+=1] = "CONST_PTR"; vtypes[i] = "const void *" 58 types[i+=1] = "CONST_STRING"; vtypes[i] = "const char *" 59 types[i+=1] = "CONST_TM_PTR"; vtypes[i] = "const struct tm *" 60 types[i+=1] = "PTR_FN_VOID_VAR_PTR_SIZE"; vtypes[i] = "" 61 types[i+=1] = "PTR_CONST_STRING"; vtypes[i] = "char *const" 62 types[i+=1] = "PTRMODE_PTR"; vtypes[i] = "" 63 types[i+=1] = "PTRPTR"; vtypes[i] = "void **" 64 types[i+=1] = "VPTR"; vtypes[i] = "volatile void *" 65 types[i+=1] = "PTR"; vtypes[i] = "void *" 66 types[i+=1] = "VOID"; vtypes[i] = "void" 67 types[i+=1] = "STRING"; vtypes[i] = "char *" 68 types[i+=1] = "FILEPTR"; vtypes[i] = "struct _IO_FILE *" 69 types[i+=1] = "SIZE"; vtypes[i] = "unsigned long" 70 types[i+=1] = "VAR"; vtypes[i] = "..." 71 types[i+=1] = "VALIST_ARG"; vtypes[i] = "__builtin_va_list" 72 types[i+=1] = "VALIST_REF"; vtypes[i] = "__builtin_va_list" 73 types[i+=1] = "UNWINDWORD"; vtypes[i] = "void *" 74 types[i+=1] = "WORD"; vtypes[i] = "" 75 types[i+=1] = "SSIZE"; vtypes[i] = "long int" 76 types[i+=1] = "PID"; vtypes[i] = "int" 77 types[i+=1] = "I16"; vtypes[i] = "__int128" 78 types[i+=1] = "I8"; vtypes[i] = "long long int" 79 types[i+=1] = "I4"; vtypes[i] = "int" 80 types[i+=1] = "I2"; vtypes[i] = "short" 81 types[i+=1] = "I1"; vtypes[i] = "char" 82 N = i + 1 21 types[0] = "UINTMAX"; vtypes[0] = "unsigned long int" 22 types[1] = "UINT16"; vtypes[1] = "short int" 23 types[2] = "UINT32"; vtypes[2] = "int" 24 types[3] = "UINT64"; vtypes[3] = "long long int" 25 types[4] = "UINT"; vtypes[4] = "unsigned int" 26 types[5] = "INTMAX"; vtypes[5] = "long int" 27 types[6] = "INTPTR"; vtypes[6] = "int *" 28 types[7] = "WINT"; vtypes[7] = "unsigned int" 29 types[8] = "INT"; vtypes[8] = "int" 30 types[9] = "ULONGLONG"; vtypes[9] = "unsigned long long" 31 types[10] = "ULONG"; vtypes[10] = "unsigned long" 32 types[11] = "UNSIGNED"; vtypes[11] = "unsigned" 33 types[12] = "COMPLEX_LONGDOUBLE"; vtypes[12] = "_Complex long double" 34 types[13] = "COMPLEX_DOUBLE"; vtypes[13] = "_Complex double" 35 types[14] = "COMPLEX_FLOAT"; vtypes[14] = "_Complex float" 36 types[15] = "LONGDOUBLEPTR"; vtypes[15] = "long double *" 37 types[16] = "LONGDOUBLE"; vtypes[16] = "long double" 38 types[17] = "LONGLONG"; vtypes[17] = "long long" 39 types[18] = "LONG"; vtypes[18] = "long" 40 types[19] = "DFLOAT32"; vtypes[19] = "_Decimal32" 41 types[20] = "DFLOAT64"; vtypes[20] = "_Decimal64" 42 types[21] = "DFLOAT128"; vtypes[21] = "_Decimal128" 43 types[22] = "DOUBLEPTR"; vtypes[22] = "double *" 44 types[23] = "DOUBLE"; vtypes[23] = "double" 45 types[24] = "FLOATPTR"; vtypes[24] = "float *" 46 types[25] = "FLOAT"; vtypes[25] = "float" 47 types[26] = "CONST_PTR"; vtypes[26] = "const void *" 48 types[27] = "CONST_STRING"; vtypes[27] = "const char *" 49 types[28] = "PTR_FN_VOID_VAR_PTR_SIZE"; vtypes[28] = "" 50 types[29] = "PTR_CONST_STRING"; vtypes[29] = "char *const" 51 types[30] = "PTRMODE_PTR"; vtypes[30] = "" 52 types[31] = "PTRPTR"; vtypes[31] = "void **" 53 types[32] = "PTR"; vtypes[32] = "void *" 54 types[33] = "VOID"; vtypes[33] = "void" 55 types[34] = "STRING"; vtypes[34] = "char *" 56 types[35] = "FILEPTR"; vtypes[35] = "struct _IO_FILE *" 57 types[36] = "SIZE"; vtypes[36] = "unsigned long" 58 types[37] = "VAR"; vtypes[37] = "..." 59 types[38] = "VALIST_ARG"; vtypes[38] = "__builtin_va_list" 60 types[39] = "VALIST_REF"; vtypes[39] = "__builtin_va_list" 61 types[40] = "UNWINDWORD"; vtypes[40] = "void *" 62 types[41] = "WORD"; vtypes[41] = "" 63 types[42] = "SSIZE"; vtypes[42] = "long int" 64 types[43] = "PID"; vtypes[43] = "int" 65 N = 44 83 66 } # BEGIN 84 67 85 /BT_FN/ { 86 for (i = 1; i <= NF; i++) { 87 if( match($i, "BT_FN") != 0 ) { 88 prototypes[$i] = $i 89 } 90 } 91 } 68 /^BT_/ { prototypes[$1] = $1 } 92 69 93 70 END { … … 103 80 104 81 for ( prototype in prototypes ) { 105 # printf( "//\"%s\"\n", prototype ) 106 if ( index( "BT_LAST", prototype ) == 1 ) { 107 continue 108 } # if 82 if ( index( "BT_LAST", prototype ) == 1 ) { 83 continue 84 } # if 109 85 110 printf( "#define %s(NAME) FUNC_SIMPLE(", prototype )86 printf( "#define %s(NAME) FUNC_SIMPLE(", prototype ) 111 87 112 if ( sub( "BT_FN_", "", prototype ) == 0 ) {113 printf( "\n********** BAD MACRO NAME \"%s\" **********\n", prototype )114 exit 0115 } # if88 if ( sub( "BT_FN_", "", prototype ) == 0 ) { 89 printf( "\n********** BAD MACRO NAME \"%s\" **********\n", prototype ) 90 exit 0 91 } # if 116 92 117 # generate function return type as macro118 for ( t = 0; t < N; t += 1 ) { # find longest match119 type = types[t];120 if ( index( prototype, type ) == 1 ) { # found match121 printf( "BT_%s, NAME", type )122 sub( type, "", prototype )123 break;124 } # if125 } # for93 # generate function return type as macro 94 for ( t = 0; t < N; t += 1 ) { # find longest match 95 type = types[t]; 96 if ( index( prototype, type ) == 1 ) { # found match 97 printf( "BT_%s, NAME", type ) 98 sub( type, "", prototype ) 99 break; 100 } # if 101 } # for 126 102 127 # generate function parameter types as macro128 if ( index( prototype, "VAR" ) != 2 ) { # C-style empty parameters ?129 for ( p = 0; length( prototype ) > 0; p += 1 ) { # until all parameters types are removed130 sub( "_", "", prototype) # remove "_"131 printf( ", ", type )132 temp = prototype133 for ( t = 0; t < N; t += 1 ) { # find longest match134 type = types[t];135 if ( index( prototype, type ) == 1 ) { # found match136 printf( "BT_%s", type )137 sub( type, "", prototype )138 break;139 } # if140 } # for141 if ( temp == prototype ) { # no match found for parameter in macro table142 printf( "\n********** MISSING TYPE \"%s\" **********\n", prototype )143 exit 0144 } # if145 } # for146 } # if147 printf( ")\n" )103 # generate function parameter types as macro 104 if ( index( prototype, "VAR" ) != 2 ) { # C-style empty parameters ? 105 for ( p = 0; length( prototype ) > 0; p += 1 ) { # until all parameters types are removed 106 sub( "_", "", prototype) # remove "_" 107 printf( ", ", type ) 108 temp = prototype 109 for ( t = 0; t < N; t += 1 ) { # find longest match 110 type = types[t]; 111 if ( index( prototype, type ) == 1 ) { # found match 112 printf( "BT_%s", type ) 113 sub( type, "", prototype ) 114 break; 115 } # if 116 } # for 117 if ( temp == prototype ) { # no match found for parameter in macro table 118 printf( "\n********** MISSING TYPE \"%s\" **********\n", prototype ) 119 exit 0 120 } # if 121 } # for 122 } # if 123 printf( ")\n" ) 148 124 } # for 149 125 -
src/tests/Makefile.am
rb4d65c7 rc0aa336 30 30 31 31 all-local : 32 @+python test.py vector_test avl_test operators numericConstants expression enum array typeof cast dtor-early-exit init_once coroutine thread32 @+python test.py vector_test avl_test operators numericConstants expression enum array typeof cast dtor-early-exit init_once coroutine 33 33 34 34 all-tests : -
src/tests/Makefile.in
rb4d65c7 rc0aa336 651 651 652 652 all-local : 653 @+python test.py vector_test avl_test operators numericConstants expression enum array typeof cast dtor-early-exit init_once coroutine thread653 @+python test.py vector_test avl_test operators numericConstants expression enum array typeof cast dtor-early-exit init_once coroutine 654 654 655 655 all-tests : -
src/tests/dtor-early-exit.c
rb4d65c7 rc0aa336 28 28 // don't want these called 29 29 void ?{}(A * a) { assert( false ); } 30 void ?{}(A * a, char * name) { a->name = name; sout | "construct " | name | endl; a->x = (int*)malloc(); }30 void ?{}(A * a, char * name) { a->name = name; sout | "construct " | name | endl; a->x = malloc(); } 31 31 void ?{}(A * a, char * name, int * ptr) { assert( false ); } 32 32 33 33 A ?=?(A * a, A a) { sout | "assign " | a->name | " " | a.name; return a; } 34 void ?{}(A * a, A a) { sout | "copy construct " | a.name | endl; a->x = (int*)malloc(); }34 void ?{}(A * a, A a) { sout | "copy construct " | a.name | endl; a->x = malloc(); } 35 35 void ^?{}(A * a) { sout | "destruct " | a->name | endl; free(a->x); } 36 36 -
src/tests/test.py
rb4d65c7 rc0aa336 168 168 169 169 def run_test_instance(t, generate, dry_run, debug) : 170 try : 171 # print formated name 172 name_txt = "%20s " % t.name 173 174 #run the test instance and collect the result 175 test_failed, error = run_single_test(t, generate, dry_run, debug) 176 177 # update output based on current action 178 if generate : 179 failed_txt = "ERROR" 180 success_txt = "Done" 181 else : 182 failed_txt = "FAILED" 183 success_txt = "PASSED" 184 185 #print result with error if needed 186 text = name_txt + (failed_txt if test_failed else success_txt) 187 out = sys.stdout 188 if error : 189 text = text + "\n" + error 190 out = sys.stderr 191 192 print(text, file = out); 193 sys.stdout.flush() 194 sys.stderr.flush() 195 return test_failed 196 197 except KeyboardInterrupt: 198 test_failed = True 199 170 # print formated name 171 name_txt = "%20s " % t.name 172 173 #run the test instance and collect the result 174 test_failed, error = run_single_test(t, generate, dry_run, debug) 175 176 # update output based on current action 177 if generate : 178 failed_txt = "ERROR" 179 success_txt = "Done" 180 else : 181 failed_txt = "FAILED" 182 success_txt = "PASSED" 183 184 #print result with error if needed 185 text = name_txt + (failed_txt if test_failed else success_txt) 186 out = sys.stdout 187 if error : 188 text = text + "\n" + error 189 out = sys.stderr 190 191 print(text, file = out); 192 sys.stdout.flush() 193 sys.stderr.flush() 194 195 return test_failed 200 196 201 197 # run the given list of tests with the given parameters … … 213 209 pool = Pool(jobs) 214 210 try : 215 results = pool.map_async(partial(run_test_instance, generate=generate, dry_run=dry_run, debug=debug), tests ).get(9999 )211 results = pool.map_async(partial(run_test_instance, generate=generate, dry_run=dry_run, debug=debug), tests ).get(99999999) 216 212 except KeyboardInterrupt: 217 213 pool.terminate() -
src/tests/tupleVariadic.c
rb4d65c7 rc0aa336 29 29 } 30 30 31 forall( dtype T, ttype Params | sized(T) | { void ?{}(T *, Params); })31 forall(otype T, ttype Params | { void ?{}(T *, Params); }) 32 32 T * new(Params p); 33 33
Note:
See TracChangeset
for help on using the changeset viewer.