Changes in / [8e4bc30:391c065]
- Files:
-
- 2 deleted
- 18 edited
-
libcfa/src/concurrency/coroutine.cfa (modified) (3 diffs)
-
libcfa/src/concurrency/coroutine.hfa (modified) (3 diffs)
-
libcfa/src/exception.h (modified) (3 diffs)
-
libcfa/src/exception.hfa (modified) (5 diffs)
-
libcfa/src/limits.cfa (modified) (2 diffs)
-
libcfa/src/limits.hfa (modified) (2 diffs)
-
src/Concurrency/Keywords.cc (modified) (6 diffs)
-
src/InitTweak/FixGlobalInit.cc (modified) (1 diff)
-
src/ResolvExpr/ResolveAssertions.cc (modified) (1 diff)
-
src/ResolvExpr/SatisfyAssertions.cpp (modified) (1 diff)
-
src/SymTab/Autogen.cc (modified) (1 diff)
-
src/SynTree/AggregateDecl.cc (modified) (2 diffs)
-
src/SynTree/Declaration.h (modified) (1 diff)
-
src/Virtual/Tables.cc (modified) (5 diffs)
-
src/Virtual/Tables.h (modified) (1 diff)
-
tests/.expect/const-init.txt (deleted)
-
tests/.expect/limits.txt (modified) (1 diff)
-
tests/const-init.cfa (deleted)
-
tests/exceptions/defaults.cfa (modified) (1 diff)
-
tests/limits.cfa (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/coroutine.cfa
r8e4bc30 r391c065 47 47 48 48 //----------------------------------------------------------------------------- 49 FORALL_DATA_INSTANCE(CoroutineCancelled, (dtype coroutine_t), (coroutine_t)) 49 FORALL_DATA_INSTANCE(CoroutineCancelled, 50 (dtype coroutine_t | sized(coroutine_t)), (coroutine_t)) 50 51 51 52 struct __cfaehm_node { … … 58 59 void mark_exception(CoroutineCancelled(T) *) {} 59 60 60 forall(dtype T )61 forall(dtype T | sized(T)) 61 62 void copy(CoroutineCancelled(T) * dst, CoroutineCancelled(T) * src) { 62 63 dst->the_coroutine = src->the_coroutine; … … 76 77 exception_t * except = (exception_t *)(1 + (__cfaehm_node *)desc->cancellation); 77 78 78 // TODO: Remove explitate vtable set once trac#186 is fixed.79 79 CoroutineCancelled(T) except; 80 except.virtual_table = &get_exception_vtable(&except);81 80 except.the_coroutine = &cor; 82 81 except.the_exception = except; -
libcfa/src/concurrency/coroutine.hfa
r8e4bc30 r391c065 22 22 //----------------------------------------------------------------------------- 23 23 // Exception thrown from resume when a coroutine stack is cancelled. 24 FORALL_DATA_EXCEPTION(CoroutineCancelled, (dtype coroutine_t), (coroutine_t)) ( 24 // Should not have to be be sized (see trac #196). 25 FORALL_DATA_EXCEPTION(CoroutineCancelled, 26 (dtype coroutine_t | sized(coroutine_t)), (coroutine_t)) ( 25 27 coroutine_t * the_coroutine; 26 28 exception_t * the_exception; … … 28 30 29 31 forall(dtype T) 32 void mark_exception(CoroutineCancelled(T) *); 33 34 forall(dtype T | sized(T)) 30 35 void copy(CoroutineCancelled(T) * dst, CoroutineCancelled(T) * src); 31 36 … … 37 42 // Anything that implements this trait can be resumed. 38 43 // Anything that is resumed is a coroutine. 39 trait is_coroutine(dtype T 40 | is_resumption_exception(CoroutineCancelled(T) ,41 CoroutineCancelled_vtable(T))) {44 trait is_coroutine(dtype T | sized(T) 45 | is_resumption_exception(CoroutineCancelled(T)) 46 | VTABLE_ASSERTION(CoroutineCancelled, (T))) { 42 47 void main(T & this); 43 48 $coroutine * get_coroutine(T & this); -
libcfa/src/exception.h
r8e4bc30 r391c065 76 76 // implemented in the .c file either so they all have to be inline. 77 77 78 trait is_exception(dtype exceptT , dtype virtualT) {78 trait is_exception(dtype exceptT) { 79 79 /* The first field must be a pointer to a virtual table. 80 * That virtual table must be a decendent of the base exception virtual tab le.80 * That virtual table must be a decendent of the base exception virtual tab$ 81 81 */ 82 v irtualT const & get_exception_vtable(exceptT *);83 // Always returns the virtual table for this type (associated types hack).82 void mark_exception(exceptT *); 83 // This is never used and should be a no-op. 84 84 }; 85 85 86 trait is_termination_exception(dtype exceptT , dtype virtualT | is_exception(exceptT, virtualT)) {86 trait is_termination_exception(dtype exceptT | is_exception(exceptT)) { 87 87 void defaultTerminationHandler(exceptT &); 88 88 }; 89 89 90 trait is_resumption_exception(dtype exceptT , dtype virtualT | is_exception(exceptT, virtualT)) {90 trait is_resumption_exception(dtype exceptT | is_exception(exceptT)) { 91 91 void defaultResumptionHandler(exceptT &); 92 92 }; 93 93 94 forall(dtype exceptT , dtype virtualT | is_termination_exception(exceptT, virtualT))94 forall(dtype exceptT | is_termination_exception(exceptT)) 95 95 static inline void $throw(exceptT & except) { 96 96 __cfaehm_throw_terminate( … … 100 100 } 101 101 102 forall(dtype exceptT , dtype virtualT | is_resumption_exception(exceptT, virtualT))102 forall(dtype exceptT | is_resumption_exception(exceptT)) 103 103 static inline void $throwResume(exceptT & except) { 104 104 __cfaehm_throw_resume( … … 108 108 } 109 109 110 forall(dtype exceptT , dtype virtualT | is_exception(exceptT, virtualT))110 forall(dtype exceptT | is_exception(exceptT)) 111 111 static inline void cancel_stack(exceptT & except) __attribute__((noreturn)) { 112 112 __cfaehm_cancel_stack( (exception_t *)&except ); 113 113 } 114 114 115 forall(dtype exceptT , dtype virtualT | is_exception(exceptT, virtualT))115 forall(dtype exceptT | is_exception(exceptT)) 116 116 static inline void defaultTerminationHandler(exceptT & except) { 117 117 return cancel_stack( except ); 118 118 } 119 119 120 forall(dtype exceptT , dtype virtualT | is_exception(exceptT, virtualT))120 forall(dtype exceptT | is_exception(exceptT)) 121 121 static inline void defaultResumptionHandler(exceptT & except) { 122 122 throw except; -
libcfa/src/exception.hfa
r8e4bc30 r391c065 95 95 // visible anywhere you use the instantiation of the exception is used. 96 96 #define POLY_VTABLE_DECLARATION(exception_name, ...) \ 97 VTABLE_TYPE(exception_name)(__VA_ARGS__) const & get_exception_vtable(exception_name(__VA_ARGS__) *); \97 void mark_exception(exception_name(__VA_ARGS__) *); \ 98 98 extern VTABLE_TYPE(exception_name)(__VA_ARGS__) VTABLE_NAME(exception_name) 99 99 … … 160 160 161 161 #define _FORALL_CTOR0_DECLARATION(exception_name, assertions, parameters) \ 162 forall(_UNPACK assertions | \ 163 is_exception(exception_name parameters, VTABLE_TYPE(exception_name) parameters)) \ 162 forall(_UNPACK assertions | VTABLE_ASSERTION(exception_name, parameters) ) \ 164 163 void ?{}(exception_name parameters & this) 165 164 166 165 #define _FORALL_CTOR0_INSTANCE(exception_name, assertions, parameters) \ 167 166 _FORALL_CTOR0_DECLARATION(exception_name, assertions, parameters) { \ 168 (this).virtual_table = &get_exception_vtable(&this); \167 VTABLE_INIT(this, exception_name); \ 169 168 } 170 169 … … 186 185 #define _VTABLE_DECLARATION(exception_name, parent_name, ...) \ 187 186 struct exception_name; \ 187 void mark_exception(exception_name *); \ 188 188 VTABLE_TYPE(exception_name); \ 189 VTABLE_TYPE(exception_name) const & get_exception_vtable(exception_name *); \190 189 extern VTABLE_TYPE(exception_name) VTABLE_NAME(exception_name); \ 191 190 VTABLE_TYPE(exception_name) { \ … … 198 197 199 198 #define _VTABLE_INSTANCE(exception_name, parent_name, ...) \ 200 VTABLE_TYPE(exception_name) const & get_exception_vtable(exception_name *) { \ 201 return VTABLE_NAME(exception_name); \ 202 } \ 199 void mark_exception(exception_name *) {} \ 203 200 void _GLUE2(exception_name,_copy)(exception_name * this, exception_name * other) { \ 204 201 *this = *other; \ … … 221 218 222 219 #define _POLY_VTABLE_INSTANCE(exception_name, parent_name, ...) \ 223 extern VTABLE_TYPE(exception_name)(__VA_ARGS__) VTABLE_NAME(exception_name); \ 224 VTABLE_TYPE(exception_name)(__VA_ARGS__) const & get_exception_vtable( \ 225 exception_name(__VA_ARGS__) *) { \ 226 return VTABLE_NAME(exception_name); \ 227 } \ 220 void mark_exception(exception_name(__VA_ARGS__) *) {} \ 228 221 void _GLUE2(exception_name,_copy)( \ 229 222 exception_name(__VA_ARGS__) * this, exception_name(__VA_ARGS__) * other) { \ -
libcfa/src/limits.cfa
r8e4bc30 r391c065 10 10 // Created On : Wed Apr 6 18:06:52 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Mar 1 16:22:51 201813 // Update Count : 7 412 // Last Modified On : Wed Sep 30 22:56:32 2020 13 // Update Count : 76 14 14 // 15 15 … … 23 23 // Integral Constants 24 24 25 constsigned char MIN = SCHAR_MIN;26 constunsigned char MIN = 0;27 constshort int MIN = SHRT_MIN;28 constunsigned short int MIN = 0;29 constint MIN = INT_MIN;30 constunsigned int MIN = 0;31 constlong int MIN = LONG_MIN;32 constunsigned long int MIN = 0;33 constlong long int MIN = LLONG_MIN;34 constunsigned long long int MIN = 0;25 signed char MIN = SCHAR_MIN; 26 unsigned char MIN = 0; 27 short int MIN = SHRT_MIN; 28 unsigned short int MIN = 0; 29 int MIN = INT_MIN; 30 unsigned int MIN = 0; 31 long int MIN = LONG_MIN; 32 unsigned long int MIN = 0; 33 long long int MIN = LLONG_MIN; 34 unsigned long long int MIN = 0; 35 35 36 constsigned char MAX = SCHAR_MAX;37 constunsigned char MAX = UCHAR_MAX;38 constshort int MAX = SHRT_MAX;39 constunsigned short int MAX = USHRT_MAX;40 constint MAX = INT_MAX;41 constunsigned int MAX = UINT_MAX;42 constlong int MAX = LONG_MAX;43 constunsigned long int MAX = ULONG_MAX;44 constlong long int MAX = LLONG_MAX;45 constunsigned long long int MAX = ULLONG_MAX;36 signed char MAX = SCHAR_MAX; 37 unsigned char MAX = UCHAR_MAX; 38 short int MAX = SHRT_MAX; 39 unsigned short int MAX = USHRT_MAX; 40 int MAX = INT_MAX; 41 unsigned int MAX = UINT_MAX; 42 long int MAX = LONG_MAX; 43 unsigned long int MAX = ULONG_MAX; 44 long long int MAX = LLONG_MAX; 45 unsigned long long int MAX = ULLONG_MAX; 46 46 47 47 // Floating-Point Constants 48 48 49 constfloat MIN = FLT_MIN;50 constdouble MIN = DBL_MIN;51 constlong double MIN = LDBL_MIN;52 constfloat _Complex MIN = __FLT_MIN__ + __FLT_MIN__ * I;53 constdouble _Complex MIN = DBL_MIN + DBL_MIN * I;54 constlong double _Complex MIN = LDBL_MIN + LDBL_MIN * I;49 float MIN = FLT_MIN; 50 double MIN = DBL_MIN; 51 long double MIN = LDBL_MIN; 52 float _Complex MIN = __FLT_MIN__ + __FLT_MIN__ * I; 53 double _Complex MIN = DBL_MIN + DBL_MIN * I; 54 long double _Complex MIN = LDBL_MIN + LDBL_MIN * I; 55 55 56 constfloat MAX = FLT_MAX;57 constdouble MAX = DBL_MAX;58 constlong double MAX = LDBL_MAX;59 constfloat _Complex MAX = FLT_MAX + FLT_MAX * I;60 constdouble _Complex MAX = DBL_MAX + DBL_MAX * I;61 constlong double _Complex MAX = LDBL_MAX + LDBL_MAX * I;56 float MAX = FLT_MAX; 57 double MAX = DBL_MAX; 58 long double MAX = LDBL_MAX; 59 float _Complex MAX = FLT_MAX + FLT_MAX * I; 60 double _Complex MAX = DBL_MAX + DBL_MAX * I; 61 long double _Complex MAX = LDBL_MAX + LDBL_MAX * I; 62 62 63 const float PI = (float)M_PI;// pi64 const float PI_2 = (float)M_PI_2;// pi / 265 const float PI_4 = (float)M_PI_4;// pi / 466 const float _1_PI = (float)M_1_PI;// 1 / pi67 const float _2_PI = (float)M_2_PI;// 2 / pi68 const float _2_SQRT_PI = (float)M_2_SQRTPI;// 2 / sqrt(pi)63 float PI = (float)M_PI; // pi 64 float PI_2 = (float)M_PI_2; // pi / 2 65 float PI_4 = (float)M_PI_4; // pi / 4 66 float _1_PI = (float)M_1_PI; // 1 / pi 67 float _2_PI = (float)M_2_PI; // 2 / pi 68 float _2_SQRT_PI = (float)M_2_SQRTPI; // 2 / sqrt(pi) 69 69 70 const double PI = M_PI;// pi71 const double PI_2 = M_PI_2;// pi / 272 const double PI_4 = M_PI_4;// pi / 473 const double _1_PI = M_1_PI;// 1 / pi74 const double _2_PI = M_2_PI;// 2 / pi75 const double _2_SQRT_PI = M_2_SQRTPI;// 2 / sqrt(pi)70 double PI = M_PI; // pi 71 double PI_2 = M_PI_2; // pi / 2 72 double PI_4 = M_PI_4; // pi / 4 73 double _1_PI = M_1_PI; // 1 / pi 74 double _2_PI = M_2_PI; // 2 / pi 75 double _2_SQRT_PI = M_2_SQRTPI; // 2 / sqrt(pi) 76 76 77 const long double PI = M_PIl;// pi78 const long double PI_2 = M_PI_2l;// pi / 279 const long double PI_4 = M_PI_4l;// pi / 480 const long double _1_PI = M_1_PIl;// 1 / pi81 const long double _2_PI = M_2_PIl;// 2 / pi82 const long double _2_SQRT_PI = M_2_SQRTPIl;// 2 / sqrt(pi)77 long double PI = M_PIl; // pi 78 long double PI_2 = M_PI_2l; // pi / 2 79 long double PI_4 = M_PI_4l; // pi / 4 80 long double _1_PI = M_1_PIl; // 1 / pi 81 long double _2_PI = M_2_PIl; // 2 / pi 82 long double _2_SQRT_PI = M_2_SQRTPIl; // 2 / sqrt(pi) 83 83 84 const float _Complex PI = (float)M_PI + 0.0_iF;// pi85 const float _Complex PI_2 = (float)M_PI_2 + 0.0_iF;// pi / 286 const float _Complex PI_4 = (float)M_PI_4 + 0.0_iF;// pi / 487 const float _Complex _1_PI = (float)M_1_PI + 0.0_iF;// 1 / pi88 const float _Complex _2_PI = (float)M_2_PI + 0.0_iF;// 2 / pi89 constfloat _Complex _2_SQRT_PI = (float)M_2_SQRTPI + 0.0_iF; // 2 / sqrt(pi)84 float _Complex PI = (float)M_PI + 0.0_iF; // pi 85 float _Complex PI_2 = (float)M_PI_2 + 0.0_iF; // pi / 2 86 float _Complex PI_4 = (float)M_PI_4 + 0.0_iF; // pi / 4 87 float _Complex _1_PI = (float)M_1_PI + 0.0_iF; // 1 / pi 88 float _Complex _2_PI = (float)M_2_PI + 0.0_iF; // 2 / pi 89 float _Complex _2_SQRT_PI = (float)M_2_SQRTPI + 0.0_iF; // 2 / sqrt(pi) 90 90 91 const double _Complex PI = M_PI + 0.0_iD;// pi92 const double _Complex PI_2 = M_PI_2 + 0.0_iD;// pi / 293 const double _Complex PI_4 = M_PI_4 + 0.0_iD;// pi / 494 const double _Complex _1_PI = M_1_PI + 0.0_iD;// 1 / pi95 const double _Complex _2_PI = M_2_PI + 0.0_iD;// 2 / pi96 const double _Complex _2_SQRT_PI = M_2_SQRTPI + 0.0_iD;// 2 / sqrt(pi)91 double _Complex PI = M_PI + 0.0_iD; // pi 92 double _Complex PI_2 = M_PI_2 + 0.0_iD; // pi / 2 93 double _Complex PI_4 = M_PI_4 + 0.0_iD; // pi / 4 94 double _Complex _1_PI = M_1_PI + 0.0_iD; // 1 / pi 95 double _Complex _2_PI = M_2_PI + 0.0_iD; // 2 / pi 96 double _Complex _2_SQRT_PI = M_2_SQRTPI + 0.0_iD; // 2 / sqrt(pi) 97 97 98 const long double _Complex PI = M_PIl + 0.0_iL;// pi99 const long double _Complex PI_2 = M_PI_2l + 0.0_iL;// pi / 2100 const long double _Complex PI_4 = M_PI_4l + 0.0_iL;// pi / 4101 const long double _Complex _1_PI = M_1_PIl + 0.0_iL;// 1 / pi102 const long double _Complex _2_PI = M_2_PIl + 0.0_iL;// 2 / pi103 constlong double _Complex _2_SQRT_PI = M_2_SQRTPIl + 0.0_iL; // 2 / sqrt(pi)98 long double _Complex PI = M_PIl + 0.0_iL; // pi 99 long double _Complex PI_2 = M_PI_2l + 0.0_iL; // pi / 2 100 long double _Complex PI_4 = M_PI_4l + 0.0_iL; // pi / 4 101 long double _Complex _1_PI = M_1_PIl + 0.0_iL; // 1 / pi 102 long double _Complex _2_PI = M_2_PIl + 0.0_iL; // 2 / pi 103 long double _Complex _2_SQRT_PI = M_2_SQRTPIl + 0.0_iL; // 2 / sqrt(pi) 104 104 105 const float E = (float)M_E;// e106 const float LOG2_E = (float)M_LOG2E;// log_2(e)107 const float LOG10_E = (float)M_LOG10E;// log_10(e)108 const float LN_2 = (float)M_LN2;// log_e(2)109 const float LN_10 = (float)M_LN10;// log_e(10)110 const float SQRT_2 = (float)M_SQRT2;// sqrt(2)111 const float _1_SQRT_2 = (float)M_SQRT1_2;// 1 / sqrt(2)105 float E = (float)M_E; // e 106 float LOG2_E = (float)M_LOG2E; // log_2(e) 107 float LOG10_E = (float)M_LOG10E; // log_10(e) 108 float LN_2 = (float)M_LN2; // log_e(2) 109 float LN_10 = (float)M_LN10; // log_e(10) 110 float SQRT_2 = (float)M_SQRT2; // sqrt(2) 111 float _1_SQRT_2 = (float)M_SQRT1_2; // 1 / sqrt(2) 112 112 113 const double E = M_E;// e114 const double LOG2_E = M_LOG2E;// log_2(e)115 const double LOG10_E = M_LOG10E;// log_10(e)116 const double LN_2 = M_LN2;// log_e(2)117 const double LN_10 = M_LN10;// log_e(10)118 const double SQRT_2 = M_SQRT2;// sqrt(2)119 const double _1_SQRT_2 = M_SQRT1_2;// 1 / sqrt(2)113 double E = M_E; // e 114 double LOG2_E = M_LOG2E; // log_2(e) 115 double LOG10_E = M_LOG10E; // log_10(e) 116 double LN_2 = M_LN2; // log_e(2) 117 double LN_10 = M_LN10; // log_e(10) 118 double SQRT_2 = M_SQRT2; // sqrt(2) 119 double _1_SQRT_2 = M_SQRT1_2; // 1 / sqrt(2) 120 120 121 const long double E = M_El;// e122 const long double LOG2_E = M_LOG2El;// log_2(e)123 const long double LOG10_E = M_LOG10El;// log_10(e)124 const long double LN_2 = M_LN2l;// log_e(2)125 const long double LN_10 = M_LN10l;// log_e(10)126 const long double SQRT_2 = M_SQRT2l;// sqrt(2)127 const long double _1_SQRT_2 = M_SQRT1_2l;// 1 / sqrt(2)121 long double E = M_El; // e 122 long double LOG2_E = M_LOG2El; // log_2(e) 123 long double LOG10_E = M_LOG10El; // log_10(e) 124 long double LN_2 = M_LN2l; // log_e(2) 125 long double LN_10 = M_LN10l; // log_e(10) 126 long double SQRT_2 = M_SQRT2l; // sqrt(2) 127 long double _1_SQRT_2 = M_SQRT1_2l; // 1 / sqrt(2) 128 128 129 const float _Complex E = M_E + 0.0_iF;// e130 const float _Complex LOG2_E = M_LOG2E + 0.0_iF;// log_2(e)131 const float _Complex LOG10_E = M_LOG10E + 0.0_iF;// log_10(e)132 const float _Complex LN_2 = M_LN2 + 0.0_iF;// log_e(2)133 const float _Complex LN_10 = M_LN10 + 0.0_iF;// log_e(10)134 const float _Complex SQRT_2 = M_SQRT2 + 0.0_iF;// sqrt(2)135 const float _Complex _1_SQRT_2 = M_SQRT1_2 + 0.0_iF;// 1 / sqrt(2)129 float _Complex E = M_E + 0.0_iF; // e 130 float _Complex LOG2_E = M_LOG2E + 0.0_iF; // log_2(e) 131 float _Complex LOG10_E = M_LOG10E + 0.0_iF; // log_10(e) 132 float _Complex LN_2 = M_LN2 + 0.0_iF; // log_e(2) 133 float _Complex LN_10 = M_LN10 + 0.0_iF; // log_e(10) 134 float _Complex SQRT_2 = M_SQRT2 + 0.0_iF; // sqrt(2) 135 float _Complex _1_SQRT_2 = M_SQRT1_2 + 0.0_iF; // 1 / sqrt(2) 136 136 137 const double _Complex E = M_E + 0.0_iD;// e138 const double _Complex LOG2_E = M_LOG2E + 0.0_iD;// log_2(e)139 const double _Complex LOG10_E = M_LOG10E + 0.0_iD;// log_10(e)140 const double _Complex LN_2 = M_LN2 + 0.0_iD;// log_e(2)141 const double _Complex LN_10 = M_LN10 + 0.0_iD;// log_e(10)142 const double _Complex SQRT_2 = M_SQRT2 + 0.0_iD;// sqrt(2)143 const double _Complex _1_SQRT_2 = M_SQRT1_2 + 0.0_iD;// 1 / sqrt(2)137 double _Complex E = M_E + 0.0_iD; // e 138 double _Complex LOG2_E = M_LOG2E + 0.0_iD; // log_2(e) 139 double _Complex LOG10_E = M_LOG10E + 0.0_iD; // log_10(e) 140 double _Complex LN_2 = M_LN2 + 0.0_iD; // log_e(2) 141 double _Complex LN_10 = M_LN10 + 0.0_iD; // log_e(10) 142 double _Complex SQRT_2 = M_SQRT2 + 0.0_iD; // sqrt(2) 143 double _Complex _1_SQRT_2 = M_SQRT1_2 + 0.0_iD; // 1 / sqrt(2) 144 144 145 const long double _Complex E = M_El + 0.0_iL;// e146 const long double _Complex LOG2_E = M_LOG2El + 0.0_iL;// log_2(e)147 const long double _Complex LOG10_E = M_LOG10El + 0.0_iL;// log_10(e)148 const long double _Complex LN_2 = M_LN2l + 0.0_iL;// log_e(2)149 const long double _Complex LN_10 = M_LN10l + 0.0_iL;// log_e(10)150 const long double _Complex SQRT_2 = M_SQRT2l + 0.0_iL;// sqrt(2)151 const long double _Complex _1_SQRT_2 = M_SQRT1_2l + 0.0_iL;// 1 / sqrt(2)145 long double _Complex E = M_El + 0.0_iL; // e 146 long double _Complex LOG2_E = M_LOG2El + 0.0_iL; // log_2(e) 147 long double _Complex LOG10_E = M_LOG10El + 0.0_iL; // log_10(e) 148 long double _Complex LN_2 = M_LN2l + 0.0_iL; // log_e(2) 149 long double _Complex LN_10 = M_LN10l + 0.0_iL; // log_e(10) 150 long double _Complex SQRT_2 = M_SQRT2l + 0.0_iL; // sqrt(2) 151 long double _Complex _1_SQRT_2 = M_SQRT1_2l + 0.0_iL; // 1 / sqrt(2) 152 152 153 153 // Local Variables: // -
libcfa/src/limits.hfa
r8e4bc30 r391c065 10 10 // Created On : Wed Apr 6 18:06:52 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Mar 1 16:20:54 201813 // Update Count : 1 312 // Last Modified On : Wed Sep 30 22:56:35 2020 13 // Update Count : 15 14 14 // 15 15 … … 18 18 // Integral Constants 19 19 20 extern constsigned char MIN;21 extern constunsigned char MIN;22 extern constshort int MIN;23 extern constunsigned short int MIN;24 extern constint MIN;25 extern constunsigned int MIN;26 extern constlong int MIN;27 extern constunsigned long int MIN;28 extern constlong long int MIN;29 extern constunsigned long long int MIN;20 extern signed char MIN; 21 extern unsigned char MIN; 22 extern short int MIN; 23 extern unsigned short int MIN; 24 extern int MIN; 25 extern unsigned int MIN; 26 extern long int MIN; 27 extern unsigned long int MIN; 28 extern long long int MIN; 29 extern unsigned long long int MIN; 30 30 31 extern constsigned char MAX;32 extern constunsigned char MAX;33 extern constshort int MAX;34 extern constunsigned short int MAX;35 extern constint MAX;36 extern constunsigned int MAX;37 extern constlong int MAX;38 extern constunsigned long int MAX;39 extern constlong long int MAX;40 extern constunsigned long long int MAX;31 extern signed char MAX; 32 extern unsigned char MAX; 33 extern short int MAX; 34 extern unsigned short int MAX; 35 extern int MAX; 36 extern unsigned int MAX; 37 extern long int MAX; 38 extern unsigned long int MAX; 39 extern long long int MAX; 40 extern unsigned long long int MAX; 41 41 42 42 // Floating-Point Constants 43 43 44 extern constfloat MIN;45 extern constdouble MIN;46 extern constlong double MIN;47 extern constfloat _Complex MIN;48 extern constdouble _Complex MIN;49 extern constlong double _Complex MIN;44 extern float MIN; 45 extern double MIN; 46 extern long double MIN; 47 extern float _Complex MIN; 48 extern double _Complex MIN; 49 extern long double _Complex MIN; 50 50 51 extern constfloat MAX;52 extern constdouble MAX;53 extern constlong double MAX;54 extern constfloat _Complex MAX;55 extern constdouble _Complex MAX;56 extern constlong double _Complex MAX;51 extern float MAX; 52 extern double MAX; 53 extern long double MAX; 54 extern float _Complex MAX; 55 extern double _Complex MAX; 56 extern long double _Complex MAX; 57 57 58 extern const float PI;// pi59 extern const float PI_2;// pi / 260 extern const float PI_4;// pi / 461 extern const float _1_PI;// 1 / pi62 extern const float _2_PI;// 2 / pi63 extern const float _2_SQRT_PI;// 2 / sqrt(pi)58 extern float PI; // pi 59 extern float PI_2; // pi / 2 60 extern float PI_4; // pi / 4 61 extern float _1_PI; // 1 / pi 62 extern float _2_PI; // 2 / pi 63 extern float _2_SQRT_PI; // 2 / sqrt(pi) 64 64 65 extern const double PI;// pi66 extern const double PI_2;// pi / 267 extern const double PI_4;// pi / 468 extern const double _1_PI;// 1 / pi69 extern const double _2_PI;// 2 / pi70 extern const double _2_SQRT_PI;// 2 / sqrt(pi)65 extern double PI; // pi 66 extern double PI_2; // pi / 2 67 extern double PI_4; // pi / 4 68 extern double _1_PI; // 1 / pi 69 extern double _2_PI; // 2 / pi 70 extern double _2_SQRT_PI; // 2 / sqrt(pi) 71 71 72 extern const long double PI;// pi73 extern const long double PI_2;// pi / 274 extern const long double PI_4;// pi / 475 extern const long double _1_PI;// 1 / pi76 extern const long double _2_PI;// 2 / pi77 extern const long double _2_SQRT_PI;// 2 / sqrt(pi)72 extern long double PI; // pi 73 extern long double PI_2; // pi / 2 74 extern long double PI_4; // pi / 4 75 extern long double _1_PI; // 1 / pi 76 extern long double _2_PI; // 2 / pi 77 extern long double _2_SQRT_PI; // 2 / sqrt(pi) 78 78 79 extern const float _Complex PI;// pi80 extern const float _Complex PI_2;// pi / 281 extern const float _Complex PI_4;// pi / 482 extern const float _Complex _1_PI;// 1 / pi83 extern const float _Complex _2_PI;// 2 / pi84 extern const float _Complex _2_SQRT_PI;// 2 / sqrt(pi)79 extern float _Complex PI; // pi 80 extern float _Complex PI_2; // pi / 2 81 extern float _Complex PI_4; // pi / 4 82 extern float _Complex _1_PI; // 1 / pi 83 extern float _Complex _2_PI; // 2 / pi 84 extern float _Complex _2_SQRT_PI; // 2 / sqrt(pi) 85 85 86 extern const double _Complex PI;// pi87 extern const double _Complex PI_2;// pi / 288 extern const double _Complex PI_4;// pi / 489 extern const double _Complex _1_PI;// 1 / pi90 extern const double _Complex _2_PI;// 2 / pi91 extern const double _Complex _2_SQRT_PI;// 2 / sqrt(pi)86 extern double _Complex PI; // pi 87 extern double _Complex PI_2; // pi / 2 88 extern double _Complex PI_4; // pi / 4 89 extern double _Complex _1_PI; // 1 / pi 90 extern double _Complex _2_PI; // 2 / pi 91 extern double _Complex _2_SQRT_PI; // 2 / sqrt(pi) 92 92 93 extern const long double _Complex PI;// pi94 extern const long double _Complex PI_2;// pi / 295 extern const long double _Complex PI_4;// pi / 496 extern const long double _Complex _1_PI;// 1 / pi97 extern const long double _Complex _2_PI;// 2 / pi98 extern const long double _Complex _2_SQRT_PI;// 2 / sqrt(pi)93 extern long double _Complex PI; // pi 94 extern long double _Complex PI_2; // pi / 2 95 extern long double _Complex PI_4; // pi / 4 96 extern long double _Complex _1_PI; // 1 / pi 97 extern long double _Complex _2_PI; // 2 / pi 98 extern long double _Complex _2_SQRT_PI; // 2 / sqrt(pi) 99 99 100 extern const float E;// e101 extern const float LOG2_E;// log_2(e)102 extern const float LOG10_E;// log_10(e)103 extern const float LN_2;// log_e(2)104 extern const float LN_10;// log_e(10)105 extern const float SQRT_2;// sqrt(2)106 extern const float _1_SQRT_2;// 1 / sqrt(2)100 extern float E; // e 101 extern float LOG2_E; // log_2(e) 102 extern float LOG10_E; // log_10(e) 103 extern float LN_2; // log_e(2) 104 extern float LN_10; // log_e(10) 105 extern float SQRT_2; // sqrt(2) 106 extern float _1_SQRT_2; // 1 / sqrt(2) 107 107 108 extern const double E;// e109 extern const double LOG2_E;// log_2(e)110 extern const double LOG10_E;// log_10(e)111 extern const double LN_2;// log_e(2)112 extern const double LN_10;// log_e(10)113 extern const double SQRT_2;// sqrt(2)114 extern const double _1_SQRT_2;// 1 / sqrt(2)108 extern double E; // e 109 extern double LOG2_E; // log_2(e) 110 extern double LOG10_E; // log_10(e) 111 extern double LN_2; // log_e(2) 112 extern double LN_10; // log_e(10) 113 extern double SQRT_2; // sqrt(2) 114 extern double _1_SQRT_2; // 1 / sqrt(2) 115 115 116 extern const long double E;// e117 extern const long double LOG2_E;// log_2(e)118 extern const long double LOG10_E;// log_10(e)119 extern const long double LN_2;// log_e(2)120 extern const long double LN_10;// log_e(10)121 extern const long double SQRT_2;// sqrt(2)122 extern const long double _1_SQRT_2;// 1/sqrt(2)116 extern long double E; // e 117 extern long double LOG2_E; // log_2(e) 118 extern long double LOG10_E; // log_10(e) 119 extern long double LN_2; // log_e(2) 120 extern long double LN_10; // log_e(10) 121 extern long double SQRT_2; // sqrt(2) 122 extern long double _1_SQRT_2; // 1/sqrt(2) 123 123 124 extern const float _Complex E;// e125 extern const float _Complex LOG2_E;// log_2(e)126 extern const float _Complex LOG10_E;// log_10(e)127 extern const float _Complex LN_2;// log_e(2)128 extern const float _Complex LN_10;// log_e(10)129 extern const float _Complex SQRT_2;// sqrt(2)130 extern const float _Complex _1_SQRT_2;// 1 / sqrt(2)124 extern float _Complex E; // e 125 extern float _Complex LOG2_E; // log_2(e) 126 extern float _Complex LOG10_E; // log_10(e) 127 extern float _Complex LN_2; // log_e(2) 128 extern float _Complex LN_10; // log_e(10) 129 extern float _Complex SQRT_2; // sqrt(2) 130 extern float _Complex _1_SQRT_2; // 1 / sqrt(2) 131 131 132 extern const double _Complex E;// e133 extern const double _Complex LOG2_E;// log_2(e)134 extern const double _Complex LOG10_E;// log_10(e)135 extern const double _Complex LN_2;// log_e(2)136 extern const double _Complex LN_10;// log_e(10)137 extern const double _Complex SQRT_2;// sqrt(2)138 extern const double _Complex _1_SQRT_2;// 1 / sqrt(2)132 extern double _Complex E; // e 133 extern double _Complex LOG2_E; // log_2(e) 134 extern double _Complex LOG10_E; // log_10(e) 135 extern double _Complex LN_2; // log_e(2) 136 extern double _Complex LN_10; // log_e(10) 137 extern double _Complex SQRT_2; // sqrt(2) 138 extern double _Complex _1_SQRT_2; // 1 / sqrt(2) 139 139 140 extern const long double _Complex E;// e141 extern const long double _Complex LOG2_E;// log_2(e)142 extern const long double _Complex LOG10_E;// log_10(e)143 extern const long double _Complex LN_2;// log_e(2)144 extern const long double _Complex LN_10;// log_e(10)145 extern const long double _Complex SQRT_2;// sqrt(2)146 extern const long double _Complex _1_SQRT_2;// 1 / sqrt(2)140 extern long double _Complex E; // e 141 extern long double _Complex LOG2_E; // log_2(e) 142 extern long double _Complex LOG10_E; // log_10(e) 143 extern long double _Complex LN_2; // log_e(2) 144 extern long double _Complex LN_10; // log_e(10) 145 extern long double _Complex SQRT_2; // sqrt(2) 146 extern long double _Complex _1_SQRT_2; // 1 / sqrt(2) 147 147 148 148 // Local Variables: // -
src/Concurrency/Keywords.cc
r8e4bc30 r391c065 66 66 bool needs_main, AggregateDecl::Aggregate cast_target ) : 67 67 type_name( type_name ), field_name( field_name ), getter_name( getter_name ), 68 context_error( context_error ), exception_name( exception_name ), 69 vtable_name( getVTableName( exception_name ) ), 68 context_error( context_error ), vtable_name( getVTableName( exception_name ) ), 70 69 needs_main( needs_main ), cast_target( cast_target ) {} 71 70 … … 90 89 const std::string getter_name; 91 90 const std::string context_error; 92 const std::string exception_name;93 91 const std::string vtable_name; 94 92 bool needs_main; … … 97 95 StructDecl * type_decl = nullptr; 98 96 FunctionDecl * dtor_decl = nullptr; 99 StructDecl * except_decl = nullptr;100 97 StructDecl * vtable_decl = nullptr; 101 98 }; … … 379 376 else if ( is_target(decl) ) { 380 377 handle( decl ); 381 }382 else if ( !except_decl && exception_name == decl->name && decl->body ) {383 except_decl = decl;384 378 } 385 379 else if ( !vtable_decl && vtable_name == decl->name && decl->body ) { … … 404 398 assert( struct_type ); 405 399 406 std::list< Expression * > poly_args = { new TypeExpr( struct_type->clone() ) }; 407 ObjectDecl * vtable_object = Virtual::makeVtableInstance( 408 vtable_decl->makeInst( poly_args ), struct_type, nullptr ); 409 declsToAddAfter.push_back( vtable_object ); 410 declsToAddAfter.push_back( Virtual::makeGetExceptionFunction( 411 vtable_object, except_decl->makeInst( std::move( poly_args ) ) 412 ) ); 400 declsToAddAfter.push_back( Virtual::makeVtableInstance( vtable_decl, { 401 new TypeExpr( struct_type->clone() ), 402 }, struct_type, nullptr ) ); 413 403 } 414 404 … … 444 434 void ConcurrentSueKeyword::addVtableForward( StructDecl * decl ) { 445 435 if ( vtable_decl ) { 446 std::list< Expression * > poly_args ={436 declsToAddBefore.push_back( Virtual::makeVtableForward( vtable_decl, { 447 437 new TypeExpr( new StructInstType( noQualifiers, decl ) ), 448 }; 449 declsToAddBefore.push_back( Virtual::makeGetExceptionForward( 450 vtable_decl->makeInst( poly_args ), 451 except_decl->makeInst( poly_args ) 452 ) ); 453 declsToAddBefore.push_back( Virtual::makeVtableForward( 454 vtable_decl->makeInst( move( poly_args ) ) ) ); 438 } ) ); 455 439 // Its only an error if we want a vtable and don't have one. 456 440 } else if ( ! vtable_name.empty() ) { -
src/InitTweak/FixGlobalInit.cc
r8e4bc30 r391c065 112 112 } // if 113 113 if ( Statement * ctor = ctorInit->ctor ) { 114 // Translation 1: Add this attribute on the global declaration:115 // __attribute__((section (".data#")))116 // which makes gcc put the global in the data section,117 // so that the global is writeable (via a const cast) in the init function.118 // The trailing # is an injected assembly comment, to suppress the "a" in119 // .section .data,"a"120 // .section .data#,"a"121 // to avoid assembler warning "ignoring changed section attributes for .data"122 Type *strLitT = new PointerType( Type::Qualifiers( ),123 new BasicType( Type::Qualifiers( ), BasicType::Char ) );124 std::list< Expression * > attr_params;125 attr_params.push_back(126 new ConstantExpr( Constant( strLitT, "\".data#\"", std::nullopt ) ) );127 objDecl->attributes.push_back(new Attribute("section", attr_params));128 // Translation 2: Move the initizliation off the global declaration,129 // into the startup function.130 114 initStatements.push_back( ctor ); 131 115 objDecl->init = nullptr; -
src/ResolvExpr/ResolveAssertions.cc
r8e4bc30 r391c065 277 277 const DeclarationWithType * candidate = cdata.id; 278 278 279 // ignore deleted candidates. 280 // NOTE: this behavior is different from main resolver. 281 // further investigations might be needed to determine 282 // if we should implement the same rule here 283 // (i.e. error if unique best match is deleted) 284 if (candidate->isDeleted) continue; 285 286 // build independent unification context. for candidate 279 // build independent unification context for candidate 287 280 AssertionSet have, newNeed; 288 281 TypeEnvironment newEnv{ resn.alt.env }; -
src/ResolvExpr/SatisfyAssertions.cpp
r8e4bc30 r391c065 170 170 const ast::DeclWithType * candidate = cdata.id; 171 171 172 // ignore deleted candidates.173 // NOTE: this behavior is different from main resolver.174 // further investigations might be needed to determine175 // if we should implement the same rule here176 // (i.e. error if unique best match is deleted)177 if (candidate->isDeleted) continue;178 179 172 // build independent unification context for candidate 180 173 ast::AssertionSet have, newNeed; -
src/SymTab/Autogen.cc
r8e4bc30 r391c065 339 339 } catch ( SemanticErrorException & ) { 340 340 // okay if decl does not resolve - that means the function should not be generated 341 // delete dcl; 342 delete dcl->statements; 343 dcl->statements = nullptr; 344 dcl->isDeleted = true; 345 definitions.push_back( dcl ); 346 indexer.addId( dcl ); 341 delete dcl; 347 342 } 348 343 } -
src/SynTree/AggregateDecl.cc
r8e4bc30 r391c065 21 21 #include "Common/utility.h" // for printAll, cloneAll, deleteAll 22 22 #include "Declaration.h" // for AggregateDecl, TypeDecl, Declaration 23 #include "Expression.h"24 23 #include "Initializer.h" 25 24 #include "LinkageSpec.h" // for Spec, linkageName, Cforall … … 89 88 const char * StructDecl::typeString() const { return aggrString( kind ); } 90 89 91 StructInstType * StructDecl::makeInst( std::list< Expression * > const & new_parameters ) {92 std::list< Expression * > copy_parameters;93 cloneAll( new_parameters, copy_parameters );94 return makeInst( move( copy( copy_parameters ) ) );95 }96 97 StructInstType * StructDecl::makeInst( std::list< Expression * > && new_parameters ) {98 assert( parameters.size() == new_parameters.size() );99 StructInstType * type = new StructInstType( noQualifiers, this );100 type->parameters = std::move( new_parameters );101 return type;102 }103 104 90 const char * UnionDecl::typeString() const { return aggrString( Union ); } 105 91 -
src/SynTree/Declaration.h
r8e4bc30 r391c065 306 306 bool is_thread () { return kind == Thread ; } 307 307 308 // Make a type instance of this declaration.309 StructInstType * makeInst( std::list< Expression * > const & parameters );310 StructInstType * makeInst( std::list< Expression * > && parameters );311 312 308 virtual StructDecl * clone() const override { return new StructDecl( *this ); } 313 309 virtual void accept( Visitor & v ) override { v.visit( this ); } -
src/Virtual/Tables.cc
r8e4bc30 r391c065 14 14 // 15 15 16 #include <SynTree/Attribute.h>17 16 #include <SynTree/Declaration.h> 18 17 #include <SynTree/Expression.h> 19 #include <SynTree/Statement.h>20 18 #include <SynTree/Type.h> 21 19 … … 40 38 } 41 39 40 // Fuse base polymorphic declaration and forall arguments into a new type. 41 static StructInstType * vtableInstType( 42 StructDecl * polyDecl, std::list< Expression * > && parameters ) { 43 assert( parameters.size() == polyDecl->parameters.size() ); 44 StructInstType * type = new StructInstType( 45 Type::Qualifiers( /* Type::Const */ ), polyDecl ); 46 type->parameters = std::move( parameters ); 47 return type; 48 } 49 42 50 static ObjectDecl * makeVtableDeclaration( 43 51 StructInstType * type, Initializer * init ) { … … 58 66 59 67 ObjectDecl * makeVtableForward( StructInstType * type ) { 60 assert( type );61 68 return makeVtableDeclaration( type, nullptr ); 62 69 } 63 70 71 ObjectDecl * makeVtableForward( 72 StructDecl * polyDecl, std::list< Expression * > && parameters ) { 73 return makeVtableForward( vtableInstType( polyDecl, std::move( parameters ) ) ); 74 } 75 64 76 ObjectDecl * makeVtableInstance( 65 StructInstType * vtableType, Type * objectType, Initializer * init ) { 66 assert( vtableType ); 67 assert( objectType ); 77 StructInstType * vtableType, Type * vobject_type, Initializer * init ) { 68 78 StructDecl * vtableStruct = vtableType->baseStruct; 69 79 // Build the initialization … … 82 92 new SingleInit( new AddressExpr( new NameExpr( parentInstance ) ) ) ); 83 93 } else if ( std::string( "size" ) == field->name ) { 84 inits.push_back( new SingleInit( new SizeofExpr( objectType->clone() ) ) );94 inits.push_back( new SingleInit( new SizeofExpr( vobject_type->clone() ) ) ); 85 95 } else if ( std::string( "align" ) == field->name ) { 86 inits.push_back( new SingleInit( new AlignofExpr( objectType->clone() ) ) );96 inits.push_back( new SingleInit( new AlignofExpr( vobject_type->clone() ) ) ); 87 97 } else { 88 98 inits.push_back( new SingleInit( new NameExpr( field->name ) ) ); … … 98 108 } 99 109 100 namespace { 101 std::string const functionName = "get_exception_vtable"; 102 } 103 104 FunctionDecl * makeGetExceptionForward( 105 Type * vtableType, Type * exceptType ) { 106 assert( vtableType ); 107 assert( exceptType ); 108 FunctionType * type = new FunctionType( noQualifiers, false ); 109 vtableType->tq.is_const = true; 110 type->returnVals.push_back( new ObjectDecl( 111 "_retvalue", 112 noStorageClasses, 113 LinkageSpec::Cforall, 114 nullptr, 115 new ReferenceType( noQualifiers, vtableType ), 116 nullptr, 117 { new Attribute("unused") } 118 ) ); 119 type->parameters.push_back( new ObjectDecl( 120 "__unused", 121 noStorageClasses, 122 LinkageSpec::Cforall, 123 nullptr, 124 new PointerType( noQualifiers, exceptType ), 125 nullptr, 126 { new Attribute("unused") } 127 ) ); 128 return new FunctionDecl( 129 functionName, 130 noStorageClasses, 131 LinkageSpec::Cforall, 132 type, 133 nullptr 134 ); 135 } 136 137 FunctionDecl * makeGetExceptionFunction( 138 ObjectDecl * vtableInstance, Type * exceptType ) { 139 assert( vtableInstance ); 140 assert( exceptType ); 141 FunctionDecl * func = makeGetExceptionForward( 142 vtableInstance->type->clone(), exceptType ); 143 func->statements = new CompoundStmt( { 144 new ReturnStmt( new VariableExpr( vtableInstance ) ), 145 } ); 146 return func; 110 ObjectDecl * makeVtableInstance( 111 StructDecl * polyDecl, std::list< Expression * > && parameters, 112 Type * vobject, Initializer * init ) { 113 return makeVtableInstance( 114 vtableInstType( polyDecl, std::move( parameters ) ), vobject, init ); 147 115 } 148 116 -
src/Virtual/Tables.h
r8e4bc30 r391c065 27 27 bool isVTableInstanceName( std::string const & name ); 28 28 29 ObjectDecl * makeVtableForward( StructInstType * vtableType ); 30 /* Create a forward declaration of a vtable of the given type. 31 * vtableType node is consumed. 29 /// Converts exceptions into regular structures. 30 //void ( std::list< Declaration * > & translationUnit ); 31 32 ObjectDecl * makeVtableForward( StructInstType * ); 33 ObjectDecl * makeVtableForward( StructDecl *, std::list< Expression * > && ); 34 /* Create a forward definition of a vtable of the given type. 35 * 36 * Instead of the virtual table type you may provide the declaration and all 37 * the forall parameters. 32 38 */ 33 39 34 ObjectDecl * makeVtableInstance( StructInstType * vtableType, Type * objectType, 35 Initializer * init = nullptr ); 40 ObjectDecl * makeVtableInstance( StructInstType *, Type *, Initializer * ); 41 ObjectDecl * makeVtableInstance( 42 StructDecl *, std::list< Expression * > &&, Type *, Initializer * ); 36 43 /* Create an initialized definition of a vtable. 37 * vtableType and init (if provided) nodes are consumed. 38 */ 39 40 // Some special code for how exceptions interact with virtual tables. 41 FunctionDecl * makeGetExceptionForward( Type * vtableType, Type * exceptType ); 42 /* Create a forward declaration of the exception virtual function 43 * linking the vtableType to the exceptType. Both nodes are consumed. 44 */ 45 46 FunctionDecl * makeGetExceptionFunction( 47 ObjectDecl * vtableInstance, Type * exceptType ); 48 /* Create the definition of the exception virtual function. 49 * exceptType node is consumed. 44 * 45 * The parameters are the virtual table type (or the base declaration and the 46 * forall parameters), the object type and optionally an initializer. 47 * 48 * Instead of the virtual table type you may provide the declaration and all 49 * the forall parameters. 50 50 */ 51 51 -
tests/.expect/limits.txt
r8e4bc30 r391c065 1 1 limits.cfa: In function '_X4mainFi_iPPKc__1': 2 limits.cfa:15 4:9: note: #pragma message: Compiled2 limits.cfa:151:9: note: #pragma message: Compiled -
tests/exceptions/defaults.cfa
r8e4bc30 r391c065 55 55 56 56 void unhandled_test(void) { 57 forall(dtype T , dtype V | is_exception(T, V))57 forall(dtype T | is_exception(T)) 58 58 void defaultTerminationHandler(T &) { 59 59 throw (unhandled_exception){}; -
tests/limits.cfa
r8e4bc30 r391c065 13 13 // Update Count : 10 14 14 // 15 16 // Note: For testing the ability to load the constants defined in libcfa/src/limits.cfa,17 // see discussion in test const-init.18 15 19 16 #include <limits.hfa>
Note:
See TracChangeset
for help on using the changeset viewer.