- Timestamp:
- Nov 27, 2017, 10:01:56 PM (7 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 8eb348a
- Parents:
- c8771e9
- Location:
- src
- Files:
-
- 1 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/ParseNode.h
rc8771e9 r481115f 10 10 // Created On : Sat May 16 13:28:16 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Sep 23 18:11:22201713 // Update Count : 82 112 // Last Modified On : Mon Nov 27 17:33:35 2017 13 // Update Count : 824 14 14 // 15 15 … … 292 292 DeclarationNode * set_extension( bool exten ) { extension = exten; return this; } 293 293 public: 294 DeclarationNode * get_last() { return (DeclarationNode *)ParseNode::get_last(); } 295 294 296 struct Variable_t { 295 297 // const std::string * name; -
src/Parser/parser.yy
rc8771e9 r481115f 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Nov 26 11:36:36201713 // Update Count : 29 6912 // Last Modified On : Mon Nov 27 17:23:35 2017 13 // Update Count : 2992 14 14 // 15 15 … … 1364 1364 $$ = $3->addQualifiers( $1 )->addQualifiers( $2 ); 1365 1365 } 1366 | cfa_function_declaration pop ',' push identifier_or_type_name 1367 { 1368 typedefTable.addToEnclosingScope( *$5, TypedefTable::ID ); 1369 $$ = $1->appendList( $1->cloneType( $5 ) ); 1366 | cfa_function_declaration pop ',' push identifier_or_type_name '(' push cfa_parameter_type_list_opt pop ')' 1367 { 1368 // Append the return type at the start (left-hand-side) to each identifier in the list. 1369 DeclarationNode * ret = new DeclarationNode; 1370 ret->type = maybeClone( $1->type->base ); 1371 $$ = $1->appendList( DeclarationNode::newFunction( $5, ret, $8, nullptr, true ) ); 1370 1372 } 1371 1373 ; … … 2416 2418 typedefTable.addToEnclosingScope( TypedefTable::ID ); 2417 2419 typedefTable.leaveScope(); 2418 $$ = $1->addFunctionBody( $3 ); 2420 // Add the function body to the last identifier in the function definition list, i.e., foo3: 2421 // [const double] foo1(), foo2( int ), foo3( double ) { return 3.0; } 2422 $1->get_last()->addFunctionBody( $3 ); 2423 $$ = $1; 2419 2424 } 2420 2425 | declaration_specifier function_declarator with_clause_opt compound_statement -
src/tests/Makefile.am
rc8771e9 r481115f 11 11 ## Created On : Sun May 31 09:08:15 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Tue Oct 10 14:04:40201714 ## Update Count : 4 713 ## Last Modified On : Mon Nov 27 21:34:33 2017 14 ## Update Count : 48 15 15 ############################################################################### 16 16 … … 118 118 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@} 119 119 120 functions: functions.c @CFA_BINDIR@/@CFA_NAME@ 121 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@} 122 120 123 KRfunctions : KRfunctions.c @CFA_BINDIR@/@CFA_NAME@ 121 124 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@} -
src/tests/Makefile.in
rc8771e9 r481115f 871 871 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@} 872 872 873 functions: functions.c @CFA_BINDIR@/@CFA_NAME@ 874 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@} 875 873 876 KRfunctions : KRfunctions.c @CFA_BINDIR@/@CFA_NAME@ 874 877 ${CC} ${AM_CFLAGS} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@} -
src/tests/functions.c
rc8771e9 r481115f 10 10 // Created On : Wed Aug 17 08:39:58 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Aug 17 08:40:52 201613 // Update Count : 1 12 // Last Modified On : Mon Nov 27 18:08:54 2017 13 // Update Count : 11 14 14 // 15 15 … … 66 66 // Cforall extensions 67 67 68 [] f( );68 // [] f( ); 69 69 [int] f( ); 70 [] f(int);70 // [] f(int); 71 71 [int] f(int); 72 [] f( ) {}72 // [] f( ) {} 73 73 [int] f( ) {} 74 [] f(int) {}74 // [] f(int) {} 75 75 [int] f(int) {} 76 76 77 77 [int x] f( ); 78 [] f(int x);79 [int x] f(int x);80 [int x] f( ) {}81 [] f(int x) {}82 [int x] f(int x) {}78 // [] f(int x); 79 //[int x] f(int x); 80 //[int x] f( ) {} 81 // [] f(int x) {} 82 //[int x] f(int x) {} 83 83 84 84 [int, int x] f( ); 85 [] f(int, int x);85 // [] f(int, int x); 86 86 [int, int x] f(int, int x); 87 87 [int, int x] f( ) {} 88 [] f(int, int x) {}88 // [] f(int, int x) {} 89 89 [int, int x] f(int, int x) {} 90 90 91 91 [int, int x, int] f( ); 92 [] f(int, int x, int);92 // [] f(int, int x, int); 93 93 [int, int x, int] f(int, int x, int); 94 94 [int, int x, int] f( ) {} 95 [] f(int, int x, int) {}95 // [] f(int, int x, int) {} 96 96 [int, int x, int] f(int, int x, int) {} 97 97 98 98 [int, int x, * int y] f( ); 99 [] f(int, int x, * int y);99 // [] f(int, int x, * int y); 100 100 [int, int x, * int y] f(int, int x, * int y); 101 101 [int, int x, * int y] f( ) {} 102 [] f(int, int x, * int y) {}102 // [] f(int, int x, * int y) {} 103 103 [int, int x, * int y] f(int, int x, * int y) {} 104 104 105 [ int ] f11( int ), f12; // => int f11( int ), f12( int ); 105 // function prototypes 106 107 [ int ] f11( int ), f12(); // => int f11( int ), f12( void ); 108 109 const double bar1(), bar2( int ), bar3( double ); // C version 110 [const double] foo(), foo( int ), foo( double ) { return 3.0; } // CFA version 111 struct S { int i; }; 112 [S] rtn( int ) {} 113 106 114 107 115 [int] f( … … 109 117 [int](int) 110 118 ) { 111 int (*(*p )[][10])[][3];119 int (*(*pc)[][10])[][3]; 112 120 * [][10] * [][3] int p; 113 121 * [] * [int](int) p;
Note: See TracChangeset
for help on using the changeset viewer.