Changes in / [ec20ab9:bf4fe05]
- Files:
-
- 123 added
- 125 deleted
- 90 edited
Legend:
- Unmodified
- Added
- Removed
-
driver/cfa.cc
rec20ab9 rbf4fe05 26 26 #include <sys/stat.h> 27 27 28 #include "Common/SemanticError.h "28 #include "Common/SemanticError.hpp" 29 29 #include "config.h" // configure info 30 30 -
libcfa/src/enum.cfa
rec20ab9 rbf4fe05 1 #include "enum.hfa" 2 3 #pragma GCC visibility push(default) 4 5 forall(T, E| TypedEnum(T, E)) { 6 // constructors 7 8 // comparison 9 int ?==?(E l, E r) { return posE(l) == posE(r); } 10 int ?!=?(E l, E r) { return posE(l) != posE(r); } 11 int ?!=?(E l, zero_t) { return !( posE(l) == 0 ); } 12 int ?<?(E l, E r) { return posE(l) < posE(r); } 13 int ?<=?(E l, E r) { return posE(l) <= posE(r); } 14 int ?>?(E l, E r) { return posE(l) > posE(r); } 15 int ?>=?(E l, E r) { return posE(l) >= posE(r); } 16 } -
libcfa/src/enum.hfa
rec20ab9 rbf4fe05 1 1 #pragma once 2 2 3 forall( E ) trait Bounded { 4 E lowerBound(); 5 E upperBound(); 6 }; 3 forall(T) { // T is the based type of enum(T) 4 forall(E) trait Bounded { 5 E lowerBound(); 6 E upperBound(); 7 }; 7 8 8 forall( E | Bounded( E )) trait Serial {9 unsigned fromInstance( E e);10 E fromInt( unsigned int posn);11 E succ( E e);12 E pred( E e);13 };9 forall(E| Bounded(T, E)) trait Serial { 10 unsigned fromInstance(E e); 11 E fromInt(unsigned i); 12 E succ(E e); 13 E pred(E e); 14 }; 14 15 15 forall( E, T ) trait TypedEnum { 16 T valueE( E e ); 17 char * labelE( E e);18 unsigned int posE( E e);19 };16 // Opague Enum + TypedEnum 17 forall(E | Serial(T, E)) trait CfaEnum { 18 char * labelE(E e); 19 unsigned int posE(E e); 20 }; 20 21 21 forall( E, T | TypedEnum( E, T ) ) { 22 // comparison 23 int ?==?( E l, E r ); // true if l and r are same enumerators 24 int ?!=?( E l, E r ); // true if l and r are different enumerators 25 int ?!=?( E l, zero_t ); // true if l is not the first enumerator 26 int ?<?( E l, E r ); // true if l is an enuemerator before r 27 int ?<=?( E l, E r ); // true if l before or the same as r 28 int ?>?( E l, E r ); // true if l is an enuemrator after r 29 int ?>=?( E l, E r ); // true if l after or the same as r 22 forall(E| CfaEnum(T, E)) trait TypedEnum { 23 T valueE(E e); 24 }; 25 26 forall(E | TypedEnum(T, E)) { 27 // comparison 28 int ?==?(E l, E r); // true if l and r are same enumerators 29 int ?!=?(E l, E r); // true if l and r are different enumerators 30 int ?!=?(E l, zero_t); // true if l is not the first enumerator 31 int ?<?(E l, E r); // true if l is an enuemerator before r 32 int ?<=?(E l, E r); // true if l before or the same as r 33 int ?>?(E l, E r); // true if l is an enuemrator after r 34 int ?>=?(E l, E r); // true if l after or the same as r 35 } 30 36 } -
src/AST/Decl.cpp
rec20ab9 rbf4fe05 20 20 #include <unordered_map> 21 21 22 #include "Common/Eval.h "// for eval23 #include "Common/SemanticError.h "22 #include "Common/Eval.hpp" // for eval 23 #include "Common/SemanticError.hpp" 24 24 25 25 #include "Fwd.hpp" // for UniqueId -
src/AST/Expr.cpp
rec20ab9 rbf4fe05 27 27 #include "Type.hpp" 28 28 #include "TypeSubstitution.hpp" 29 #include "Common/ utility.h"30 #include "Common/SemanticError.h "31 #include "GenPoly/Lvalue.h "// for referencesPermissable32 #include "ResolvExpr/Unify.h "// for extractResultType33 #include "Tuples/Tuples.h "// for makeTupleType29 #include "Common/Utility.hpp" 30 #include "Common/SemanticError.hpp" 31 #include "GenPoly/Lvalue.hpp" // for referencesPermissable 32 #include "ResolvExpr/Unify.hpp" // for extractResultType 33 #include "Tuples/Tuples.hpp" // for makeTupleType 34 34 35 35 namespace ast { -
src/AST/Inspect.cpp
rec20ab9 rbf4fe05 24 24 #include "AST/Stmt.hpp" 25 25 #include "AST/Type.hpp" 26 #include "CodeGen/OperatorTable.h "26 #include "CodeGen/OperatorTable.hpp" 27 27 28 28 namespace ast { -
src/AST/Label.hpp
rec20ab9 rbf4fe05 21 21 22 22 #include "Node.hpp" 23 #include "Common/CodeLocation.h "23 #include "Common/CodeLocation.hpp" 24 24 25 25 namespace ast { -
src/AST/LinkageSpec.cpp
rec20ab9 rbf4fe05 20 20 #include <string> 21 21 22 #include "Common/CodeLocation.h "23 #include "Common/SemanticError.h "22 #include "Common/CodeLocation.hpp" 23 #include "Common/SemanticError.hpp" 24 24 25 25 namespace ast { -
src/AST/LinkageSpec.hpp
rec20ab9 rbf4fe05 19 19 20 20 #include "Bitfield.hpp" 21 #include "Common/CodeLocation.h "21 #include "Common/CodeLocation.hpp" 22 22 23 23 namespace ast { -
src/AST/Node.hpp
rec20ab9 rbf4fe05 20 20 #include <iosfwd> 21 21 22 #include "Common/ErrorObjects.h " // for SemanticErrorException22 #include "Common/ErrorObjects.hpp" // for SemanticErrorException 23 23 24 24 namespace ast { -
src/AST/ParseNode.hpp
rec20ab9 rbf4fe05 18 18 #include "Node.hpp" 19 19 20 #include "Common/CodeLocation.h "20 #include "Common/CodeLocation.hpp" 21 21 22 22 namespace ast { -
src/AST/Pass.hpp
rec20ab9 rbf4fe05 424 424 } 425 425 426 #include "Common/Stats.h "426 #include "Common/Stats.hpp" 427 427 428 428 namespace ast { -
src/AST/Pass.proto.hpp
rec20ab9 rbf4fe05 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // Pass. impl.hpp --7 // Pass.proto.hpp -- 8 8 // 9 9 // Author : Thierry Delisle … … 18 18 19 19 #include "Common/Iterate.hpp" 20 #include "Common/Stats/Heap.h "21 #include "Common/ utility.h"20 #include "Common/Stats/Heap.hpp" 21 #include "Common/Utility.hpp" 22 22 namespace ast { 23 23 template<typename core_t> class Pass; -
src/AST/Print.hpp
rec20ab9 rbf4fe05 19 19 20 20 #include "AST/Fwd.hpp" 21 #include "Common/Indenter.h "21 #include "Common/Indenter.hpp" 22 22 23 23 namespace ast { -
src/AST/Stmt.hpp
rec20ab9 rbf4fe05 24 24 #include "ParseNode.hpp" 25 25 #include "Visitor.hpp" 26 #include "Common/CodeLocation.h "26 #include "Common/CodeLocation.hpp" 27 27 28 28 // Must be included in *all* AST classes; should be #undef'd at the end of the file -
src/AST/SymbolTable.cpp
rec20ab9 rbf4fe05 23 23 #include "Inspect.hpp" 24 24 #include "Type.hpp" 25 #include "CodeGen/OperatorTable.h "// for isCtorDtorAssign26 #include "Common/SemanticError.h "27 #include "Common/Stats/Counter.h "28 #include "GenPoly/GenPoly.h "29 #include "InitTweak/InitTweak.h "30 #include "ResolvExpr/Cost.h "25 #include "CodeGen/OperatorTable.hpp" // for isCtorDtorAssign 26 #include "Common/SemanticError.hpp" 27 #include "Common/Stats/Counter.hpp" 28 #include "GenPoly/GenPoly.hpp" 29 #include "InitTweak/InitTweak.hpp" 30 #include "ResolvExpr/Cost.hpp" 31 31 #include "ResolvExpr/CandidateFinder.hpp" // for referenceToRvalueConversion 32 #include "ResolvExpr/Unify.h "33 #include "SymTab/Mangler.h "32 #include "ResolvExpr/Unify.hpp" 33 #include "SymTab/Mangler.hpp" 34 34 35 35 namespace ast { -
src/AST/SymbolTable.hpp
rec20ab9 rbf4fe05 21 21 #include "Fwd.hpp" 22 22 #include "Node.hpp" // for ptr, readonly 23 #include "Common/CodeLocation.h "24 #include "Common/PersistentMap.h "23 #include "Common/CodeLocation.hpp" 24 #include "Common/PersistentMap.hpp" 25 25 26 26 namespace ResolvExpr { -
src/AST/Type.cpp
rec20ab9 rbf4fe05 23 23 #include "Init.hpp" 24 24 #include "Inspect.hpp" 25 #include "Common/ utility.h"// for copy, move26 #include "Tuples/Tuples.h "// for isTtype25 #include "Common/Utility.hpp" // for copy, move 26 #include "Tuples/Tuples.hpp" // for isTtype 27 27 28 28 namespace ast { -
src/AST/TypeEnvironment.cpp
rec20ab9 rbf4fe05 29 29 #include "Print.hpp" 30 30 #include "Type.hpp" 31 #include "Common/Indenter.h "32 #include "ResolvExpr/ typeops.h" // for occurs33 #include "ResolvExpr/WidenMode.h "34 #include "ResolvExpr/Unify.h " // for unifyInexact35 #include "Tuples/Tuples.h " // for isTtype31 #include "Common/Indenter.hpp" 32 #include "ResolvExpr/Typeops.hpp" // for occurs 33 #include "ResolvExpr/WidenMode.hpp" 34 #include "ResolvExpr/Unify.hpp" // for unifyInexact 35 #include "Tuples/Tuples.hpp" // for isTtype 36 36 #include "CompilationState.hpp" 37 37 -
src/AST/TypeEnvironment.hpp
rec20ab9 rbf4fe05 28 28 #include "Type.hpp" 29 29 #include "TypeSubstitution.hpp" 30 #include "Common/Indenter.h "31 #include "ResolvExpr/WidenMode.h "30 #include "Common/Indenter.hpp" 31 #include "ResolvExpr/WidenMode.hpp" 32 32 33 33 namespace ast { -
src/AST/TypeSubstitution.cpp
rec20ab9 rbf4fe05 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // TypeSubstitution.c c--7 // TypeSubstitution.cpp -- 8 8 // 9 9 // Author : Richard C. Bilson -
src/AST/TypeSubstitution.hpp
rec20ab9 rbf4fe05 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // TypeSubstitution.h --7 // TypeSubstitution.hpp -- 8 8 // 9 9 // Author : Richard C. Bilson … … 16 16 #pragma once 17 17 18 #include <cassert> // for assert19 #include <list> // for list<>::iterator, _List_iterator18 #include <cassert> // for assert 19 #include <list> // for list<>::iterator, _List_iterator 20 20 #include <unordered_map> 21 21 #include <unordered_set> 22 #include <string> // for string, operator!=23 #include <utility> // for pair22 #include <string> // for string, operator!= 23 #include <utility> // for pair 24 24 25 #include "Fwd.hpp" // for UniqueId25 #include "Fwd.hpp" // for UniqueId 26 26 #include "ParseNode.hpp" 27 27 #include "Type.hpp" 28 #include "Common/SemanticError.h " // for SemanticError28 #include "Common/SemanticError.hpp" // for SemanticError 29 29 #include "Visitor.hpp" 30 30 #include "Decl.hpp" -
src/AST/Util.cpp
rec20ab9 rbf4fe05 20 20 #include "Pass.hpp" 21 21 #include "TranslationUnit.hpp" 22 #include "Common/ utility.h"23 #include "GenPoly/ScopedSet.h "22 #include "Common/Utility.hpp" 23 #include "GenPoly/ScopedSet.hpp" 24 24 25 25 #include <vector> -
src/BasicTypes-gen.cpp
rec20ab9 rbf4fe05 326 326 327 327 328 #define ConversionCost TOP_SRCDIR "src/ResolvExpr/ConversionCost.c c"328 #define ConversionCost TOP_SRCDIR "src/ResolvExpr/ConversionCost.cpp" 329 329 resetInput( file, ConversionCost, buffer, code, str ); 330 330 … … 405 405 406 406 407 #define CommonType TOP_SRCDIR "src/ResolvExpr/CommonType.c c"407 #define CommonType TOP_SRCDIR "src/ResolvExpr/CommonType.cpp" 408 408 resetInput( file, CommonType, buffer, code, str ); 409 409 … … 446 446 447 447 448 #define ManglerCommon TOP_SRCDIR "src/SymTab/ManglerCommon.c c"448 #define ManglerCommon TOP_SRCDIR "src/SymTab/ManglerCommon.cpp" 449 449 resetInput( file, ManglerCommon, buffer, code, str ); 450 450 -
src/CodeGen/CodeGenerator.cpp
rec20ab9 rbf4fe05 17 17 18 18 #include "AST/Print.hpp" 19 #include "OperatorTable.h "// for OperatorInfo, operatorLookup20 #include "CodeGen/GenType.h "// for genType19 #include "OperatorTable.hpp" // for OperatorInfo, operatorLookup 20 #include "CodeGen/GenType.hpp" // for genType 21 21 #include "Common/ToString.hpp" // for toString 22 #include "Common/UniqueName.h "// for UniqueName22 #include "Common/UniqueName.hpp" // for UniqueName 23 23 24 24 namespace CodeGen { -
src/CodeGen/CodeGenerator.hpp
rec20ab9 rbf4fe05 20 20 #include "AST/Fwd.hpp" 21 21 #include "AST/Pass.hpp" // for WithGuards, WithShortCircuiting, ... 22 #include "CodeGen/Options.h "// for Options23 #include "Common/Indenter.h "// for Indenter22 #include "CodeGen/Options.hpp" // for Options 23 #include "Common/Indenter.hpp" // for Indenter 24 24 25 25 -
src/CodeGen/module.mk
rec20ab9 rbf4fe05 18 18 CodeGen/CodeGenerator.cpp \ 19 19 CodeGen/CodeGenerator.hpp \ 20 CodeGen/GenType.c c\21 CodeGen/GenType.h \22 CodeGen/OperatorTable.c c\23 CodeGen/OperatorTable.h 20 CodeGen/GenType.cpp \ 21 CodeGen/GenType.hpp \ 22 CodeGen/OperatorTable.cpp \ 23 CodeGen/OperatorTable.hpp 24 24 25 25 SRC += $(SRC_CODEGEN) \ 26 CodeGen/ Generate.cc\27 CodeGen/ Generate.h\28 CodeGen/Fix Main.cc\29 CodeGen/Fix Main.h\30 CodeGen/ FixNames.cc\31 CodeGen/ FixNames.h\32 CodeGen/LinkOnce.c c\33 CodeGen/LinkOnce.h \34 CodeGen/Options.h 26 CodeGen/FixMain.cpp \ 27 CodeGen/FixMain.hpp \ 28 CodeGen/FixNames.cpp \ 29 CodeGen/FixNames.hpp \ 30 CodeGen/Generate.cpp \ 31 CodeGen/Generate.hpp \ 32 CodeGen/LinkOnce.cpp \ 33 CodeGen/LinkOnce.hpp \ 34 CodeGen/Options.hpp 35 35 36 36 SRCDEMANGLE += $(SRC_CODEGEN) -
src/Common/CodeLocationTools.cpp
rec20ab9 rbf4fe05 20 20 #include "AST/Pass.hpp" 21 21 #include "AST/TranslationUnit.hpp" 22 #include "Common/CodeLocation.h "22 #include "Common/CodeLocation.hpp" 23 23 24 24 namespace { -
src/Common/DeclStats.cpp
rec20ab9 rbf4fe05 19 19 #include "AST/Pass.hpp" 20 20 #include "AST/Print.hpp" 21 #include "Common/VectorMap.h "21 #include "Common/VectorMap.hpp" 22 22 23 23 #include <iostream> -
src/Common/ResolvProtoDump.cpp
rec20ab9 rbf4fe05 26 26 #include "AST/TranslationUnit.hpp" 27 27 #include "AST/Type.hpp" 28 #include "CodeGen/OperatorTable.h "28 #include "CodeGen/OperatorTable.hpp" 29 29 30 30 namespace { -
src/Common/module.mk
rec20ab9 rbf4fe05 16 16 17 17 SRC_COMMON = \ 18 Common/Assert.c c\19 Common/CodeLocation.h \18 Common/Assert.cpp \ 19 Common/CodeLocation.hpp \ 20 20 Common/CodeLocationTools.hpp \ 21 21 Common/CodeLocationTools.cpp \ 22 22 Common/DeclStats.hpp \ 23 23 Common/DeclStats.cpp \ 24 Common/ErrorObjects.h \25 Common/Eval.c c\26 Common/Eval.h \27 Common/Examine.c c\28 Common/Examine.h \29 Common/FilterCombos.h \30 Common/Indenter.h \31 Common/Indenter.c c\24 Common/ErrorObjects.hpp \ 25 Common/Eval.cpp \ 26 Common/Eval.hpp \ 27 Common/Examine.cpp \ 28 Common/Examine.hpp \ 29 Common/FilterCombos.hpp \ 30 Common/Indenter.hpp \ 31 Common/Indenter.cpp \ 32 32 Common/Iterate.hpp \ 33 Common/PersistentMap.h \33 Common/PersistentMap.hpp \ 34 34 Common/ResolvProtoDump.hpp \ 35 35 Common/ResolvProtoDump.cpp \ 36 Common/ScopedMap.h \37 Common/SemanticError.c c\38 Common/SemanticError.h \39 Common/Stats.h \40 Common/Stats/Base.h \41 Common/Stats/Counter.c c\42 Common/Stats/Counter.h \43 Common/Stats/Heap.c c\44 Common/Stats/Heap.h \45 Common/Stats/ResolveTime.c c\46 Common/Stats/ResolveTime.h \47 Common/Stats/Stats.c c\48 Common/Stats/Time.c c\49 Common/Stats/Time.h \36 Common/ScopedMap.hpp \ 37 Common/SemanticError.cpp \ 38 Common/SemanticError.hpp \ 39 Common/Stats.hpp \ 40 Common/Stats/Base.hpp \ 41 Common/Stats/Counter.cpp \ 42 Common/Stats/Counter.hpp \ 43 Common/Stats/Heap.cpp \ 44 Common/Stats/Heap.hpp \ 45 Common/Stats/ResolveTime.cpp \ 46 Common/Stats/ResolveTime.hpp \ 47 Common/Stats/Stats.cpp \ 48 Common/Stats/Time.cpp \ 49 Common/Stats/Time.hpp \ 50 50 Common/ToString.hpp \ 51 Common/UniqueName.c c\52 Common/UniqueName.h \53 Common/ utility.h\54 Common/VectorMap.h 51 Common/UniqueName.cpp \ 52 Common/UniqueName.hpp \ 53 Common/Utility.hpp \ 54 Common/VectorMap.hpp 55 55 56 56 SRC += $(SRC_COMMON) \ 57 Common/DebugMalloc.c c57 Common/DebugMalloc.cpp 58 58 59 59 SRCDEMANGLE += $(SRC_COMMON) -
src/CompilationState.cpp
rec20ab9 rbf4fe05 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // CompilationState.c c--7 // CompilationState.cpp -- 8 8 // 9 9 // Author : Rob Schluntz -
src/Concurrency/Corun.cpp
rec20ab9 rbf4fe05 19 19 #include "AST/Stmt.hpp" 20 20 #include "AST/TranslationUnit.hpp" 21 #include "Common/UniqueName.h "21 #include "Common/UniqueName.hpp" 22 22 using namespace ast; 23 23 using namespace std; -
src/Concurrency/Keywords.cpp
rec20ab9 rbf4fe05 14 14 // 15 15 16 #include "Concurrency/Keywords.h "16 #include "Concurrency/Keywords.hpp" 17 17 18 18 #include <iostream> … … 26 26 #include "AST/DeclReplacer.hpp" 27 27 #include "AST/TranslationUnit.hpp" 28 #include "CodeGen/OperatorTable.h "29 #include "Common/Examine.h "30 #include "Common/ utility.h"31 #include "Common/UniqueName.h "28 #include "CodeGen/OperatorTable.hpp" 29 #include "Common/Examine.hpp" 30 #include "Common/Utility.hpp" 31 #include "Common/UniqueName.hpp" 32 32 #include "ControlStruct/LabelGenerator.hpp" 33 #include "InitTweak/InitTweak.h "34 #include "Virtual/Tables.h "33 #include "InitTweak/InitTweak.hpp" 34 #include "Virtual/Tables.hpp" 35 35 36 36 namespace Concurrency { -
src/Concurrency/Waitfor.cpp
rec20ab9 rbf4fe05 14 14 // 15 15 16 #include "Waitfor.h "16 #include "Waitfor.hpp" 17 17 18 18 #include <string> 19 19 20 20 #include "AST/Pass.hpp" 21 #include "Common/UniqueName.h "22 #include "InitTweak/InitTweak.h "23 #include "ResolvExpr/Resolver.h "21 #include "Common/UniqueName.hpp" 22 #include "InitTweak/InitTweak.hpp" 23 #include "ResolvExpr/Resolver.hpp" 24 24 25 25 #include "AST/Print.hpp" -
src/Concurrency/Waituntil.cpp
rec20ab9 rbf4fe05 24 24 #include "AST/Stmt.hpp" 25 25 #include "AST/Type.hpp" 26 #include "Common/UniqueName.h "26 #include "Common/UniqueName.hpp" 27 27 28 28 using namespace ast; -
src/Concurrency/Waituntil.hpp
rec20ab9 rbf4fe05 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // Wait for.h--7 // Waituntil.hpp -- 8 8 // 9 9 // Author : Thierry Delisle -
src/Concurrency/module.mk
rec20ab9 rbf4fe05 21 21 Concurrency/Corun.hpp \ 22 22 Concurrency/Keywords.cpp \ 23 Concurrency/Keywords.h \23 Concurrency/Keywords.hpp \ 24 24 Concurrency/Waitfor.cpp \ 25 Concurrency/Waitfor.h \25 Concurrency/Waitfor.hpp \ 26 26 Concurrency/Waituntil.cpp \ 27 27 Concurrency/Waituntil.hpp -
src/ControlStruct/ExceptDecl.cpp
rec20ab9 rbf4fe05 14 14 // 15 15 16 #include "ExceptDecl.h "16 #include "ExceptDecl.hpp" 17 17 18 18 #include <sstream> … … 23 23 #include "AST/Print.hpp" 24 24 #include "AST/Type.hpp" 25 #include "Virtual/Tables.h "25 #include "Virtual/Tables.hpp" 26 26 27 27 namespace ControlStruct { -
src/ControlStruct/ExceptTranslate.cpp
rec20ab9 rbf4fe05 14 14 // 15 15 16 #include "ExceptTranslate.h "16 #include "ExceptTranslate.hpp" 17 17 18 18 #include "AST/Expr.hpp" -
src/ControlStruct/module.mk
rec20ab9 rbf4fe05 17 17 SRC += \ 18 18 ControlStruct/ExceptDecl.cpp \ 19 ControlStruct/ExceptDecl.h \19 ControlStruct/ExceptDecl.hpp \ 20 20 ControlStruct/ExceptTranslate.cpp \ 21 ControlStruct/ExceptTranslate.h \21 ControlStruct/ExceptTranslate.hpp \ 22 22 ControlStruct/FixLabels.cpp \ 23 23 ControlStruct/FixLabels.hpp \ -
src/GenPoly/Box.cpp
rec20ab9 rbf4fe05 14 14 // 15 15 16 #include "Box.h "16 #include "Box.hpp" 17 17 18 18 #include "AST/Decl.hpp" // for Decl, FunctionDecl, ... … … 24 24 #include "AST/Vector.hpp" // for vector 25 25 #include "AST/GenericSubstitution.hpp" // for genericSubstitution 26 #include "CodeGen/OperatorTable.h "// for isAssignment26 #include "CodeGen/OperatorTable.hpp" // for isAssignment 27 27 #include "Common/Iterate.hpp" // for group_iterate 28 #include "Common/ScopedMap.h "// for ScopedMap28 #include "Common/ScopedMap.hpp" // for ScopedMap 29 29 #include "Common/ToString.hpp" // for toCString 30 #include "Common/UniqueName.h "// for UniqueName31 #include "GenPoly/FindFunction.h "// for findFunction32 #include "GenPoly/GenPoly.h "// for getFunctionType, ...33 #include "GenPoly/Lvalue.h "// for generalizedLvalue34 #include "GenPoly/ScopedSet.h "// for ScopedSet30 #include "Common/UniqueName.hpp" // for UniqueName 31 #include "GenPoly/FindFunction.hpp" // for findFunction 32 #include "GenPoly/GenPoly.hpp" // for getFunctionType, ... 33 #include "GenPoly/Lvalue.hpp" // for generalizedLvalue 34 #include "GenPoly/ScopedSet.hpp" // for ScopedSet 35 35 #include "GenPoly/ScrubTypeVars.hpp" // for scrubTypeVars, scrubAllTypeVars 36 #include "ResolvExpr/Unify.h "// for typesCompatible37 #include "SymTab/Mangler.h "// for mangle, mangleType36 #include "ResolvExpr/Unify.hpp" // for typesCompatible 37 #include "SymTab/Mangler.hpp" // for mangle, mangleType 38 38 39 39 namespace GenPoly { -
src/GenPoly/InstantiateGeneric.cpp
rec20ab9 rbf4fe05 14 14 // 15 15 16 #include "InstantiateGeneric.h "16 #include "InstantiateGeneric.hpp" 17 17 18 18 #include <cassert> // for assertf, assert … … 27 27 #include "AST/TranslationUnit.hpp" // for TranslationUnit 28 28 #include "AST/Vector.hpp" // for vector 29 #include "CodeGen/OperatorTable.h "// for isAssignment30 #include "Common/ScopedMap.h "// for ScopedMap31 #include "Common/UniqueName.h "// for UniqueName32 #include "GenPoly/GenPoly.h "// for isPolyType, typesPolyCompatible29 #include "CodeGen/OperatorTable.hpp" // for isAssignment 30 #include "Common/ScopedMap.hpp" // for ScopedMap 31 #include "Common/UniqueName.hpp" // for UniqueName 32 #include "GenPoly/GenPoly.hpp" // for isPolyType, typesPolyCompatible 33 33 #include "GenPoly/ScrubTypeVars.hpp" // for scrubAllTypeVars 34 34 #include "ResolvExpr/AdjustExprType.hpp" // for adjustExprType 35 #include "ResolvExpr/Unify.h "// for typesCompatible35 #include "ResolvExpr/Unify.hpp" // for typesCompatible 36 36 37 37 namespace GenPoly { -
src/GenPoly/Lvalue.cpp
rec20ab9 rbf4fe05 14 14 // 15 15 16 #include "Lvalue.h "16 #include "Lvalue.hpp" 17 17 18 18 #include <set> … … 24 24 #include "AST/LinkageSpec.hpp" // for Linkage 25 25 #include "AST/Pass.hpp" 26 #include "Common/SemanticError.h "// for SemanticWarning26 #include "Common/SemanticError.hpp" // for SemanticWarning 27 27 #include "Common/ToString.hpp" // for toCString 28 #include "Common/UniqueName.h "// for UniqueName29 #include "GenPoly/GenPoly.h "// for genFunctionType30 #include "ResolvExpr/ typeops.h"// for typesCompatible31 #include "ResolvExpr/Unify.h "// for unify28 #include "Common/UniqueName.hpp" // for UniqueName 29 #include "GenPoly/GenPoly.hpp" // for genFunctionType 30 #include "ResolvExpr/Typeops.hpp" // for typesCompatible 31 #include "ResolvExpr/Unify.hpp" // for unify 32 32 33 33 #if 0 -
src/GenPoly/ScrubTypeVars.cpp
rec20ab9 rbf4fe05 16 16 #include "ScrubTypeVars.hpp" 17 17 18 #include <utility> // for pair18 #include <utility> // for pair 19 19 20 20 #include "AST/Pass.hpp" 21 #include "GenPoly.h " // for mangleType, TyVarMap, alignof...22 #include "GenPoly/ErasableScopedMap.h " // for ErasableScopedMap<>::const_it...23 #include "SymTab/Mangler.h " // for mangleType21 #include "GenPoly.hpp" // for mangleType, TyVarMap, align... 22 #include "GenPoly/ErasableScopedMap.hpp" // for ErasableScopedMap<>::const_... 23 #include "SymTab/Mangler.hpp" // for mangleType 24 24 25 25 namespace GenPoly { -
src/GenPoly/ScrubTypeVars.hpp
rec20ab9 rbf4fe05 19 19 20 20 #include "AST/Fwd.hpp" // for Node 21 #include "GenPoly.h "// for TypeVarMap21 #include "GenPoly.hpp" // for TypeVarMap 22 22 23 23 namespace GenPoly { -
src/GenPoly/Specialize.cpp
rec20ab9 rbf4fe05 14 14 // 15 15 16 #include "Specialize.h "16 #include "Specialize.hpp" 17 17 18 18 #include "AST/Copy.hpp" // for deepCopy … … 20 20 #include "AST/Pass.hpp" // for Pass 21 21 #include "AST/TypeEnvironment.hpp" // for OpenVarSet, AssertionSet 22 #include "Common/UniqueName.h "// for UniqueName23 #include "GenPoly/GenPoly.h "// for getFunctionType24 #include "ResolvExpr/FindOpenVars.h "// for findOpenVars22 #include "Common/UniqueName.hpp" // for UniqueName 23 #include "GenPoly/GenPoly.hpp" // for getFunctionType 24 #include "ResolvExpr/FindOpenVars.hpp" // for findOpenVars 25 25 26 26 namespace GenPoly { -
src/GenPoly/module.mk
rec20ab9 rbf4fe05 16 16 17 17 SRC_GENPOLY = \ 18 GenPoly/GenPoly.c c\19 GenPoly/GenPoly.h \20 GenPoly/Lvalue2.c c\21 GenPoly/Lvalue.h 18 GenPoly/GenPoly.cpp \ 19 GenPoly/GenPoly.hpp \ 20 GenPoly/Lvalue2.cpp \ 21 GenPoly/Lvalue.hpp 22 22 23 23 SRC += $(SRC_GENPOLY) \ 24 24 GenPoly/Box.cpp \ 25 GenPoly/Box.h \26 GenPoly/ErasableScopedMap.h \27 GenPoly/FindFunction.c c\28 GenPoly/FindFunction.h \25 GenPoly/Box.hpp \ 26 GenPoly/ErasableScopedMap.hpp \ 27 GenPoly/FindFunction.cpp \ 28 GenPoly/FindFunction.hpp \ 29 29 GenPoly/InstantiateGeneric.cpp \ 30 GenPoly/InstantiateGeneric.h \30 GenPoly/InstantiateGeneric.hpp \ 31 31 GenPoly/Lvalue.cpp \ 32 GenPoly/ScopedSet.h \32 GenPoly/ScopedSet.hpp \ 33 33 GenPoly/ScrubTypeVars.cpp \ 34 34 GenPoly/ScrubTypeVars.hpp \ 35 35 GenPoly/Specialize.cpp \ 36 GenPoly/Specialize.h 36 GenPoly/Specialize.hpp 37 37 38 38 SRCDEMANGLE += $(SRC_GENPOLY) -
src/InitTweak/FixInit.cpp
rec20ab9 rbf4fe05 1 #include "FixInit.h "1 #include "FixInit.hpp" 2 2 3 3 #include <stddef.h> // for NULL … … 22 22 #include "AST/SymbolTable.hpp" 23 23 #include "AST/Type.hpp" 24 #include "CodeGen/OperatorTable.h "// for isConstructor, isCtorDtor, isD...25 #include "Common/SemanticError.h "// for SemanticError24 #include "CodeGen/OperatorTable.hpp" // for isConstructor, isCtorDtor, isD... 25 #include "Common/SemanticError.hpp" // for SemanticError 26 26 #include "Common/ToString.hpp" // for toCString 27 #include "Common/UniqueName.h "// for UniqueName28 #include "FixGlobalInit.h "// for fixGlobalInit29 #include "GenInit.h "// for genCtorDtor30 #include "GenPoly/GenPoly.h "// for getFunctionType31 #include "ResolvExpr/Resolver.h "// for findVoidExpression32 #include "ResolvExpr/Unify.h "// for typesCompatible27 #include "Common/UniqueName.hpp" // for UniqueName 28 #include "FixGlobalInit.hpp" // for fixGlobalInit 29 #include "GenInit.hpp" // for genCtorDtor 30 #include "GenPoly/GenPoly.hpp" // for getFunctionType 31 #include "ResolvExpr/Resolver.hpp" // for findVoidExpression 32 #include "ResolvExpr/Unify.hpp" // for typesCompatible 33 33 #include "SymTab/GenImplicitCall.hpp" // for genImplicitCall 34 34 -
src/InitTweak/module.mk
rec20ab9 rbf4fe05 16 16 17 17 SRC_INITTWEAK = \ 18 InitTweak/GenInit.c c\19 InitTweak/GenInit.h \20 InitTweak/InitTweak.c c\21 InitTweak/InitTweak.h 18 InitTweak/GenInit.cpp \ 19 InitTweak/GenInit.hpp \ 20 InitTweak/InitTweak.cpp \ 21 InitTweak/InitTweak.hpp 22 22 23 23 SRC += $(SRC_INITTWEAK) \ 24 InitTweak/FixGlobalInit.c c\25 InitTweak/FixGlobalInit.h \24 InitTweak/FixGlobalInit.cpp \ 25 InitTweak/FixGlobalInit.hpp \ 26 26 InitTweak/FixInit.cpp \ 27 InitTweak/FixInit.h 27 InitTweak/FixInit.hpp 28 28 29 29 SRCDEMANGLE += $(SRC_INITTWEAK) -
src/MakeLibCfa.cpp
rec20ab9 rbf4fe05 19 19 #include "AST/Fwd.hpp" 20 20 #include "AST/Pass.hpp" 21 #include "CodeGen/OperatorTable.h "22 #include "Common/UniqueName.h "21 #include "CodeGen/OperatorTable.hpp" 22 #include "Common/UniqueName.hpp" 23 23 24 24 namespace LibCfa { -
src/Makefile.am
rec20ab9 rbf4fe05 53 53 include Virtual/module.mk 54 54 55 $(addprefix $(srcdir)/, ResolvExpr/ConversionCost.c c ResolvExpr/CommonType.cc SymTab/ManglerCommon.cc) : $(srcdir)/AST/BasicKind.hpp55 $(addprefix $(srcdir)/, ResolvExpr/ConversionCost.cpp ResolvExpr/CommonType.cpp SymTab/ManglerCommon.cpp) : $(srcdir)/AST/BasicKind.hpp 56 56 57 57 $(srcdir)/AST/BasicKind.hpp : BasicTypes-gen.cpp … … 65 65 ___driver_cfa_cpp_SOURCES = $(SRC) 66 66 ___driver_cfa_cpp_LDADD = -ldl $(LIBPROFILER) $(LIBTCMALLOC) 67 EXTRA_DIST = include/cassert include/optional BasicTypes-gen.c c67 EXTRA_DIST = include/cassert include/optional BasicTypes-gen.cpp 68 68 69 69 AM_CXXFLAGS = @HOST_FLAGS@ -Wno-deprecated -Wall -Wextra -Werror=return-type -DDEBUG_ALL -I./Parser -I$(srcdir)/Parser -I$(srcdir)/include -DYY_NO_INPUT -O3 -g -std=c++17 $(TCMALLOCFLAG) … … 73 73 cfa_cpplib_PROGRAMS += $(DEMANGLER) 74 74 EXTRA_PROGRAMS = ../driver/demangler 75 ___driver_demangler_SOURCES = SymTab/demangler.c c# test driver for the demangler, also useful as a sanity check that libdemangle.a is complete75 ___driver_demangler_SOURCES = SymTab/demangler.cpp # test driver for the demangler, also useful as a sanity check that libdemangle.a is complete 76 76 ___driver_demangler_LDADD = libdemangle.a -ldl # yywrap 77 77 noinst_LIBRARIES = $(LIBDEMANGLE) -
src/Parser/RunParser.cpp
rec20ab9 rbf4fe05 18 18 #include "AST/TranslationUnit.hpp" // for TranslationUnit 19 19 #include "Common/CodeLocationTools.hpp" // for forceFillCodeLocations 20 #include "Parser/DeclarationNode.h "// for DeclarationNode, buildList21 #include "Parser/TypedefTable.h "// for TypedefTable20 #include "Parser/DeclarationNode.hpp" // for DeclarationNode, buildList 21 #include "Parser/TypedefTable.hpp" // for TypedefTable 22 22 23 23 // Variables global to the parsing code. -
src/Parser/lex.ll
rec20ab9 rbf4fe05 44 44 45 45 #include "config.h" // configure info 46 #include "DeclarationNode.h "// for DeclarationNode47 #include "ExpressionNode.h "// for LabelNode48 #include "InitializerNode.h "// for InitializerNode49 #include "ParseNode.h "50 #include "ParserTypes.h "// for Token51 #include "StatementNode.h "// for CondCtl, ForCtrl52 #include "TypedefTable.h "46 #include "DeclarationNode.hpp" // for DeclarationNode 47 #include "ExpressionNode.hpp" // for LabelNode 48 #include "InitializerNode.hpp" // for InitializerNode 49 #include "ParseNode.hpp" 50 #include "ParserTypes.hpp" // for Token 51 #include "StatementNode.hpp" // for CondCtl, ForCtrl 52 #include "TypedefTable.hpp" 53 53 // This (generated) header must come late as it is missing includes. 54 54 #include "parser.hh" // generated info -
src/Parser/module.mk
rec20ab9 rbf4fe05 20 20 21 21 SRC += \ 22 Parser/DeclarationNode.c c\23 Parser/DeclarationNode.h \24 Parser/ExpressionNode.c c\25 Parser/ExpressionNode.h \26 Parser/InitializerNode.c c\27 Parser/InitializerNode.h \22 Parser/DeclarationNode.cpp \ 23 Parser/DeclarationNode.hpp \ 24 Parser/ExpressionNode.cpp \ 25 Parser/ExpressionNode.hpp \ 26 Parser/InitializerNode.cpp \ 27 Parser/InitializerNode.hpp \ 28 28 Parser/lex.ll \ 29 Parser/ParseNode.c c\30 Parser/ParseNode.h \29 Parser/ParseNode.cpp \ 30 Parser/ParseNode.hpp \ 31 31 Parser/parser.yy \ 32 Parser/ParserTypes.h \33 Parser/ parserutility.h\32 Parser/ParserTypes.hpp \ 33 Parser/ParserUtility.hpp \ 34 34 Parser/RunParser.cpp \ 35 35 Parser/RunParser.hpp \ 36 Parser/StatementNode.c c\37 Parser/StatementNode.h \38 Parser/TypeData.c c\39 Parser/TypeData.h \40 Parser/TypedefTable.c c\41 Parser/TypedefTable.h 36 Parser/StatementNode.cpp \ 37 Parser/StatementNode.hpp \ 38 Parser/TypeData.cpp \ 39 Parser/TypeData.hpp \ 40 Parser/TypedefTable.cpp \ 41 Parser/TypedefTable.hpp 42 42 43 MOSTLYCLEANFILES += Parser/lex.cc Parser/parser.cc Parser/parser.hh Parser/parser.output 43 MOSTLYCLEANFILES += \ 44 Parser/lex.cc \ 45 Parser/parser.cc \ 46 Parser/parser.hh \ 47 Parser/parser.output -
src/Parser/parser.yy
rec20ab9 rbf4fe05 48 48 using namespace std; 49 49 50 #include "DeclarationNode.h "// for DeclarationNode, ...51 #include "ExpressionNode.h "// for ExpressionNode, ...52 #include "InitializerNode.h "// for InitializerNode, ...53 #include "ParserTypes.h "54 #include "StatementNode.h "// for build_...55 #include "TypedefTable.h "56 #include "TypeData.h "50 #include "DeclarationNode.hpp" // for DeclarationNode, ... 51 #include "ExpressionNode.hpp" // for ExpressionNode, ... 52 #include "InitializerNode.hpp" // for InitializerNode, ... 53 #include "ParserTypes.hpp" 54 #include "StatementNode.hpp" // for build_... 55 #include "TypedefTable.hpp" 56 #include "TypeData.hpp" 57 57 #include "AST/Type.hpp" // for BasicType, BasicKind 58 #include "Common/SemanticError.h "// error_str59 #include "Common/ utility.h"// for maybeMoveBuild, maybeBuild, CodeLo...58 #include "Common/SemanticError.hpp" // error_str 59 #include "Common/Utility.hpp" // for maybeMoveBuild, maybeBuild, CodeLo... 60 60 61 61 // lex uses __null in a boolean context, it's fine. -
src/ResolvExpr/Candidate.hpp
rec20ab9 rbf4fe05 20 20 #include <vector> 21 21 22 #include "Cost.h "22 #include "Cost.hpp" 23 23 #include "AST/Node.hpp" 24 24 #include "AST/TypeEnvironment.hpp" 25 #include "Common/Indenter.h "25 #include "Common/Indenter.hpp" 26 26 27 27 namespace ast { -
src/ResolvExpr/CandidateFinder.cpp
rec20ab9 rbf4fe05 17 17 18 18 #include <deque> 19 #include <iterator> // for back_inserter19 #include <iterator> // for back_inserter 20 20 #include <sstream> 21 21 #include <string> … … 25 25 #include "AdjustExprType.hpp" 26 26 #include "Candidate.hpp" 27 #include "CastCost.hpp" // for castCost27 #include "CastCost.hpp" // for castCost 28 28 #include "CompilationState.hpp" 29 #include "ConversionCost.h " // for conversionCast30 #include "Cost.h "29 #include "ConversionCost.hpp" // for conversionCast 30 #include "Cost.hpp" 31 31 #include "ExplodedArg.hpp" 32 32 #include "PolyCost.hpp" 33 #include "RenameVars.h " // for renameTyVars34 #include "Resolver.h "35 #include "ResolveTypeof.h "33 #include "RenameVars.hpp" // for renameTyVars 34 #include "Resolver.hpp" 35 #include "ResolveTypeof.hpp" 36 36 #include "SatisfyAssertions.hpp" 37 37 #include "SpecCost.hpp" 38 #include " typeops.h" // for combos39 #include "Unify.h "40 #include "WidenMode.h "38 #include "Typeops.hpp" // for combos 39 #include "Unify.hpp" 40 #include "WidenMode.hpp" 41 41 #include "AST/Expr.hpp" 42 42 #include "AST/Node.hpp" … … 45 45 #include "AST/SymbolTable.hpp" 46 46 #include "AST/Type.hpp" 47 #include "Common/ utility.h" // for move, copy48 #include "SymTab/Mangler.h "49 #include "Tuples/Tuples.h " // for handleTupleAssignment50 #include "InitTweak/InitTweak.h " // for getPointerBase51 52 #include "Common/Stats/Counter.h "47 #include "Common/Utility.hpp" // for move, copy 48 #include "SymTab/Mangler.hpp" 49 #include "Tuples/Tuples.hpp" // for handleTupleAssignment 50 #include "InitTweak/InitTweak.hpp" // for getPointerBase 51 52 #include "Common/Stats/Counter.hpp" 53 53 54 54 #include "AST/Inspect.hpp" // for getFunctionName … … 2138 2138 } 2139 2139 2140 // get the valueE(...) ApplicationExpr that returns the enum value2141 const ast::Expr * getValueEnumCall(2142 const ast::Expr * expr,2143 const ResolvExpr::ResolveContext & context, const ast::TypeEnvironment & env ) {2144 auto callExpr = new ast::UntypedExpr(2145 expr->location, new ast::NameExpr( expr->location, "valueE"), {expr} );2146 CandidateFinder finder( context, env );2147 finder.find( callExpr );2148 CandidateList winners = findMinCost( finder.candidates );2149 if (winners.size() != 1) {2150 SemanticError( callExpr, "Ambiguous expression in valueE..." );2151 }2152 CandidateRef & choice = winners.front();2153 return choice->expr;2154 }2155 2156 2140 const ast::Expr * createCondExpr( const ast::Expr * expr ) { 2157 2141 assert( expr ); -
src/ResolvExpr/CandidateFinder.hpp
rec20ab9 rbf4fe05 70 70 const ast::Expr * expr, Cost & cost ); 71 71 72 /// Get the valueE application that returns the enum's value.73 const ast::Expr * getValueEnumCall( const ast::Expr * expr,74 const ResolveContext & context, const ast::TypeEnvironment & env );75 76 72 /// Wrap an expression to convert the result to a conditional result. 77 73 const ast::Expr * createCondExpr( const ast::Expr * expr ); -
src/ResolvExpr/CandidatePrinter.cpp
rec20ab9 rbf4fe05 24 24 #include "AST/TranslationUnit.hpp" 25 25 #include "ResolvExpr/CandidateFinder.hpp" 26 #include "ResolvExpr/Resolver.h "26 #include "ResolvExpr/Resolver.hpp" 27 27 28 28 namespace ResolvExpr { -
src/ResolvExpr/CastCost.hpp
rec20ab9 rbf4fe05 16 16 #pragma once 17 17 18 #include "ResolvExpr/Cost.h" // for Cost19 20 18 namespace ast { 21 19 class SymbolTable; … … 25 23 26 24 namespace ResolvExpr { 25 26 class Cost; 27 27 28 28 Cost castCost( -
src/ResolvExpr/CommonType.hpp
rec20ab9 rbf4fe05 18 18 #include "AST/Fwd.hpp" 19 19 #include "AST/TypeEnvironment.hpp" // for AssertionSet, OpenVarSet 20 #include "WidenMode.h "// for WidenMode20 #include "WidenMode.hpp" // for WidenMode 21 21 22 22 namespace ResolvExpr { -
src/ResolvExpr/ExplodedArg.cpp
rec20ab9 rbf4fe05 16 16 #include "ExplodedArg.hpp" 17 17 18 #include "Tuples/Explode.h " // for Tuples::explode18 #include "Tuples/Explode.hpp" // for Tuples::explode 19 19 20 20 namespace ResolvExpr { -
src/ResolvExpr/ExplodedArg.hpp
rec20ab9 rbf4fe05 19 19 20 20 #include "Candidate.hpp" // for Candidate, CandidateList 21 #include "Cost.h "// for Cost21 #include "Cost.hpp" // for Cost 22 22 #include "AST/Expr.hpp" 23 23 #include "AST/Node.hpp" // for ptr -
src/ResolvExpr/SatisfyAssertions.cpp
rec20ab9 rbf4fe05 28 28 #include "CandidateFinder.hpp" 29 29 #include "CommonType.hpp" 30 #include "Cost.h "31 #include "RenameVars.h "30 #include "Cost.hpp" 31 #include "RenameVars.hpp" 32 32 #include "SpecCost.hpp" 33 #include " typeops.h"34 #include "Unify.h "33 #include "Typeops.hpp" 34 #include "Unify.hpp" 35 35 #include "AST/Decl.hpp" 36 36 #include "AST/Expr.hpp" … … 40 40 #include "AST/SymbolTable.hpp" 41 41 #include "AST/TypeEnvironment.hpp" 42 #include "FindOpenVars.h "43 #include "Common/FilterCombos.h "44 #include "Common/Indenter.h "45 #include "GenPoly/GenPoly.h "46 #include "SymTab/Mangler.h "42 #include "FindOpenVars.hpp" 43 #include "Common/FilterCombos.hpp" 44 #include "Common/Indenter.hpp" 45 #include "GenPoly/GenPoly.hpp" 46 #include "SymTab/Mangler.hpp" 47 47 48 48 namespace ResolvExpr { -
src/ResolvExpr/module.mk
rec20ab9 rbf4fe05 16 16 17 17 SRC_RESOLVEXPR = \ 18 ResolvExpr/AdjustExprType.c c\18 ResolvExpr/AdjustExprType.cpp \ 19 19 ResolvExpr/AdjustExprType.hpp \ 20 20 ResolvExpr/Candidate.cpp \ … … 22 22 ResolvExpr/CandidateFinder.hpp \ 23 23 ResolvExpr/Candidate.hpp \ 24 ResolvExpr/CastCost.c c\24 ResolvExpr/CastCost.cpp \ 25 25 ResolvExpr/CastCost.hpp \ 26 ResolvExpr/CommonType.c c\26 ResolvExpr/CommonType.cpp \ 27 27 ResolvExpr/CommonType.hpp \ 28 ResolvExpr/ConversionCost.c c\29 ResolvExpr/ConversionCost.h \30 ResolvExpr/Cost.h \31 ResolvExpr/CurrentObject.c c\32 ResolvExpr/CurrentObject.h \28 ResolvExpr/ConversionCost.cpp \ 29 ResolvExpr/ConversionCost.hpp \ 30 ResolvExpr/Cost.hpp \ 31 ResolvExpr/CurrentObject.cpp \ 32 ResolvExpr/CurrentObject.hpp \ 33 33 ResolvExpr/ExplodedArg.cpp \ 34 34 ResolvExpr/ExplodedArg.hpp \ 35 ResolvExpr/FindOpenVars.c c\36 ResolvExpr/FindOpenVars.h \37 ResolvExpr/PolyCost.c c\35 ResolvExpr/FindOpenVars.cpp \ 36 ResolvExpr/FindOpenVars.hpp \ 37 ResolvExpr/PolyCost.cpp \ 38 38 ResolvExpr/PolyCost.hpp \ 39 ResolvExpr/PtrsAssignable.c c\39 ResolvExpr/PtrsAssignable.cpp \ 40 40 ResolvExpr/PtrsAssignable.hpp \ 41 ResolvExpr/PtrsCastable.c c\41 ResolvExpr/PtrsCastable.cpp \ 42 42 ResolvExpr/PtrsCastable.hpp \ 43 ResolvExpr/RenameVars.c c\44 ResolvExpr/RenameVars.h \45 ResolvExpr/Resolver.c c\46 ResolvExpr/Resolver.h \47 ResolvExpr/ResolveTypeof.c c\48 ResolvExpr/ResolveTypeof.h \43 ResolvExpr/RenameVars.cpp \ 44 ResolvExpr/RenameVars.hpp \ 45 ResolvExpr/Resolver.cpp \ 46 ResolvExpr/Resolver.hpp \ 47 ResolvExpr/ResolveTypeof.cpp \ 48 ResolvExpr/ResolveTypeof.hpp \ 49 49 ResolvExpr/ResolveMode.hpp \ 50 50 ResolvExpr/SatisfyAssertions.cpp \ 51 51 ResolvExpr/SatisfyAssertions.hpp \ 52 ResolvExpr/SpecCost.c c\52 ResolvExpr/SpecCost.cpp \ 53 53 ResolvExpr/SpecCost.hpp \ 54 ResolvExpr/ typeops.h\55 ResolvExpr/Unify.c c\56 ResolvExpr/Unify.h \57 ResolvExpr/WidenMode.h 54 ResolvExpr/Typeops.hpp \ 55 ResolvExpr/Unify.cpp \ 56 ResolvExpr/Unify.hpp \ 57 ResolvExpr/WidenMode.hpp 58 58 59 59 SRC += $(SRC_RESOLVEXPR) \ -
src/SymTab/GenImplicitCall.cpp
rec20ab9 rbf4fe05 23 23 #include "AST/Stmt.hpp" // for ExprStmt 24 24 #include "AST/Type.hpp" // for ArrayType, BasicType, ... 25 #include "CodeGen/OperatorTable.h "// for isCtorDtor26 #include "Common/UniqueName.h "// for UniqueName27 #include "Common/ utility.h"// for splice25 #include "CodeGen/OperatorTable.hpp" // for isCtorDtor 26 #include "Common/UniqueName.hpp" // for UniqueName 27 #include "Common/Utility.hpp" // for splice 28 28 29 29 namespace SymTab { -
src/SymTab/GenImplicitCall.hpp
rec20ab9 rbf4fe05 16 16 #pragma once 17 17 18 #include "InitTweak/InitTweak.h " // for InitExpander18 #include "InitTweak/InitTweak.hpp" // for InitExpander 19 19 20 20 namespace SymTab { -
src/SymTab/module.mk
rec20ab9 rbf4fe05 16 16 17 17 SRC_SYMTAB = \ 18 SymTab/FixFunction.c c\19 SymTab/FixFunction.h \18 SymTab/FixFunction.cpp \ 19 SymTab/FixFunction.hpp \ 20 20 SymTab/GenImplicitCall.cpp \ 21 21 SymTab/GenImplicitCall.hpp \ 22 SymTab/Mangler.c c\23 SymTab/ManglerCommon.c c\24 SymTab/Mangler.h 22 SymTab/Mangler.cpp \ 23 SymTab/ManglerCommon.cpp \ 24 SymTab/Mangler.hpp 25 25 26 26 SRC += $(SRC_SYMTAB) 27 27 28 28 SRCDEMANGLE += $(SRC_SYMTAB) \ 29 SymTab/Demangle.c c\30 SymTab/Demangle.h 29 SymTab/Demangle.cpp \ 30 SymTab/Demangle.hpp -
src/Tuples/TupleExpansion.cpp
rec20ab9 rbf4fe05 14 14 // 15 15 16 #include "Tuples.h "16 #include "Tuples.hpp" 17 17 18 18 #include "AST/Pass.hpp" 19 #include "Common/ScopedMap.h "19 #include "Common/ScopedMap.hpp" 20 20 21 21 namespace Tuples { -
src/Tuples/module.mk
rec20ab9 rbf4fe05 16 16 17 17 SRC_TUPLES = \ 18 Tuples/Explode.c c\19 Tuples/Explode.h \20 Tuples/TupleAssignment.c c\18 Tuples/Explode.cpp \ 19 Tuples/Explode.hpp \ 20 Tuples/TupleAssignment.cpp \ 21 21 Tuples/TupleExpansion.cpp \ 22 Tuples/Tuples.c c\23 Tuples/Tuples.h 22 Tuples/Tuples.cpp \ 23 Tuples/Tuples.hpp 24 24 25 25 SRC += $(SRC_TUPLES) -
src/Validate/Autogen.cpp
rec20ab9 rbf4fe05 16 16 #include "Autogen.hpp" 17 17 18 #include <algorithm> // for count_if19 #include <cassert> // for strict_dynamic_cast, assert, assertf20 #include <iterator> // for back_insert_iterator, back_inserter21 #include <list> // for list, _List_iterator, list<>::iter...22 #include <set> // for set, _Rb_tree_const_iterator23 #include <utility> // for pair24 #include <vector> // for vector18 #include <algorithm> // for count_if 19 #include <cassert> // for strict_dynamic_cast, assert, a... 20 #include <iterator> // for back_insert_iterator, back_ins... 21 #include <list> // for list, _List_iterator, list<>::... 22 #include <set> // for set, _Rb_tree_const_iterator 23 #include <utility> // for pair 24 #include <vector> // for vector 25 25 26 26 #include "AST/Attribute.hpp" … … 34 34 #include "AST/Stmt.hpp" 35 35 #include "AST/SymbolTable.hpp" 36 #include "CodeGen/OperatorTable.h "// for isCtorDtor, isCtorDtorAssign37 #include "Common/ScopedMap.h " // for ScopedMap<>::const_iterator, Scope...38 #include "Common/ utility.h"// for cloneAll, operator+39 #include "GenPoly/ScopedSet.h "// for ScopedSet, ScopedSet<>::iterator40 #include "InitTweak/GenInit.h "// for fixReturnStatements41 #include "InitTweak/InitTweak.h "// for isAssignment, isCopyConstructor36 #include "CodeGen/OperatorTable.hpp" // for isCtorDtor, isCtorDtorAssign 37 #include "Common/ScopedMap.hpp" // for ScopedMap<>::const_iterator, S... 38 #include "Common/Utility.hpp" // for cloneAll, operator+ 39 #include "GenPoly/ScopedSet.hpp" // for ScopedSet, ScopedSet<>::iterator 40 #include "InitTweak/GenInit.hpp" // for fixReturnStatements 41 #include "InitTweak/InitTweak.hpp" // for isAssignment, isCopyConstructor 42 42 #include "SymTab/GenImplicitCall.hpp" // for genImplicitCall 43 #include "SymTab/Mangler.h "// for Mangler43 #include "SymTab/Mangler.hpp" // for Mangler 44 44 #include "CompilationState.hpp" 45 45 -
src/Validate/CompoundLiteral.cpp
rec20ab9 rbf4fe05 20 20 #include "AST/Pass.hpp" 21 21 #include "AST/TranslationUnit.hpp" 22 #include "Common/UniqueName.h "22 #include "Common/UniqueName.hpp" 23 23 24 24 namespace Validate { -
src/Validate/EliminateTypedef.cpp
rec20ab9 rbf4fe05 21 21 #include "AST/Pass.hpp" 22 22 #include "AST/Stmt.hpp" 23 #include "Common/ utility.h"23 #include "Common/Utility.hpp" 24 24 25 25 namespace Validate { -
src/Validate/EnumAndPointerDecay.cpp
rec20ab9 rbf4fe05 20 20 #include "AST/Pass.hpp" 21 21 #include "AST/Type.hpp" 22 #include "SymTab/FixFunction.h "22 #include "SymTab/FixFunction.hpp" 23 23 #include "Validate/NoIdSymbolTable.hpp" 24 24 -
src/Validate/FindSpecialDecls.cpp
rec20ab9 rbf4fe05 14 14 // 15 15 16 #include "Validate/FindSpecialDecls.h "16 #include "Validate/FindSpecialDecls.hpp" 17 17 18 18 #include "AST/Decl.hpp" -
src/Validate/FixQualifiedTypes.cpp
rec20ab9 rbf4fe05 21 21 #include "AST/TranslationUnit.hpp" 22 22 #include "Common/ToString.hpp" // for toString 23 #include "SymTab/Mangler.h "// for Mangler23 #include "SymTab/Mangler.hpp" // for Mangler 24 24 #include "Validate/NoIdSymbolTable.hpp" 25 25 -
src/Validate/FixReturnTypes.cpp
rec20ab9 rbf4fe05 20 20 #include "AST/Type.hpp" 21 21 #include "CodeGen/CodeGenerator.hpp" 22 #include "ResolvExpr/Unify.h "22 #include "ResolvExpr/Unify.hpp" 23 23 24 24 namespace Validate { -
src/Validate/ForallPointerDecay.cpp
rec20ab9 rbf4fe05 20 20 #include "AST/DeclReplacer.hpp" 21 21 #include "AST/Pass.hpp" 22 #include "CodeGen/OperatorTable.h "23 #include "Common/CodeLocation.h "22 #include "CodeGen/OperatorTable.hpp" 23 #include "Common/CodeLocation.hpp" 24 24 #include "Common/ToString.hpp" 25 #include "Common/ utility.h"26 #include "SymTab/FixFunction.h "25 #include "Common/Utility.hpp" 26 #include "SymTab/FixFunction.hpp" 27 27 28 28 namespace Validate { -
src/Validate/ImplementEnumFunc.cpp
rec20ab9 rbf4fe05 2 2 #include "AST/Pass.hpp" 3 3 #include "AST/TranslationUnit.hpp" 4 #include "CodeGen/OperatorTable.h " // for isCtorDtor, isCtorDtorAssign5 #include "InitTweak/InitTweak.h " // for isAssignment, isCopyConstructor4 #include "CodeGen/OperatorTable.hpp" // for isCtorDtor, isCtorDtorAssign 5 #include "InitTweak/InitTweak.hpp" // for isAssignment, isCopyConstructor 6 6 namespace Validate { 7 7 … … 28 28 proto_linkage{ast::Linkage::Cforall} {} 29 29 30 void genAttrFunctions();31 void genSuccPredPosn();32 // void genSuccPredDecl();33 34 void appendReturnThis(ast::FunctionDecl* decl) {35 assert(1 <= decl->params.size());36 assert(1 == decl->returns.size());37 assert(decl->stmts);38 39 const CodeLocation& location = (decl->stmts->kids.empty())40 ? decl->stmts->location41 : decl->stmts->kids.back()->location;42 const ast::DeclWithType* thisParam = decl->params.front();43 decl->stmts.get_and_mutate()->push_back(new ast::ReturnStmt(44 location, new ast::VariableExpr(location, thisParam)));45 }46 void genAttrStandardFuncs() {47 ast::FunctionDecl* (EnumAttrFuncGenerator::*standardProtos[4])()48 const = {&EnumAttrFuncGenerator::genCtorProto,49 &EnumAttrFuncGenerator::genCopyProto,50 &EnumAttrFuncGenerator::genDtorProto,51 &EnumAttrFuncGenerator::genAssignProto};52 for (auto& generator : standardProtos) {53 ast::FunctionDecl* decl = (this->*generator)();54 produceForwardDecl(decl);55 genFuncBody(decl);56 if (CodeGen::isAssignment(decl->name)) {57 appendReturnThis(decl);58 }59 produceDecl(decl);60 }61 }62 63 30 private: 64 31 const CodeLocation& getLocation() const { return decl->location; } … … 73 40 const ast::Decl* getDecl() const { return decl; } 74 41 75 // Implement Bounded trait for enum 76 void genBoundedFunctions(); 77 // Implement Serial trait for enum 42 // Implement Bounded trait 43 void genBoundedFunctions(); 44 ast::FunctionDecl* genBoundedProto(const char *) const; 45 void genBoundedBody(ast::FunctionDecl* func) const; 46 47 // Implement Serial trait 78 48 void genSerialTraitFuncs(); 79 80 // Bounded trait 81 ast::FunctionDecl* genLowerBoundProto() const; 82 ast::FunctionDecl* genUpperBoundProto() const; 83 void genLowerBoundBody(ast::FunctionDecl* func) const; 84 void genUpperBoundBody(ast::FunctionDecl* func) const; 85 49 ast::FunctionDecl* genFromIntProto() const; 50 ast::FunctionDecl* genFromInstanceProto() const; 51 ast::FunctionDecl* genInstToInstFuncProto(const char* func) const; 52 void genFromIntBody(ast::FunctionDecl *) const; 53 void genFromInstanceBody(ast::FunctionDecl *) const; 54 void genSuccPredBody(ast::FunctionDecl *, const char *) const; 55 56 // Implement TypedEnum trait 57 void genTypedEnumFuncs(); 58 void genTypedEnumFunction(const ast::EnumAttribute attr); 86 59 ast::FunctionDecl* genPosnProto() const; 87 60 ast::FunctionDecl* genLabelProto() const; 88 61 ast::FunctionDecl* genValueProto() const; 89 90 // Serial trait 91 ast::FunctionDecl* genFromIntProto() const; 92 ast::FunctionDecl* genFromInstanceProto() const; 93 ast::FunctionDecl* genSuccProto() const; 94 ast::FunctionDecl* genPredProto() const; 95 96 void genFromIntBody(ast::FunctionDecl *) const; 97 void genFromInstanceBody(ast::FunctionDecl *) const; 62 void genValueOrLabelBody( 63 ast::FunctionDecl* func, ast::ObjectDecl* arrDecl) const; 64 void genPosnBody(ast::FunctionDecl* func) const; 65 98 66 //////////////// 99 100 ast::FunctionDecl* genSuccPosProto() const;101 ast::FunctionDecl* genPredPosProto() const;102 67 103 68 // --------------------------------------------------- … … 121 86 } 122 87 123 /// E = EnumAttrType<T>`124 /// `void ?{}(E & _dst)`.125 ast::FunctionDecl* genCtorProto() const {126 return genProto("?{}", {dstParam()}, {});127 }128 129 /// void ?{}(E & _dst, E _src)`.130 ast::FunctionDecl* genCopyProto() const {131 return genProto("?{}", {dstParam(), srcParam()}, {});132 }133 134 ///`void ^?{}(E & _dst)`.135 ast::FunctionDecl* genDtorProto() const {136 // The destructor must be mutex on a concurrent type.137 return genProto("^?{}", {dstParam()}, {});138 }139 140 /// `E ?{}(E & _dst, E _src)`.141 ast::FunctionDecl* genAssignProto() const {142 // Only the name is different, so just reuse the generation function.143 auto retval = srcParam();144 retval->name = "_ret";145 return genProto("?=?", {dstParam(), srcParam()}, {retval});146 }147 148 void genFuncBody(ast::FunctionDecl* func) {149 const CodeLocation& location = func->location;150 auto& params = func->params;151 if (InitTweak::isCopyConstructor(func) ||152 InitTweak::isAssignment(func)) {153 assert(2 == params.size());154 auto dstParam = params.front().strict_as<ast::ObjectDecl>();155 auto srcParam = params.back().strict_as<ast::ObjectDecl>();156 func->stmts = genCopyBody(location, dstParam, srcParam);157 } else {158 assert(1 == params.size());159 // Default constructor and destructor is empty.160 func->stmts = new ast::CompoundStmt(location);161 // Add unused attribute to parameter to silence warnings.162 addUnusedAttribute(params.front());163 164 // Just an extra step to make the forward and declaration match.165 if (forwards.empty()) return;166 ast::FunctionDecl* fwd = strict_dynamic_cast<ast::FunctionDecl*>(167 forwards.back().get_and_mutate());168 addUnusedAttribute(fwd->params.front());169 }170 }171 172 const ast::CompoundStmt* genCopyBody( const CodeLocation& location,173 const ast::ObjectDecl* dstParam, const ast::ObjectDecl* srcParam) {174 return new ast::CompoundStmt(175 location,176 {new ast::ExprStmt(177 location,178 new ast::UntypedExpr(179 location, new ast::NameExpr(location, "__builtin_memcpy"),180 {181 new ast::AddressExpr( location,182 new ast::VariableExpr( location, dstParam ) ),183 new ast::AddressExpr( location,184 new ast::VariableExpr( location, srcParam ) ),185 new ast::SizeofExpr( location, srcParam->type ),186 }))});187 }188 189 void genDtorBody(ast::FunctionDecl* func) {190 const CodeLocation& location = func->location;191 auto& params = func->params;192 assert(1 == params.size());193 func->stmts = new ast::CompoundStmt(location);194 addUnusedAttribute(params.front());195 196 // Just an extra step to make the forward and declaration match.197 if (forwards.empty()) return;198 ast::FunctionDecl* fwd = strict_dynamic_cast<ast::FunctionDecl*>(199 forwards.back().get_and_mutate());200 addUnusedAttribute(fwd->params.front());201 }202 203 // ast::FunctionDecl*204 88 // ---------------------------------------------------- 205 206 ast::FunctionDecl* genSuccPredFunc(bool succ);207 89 208 90 const ast::Init* getAutoInit(const ast::Init* prev) const; … … 214 96 const ast::EnumAttribute attr, const CodeLocation& location, 215 97 std::vector<ast::ptr<ast::Init>>& inits) const; 216 void genValueOrLabelBody(217 ast::FunctionDecl* func, ast::ObjectDecl* arrDecl) const;218 void genPosnBody(ast::FunctionDecl* func) const;219 void genAttributesDecls(const ast::EnumAttribute attr);220 98 }; 221 99 … … 374 252 } 375 253 254 void EnumAttrFuncGenerator::genSuccPredBody(ast::FunctionDecl * func, const char* opt) const { 255 auto params = func->params; 256 assert( params.size() == 1 ); 257 auto param = params.front(); 258 auto enumToInt = new ast::CastExpr( 259 func->location, 260 new ast::VariableExpr(func->location, param), 261 new ast::BasicType(ast::BasicKind::UnsignedInt), 262 ast::GeneratedFlag::ExplicitCast 263 ); 264 ast::UntypedExpr* addOneExpr = ast::UntypedExpr::createCall( func->location, 265 opt, 266 {enumToInt, 267 ast::ConstantExpr::from_int(func->location, 1)} 268 ); 269 auto intToEnum = new ast::CastExpr( 270 func->location, 271 addOneExpr, 272 new ast::EnumInstType( decl ), 273 ast::GeneratedFlag::ExplicitCast 274 ); 275 func->stmts = new ast::CompoundStmt( 276 func->location, { 277 new ast::ReturnStmt( 278 func->location, 279 intToEnum 280 ) 281 } 282 ); 283 } 284 285 376 286 void EnumAttrFuncGenerator::genSerialTraitFuncs() { 377 auto fromIntProto = genFromIntProto(); 378 produceForwardDecl(fromIntProto); 379 genFromIntBody(fromIntProto); 380 produceDecl(fromIntProto); 381 382 auto fromInstanceProto = genFromInstanceProto(); 383 produceForwardDecl(fromInstanceProto); 384 genFromInstanceBody(fromInstanceProto); 385 produceDecl(fromInstanceProto); 386 387 auto succProto = genSuccProto(); 388 auto predProto = genPredProto(); 389 produceForwardDecl(succProto); 390 produceForwardDecl(predProto); 391 } 392 393 ast::FunctionDecl* EnumAttrFuncGenerator::genSuccProto() const { 287 ast::FunctionDecl * protos[4] = { 288 genFromIntProto(), 289 genFromInstanceProto(), 290 genInstToInstFuncProto("succ"), 291 genInstToInstFuncProto("pred") 292 }; 293 for (auto& proto: protos) produceForwardDecl(proto); 294 genFromIntBody(protos[0]); 295 genFromInstanceBody(protos[1]); 296 genSuccPredBody(protos[2], "?+?"); 297 genSuccPredBody(protos[3], "?-?"); 298 for (auto& proto: protos) produceDecl(proto); 299 } 300 301 ast::FunctionDecl* EnumAttrFuncGenerator::genInstToInstFuncProto(const char * func) const { 394 302 return genProto( 395 "succ",303 func, 396 304 {new ast::ObjectDecl(getLocation(), "_i", new ast::EnumInstType(decl))}, 397 305 {new ast::ObjectDecl(getLocation(), "_ret", … … 399 307 } 400 308 401 ast::FunctionDecl* EnumAttrFuncGenerator::genPredProto() const { 402 return genProto( 403 "pred", 404 {new ast::ObjectDecl(getLocation(), "_i", new ast::EnumInstType(decl))}, 405 {new ast::ObjectDecl(getLocation(), "_ret", 406 new ast::EnumInstType(decl))}); 407 } 408 409 ast::FunctionDecl* EnumAttrFuncGenerator::genLowerBoundProto() const { 410 return genProto("lowerBound", {}, { 309 ast::FunctionDecl* EnumAttrFuncGenerator::genBoundedProto(const char * func) const { 310 return genProto(func, {}, { 411 311 new ast::ObjectDecl(getLocation(), "_i", new ast::EnumInstType(decl)) 412 312 }); 413 313 } 414 314 415 ast::FunctionDecl* EnumAttrFuncGenerator::genUpperBoundProto() const { 416 return genProto("upperBound", {}, { 417 new ast::ObjectDecl(getLocation(), "_i", new ast::EnumInstType(decl)) 418 }); 419 } 420 421 void EnumAttrFuncGenerator::genLowerBoundBody(ast::FunctionDecl* func) const { 315 void EnumAttrFuncGenerator::genBoundedBody(ast::FunctionDecl* func) const { 422 316 const CodeLocation & loc = func->location; 423 auto mem = decl->members.front(); 424 // auto expr = new ast::QualifiedNameExpr( loc, decl, mem->name ); 425 // expr->result = new ast::EnumInstType( decl ); 317 auto mem = func->name=="lowerBound"? decl->members.front() : decl->members.back(); 426 318 auto expr = new ast::NameExpr( loc, mem->name ); 427 319 func->stmts = new ast::CompoundStmt( loc, {new ast::ReturnStmt(loc, expr)}); 428 320 } 429 321 430 void EnumAttrFuncGenerator::genUpperBoundBody(ast::FunctionDecl* func) const {431 const CodeLocation & loc = func->location;432 auto mem = decl->members.back();433 auto expr = new ast::NameExpr( loc, mem->name );434 // expr->result = new ast::EnumInstType( decl );435 func->stmts = new ast::CompoundStmt( loc, {new ast::ReturnStmt(loc, expr)});436 }437 438 322 void EnumAttrFuncGenerator::genBoundedFunctions() { 439 ast::FunctionDecl * upperDecl = genUpperBoundProto(); 440 produceForwardDecl(upperDecl); 441 genUpperBoundBody(upperDecl); 442 produceDecl(upperDecl); 443 444 ast::FunctionDecl * lowerDecl = genLowerBoundProto(); 445 produceForwardDecl(lowerDecl); 446 genLowerBoundBody(lowerDecl); 447 produceDecl(lowerDecl); 323 ast::FunctionDecl * boundedProtos[2] = {genBoundedProto("upperBound"), genBoundedProto("lowerBound")}; 324 for (auto & protos: boundedProtos) { 325 produceForwardDecl(protos); 326 genBoundedBody(protos); 327 produceDecl(protos); 328 } 448 329 } 449 330 450 331 inline ast::EnumAttrType * getPosnType( const ast::EnumDecl * decl ) { 451 332 return new ast::EnumAttrType(new ast::EnumInstType(decl), ast::EnumAttribute::Posn); 452 }453 454 ast::FunctionDecl* EnumAttrFuncGenerator::genSuccPosProto() const {455 return genProto(456 "_successor_",457 {new ast::ObjectDecl(getLocation(), "_i", getPosnType(decl))},458 {new ast::ObjectDecl(getLocation(), "_ret", getPosnType(decl))}459 );460 }461 462 ast::FunctionDecl* EnumAttrFuncGenerator::genPredPosProto() const {463 return genProto(464 "_predessor_",465 {new ast::ObjectDecl(getLocation(), "_i", getPosnType(decl))},466 {new ast::ObjectDecl(getLocation(), "_ret", getPosnType(decl))}467 );468 333 } 469 334 … … 511 376 } 512 377 513 void EnumAttrFuncGenerator::gen AttributesDecls(const ast::EnumAttribute attr) {378 void EnumAttrFuncGenerator::genTypedEnumFunction(const ast::EnumAttribute attr) { 514 379 if (attr == ast::EnumAttribute::Value || 515 380 attr == ast::EnumAttribute::Label) { 381 // TypedEnum's backing arrays 516 382 std::vector<ast::ptr<ast::Init>> inits = 517 383 attr == ast::EnumAttribute::Value ? genValueInit() : genLabelInit(); … … 534 400 } 535 401 536 ast::FunctionDecl* EnumAttrFuncGenerator::genSuccPredFunc(bool succ) { 537 ast::FunctionDecl* funcDecl = succ ? genSuccPosProto() : genPredPosProto(); 538 produceForwardDecl(funcDecl); 539 540 const CodeLocation& location = getLocation(); 541 542 auto& params = funcDecl->params; 543 assert(params.size() == 1); 544 auto param = params.front().strict_as<ast::ObjectDecl>(); 545 546 547 auto rets = funcDecl->returns; 548 assert(params.size() == 1); 549 auto ret = rets.front().strict_as<ast::ObjectDecl>(); 550 auto retType = ret->type.strict_as<ast::EnumAttrType>(); 551 552 auto addOneExpr = ast::UntypedExpr::createCall( location, 553 succ? "?+?": "?-?", 554 {new ast::VariableExpr(location, param), 555 ast::ConstantExpr::from_int(location, 1)} 556 ); 557 558 funcDecl->stmts = new ast::CompoundStmt( 559 location, { 560 new ast::ReturnStmt( 561 location, 562 new ast::CastExpr(location, addOneExpr, retType) 563 ) 564 } 565 ); 566 567 return funcDecl; 568 } 569 570 void EnumAttrFuncGenerator::genAttrFunctions() { 571 genAttributesDecls(ast::EnumAttribute::Value); 572 genAttributesDecls(ast::EnumAttribute::Label); 573 genAttributesDecls(ast::EnumAttribute::Posn); 574 } 575 576 // void EnumAttrFuncGenerator::genSuccPredDecl() { 577 // auto succProto = genSuccProto(); 578 // auto predProto = genPredProto(); 579 580 // produceForwardDecl(succProto); 581 // produceForwardDecl(predProto); 582 // } 583 584 void EnumAttrFuncGenerator::genSuccPredPosn() { 585 ast::FunctionDecl* succ = genSuccPredFunc(true); 586 ast::FunctionDecl* pred = genSuccPredFunc(false); 587 588 produceDecl(succ); 589 produceDecl(pred); 402 void EnumAttrFuncGenerator::genTypedEnumFuncs() { 403 if (decl->base) genTypedEnumFunction(ast::EnumAttribute::Value); 404 genTypedEnumFunction(ast::EnumAttribute::Label); 405 genTypedEnumFunction(ast::EnumAttribute::Posn); 590 406 } 591 407 … … 593 409 std::list<ast::ptr<ast::Decl>>& decls) { 594 410 // Generate the functions (they go into forwards and definitions). 595 genAttrStandardFuncs(); 596 genAttrFunctions(); 411 genTypedEnumFuncs(); 597 412 genSerialTraitFuncs(); 598 genSuccPredPosn();599 // problematic600 413 genBoundedFunctions(); 601 414 // Now export the lists contents. … … 618 431 619 432 void ImplementEnumFunc::previsit(const ast::EnumDecl* enumDecl) { 620 if (!enumDecl->body) return; 621 if (!enumDecl->base) return; 622 433 if (!enumDecl->body || !enumDecl->isTyped) return; 623 434 ast::EnumInstType enumInst(enumDecl->name); 624 435 enumInst.base = enumDecl; 625 626 436 EnumAttrFuncGenerator gen(enumDecl, &enumInst, functionNesting); 627 437 gen.generateAndAppendFunctions(declsToAddAfter); -
src/Validate/ReplaceTypedef.cpp
rec20ab9 rbf4fe05 18 18 #include "AST/Copy.hpp" 19 19 #include "AST/Pass.hpp" 20 #include "Common/ScopedMap.h "21 #include "Common/UniqueName.h "22 #include "ResolvExpr/Unify.h "20 #include "Common/ScopedMap.hpp" 21 #include "Common/UniqueName.hpp" 22 #include "ResolvExpr/Unify.hpp" 23 23 24 24 namespace Validate { -
src/Validate/VerifyCtorDtorAssign.cpp
rec20ab9 rbf4fe05 17 17 18 18 #include "AST/Pass.hpp" 19 #include "CodeGen/OperatorTable.h "19 #include "CodeGen/OperatorTable.hpp" 20 20 21 21 namespace Validate { -
src/Validate/module.mk
rec20ab9 rbf4fe05 16 16 17 17 SRC_VALIDATE = \ 18 Validate/FindSpecialDecls.h 18 Validate/FindSpecialDecls.hpp 19 19 20 20 SRC += $(SRC_VALIDATE) \ … … 40 40 Validate/HoistTypeDecls.cpp \ 41 41 Validate/HoistTypeDecls.hpp \ 42 Validate/ImplementEnumFunc.cpp \ 43 Validate/ImplementEnumFunc.hpp \ 42 44 Validate/InitializerLength.cpp \ 43 45 Validate/InitializerLength.hpp \ … … 52 54 Validate/ReturnCheck.hpp \ 53 55 Validate/VerifyCtorDtorAssign.cpp \ 54 Validate/VerifyCtorDtorAssign.hpp \ 55 Validate/ReplacePseudoFunc.cpp \ 56 Validate/ReplacePseudoFunc.hpp \ 57 Validate/ImplementEnumFunc.cpp \ 58 Validate/ImplementEnumFunc.hpp 56 Validate/VerifyCtorDtorAssign.hpp 59 57 60 58 SRCDEMANGLE += $(SRC_VALIDATE) -
src/Virtual/module.mk
rec20ab9 rbf4fe05 16 16 17 17 SRC += \ 18 Virtual/ExpandCasts.c c\19 Virtual/ExpandCasts.h \20 Virtual/Tables.c c\21 Virtual/Tables.h \18 Virtual/ExpandCasts.cpp \ 19 Virtual/ExpandCasts.hpp \ 20 Virtual/Tables.cpp \ 21 Virtual/Tables.hpp \ 22 22 Virtual/VirtualDtor.cpp \ 23 23 Virtual/VirtualDtor.hpp -
src/include/cassert
rec20ab9 rbf4fe05 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // assert.h--7 // cassert -- 8 8 // 9 9 // Author : Peter A. Buhr -
src/include/optional
rec20ab9 rbf4fe05 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // optional .h--7 // optional -- 8 8 // 9 9 // Author : Michael L. Brooks -
src/main.cpp
rec20ab9 rbf4fe05 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // main.c c--7 // main.cpp -- 8 8 // 9 9 // Author : Peter Buhr and Rob Schluntz … … 35 35 #include "CompilationState.hpp" 36 36 #include "../config.h" // for CFA_LIBDIR 37 #include "CodeGen/FixMain.h "// for FixMain38 #include "CodeGen/FixNames.h "// for fixNames39 #include "CodeGen/Generate.h "// for generate40 #include "CodeGen/LinkOnce.h "// for translateLinkOnce37 #include "CodeGen/FixMain.hpp" // for FixMain 38 #include "CodeGen/FixNames.hpp" // for fixNames 39 #include "CodeGen/Generate.hpp" // for generate 40 #include "CodeGen/LinkOnce.hpp" // for translateLinkOnce 41 41 #include "Common/CodeLocationTools.hpp" // for forceFillCodeLocations 42 42 #include "Common/DeclStats.hpp" // for printDeclStats 43 43 #include "Common/ResolvProtoDump.hpp" // for dumpAsResolverProto 44 #include "Common/Stats.h "// for Stats45 #include "Common/ utility.h"// for deleteAll, filter, printAll44 #include "Common/Stats.hpp" // for Stats 45 #include "Common/Utility.hpp" // for deleteAll, filter, printAll 46 46 #include "Concurrency/Actors.hpp" // for implementActors 47 47 #include "Concurrency/Corun.hpp" // for implementCorun 48 #include "Concurrency/Keywords.h "// for implementMutex, implement...49 #include "Concurrency/Waitfor.h "// for generateWaitfor48 #include "Concurrency/Keywords.hpp" // for implementMutex, implement... 49 #include "Concurrency/Waitfor.hpp" // for generateWaitfor 50 50 #include "Concurrency/Waituntil.hpp" // for generateWaitUntil 51 #include "ControlStruct/ExceptDecl.h "// for translateExcept52 #include "ControlStruct/ExceptTranslate.h "// for translateThrows, translat...51 #include "ControlStruct/ExceptDecl.hpp" // for translateExcept 52 #include "ControlStruct/ExceptTranslate.hpp"// for translateThrows, translat... 53 53 #include "ControlStruct/FixLabels.hpp" // for fixLabels 54 54 #include "ControlStruct/HoistControlDecls.hpp" // hoistControlDecls 55 #include "GenPoly/Box.h "// for box56 #include "GenPoly/InstantiateGeneric.h "// for instantiateGeneric57 #include "GenPoly/Lvalue.h "// for convertLvalue58 #include "GenPoly/Specialize.h "// for convertSpecializations59 #include "InitTweak/FixInit.h "// for fix60 #include "InitTweak/GenInit.h "// for genInit55 #include "GenPoly/Box.hpp" // for box 56 #include "GenPoly/InstantiateGeneric.hpp" // for instantiateGeneric 57 #include "GenPoly/Lvalue.hpp" // for convertLvalue 58 #include "GenPoly/Specialize.hpp" // for convertSpecializations 59 #include "InitTweak/FixInit.hpp" // for fix 60 #include "InitTweak/GenInit.hpp" // for genInit 61 61 #include "MakeLibCfa.hpp" // for makeLibCfa 62 62 #include "Parser/RunParser.hpp" // for buildList, dumpParseTree,... 63 63 #include "ResolvExpr/CandidatePrinter.hpp" // for printCandidates 64 64 #include "ResolvExpr/EraseWith.hpp" // for eraseWith 65 #include "ResolvExpr/Resolver.h "// for resolve66 #include "Tuples/Tuples.h "// for expandMemberTuples, expan...65 #include "ResolvExpr/Resolver.hpp" // for resolve 66 #include "Tuples/Tuples.hpp" // for expandMemberTuples, expan... 67 67 #include "Validate/Autogen.hpp" // for autogenerateRoutines 68 #include "Validate/ImplementEnumFunc.hpp" // for implementEnumFunc69 68 #include "Validate/CompoundLiteral.hpp" // for handleCompoundLiterals 70 69 #include "Validate/EliminateTypedef.hpp" // for eliminateTypedef 71 70 #include "Validate/EnumAndPointerDecay.hpp" // for decayEnumsAndPointers 72 #include "Validate/FindSpecialDecls.h "// for findGlobalDecls71 #include "Validate/FindSpecialDecls.hpp" // for findGlobalDecls 73 72 #include "Validate/FixQualifiedTypes.hpp" // for fixQualifiedTypes 74 73 #include "Validate/FixReturnTypes.hpp" // for fixReturnTypes … … 77 76 #include "Validate/HoistStruct.hpp" // for hoistStruct 78 77 #include "Validate/HoistTypeDecls.hpp" // for hoistTypeDecls 78 #include "Validate/ImplementEnumFunc.hpp" // for implementEnumFunc 79 79 #include "Validate/InitializerLength.hpp" // for setLengthFromInitializer 80 80 #include "Validate/LabelAddressFixer.hpp" // for fixLabelAddresses … … 83 83 #include "Validate/ReturnCheck.hpp" // for checkReturnStatements 84 84 #include "Validate/VerifyCtorDtorAssign.hpp" // for verifyCtorDtorAssign 85 #include "Validate/ReplacePseudoFunc.hpp" // for replacePseudoFunc 86 #include "Virtual/ExpandCasts.h" // for expandCasts 85 #include "Virtual/ExpandCasts.hpp" // for expandCasts 87 86 #include "Virtual/VirtualDtor.hpp" // for implementVirtDtors 88 87 … … 383 382 PASS( "Resolve", ResolvExpr::resolve, transUnit ); 384 383 DUMP( exprp, std::move( transUnit ) ); 385 PASS( "Replace Pseudo Func", Validate::replacePseudoFunc, transUnit );386 384 PASS( "Fix Init", InitTweak::fix, transUnit, buildingLibrary() ); // Here 387 385 PASS( "Erase With", ResolvExpr::eraseWith, transUnit ); -
tests/enum_tests/.expect/voidEnum.txt
rec20ab9 rbf4fe05 1 Not Equal 1 Two different Opague Enum Should not be the same: 2 a and b are Not Equal 3 Default Output: 2 4 0 3 5 1 6 a 7 b -
tests/enum_tests/structEnum.cfa
rec20ab9 rbf4fe05 17 17 }; 18 18 19 // PointEnum foo(PointEnum in) {20 //return in;21 //}19 PointEnum identity(PointEnum in) { 20 return in; 21 } 22 22 23 23 // The only valid usage -
tests/enum_tests/voidEnum.cfa
rec20ab9 rbf4fe05 1 1 #include <fstream.hfa> 2 2 #include <enum.hfa> 3 3 enum() voidEnum { 4 4 a, b, c … … 9 9 }; 10 10 11 // void foo (const enum voidEnum & t){} 11 char* a[voidEnum] = { 12 "A", 13 "B", 14 "C" 15 }; 12 16 13 17 int main() { 14 18 enum voidEnum v_1 = a; 15 19 enum voidEnum v_2 = b; 16 // foo(b); 17 // enum voidEnum v_3 = 10; 18 // Error as int cannot convert to void enum 20 sout | "Two different Opague Enum Should not be the same:"; 19 21 if ( v_1 == v_2 ) { 20 sout | " Equal" | nl;22 sout | "a and b are Equal" | nl; 21 23 } else { 22 sout | " Not Equal" | nl;24 sout | "a and b are Not Equal" | nl; 23 25 } 24 sout | a | nl; 25 sout | b | nl; 26 sout | "Default Output:"; 27 sout | a; 28 sout | b; 29 30 sout | labelE(v_1); 31 sout | labelE(v_2); 32 26 33 }
Note: See TracChangeset
for help on using the changeset viewer.