- Timestamp:
- Sep 1, 2020, 1:18:10 PM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 86c1f1c3, a77496cb
- Parents:
- 8d8ac3b (diff), d3aa64f1 (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:
-
- 28 edited
-
AST/Convert.cpp (modified) (2 diffs)
-
AST/Copy.hpp (modified) (1 diff)
-
AST/Expr.hpp (modified) (1 diff)
-
AST/Pass.hpp (modified) (1 diff)
-
AST/Pass.impl.hpp (modified) (10 diffs)
-
AST/Pass.proto.hpp (modified) (1 diff)
-
AST/Print.cpp (modified) (2 diffs)
-
AST/TypeSubstitution.hpp (modified) (3 diffs)
-
AST/module.mk (modified) (1 diff)
-
CodeGen/module.mk (modified) (1 diff)
-
CodeTools/module.mk (modified) (1 diff)
-
Common/module.mk (modified) (1 diff)
-
Concurrency/module.mk (modified) (1 diff)
-
ControlStruct/module.mk (modified) (1 diff)
-
GenPoly/module.mk (modified) (1 diff)
-
InitTweak/module.mk (modified) (1 diff)
-
Makefile.am (modified) (2 diffs)
-
Parser/module.mk (modified) (1 diff)
-
ResolvExpr/CandidateFinder.cpp (modified) (1 diff)
-
ResolvExpr/Unify.cc (modified) (3 diffs)
-
ResolvExpr/module.mk (modified) (2 diffs)
-
SymTab/module.mk (modified) (1 diff)
-
SynTree/Expression.cc (modified) (3 diffs)
-
SynTree/Expression.h (modified) (1 diff)
-
SynTree/module.mk (modified) (3 diffs)
-
Tuples/module.mk (modified) (1 diff)
-
Validate/module.mk (modified) (1 diff)
-
Virtual/module.mk (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Convert.cpp
r8d8ac3b r25a1cb0 705 705 new KeywordCastExpr( 706 706 get<Expression>().accept1(node->arg), 707 castTarget 707 castTarget, 708 {node->concrete_target.field, node->concrete_target.getter} 708 709 ) 709 710 ); … … 2087 2088 old->location, 2088 2089 GET_ACCEPT_1(arg, Expr), 2089 castTarget 2090 castTarget, 2091 {old->concrete_target.field, old->concrete_target.getter} 2090 2092 ) 2091 2093 ); -
src/AST/Copy.hpp
r8d8ac3b r25a1cb0 21 21 #include "Stmt.hpp" 22 22 #include "Type.hpp" 23 #include <unordered_set> 24 #include <unordered_map> 23 25 24 26 namespace ast { -
src/AST/Expr.hpp
r8d8ac3b r25a1cb0 312 312 public: 313 313 ptr<Expr> arg; 314 struct Concrete { 315 std::string field; 316 std::string getter; 317 318 Concrete() = default; 319 Concrete(const Concrete &) = default; 320 }; 314 321 ast::AggregateDecl::Aggregate target; 322 Concrete concrete_target; 323 315 324 316 325 KeywordCastExpr( const CodeLocation & loc, const Expr * a, ast::AggregateDecl::Aggregate t ) 317 326 : Expr( loc ), arg( a ), target( t ) {} 327 328 KeywordCastExpr( const CodeLocation & loc, const Expr * a, ast::AggregateDecl::Aggregate t, const Concrete & ct ) 329 : Expr( loc ), arg( a ), target( t ), concrete_target( ct ) {} 318 330 319 331 /// Get a name for the target type -
src/AST/Pass.hpp
r8d8ac3b r25a1cb0 266 266 267 267 /// Keep track of the polymorphic const TypeSubstitution * env for the current expression 268 269 /// marker to force shallow copies in pass visit 270 struct PureVisitor {}; 271 268 272 struct WithConstTypeSubstitution { 269 273 const TypeSubstitution * env = nullptr; -
src/AST/Pass.impl.hpp
r8d8ac3b r25a1cb0 21 21 22 22 #include "AST/TypeSubstitution.hpp" 23 // #include "AST/Copy.hpp" 23 24 24 25 #define VISIT_START( node ) \ … … 57 58 58 59 namespace ast { 60 template<typename node_t> 61 node_t * shallowCopy( const node_t * node ); 62 59 63 namespace __pass { 60 64 // Check if this is either a null pointer or a pointer to an empty container … … 62 66 static inline bool empty( T * ptr ) { 63 67 return !ptr || ptr->empty(); 68 } 69 70 template< typename core_t, typename node_t > 71 static inline node_t* mutate(const node_t *node) { 72 return std::is_base_of<PureVisitor, core_t>::value ? ::ast::shallowCopy(node) : ::ast::mutate(node); 64 73 } 65 74 … … 320 329 321 330 if( __pass::differs(old_val, new_val) ) { 322 auto new_parent = mutate(parent); 331 // auto new_parent = mutate(parent); 332 auto new_parent = __pass::mutate<core_t>(parent); 323 333 new_parent->*child = new_val; 324 334 parent = new_parent; … … 334 344 if ( node->forall.empty() ) return; 335 345 336 node_t * mut = mutate( node );346 node_t * mut = __pass::mutate<core_t>( node ); 337 347 mut->forall = subs->clone( node->forall, *this ); 338 348 node = mut; … … 894 904 895 905 if(mutated) { 896 auto n = mutate(node);906 auto n = __pass::mutate<core_t>(node); 897 907 n->clauses = std::move( new_clauses ); 898 908 node = n; … … 904 914 auto nval = call_accept( node->field ); \ 905 915 if(nval != node->field ) { \ 906 auto nparent = mutate(node); \916 auto nparent = __pass::mutate<core_t>(node); \ 907 917 nparent->field = nval; \ 908 918 node = nparent; \ … … 1610 1620 1611 1621 if(mutated) { 1612 auto n = mutate(node);1622 auto n = __pass::mutate<core_t>(node); 1613 1623 n->associations = std::move( new_kids ); 1614 1624 node = n; … … 1940 1950 } 1941 1951 if (mutated) { 1942 auto new_node = mutate( node );1952 auto new_node = __pass::mutate<core_t>( node ); 1943 1953 new_node->typeEnv.swap( new_map ); 1944 1954 node = new_node; … … 1956 1966 } 1957 1967 if (mutated) { 1958 auto new_node = mutate( node );1968 auto new_node = __pass::mutate<core_t>( node ); 1959 1969 new_node->varEnv.swap( new_map ); 1960 1970 node = new_node; -
src/AST/Pass.proto.hpp
r8d8ac3b r25a1cb0 22 22 template<typename core_t> 23 23 class Pass; 24 25 struct PureVisitor; 24 26 25 27 namespace __pass { -
src/AST/Print.cpp
r8d8ac3b r25a1cb0 21 21 #include "Type.hpp" 22 22 #include "TypeSubstitution.hpp" 23 #include "CompilationState.h" 23 24 24 25 #include "Common/utility.h" // for group_iterate … … 239 240 240 241 if ( node->result ) { 241 os << endl << indent << "... with resolved type:" << endl; 242 ++indent; 243 os << indent; 244 node->result->accept( *this ); 245 --indent; 242 if (!deterministic_output) { 243 os << endl << indent << "... with resolved type:" << endl; 244 ++indent; 245 os << indent; 246 node->result->accept( *this ); 247 --indent; 248 } 246 249 } 247 250 -
src/AST/TypeSubstitution.hpp
r8d8ac3b r25a1cb0 159 159 160 160 // definitition must happen after PassVisitor is included so that WithGuards can be used 161 struct TypeSubstitution::Substituter : public WithGuards, public WithVisitorRef<Substituter> {161 struct TypeSubstitution::Substituter : public WithGuards, public WithVisitorRef<Substituter>, public PureVisitor { 162 162 static size_t traceId; 163 163 … … 187 187 assert( input ); 188 188 Pass<Substituter> sub( *this, false ); 189 input = strict_dynamic_cast< const SynTreeClass * >( deepCopy(input)->accept( sub ) ); 189 // input = strict_dynamic_cast< const SynTreeClass * >( deepCopy(input)->accept( sub ) ); 190 input = strict_dynamic_cast< const SynTreeClass * >( input->accept( sub ) ); 190 191 return { input, sub.core.subCount }; 191 192 } … … 195 196 assert( input ); 196 197 Pass<Substituter> sub( *this, true ); 197 input = strict_dynamic_cast< const SynTreeClass * >( deepCopy(input)->accept( sub ) ); 198 // input = strict_dynamic_cast< const SynTreeClass * >( deepCopy(input)->accept( sub ) ); 199 input = strict_dynamic_cast< const SynTreeClass * >( input->accept( sub ) ); 198 200 return { input, sub.core.subCount }; 199 201 } -
src/AST/module.mk
r8d8ac3b r25a1cb0 17 17 SRC_AST = \ 18 18 AST/AssertAcyclic.cpp \ 19 AST/AssertAcyclic.hpp \ 19 20 AST/Attribute.cpp \ 21 AST/Attribute.hpp \ 22 AST/Bitfield.hpp \ 23 AST/Chain.hpp \ 20 24 AST/Convert.cpp \ 25 AST/Convert.hpp \ 26 AST/Copy.hpp \ 27 AST/CVQualifiers.hpp \ 21 28 AST/Decl.cpp \ 29 AST/Decl.hpp \ 22 30 AST/DeclReplacer.cpp \ 31 AST/DeclReplacer.hpp \ 32 AST/Eval.hpp \ 23 33 AST/Expr.cpp \ 34 AST/Expr.hpp \ 24 35 AST/ForallSubstitutionTable.cpp \ 36 AST/ForallSubstitutionTable.hpp \ 37 AST/ForallSubstitutor.hpp \ 38 AST/FunctionSpec.hpp \ 39 AST/Fwd.hpp \ 25 40 AST/GenericSubstitution.cpp \ 41 AST/GenericSubstitution.hpp \ 26 42 AST/Init.cpp \ 43 AST/Init.hpp \ 44 AST/Label.hpp \ 27 45 AST/LinkageSpec.cpp \ 46 AST/LinkageSpec.hpp \ 28 47 AST/Node.cpp \ 48 AST/Node.hpp \ 49 AST/ParseNode.hpp \ 29 50 AST/Pass.cpp \ 51 AST/Pass.hpp \ 52 AST/Pass.impl.hpp \ 53 AST/Pass.proto.hpp \ 30 54 AST/Print.cpp \ 55 AST/Print.hpp \ 31 56 AST/Stmt.cpp \ 57 AST/Stmt.hpp \ 58 AST/StorageClasses.hpp \ 32 59 AST/SymbolTable.cpp \ 60 AST/SymbolTable.hpp \ 33 61 AST/Type.cpp \ 62 AST/Type.hpp \ 34 63 AST/TypeEnvironment.cpp \ 35 AST/TypeSubstitution.cpp 64 AST/TypeEnvironment.hpp \ 65 AST/TypeSubstitution.cpp \ 66 AST/TypeSubstitution.hpp \ 67 AST/Visitor.hpp 36 68 37 69 SRC += $(SRC_AST) -
src/CodeGen/module.mk
r8d8ac3b r25a1cb0 20 20 SRC_CODEGEN = \ 21 21 CodeGen/CodeGenerator.cc \ 22 CodeGen/CodeGenerator.h \ 22 23 CodeGen/FixMain.cc \ 24 CodeGen/FixMain.h \ 23 25 CodeGen/GenType.cc \ 24 CodeGen/OperatorTable.cc 26 CodeGen/GenType.h \ 27 CodeGen/OperatorTable.cc \ 28 CodeGen/OperatorTable.h \ 29 CodeGen/Options.h 25 30 26 SRC += $(SRC_CODEGEN) CodeGen/Generate.cc CodeGen/ FixNames.cc31 SRC += $(SRC_CODEGEN) CodeGen/Generate.cc CodeGen/Generate.h CodeGen/FixNames.cc CodeGen/FixNames.h 27 32 SRCDEMANGLE += $(SRC_CODEGEN) -
src/CodeTools/module.mk
r8d8ac3b r25a1cb0 15 15 ############################################################################### 16 16 17 SRC += CodeTools/DeclStats.cc \ 17 SRC += \ 18 CodeTools/DeclStats.cc \ 19 CodeTools/DeclStats.h \ 18 20 CodeTools/ResolvProtoDump.cc \ 19 CodeTools/TrackLoc.cc 21 CodeTools/ResolvProtoDump.h \ 22 CodeTools/TrackLoc.cc \ 23 CodeTools/TrackLoc.h -
src/Common/module.mk
r8d8ac3b r25a1cb0 17 17 SRC_COMMON = \ 18 18 Common/Assert.cc \ 19 Common/CodeLocation.h \ 20 Common/CompilerError.h \ 21 Common/Debug.h \ 22 Common/ErrorObjects.h \ 19 23 Common/Eval.cc \ 24 Common/FilterCombos.h \ 25 Common/Indenter.h \ 20 26 Common/PassVisitor.cc \ 27 Common/PassVisitor.h \ 28 Common/PassVisitor.impl.h \ 29 Common/PassVisitor.proto.h \ 30 Common/PersistentMap.h \ 31 Common/ScopedMap.h \ 21 32 Common/SemanticError.cc \ 33 Common/SemanticError.h \ 34 Common/Stats.h \ 35 Common/Stats/Base.h \ 22 36 Common/Stats/Counter.cc \ 37 Common/Stats/Counter.h \ 23 38 Common/Stats/Heap.cc \ 39 Common/Stats/Heap.h \ 24 40 Common/Stats/Stats.cc \ 25 41 Common/Stats/Time.cc \ 26 Common/UniqueName.cc 42 Common/Stats/Time.h \ 43 Common/UnimplementedError.h \ 44 Common/UniqueName.cc \ 45 Common/UniqueName.h \ 46 Common/utility.h \ 47 Common/VectorMap.h 27 48 28 49 SRC += $(SRC_COMMON) Common/DebugMalloc.cc -
src/Concurrency/module.mk
r8d8ac3b r25a1cb0 15 15 ############################################################################### 16 16 17 SRC += Concurrency/Keywords.cc Concurrency/ Waitfor.cc17 SRC += Concurrency/Keywords.cc Concurrency/Keywords.h Concurrency/Waitfor.cc Concurrency/Waitfor.h 18 18 SRCDEMANGLE += Concurrency/Keywords.cc 19 19 -
src/ControlStruct/module.mk
r8d8ac3b r25a1cb0 17 17 SRC_CONTROLSTRUCT = \ 18 18 ControlStruct/ForExprMutator.cc \ 19 ControlStruct/ForExprMutator.h \ 19 20 ControlStruct/LabelFixer.cc \ 21 ControlStruct/LabelFixer.h \ 20 22 ControlStruct/LabelGenerator.cc \ 23 ControlStruct/LabelGenerator.h \ 21 24 ControlStruct/MLEMutator.cc \ 22 ControlStruct/Mutate.cc 25 ControlStruct/MLEMutator.h \ 26 ControlStruct/Mutate.cc \ 27 ControlStruct/Mutate.h 23 28 24 SRC += $(SRC_CONTROLSTRUCT) ControlStruct/ExceptTranslate.cc 29 SRC += $(SRC_CONTROLSTRUCT) ControlStruct/ExceptTranslate.cc ControlStruct/ExceptTranslate.h 25 30 SRCDEMANGLE += $(SRC_CONTROLSTRUCT) 26 31 -
src/GenPoly/module.mk
r8d8ac3b r25a1cb0 16 16 17 17 SRC += GenPoly/Box.cc \ 18 GenPoly/Box.h \ 19 GenPoly/ErasableScopedMap.h \ 20 GenPoly/FindFunction.cc \ 21 GenPoly/FindFunction.h \ 18 22 GenPoly/GenPoly.cc \ 23 GenPoly/GenPoly.h \ 24 GenPoly/InstantiateGeneric.cc \ 25 GenPoly/InstantiateGeneric.h \ 26 GenPoly/Lvalue.cc \ 27 GenPoly/Lvalue.h \ 28 GenPoly/ScopedSet.h \ 19 29 GenPoly/ScrubTyVars.cc \ 20 GenPoly/ Lvalue.cc\30 GenPoly/ScrubTyVars.h \ 21 31 GenPoly/Specialize.cc \ 22 GenPoly/FindFunction.cc \ 23 GenPoly/InstantiateGeneric.cc 32 GenPoly/Specialize.h 24 33 25 SRCDEMANGLE += GenPoly/GenPoly.cc GenPoly/ Lvalue.cc34 SRCDEMANGLE += GenPoly/GenPoly.cc GenPoly/GenPoly.h GenPoly/Lvalue.cc GenPoly/Lvalue.h 26 35 -
src/InitTweak/module.mk
r8d8ac3b r25a1cb0 15 15 ############################################################################### 16 16 17 SRC += InitTweak/GenInit.cc \ 17 SRC += \ 18 InitTweak/FixGlobalInit.cc \ 19 InitTweak/FixGlobalInit.h \ 18 20 InitTweak/FixInit.cc \ 19 InitTweak/FixGlobalInit.cc \ 20 InitTweak/InitTweak.cc 21 InitTweak/FixInit.h \ 22 InitTweak/GenInit.cc \ 23 InitTweak/GenInit.h \ 24 InitTweak/InitTweak.cc \ 25 InitTweak/InitTweak.h 21 26 22 SRCDEMANGLE += InitTweak/GenInit.cc \ 23 InitTweak/InitTweak.cc 27 SRCDEMANGLE += \ 28 InitTweak/GenInit.cc \ 29 InitTweak/GenInit.h \ 30 InitTweak/InitTweak.cc \ 31 InitTweak/InitTweak.h 24 32 -
src/Makefile.am
r8d8ac3b r25a1cb0 20 20 21 21 SRC = main.cc \ 22 CompilationState.cc \ 23 CompilationState.h \ 22 24 MakeLibCfa.cc \ 23 CompilationState.cc 25 MakeLibCfa.h 24 26 25 27 SRCDEMANGLE = CompilationState.cc … … 66 68 ___driver_cfa_cpp_SOURCES = $(SRC) 67 69 ___driver_cfa_cpp_LDADD = -ldl $(LIBPROFILER) $(LIBTCMALLOC) 70 EXTRA_DIST = include/cassert include/optional BasicTypes-gen.cc 68 71 69 72 AM_CXXFLAGS = @HOST_FLAGS@ -Wno-deprecated -Wall -Wextra -DDEBUG_ALL -I./Parser -I$(srcdir)/Parser -I$(srcdir)/include -DYY_NO_INPUT -O3 -g -std=c++14 $(TCMALLOCFLAG) -
src/Parser/module.mk
r8d8ac3b r25a1cb0 23 23 Parser/ExpressionNode.cc \ 24 24 Parser/InitializerNode.cc \ 25 Parser/lex.ll \ 25 26 Parser/ParseNode.cc \ 27 Parser/ParseNode.h \ 28 Parser/parser.yy \ 29 Parser/ParserTypes.h \ 30 Parser/parserutility.cc \ 31 Parser/parserutility.h \ 26 32 Parser/StatementNode.cc \ 27 33 Parser/TypeData.cc \ 34 Parser/TypeData.h \ 28 35 Parser/TypedefTable.cc \ 29 Parser/lex.ll \ 30 Parser/parser.yy \ 31 Parser/parserutility.cc 36 Parser/TypedefTable.h 32 37 33 38 MOSTLYCLEANFILES += Parser/lex.cc Parser/parser.cc Parser/parser.hh Parser/parser.output -
src/ResolvExpr/CandidateFinder.cpp
r8d8ac3b r25a1cb0 1089 1089 } 1090 1090 1091 void postvisit( const ast::KeywordCastExpr * castExpr ) { 1092 const auto & loc = castExpr->location; 1093 assertf( castExpr->result, "Cast target should have been set in Validate." ); 1094 auto ref = castExpr->result.strict_as<ast::ReferenceType>(); 1095 auto inst = ref->base.strict_as<ast::StructInstType>(); 1096 auto target = inst->base.get(); 1097 1098 CandidateFinder finder{ symtab, tenv }; 1099 1100 auto pick_alternatives = [target, this](CandidateList & found, bool expect_ref) { 1101 for(auto & cand : found) { 1102 const ast::Type * expr = cand->expr->result.get(); 1103 if(expect_ref) { 1104 auto res = dynamic_cast<const ast::ReferenceType*>(expr); 1105 if(!res) { continue; } 1106 expr = res->base.get(); 1107 } 1108 1109 if(auto insttype = dynamic_cast<const ast::TypeInstType*>(expr)) { 1110 auto td = cand->env.lookup(insttype->name); 1111 if(!td) { continue; } 1112 expr = td->bound.get(); 1113 } 1114 1115 if(auto base = dynamic_cast<const ast::StructInstType*>(expr)) { 1116 if(base->base == target) { 1117 candidates.push_back( std::move(cand) ); 1118 reason.code = NoReason; 1119 } 1120 } 1121 } 1122 }; 1123 1124 try { 1125 // Attempt 1 : turn (thread&)X into ($thread&)X.__thrd 1126 // Clone is purely for memory management 1127 std::unique_ptr<const ast::Expr> tech1 { new ast::UntypedMemberExpr(loc, new ast::NameExpr(loc, castExpr->concrete_target.field), castExpr->arg) }; 1128 1129 // don't prune here, since it's guaranteed all alternatives will have the same type 1130 finder.find( tech1.get(), ResolvMode::withoutPrune() ); 1131 pick_alternatives(finder.candidates, false); 1132 1133 return; 1134 } catch(SemanticErrorException & ) {} 1135 1136 // Fallback : turn (thread&)X into ($thread&)get_thread(X) 1137 std::unique_ptr<const ast::Expr> fallback { ast::UntypedExpr::createDeref(loc, new ast::UntypedExpr(loc, new ast::NameExpr(loc, castExpr->concrete_target.getter), { castExpr->arg })) }; 1138 // don't prune here, since it's guaranteed all alternatives will have the same type 1139 finder.find( fallback.get(), ResolvMode::withoutPrune() ); 1140 1141 pick_alternatives(finder.candidates, true); 1142 1143 // Whatever happens here, we have no more fallbacks 1144 } 1145 1091 1146 void postvisit( const ast::UntypedMemberExpr * memberExpr ) { 1092 1147 CandidateFinder aggFinder{ symtab, tenv }; -
src/ResolvExpr/Unify.cc
r8d8ac3b r25a1cb0 767 767 /// If this isn't done when satifying ttype assertions, then argument lists can have 768 768 /// different size and structure when they should be compatible. 769 struct TtypeExpander_new : public ast::WithShortCircuiting {769 struct TtypeExpander_new : public ast::WithShortCircuiting, public ast::PureVisitor { 770 770 ast::TypeEnvironment & tenv; 771 771 … … 793 793 // TtypeExpander pass is impure (may mutate nodes in place) 794 794 // need to make nodes shared to prevent accidental mutation 795 ast::ptr<ast::DeclWithType> dc = d; 796 dc = dc->accept( expander ); 795 ast::ptr<ast::DeclWithType> dc = d->accept(expander); 797 796 auto types = flatten( dc->get_type() ); 798 797 for ( ast::ptr< ast::Type > & t : types ) { … … 1114 1113 ast::Pass<TtypeExpander_new> expander{ tenv }; 1115 1114 1116 ast::ptr<ast::TupleType> tuplec = tuple;1117 ast::ptr<ast::TupleType> tuple2c = tuple2;1118 const ast::Type * flat = tuple c->accept( expander );1119 const ast::Type * flat2 = tuple2 c->accept( expander );1115 // ast::ptr<ast::TupleType> tuplec = tuple; 1116 // ast::ptr<ast::TupleType> tuple2c = tuple2; 1117 const ast::Type * flat = tuple->accept( expander ); 1118 const ast::Type * flat2 = tuple2->accept( expander ); 1120 1119 1121 1120 auto types = flatten( flat ); -
src/ResolvExpr/module.mk
r8d8ac3b r25a1cb0 19 19 ResolvExpr/Alternative.cc \ 20 20 ResolvExpr/AlternativeFinder.cc \ 21 ResolvExpr/AlternativeFinder.h \ 22 ResolvExpr/Alternative.h \ 21 23 ResolvExpr/Candidate.cpp \ 22 24 ResolvExpr/CandidateFinder.cpp \ 25 ResolvExpr/CandidateFinder.hpp \ 26 ResolvExpr/Candidate.hpp \ 23 27 ResolvExpr/CastCost.cc \ 24 28 ResolvExpr/CommonType.cc \ 25 29 ResolvExpr/ConversionCost.cc \ 30 ResolvExpr/ConversionCost.h \ 31 ResolvExpr/Cost.h \ 26 32 ResolvExpr/CurrentObject.cc \ 33 ResolvExpr/CurrentObject.h \ 27 34 ResolvExpr/ExplodedActual.cc \ 35 ResolvExpr/ExplodedActual.h \ 28 36 ResolvExpr/ExplodedArg.cpp \ 37 ResolvExpr/ExplodedArg.hpp \ 29 38 ResolvExpr/FindOpenVars.cc \ 39 ResolvExpr/FindOpenVars.h \ 30 40 ResolvExpr/Occurs.cc \ 31 41 ResolvExpr/PolyCost.cc \ … … 33 43 ResolvExpr/PtrsCastable.cc \ 34 44 ResolvExpr/RenameVars.cc \ 45 ResolvExpr/RenameVars.h \ 35 46 ResolvExpr/ResolveAssertions.cc \ 47 ResolvExpr/ResolveAssertions.h \ 36 48 ResolvExpr/Resolver.cc \ 49 ResolvExpr/Resolver.h \ 37 50 ResolvExpr/ResolveTypeof.cc \ 51 ResolvExpr/ResolveTypeof.h \ 52 ResolvExpr/ResolvMode.h \ 38 53 ResolvExpr/SatisfyAssertions.cpp \ 54 ResolvExpr/SatisfyAssertions.hpp \ 39 55 ResolvExpr/SpecCost.cc \ 40 56 ResolvExpr/TypeEnvironment.cc \ 41 ResolvExpr/Unify.cc 57 ResolvExpr/TypeEnvironment.h \ 58 ResolvExpr/typeops.h \ 59 ResolvExpr/Unify.cc \ 60 ResolvExpr/Unify.h \ 61 ResolvExpr/WidenMode.h 42 62 43 SRC += $(SRC_RESOLVEXPR) ResolvExpr/AlternativePrinter.cc 63 64 SRC += $(SRC_RESOLVEXPR) ResolvExpr/AlternativePrinter.cc ResolvExpr/AlternativePrinter.h 44 65 SRCDEMANGLE += $(SRC_RESOLVEXPR) -
src/SymTab/module.mk
r8d8ac3b r25a1cb0 17 17 SRC_SYMTAB = \ 18 18 SymTab/Autogen.cc \ 19 SymTab/Autogen.h \ 19 20 SymTab/FixFunction.cc \ 21 SymTab/FixFunction.h \ 20 22 SymTab/Indexer.cc \ 23 SymTab/Indexer.h \ 21 24 SymTab/Mangler.cc \ 22 25 SymTab/ManglerCommon.cc \ 23 SymTab/Validate.cc 26 SymTab/Mangler.h \ 27 SymTab/Validate.cc \ 28 SymTab/Validate.h 24 29 25 30 SRC += $(SRC_SYMTAB) -
src/SynTree/Expression.cc
r8d8ac3b r25a1cb0 30 30 #include "Type.h" // for Type, BasicType, Type::Qualifiers 31 31 #include "TypeSubstitution.h" // for TypeSubstitution 32 #include "CompilationState.h" // for deterministic_output 32 33 33 34 #include "GenPoly/Lvalue.h" … … 71 72 72 73 if ( result ) { 73 os << std::endl << indent << "with resolved type:" << std::endl; 74 os << (indent+1); 75 result->print( os, indent+1 ); 74 if (!deterministic_output) { 75 os << std::endl << indent << "with resolved type:" << std::endl; 76 os << (indent+1); 77 result->print( os, indent+1 ); 78 } 76 79 } 77 80 … … 299 302 } 300 303 301 KeywordCastExpr::KeywordCastExpr( Expression * arg, AggregateDecl::Aggregate target ) : Expression(), arg(arg), target( target ) { 302 } 303 304 KeywordCastExpr::KeywordCastExpr( const KeywordCastExpr & other ) : Expression( other ), arg( maybeClone( other.arg ) ), target( other.target ) { 305 } 304 KeywordCastExpr::KeywordCastExpr( Expression * arg, AggregateDecl::Aggregate target ) : Expression(), arg(arg), target( target ) {} 305 KeywordCastExpr::KeywordCastExpr( Expression * arg, AggregateDecl::Aggregate target, const KeywordCastExpr::Concrete & concrete_target ) : Expression(), arg(arg), target( target ), concrete_target(concrete_target) {} 306 307 KeywordCastExpr::KeywordCastExpr( const KeywordCastExpr & other ) : Expression( other ), arg( maybeClone( other.arg ) ), target( other.target ) {} 306 308 307 309 KeywordCastExpr::~KeywordCastExpr() { -
src/SynTree/Expression.h
r8d8ac3b r25a1cb0 248 248 249 249 KeywordCastExpr( Expression * arg, AggregateDecl::Aggregate target ); 250 KeywordCastExpr( Expression * arg, AggregateDecl::Aggregate target, const Concrete & concrete_target ); 250 251 KeywordCastExpr( const KeywordCastExpr & other ); 251 252 virtual ~KeywordCastExpr(); -
src/SynTree/module.mk
r8d8ac3b r25a1cb0 20 20 SynTree/ApplicationExpr.cc \ 21 21 SynTree/ArrayType.cc \ 22 SynTree/Attribute.cc \ 23 SynTree/Attribute.h \ 22 24 SynTree/AttrType.cc \ 23 SynTree/ Attribute.cc\25 SynTree/BaseSyntaxNode.h \ 24 26 SynTree/BasicType.cc \ 25 27 SynTree/CommaExpr.cc \ 26 28 SynTree/CompoundStmt.cc \ 27 29 SynTree/Constant.cc \ 30 SynTree/Constant.h \ 31 SynTree/Declaration.cc \ 32 SynTree/Declaration.h \ 33 SynTree/DeclarationWithType.cc \ 28 34 SynTree/DeclReplacer.cc \ 35 SynTree/DeclReplacer.h \ 29 36 SynTree/DeclStmt.cc \ 30 SynTree/Declaration.cc \31 SynTree/DeclarationWithType.cc \32 37 SynTree/Expression.cc \ 38 SynTree/Expression.h \ 33 39 SynTree/FunctionDecl.cc \ 34 40 SynTree/FunctionType.cc \ 35 41 SynTree/Initializer.cc \ 42 SynTree/Initializer.h \ 43 SynTree/Label.h \ 36 44 SynTree/LinkageSpec.cc \ 45 SynTree/LinkageSpec.h \ 46 SynTree/Mutator.h \ 37 47 SynTree/NamedTypeDecl.cc \ 38 48 SynTree/ObjectDecl.cc \ … … 41 51 SynTree/ReferenceType.cc \ 42 52 SynTree/Statement.cc \ 53 SynTree/Statement.h \ 54 SynTree/SynTree.h \ 43 55 SynTree/TupleExpr.cc \ 44 56 SynTree/TupleType.cc \ … … 46 58 SynTree/TypeDecl.cc \ 47 59 SynTree/TypeExpr.cc \ 60 SynTree/Type.h \ 61 SynTree/TypeofType.cc \ 48 62 SynTree/TypeSubstitution.cc \ 49 SynTree/Type ofType.cc\63 SynTree/TypeSubstitution.h \ 50 64 SynTree/VarArgsType.cc \ 65 SynTree/Visitor.h \ 51 66 SynTree/VoidType.cc \ 52 67 SynTree/ZeroOneType.cc -
src/Tuples/module.mk
r8d8ac3b r25a1cb0 15 15 ############################################################################### 16 16 17 SRC += Tuples/TupleAssignment.cc Tuples/TupleExpansion.cc Tuples/Explode.cc \ 18 Tuples/Tuples.cc 19 SRCDEMANGLE += Tuples/TupleAssignment.cc Tuples/TupleExpansion.cc Tuples/Explode.cc \ 20 Tuples/Tuples.cc 17 SRC_TUPLES = \ 18 Tuples/Explode.cc \ 19 Tuples/Explode.h \ 20 Tuples/TupleAssignment.cc \ 21 Tuples/TupleExpansion.cc \ 22 Tuples/Tuples.cc \ 23 Tuples/Tuples.h 24 25 26 SRC += $(SRC_TUPLES) 27 SRCDEMANGLE += $(SRC_TUPLES) -
src/Validate/module.mk
r8d8ac3b r25a1cb0 15 15 ############################################################################### 16 16 17 SRC += Validate/HandleAttributes.cc Validate/ FindSpecialDecls.cc18 SRCDEMANGLE += Validate/HandleAttributes.cc Validate/ FindSpecialDecls.cc17 SRC += Validate/HandleAttributes.cc Validate/HandleAttributes.h Validate/FindSpecialDecls.cc Validate/FindSpecialDecls.h 18 SRCDEMANGLE += Validate/HandleAttributes.cc Validate/HandleAttributes.h Validate/FindSpecialDecls.cc Validate/FindSpecialDecls.h -
src/Virtual/module.mk
r8d8ac3b r25a1cb0 15 15 ############################################################################### 16 16 17 SRC += Virtual/ExpandCasts.cc 17 SRC += Virtual/ExpandCasts.cc Virtual/ExpandCasts.h
Note:
See TracChangeset
for help on using the changeset viewer.