Changeset 30f9072 for src/SymTab
- Timestamp:
- Jul 12, 2017, 1:58:00 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:
- 02d62bb
- Parents:
- 3268a58
- Location:
- src/SymTab
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
src/SymTab/AddVisit.h
r3268a58 r30f9072 14 14 // 15 15 16 #include "SynTree/Statement.h" 17 16 18 namespace SymTab { 17 19 void addDecls( std::list< Declaration* > &declsToAdd, std::list< Statement* > &statements, std::list< Statement* >::iterator i ); … … 28 30 29 31 if ( stmt == stmts.end() ) break; 30 32 31 33 // run mutator on statement 32 34 maybeAccept( *stmt, visitor ); … … 59 61 60 62 if ( decl == translationUnit.end() ) break; 61 63 62 64 // run mutator on declaration 63 65 maybeAccept( *decl, visitor ); -
src/SymTab/Autogen.cc
r3268a58 r30f9072 13 13 // Update Count : 61 14 14 // 15 16 #include <list>17 #include <iterator>18 #include "SynTree/Visitor.h"19 #include "SynTree/Type.h"20 #include "SynTree/Statement.h"21 #include "SynTree/TypeSubstitution.h"22 #include "Common/utility.h"23 #include "AddVisit.h"24 #include "MakeLibCfa.h"25 15 #include "Autogen.h" 26 #include "GenPoly/ScopedSet.h" 27 #include "Common/ScopedMap.h" 28 #include "SymTab/Mangler.h" 29 #include "GenPoly/DeclMutator.h" 16 17 #include <algorithm> // for count_if 18 #include <cassert> // for safe_dynamic_cast, assert, assertf 19 #include <iterator> // for back_insert_iterator, back_inserter 20 #include <list> // for list, _List_iterator, list<>::iter... 21 #include <set> // for set, _Rb_tree_const_iterator 22 #include <vector> // for vector 23 24 #include "AddVisit.h" // for addVisit 25 #include "Common/ScopedMap.h" // for ScopedMap<>::const_iterator, Scope... 26 #include "Common/utility.h" // for cloneAll, operator+ 27 #include "GenPoly/DeclMutator.h" // for DeclMutator 28 #include "GenPoly/ScopedSet.h" // for ScopedSet, ScopedSet<>::iterator 29 #include "SymTab/Mangler.h" // for Mangler 30 #include "SynTree/Mutator.h" // for maybeMutate 31 #include "SynTree/Statement.h" // for CompoundStmt, ReturnStmt, ExprStmt 32 #include "SynTree/Type.h" // for FunctionType, Type, TypeInstType 33 #include "SynTree/Visitor.h" // for maybeAccept, Visitor, acceptAll 34 35 class Attribute; 30 36 31 37 namespace SymTab { … … 512 518 // Make function polymorphic in same parameters as generic union, if applicable 513 519 const std::list< TypeDecl* > & typeParams = aggregateDecl->get_parameters(); // List of type variables to be placed on the generated functions 514 520 515 521 // default ctor/dtor need only first parameter 516 522 // void ?{}(T *); void ^?{}(T *); -
src/SymTab/Autogen.h
r3268a58 r30f9072 17 17 #define AUTOGEN_H 18 18 19 #include <string> 20 #include "SynTree/Statement.h" 21 #include "SynTree/Expression.h" 22 #include "SynTree/Declaration.h" 23 #include "SynTree/Initializer.h" 24 #include "InitTweak/InitTweak.h" 19 #include <cassert> // for assert 20 #include <iterator> // for back_insert_iterator, back_inserter 21 #include <list> // for list 22 #include <string> // for string, operator== 23 24 #include "Common/UniqueName.h" // for UniqueName 25 #include "InitTweak/InitTweak.h" // for InitExpander 26 #include "Parser/LinkageSpec.h" // for C 27 #include "SynTree/Constant.h" // for Constant 28 #include "SynTree/Declaration.h" // for ObjectDecl, Declaration (ptr only) 29 #include "SynTree/Expression.h" // for UntypedExpr, NameExpr, VariableExpr 30 #include "SynTree/Initializer.h" // for SingleInit 31 #include "SynTree/Label.h" // for Label, noLabels 32 #include "SynTree/Statement.h" // for Statement (ptr only), CompoundStmt 33 #include "SynTree/Type.h" // for Type, ArrayType, Type::Qualifiers 25 34 26 35 namespace SymTab { … … 155 164 if ( isUnnamedBitfield( obj ) ) return; 156 165 157 bool addCast = (fname == "?{}" || fname == "^?{}") && ( !obj || ( obj && obj->get_bitfieldWidth() == NULL) );166 bool addCast = (fname == "?{}" || fname == "^?{}") && ( !obj || ( obj && ! obj->get_bitfieldWidth() ) ); 158 167 std::list< Statement * > stmts; 159 168 genCall( srcParam, dstParam, fname, back_inserter( stmts ), obj->get_type(), addCast, forward ); -
src/SymTab/FixFunction.cc
r3268a58 r30f9072 15 15 16 16 #include "FixFunction.h" 17 #include "SynTree/Declaration.h" 18 #include "SynTree/Type.h" 19 #include "SynTree/Expression.h" 20 #include "Common/utility.h" 17 18 #include <list> // for list 19 20 #include "Common/utility.h" // for maybeClone 21 #include "SynTree/Declaration.h" // for FunctionDecl, ObjectDecl, Declarati... 22 #include "SynTree/Type.h" // for ArrayType, PointerType, Type, Basic... 21 23 22 24 namespace SymTab { -
src/SymTab/FixFunction.h
r3268a58 r30f9072 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // FixFunction.h -- 7 // FixFunction.h -- 8 8 // 9 9 // Author : Richard C. Bilson … … 17 17 #define FIXFUNCTION_H 18 18 19 #include "SynTree/Mutator.h" 19 #include "SynTree/Mutator.h" // for Mutator 20 #include "SynTree/SynTree.h" // for Types 20 21 21 22 namespace SymTab { … … 44 45 virtual Type* mutate(ZeroType *zeroType); 45 46 virtual Type* mutate(OneType *oneType); 46 47 47 48 bool isVoid; 48 49 }; -
src/SymTab/ImplementationType.cc
r3268a58 r30f9072 15 15 16 16 #include "ImplementationType.h" 17 #include "SynTree/Type.h" 18 #include "SynTree/Declaration.h" 19 #include "SynTree/Visitor.h" 20 #include "SymTab/Indexer.h" 21 #include "Common/utility.h" 17 18 #include <list> // for list, _List_iterator, list<>::iterator 19 20 #include "SymTab/Indexer.h" // for Indexer 21 #include "SynTree/Declaration.h" // for NamedTypeDecl 22 #include "SynTree/Type.h" // for TupleType, Type, ArrayType, Pointer... 23 #include "SynTree/Visitor.h" // for Visitor 22 24 23 25 -
src/SymTab/ImplementationType.h
r3268a58 r30f9072 17 17 #define IMPLEMENTATIONTYPE_H 18 18 19 #include "SynTree/SynTree.h" 20 #include "SymTab/Indexer.h" 19 class Type; 21 20 22 21 namespace SymTab { 22 class Indexer; 23 23 24 Type *implementationType( Type *, const SymTab::Indexer &indexer ); 24 25 -
src/SymTab/Indexer.cc
r3268a58 r30f9072 16 16 #include "Indexer.h" 17 17 18 #include <string> 19 #include <typeinfo> 20 #include <unordered_map> 21 #include <unordered_set> 22 #include <utility> 23 #include <algorithm> 24 25 #include "Mangler.h" 26 27 #include "Common/utility.h" 28 29 #include "ResolvExpr/typeops.h" 30 31 #include "SynTree/Declaration.h" 32 #include "SynTree/Type.h" 33 #include "SynTree/Expression.h" 34 #include "SynTree/Initializer.h" 35 #include "SynTree/Statement.h" 36 37 #include "InitTweak/InitTweak.h" 18 #include <cassert> // for assert, safe_dynamic_cast 19 #include <iostream> // for operator<<, basic_ostream, ostream 20 #include <string> // for string, operator<<, operator!= 21 #include <unordered_map> // for operator!=, unordered_map<>::const... 22 #include <unordered_set> // for unordered_set 23 #include <utility> // for pair, make_pair, move 24 25 #include "Common/SemanticError.h" // for SemanticError 26 #include "Common/utility.h" // for cloneAll 27 #include "InitTweak/InitTweak.h" // for isConstructor, isCopyFunction, isC... 28 #include "Mangler.h" // for Mangler 29 #include "Parser/LinkageSpec.h" // for isMangled, isOverridable, Spec 30 #include "ResolvExpr/typeops.h" // for typesCompatible 31 #include "SynTree/Constant.h" // for Constant 32 #include "SynTree/Declaration.h" // for DeclarationWithType, FunctionDecl 33 #include "SynTree/Expression.h" // for Expression, ImplicitCopyCtorExpr 34 #include "SynTree/Initializer.h" // for Initializer 35 #include "SynTree/Statement.h" // for CompoundStmt, Statement, ForStmt (... 36 #include "SynTree/Type.h" // for Type, StructInstType, UnionInstType 38 37 39 38 #define debugPrint(x) if ( doDebug ) { std::cout << x; } -
src/SymTab/Indexer.h
r3268a58 r30f9072 17 17 #define INDEXER_H 18 18 19 #include <list> 20 #include <string> 19 #include <iosfwd> // for ostream 20 #include <list> // for list 21 #include <string> // for string 21 22 22 #include "SynTree/Visitor.h" 23 #include "SynTree/Visitor.h" // for Visitor 24 #include "SynTree/SynTree.h" // for AST nodes 23 25 24 26 namespace SymTab { … … 126 128 127 129 struct Impl; 130 128 131 Impl *tables; ///< Copy-on-write instance of table data structure 129 132 unsigned long scope; ///< Scope index of this pointer -
src/SymTab/Mangler.cc
r3268a58 r30f9072 13 13 // Update Count : 21 14 14 // 15 16 #include <cassert>17 #include <string>18 #include <algorithm>19 #include <iterator>20 #include <functional>21 #include <set>22 23 #include "SynTree/Declaration.h"24 #include "SynTree/Type.h"25 #include "SynTree/Expression.h"26 #include "SynTree/Initializer.h"27 #include "SynTree/Statement.h"28 15 #include "Mangler.h" 29 #include "CodeGen/OperatorTable.h" 16 17 #include <algorithm> // for copy, transform 18 #include <cassert> // for assert, assertf 19 #include <functional> // for const_mem_fun_t, mem_fun 20 #include <iterator> // for ostream_iterator, back_insert_ite... 21 #include <list> // for _List_iterator, list, _List_const... 22 #include <string> // for string, operator<<, basic_string 23 24 #include "CodeGen/OperatorTable.h" // for OperatorInfo, operatorLookup 25 #include "Common/utility.h" // for toString 26 #include "Parser/LinkageSpec.h" // for Spec, isOverridable, AutoGen, Int... 27 #include "SynTree/Declaration.h" // for TypeDecl, DeclarationWithType 28 #include "SynTree/Expression.h" // for TypeExpr, Expression, operator<< 29 #include "SynTree/Type.h" // for Type, ReferenceToType, Type::Fora... 30 30 31 31 namespace SymTab { -
src/SymTab/Mangler.h
r3268a58 r30f9072 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // Mangler.h -- 7 // Mangler.h -- 8 8 // 9 9 // Author : Richard C. Bilson … … 17 17 #define MANGLER_H 18 18 19 #include <sstream> 20 #include "SynTree/SynTree.h" 21 #include "SynTree/Visitor.h" 19 #include <map> // for map, map<>::value_compare 20 #include <sstream> // for ostringstream 21 #include <string> // for string 22 #include <utility> // for pair 23 24 #include "SynTree/SynTree.h" // for Types 25 #include "SynTree/Visitor.h" // for Visitor, maybeAccept 22 26 23 27 namespace SymTab { … … 48 52 virtual void visit( ZeroType *zeroType ); 49 53 virtual void visit( OneType *oneType ); 50 54 51 55 std::string get_mangleName() { return mangleName.str(); } 52 56 private: … … 58 62 bool mangleOverridable; ///< Specially mangle overridable built-in methods 59 63 bool typeMode; ///< Produce a unique mangled name for a type 60 64 61 65 Mangler( bool mangleOverridable, bool typeMode ); 62 66 Mangler( const Mangler & ); 63 67 64 68 void mangleDecl( DeclarationWithType *declaration ); 65 69 void mangleRef( ReferenceToType *refType, std::string prefix ); 66 70 void mangleGenericRef( ReferenceToType *refType, std::string prefix ); 67 71 68 72 void printQualifiers( Type *type ); 69 73 }; // Mangler -
src/SymTab/TypeEquality.cc
r3268a58 r30f9072 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // TypeEquality.cc -- 7 // TypeEquality.cc -- 8 8 // 9 9 // Author : Rob Schluntz … … 13 13 // Update Count : 37 14 14 // 15 16 #include <list>17 #include <iterator>18 #include "Validate.h"19 #include "SynTree/Visitor.h"20 #include "SynTree/Type.h"21 #include "SynTree/Statement.h"22 #include "SynTree/TypeSubstitution.h"23 #include "Indexer.h"24 15 #include "TypeEquality.h" 16 17 #include <cassert> // for assert 18 #include <list> // for list, list<>::iterator, _List_iterator 19 #include <string> // for operator==, string, basic_string 20 21 #include "SynTree/Constant.h" // for Constant 22 #include "SynTree/Declaration.h" // for DeclarationWithType 23 #include "SynTree/Expression.h" // for ConstantExpr, Expression 24 #include "SynTree/Type.h" // for Type, ArrayType, FunctionType, Enum... 25 #include "SynTree/Visitor.h" // for Visitor 25 26 26 27 namespace SymTab { 27 28 class TypeEquality : public Visitor { 28 29 public: 29 TypeEquality( Type * other, bool vlaErr ) : result( true ), other( other ), 30 TypeEquality( Type * other, bool vlaErr ) : result( true ), other( other ), 30 31 vlaErr( vlaErr ) {} 31 32 bool result; … … 71 72 handleQualifiers( basicType ); 72 73 if ( BasicType * bt = dynamic_cast< BasicType * >( other ) ) { 73 result = result && basicType->get_kind() == bt->get_kind(); 74 result = result && basicType->get_kind() == bt->get_kind(); 74 75 } else { 75 76 result = false; … … 98 99 99 100 if ( vlaErr ) { 100 // useful for comparing typedef types - in this case, we 101 // useful for comparing typedef types - in this case, we 101 102 // want types to appear distinct if either is a VLA type 102 103 if ( arrayType->get_isVarLen() || at->get_isVarLen() ) { … … 146 147 147 148 // parameter types must be equivalent 148 it1 = funcType->get_parameters().begin(); 149 it1 = funcType->get_parameters().begin(); 149 150 it2 = ft->get_parameters().begin(); 150 151 for ( ; it1 != funcType->get_parameters().end(); ++it1, ++it2 ) { -
src/SymTab/TypeEquality.h
r3268a58 r30f9072 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // TypeEquality.h -- 7 // TypeEquality.h -- 8 8 // 9 9 // Author : Rob Schluntz … … 14 14 // 15 15 16 class Type; 17 16 18 namespace SymTab { 17 19 // compare types t1 and t2 for equality 18 // if vlaErr is true, then if at least one of the types is a 19 // variable-length array type, then the result will be false 20 // if vlaErr is true, then if at least one of the types is a 21 // variable-length array type, then the result will be false 20 22 bool typeEquals( Type * t1, Type * t2, bool vlaErr = false ); 21 23 } // namespace SymTab -
src/SymTab/Validate.cc
r3268a58 r30f9072 38 38 // definition occurs later in the input. 39 39 40 #include <algorithm>41 #include <iterator>42 #include <list>43 44 #include "CodeGen/CodeGenerator.h"45 46 #include "Common/PassVisitor.h"47 #include "Common/ScopedMap.h"48 #include "Common/UniqueName.h"49 #include "Common/utility.h"50 51 #include "Concurrency/Keywords.h"52 53 #include "GenPoly/DeclMutator.h"54 55 #include "InitTweak/InitTweak.h"56 57 #include "AddVisit.h"58 #include "Autogen.h"59 #include "FixFunction.h"60 // #include "ImplementationType.h"61 #include "Indexer.h"62 #include "MakeLibCfa.h"63 #include "TypeEquality.h"64 40 #include "Validate.h" 65 41 66 #include "ResolvExpr/typeops.h" 67 68 #include "SynTree/Attribute.h" 69 #include "SynTree/Expression.h" 70 #include "SynTree/Mutator.h" 71 #include "SynTree/Statement.h" 72 #include "SynTree/Type.h" 73 #include "SynTree/TypeSubstitution.h" 74 #include "SynTree/Visitor.h" 42 #include <cstddef> // for size_t 43 #include <algorithm> // for move, transform 44 #include <cassert> // for safe_dynamic_cast, assertf 45 #include <iterator> // for back_inserter, inserter, back_... 46 #include <list> // for list, _List_iterator, list<>::... 47 #include <map> // for _Rb_tree_iterator, map, map<>:... 48 #include <memory> // for unique_ptr, allocator 49 #include <string> // for string, operator+, operator== 50 #include <tuple> // for get 51 #include <utility> // for pair, make_pair 52 53 #include "AddVisit.h" // for addVisit 54 #include "Autogen.h" // for SizeType, autogenerateRoutines 55 #include "CodeGen/CodeGenerator.h" // for genName 56 #include "Common/PassVisitor.h" // for PassVisitor, WithDeclsToAdd 57 #include "Common/ScopedMap.h" // for ScopedMap<>::const_iterator 58 #include "Common/SemanticError.h" // for SemanticError 59 #include "Common/UniqueName.h" // for UniqueName 60 #include "Common/utility.h" // for operator+, cloneAll, deleteAll 61 #include "Concurrency/Keywords.h" // for applyKeywords, implementMutexF... 62 #include "FixFunction.h" // for FixFunction 63 #include "Indexer.h" // for Indexer 64 #include "InitTweak/InitTweak.h" // for isCtorDtor, isCtorDtorAssign 65 #include "Parser/LinkageSpec.h" // for C, Cforall 66 #include "ResolvExpr/typeops.h" // for extractResultType, typesCompat... 67 #include "SynTree/Attribute.h" // for Attribute 68 #include "SynTree/Constant.h" // for Constant 69 #include "SynTree/Declaration.h" // for EnumDecl, StructDecl, UnionDecl 70 #include "SynTree/Expression.h" // for TypeExpr, CompoundLiteralExpr 71 #include "SynTree/Initializer.h" // for ListInit, Initializer, noDesig... 72 #include "SynTree/Mutator.h" // for mutateAll, Mutator 73 #include "SynTree/Statement.h" // for CompoundStmt, DeclStmt, Return... 74 #include "SynTree/Type.h" // for Type, TypeInstType, TraitInstType 75 #include "SynTree/TypeSubstitution.h" // for TypeSubstitution, applySubstit... 76 #include "SynTree/Visitor.h" // for acceptAll, Visitor 75 77 76 78 #define debugPrint( x ) if ( doDebug ) { std::cout << x; } … … 605 607 // a return statement in a void-returning function in C. The expression is treated as if it 606 608 // were cast to void. 607 if ( returnStmt->get_expr() == NULL&& returnVals.size() != 0 ) {609 if ( ! returnStmt->get_expr() && returnVals.size() != 0 ) { 608 610 throw SemanticError( "Non-void function returns no values: " , returnStmt ); 609 611 } … … 836 838 void validateGeneric( Aggr * inst ) { 837 839 std::list< TypeDecl * > * params = inst->get_baseParameters(); 838 if ( params != NULL) {840 if ( params ) { 839 841 std::list< Expression * > & args = inst->get_parameters(); 840 842 … … 937 939 void ArrayLength::previsit( ObjectDecl * objDecl ) { 938 940 if ( ArrayType * at = dynamic_cast< ArrayType * >( objDecl->get_type() ) ) { 939 if ( at->get_dimension() != nullptr) return;941 if ( at->get_dimension() ) return; 940 942 if ( ListInit * init = dynamic_cast< ListInit * >( objDecl->get_init() ) ) { 941 943 at->set_dimension( new ConstantExpr( Constant::from_ulong( init->get_initializers().size() ) ) ); -
src/SymTab/Validate.h
r3268a58 r30f9072 18 18 #define VALIDATE_H 19 19 20 #include "SynTree/SynTree.h" 20 #include <list> // for list 21 22 class Declaration; 23 class Type; 21 24 22 25 namespace SymTab {
Note: See TracChangeset
for help on using the changeset viewer.