Changeset 44b7088
- Timestamp:
- Feb 25, 2016, 5:03:36 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, string, with_gc
- Children:
- ac1ed49, d09c421
- Parents:
- 91b8a17
- Location:
- src
- Files:
-
- 1 added
- 26 edited
Legend:
- Unmodified
- Added
- Removed
-
src/CodeGen/GenType.cc
r91b8a17 r44b7088 39 39 virtual void visit( EnumInstType *enumInst ); 40 40 virtual void visit( TypeInstType *typeInst ); 41 virtual void visit( VarArgsType *varArgsType ); 41 42 42 43 private: … … 191 192 } 192 193 194 void GenType::visit( VarArgsType *varArgsType ) { 195 typeString = "__builtin_va_list " + typeString; 196 // don't handle qualifiers, var args pack shouldn't have any 197 } 198 193 199 void GenType::handleQualifiers( Type *type ) { 194 200 if ( type->get_isConst() ) { -
src/Makefile.in
r91b8a17 r44b7088 171 171 SynTree/driver_cfa_cpp-TypeofType.$(OBJEXT) \ 172 172 SynTree/driver_cfa_cpp-AttrType.$(OBJEXT) \ 173 SynTree/driver_cfa_cpp-VarArgsType.$(OBJEXT) \ 173 174 SynTree/driver_cfa_cpp-Constant.$(OBJEXT) \ 174 175 SynTree/driver_cfa_cpp-Expression.$(OBJEXT) \ … … 369 370 SynTree/ArrayType.cc SynTree/FunctionType.cc \ 370 371 SynTree/ReferenceToType.cc SynTree/TupleType.cc \ 371 SynTree/TypeofType.cc SynTree/AttrType.cc SynTree/Constant.cc \ 372 SynTree/TypeofType.cc SynTree/AttrType.cc \ 373 SynTree/VarArgsType.cc SynTree/Constant.cc \ 372 374 SynTree/Expression.cc SynTree/TupleExpr.cc \ 373 375 SynTree/CommaExpr.cc SynTree/TypeExpr.cc \ … … 703 705 SynTree/driver_cfa_cpp-AttrType.$(OBJEXT): SynTree/$(am__dirstamp) \ 704 706 SynTree/$(DEPDIR)/$(am__dirstamp) 707 SynTree/driver_cfa_cpp-VarArgsType.$(OBJEXT): SynTree/$(am__dirstamp) \ 708 SynTree/$(DEPDIR)/$(am__dirstamp) 705 709 SynTree/driver_cfa_cpp-Constant.$(OBJEXT): SynTree/$(am__dirstamp) \ 706 710 SynTree/$(DEPDIR)/$(am__dirstamp) … … 867 871 -rm -f SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT) 868 872 -rm -f SynTree/driver_cfa_cpp-TypeofType.$(OBJEXT) 873 -rm -f SynTree/driver_cfa_cpp-VarArgsType.$(OBJEXT) 869 874 -rm -f SynTree/driver_cfa_cpp-Visitor.$(OBJEXT) 870 875 -rm -f SynTree/driver_cfa_cpp-VoidType.$(OBJEXT) … … 974 979 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Po@am__quote@ 975 980 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Po@am__quote@ 981 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po@am__quote@ 976 982 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Po@am__quote@ 977 983 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Po@am__quote@ … … 2048 2054 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 2049 2055 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AttrType.obj `if test -f 'SynTree/AttrType.cc'; then $(CYGPATH_W) 'SynTree/AttrType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AttrType.cc'; fi` 2056 2057 SynTree/driver_cfa_cpp-VarArgsType.o: SynTree/VarArgsType.cc 2058 @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VarArgsType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo -c -o SynTree/driver_cfa_cpp-VarArgsType.o `test -f 'SynTree/VarArgsType.cc' || echo '$(srcdir)/'`SynTree/VarArgsType.cc 2059 @am__fastdepCXX_TRUE@ $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po 2060 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SynTree/VarArgsType.cc' object='SynTree/driver_cfa_cpp-VarArgsType.o' libtool=no @AMDEPBACKSLASH@ 2061 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 2062 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VarArgsType.o `test -f 'SynTree/VarArgsType.cc' || echo '$(srcdir)/'`SynTree/VarArgsType.cc 2063 2064 SynTree/driver_cfa_cpp-VarArgsType.obj: SynTree/VarArgsType.cc 2065 @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VarArgsType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo -c -o SynTree/driver_cfa_cpp-VarArgsType.obj `if test -f 'SynTree/VarArgsType.cc'; then $(CYGPATH_W) 'SynTree/VarArgsType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VarArgsType.cc'; fi` 2066 @am__fastdepCXX_TRUE@ $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po 2067 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SynTree/VarArgsType.cc' object='SynTree/driver_cfa_cpp-VarArgsType.obj' libtool=no @AMDEPBACKSLASH@ 2068 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 2069 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VarArgsType.obj `if test -f 'SynTree/VarArgsType.cc'; then $(CYGPATH_W) 'SynTree/VarArgsType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VarArgsType.cc'; fi` 2050 2070 2051 2071 SynTree/driver_cfa_cpp-Constant.o: SynTree/Constant.cc -
src/ResolvExpr/AdjustExprType.cc
r91b8a17 r44b7088 36 36 virtual Type* mutate( TypeInstType *aggregateUseType ); 37 37 virtual Type* mutate( TupleType *tupleType ); 38 virtual Type* mutate( VarArgsType *varArgsType ); 38 39 39 40 const TypeEnvironment &env; … … 111 112 return tupleType; 112 113 } 114 115 Type *AdjustExprType::mutate( VarArgsType *varArgsType ) { 116 return varArgsType; 117 } 113 118 } // namespace ResolvExpr 114 119 -
src/ResolvExpr/CommonType.cc
r91b8a17 r44b7088 38 38 virtual void visit( TypeInstType *aggregateUseType ); 39 39 virtual void visit( TupleType *tupleType ); 40 virtual void visit( VarArgsType *varArgsType ); 40 41 41 42 template< typename RefType > void handleRefType( RefType *inst, Type *other ); … … 213 214 void CommonType::visit( TupleType *tupleType ) { 214 215 } 216 217 void CommonType::visit( VarArgsType *varArgsType ) { 218 } 215 219 } // namespace ResolvExpr 216 220 -
src/ResolvExpr/ConversionCost.cc
r91b8a17 r44b7088 247 247 } // if 248 248 } 249 250 void ConversionCost::visit(VarArgsType *varArgsType) { 251 if ( VarArgsType *destAsVarArgs = dynamic_cast< VarArgsType* >( dest ) ) { 252 cost = Cost::zero; 253 } 254 } 249 255 } // namespace ResolvExpr 250 256 -
src/ResolvExpr/ConversionCost.h
r91b8a17 r44b7088 40 40 virtual void visit(TypeInstType *aggregateUseType); 41 41 virtual void visit(TupleType *tupleType); 42 virtual void visit(VarArgsType *varArgsType); 42 43 protected: 43 44 Type *dest; -
src/ResolvExpr/PtrsAssignable.cc
r91b8a17 r44b7088 38 38 virtual void visit( TypeInstType *inst ); 39 39 virtual void visit( TupleType *tupleType ); 40 virtual void visit( VarArgsType *varArgsType ); 40 41 private: 41 42 Type *dest; … … 137 138 /// } 138 139 } 140 141 void PtrsAssignable::visit( VarArgsType *varArgsType ) { 142 } 139 143 } // namespace ResolvExpr 140 144 -
src/ResolvExpr/PtrsCastable.cc
r91b8a17 r44b7088 39 39 virtual void visit(TypeInstType *inst); 40 40 virtual void visit(TupleType *tupleType); 41 virtual void visit(VarArgsType *varArgsType); 41 42 private: 42 43 Type *dest; … … 139 140 result = objectCast( dest, env, indexer ); 140 141 } 142 143 void PtrsCastable::visit(VarArgsType *varArgsType) { 144 result = objectCast( dest, env, indexer ); 145 } 141 146 } // namespace ResolvExpr 142 147 -
src/ResolvExpr/RenameVars.cc
r91b8a17 r44b7088 113 113 } 114 114 115 void RenameVars::visit( VarArgsType *varArgsType ) { 116 typeBefore( varArgsType ); 117 typeAfter( varArgsType ); 118 } 119 115 120 void RenameVars::typeBefore( Type *type ) { 116 121 if ( ! type->get_forall().empty() ) { -
src/ResolvExpr/RenameVars.h
r91b8a17 r44b7088 43 43 virtual void visit( TypeInstType *aggregateUseType ); 44 44 virtual void visit( TupleType *tupleType ); 45 virtual void visit( VarArgsType *varArgsType ); 45 46 46 47 void typeBefore( Type *type ); -
src/ResolvExpr/Unify.cc
r91b8a17 r44b7088 59 59 virtual void visit(TypeInstType *aggregateUseType); 60 60 virtual void visit(TupleType *tupleType); 61 virtual void visit(VarArgsType *varArgsType); 61 62 62 63 template< typename RefType > void handleRefType( RefType *inst, Type *other ); … … 582 583 } 583 584 585 void Unify::visit(VarArgsType *varArgsType) { 586 result = dynamic_cast< VarArgsType* >( type2 ); 587 } 588 584 589 } // namespace ResolvExpr 585 590 -
src/SymTab/FixFunction.cc
r91b8a17 r44b7088 72 72 return tupleType; 73 73 } 74 75 Type * FixFunction::mutate(VarArgsType *varArgsType) { 76 return varArgsType; 77 } 74 78 } // namespace SymTab 75 79 -
src/SymTab/FixFunction.h
r91b8a17 r44b7088 41 41 virtual Type* mutate(TypeInstType *aggregateUseType); 42 42 virtual Type* mutate(TupleType *tupleType); 43 virtual Type* mutate(VarArgsType *varArgsType); 43 44 44 45 bool isVoid; -
src/SymTab/ImplementationType.cc
r91b8a17 r44b7088 40 40 virtual void visit(TypeInstType *aggregateUseType); 41 41 virtual void visit(TupleType *tupleType); 42 virtual void visit(VarArgsType *varArgsType); 42 43 43 44 Type *result; // synthesized … … 116 117 result = newType; 117 118 } 119 120 void ImplementationType::visit(VarArgsType *varArgsType) { 121 } 118 122 } // namespace SymTab 119 123 -
src/SymTab/Mangler.cc
r91b8a17 r44b7088 224 224 acceptAll( tupleType->get_types(), *this ); 225 225 mangleName << "_"; 226 } 227 228 void Mangler::visit( VarArgsType *varArgsType ) { 229 mangleName << "VARGS"; 226 230 } 227 231 -
src/SymTab/Mangler.h
r91b8a17 r44b7088 45 45 virtual void visit( TypeInstType *aggregateUseType ); 46 46 virtual void visit( TupleType *tupleType ); 47 virtual void visit( VarArgsType *varArgsType ); 47 48 48 49 std::string get_mangleName() { return mangleName.str(); } -
src/SymTab/TypeEquality.cc
r91b8a17 r44b7088 41 41 virtual void visit( EnumInstType *enumInst ); 42 42 virtual void visit( TypeInstType *typeInst ); 43 virtual void visit( VarArgsType *varArgsType ); 43 44 44 45 void handleQualifiers( Type * t ); … … 191 192 } 192 193 } 194 195 void TypeEquality::visit( VarArgsType *varArgsType ) { 196 // don't handle qualifiers; var args pack shouldn't have any 197 if ( ! dynamic_cast< VarArgsType * >( other ) ) { 198 result = false; 199 } 200 } 193 201 } // namespace SymTab -
src/SynTree/Mutator.cc
r91b8a17 r44b7088 421 421 } 422 422 423 Type *Mutator::mutate( VarArgsType *varArgsType ) { 424 mutateAll( varArgsType->get_forall(), *this ); 425 return varArgsType; 426 } 427 423 428 Initializer *Mutator::mutate( SingleInit *singleInit ) { 424 429 singleInit->set_value( singleInit->get_value()->acceptMutator( *this ) ); -
src/SynTree/Mutator.h
r91b8a17 r44b7088 90 90 virtual Type* mutate( TypeofType *typeofType ); 91 91 virtual Type* mutate( AttrType *attrType ); 92 virtual Type* mutate( VarArgsType *varArgsType ); 92 93 93 94 virtual Initializer* mutate( SingleInit *singleInit ); -
src/SynTree/SynTree.h
r91b8a17 r44b7088 97 97 class TypeofType; 98 98 class AttrType; 99 class VarArgsType; 99 100 100 101 class Initializer; -
src/SynTree/Type.h
r91b8a17 r44b7088 400 400 }; 401 401 402 /// Represents the GCC built-in varargs type 403 class VarArgsType : public Type { 404 VarArgsType(); 405 406 virtual VarArgsType *clone() const { return new VarArgsType( *this ); } 407 virtual void accept( Visitor &v ) { v.visit( this ); } 408 virtual Type *acceptMutator( Mutator &m ) { return m.mutate( this ); } 409 virtual void print( std::ostream &os, int indent = 0 ) const; 410 }; 411 402 412 inline Type::Qualifiers &Type::Qualifiers::operator+=( const Type::Qualifiers &other ) { 403 413 isConst |= other.isConst; -
src/SynTree/TypeSubstitution.cc
r91b8a17 r44b7088 198 198 } 199 199 200 Type * TypeSubstitution::mutate( VarArgsType *varArgsType ) { 201 return handleType( varArgsType ); 202 } 203 200 204 void TypeSubstitution::print( std::ostream &os, int indent ) const { 201 205 os << std::string( indent, ' ' ) << "Types:" << std::endl; -
src/SynTree/TypeSubstitution.h
r91b8a17 r44b7088 74 74 virtual Type* mutate(ContextInstType *aggregateUseType); 75 75 virtual Type* mutate(TupleType *tupleType); 76 virtual Type* mutate(VarArgsType *varArgsType); 76 77 77 78 // TODO: worry about traversing into a forall-qualified function type or type decl with assertions -
src/SynTree/Visitor.cc
r91b8a17 r44b7088 355 355 } 356 356 357 void Visitor::visit( VarArgsType *varArgsType ) { 358 acceptAll( varArgsType->get_forall(), *this ); 359 } 360 357 361 void Visitor::visit( SingleInit *singleInit ) { 358 362 singleInit->get_value()->accept( *this ); -
src/SynTree/Visitor.h
r91b8a17 r44b7088 90 90 virtual void visit( TypeofType *typeofType ); 91 91 virtual void visit( AttrType *attrType ); 92 virtual void visit( VarArgsType *varArgsType ); 92 93 93 94 virtual void visit( SingleInit *singleInit ); -
src/SynTree/module.mk
r91b8a17 r44b7088 25 25 SynTree/TypeofType.cc \ 26 26 SynTree/AttrType.cc \ 27 SynTree/VarArgsType.cc \ 27 28 SynTree/Constant.cc \ 28 29 SynTree/Expression.cc \
Note: See TracChangeset
for help on using the changeset viewer.