Changeset 228851d
- Timestamp:
- May 11, 2016, 1:15:42 PM (9 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 346a0bf, fb24492
- Parents:
- fac84be (diff), af18713 (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. - Location:
- src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/GenPoly/Box.cc
rfac84be r228851d 499 499 500 500 // place current size in the current offset index 501 addExpr( layoutDecl->get_statements(), makeOp( "?=?", makeOp( "?[?]", new VariableExpr( offsetParam ), new ConstantExpr( Constant::from ( n_members ) ) ),501 addExpr( layoutDecl->get_statements(), makeOp( "?=?", makeOp( "?[?]", new VariableExpr( offsetParam ), new ConstantExpr( Constant::from_ulong( n_members ) ) ), 502 502 derefVar( sizeParam ) ) ); 503 503 ++n_members; … … 2066 2066 if ( n_members == 0 ) { 2067 2067 // all empty structs have the same layout - size 1, align 1 2068 makeVar( sizeofName( typeName ), layoutType, new SingleInit( new ConstantExpr( Constant::from ( (unsigned long)1 ) ) ) );2069 makeVar( alignofName( typeName ), layoutType->clone(), new SingleInit( new ConstantExpr( Constant::from ( (unsigned long)1 ) ) ) );2068 makeVar( sizeofName( typeName ), layoutType, new SingleInit( new ConstantExpr( Constant::from_ulong( 1 ) ) ) ); 2069 makeVar( alignofName( typeName ), layoutType->clone(), new SingleInit( new ConstantExpr( Constant::from_ulong( 1 ) ) ) ); 2070 2070 // NOTE zero-length arrays are forbidden in C, so empty structs have no offsetof array 2071 2071 } else { 2072 2072 ObjectDecl *sizeVar = makeVar( sizeofName( typeName ), layoutType ); 2073 2073 ObjectDecl *alignVar = makeVar( alignofName( typeName ), layoutType->clone() ); 2074 ObjectDecl *offsetVar = makeVar( offsetofName( typeName ), new ArrayType( Type::Qualifiers(), layoutType->clone(), new ConstantExpr( Constant::from ( n_members ) ), false, false ) );2074 ObjectDecl *offsetVar = makeVar( offsetofName( typeName ), new ArrayType( Type::Qualifiers(), layoutType->clone(), new ConstantExpr( Constant::from_int( n_members ) ), false, false ) ); 2075 2075 2076 2076 // generate call to layout function … … 2191 2191 2192 2192 // build the offset array and replace the pack with a reference to it 2193 ObjectDecl *offsetArray = makeVar( offsetName, new ArrayType( Type::Qualifiers(), offsetType, new ConstantExpr( Constant::from ( baseMembers.size() ) ), false, false ),2193 ObjectDecl *offsetArray = makeVar( offsetName, new ArrayType( Type::Qualifiers(), offsetType, new ConstantExpr( Constant::from_ulong( baseMembers.size() ) ), false, false ), 2194 2194 new ListInit( inits ) ); 2195 2195 ret = new VariableExpr( offsetArray ); -
src/SynTree/Constant.cc
rfac84be r228851d 30 30 Constant::~Constant() { delete type; } 31 31 32 Constant Constant::from ( int i ) {32 Constant Constant::from_int( int i ) { 33 33 return Constant( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), std::to_string( i ) ); 34 34 } 35 35 36 Constant Constant::from ( unsigned long i ) {36 Constant Constant::from_ulong( unsigned long i ) { 37 37 return Constant( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), std::to_string( i ) ); 38 38 } 39 39 40 Constant Constant::from ( double d ) {40 Constant Constant::from_double( double d ) { 41 41 return Constant( new BasicType( Type::Qualifiers(), BasicType::Double ), std::to_string( d ) ); 42 42 } -
src/SynTree/Constant.h
rfac84be r228851d 33 33 34 34 /// generates an integer constant of the given int 35 static Constant from ( int i );35 static Constant from_int( int i ); 36 36 /// generates an integer constant of the given unsigned long int 37 static Constant from ( unsigned long i );37 static Constant from_ulong( unsigned long i ); 38 38 /// generates a floating point constant of the given double 39 static Constant from ( double d );39 static Constant from_double( double d ); 40 40 41 41 virtual Constant *clone() const;
Note: See TracChangeset
for help on using the changeset viewer.