Changes in / [5da5a96:94dea96]
- Location:
- src
- Files:
-
- 3 edited
-
Common/PassVisitor.impl.h (modified) (2 diffs)
-
SymTab/Mangler.cc (modified) (3 diffs)
-
tests/references.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Common/PassVisitor.impl.h
r5da5a96 r94dea96 690 690 VISIT_START( node ); 691 691 692 node->condition = visitExpression( node->condition);693 maybeAccept_impl( node->message , *this );692 maybeAccept_impl( node->condition, *this ); 693 maybeAccept_impl( node->message , *this ); 694 694 695 695 VISIT_END( node ); … … 700 700 MUTATE_START( node ); 701 701 702 node->condition = mutateExpression( node->condition);703 maybeMutate_impl( node->message , *this );702 maybeMutate_impl( node->condition, *this ); 703 maybeMutate_impl( node->message , *this ); 704 704 705 705 MUTATE_END( StaticAssertDecl, node ); -
src/SymTab/Mangler.cc
r5da5a96 r94dea96 178 178 printQualifiers( pointerType ); 179 179 mangleName << "P"; 180 maybeAccept( pointerType-> base, *visitor );180 maybeAccept( pointerType->get_base(), *visitor ); 181 181 } 182 182 … … 185 185 printQualifiers( arrayType ); 186 186 mangleName << "A0"; 187 maybeAccept( arrayType-> base, *visitor );187 maybeAccept( arrayType->get_base(), *visitor ); 188 188 } 189 189 … … 191 191 printQualifiers( refType ); 192 192 mangleName << "R"; 193 maybeAccept( refType-> base, *visitor );193 maybeAccept( refType->get_base(), *visitor ); 194 194 } 195 195 -
src/tests/references.c
r5da5a96 r94dea96 45 45 } 46 46 47 // --- temporary code needed to make array of references subscript work.48 extern "C" {49 void ** __index(__attribute__ ((unused)) size_t sizeof_T, __attribute__ ((unused)) size_t alignof_T, void **x, ptrdiff_t y) {50 return (void **)((char *)x+y*sizeof(void *));51 }52 void __ctor(void ***dst, void **src) {53 *dst = src;54 }55 }56 __attribute__((alias("__index"))) forall( dtype T | sized(T) ) T && ?[?]( T & * x, ptrdiff_t y );57 __attribute__((alias("__ctor"))) forall( dtype DT ) void ?{}( DT & * & dst, DT & * src);58 forall( dtype DT ) void ^?{}( DT & * & ) {}59 // --- end of temporary code60 61 47 int main() { 62 48 int x = 123456, x2 = 789, *p1 = &x, **p2 = &p1, ***p3 = &p2, … … 66 52 *p3 = &p1; // change p2 67 53 int y = 0, z = 11, & ar[3] = { x, y, z }; // initialize array of references 68 &ar[1] = &z; // change reference array element69 typeof( ar[1] ) p = 3;// is int, i.e., the type of referenced object70 typeof( &ar[1] ) q = &x; // is int *, i.e., the type of pointer71 _Static_assert( sizeof( ar[1] ) == sizeof( int ), "Array type should be int."); // is true, i.e., the size of referenced object72 _Static_assert( sizeof( &ar[1] ) == sizeof( int *), "Address of array should be int *."); // is true, i.e., the size of a reference54 // &ar[1] = &z; // change reference array element 55 // typeof( ar[1] ) p; // is int, i.e., the type of referenced object 56 // typeof( &ar[1] ) q; // is int &, i.e., the type of reference 57 // sizeof( ar[1] ) == sizeof( int ); // is true, i.e., the size of referenced object 58 // sizeof( &ar[1] ) == sizeof( int *); // is true, i.e., the size of a reference 73 59 74 60 ((int*&)&r3) = &x; // change r1, (&*)**r3
Note:
See TracChangeset
for help on using the changeset viewer.