Changeset f1c1339
- Timestamp:
- Mar 19, 2019, 1:01:54 PM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 2e041e27, be3416d
- Parents:
- 9cb4fc8 (diff), 0c81320 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 4 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/prelude/prelude-gen.cc
r9cb4fc8 rf1c1339 10 10 // Created On : Sat Feb 16 08:44:58 2019 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Mar 8 16:00:22201913 // Update Count : 2 612 // Last Modified On : Tue Mar 19 08:19:35 2019 13 // Update Count : 28 14 14 // 15 15 … … 208 208 cout << "void ?{} (" << type << " &);" << endl; 209 209 cout << "void ?{} (" << type << " &, " << type << ");" << endl; 210 cout << type << " 210 cout << type << " ?=? (" << type << " &, " << type << ")"; 211 211 if ( do_volatile ) { 212 cout << ", 212 cout << ", ?=?(volatile " << type << " &, " << type << ")"; 213 213 } 214 214 cout << ";" << endl; … … 217 217 218 218 otype("zero_t"); 219 cout << endl; 219 220 otype("one_t"); 221 cout << endl; 220 222 otype("_Bool", true); 221 223 cout << endl; … … 225 227 cout << "void ?{}(" << type.name << " &, " << type.name << ");" << endl; 226 228 cout << "void ?{}(" << type.name << " &, zero_t);" << endl; 229 cout << "void ?{}(" << type.name << " &, one_t);" << endl; 227 230 cout << "void ^?{}(" << type.name << " &);" << endl; 228 231 cout << endl; -
libcfa/src/concurrency/coroutine.hfa
r9cb4fc8 rf1c1339 46 46 //----------------------------------------------------------------------------- 47 47 // Public coroutine API 48 static inline void suspend( );48 static inline void suspend(void); 49 49 50 50 forall(dtype T | is_coroutine(T)) … … 71 71 72 72 // Suspend implementation inlined for performance 73 static inline void suspend( ) {73 static inline void suspend(void) { 74 74 // optimization : read TLS once and reuse it 75 75 // Safety note: this is preemption safe since if -
src/Parser/lex.ll
r9cb4fc8 rf1c1339 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Sun Mar 10 09:13:09201913 * Update Count : 70 612 * Last Modified On : Wed Mar 13 14:54:30 2019 13 * Update Count : 707 14 14 */ 15 15 … … 226 226 char { KEYWORD_RETURN(CHAR); } 227 227 choose { KEYWORD_RETURN(CHOOSE); } // CFA 228 coerce { KEYWORD_RETURN(COERCE); } // CFA 228 229 _Complex { KEYWORD_RETURN(COMPLEX); } // C99 229 230 __complex { KEYWORD_RETURN(COMPLEX); } // GCC -
src/Parser/parser.yy
r9cb4fc8 rf1c1339 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Feb 21 08:45:07201913 // Update Count : 42 3212 // Last Modified On : Fri Mar 15 14:25:43 2019 13 // Update Count : 4248 14 14 // 15 15 … … 265 265 %token RESTRICT // C99 266 266 %token ATOMIC // C11 267 %token FORALL MUTEX VIRTUAL 267 %token FORALL MUTEX VIRTUAL COERCE // CFA 268 268 %token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED 269 269 %token BOOL COMPLEX IMAGINARY // C99 … … 795 795 | '(' type_no_function ')' cast_expression 796 796 { $$ = new ExpressionNode( build_cast( $2, $4 ) ); } 797 // keyword cast cannot be grouped because of reduction in aggregate_key 797 798 | '(' COROUTINE '&' ')' cast_expression // CFA 798 799 { $$ = new ExpressionNode( build_keyword_cast( KeywordCastExpr::Coroutine, $5 ) ); } … … 806 807 | '(' VIRTUAL type_no_function ')' cast_expression // CFA 807 808 { $$ = new ExpressionNode( new VirtualCastExpr( maybeMoveBuild< Expression >( $5 ), maybeMoveBuildType( $3 ) ) ); } 809 | '(' RETURN type_no_function ')' cast_expression // CFA 810 { SemanticError( yylloc, "Return cast is currently unimplemented." ); $$ = nullptr; } 811 | '(' COERCE type_no_function ')' cast_expression // CFA 812 { SemanticError( yylloc, "Coerce cast is currently unimplemented." ); $$ = nullptr; } 813 | '(' qualifier_cast_list ')' cast_expression // CFA 814 { SemanticError( yylloc, "Qualifier cast is currently unimplemented." ); $$ = nullptr; } 808 815 // | '(' type_no_function ')' tuple 809 816 // { $$ = new ExpressionNode( build_cast( $2, $4 ) ); } 817 ; 818 819 qualifier_cast_list: 820 cast_modifier type_qualifier_name 821 | cast_modifier MUTEX 822 | qualifier_cast_list cast_modifier type_qualifier_name 823 | qualifier_cast_list cast_modifier MUTEX 824 ; 825 826 cast_modifier: 827 '-' 828 | '+' 810 829 ; 811 830 -
tests/forall.cfa
r9cb4fc8 rf1c1339 10 10 // Created On : Wed May 9 08:48:15 2018 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Nov 6 17:53:43 201813 // Update Count : 3 112 // Last Modified On : Tue Mar 19 08:29:38 2019 13 // Update Count : 32 14 14 // 15 15 … … 53 53 right = temp; 54 54 } 55 56 void ?{}( int & c, zero_t ) { c = 0; } // not in prelude57 55 58 56 trait sumable( otype T ) { -
tests/rational.cfa
r9cb4fc8 rf1c1339 10 10 // Created On : Mon Mar 28 08:43:12 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Dec 4 21:46:42 201813 // Update Count : 6912 // Last Modified On : Tue Mar 19 08:30:28 2019 13 // Update Count : 73 14 14 // 15 15 … … 19 19 #include <fstream.hfa> 20 20 21 // UNNECESSARY, FIX ME22 void ?{}( int & this ) { this = 0; }23 void ?{}( int & this, zero_t ) { this = 0; }24 void ?{}( int & this, one_t ) { this = 1; }25 21 double convert( int i ) { return (double)i; } 26 22 int convert( double d ) { return (int)d; }
Note: See TracChangeset
for help on using the changeset viewer.