- Timestamp:
- Aug 14, 2017, 2:03:39 PM (8 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:
- 74b007ba
- Parents:
- fd344aa (diff), 54cd58b0 (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:
-
- 14 added
- 4 deleted
- 199 edited
- 1 moved
-
CodeGen/CodeGenerator.cc (modified) (2 diffs)
-
CodeGen/CodeGenerator.h (modified) (4 diffs)
-
CodeGen/FixMain.h (modified) (2 diffs)
-
CodeGen/FixNames.h (modified) (2 diffs)
-
CodeGen/GenType.cc (modified) (2 diffs)
-
CodeGen/GenType.h (modified) (2 diffs)
-
CodeGen/Generate.cc (modified) (2 diffs)
-
CodeGen/Generate.h (modified) (2 diffs)
-
CodeGen/OperatorTable.cc (modified) (3 diffs)
-
CodeGen/OperatorTable.h (modified) (2 diffs)
-
CodeTools/DeclStats.h (modified) (2 diffs)
-
CodeTools/TrackLoc.cc (modified) (3 diffs)
-
CodeTools/TrackLoc.h (modified) (2 diffs)
-
Common/CompilerError.h (modified) (2 diffs)
-
Common/PassVisitor.h (modified) (2 diffs)
-
Common/PassVisitor.impl.h (modified) (3 diffs)
-
Common/PassVisitor.proto.h (modified) (1 diff)
-
Common/ScopedMap.h (modified) (2 diffs)
-
Common/SemanticError.h (modified) (2 diffs)
-
Common/UnimplementedError.h (modified) (2 diffs)
-
Common/UniqueName.h (modified) (2 diffs)
-
Common/VectorMap.h (modified) (2 diffs)
-
Common/utility.h (modified) (2 diffs)
-
Concurrency/Keywords.cc (modified) (3 diffs)
-
Concurrency/Keywords.h (modified) (3 diffs)
-
ControlStruct/ExceptTranslate.cc (modified) (20 diffs)
-
ControlStruct/ExceptTranslate.h (modified) (2 diffs)
-
ControlStruct/ForExprMutator.h (modified) (2 diffs)
-
ControlStruct/LabelFixer.h (modified) (2 diffs)
-
ControlStruct/LabelGenerator.h (modified) (2 diffs)
-
ControlStruct/MLEMutator.h (modified) (2 diffs)
-
ControlStruct/Mutate.h (modified) (2 diffs)
-
GenPoly/Box.cc (modified) (7 diffs)
-
GenPoly/Box.h (modified) (2 diffs)
-
GenPoly/CopyParams.h (modified) (2 diffs)
-
GenPoly/DeclMutator.h (modified) (5 diffs)
-
GenPoly/ErasableScopedMap.h (modified) (2 diffs)
-
GenPoly/FindFunction.h (modified) (2 diffs)
-
GenPoly/GenPoly.h (modified) (2 diffs)
-
GenPoly/InstantiateGeneric.h (modified) (2 diffs)
-
GenPoly/Lvalue.cc (modified) (5 diffs)
-
GenPoly/Lvalue.h (modified) (2 diffs)
-
GenPoly/PolyMutator.h (modified) (2 diffs)
-
GenPoly/ScopedSet.h (modified) (2 diffs)
-
GenPoly/ScrubTyVars.h (modified) (2 diffs)
-
GenPoly/Specialize.h (modified) (2 diffs)
-
InitTweak/FixGlobalInit.h (modified) (2 diffs)
-
InitTweak/FixInit.h (modified) (2 diffs)
-
InitTweak/GenInit.h (modified) (2 diffs)
-
InitTweak/InitTweak.h (modified) (2 diffs)
-
MakeLibCfa.h (modified) (2 diffs)
-
Makefile.am (modified) (3 diffs)
-
Makefile.in (modified) (14 diffs)
-
Parser/DeclarationNode.cc (modified) (3 diffs)
-
Parser/ExpressionNode.cc (modified) (11 diffs)
-
Parser/InitializerNode.cc (modified) (7 diffs)
-
Parser/LinkageSpec.h (modified) (2 diffs)
-
Parser/ParseNode.h (modified) (7 diffs)
-
Parser/ParserTypes.h (modified) (2 diffs)
-
Parser/TypeData.cc (modified) (8 diffs)
-
Parser/TypeData.h (modified) (3 diffs)
-
Parser/TypedefTable.h (modified) (2 diffs)
-
Parser/lex.ll (modified) (9 diffs)
-
Parser/parser.yy (modified) (22 diffs)
-
Parser/parserutility.cc (modified) (2 diffs)
-
Parser/parserutility.h (modified) (1 diff)
-
ResolvExpr/Alternative.h (modified) (2 diffs)
-
ResolvExpr/AlternativeFinder.cc (modified) (2 diffs)
-
ResolvExpr/AlternativeFinder.h (modified) (3 diffs)
-
ResolvExpr/AlternativePrinter.h (modified) (2 diffs)
-
ResolvExpr/ConversionCost.h (modified) (2 diffs)
-
ResolvExpr/Cost.h (modified) (2 diffs)
-
ResolvExpr/CurrentObject.cc (modified) (3 diffs)
-
ResolvExpr/CurrentObject.h (modified) (2 diffs)
-
ResolvExpr/FindOpenVars.h (modified) (2 diffs)
-
ResolvExpr/RenameVars.h (modified) (2 diffs)
-
ResolvExpr/ResolveTypeof.h (modified) (2 diffs)
-
ResolvExpr/Resolver.cc (modified) (3 diffs)
-
ResolvExpr/Resolver.h (modified) (2 diffs)
-
ResolvExpr/TypeEnvironment.h (modified) (2 diffs)
-
ResolvExpr/TypeMap.h (modified) (2 diffs)
-
ResolvExpr/Unify.h (modified) (2 diffs)
-
ResolvExpr/typeops.h (modified) (2 diffs)
-
SymTab/AddVisit.h (modified) (3 diffs)
-
SymTab/Autogen.cc (modified) (2 diffs)
-
SymTab/Autogen.h (modified) (3 diffs)
-
SymTab/FixFunction.cc (modified) (1 diff)
-
SymTab/FixFunction.h (modified) (2 diffs)
-
SymTab/ImplementationType.cc (modified) (1 diff)
-
SymTab/ImplementationType.h (modified) (2 diffs)
-
SymTab/Indexer.cc (modified) (1 diff)
-
SymTab/Indexer.h (modified) (3 diffs)
-
SymTab/Mangler.cc (modified) (1 diff)
-
SymTab/Mangler.h (modified) (2 diffs)
-
SymTab/TypeEquality.cc (modified) (5 diffs)
-
SymTab/TypeEquality.h (modified) (2 diffs)
-
SymTab/Validate.cc (modified) (8 diffs)
-
SymTab/Validate.h (modified) (2 diffs)
-
SymTab/module.mk (modified) (1 diff)
-
SynTree/AddStmtVisitor.h (modified) (2 diffs)
-
SynTree/AggregateDecl.cc (modified) (2 diffs)
-
SynTree/Attribute.h (modified) (2 diffs)
-
SynTree/BaseSyntaxNode.h (modified) (2 diffs)
-
SynTree/Constant.cc (modified) (2 diffs)
-
SynTree/Constant.h (modified) (3 diffs)
-
SynTree/Declaration.cc (modified) (2 diffs)
-
SynTree/Declaration.h (modified) (19 diffs)
-
SynTree/Expression.cc (modified) (2 diffs)
-
SynTree/Expression.h (modified) (64 diffs)
-
SynTree/Initializer.cc (modified) (2 diffs)
-
SynTree/Initializer.h (modified) (10 diffs)
-
SynTree/Label.h (modified) (2 diffs)
-
SynTree/Mutator.cc (modified) (2 diffs)
-
SynTree/Mutator.h (modified) (4 diffs)
-
SynTree/NamedTypeDecl.cc (modified) (2 diffs)
-
SynTree/Statement.h (modified) (26 diffs)
-
SynTree/SynTree.h (modified) (3 diffs)
-
SynTree/Type.cc (modified) (2 diffs)
-
SynTree/Type.h (modified) (24 diffs)
-
SynTree/TypeDecl.cc (modified) (2 diffs)
-
SynTree/TypeSubstitution.h (modified) (2 diffs)
-
SynTree/VarExprReplacer.h (modified) (2 diffs)
-
SynTree/Visitor.cc (modified) (2 diffs)
-
SynTree/Visitor.h (modified) (3 diffs)
-
Tuples/Explode.h (modified) (2 diffs)
-
Tuples/TupleExpansion.cc (modified) (6 diffs)
-
Tuples/Tuples.h (modified) (2 diffs)
-
Virtual/ExpandCasts.cc (added)
-
Virtual/ExpandCasts.h (added)
-
Virtual/module.mk (added)
-
benchmark/create_pthrd.c (modified) (1 diff)
-
include/cassert (moved) (moved from src/include/assert.h ) (2 diffs)
-
libcfa/Makefile.am (modified) (5 diffs)
-
libcfa/Makefile.in (modified) (18 diffs)
-
libcfa/assert (deleted)
-
libcfa/assert.c (modified) (2 diffs)
-
libcfa/concurrency/CtxSwitch-i386.S (modified) (3 diffs)
-
libcfa/concurrency/CtxSwitch-x86_64.S (modified) (2 diffs)
-
libcfa/concurrency/alarm.c (modified) (8 diffs)
-
libcfa/concurrency/alarm.h (modified) (4 diffs)
-
libcfa/concurrency/coroutine (modified) (3 diffs)
-
libcfa/concurrency/coroutine.c (modified) (3 diffs)
-
libcfa/concurrency/invoke.c (modified) (3 diffs)
-
libcfa/concurrency/invoke.h (modified) (3 diffs)
-
libcfa/concurrency/kernel (modified) (6 diffs)
-
libcfa/concurrency/kernel.c (modified) (17 diffs)
-
libcfa/concurrency/kernel_private.h (modified) (6 diffs)
-
libcfa/concurrency/monitor (modified) (3 diffs)
-
libcfa/concurrency/monitor.c (modified) (4 diffs)
-
libcfa/concurrency/preemption.c (modified) (16 diffs)
-
libcfa/concurrency/preemption.h (modified) (3 diffs)
-
libcfa/concurrency/thread (modified) (4 diffs)
-
libcfa/concurrency/thread.c (modified) (3 diffs)
-
libcfa/containers/maybe (modified) (2 diffs)
-
libcfa/containers/maybe.c (modified) (1 diff)
-
libcfa/containers/pair (modified) (2 diffs)
-
libcfa/containers/result (modified) (2 diffs)
-
libcfa/containers/result.c (modified) (1 diff)
-
libcfa/containers/vector (modified) (2 diffs)
-
libcfa/exception.c (modified) (15 diffs)
-
libcfa/exception.h (modified) (4 diffs)
-
libcfa/fstream.c (modified) (2 diffs)
-
libcfa/interpose.c (modified) (3 diffs)
-
libcfa/interpose.h (modified) (3 diffs)
-
libcfa/iostream (modified) (4 diffs)
-
libcfa/iostream.c (modified) (6 diffs)
-
libcfa/libhdr.h (modified) (2 diffs)
-
libcfa/libhdr/libalign.h (modified) (4 diffs)
-
libcfa/libhdr/libdebug.h (modified) (2 diffs)
-
libcfa/libhdr/libtools.h (modified) (2 diffs)
-
libcfa/math (modified) (1 diff)
-
libcfa/math.c (deleted)
-
libcfa/startup.h (modified) (3 diffs)
-
libcfa/stdhdr/assert.h (modified) (2 diffs)
-
libcfa/stdhdr/bfdlink.h (added)
-
libcfa/stdhdr/gmp.h (modified) (2 diffs)
-
libcfa/stdhdr/hwloc.h (added)
-
libcfa/stdhdr/krb5.h (added)
-
libcfa/stdhdr/malloc.h (added)
-
libcfa/stdlib (modified) (3 diffs)
-
libcfa/stdlib.c (modified) (4 diffs)
-
libcfa/virtual.c (added)
-
libcfa/virtual.h (added)
-
main.cc (modified) (3 diffs)
-
prelude/builtins.c (modified) (1 diff)
-
tests/.expect/32/math.txt (modified) (4 diffs)
-
tests/.expect/64/math.txt (modified) (4 diffs)
-
tests/.expect/concurrent/sched-int-barge.txt (deleted)
-
tests/.expect/div.txt (added)
-
tests/alloc.c (modified) (1 diff)
-
tests/attributes.c (modified) (2 diffs)
-
tests/avltree/avl-private.h (modified) (2 diffs)
-
tests/avltree/avl.h (modified) (2 diffs)
-
tests/designations.c (modified) (4 diffs)
-
tests/div.c (added)
-
tests/except-0.c (modified) (3 diffs)
-
tests/except-1.c (added)
-
tests/except-2.c (added)
-
tests/gmp.c (modified) (2 diffs)
-
tests/math.c (modified) (5 diffs)
-
tests/maybe.c (modified) (1 diff)
-
tests/preempt_longrun/Makefile.am (modified) (1 diff)
-
tests/preempt_longrun/Makefile.in (modified) (5 diffs)
-
tests/preempt_longrun/barge.c (deleted)
-
tests/preempt_longrun/create.c (modified) (2 diffs)
-
tests/preempt_longrun/enter.c (modified) (1 diff)
-
tests/preempt_longrun/enter3.c (modified) (1 diff)
-
tests/preempt_longrun/processor.c (modified) (2 diffs)
-
tests/preempt_longrun/yield.c (modified) (2 diffs)
-
tests/result.c (modified) (1 diff)
-
tests/sched-int-barge.c (modified) (6 diffs)
-
tests/sched-int-block.c (modified) (2 diffs)
-
tests/sched-int-disjoint.c (modified) (1 diff)
-
tests/sched-int-wait.c (modified) (2 diffs)
-
tests/test.py (modified) (1 diff)
-
tests/vector/array.h (modified) (2 diffs)
-
tests/vector/vector_int.h (modified) (3 diffs)
-
tests/virtualCast.c (added)
Legend:
- Unmodified
- Added
- Removed
-
src/CodeGen/CodeGenerator.cc
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : T hu Jun 8 16:00:00 201713 // Update Count : 48 512 // Last Modified On : Tus Jul 25 15:29:00 2017 13 // Update Count : 486 14 14 // 15 #include "CodeGenerator.h" 15 16 16 17 #include <cassert> // for assert, assertf 17 18 #include <list> // for _List_iterator, list, list<>::it... 18 19 19 #include "CodeGenerator.h"20 20 #include "Common/SemanticError.h" // for SemanticError 21 21 #include "Common/UniqueName.h" // for UniqueName … … 556 556 // never an lvalue in C 557 557 } // if 558 castExpr->get_arg()->accept( *this ); 559 output << ")"; 560 } 561 562 void CodeGenerator::visit( VirtualCastExpr * castExpr ) { 563 assertf( ! genC, "VirtualCastExpr should not reach code generation." ); 564 extension( castExpr ); 565 output << "(virtual "; 558 566 castExpr->get_arg()->accept( *this ); 559 567 output << ")"; -
src/CodeGen/CodeGenerator.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : T hu Jun 8 15:48:00 201713 // Update Count : 5 212 // Last Modified On : Tus Jul 25 25:30:00 2017 13 // Update Count : 54 14 14 // 15 15 16 #ifndef CODEGENV_H 17 #define CODEGENV_H 16 #pragma once 18 17 19 18 #include <list> // for list … … 26 25 #include "SynTree/Visitor.h" // for Visitor 27 26 #include "SynTree/SynTree.h" // for Visitor Nodes 27 28 #include "Common/Indenter.h" // for Indenter 28 29 29 30 namespace CodeGen { … … 62 63 virtual void visit( AddressExpr *addressExpr ); 63 64 virtual void visit( CastExpr *castExpr ); 65 virtual void visit( VirtualCastExpr *castExpr ); 64 66 virtual void visit( UntypedMemberExpr *memberExpr ); 65 67 virtual void visit( MemberExpr *memberExpr ); … … 161 163 } // namespace CodeGen 162 164 163 #endif // CODEGENV_H164 165 165 // Local Variables: // 166 166 // tab-width: 4 // -
src/CodeGen/FixMain.h
rfd344aa r9236060 9 9 // Author : Thierry Delisle 10 10 // Created On : Thr Jan 12 14:11:09 2017 11 // Last Modified By : 12 // Last Modified On : 13 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:16:59 2017 13 // Update Count : 1 14 14 // 15 15 16 #ifndef FIXMAIN_H 17 #define FIXMAIN_H 16 #pragma once 18 17 19 18 #include <iosfwd> … … 44 43 }; 45 44 }; 46 47 #endif //FIXMAIN_H -
src/CodeGen/FixNames.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon May 18 23:37:32 201513 // Update Count : 212 // Last Modified On : Fri Jul 21 22:17:33 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef FIXNAMES_H 17 #define FIXNAMES_H 16 #pragma once 18 17 19 18 #include <list> // for list … … 26 25 } // namespace CodeGen 27 26 28 #endif // FIXNAMES_H29 30 27 // Local Variables: // 31 28 // tab-width: 4 // -
src/CodeGen/GenType.cc
rfd344aa r9236060 13 13 // Update Count : 22 14 14 // 15 #include "GenType.h" 15 16 16 17 #include <cassert> // for assert, assertf … … 19 20 20 21 #include "CodeGenerator.h" // for CodeGenerator 21 #include "GenType.h"22 22 #include "SynTree/Declaration.h" // for DeclarationWithType 23 23 #include "SynTree/Expression.h" // for Expression -
src/CodeGen/GenType.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon May 18 23:38:53 201513 // Update Count : 112 // Last Modified On : Fri Jul 21 22:17:23 2017 13 // Update Count : 2 14 14 // 15 15 16 #ifndef _GENTYPE_H 17 #define _GENTYPE_H 16 #pragma once 18 17 19 18 #include <string> // for string … … 26 25 } // namespace CodeGen 27 26 28 #endif // _GENTYPE_H29 30 27 // Local Variables: // 31 28 // tab-width: 4 // -
src/CodeGen/Generate.cc
rfd344aa r9236060 13 13 // Update Count : 6 14 14 // 15 #include "Generate.h" 15 16 16 17 #include <iostream> // for ostream, endl, operator<< … … 20 21 #include "CodeGenerator.h" // for CodeGenerator, doSemicolon, oper... 21 22 #include "GenType.h" // for genPrettyType 22 #include "Generate.h"23 23 #include "Parser/LinkageSpec.h" // for isBuiltin, isGeneratable 24 24 #include "SynTree/BaseSyntaxNode.h" // for BaseSyntaxNode -
src/CodeGen/Generate.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon May 18 23:39:51 201513 // Update Count : 112 // Last Modified On : Fri Jul 21 22:16:35 2017 13 // Update Count : 2 14 14 // 15 15 16 #ifndef GENERATE_H 17 #define GENERATE_H 16 #pragma once 18 17 19 18 #include <iostream> // for ostream … … 31 30 } // namespace CodeGen 32 31 33 #endif // GENERATE_H34 35 32 // Local Variables: // 36 33 // tab-width: 4 // -
src/CodeGen/OperatorTable.cc
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Dec 13 14:33:05 201613 // Update Count : 1 012 // Last Modified On : Sat Jul 15 17:12:22 2017 13 // Update Count : 15 14 14 // 15 15 … … 36 36 { "++?", "++", "_operator_preincr", OT_PREFIXASSIGN }, 37 37 { "--?", "--", "_operator_predecr", OT_PREFIXASSIGN }, 38 { "?\\?", "\\", "_operator_exponential", OT_INFIX }, 38 39 { "?*?", "*", "_operator_multiply", OT_INFIX }, 39 40 { "?/?", "/", "_operator_divide", OT_INFIX }, … … 53 54 { "?|?", "|", "_operator_bitor", OT_INFIX }, 54 55 { "?=?", "=", "_operator_assign", OT_INFIXASSIGN }, 56 { "?\\=?", "\\=", "_operator_expassign", OT_INFIXASSIGN }, 55 57 { "?*=?", "*=", "_operator_multassign", OT_INFIXASSIGN }, 56 58 { "?/=?", "/=", "_operator_divassign", OT_INFIXASSIGN }, -
src/CodeGen/OperatorTable.h
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Jun 24 16:17:57 201513 // Update Count : 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:17:11 2017 13 // Update Count : 6 14 14 // 15 15 16 #ifndef _OPERATORTABLE_H 17 #define _OPERATORTABLE_H 16 #pragma once 18 17 19 18 #include <string> … … 51 50 } // namespace CodeGen 52 51 53 #endif // _OPERATORTABLE_H54 55 52 // Local Variables: // 56 53 // tab-width: 4 // -
src/CodeTools/DeclStats.h
rfd344aa r9236060 9 9 // Author : Aaron Moss 10 10 // Created On : Wed Jan 31 16:40:00 2016 11 // Last Modified By : Aaron Moss12 // Last Modified On : Wed Jan 31 16:40:00 201613 // Update Count : 111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:17:56 2017 13 // Update Count : 2 14 14 // 15 15 16 #ifndef DECLSTATS_H 17 #define DECLSTATS_H 16 #pragma once 18 17 19 18 #include <list> // for list … … 28 27 } // namespace CodeTools 29 28 30 #endif // DECLSTATS_H31 32 29 // Local Variables: // 33 30 // tab-width: 4 // -
src/CodeTools/TrackLoc.cc
rfd344aa r9236060 16 16 #include "TrackLoc.h" 17 17 18 #include <cstdlib> // for size_t, exit, EXIT_FAILURE 19 #include <iostream> // for operator<<, ostream, basic_ostream 20 #include <iterator> // for back_inserter, inserter 21 #include <stack> // for stack 22 #include <string> // for operator<<, string 23 #include <typeindex> // for type_index 18 #include <cstdlib> // for exit, EXIT_FAILURE 19 #include <iostream> // for operator<<, ostream, basic_ostream 20 #include <stack> // for stack 21 #include <string> // for operator<<, string 22 #include <typeindex> // for type_index 24 23 25 #include "Common/PassVisitor.h" // for PassVisitor 26 #include "Common/PassVisitor.impl.h" // for acceptAll 27 #include "Common/SemanticError.h" // for SemanticError 28 #include "Common/utility.h" // for CodeLocation 29 #include "SynTree/BaseSyntaxNode.h" // for BaseSyntaxNode 30 #include "SynTree/Mutator.h" // for mutateAll 31 #include "SynTree/Visitor.h" // for acceptAll 24 #include "Common/PassVisitor.h" // for PassVisitor 25 #include "Common/utility.h" // for CodeLocation 26 #include "SynTree/BaseSyntaxNode.h" // for BaseSyntaxNode 32 27 33 28 class Declaration; … … 46 41 std::stack< CodeLocation * > parents; 47 42 public: 48 LocationPrinter(size_t printLevel) : 43 LocationPrinter(size_t printLevel) : 49 44 printLevel(printLevel), lastNode(nullptr) 50 45 {} … … 65 60 if ( !parents.empty() ) { 66 61 node->location = *parents.top(); 67 } 62 } 68 63 else if (nullptr != lastNode) { 69 64 node->location = *lastNode; 70 } 65 } 71 66 else { 72 67 std::cerr << "Top level node has no CodeLocation " << name << std::endl; -
src/CodeTools/TrackLoc.h
rfd344aa r9236060 9 9 // Author : Andrew Beach 10 10 // Created On : Tues May 2 15:40:00 2017 11 // Last Modified By : Andrew Beach12 // Last Modified On : Wed May 3 14:42:00201713 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:17:44 2017 13 // Update Count : 1 14 14 // 15 15 16 #ifndef TRACKLOC_H 17 #define TRACKLOC_H 16 #pragma once 18 17 19 18 #include <cstddef> // for size_t … … 31 30 } // namespace CodeTools 32 31 33 #endif // TRACKLOC_H34 35 32 // Local Variables: // 36 33 // tab-width: 4 // -
src/Common/CompilerError.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 18 23:41:30 201613 // Update Count : 312 // Last Modified On : Fri Jul 21 22:18:07 2017 13 // Update Count : 4 14 14 // 15 15 16 #ifndef COMPILER_ERROR_H 17 #define COMPILER_ERROR_H 16 #pragma once 18 17 19 18 #include <string> … … 31 30 }; 32 31 33 #endif // COMPILER_ERROR_H34 35 32 // Local Variables: // 36 33 // tab-width: 4 // -
src/Common/PassVisitor.h
rfd344aa r9236060 81 81 virtual void visit( NameExpr *nameExpr ) override final; 82 82 virtual void visit( CastExpr *castExpr ) override final; 83 virtual void visit( VirtualCastExpr *castExpr ) override final; 83 84 virtual void visit( AddressExpr *addressExpr ) override final; 84 85 virtual void visit( LabelAddressExpr *labAddressExpr ) override final; … … 169 170 virtual Expression* mutate( LabelAddressExpr *labAddressExpr ) override final; 170 171 virtual Expression* mutate( CastExpr *castExpr ) override final; 172 virtual Expression* mutate( VirtualCastExpr *castExpr ) override final; 171 173 virtual Expression* mutate( UntypedMemberExpr *memberExpr ) override final; 172 174 virtual Expression* mutate( MemberExpr *memberExpr ) override final; -
src/Common/PassVisitor.impl.h
rfd344aa r9236060 1 1 #pragma once 2 // IWYU pragma: private, include "PassVisitor.h" 2 3 3 4 #define VISIT_START( node ) \ … … 606 607 607 608 template< typename pass_type > 609 void PassVisitor< pass_type >::visit( VirtualCastExpr * node ) { 610 VISIT_BODY( node ); 611 } 612 613 template< typename pass_type > 608 614 void PassVisitor< pass_type >::visit( AddressExpr * node ) { 609 615 VISIT_BODY( node ); … … 983 989 984 990 template< typename pass_type > 991 Expression * PassVisitor< pass_type >::mutate( VirtualCastExpr * node ) { 992 MUTATE_BODY( Expression, node ); 993 } 994 995 template< typename pass_type > 985 996 Expression * PassVisitor< pass_type >::mutate( UntypedMemberExpr * node ) { 986 997 MUTATE_BODY( Expression, node ); -
src/Common/PassVisitor.proto.h
rfd344aa r9236060 1 1 #pragma once 2 // IWYU pragma: private, include "PassVisitor.h" 2 3 3 4 template<typename pass_type> -
src/Common/ScopedMap.h
rfd344aa r9236060 9 9 // Author : Aaron B. Moss 10 10 // Created On : Wed Dec 2 11:37:00 2015 11 // Last Modified By : Aaron B. Moss 12 // Last Modified On : Wed Dec 2 11:37:00 2015 13 // Update Count : 1 14 // 15 16 #ifndef _SCOPEDMAP_H 17 #define _SCOPEDMAP_H 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:18:24 2017 13 // Update Count : 2 14 // 15 16 #pragma once 18 17 19 18 #include <cassert> … … 305 304 }; 306 305 307 #endif // _SCOPEDMAP_H308 309 306 // Local Variables: // 310 307 // tab-width: 4 // -
src/Common/SemanticError.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Sep 24 15:13:42 201613 // Update Count : 512 // Last Modified On : Fri Jul 21 22:18:59 2017 13 // Update Count : 6 14 14 // 15 15 16 #ifndef SEMANTICERROR_H 17 #define SEMANTICERROR_H 16 #pragma once 18 17 19 18 #include <exception> // for exception … … 62 61 } 63 62 64 #endif // SEMANTICERROR_H65 66 63 // Local Variables: // 67 64 // tab-width: 4 // -
src/Common/UnimplementedError.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue May 19 07:23:08 201513 // Update Count : 112 // Last Modified On : Fri Jul 21 22:18:35 2017 13 // Update Count : 2 14 14 // 15 15 16 #ifndef _UNIMPLEMENTEDERROR_H 17 #define _UNIMPLEMENTEDERROR_H 16 #pragma once 18 17 19 18 #include <string> … … 31 30 }; 32 31 33 #endif // _UNIMPLEMENTEDERROR_H34 35 32 // Local Variables: // 36 33 // tab-width: 4 // -
src/Common/UniqueName.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue May 19 07:24:20 201513 // Update Count : 112 // Last Modified On : Fri Jul 21 22:18:45 2017 13 // Update Count : 2 14 14 // 15 15 16 #ifndef UNIQUENAME_H 17 #define UNIQUENAME_H 16 #pragma once 18 17 19 18 #include <string> … … 28 27 }; 29 28 30 #endif // UNIQUENAME_H31 32 29 // Local Variables: // 33 30 // tab-width: 4 // -
src/Common/VectorMap.h
rfd344aa r9236060 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // ScopedMap.h --7 // VectorMap.h -- 8 8 // 9 9 // Author : Aaron B. Moss 10 10 // Created On : Wed Feb 1 16:55:00 2017 11 // Last Modified By : Aaron B. Moss 12 // Last Modified On : Wed Feb 1 16:55:00 2017 13 // Update Count : 1 14 // 15 16 #ifndef _VECTORMAP_H 17 #define _VECTORMAP_H 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:19:29 2017 13 // Update Count : 2 14 // 15 16 #pragma once 18 17 19 18 #include <iterator> … … 245 244 } 246 245 247 #endif // _VECTORMAP_H248 249 246 // Local Variables: // 250 247 // tab-width: 4 // -
src/Common/utility.h
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri May 5 11:03:00 2017 13 // Update Count : 32 14 // 15 16 #ifndef _UTILITY_H 17 #define _UTILITY_H 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:19:13 2017 13 // Update Count : 33 14 // 15 16 #pragma once 18 17 19 18 #include <cctype> … … 386 385 } 387 386 388 #endif // _UTILITY_H389 390 387 // Local Variables: // 391 388 // tab-width: 4 // -
src/Concurrency/Keywords.cc
rfd344aa r9236060 1 // -*- Mode: CPP -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 12 11 // Last Modified By : 13 12 // Last Modified On : 14 // Update Count : 313 // Update Count : 5 15 14 // 16 15 … … 549 548 } 550 549 }; 550 551 // Local Variables: // 552 // mode: c // 553 // tab-width: 4 // 554 // End: // -
src/Concurrency/Keywords.h
rfd344aa r9236060 1 // -*- Mode: CPP -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 12 11 // Last Modified By : 13 12 // Last Modified On : 14 // Update Count : 013 // Update Count : 1 15 14 // 16 15 17 #ifndef KEYWORDS_H 18 #define KEYWORDS_H 16 #pragma once 19 17 20 18 #include <list> // for list … … 28 26 }; 29 27 30 #endif //KEYWORDS_H 28 // Local Variables: // 29 // tab-width: 4 // 30 // mode: c++ // 31 // compile-command: "make install" // 32 // End: // -
src/ControlStruct/ExceptTranslate.cc
rfd344aa r9236060 10 10 // Created On : Wed Jun 14 16:49:00 2017 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Jul 12 15:07:00 201713 // Update Count : 312 // Last Modified On : Tus Aug 8 16:54:00 2017 13 // Update Count : 7 14 14 // 15 15 … … 21 21 #include "SynTree/Type.h" 22 22 #include "SynTree/Attribute.h" 23 #include "SynTree/VarExprReplacer.h" 23 24 24 25 namespace ControlStruct { 25 26 // This (large) section could probably be moved out of the class27 // and be static helpers instead.28 29 // Type(Qualifiers &, false, std::list<Attribute *> &)30 31 // void (*function)();32 static FunctionType try_func_t(Type::Qualifiers(), false);33 // void (*function)(int, exception);34 static FunctionType catch_func_t(Type::Qualifiers(), false);35 // int (*function)(exception);36 static FunctionType match_func_t(Type::Qualifiers(), false);37 // bool (*function)(exception);38 static FunctionType handle_func_t(Type::Qualifiers(), false);39 // void (*function)(__attribute__((unused)) void *);40 static FunctionType finally_func_t(Type::Qualifiers(), false);41 42 static void init_func_types() {43 static bool init_complete = false;44 if (init_complete) {45 return;46 }47 ObjectDecl index_obj(48 "__handler_index",49 Type::StorageClasses(),50 LinkageSpec::Cforall,51 /*bitfieldWidth*/ NULL,52 new BasicType( emptyQualifiers, BasicType::SignedInt ),53 /*init*/ NULL54 );55 ObjectDecl exception_obj(56 "__exception_inst",57 Type::StorageClasses(),58 LinkageSpec::Cforall,59 /*bitfieldWidth*/ NULL,60 new PointerType(61 emptyQualifiers,62 new BasicType( emptyQualifiers, BasicType::SignedInt )63 ),64 /*init*/ NULL65 );66 ObjectDecl bool_obj(67 "__ret_bool",68 Type::StorageClasses(),69 LinkageSpec::Cforall,70 /*bitfieldWidth*/ NULL,71 new BasicType(emptyQualifiers, BasicType::Bool),72 /*init*/ NULL73 );74 ObjectDecl voidptr_obj(75 "__hook",76 Type::StorageClasses(),77 LinkageSpec::Cforall,78 NULL,79 new PointerType(80 emptyQualifiers,81 new VoidType(82 emptyQualifiers83 ),84 std::list<Attribute *>{new Attribute("unused")}85 ),86 NULL87 );88 89 catch_func_t.get_parameters().push_back( index_obj.clone() );90 catch_func_t.get_parameters().push_back( exception_obj.clone() );91 match_func_t.get_returnVals().push_back( index_obj.clone() );92 match_func_t.get_parameters().push_back( exception_obj.clone() );93 handle_func_t.get_returnVals().push_back( bool_obj.clone() );94 handle_func_t.get_parameters().push_back( exception_obj.clone() );95 finally_func_t.get_parameters().push_back( voidptr_obj.clone() );96 97 init_complete = true;98 }99 26 100 27 // Buricratic Helpers (Not having to do with the paritular operation.) … … 115 42 } 116 43 117 template<typename T>118 void free_all( std::list<T *> &list ) {119 typename std::list<T *>::iterator it;120 for ( it = list.begin() ; it != list.end() ; ++it ) {121 delete *it;122 }123 list.clear();124 }125 126 44 void appendDeclStmt( CompoundStmt * block, Declaration * item ) { 127 45 block->push_back(new DeclStmt(noLabels, item)); … … 132 50 } 133 51 134 // ThrowStmt Mutation Helpers 135 136 Statement * create_given_throw( 137 const char * throwFunc, ThrowStmt * throwStmt ) { 138 // { int NAME = EXPR; throwFunc( &NAME ); } 139 CompoundStmt * result = new CompoundStmt( noLabels ); 140 ObjectDecl * local = new ObjectDecl( 141 "__local_exception_copy", 52 class ExceptionMutatorCore : public WithGuards { 53 enum Context { NoHandler, TerHandler, ResHandler }; 54 55 // Also need to handle goto, break & continue. 56 // They need to be cut off in a ResHandler, until we enter another 57 // loop, switch or the goto stays within the function. 58 59 Context cur_context; 60 61 // The current (innermost) termination handler exception declaration. 62 ObjectDecl * handler_except_decl; 63 64 // The built in types used in translation. 65 StructDecl * except_decl; 66 StructDecl * node_decl; 67 StructDecl * hook_decl; 68 69 // The many helper functions for code/syntree generation. 70 Statement * create_given_throw( 71 const char * throwFunc, ThrowStmt * throwStmt ); 72 Statement * create_terminate_throw( ThrowStmt * throwStmt ); 73 Statement * create_terminate_rethrow( ThrowStmt * throwStmt ); 74 Statement * create_resume_throw( ThrowStmt * throwStmt ); 75 Statement * create_resume_rethrow( ThrowStmt * throwStmt ); 76 CompoundStmt * take_try_block( TryStmt * tryStmt ); 77 FunctionDecl * create_try_wrapper( CompoundStmt * body ); 78 FunctionDecl * create_terminate_catch( CatchList &handlers ); 79 CompoundStmt * create_single_matcher( 80 DeclarationWithType * except_obj, CatchStmt * modded_handler ); 81 FunctionDecl * create_terminate_match( CatchList &handlers ); 82 CompoundStmt * create_terminate_caller( FunctionDecl * try_wrapper, 83 FunctionDecl * terminate_catch, FunctionDecl * terminate_match ); 84 FunctionDecl * create_resume_handler( CatchList &handlers ); 85 CompoundStmt * create_resume_wrapper( 86 Statement * wraps, FunctionDecl * resume_handler ); 87 FunctionDecl * create_finally_wrapper( TryStmt * tryStmt ); 88 ObjectDecl * create_finally_hook( FunctionDecl * finally_wrapper ); 89 90 // Types used in translation, make sure to use clone. 91 // void (*function)(); 92 FunctionType try_func_t; 93 // void (*function)(int, exception); 94 FunctionType catch_func_t; 95 // int (*function)(exception); 96 FunctionType match_func_t; 97 // bool (*function)(exception); 98 FunctionType handle_func_t; 99 // void (*function)(__attribute__((unused)) void *); 100 FunctionType finally_func_t; 101 102 StructInstType * create_except_type() { 103 assert( except_decl ); 104 return new StructInstType( noQualifiers, except_decl ); 105 } 106 void init_func_types(); 107 108 public: 109 ExceptionMutatorCore() : 110 cur_context( NoHandler ), 111 handler_except_decl( nullptr ), 112 except_decl( nullptr ), node_decl( nullptr ), hook_decl( nullptr ), 113 try_func_t( noQualifiers, false ), 114 catch_func_t( noQualifiers, false ), 115 match_func_t( noQualifiers, false ), 116 handle_func_t( noQualifiers, false ), 117 finally_func_t( noQualifiers, false ) 118 {} 119 120 void premutate( CatchStmt *catchStmt ); 121 void premutate( StructDecl *structDecl ); 122 Statement * postmutate( ThrowStmt *throwStmt ); 123 Statement * postmutate( TryStmt *tryStmt ); 124 }; 125 126 void ExceptionMutatorCore::init_func_types() { 127 assert( except_decl ); 128 129 ObjectDecl index_obj( 130 "__handler_index", 131 Type::StorageClasses(), 132 LinkageSpec::Cforall, 133 /*bitfieldWidth*/ NULL, 134 new BasicType( noQualifiers, BasicType::SignedInt ), 135 /*init*/ NULL 136 ); 137 ObjectDecl exception_obj( 138 "__exception_inst", 139 Type::StorageClasses(), 140 LinkageSpec::Cforall, 141 /*bitfieldWidth*/ NULL, 142 new PointerType( 143 noQualifiers, 144 new StructInstType( noQualifiers, except_decl ) 145 ), 146 /*init*/ NULL 147 ); 148 ObjectDecl bool_obj( 149 "__ret_bool", 150 Type::StorageClasses(), 151 LinkageSpec::Cforall, 152 /*bitfieldWidth*/ NULL, 153 new BasicType( noQualifiers, BasicType::Bool ), 154 /*init*/ NULL 155 ); 156 ObjectDecl voidptr_obj( 157 "__hook", 142 158 Type::StorageClasses(), 143 159 LinkageSpec::Cforall, 144 160 NULL, 145 new BasicType( emptyQualifiers, BasicType::SignedInt ), 146 new SingleInit( throwStmt->get_expr() ) 147 ); 148 appendDeclStmt( result, local ); 161 new PointerType( 162 noQualifiers, 163 new VoidType( 164 noQualifiers 165 ), 166 std::list<Attribute *>{ new Attribute( "unused" ) } 167 ), 168 NULL 169 ); 170 171 catch_func_t.get_parameters().push_back( index_obj.clone() ); 172 catch_func_t.get_parameters().push_back( exception_obj.clone() ); 173 match_func_t.get_returnVals().push_back( index_obj.clone() ); 174 match_func_t.get_parameters().push_back( exception_obj.clone() ); 175 handle_func_t.get_returnVals().push_back( bool_obj.clone() ); 176 handle_func_t.get_parameters().push_back( exception_obj.clone() ); 177 finally_func_t.get_parameters().push_back( voidptr_obj.clone() ); 178 } 179 180 // ThrowStmt Mutation Helpers 181 182 Statement * ExceptionMutatorCore::create_given_throw( 183 const char * throwFunc, ThrowStmt * throwStmt ) { 184 // `throwFunc`( `throwStmt->get_name` ); 149 185 UntypedExpr * call = new UntypedExpr( new NameExpr( throwFunc ) ); 150 call->get_args().push_back( new AddressExpr( nameOf( local ) ) ); 151 result->push_back( new ExprStmt( throwStmt->get_labels(), call ) ); 186 call->get_args().push_back( throwStmt->get_expr() ); 152 187 throwStmt->set_expr( nullptr ); 153 188 delete throwStmt; 154 return result; 155 } 156 157 Statement * create_terminate_throw( ThrowStmt *throwStmt ) { 158 // { int NAME = EXPR; __throw_terminate( &NAME ); } 189 return new ExprStmt( noLabels, call ); 190 } 191 192 Statement * ExceptionMutatorCore::create_terminate_throw( 193 ThrowStmt *throwStmt ) { 194 // __throw_terminate( `throwStmt->get_name()` ); } 159 195 return create_given_throw( "__cfaehm__throw_terminate", throwStmt ); 160 196 } 161 Statement * create_terminate_rethrow( ThrowStmt *throwStmt ) { 162 // __rethrow_terminate(); 197 198 Statement * ExceptionMutatorCore::create_terminate_rethrow( 199 ThrowStmt *throwStmt ) { 200 // { `handler_except_decl` = NULL; __rethrow_terminate(); } 163 201 assert( nullptr == throwStmt->get_expr() ); 164 Statement * result = new ExprStmt( 165 throwStmt->get_labels(), 202 assert( handler_except_decl ); 203 204 CompoundStmt * result = new CompoundStmt( throwStmt->get_labels() ); 205 result->push_back( new ExprStmt( noLabels, UntypedExpr::createAssign( 206 nameOf( handler_except_decl ), 207 new ConstantExpr( Constant::null( 208 new PointerType( 209 noQualifiers, 210 handler_except_decl->get_type()->clone() 211 ) 212 ) ) 213 ) ) ); 214 result->push_back( new ExprStmt( 215 noLabels, 166 216 new UntypedExpr( new NameExpr( "__cfaehm__rethrow_terminate" ) ) 167 ) ;217 ) ); 168 218 delete throwStmt; 169 219 return result; 170 220 } 171 Statement * create_resume_throw( ThrowStmt *throwStmt ) { 172 // __throw_resume( EXPR ); 221 222 Statement * ExceptionMutatorCore::create_resume_throw( 223 ThrowStmt *throwStmt ) { 224 // __throw_resume( `throwStmt->get_name` ); 173 225 return create_given_throw( "__cfaehm__throw_resume", throwStmt ); 174 226 } 175 Statement * create_resume_rethrow( ThrowStmt *throwStmt ) { 227 228 Statement * ExceptionMutatorCore::create_resume_rethrow( 229 ThrowStmt *throwStmt ) { 176 230 // return false; 177 231 Statement * result = new ReturnStmt( … … 185 239 // TryStmt Mutation Helpers 186 240 187 CompoundStmt * take_try_block( TryStmt *tryStmt ) {241 CompoundStmt * ExceptionMutatorCore::take_try_block( TryStmt *tryStmt ) { 188 242 CompoundStmt * block = tryStmt->get_block(); 189 243 tryStmt->set_block( nullptr ); 190 244 return block; 191 245 } 192 FunctionDecl * create_try_wrapper( CompoundStmt *body ) { 246 247 FunctionDecl * ExceptionMutatorCore::create_try_wrapper( 248 CompoundStmt *body ) { 193 249 194 250 return new FunctionDecl( "try", Type::StorageClasses(), … … 196 252 } 197 253 198 FunctionDecl * create_terminate_catch( CatchList &handlers ) { 254 FunctionDecl * ExceptionMutatorCore::create_terminate_catch( 255 CatchList &handlers ) { 199 256 std::list<CaseStmt *> handler_wrappers; 200 257 201 258 FunctionType *func_type = catch_func_t.clone(); 202 259 DeclarationWithType * index_obj = func_type->get_parameters().front(); 203 //DeclarationWithType * except_obj = func_type->get_parameters().back();260 DeclarationWithType * except_obj = func_type->get_parameters().back(); 204 261 205 262 // Index 1..{number of handlers} … … 210 267 CatchStmt * handler = *it; 211 268 212 // INTEGERconstant Version213 269 // case `index`: 214 270 // { 215 // `handler.body` 271 // `handler.decl` = { (virtual `decl.type`)`except` }; 272 // `handler.body`; 216 273 // } 217 274 // return; 218 std::list<Statement *> caseBody; 219 caseBody.push_back( handler->get_body() ); 275 CompoundStmt * block = new CompoundStmt( noLabels ); 276 277 // Just copy the exception value. (Post Validation) 278 ObjectDecl * handler_decl = 279 static_cast<ObjectDecl *>( handler->get_decl() ); 280 ObjectDecl * local_except = handler_decl->clone(); 281 local_except->set_init( 282 new ListInit({ new SingleInit( 283 new VirtualCastExpr( nameOf( except_obj ), 284 local_except->get_type() 285 ) 286 ) }) 287 ); 288 block->push_back( new DeclStmt( noLabels, local_except ) ); 289 290 // Add the cleanup attribute. 291 local_except->get_attributes().push_back( new Attribute( 292 "cleanup", 293 { new NameExpr( "__cfaehm__cleanup_terminate" ) } 294 ) ); 295 296 // Update variables in the body to point to this local copy. 297 { 298 VarExprReplacer::DeclMap mapping; 299 mapping[ handler_decl ] = local_except; 300 VarExprReplacer mapper( mapping ); 301 handler->get_body()->accept( mapper ); 302 } 303 304 block->push_back( handler->get_body() ); 220 305 handler->set_body( nullptr ); 221 caseBody.push_back( new ReturnStmt( noLabels, nullptr ) ); 222 306 307 std::list<Statement *> caseBody 308 { block, new ReturnStmt( noLabels, nullptr ) }; 223 309 handler_wrappers.push_back( new CaseStmt( 224 310 noLabels, … … 249 335 // Create a single check from a moddified handler. 250 336 // except_obj is referenced, modded_handler will be freed. 251 CompoundStmt * create_single_matcher(337 CompoundStmt * ExceptionMutatorCore::create_single_matcher( 252 338 DeclarationWithType * except_obj, CatchStmt * modded_handler ) { 339 // { 340 // `modded_handler.decl` 341 // if ( `decl.name = (virtual `decl.type`)`except` 342 // [&& `modded_handler.cond`] ) { 343 // `modded_handler.body` 344 // } 345 // } 346 253 347 CompoundStmt * block = new CompoundStmt( noLabels ); 254 348 255 // INTEGERconstant Version 256 assert( nullptr == modded_handler->get_decl() ); 257 ConstantExpr * number = 258 dynamic_cast<ConstantExpr*>( modded_handler->get_cond() ); 259 assert( number ); 260 modded_handler->set_cond( nullptr ); 261 262 Expression * cond; 263 { 264 std::list<Expression *> args; 265 args.push_back( number ); 266 267 std::list<Expression *> rhs_args; 268 rhs_args.push_back( nameOf( except_obj ) ); 269 Expression * rhs = new UntypedExpr( 270 new NameExpr( "*?" ), rhs_args ); 271 args.push_back( rhs ); 272 273 cond = new UntypedExpr( new NameExpr( "?==?" /*???*/), args ); 274 } 275 349 // Local Declaration 350 ObjectDecl * local_except = 351 dynamic_cast<ObjectDecl *>( modded_handler->get_decl() ); 352 assert( local_except ); 353 block->push_back( new DeclStmt( noLabels, local_except ) ); 354 355 // Check for type match. 356 Expression * cond = UntypedExpr::createAssign( nameOf( local_except ), 357 new VirtualCastExpr( nameOf( except_obj ), 358 local_except->get_type()->clone() ) ); 359 360 // Add the check on the conditional if it is provided. 276 361 if ( modded_handler->get_cond() ) { 277 362 cond = new LogicalExpr( cond, modded_handler->get_cond() ); 278 363 } 364 // Construct the match condition. 279 365 block->push_back( new IfStmt( noLabels, 280 366 cond, modded_handler->get_body(), nullptr ) ); … … 287 373 } 288 374 289 FunctionDecl * create_terminate_match( CatchList &handlers ) { 375 FunctionDecl * ExceptionMutatorCore::create_terminate_match( 376 CatchList &handlers ) { 377 // int match(exception * except) { 378 // HANDLER WRAPPERS { return `index`; } 379 // } 380 290 381 CompoundStmt * body = new CompoundStmt( noLabels ); 291 382 … … 319 410 } 320 411 321 CompoundStmt * create_terminate_caller(412 CompoundStmt * ExceptionMutatorCore::create_terminate_caller( 322 413 FunctionDecl * try_wrapper, 323 414 FunctionDecl * terminate_catch, 324 FunctionDecl * terminate_match) { 415 FunctionDecl * terminate_match ) { 416 // { __cfaehm__try_terminate(`try`, `catch`, `match`); } 325 417 326 418 UntypedExpr * caller = new UntypedExpr( new NameExpr( … … 336 428 } 337 429 338 FunctionDecl * create_resume_handler( CatchList &handlers ) { 430 FunctionDecl * ExceptionMutatorCore::create_resume_handler( 431 CatchList &handlers ) { 432 // bool handle(exception * except) { 433 // HANDLER WRAPPERS { `hander->body`; return true; } 434 // } 339 435 CompoundStmt * body = new CompoundStmt( noLabels ); 340 436 … … 369 465 } 370 466 371 CompoundStmt * create_resume_wrapper( 372 StructDecl * node_decl, 467 CompoundStmt * ExceptionMutatorCore::create_resume_wrapper( 373 468 Statement * wraps, 374 469 FunctionDecl * resume_handler ) { … … 414 509 } 415 510 416 FunctionDecl * create_finally_wrapper( TryStmt * tryStmt ) { 511 FunctionDecl * ExceptionMutatorCore::create_finally_wrapper( 512 TryStmt * tryStmt ) { 513 // void finally() { <finally code> } 417 514 FinallyStmt * finally = tryStmt->get_finally(); 418 515 CompoundStmt * body = finally->get_block(); … … 425 522 } 426 523 427 ObjectDecl * create_finally_hook(428 StructDecl * hook_decl,FunctionDecl * finally_wrapper ) {524 ObjectDecl * ExceptionMutatorCore::create_finally_hook( 525 FunctionDecl * finally_wrapper ) { 429 526 // struct __cfaehm__cleanup_hook __finally_hook 430 527 // __attribute__((cleanup( finally_wrapper ))); … … 444 541 nullptr, 445 542 new StructInstType( 446 emptyQualifiers,543 noQualifiers, 447 544 hook_decl 448 545 ), … … 452 549 } 453 550 454 455 class ExceptionMutatorCore : public WithGuards { 456 enum Context { NoHandler, TerHandler, ResHandler }; 457 458 // Also need to handle goto, break & continue. 459 // They need to be cut off in a ResHandler, until we enter another 460 // loop, switch or the goto stays within the function. 461 462 Context cur_context; 463 464 // We might not need this, but a unique base for each try block's 465 // generated functions might be nice. 466 //std::string curFunctionName; 467 //unsigned int try_count = 0; 468 469 StructDecl *node_decl; 470 StructDecl *hook_decl; 471 472 public: 473 ExceptionMutatorCore() : 474 cur_context(NoHandler), 475 node_decl(nullptr), hook_decl(nullptr) 476 {} 477 478 void premutate( CatchStmt *catchStmt ); 479 void premutate( StructDecl *structDecl ); 480 Statement * postmutate( ThrowStmt *throwStmt ); 481 Statement * postmutate( TryStmt *tryStmt ); 482 }; 551 // Visiting/Mutating Functions 552 void ExceptionMutatorCore::premutate( CatchStmt *catchStmt ) { 553 // Validate the Statement's form. 554 ObjectDecl * decl = 555 dynamic_cast<ObjectDecl *>( catchStmt->get_decl() ); 556 if ( decl && true /* check decl->get_type() */ ) { 557 // Pass. 558 } else if ( CatchStmt::Terminate == catchStmt->get_kind() ) { 559 throw SemanticError("catch must have exception type"); 560 } else { 561 throw SemanticError("catchResume must have exception type"); 562 } 563 564 // Track the handler context. 565 GuardValue( cur_context ); 566 if ( CatchStmt::Terminate == catchStmt->get_kind() ) { 567 cur_context = TerHandler; 568 569 GuardValue( handler_except_decl ); 570 handler_except_decl = decl; 571 } else { 572 cur_context = ResHandler; 573 } 574 } 575 576 void ExceptionMutatorCore::premutate( StructDecl *structDecl ) { 577 if ( !structDecl->has_body() ) { 578 // Skip children? 579 return; 580 } else if ( structDecl->get_name() == "__cfaehm__base_exception_t" ) { 581 assert( nullptr == except_decl ); 582 except_decl = structDecl; 583 init_func_types(); 584 } else if ( structDecl->get_name() == "__cfaehm__try_resume_node" ) { 585 assert( nullptr == node_decl ); 586 node_decl = structDecl; 587 } else if ( structDecl->get_name() == "__cfaehm__cleanup_hook" ) { 588 assert( nullptr == hook_decl ); 589 hook_decl = structDecl; 590 } 591 // Later we might get the exception type as well. 592 } 483 593 484 594 Statement * ExceptionMutatorCore::postmutate( ThrowStmt *throwStmt ) { 595 assert( except_decl ); 596 485 597 // Ignoring throwStmt->get_target() for now. 486 598 if ( ThrowStmt::Terminate == throwStmt->get_kind() ) { … … 510 622 511 623 Statement * ExceptionMutatorCore::postmutate( TryStmt *tryStmt ) { 624 assert( except_decl ); 512 625 assert( node_decl ); 513 626 assert( hook_decl ); … … 524 637 appendDeclStmt( block, finally_block ); 525 638 // Create and add the finally cleanup hook. 526 appendDeclStmt( block, 527 create_finally_hook( hook_decl, finally_block ) ); 639 appendDeclStmt( block, create_finally_hook( finally_block ) ); 528 640 } 529 641 … … 539 651 appendDeclStmt( block, resume_handler ); 540 652 // Prepare hooks 541 inner = create_resume_wrapper( node_decl,inner, resume_handler );653 inner = create_resume_wrapper( inner, resume_handler ); 542 654 } 543 655 … … 560 672 block->push_back( inner ); 561 673 562 //free_all( termination_handlers );563 //free_all( resumption_handlers );564 565 674 return block; 566 675 } 567 676 568 void ExceptionMutatorCore::premutate( CatchStmt *catchStmt ) {569 GuardValue( cur_context );570 if ( CatchStmt::Terminate == catchStmt->get_kind() ) {571 cur_context = TerHandler;572 } else {573 cur_context = ResHandler;574 }575 }576 577 void ExceptionMutatorCore::premutate( StructDecl *structDecl ) {578 if ( !structDecl->has_body() ) {579 // Skip children?580 return;581 } else if ( structDecl->get_name() == "__cfaehm__try_resume_node" ) {582 assert( nullptr == node_decl );583 node_decl = structDecl;584 } else if ( structDecl->get_name() == "__cfaehm__cleanup_hook" ) {585 assert( nullptr == hook_decl );586 hook_decl = structDecl;587 }588 // Later we might get the exception type as well.589 }590 591 677 void translateEHM( std::list< Declaration *> & translationUnit ) { 592 init_func_types();593 594 678 PassVisitor<ExceptionMutatorCore> translator; 595 679 mutateAll( translationUnit, translator ); -
src/ControlStruct/ExceptTranslate.h
rfd344aa r9236060 9 9 // Author : Andrew Beach 10 10 // Created On : Tus Jun 06 10:13:00 2017 11 // Last Modified By : Andrew Beach12 // Last Modified On : Fri Jun 30 10:20:00201713 // Update Count : 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:19:23 2017 13 // Update Count : 4 14 14 // 15 15 16 #ifndef EXCEPT_TRANSLATE_H 17 #define EXCEPT_TRANSLATE_H 16 #pragma once 18 17 19 18 #include <list> … … 22 21 namespace ControlStruct { 23 22 void translateEHM( std::list< Declaration *> & translationUnit ); 24 /* Converts exception handling structures into their underlying C code. 25 * Translation does use the exception handling header, make sure it is 26 * visible wherever translation occurs. 27 */ 23 // Converts exception handling structures into their underlying C code. Translation does use the exception 24 // handling header, make sure it is visible wherever translation occurs. 28 25 } 29 26 30 #endif // EXCEPT_TRANSLATE_H 27 // Local Variables: // 28 // tab-width: 4 // 29 // mode: c++ // 30 // compile-command: "make install" // 31 // End: // -
src/ControlStruct/ForExprMutator.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jan 25 21:22:13 201613 // Update Count : 312 // Last Modified On : Sat Jul 22 09:17:08 2017 13 // Update Count : 4 14 14 // 15 15 16 #ifndef FOR_MUTATOR_H 17 #define FOR_MUTATOR_H 16 #pragma once 18 17 19 18 #include "SynTree/Mutator.h" … … 27 26 } // namespace ControlStruct 28 27 29 #endif // CHOOSE_MUTATOR_H30 31 28 // Local Variables: // 32 29 // tab-width: 4 // -
src/ControlStruct/LabelFixer.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 12 17:36:16 201613 // Update Count : 3 312 // Last Modified On : Sat Jul 22 09:17:24 2017 13 // Update Count : 34 14 14 // 15 15 16 #ifndef LABEL_FIXER_H 17 #define LABEL_FIXER_H 16 #pragma once 18 17 19 18 #include "Common/utility.h" … … 83 82 } // namespace ControlStruct 84 83 85 #endif // LABEL_FIXER_H86 87 84 // Local Variables: // 88 85 // tab-width: 4 // -
src/ControlStruct/LabelGenerator.h
rfd344aa r9236060 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Jun 03 14:16:26 201513 // Update Count : 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:20:14 2017 13 // Update Count : 6 14 14 // 15 15 16 #ifndef LABEL_GENERATOR_H 17 #define LABEL_GENERATOR_H 16 #pragma once 18 17 19 18 #include "SynTree/SynTree.h" … … 35 34 } // namespace ControlStruct 36 35 37 #endif // LABEL_GENERATOR_H38 39 36 // Local Variables: // 40 37 // tab-width: 4 // -
src/ControlStruct/MLEMutator.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 12 17:37:01 201613 // Update Count : 3 412 // Last Modified On : Sat Jul 22 09:19:59 2017 13 // Update Count : 35 14 14 // 15 15 16 #ifndef MLE_MUTATOR_H 17 #define MLE_MUTATOR_H 16 #pragma once 18 17 19 18 #include <map> … … 89 88 } // namespace ControlStruct 90 89 91 #endif // MLE_MUTATOR_H92 93 90 // Local Variables: // 94 91 // tab-width: 4 // -
src/ControlStruct/Mutate.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue May 19 15:31:20 201513 // Update Count : 212 // Last Modified On : Sat Jul 22 09:17:59 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef CTRLS_MUTATE_H 17 #define CTRLS_MUTATE_H 16 #pragma once 18 17 19 18 #include <list> … … 27 26 } // namespace ControlStruct 28 27 29 #endif // CTRLS_MUTATE_H30 31 28 // Local Variables: // 32 29 // tab-width: 4 // -
src/GenPoly/Box.cc
rfd344aa r9236060 27 27 #include "Box.h" 28 28 #include "DeclMutator.h" 29 #include "Lvalue.h" 30 #include "FindFunction.h" 29 31 #include "PolyMutator.h" 30 #include "FindFunction.h"31 32 #include "ScopedSet.h" 32 33 #include "ScrubTyVars.h" … … 204 205 }; 205 206 206 /// Replaces initialization of polymorphic values with alloca, declaration of dtype/ftype with appropriate void expression, and sizeof expressions of polymorphic types with the proper variable207 /// Replaces initialization of polymorphic values with alloca, declaration of dtype/ftype with appropriate void expression, sizeof expressions of polymorphic types with the proper variable, and strips fields from generic struct declarations. 207 208 class Pass3 final : public PolyMutator { 208 209 public: … … 212 213 using PolyMutator::mutate; 213 214 virtual DeclarationWithType *mutate( FunctionDecl *functionDecl ) override; 215 virtual Declaration *mutate( StructDecl *structDecl ) override; 216 virtual Declaration *mutate( UnionDecl *unionDecl ) override; 214 217 virtual ObjectDecl *mutate( ObjectDecl *objectDecl ) override; 215 218 virtual TypedefDecl *mutate( TypedefDecl *objectDecl ) override; … … 757 760 assertf( arg->has_result(), "arg does not have result: %s", toString( arg ).c_str() ); 758 761 if ( isPolyType( param, exprTyVars ) ) { 759 if ( isPolyType( arg->get_result() ) ) { 762 Type * newType = arg->get_result()->clone(); 763 if ( env ) env->apply( newType ); 764 std::auto_ptr<Type> manager( newType ); 765 if ( isPolyType( newType ) ) { 760 766 // if the argument's type is polymorphic, we don't need to box again! 761 767 return; 762 } else if ( arg->get_result()->get_lvalue() ) { // xxx - is this still right?? 763 // xxx - dynamic_cast<ReferenceType *>( arg->get_result() )?? 764 // VariableExpr and MemberExpr are lvalues; need to check this isn't coming from the second arg of a comma expression though (not an lvalue) 765 // xxx - need to test that this code is still reachable 766 if ( CommaExpr *commaArg = dynamic_cast< CommaExpr* >( arg ) ) { 767 commaArg->set_arg2( new AddressExpr( commaArg->get_arg2() ) ); 768 } else { 769 arg = new AddressExpr( arg ); 770 } 768 } else if ( arg->get_result()->get_lvalue() ) { 769 // argument expression may be CFA lvalue, but not C lvalue -- apply generalizedLvalue transformations. 770 arg = generalizedLvalue( new AddressExpr( arg ) ); 771 771 if ( ! ResolvExpr::typesCompatible( param, arg->get_result(), SymTab::Indexer() ) ) { 772 772 // silence warnings by casting boxed parameters when the actual type does not match up with the formal type. … … 1760 1760 1761 1761 Expression *PolyGenericCalculator::mutate( SizeofExpr *sizeofExpr ) { 1762 Type *ty = sizeofExpr->get_ type();1762 Type *ty = sizeofExpr->get_isType() ? sizeofExpr->get_type() : sizeofExpr->get_expr()->get_result(); 1763 1763 if ( findGeneric( ty ) ) { 1764 1764 Expression *ret = new NameExpr( sizeofName( mangleType( ty ) ) ); … … 1770 1770 1771 1771 Expression *PolyGenericCalculator::mutate( AlignofExpr *alignofExpr ) { 1772 Type *ty = alignofExpr->get_ type();1772 Type *ty = alignofExpr->get_isType() ? alignofExpr->get_type() : alignofExpr->get_expr()->get_result(); 1773 1773 if ( findGeneric( ty ) ) { 1774 1774 Expression *ret = new NameExpr( alignofName( mangleType( ty ) ) ); … … 1880 1880 } 1881 1881 1882 /// Strips the members from a generic aggregate 1883 void stripGenericMembers(AggregateDecl* decl) { 1884 if ( ! decl->get_parameters().empty() ) decl->get_members().clear(); 1885 } 1886 1887 Declaration *Pass3::mutate( StructDecl *structDecl ) { 1888 stripGenericMembers( structDecl ); 1889 return structDecl; 1890 } 1891 1892 Declaration *Pass3::mutate( UnionDecl *unionDecl ) { 1893 stripGenericMembers( unionDecl ); 1894 return unionDecl; 1895 } 1896 1882 1897 TypeDecl * Pass3::mutate( TypeDecl *typeDecl ) { 1883 1898 // Initializer *init = 0; -
src/GenPoly/Box.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Nov 19 17:24:01 201513 // Update Count : 512 // Last Modified On : Sat Jul 22 09:23:52 2017 13 // Update Count : 6 14 14 // 15 15 16 #ifndef _BOX_H 17 #define _BOX_H 16 #pragma once 18 17 19 18 #include <list> … … 25 24 } // namespace GenPoly 26 25 27 #endif // _BOX_H28 29 26 // Local Variables: // 30 27 // tab-width: 4 // -
src/GenPoly/CopyParams.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue May 19 07:34:25 201513 // Update Count : 112 // Last Modified On : Sat Jul 22 09:23:09 2017 13 // Update Count : 2 14 14 // 15 15 16 #ifndef _COPYPARAMS_H 17 #define _COPYPARAMS_H 16 #pragma once 18 17 19 18 #include "SynTree/SynTree.h" … … 24 23 } // namespace GenPoly 25 24 26 #endif // _COPYPARAMS_H27 28 25 // Local Variables: // 29 26 // tab-width: 4 // -
src/GenPoly/DeclMutator.h
rfd344aa r9236060 10 10 // Created On : Fri Nov 27 14:44:00 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 12 17:39:01 201613 // Update Count : 212 // Last Modified On : Sat Jul 22 09:21:12 2017 13 // Update Count : 4 14 14 // 15 15 16 #ifndef _DECLMUTATOR_H 17 #define _DECLMUTATOR_H 16 #pragma once 18 17 19 18 #include <list> … … 27 26 /// Mutates a list of declarations, providing a means of adding new declarations into the list 28 27 class DeclMutator : public Mutator { 29 public:28 public: 30 29 typedef Mutator Parent; 31 30 … … 50 49 /// Called on exit from a scope; overriders should call this as a super-class call 51 50 virtual void doEndScope(); 52 protected:51 protected: 53 52 /// Mutate a statement that forms its own scope 54 53 Statement* mutateStatement( Statement *stmt ); … … 59 58 /// Add a declaration to the list to be added after the current position 60 59 void addDeclarationAfter( Declaration* decl ); 61 private:60 private: 62 61 /// A stack of declarations to add before the current declaration or statement 63 62 std::vector< std::list< Declaration* > > declsToAdd; … … 67 66 } // namespace 68 67 69 #endif // _DECLMUTATOR_H70 71 68 // Local Variables: // 72 69 // tab-width: 4 // -
src/GenPoly/ErasableScopedMap.h
rfd344aa r9236060 9 9 // Author : Aaron B. Moss 10 10 // Created On : Wed Dec 2 11:37:00 2015 11 // Last Modified By : Aaron B. Moss 12 // Last Modified On : Wed Dec 2 11:37:00 2015 13 // Update Count : 1 14 // 15 16 #ifndef _ERASABLESCOPEDMAP_H 17 #define _ERASABLESCOPEDMAP_H 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:23:24 2017 13 // Update Count : 2 14 // 15 16 #pragma once 18 17 19 18 #include <cassert> … … 278 277 } // namespace GenPoly 279 278 280 #endif // _ERASABLESCOPEDMAP_H281 282 279 // Local Variables: // 283 280 // tab-width: 4 // -
src/GenPoly/FindFunction.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue May 19 07:36:35 201513 // Update Count : 112 // Last Modified On : Sat Jul 22 09:23:36 2017 13 // Update Count : 2 14 14 // 15 15 16 #ifndef FINDFUNCTION_H 17 #define FINDFUNCTION_H 16 #pragma once 18 17 19 18 #include "SynTree/SynTree.h" … … 29 28 } // namespace GenPoly 30 29 31 #endif // FINDFUNCTION_H32 33 30 // Local Variables: // 34 31 // tab-width: 4 // -
src/GenPoly/GenPoly.h
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Tue Nov 24 15:24:38 201513 // Update Count : 611 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:22:57 2017 13 // Update Count : 7 14 14 // 15 15 16 #ifndef GENPOLY_H 17 #define GENPOLY_H 16 #pragma once 18 17 19 18 #include <string> … … 111 110 } // namespace GenPoly 112 111 113 #endif // GENPOLY_H114 115 112 // Local Variables: // 116 113 // tab-width: 4 // -
src/GenPoly/InstantiateGeneric.h
rfd344aa r9236060 9 9 // Author : Aaron B. Moss 10 10 // Created On : Thu Aug 04 18:33:00 2016 11 // Last Modified By : Aaron B. Moss12 // Last Modified On : Thu Aug 04 18:33:00 201613 // Update Count : 111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:22:42 2017 13 // Update Count : 2 14 14 // 15 15 16 #ifndef _INSTANTIATEGENERIC_H 17 #define _INSTANTIATEGENERIC_H 16 #pragma once 18 17 19 18 #include "SynTree/SynTree.h" … … 26 25 } // namespace GenPoly 27 26 28 #endif // _INSTANTIATEGENERIC_H29 30 27 // Local Variables: // 31 28 // tab-width: 4 // -
src/GenPoly/Lvalue.cc
rfd344aa r9236060 30 30 31 31 #include "ResolvExpr/Resolver.h" 32 #include "ResolvExpr/TypeEnvironment.h" 32 33 #include "ResolvExpr/typeops.h" 34 #include "ResolvExpr/Unify.h" 33 35 34 36 #include "Common/UniqueName.h" … … 64 66 65 67 struct ReferenceConversions final { 66 void premutate( AddressExpr * addrExpr );67 68 68 Expression * postmutate( CastExpr * castExpr ); 69 69 Expression * postmutate( AddressExpr * addrExpr ); … … 89 89 struct GeneralizedLvalue final : public WithVisitorRef<GeneralizedLvalue> { 90 90 Expression * postmutate( AddressExpr * addressExpr ); 91 Expression * postmutate( MemberExpr * memExpr ); 92 93 template<typename Func> 94 Expression * applyTransformation( Expression * expr, Expression * arg, Func mkExpr ); 91 95 }; 92 96 … … 133 137 // from this point forward, no other pass should create reference types. 134 138 referencesEliminated = true; 139 } 140 141 Expression * generalizedLvalue( Expression * expr ) { 142 PassVisitor<GeneralizedLvalue> genLval; 143 return expr->acceptMutator( genLval ); 135 144 } 136 145 … … 359 368 } 360 369 361 Expression * GeneralizedLvalue::postmutate( AddressExpr * addrExpr ) { 362 if ( CommaExpr * commaExpr = dynamic_cast< CommaExpr * >( addrExpr->get_arg() ) ) { 370 template<typename Func> 371 Expression * GeneralizedLvalue::applyTransformation( Expression * expr, Expression * arg, Func mkExpr ) { 372 if ( CommaExpr * commaExpr = dynamic_cast< CommaExpr * >( arg ) ) { 363 373 Expression * arg1 = commaExpr->get_arg1()->clone(); 364 374 Expression * arg2 = commaExpr->get_arg2()->clone(); 365 Expression * ret = new CommaExpr( arg1, (new AddressExpr( arg2 ))->acceptMutator( *visitor ) );366 ret->set_env( addrExpr->get_env() );367 addrExpr->set_env( nullptr );368 delete addrExpr;369 return ret; 370 } else if ( ConditionalExpr * condExpr = dynamic_cast< ConditionalExpr * >( a ddrExpr->get_arg()) ) {375 Expression * ret = new CommaExpr( arg1, mkExpr( arg2 )->acceptMutator( *visitor ) ); 376 ret->set_env( expr->get_env() ); 377 expr->set_env( nullptr ); 378 delete expr; 379 return ret; 380 } else if ( ConditionalExpr * condExpr = dynamic_cast< ConditionalExpr * >( arg ) ) { 371 381 Expression * arg1 = condExpr->get_arg1()->clone(); 372 382 Expression * arg2 = condExpr->get_arg2()->clone(); 373 383 Expression * arg3 = condExpr->get_arg3()->clone(); 374 Expression * ret = new ConditionalExpr( arg1, (new AddressExpr( arg2 ))->acceptMutator( *visitor ), (new AddressExpr( arg3 ))->acceptMutator( *visitor ) ); 375 ret->set_env( addrExpr->get_env() ); 376 addrExpr->set_env( nullptr ); 377 delete addrExpr; 378 return ret; 379 } 380 return addrExpr; 384 ConditionalExpr * ret = new ConditionalExpr( arg1, mkExpr( arg2 )->acceptMutator( *visitor ), mkExpr( arg3 )->acceptMutator( *visitor ) ); 385 ret->set_env( expr->get_env() ); 386 expr->set_env( nullptr ); 387 delete expr; 388 389 // conditional expr type may not be either of the argument types, need to unify 390 using namespace ResolvExpr; 391 Type* commonType = nullptr; 392 TypeEnvironment newEnv; 393 AssertionSet needAssertions, haveAssertions; 394 OpenVarSet openVars; 395 unify( ret->get_arg2()->get_result(), ret->get_arg3()->get_result(), newEnv, needAssertions, haveAssertions, openVars, SymTab::Indexer(), commonType ); 396 ret->set_result( commonType ? commonType : ret->get_arg2()->get_result()->clone() ); 397 return ret; 398 } 399 return expr; 400 } 401 402 Expression * GeneralizedLvalue::postmutate( MemberExpr * memExpr ) { 403 return applyTransformation( memExpr, memExpr->get_aggregate(), [=]( Expression * aggr ) { return new MemberExpr( memExpr->get_member(), aggr ); } ); 404 } 405 406 Expression * GeneralizedLvalue::postmutate( AddressExpr * addrExpr ) { 407 return applyTransformation( addrExpr, addrExpr->get_arg(), []( Expression * arg ) { return new AddressExpr( arg ); } ); 381 408 } 382 409 -
src/GenPoly/Lvalue.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue May 19 07:42:09 201513 // Update Count : 112 // Last Modified On : Sat Jul 22 09:21:59 2017 13 // Update Count : 2 14 14 // 15 15 16 #ifndef _LVALUE_H 17 #define _LVALUE_H 16 #pragma once 18 17 19 18 #include <list> … … 27 26 /// true after reference types have been eliminated from the source code. After this point, reference types should not be added to the AST. 28 27 bool referencesPermissable(); 28 29 /// applies transformations that allow GCC to accept more complicated lvalue expressions, e.g. &(a, b) 30 Expression * generalizedLvalue( Expression * expr ); 29 31 } // namespace GenPoly 30 31 #endif // _LVALUE_H32 32 33 33 // Local Variables: // -
src/GenPoly/PolyMutator.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 12 17:39:41 201613 // Update Count : 612 // Last Modified On : Sat Jul 22 09:20:31 2017 13 // Update Count : 7 14 14 // 15 15 16 #ifndef _POLYMUTATOR_H 17 #define _POLYMUTATOR_H 16 #pragma once 18 17 19 18 #include <map> … … 66 65 } // namespace 67 66 68 #endif // _POLYMUTATOR_H69 70 67 // Local Variables: // 71 68 // tab-width: 4 // -
src/GenPoly/ScopedSet.h
rfd344aa r9236060 9 9 // Author : Aaron B. Moss 10 10 // Created On : Thu Dec 3 11:51:00 2015 11 // Last Modified By : Aaron B. Moss 12 // Last Modified On : Thu Dec 3 11:51:00 2015 13 // Update Count : 1 14 // 15 16 #ifndef _SCOPEDSET_H 17 #define _SCOPEDSET_H 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:22:17 2017 13 // Update Count : 2 14 // 15 16 #pragma once 18 17 19 18 #include <iterator> … … 247 246 } // namespace GenPoly 248 247 249 #endif // _SCOPEDSET_H250 251 248 // Local Variables: // 252 249 // tab-width: 4 // -
src/GenPoly/ScrubTyVars.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue May 19 07:48:14 201513 // Update Count : 112 // Last Modified On : Sat Jul 22 09:21:47 2017 13 // Update Count : 2 14 14 // 15 15 16 #ifndef _SCRUBTYVARS_H 17 #define _SCRUBTYVARS_H 16 #pragma once 18 17 19 18 #include <string> … … 95 94 } // namespace GenPoly 96 95 97 #endif // _SCRUBTYVARS_H98 99 96 // Local Variables: // 100 97 // tab-width: 4 // -
src/GenPoly/Specialize.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue May 19 07:53:58 201513 // Update Count : 112 // Last Modified On : Sat Jul 22 09:22:31 2017 13 // Update Count : 2 14 14 // 15 15 16 #ifndef _SPECIALIZE_H 17 #define _SPECIALIZE_H 16 #pragma once 18 17 19 18 #include <list> … … 26 25 } // namespace GenPoly 27 26 28 #endif // _SPECIALIZE_H29 30 27 // Local Variables: // 31 28 // tab-width: 4 // -
src/InitTweak/FixGlobalInit.h
rfd344aa r9236060 9 9 // Author : Rob Schluntz 10 10 // Created On : Mon May 04 15:14:56 2016 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Fri May 06 16:07:47 201613 // Update Count : 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:30:54 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef FIX_GLOBAL_INIT_H 17 #define FIX_GLOBAL_INIT_H 16 #pragma once 18 17 19 18 #include <string> … … 34 33 } // namespace 35 34 36 #endif // GENPOLY_POLYMUTATOR_H37 38 35 // Local Variables: // 39 36 // tab-width: 4 // -
src/InitTweak/FixInit.h
rfd344aa r9236060 9 9 // Author : Rob Schluntz 10 10 // Created On : Wed Jan 13 16:29:30 2016 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Fri May 13 11:27:52 201613 // Update Count : 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:31:06 2017 13 // Update Count : 6 14 14 // 15 15 16 #ifndef FIX_INIT_H 17 #define FIX_INIT_H 16 #pragma once 18 17 19 18 #include <string> … … 30 29 } // namespace 31 30 32 #endif // GENPOLY_POLYMUTATOR_H33 34 31 // Local Variables: // 35 32 // tab-width: 4 // -
src/InitTweak/GenInit.h
rfd344aa r9236060 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Fri May 13 11:27:19 201613 // Update Count : 311 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:31:19 2017 13 // Update Count : 4 14 14 // 15 15 16 #ifndef GEN_INIT_H 17 #define GEN_INIT_H 16 #pragma once 18 17 19 18 #include <string> … … 35 34 } // namespace 36 35 37 #endif // INITTWEAK_GENINIT_H38 39 36 // Local Variables: // 40 37 // tab-width: 4 // -
src/InitTweak/InitTweak.h
rfd344aa r9236060 9 9 // Author : Rob Schluntz 10 10 // Created On : Fri May 13 11:26:36 2016 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Fri May 13 11:35:36 201613 // Update Count : 311 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:30:33 2017 13 // Update Count : 4 14 14 // 15 15 16 #ifndef INIT_TWEAK_H 17 #define INIT_TWEAK_H 16 #pragma once 18 17 19 18 #include <string> … … 110 109 } // namespace 111 110 112 #endif // INITTWEAK_GENINIT_H113 114 111 // Local Variables: // 115 112 // tab-width: 4 // -
src/MakeLibCfa.h
rfd344aa r9236060 10 10 // Created On : Sat May 16 10:42:14 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat May 16 10:43:29 201513 // Update Count : 112 // Last Modified On : Sat Jul 22 09:31:35 2017 13 // Update Count : 2 14 14 // 15 15 16 #ifndef LIBCFA_MAKELIBCFA_H 17 #define LIBCFA_MAKELIBCFA_H 16 #pragma once 18 17 19 18 #include <list> // for list … … 25 24 } // namespace LibCfa 26 25 27 #endif // LIBCFA_MAKELIBCFA_H28 29 26 // Local Variables: // 30 27 // tab-width: 4 // -
src/Makefile.am
rfd344aa r9236060 10 10 ## Author : Peter A. Buhr 11 11 ## Created On : Sun May 31 08:51:46 2015 12 ## Last Modified By : Peter A. Buhr13 ## Last Modified On : T hu Oct 27 20:41:25 201614 ## Update Count : 7 512 ## Last Modified By : Andrew Beach 13 ## Last Modified On : Tus Jul 25 10:34:00 2017 14 ## Update Count : 76 15 15 ############################################################################### 16 16 … … 37 37 include SynTree/module.mk 38 38 include Tuples/module.mk 39 include Virtual/module.mk 39 40 40 41 # put into lib for now … … 42 43 cfa_cpplib_PROGRAMS = driver/cfa-cpp 43 44 driver_cfa_cpp_SOURCES = ${SRC} 44 driver_cfa_cpp_LDADD = ${LEXLIB}-ldl # yywrap45 driver_cfa_cpp_LDADD = -ldl # yywrap 45 46 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -Wextra -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT -O2 -g -std=c++14 46 47 driver_cfa_cpp_LDFLAGS = -Xlinker -export-dynamic -
src/Makefile.in
rfd344aa r9236060 23 23 #SRC += ArgTweak/Rewriter.cc \ 24 24 # ArgTweak/Mutate.cc 25 26 ######################### -*- Mode: Makefile-Gmake -*- ######################## 27 ############################################################################### 25 28 26 29 ######################### -*- Mode: Makefile-Gmake -*- ######################## … … 255 258 Tuples/driver_cfa_cpp-TupleAssignment.$(OBJEXT) \ 256 259 Tuples/driver_cfa_cpp-TupleExpansion.$(OBJEXT) \ 257 Tuples/driver_cfa_cpp-Explode.$(OBJEXT) 260 Tuples/driver_cfa_cpp-Explode.$(OBJEXT) \ 261 Virtual/driver_cfa_cpp-ExpandCasts.$(OBJEXT) 258 262 am_driver_cfa_cpp_OBJECTS = $(am__objects_1) 259 263 driver_cfa_cpp_OBJECTS = $(am_driver_cfa_cpp_OBJECTS) 260 am__DEPENDENCIES_1 = 261 driver_cfa_cpp_DEPENDENCIES = $(am__DEPENDENCIES_1) 264 driver_cfa_cpp_DEPENDENCIES = 262 265 driver_cfa_cpp_LINK = $(CXXLD) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) \ 263 266 $(driver_cfa_cpp_LDFLAGS) $(LDFLAGS) -o $@ … … 355 358 $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk \ 356 359 $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk \ 357 $(srcdir)/Tuples/module.mk $( top_srcdir)/automake/depcomp\358 $(top_srcdir)/automake/ ylwrap Parser/lex.cc Parser/parser.cc\359 Parser/ parser.hh360 $(srcdir)/Tuples/module.mk $(srcdir)/Virtual/module.mk \ 361 $(top_srcdir)/automake/depcomp $(top_srcdir)/automake/ylwrap \ 362 Parser/lex.cc Parser/parser.cc Parser/parser.hh 360 363 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 361 364 ACLOCAL = @ACLOCAL@ … … 534 537 SynTree/Attribute.cc SynTree/VarExprReplacer.cc \ 535 538 Tuples/TupleAssignment.cc Tuples/TupleExpansion.cc \ 536 Tuples/Explode.cc 539 Tuples/Explode.cc Virtual/ExpandCasts.cc 537 540 MAINTAINERCLEANFILES = Parser/parser.output ${libdir}/${notdir \ 538 541 ${cfa_cpplib_PROGRAMS}} … … 545 548 cfa_cpplibdir = ${CFA_LIBDIR} 546 549 driver_cfa_cpp_SOURCES = ${SRC} 547 driver_cfa_cpp_LDADD = ${LEXLIB}-ldl # yywrap550 driver_cfa_cpp_LDADD = -ldl # yywrap 548 551 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -Wextra -DDEBUG_ALL -I${abs_top_srcdir}/src/include -DYY_NO_INPUT -O2 -g -std=c++14 549 552 driver_cfa_cpp_LDFLAGS = -Xlinker -export-dynamic … … 553 556 .SUFFIXES: 554 557 .SUFFIXES: .cc .ll .o .obj .yy 555 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Concurrency/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $( am__configure_deps)558 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Concurrency/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $(srcdir)/Virtual/module.mk $(am__configure_deps) 556 559 @for dep in $?; do \ 557 560 case '$(am__configure_deps)' in \ … … 573 576 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ 574 577 esac; 575 $(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Concurrency/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $( am__empty):578 $(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Concurrency/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $(srcdir)/Virtual/module.mk $(am__empty): 576 579 577 580 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) … … 942 945 Tuples/driver_cfa_cpp-Explode.$(OBJEXT): Tuples/$(am__dirstamp) \ 943 946 Tuples/$(DEPDIR)/$(am__dirstamp) 947 Virtual/$(am__dirstamp): 948 @$(MKDIR_P) Virtual 949 @: > Virtual/$(am__dirstamp) 950 Virtual/$(DEPDIR)/$(am__dirstamp): 951 @$(MKDIR_P) Virtual/$(DEPDIR) 952 @: > Virtual/$(DEPDIR)/$(am__dirstamp) 953 Virtual/driver_cfa_cpp-ExpandCasts.$(OBJEXT): Virtual/$(am__dirstamp) \ 954 Virtual/$(DEPDIR)/$(am__dirstamp) 944 955 driver/$(am__dirstamp): 945 956 @$(MKDIR_P) driver … … 964 975 -rm -f SynTree/*.$(OBJEXT) 965 976 -rm -f Tuples/*.$(OBJEXT) 977 -rm -f Virtual/*.$(OBJEXT) 966 978 967 979 distclean-compile: … … 1079 1091 @AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Po@am__quote@ 1080 1092 @AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/driver_cfa_cpp-TupleExpansion.Po@am__quote@ 1093 @AMDEP_TRUE@@am__include@ @am__quote@Virtual/$(DEPDIR)/driver_cfa_cpp-ExpandCasts.Po@am__quote@ 1081 1094 1082 1095 .cc.o: … … 2649 2662 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 2650 2663 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/driver_cfa_cpp-Explode.obj `if test -f 'Tuples/Explode.cc'; then $(CYGPATH_W) 'Tuples/Explode.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/Explode.cc'; fi` 2664 2665 Virtual/driver_cfa_cpp-ExpandCasts.o: Virtual/ExpandCasts.cc 2666 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Virtual/driver_cfa_cpp-ExpandCasts.o -MD -MP -MF Virtual/$(DEPDIR)/driver_cfa_cpp-ExpandCasts.Tpo -c -o Virtual/driver_cfa_cpp-ExpandCasts.o `test -f 'Virtual/ExpandCasts.cc' || echo '$(srcdir)/'`Virtual/ExpandCasts.cc 2667 @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) Virtual/$(DEPDIR)/driver_cfa_cpp-ExpandCasts.Tpo Virtual/$(DEPDIR)/driver_cfa_cpp-ExpandCasts.Po 2668 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Virtual/ExpandCasts.cc' object='Virtual/driver_cfa_cpp-ExpandCasts.o' libtool=no @AMDEPBACKSLASH@ 2669 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 2670 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Virtual/driver_cfa_cpp-ExpandCasts.o `test -f 'Virtual/ExpandCasts.cc' || echo '$(srcdir)/'`Virtual/ExpandCasts.cc 2671 2672 Virtual/driver_cfa_cpp-ExpandCasts.obj: Virtual/ExpandCasts.cc 2673 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Virtual/driver_cfa_cpp-ExpandCasts.obj -MD -MP -MF Virtual/$(DEPDIR)/driver_cfa_cpp-ExpandCasts.Tpo -c -o Virtual/driver_cfa_cpp-ExpandCasts.obj `if test -f 'Virtual/ExpandCasts.cc'; then $(CYGPATH_W) 'Virtual/ExpandCasts.cc'; else $(CYGPATH_W) '$(srcdir)/Virtual/ExpandCasts.cc'; fi` 2674 @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) Virtual/$(DEPDIR)/driver_cfa_cpp-ExpandCasts.Tpo Virtual/$(DEPDIR)/driver_cfa_cpp-ExpandCasts.Po 2675 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Virtual/ExpandCasts.cc' object='Virtual/driver_cfa_cpp-ExpandCasts.obj' libtool=no @AMDEPBACKSLASH@ 2676 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 2677 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Virtual/driver_cfa_cpp-ExpandCasts.obj `if test -f 'Virtual/ExpandCasts.cc'; then $(CYGPATH_W) 'Virtual/ExpandCasts.cc'; else $(CYGPATH_W) '$(srcdir)/Virtual/ExpandCasts.cc'; fi` 2651 2678 2652 2679 .ll.cc: … … 2797 2824 -rm -f Tuples/$(DEPDIR)/$(am__dirstamp) 2798 2825 -rm -f Tuples/$(am__dirstamp) 2826 -rm -f Virtual/$(DEPDIR)/$(am__dirstamp) 2827 -rm -f Virtual/$(am__dirstamp) 2799 2828 -rm -f driver/$(am__dirstamp) 2800 2829 … … 2812 2841 2813 2842 distclean: distclean-am 2814 -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) CodeTools/$(DEPDIR) Common/$(DEPDIR) Concurrency/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR) 2843 -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) CodeTools/$(DEPDIR) Common/$(DEPDIR) Concurrency/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR) Virtual/$(DEPDIR) 2815 2844 -rm -f Makefile 2816 2845 distclean-am: clean-am distclean-compile distclean-generic \ … … 2858 2887 2859 2888 maintainer-clean: maintainer-clean-am 2860 -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) CodeTools/$(DEPDIR) Common/$(DEPDIR) Concurrency/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR) 2889 -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) CodeTools/$(DEPDIR) Common/$(DEPDIR) Concurrency/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR) Virtual/$(DEPDIR) 2861 2890 -rm -f Makefile 2862 2891 maintainer-clean-am: distclean-am maintainer-clean-generic -
src/Parser/DeclarationNode.cc
rfd344aa r9236060 10 10 // Created On : Sat May 16 12:34:05 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Jun 28 15:27:00 201713 // Update Count : 10 1912 // Last Modified On : Fri Jul 14 16:55:00 2017 13 // Update Count : 1020 14 14 // 15 15 … … 253 253 newnode->type->aggregate.fields = fields; 254 254 newnode->type->aggregate.body = body; 255 newnode->type->aggregate.tagged = false; 256 newnode->type->aggregate.parent = nullptr; 255 257 return newnode; 256 258 } // DeclarationNode::newAggregate … … 273 275 return newnode; 274 276 } // DeclarationNode::newEnumConstant 277 278 DeclarationNode * DeclarationNode::newTreeStruct( Aggregate kind, const string * name, const string * parent, ExpressionNode * actuals, DeclarationNode * fields, bool body ) { 279 assert( name ); 280 DeclarationNode * newnode = new DeclarationNode; 281 newnode->type = new TypeData( TypeData::Aggregate ); 282 newnode->type->aggregate.kind = kind; 283 newnode->type->aggregate.name = name; 284 newnode->type->aggregate.actuals = actuals; 285 newnode->type->aggregate.fields = fields; 286 newnode->type->aggregate.body = body; 287 newnode->type->aggregate.tagged = true; 288 newnode->type->aggregate.parent = parent; 289 return newnode; 290 } // DeclarationNode::newTreeStruct 275 291 276 292 DeclarationNode * DeclarationNode::newName( string * name ) { -
src/Parser/ExpressionNode.cc
rfd344aa r9236060 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:17:07 2015 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jun 28 21:08:15 2017 13 // Update Count : 542 14 // 15 16 #include <cassert> 17 #include <cctype> 18 #include <climits> 19 #include <cstdio> 20 #include <algorithm> 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Aug 2 11:12:00 2017 13 // Update Count : 568 14 // 15 16 #include <climits> // access INT_MAX, UINT_MAX, LONG_MAX, ULONG_MAX, LLONG_MAX 21 17 #include <sstream> 22 18 … … 26 22 #include "SynTree/Expression.h" 27 23 #include "SynTree/Declaration.h" 28 #include "Common/UnimplementedError.h"29 24 #include "parserutility.h" 30 #include "Common/utility.h"31 25 32 26 using namespace std; … … 46 40 // type. 47 41 48 Type::Qualifiers emptyQualifiers;// no qualifiers on constants42 extern const Type::Qualifiers noQualifiers; // no qualifiers on constants 49 43 50 44 static inline bool checkU( char c ) { return c == 'u' || c == 'U'; } … … 55 49 static inline bool checkX( char c ) { return c == 'x' || c == 'X'; } 56 50 57 Expression * build_constantInteger( const std::string & str ) {51 Expression * build_constantInteger( const std::string & str ) { 58 52 static const BasicType::Kind kind[2][3] = { 59 53 { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt }, … … 62 56 bool dec = true, Unsigned = false; // decimal, unsigned constant 63 57 int size; // 0 => int, 1 => long, 2 => long long 64 unsigned long long int v; // converted integral value58 unsigned long long int v; // converted integral value 65 59 size_t last = str.length() - 1; // last character of constant 66 60 Expression * ret; 61 62 // special constants 63 if ( str == "0" ) { 64 ret = new ConstantExpr( Constant( (Type *)new ZeroType( noQualifiers ), str, (unsigned long long int)0 ) ); 65 goto CLEANUP; 66 } // if 67 if ( str == "1" ) { 68 ret = new ConstantExpr( Constant( (Type *)new OneType( noQualifiers ), str, (unsigned long long int)1 ) ); 69 goto CLEANUP; 70 } // if 71 67 72 if ( str[0] == '0' ) { // octal/hex constant ? 68 73 dec = false; … … 118 123 } // if 119 124 120 Expression * ret = new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str, v ) ); 125 ret = new ConstantExpr( Constant( new BasicType( noQualifiers, kind[Unsigned][size] ), str, v ) ); 126 CLEANUP: 121 127 delete &str; // created by lex 122 128 return ret; 123 129 } // build_constantInteger 124 130 125 Expression * build_constantFloat( const std::string & str ) {131 Expression * build_constantFloat( const std::string & str ) { 126 132 static const BasicType::Kind kind[2][3] = { 127 133 { BasicType::Float, BasicType::Double, BasicType::LongDouble }, … … 153 159 } // if 154 160 155 Expression * ret = new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str, v ) );161 Expression * ret = new ConstantExpr( Constant( new BasicType( noQualifiers, kind[complx][size] ), str, v ) ); 156 162 delete &str; // created by lex 157 163 return ret; 158 164 } // build_constantFloat 159 165 160 Expression * build_constantChar( const std::string & str ) {161 Expression * ret = new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str, (unsigned long long int)(unsigned char)str[1] ) );166 Expression * build_constantChar( const std::string & str ) { 167 Expression * ret = new ConstantExpr( Constant( new BasicType( noQualifiers, BasicType::Char ), str, (unsigned long long int)(unsigned char)str[1] ) ); 162 168 delete &str; // created by lex 163 169 return ret; 164 170 } // build_constantChar 165 171 166 ConstantExpr * build_constantStr( const std::string & str ) {172 ConstantExpr * build_constantStr( const std::string & str ) { 167 173 // string should probably be a primitive type 168 ArrayType * at = new ArrayType( emptyQualifiers, new BasicType( Type::Qualifiers( Type::Const ), BasicType::Char ),169 new ConstantExpr( Constant::from_ulong( str.size() + 1 - 2 ) ), // +1 for '\0' and -2 for '"'174 ArrayType * at = new ArrayType( noQualifiers, new BasicType( Type::Qualifiers( Type::Const ), BasicType::Char ), 175 new ConstantExpr( Constant::from_ulong( str.size() + 1 - 2 ) ), // +1 for '\0' and -2 for '"' 170 176 false, false ); 171 // constant 0 is ignored for pure string value 172 ConstantExpr * ret = new ConstantExpr( Constant( at, str, (unsigned long long int)0 ) ); 177 ConstantExpr * ret = new ConstantExpr( Constant( at, str, (unsigned long long int)0 ) ); // constant 0 is ignored for pure string value 173 178 delete &str; // created by lex 174 179 return ret; 175 180 } // build_constantStr 176 177 Expression *build_constantZeroOne( const std::string & str ) {178 Expression * ret = new ConstantExpr( Constant( str == "0" ? (Type *)new ZeroType( emptyQualifiers ) : (Type*)new OneType( emptyQualifiers ), str,179 str == "0" ? (unsigned long long int)0 : (unsigned long long int)1 ) );180 delete &str; // created by lex181 return ret;182 } // build_constantChar183 181 184 182 Expression * build_field_name_FLOATINGconstant( const std::string & str ) { … … 209 207 } // build_field_name_fraction_constants 210 208 211 212 213 209 Expression * build_field_name_REALFRACTIONconstant( const std::string & str ) { 214 210 if ( str.find_first_not_of( "0123456789", 1 ) != string::npos ) throw SemanticError( "invalid tuple index " + str ); … … 225 221 } // build_field_name_REALDECIMALconstant 226 222 227 NameExpr * build_varref( const string * name ) {228 NameExpr * expr = new NameExpr( *name, nullptr );223 NameExpr * build_varref( const string * name ) { 224 NameExpr * expr = new NameExpr( *name, nullptr ); 229 225 delete name; 230 226 return expr; 231 } 232 233 static const char *OperName[] = { 227 } // build_varref 228 229 230 static const char * OperName[] = { // must harmonize with OperKinds 234 231 // diadic 235 "SizeOf", "AlignOf", "OffsetOf", "?+?", "?-?", "? *?", "?/?", "?%?", "||", "&&",232 "SizeOf", "AlignOf", "OffsetOf", "?+?", "?-?", "?\\?", "?*?", "?/?", "?%?", "||", "&&", 236 233 "?|?", "?&?", "?^?", "Cast", "?<<?", "?>>?", "?<?", "?>?", "?<=?", "?>=?", "?==?", "?!=?", 237 "?=?", "?@=?", "? *=?", "?/=?", "?%=?", "?+=?", "?-=?", "?<<=?", "?>>=?", "?&=?", "?^=?", "?|=?",234 "?=?", "?@=?", "?\\=?", "?*=?", "?/=?", "?%=?", "?+=?", "?-=?", "?<<=?", "?>>=?", "?&=?", "?^=?", "?|=?", 238 235 "?[?]", "...", 239 236 // monadic 240 237 "+?", "-?", "AddressOf", "*?", "!?", "~?", "++?", "?++", "--?", "?--", "&&" 241 }; 242 243 Expression * build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {244 Type * targetType = maybeMoveBuildType( decl_node );238 }; // OperName 239 240 Expression * build_cast( DeclarationNode * decl_node, ExpressionNode * expr_node ) { 241 Type * targetType = maybeMoveBuildType( decl_node ); 245 242 if ( dynamic_cast< VoidType * >( targetType ) ) { 246 243 delete targetType; … … 249 246 return new CastExpr( maybeMoveBuild< Expression >(expr_node), targetType ); 250 247 } // if 251 } 252 253 Expression *build_fieldSel( ExpressionNode *expr_node, Expression *member ) { 254 UntypedMemberExpr *ret = new UntypedMemberExpr( member, maybeMoveBuild< Expression >(expr_node) ); 255 return ret; 256 } 257 258 Expression *build_pfieldSel( ExpressionNode *expr_node, Expression *member ) { 259 UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) ); 248 } // build_cast 249 250 Expression * build_virtual_cast( DeclarationNode * decl_node, ExpressionNode * expr_node ) { 251 Type * targetType = maybeMoveBuildType( decl_node ); 252 Expression * castArg = maybeMoveBuild< Expression >( expr_node ); 253 return new VirtualCastExpr( castArg, targetType ); 254 } // build_virtual_cast 255 256 Expression * build_fieldSel( ExpressionNode * expr_node, Expression * member ) { 257 UntypedMemberExpr * ret = new UntypedMemberExpr( member, maybeMoveBuild< Expression >(expr_node) ); 258 return ret; 259 } // build_fieldSel 260 261 Expression * build_pfieldSel( ExpressionNode * expr_node, Expression * member ) { 262 UntypedExpr * deref = new UntypedExpr( new NameExpr( "*?" ) ); 260 263 deref->location = expr_node->location; 261 264 deref->get_args().push_back( maybeMoveBuild< Expression >(expr_node) ); 262 UntypedMemberExpr * ret = new UntypedMemberExpr( member, deref );263 return ret; 264 } 265 266 Expression * build_addressOf( ExpressionNode *expr_node ) {265 UntypedMemberExpr * ret = new UntypedMemberExpr( member, deref ); 266 return ret; 267 } // build_pfieldSel 268 269 Expression * build_addressOf( ExpressionNode * expr_node ) { 267 270 return new AddressExpr( maybeMoveBuild< Expression >(expr_node) ); 268 } 269 Expression *build_sizeOfexpr( ExpressionNode *expr_node ) { 271 } // build_addressOf 272 273 Expression * build_sizeOfexpr( ExpressionNode * expr_node ) { 270 274 return new SizeofExpr( maybeMoveBuild< Expression >(expr_node) ); 271 } 272 Expression *build_sizeOftype( DeclarationNode *decl_node ) { 275 } // build_sizeOfexpr 276 277 Expression * build_sizeOftype( DeclarationNode * decl_node ) { 273 278 return new SizeofExpr( maybeMoveBuildType( decl_node ) ); 274 } 275 Expression *build_alignOfexpr( ExpressionNode *expr_node ) { 279 } // build_sizeOftype 280 281 Expression * build_alignOfexpr( ExpressionNode * expr_node ) { 276 282 return new AlignofExpr( maybeMoveBuild< Expression >(expr_node) ); 277 } 278 Expression *build_alignOftype( DeclarationNode *decl_node ) { 283 } // build_alignOfexpr 284 285 Expression * build_alignOftype( DeclarationNode * decl_node ) { 279 286 return new AlignofExpr( maybeMoveBuildType( decl_node) ); 280 } 281 Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ) { 287 } // build_alignOftype 288 289 Expression * build_offsetOf( DeclarationNode * decl_node, NameExpr * member ) { 282 290 Expression * ret = new UntypedOffsetofExpr( maybeMoveBuildType( decl_node ), member->get_name() ); 283 291 delete member; 284 292 return ret; 285 } 286 287 Expression * build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind ) {293 } // build_offsetOf 294 295 Expression * build_and_or( ExpressionNode * expr_node1, ExpressionNode * expr_node2, bool kind ) { 288 296 return new LogicalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), notZeroExpr( maybeMoveBuild< Expression >(expr_node2) ), kind ); 289 } 290 291 Expression * build_unary_val( OperKinds op, ExpressionNode *expr_node ) {297 } // build_and_or 298 299 Expression * build_unary_val( OperKinds op, ExpressionNode * expr_node ) { 292 300 std::list< Expression * > args; 293 301 args.push_back( maybeMoveBuild< Expression >(expr_node) ); 294 302 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 295 } 296 Expression *build_unary_ptr( OperKinds op, ExpressionNode *expr_node ) { 303 } // build_unary_val 304 305 Expression * build_unary_ptr( OperKinds op, ExpressionNode * expr_node ) { 297 306 std::list< Expression * > args; 298 307 args.push_back( maybeMoveBuild< Expression >(expr_node) ); // xxx 299 308 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 300 } 301 Expression *build_binary_val( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) { 309 } // build_unary_ptr 310 311 Expression * build_binary_val( OperKinds op, ExpressionNode * expr_node1, ExpressionNode * expr_node2 ) { 302 312 std::list< Expression * > args; 303 313 args.push_back( maybeMoveBuild< Expression >(expr_node1) ); 304 314 args.push_back( maybeMoveBuild< Expression >(expr_node2) ); 305 315 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 306 } 307 Expression *build_binary_ptr( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) { 316 } // build_binary_val 317 318 Expression * build_binary_ptr( OperKinds op, ExpressionNode * expr_node1, ExpressionNode * expr_node2 ) { 308 319 std::list< Expression * > args; 309 320 args.push_back( maybeMoveBuild< Expression >(expr_node1) ); 310 321 args.push_back( maybeMoveBuild< Expression >(expr_node2) ); 311 322 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 312 } 313 314 Expression * build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 ) {323 } // build_binary_ptr 324 325 Expression * build_cond( ExpressionNode * expr_node1, ExpressionNode * expr_node2, ExpressionNode * expr_node3 ) { 315 326 return new ConditionalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), maybeMoveBuild< Expression >(expr_node2), maybeMoveBuild< Expression >(expr_node3) ); 316 } 317 318 Expression * build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {327 } // build_cond 328 329 Expression * build_comma( ExpressionNode * expr_node1, ExpressionNode * expr_node2 ) { 319 330 return new CommaExpr( maybeMoveBuild< Expression >(expr_node1), maybeMoveBuild< Expression >(expr_node2) ); 320 } 321 322 Expression * build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) {331 } // build_comma 332 333 Expression * build_attrexpr( NameExpr * var, ExpressionNode * expr_node ) { 323 334 return new AttrExpr( var, maybeMoveBuild< Expression >(expr_node) ); 324 } 325 Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) { 335 } // build_attrexpr 336 337 Expression * build_attrtype( NameExpr * var, DeclarationNode * decl_node ) { 326 338 return new AttrExpr( var, maybeMoveBuildType( decl_node ) ); 327 } 328 329 Expression * build_tuple( ExpressionNode * expr_node ) {339 } // build_attrtype 340 341 Expression * build_tuple( ExpressionNode * expr_node ) { 330 342 std::list< Expression * > exprs; 331 343 buildMoveList( expr_node, exprs ); 332 344 return new UntypedTupleExpr( exprs );; 333 } 334 335 Expression * build_func( ExpressionNode * function, ExpressionNode * expr_node ) {345 } // build_tuple 346 347 Expression * build_func( ExpressionNode * function, ExpressionNode * expr_node ) { 336 348 std::list< Expression * > args; 337 349 buildMoveList( expr_node, args ); 338 350 return new UntypedExpr( maybeMoveBuild< Expression >(function), args, nullptr ); 339 } 340 341 Expression * build_range( ExpressionNode * low, ExpressionNode *high ) {351 } // build_func 352 353 Expression * build_range( ExpressionNode * low, ExpressionNode * high ) { 342 354 return new RangeExpr( maybeMoveBuild< Expression >( low ), maybeMoveBuild< Expression >( high ) ); 343 } 344 345 Expression * build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) {355 } // build_range 356 357 Expression * build_asmexpr( ExpressionNode * inout, ConstantExpr * constraint, ExpressionNode * operand ) { 346 358 return new AsmExpr( maybeMoveBuild< Expression >( inout ), constraint, maybeMoveBuild< Expression >(operand) ); 347 } 348 349 Expression * build_valexpr( StatementNode *s ) {359 } // build_asmexpr 360 361 Expression * build_valexpr( StatementNode * s ) { 350 362 return new StmtExpr( dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >(s) ) ); 351 } 352 Expression *build_typevalue( DeclarationNode *decl ) { 363 } // build_valexpr 364 365 Expression * build_typevalue( DeclarationNode * decl ) { 353 366 return new TypeExpr( maybeMoveBuildType( decl ) ); 354 } 355 356 Expression * build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ) {367 } // build_typevalue 368 369 Expression * build_compoundLiteral( DeclarationNode * decl_node, InitializerNode * kids ) { 357 370 Declaration * newDecl = maybeBuild< Declaration >(decl_node); // compound literal type 358 371 if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type … … 380 393 assert( false ); 381 394 } // if 382 } 395 } // build_compoundLiteral 383 396 384 397 // Local Variables: // -
src/Parser/InitializerNode.cc
rfd344aa r9236060 10 10 // Created On : Sat May 16 13:20:24 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Oct 1 23:09:51 201613 // Update Count : 2 112 // Last Modified On : Fri Jul 28 23:27:20 2017 13 // Update Count : 26 14 14 // 15 15 … … 22 22 #include "SynTree/Initializer.h" 23 23 24 InitializerNode::InitializerNode( ExpressionNode * _expr, bool aggrp, ExpressionNode *des )25 : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0), maybeConstructed( true ) {24 InitializerNode::InitializerNode( ExpressionNode * _expr, bool aggrp, ExpressionNode * des ) 25 : expr( _expr ), aggregate( aggrp ), designator( des ), kids( nullptr ), maybeConstructed( true ) { 26 26 if ( aggrp ) 27 27 kids = dynamic_cast< InitializerNode * >( get_next() ); 28 28 29 if ( kids != 0)30 set_last( 0);31 } 29 if ( kids ) 30 set_last( nullptr ); 31 } // InitializerNode::InitializerNode 32 32 33 InitializerNode::InitializerNode( InitializerNode * init, bool aggrp, ExpressionNode *des )34 : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0), maybeConstructed( true ) {35 if ( init != 0)33 InitializerNode::InitializerNode( InitializerNode * init, bool aggrp, ExpressionNode * des ) 34 : expr( nullptr ), aggregate( aggrp ), designator( des ), kids( nullptr ), maybeConstructed( true ) { 35 if ( init ) 36 36 set_last( init ); 37 37 … … 39 39 kids = dynamic_cast< InitializerNode * >( get_next() ); 40 40 41 if ( kids != 0)42 set_next( 0);43 } 41 if ( kids ) 42 set_next( nullptr ); 43 } // InitializerNode::InitializerNode 44 44 45 45 InitializerNode::~InitializerNode() { … … 47 47 delete designator; 48 48 delete kids; 49 } 49 } // InitializerNode::~InitializerNode 50 50 51 51 void InitializerNode::print( std::ostream &os, int indent ) const { 52 52 os << std::string( indent, ' ' ) << "Initializer expression" << std::endl; 53 } 53 } // InitializerNode::print 54 54 55 55 void InitializerNode::printOneLine( std::ostream &os ) const { 56 56 if ( ! aggregate ) { 57 if ( designator != 0) {57 if ( designator ) { 58 58 os << "designated by: ("; 59 59 ExpressionNode *curdes = designator; 60 while ( curdes != 0) {60 while ( curdes != nullptr) { 61 61 curdes->printOneLine(os); 62 62 curdes = (ExpressionNode *)(curdes->get_next()); … … 65 65 os << ")"; 66 66 } // if 67 if ( expr ) expr->printOneLine( os);67 if ( expr ) expr->printOneLine( os ); 68 68 } else { // It's an aggregate 69 69 os << "[--"; 70 if ( next_init() != 0)71 next_init()->printOneLine( os);70 if ( next_init() != nullptr ) 71 next_init()->printOneLine( os ); 72 72 if (aggregate) os << "--]"; 73 73 } // if … … 76 76 if ( (moreInit = dynamic_cast< InitializerNode * >( get_next() ) ) ) { 77 77 moreInit->printOneLine( os ); 78 } 79 } 78 } // if 79 } // InitializerNode::printOneLine 80 80 81 Initializer * InitializerNode::build() const {81 Initializer * InitializerNode::build() const { 82 82 if ( aggregate ) { 83 83 // steal designators from children … … 93 93 return new ListInit( initlist, designlist, maybeConstructed ); 94 94 } else { 95 if ( get_expression() != 0) {95 if ( get_expression() ) { 96 96 return new SingleInit( maybeBuild< Expression >( get_expression() ), maybeConstructed ); 97 } 97 } // if 98 98 } // if 99 return 0;100 } 99 return nullptr; 100 } // InitializerNode::build 101 101 102 102 // Local Variables: // -
src/Parser/LinkageSpec.h
rfd344aa r9236060 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:24:28 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Fri Jul 7 11:03:00201713 // Update Count : 1 311 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:32:16 2017 13 // Update Count : 14 14 14 // 15 15 16 #ifndef LINKAGESPEC_H 17 #define LINKAGESPEC_H 16 #pragma once 18 17 19 18 #include <string> … … 78 77 }; 79 78 80 #endif // LINKAGESPEC_H81 82 79 // Local Variables: // 83 80 // tab-width: 4 // -
src/Parser/ParseNode.h
rfd344aa r9236060 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:28:16 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Mon Jun 12 13:00:00201713 // Update Count : 7 7911 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 27 12:08:08 2017 13 // Update Count : 788 14 14 // 15 15 16 #ifndef PARSENODE_H 17 #define PARSENODE_H 16 #pragma once 18 17 19 18 #include <string> … … 141 140 }; 142 141 142 // Must harmonize with OperName. 143 143 enum class OperKinds { 144 144 // diadic 145 SizeOf, AlignOf, OffsetOf, Plus, Minus, Mul, Div, Mod, Or, And,145 SizeOf, AlignOf, OffsetOf, Plus, Minus, Exp, Mul, Div, Mod, Or, And, 146 146 BitOr, BitAnd, Xor, Cast, LShift, RShift, LThan, GThan, LEThan, GEThan, Eq, Neq, 147 Assign, AtAssn, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn,147 Assign, AtAssn, ExpAssn, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn, 148 148 Index, Range, 149 149 // monadic … … 159 159 Expression * build_constantFloat( const std::string &str ); 160 160 Expression * build_constantChar( const std::string &str ); 161 Expression * build_constantZeroOne( const std::string &str );162 161 ConstantExpr * build_constantStr( const std::string &str ); 163 162 Expression * build_field_name_FLOATINGconstant( const std::string & str ); … … 170 169 171 170 Expression * build_cast( DeclarationNode * decl_node, ExpressionNode * expr_node ); 171 Expression * build_virtual_cast( DeclarationNode * decl_node, ExpressionNode * expr_node ); 172 172 Expression * build_fieldSel( ExpressionNode * expr_node, Expression * member ); 173 173 Expression * build_pfieldSel( ExpressionNode * expr_node, Expression * member ); … … 248 248 static DeclarationNode * newAsmStmt( StatementNode * stmt ); // gcc external asm statement 249 249 250 // Perhaps this would best fold into newAggragate. 251 static DeclarationNode * newTreeStruct( Aggregate kind, const std::string * name, const std::string * parent, ExpressionNode * actuals, DeclarationNode * fields, bool body ); 252 250 253 DeclarationNode(); 251 254 ~DeclarationNode(); … … 332 335 333 336 static UniqueName anonymous; 337 338 // Temp to test TreeStruct 339 const std::string * parent_name; 334 340 }; // DeclarationNode 335 341 … … 443 449 std::ostream & operator<<( std::ostream & out, const ParseNode * node ); 444 450 445 #endif // PARSENODE_H446 447 451 // Local Variables: // 448 452 // tab-width: 4 // -
src/Parser/ParserTypes.h
rfd344aa r9236060 10 10 // Created On : Sat Sep 22 08:58:10 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jun 28 22:10:17201713 // Update Count : 3 4912 // Last Modified On : Sat Jul 22 09:33:28 2017 13 // Update Count : 350 14 14 // 15 15 16 #ifndef PARSER_HH 17 #define PARSER_HH 16 #pragma once 18 17 19 18 int yylex(); … … 42 41 }; // Token 43 42 44 #endif // PARSER_HH45 46 43 // Local Variables: // 47 44 // tab-width: 4 // -
src/Parser/TypeData.cc
rfd344aa r9236060 10 10 // Created On : Sat May 16 15:12:51 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Jun 28 15:28:00 201713 // Update Count : 56 412 // Last Modified On : Wed Aug 9 13:50:00 2017 13 // Update Count : 567 14 14 // 15 15 … … 64 64 aggregate.fields = nullptr; 65 65 aggregate.body = false; 66 aggregate.tagged = false; 67 aggregate.parent = nullptr; 66 68 break; 67 69 case AggregateInst: … … 123 125 delete aggregate.actuals; 124 126 delete aggregate.fields; 127 delete aggregate.parent; 125 128 // delete aggregate; 126 129 break; … … 195 198 newtype->aggregate.kind = aggregate.kind; 196 199 newtype->aggregate.body = aggregate.body; 200 newtype->aggregate.tagged = aggregate.tagged; 201 newtype->aggregate.parent = aggregate.parent ? new string( *aggregate.parent ) : nullptr; 197 202 break; 198 203 case AggregateInst: … … 454 459 case TypeData::Builtin: 455 460 if(td->builtintype == DeclarationNode::Zero) { 456 return new ZeroType( emptyQualifiers );461 return new ZeroType( noQualifiers ); 457 462 } 458 463 else if(td->builtintype == DeclarationNode::One) { 459 return new OneType( emptyQualifiers );464 return new OneType( noQualifiers ); 460 465 } 461 466 else { … … 635 640 switch ( td->aggregate.kind ) { 636 641 case DeclarationNode::Struct: 642 if ( td->aggregate.tagged ) { 643 at = new StructDecl( *td->aggregate.name, td->aggregate.parent, attributes, linkage ); 644 buildForall( td->aggregate.params, at->get_parameters() ); 645 break; 646 } 637 647 case DeclarationNode::Coroutine: 638 648 case DeclarationNode::Monitor: … … 754 764 } // buildAggInst 755 765 756 NamedTypeDecl * buildSymbolic( const TypeData * td, const string & name, Type::StorageClasses scs ) {766 NamedTypeDecl * buildSymbolic( const TypeData * td, const string & name, Type::StorageClasses scs, LinkageSpec::Spec linkage ) { 757 767 assert( td->kind == TypeData::Symbolic ); 758 768 NamedTypeDecl * ret; 759 769 assert( td->base ); 760 770 if ( td->symbolic.isTypedef ) { 761 ret = new TypedefDecl( name, scs, typebuild( td->base ) );771 ret = new TypedefDecl( name, scs, typebuild( td->base ), linkage ); 762 772 } else { 763 773 ret = new TypeDecl( name, scs, typebuild( td->base ), TypeDecl::Any ); … … 823 833 return buildEnum( td, attributes ); 824 834 } else if ( td->kind == TypeData::Symbolic ) { 825 return buildSymbolic( td, name, scs );835 return buildSymbolic( td, name, scs, linkage ); 826 836 } else { 827 837 return (new ObjectDecl( name, scs, linkage, bitfieldWidth, typebuild( td ), init, attributes ))->set_asmName( asmName ); -
src/Parser/TypeData.h
rfd344aa r9236060 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 15:18:36 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Wed Jun 28 15:29:00201713 // Update Count : 18 611 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:32:47 2017 13 // Update Count : 188 14 14 // 15 15 16 #ifndef TYPEDATA_H 17 #define TYPEDATA_H 16 #pragma once 18 17 19 18 #include "ParseNode.h" … … 31 30 DeclarationNode * fields; 32 31 bool body; 32 33 bool tagged; 34 const std::string * parent; 33 35 }; 34 36 … … 114 116 void buildKRFunction( const TypeData::Function_t & function ); 115 117 116 #endif // TYPEDATA_H117 118 118 // Local Variables: // 119 119 // tab-width: 4 // -
src/Parser/TypedefTable.h
rfd344aa r9236060 10 10 // Created On : Sat May 16 15:24:36 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jun 28 21:56:34 201713 // Update Count : 3 312 // Last Modified On : Sat Jul 22 09:33:14 2017 13 // Update Count : 34 14 14 // 15 15 16 #ifndef TYPEDEFTABLE_H 17 #define TYPEDEFTABLE_H 16 #pragma once 18 17 19 18 #include <map> … … 91 90 }; 92 91 93 #endif // TYPEDEFTABLE_H94 95 92 // Local Variables: // 96 93 // tab-width: 4 // -
src/Parser/lex.ll
rfd344aa r9236060 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Wed Jul 12 18:04:44201713 * Update Count : 5 3512 * Last Modified On : Thu Jul 27 21:46:06 2017 13 * Update Count : 550 14 14 */ 15 15 16 16 %option yylineno 17 %option noyywrap 17 18 %option nounput 18 19 … … 125 126 op_unary {op_unary_only}|{op_unary_binary}|{op_unary_pre_post} 126 127 127 op_binary_only "/"|"%"|" ^"|"&"|"|"|"<"|">"|"="|"=="|"!="|"<<"|">>"|"<="|">="|"+="|"-="|"*="|"/="|"%="|"&="|"|="|"^="|"<<="|">>="128 op_binary_only "/"|"%"|"\\"|"^"|"&"|"|"|"<"|">"|"="|"=="|"!="|"<<"|">>"|"<="|">="|"+="|"-="|"*="|"/="|"%="|"\\="|"&="|"|="|"^="|"<<="|">>=" 128 129 op_binary_over {op_unary_binary}|{op_binary_only} 129 130 // op_binary_not_over "?"|"->"|"."|"&&"|"||"|"@=" … … 136 137 137 138 %% 138 /* line directives */139 /* line directives */ 139 140 ^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["].*"\n" { 140 141 /* " stop highlighting */ … … 232 233 int { KEYWORD_RETURN(INT); } 233 234 __int128 { KEYWORD_RETURN(INT); } // GCC 235 __int128_t { KEYWORD_RETURN(INT); } // GCC 234 236 __label__ { KEYWORD_RETURN(LABEL); } // GCC 235 237 long { KEYWORD_RETURN(LONG); } … … 265 267 __typeof { KEYWORD_RETURN(TYPEOF); } // GCC 266 268 __typeof__ { KEYWORD_RETURN(TYPEOF); } // GCC 269 __uint128_t { KEYWORD_RETURN(INT); } // GCC 267 270 union { KEYWORD_RETURN(UNION); } 268 271 unsigned { KEYWORD_RETURN(UNSIGNED); } 269 272 __builtin_va_list { KEYWORD_RETURN(VALIST); } // GCC 273 virtual { KEYWORD_RETURN(VIRTUAL); } // CFA 270 274 void { KEYWORD_RETURN(VOID); } 271 275 volatile { KEYWORD_RETURN(VOLATILE); } … … 284 288 285 289 /* numeric constants */ 286 "0" { NUMERIC_RETURN(ZERO); } // CFA287 "1" { NUMERIC_RETURN(ONE); } // CFA288 290 {decimal_constant} { NUMERIC_RETURN(INTEGERconstant); } 289 291 {octal_constant} { NUMERIC_RETURN(INTEGERconstant); } … … 336 338 "-" { ASCIIOP_RETURN(); } 337 339 "*" { ASCIIOP_RETURN(); } 340 "\\" { ASCIIOP_RETURN(); } // CFA, exponentiation 338 341 "/" { ASCIIOP_RETURN(); } 339 342 "%" { ASCIIOP_RETURN(); } … … 360 363 "+=" { NAMEDOP_RETURN(PLUSassign); } 361 364 "-=" { NAMEDOP_RETURN(MINUSassign); } 365 "\\=" { NAMEDOP_RETURN(EXPassign); } // CFA, exponentiation 362 366 "*=" { NAMEDOP_RETURN(MULTassign); } 363 367 "/=" { NAMEDOP_RETURN(DIVassign); } … … 414 418 415 419 /* unknown characters */ 416 . { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }420 . { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); } 417 421 418 422 %% -
src/Parser/parser.yy
rfd344aa r9236060 9 9 // Author : Peter A. Buhr 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Wed Jul 12 18:23:36201713 // Update Count : 24 2611 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Aug 4 13:33:00 2017 13 // Update Count : 2475 14 14 // 15 15 … … 118 118 %token RESTRICT // C99 119 119 %token ATOMIC // C11 120 %token FORALL MUTEX // CFA 121 %token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED ZERO_T ONE_T 120 %token FORALL MUTEX VIRTUAL // CFA 121 %token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED 122 %token BOOL COMPLEX IMAGINARY // C99 123 %token ZERO_T ONE_T // CFA 122 124 %token VALIST // GCC 123 %token BOOL COMPLEX IMAGINARY // C99124 125 %token TYPEOF LABEL // GCC 125 126 %token ENUM STRUCT UNION … … 141 142 // converted into the tuple index (.)(1). e.g., 3.x 142 143 %token<tok> REALDECIMALconstant REALFRACTIONconstant FLOATINGconstant 143 %token<tok> ZERO ONE // CFA144 144 145 145 // multi-character operators … … 151 151 %token ELLIPSIS // ... 152 152 153 %token MULTassign DIVassign MODassign // *= /= %=/153 %token EXPassign MULTassign DIVassign MODassign // \= *= /= %= 154 154 %token PLUSassign MINUSassign // += -= 155 155 %token LSassign RSassign // <<= >>= … … 158 158 %token ATassign // @= 159 159 160 %type<tok> identifier no_attr_identifier zero_one160 %type<tok> identifier no_attr_identifier 161 161 %type<tok> identifier_or_type_name no_attr_identifier_or_type_name attr_name 162 162 %type<constant> string_literal … … 168 168 %type<op> ptrref_operator unary_operator assignment_operator 169 169 %type<en> primary_expression postfix_expression unary_expression 170 %type<en> cast_expression multiplicative_expression additive_expression shift_expression 171 %type<en> relational_expression equality_expression AND_expression exclusive_OR_expression 172 %type<en> inclusive_OR_expression logical_AND_expression logical_OR_expression conditional_expression 173 %type<en> constant_expression assignment_expression assignment_expression_opt 170 %type<en> cast_expression exponential_expression multiplicative_expression additive_expression 171 %type<en> shift_expression relational_expression equality_expression 172 %type<en> AND_expression exclusive_OR_expression inclusive_OR_expression 173 %type<en> logical_AND_expression logical_OR_expression 174 %type<en> conditional_expression constant_expression assignment_expression assignment_expression_opt 174 175 %type<en> comma_expression comma_expression_opt 175 %type<en> argument_expression_list argument_expression assignment_opt176 %type<en> argument_expression_list argument_expression default_initialize_opt 176 177 %type<fctl> for_control_expression 177 178 %type<en> subrange … … 181 182 %type<en> asm_clobbers_list_opt 182 183 %type<flag> asm_volatile_opt 184 %type<en> handler_predicate_opt 183 185 184 186 // statements … … 358 360 ; 359 361 360 zero_one: // CFA361 ZERO362 | ONE363 ;364 365 362 string_literal: 366 363 string_literal_list { $$ = build_constantStr( *$1 ); } … … 382 379 IDENTIFIER // typedef name cannot be used as a variable name 383 380 { $$ = new ExpressionNode( build_varref( $1 ) ); } 384 | zero_one385 { $$ = new ExpressionNode( build_constantZeroOne( *$1 ) ); }386 381 | tuple 387 382 | '(' comma_expression ')' … … 483 478 $$ = new ExpressionNode( build_field_name_fraction_constants( build_varref( $1 ), $2 ) ); 484 479 } 485 | zero_one fraction_constants486 {487 $$ = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *$1 ), $2 ) );488 }489 480 ; 490 481 … … 537 528 | ALIGNOF unary_expression // GCC, variable alignment 538 529 { $$ = new ExpressionNode( build_alignOfexpr( $2 ) ); } 539 | ALIGNOF '(' type_no_function ')' // GCC, type alignment530 | ALIGNOF '(' type_no_function ')' // GCC, type alignment 540 531 { $$ = new ExpressionNode( build_alignOftype( $3 ) ); } 541 532 | OFFSETOF '(' type_no_function ',' no_attr_identifier ')' … … 569 560 | '(' type_no_function ')' cast_expression 570 561 { $$ = new ExpressionNode( build_cast( $2, $4 ) ); } 562 // VIRTUAL cannot be opt because of look ahead issues 563 | '(' VIRTUAL ')' cast_expression 564 { $$ = new ExpressionNode( build_virtual_cast( nullptr, $4 ) ); } 565 | '(' VIRTUAL type_no_function ')' cast_expression 566 { $$ = new ExpressionNode( build_virtual_cast( $3, $5 ) ); } 571 567 // | '(' type_no_function ')' tuple 572 568 // { $$ = new ExpressionNode( build_cast( $2, $4 ) ); } 573 569 ; 574 570 571 exponential_expression: 572 cast_expression 573 | exponential_expression '\\' cast_expression 574 { $$ = new ExpressionNode( build_binary_val( OperKinds::Exp, $1, $3 ) ); } 575 ; 576 575 577 multiplicative_expression: 576 cast_expression577 | multiplicative_expression '*' cast_expression578 exponential_expression 579 | multiplicative_expression '*' exponential_expression 578 580 { $$ = new ExpressionNode( build_binary_val( OperKinds::Mul, $1, $3 ) ); } 579 | multiplicative_expression '/' cast_expression581 | multiplicative_expression '/' exponential_expression 580 582 { $$ = new ExpressionNode( build_binary_val( OperKinds::Div, $1, $3 ) ); } 581 | multiplicative_expression '%' cast_expression583 | multiplicative_expression '%' exponential_expression 582 584 { $$ = new ExpressionNode( build_binary_val( OperKinds::Mod, $1, $3 ) ); } 583 585 ; … … 678 680 '=' { $$ = OperKinds::Assign; } 679 681 | ATassign { $$ = OperKinds::AtAssn; } 682 | EXPassign { $$ = OperKinds::ExpAssn; } 680 683 | MULTassign { $$ = OperKinds::MulAssn; } 681 684 | DIVassign { $$ = OperKinds::DivAssn; } … … 939 942 940 943 with_statement: 941 WITH identifier_listcompound_statement944 WITH '(' tuple_expression_list ')' compound_statement 942 945 { $$ = (StatementNode *)0; } // FIX ME 943 946 ; … … 966 969 967 970 handler_clause: 968 // TEMPORARY, TEST EXCEPTIONS 969 handler_key '(' push push INTEGERconstant pop ')' compound_statement pop 970 { $$ = new StatementNode( build_catch( $1, nullptr, new ExpressionNode( build_constantInteger( *$5 ) ), $8 ) ); } 971 | handler_clause handler_key '(' push push INTEGERconstant pop ')' compound_statement pop 972 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $2, nullptr, new ExpressionNode( build_constantInteger( *$6 ) ), $9 ) ) ); } 973 974 | handler_key '(' push push exception_declaration pop ')' compound_statement pop 975 { $$ = new StatementNode( build_catch( $1, $5, nullptr, $8 ) ); } 976 | handler_clause handler_key '(' push push exception_declaration pop ')' compound_statement pop 977 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $2, $6, nullptr, $9 ) ) ); } 971 handler_key '(' push push exception_declaration pop handler_predicate_opt ')' compound_statement pop 972 { $$ = new StatementNode( build_catch( $1, $5, $7, $9 ) ); } 973 | handler_clause handler_key '(' push push exception_declaration pop handler_predicate_opt ')' compound_statement pop 974 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $2, $6, $8, $10 ) ) ); } 975 ; 976 977 handler_predicate_opt: 978 //empty 979 { $$ = nullptr; } 980 | ';' conditional_expression 981 { $$ = $2; } 978 982 ; 979 983 … … 1500 1504 | IMAGINARY // C99 1501 1505 { $$ = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); } 1502 | VALIST // GCC, __builtin_va_list1503 { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }1504 1506 | ZERO_T 1505 1507 { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); } 1506 1508 | ONE_T 1507 1509 { $$ = DeclarationNode::newBuiltinType( DeclarationNode::One ); } 1510 | VALIST // GCC, __builtin_va_list 1511 { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); } 1508 1512 ; 1509 1513 … … 1843 1847 cfa_parameter_declaration: // CFA, new & old style parameter declaration 1844 1848 parameter_declaration 1845 | cfa_identifier_parameter_declarator_no_tuple identifier_or_type_name assignment_opt1849 | cfa_identifier_parameter_declarator_no_tuple identifier_or_type_name default_initialize_opt 1846 1850 { $$ = $1->addName( $2 ); } 1847 | cfa_abstract_tuple identifier_or_type_name assignment_opt1851 | cfa_abstract_tuple identifier_or_type_name default_initialize_opt 1848 1852 // To obtain LR(1), these rules must be duplicated here (see cfa_abstract_declarator). 1849 1853 { $$ = $1->addName( $2 ); } 1850 | type_qualifier_list cfa_abstract_tuple identifier_or_type_name assignment_opt1854 | type_qualifier_list cfa_abstract_tuple identifier_or_type_name default_initialize_opt 1851 1855 { $$ = $2->addName( $3 )->addQualifiers( $1 ); } 1852 1856 | cfa_function_specifier … … 1865 1869 parameter_declaration: 1866 1870 // No SUE declaration in parameter list. 1867 declaration_specifier_nobody identifier_parameter_declarator assignment_opt1871 declaration_specifier_nobody identifier_parameter_declarator default_initialize_opt 1868 1872 { 1869 1873 typedefTable.addToEnclosingScope( TypedefTable::ID ); 1870 1874 $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr ); 1871 1875 } 1872 | declaration_specifier_nobody type_parameter_redeclarator assignment_opt1876 | declaration_specifier_nobody type_parameter_redeclarator default_initialize_opt 1873 1877 { 1874 1878 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 1878 1882 1879 1883 abstract_parameter_declaration: 1880 declaration_specifier_nobody assignment_opt1884 declaration_specifier_nobody default_initialize_opt 1881 1885 { $$ = $1->addInitializer( $2 ? new InitializerNode( $2 ) : nullptr ); } 1882 | declaration_specifier_nobody abstract_parameter_declarator assignment_opt1886 | declaration_specifier_nobody abstract_parameter_declarator default_initialize_opt 1883 1887 { $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr ); } 1884 1888 ; … … 1924 1928 | '=' initializer 1925 1929 { $$ = $2; } 1930 | '=' VOID 1931 { $$ = nullptr; } 1926 1932 | ATassign initializer 1927 1933 { $$ = $2->set_maybeConstructed( false ); } … … 2220 2226 // empty 2221 2227 { $$ = (StatementNode *)0; } // FIX ME 2222 | WITH identifier_list2228 | WITH '(' tuple_expression_list ')' 2223 2229 { $$ = (StatementNode *)0; } // FIX ME 2224 2230 ; … … 3043 3049 ; 3044 3050 3045 assignment_opt:3051 default_initialize_opt: 3046 3052 // empty 3047 3053 { $$ = nullptr; } -
src/Parser/parserutility.cc
rfd344aa r9236060 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 15:30:39 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Wed Jun 28 22:11:32201713 // Update Count : 711 // Last Modified By : Andrew Beach 12 // Last Modified On : Tus Jul 18 10:12:00 2017 13 // Update Count : 8 14 14 // 15 15 … … 26 26 UntypedExpr *comparison = new UntypedExpr( new NameExpr( "?!=?" ) ); 27 27 comparison->get_args().push_back( orig ); 28 comparison->get_args().push_back( new ConstantExpr( Constant( new ZeroType( emptyQualifiers ), "0", (unsigned long long int)0 ) ) );28 comparison->get_args().push_back( new ConstantExpr( Constant( new ZeroType( noQualifiers ), "0", (unsigned long long int)0 ) ) ); 29 29 return new CastExpr( comparison, new BasicType( Type::Qualifiers(), BasicType::SignedInt ) ); 30 30 } -
src/Parser/parserutility.h
rfd344aa r9236060 10 10 // Created On : Sat May 16 15:31:46 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jun 28 22:11:40201713 // Update Count : 312 // Last Modified On : Sat Jul 22 09:32:58 2017 13 // Update Count : 4 14 14 // 15 15 16 #ifndef PARSEUTILITY_H 17 #define PARSEUTILITY_H 16 #pragma once 18 17 19 18 #include "SynTree/SynTree.h" 20 19 21 20 Expression *notZeroExpr( Expression *orig ); 22 23 #endif // PARSEUTILITY_H24 21 25 22 // Local Variables: // -
src/ResolvExpr/Alternative.h
rfd344aa r9236060 10 10 // Created On : Sat May 16 23:45:43 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat May 16 23:54:39 201513 // Update Count : 212 // Last Modified On : Sat Jul 22 09:36:36 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef ALTERNATIVE_H 17 #define ALTERNATIVE_H 16 #pragma once 18 17 19 18 #include <list> … … 45 44 } // namespace ResolvExpr 46 45 47 #endif // ALTERNATIVE_H48 49 46 // Local Variables: // 50 47 // tab-width: 4 // -
src/ResolvExpr/AlternativeFinder.cc
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sat May 16 23:52:08 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Fri Mar 17 09:14:17201713 // Update Count : 3 011 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Jul 26 11:33:00 2017 13 // Update Count : 31 14 14 // 15 15 … … 901 901 } 902 902 903 void AlternativeFinder::visit( VirtualCastExpr * castExpr ) { 904 assertf( castExpr->get_result(), "Implicate virtual cast targets not yet supported." ); 905 AlternativeFinder finder( indexer, env ); 906 // don't prune here, since it's guaranteed all alternatives will have the same type 907 // (giving the alternatives different types is half of the point of ConstructorExpr nodes) 908 finder.findWithAdjustment( castExpr->get_arg(), false ); 909 for ( Alternative & alt : finder.alternatives ) { 910 alternatives.push_back( Alternative( 911 new VirtualCastExpr( alt.expr->clone(), castExpr->get_result()->clone() ), 912 alt.env, alt.cost ) ); 913 } 914 } 915 903 916 void AlternativeFinder::visit( UntypedMemberExpr *memberExpr ) { 904 917 AlternativeFinder funcFinder( indexer, env ); -
src/ResolvExpr/AlternativeFinder.h
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sat May 16 23:56:12 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Tue Apr 19 11:44:53 201613 // Update Count : 211 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Jul 26 11:24:00 2017 13 // Update Count : 4 14 14 // 15 15 16 #ifndef ALTERNATIVEFINDER_H 17 #define ALTERNATIVEFINDER_H 16 #pragma once 18 17 19 18 #include <set> … … 50 49 virtual void visit( AddressExpr *addressExpr ); 51 50 virtual void visit( CastExpr *castExpr ); 51 virtual void visit( VirtualCastExpr *castExpr ); 52 52 virtual void visit( UntypedMemberExpr *memberExpr ); 53 53 virtual void visit( MemberExpr *memberExpr ); … … 132 132 } // namespace ResolvExpr 133 133 134 #endif // ALTERNATIVEFINDER_H135 136 134 // Local Variables: // 137 135 // tab-width: 4 // -
src/ResolvExpr/AlternativePrinter.h
rfd344aa r9236060 10 10 // Created On : Sun May 17 06:55:43 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S un May 17 06:57:12 201513 // Update Count : 312 // Last Modified On : Sat Jul 22 09:37:09 2017 13 // Update Count : 4 14 14 // 15 15 16 #ifndef ALTERNATIVEPRINTER_H 17 #define ALTERNATIVEPRINTER_H 16 #pragma once 18 17 19 18 #include <iostream> … … 34 33 } // namespace ResolvExpr 35 34 36 #endif // ALTERNATIVEPRINTER_H37 38 35 // Local Variables: // 39 36 // tab-width: 4 // -
src/ResolvExpr/ConversionCost.h
rfd344aa r9236060 10 10 // Created On : Sun May 17 09:37:28 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 17:35:56 201613 // Update Count : 312 // Last Modified On : Sat Jul 22 09:38:24 2017 13 // Update Count : 4 14 14 // 15 15 16 #ifndef CONVERSIONCOST_H 17 #define CONVERSIONCOST_H 16 #pragma once 18 17 19 18 #include "SynTree/Visitor.h" … … 54 53 } // namespace ResolvExpr 55 54 56 #endif // CONVERSIONCOST_H */57 58 55 // Local Variables: // 59 56 // tab-width: 4 // -
src/ResolvExpr/Cost.h
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 09:39:50 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Jul 22 16:43:10 201513 // Update Count : 411 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:35:55 2017 13 // Update Count : 5 14 14 // 15 15 16 #ifndef COST_H 17 #define COST_H 16 #pragma once 18 17 19 18 #include <iostream> … … 145 144 } // namespace ResolvExpr 146 145 147 #endif // COST_H148 149 146 // Local Variables: // 150 147 // tab-width: 4 // -
src/ResolvExpr/CurrentObject.cc
rfd344aa r9236060 38 38 return constExpr->get_constant()->get_ival(); 39 39 } else { 40 assertf( false, "Non-integer constant expression in getConstValue ", toString( constExpr ).c_str() ); // xxx - might be semantic error40 assertf( false, "Non-integer constant expression in getConstValue %s", toString( constExpr ).c_str() ); // xxx - might be semantic error 41 41 } 42 42 } else if ( dynamic_cast< OneType * >( constExpr->get_result() ) ) { … … 163 163 setPosition( castExpr->get_arg() ); 164 164 } else if ( VariableExpr * varExpr = dynamic_cast< VariableExpr * >( expr ) ) { 165 assertf( dynamic_cast<EnumInstType *> ( varExpr->get_result() ), "ArrayIterator given variable that isn't an enum constant ", toString( expr ).c_str() );165 assertf( dynamic_cast<EnumInstType *> ( varExpr->get_result() ), "ArrayIterator given variable that isn't an enum constant : %s", toString( expr ).c_str() ); 166 166 index = 0; // xxx - get actual value of enum constant 167 167 } else if ( dynamic_cast< SizeofExpr * >( expr ) || dynamic_cast< AlignofExpr * >( expr ) ) { … … 505 505 curTypes = newTypes; 506 506 newTypes.clear(); 507 assertf( desigAlts.size() == curTypes.size(), "Designator alternatives (% d) and current types (%d) out of sync", desigAlts.size(), curTypes.size() );507 assertf( desigAlts.size() == curTypes.size(), "Designator alternatives (%zu) and current types (%zu) out of sync", desigAlts.size(), curTypes.size() ); 508 508 } // for 509 509 if ( desigAlts.size() > 1 ) { -
src/ResolvExpr/CurrentObject.h
rfd344aa r9236060 9 9 // Author : Rob Schluntz 10 10 // Created On : Thu Jun 8 11:07:25 2017 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Thu Jun 8 11:07:41201713 // Update Count : 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:36:48 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef CURRENT_OBJECT_H 17 #define CURRENT_OBJECT_H 16 #pragma once 18 17 19 18 #include <stack> … … 51 50 } // namespace ResolvExpr 52 51 53 #endif // CURRENT_OBJECT_H54 55 52 // Local Variables: // 56 53 // tab-width: 4 // -
src/ResolvExpr/FindOpenVars.h
rfd344aa r9236060 10 10 // Created On : Sun May 17 09:46:04 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S un May 17 09:47:20 201513 // Update Count : 212 // Last Modified On : Sat Jul 22 09:35:18 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef FINDOPENVARS_H 17 #define FINDOPENVARS_H 16 #pragma once 18 17 19 18 #include "Unify.h" … … 25 24 } // namespace ResolvExpr 26 25 27 #endif // FINDOPENVARS_H28 29 26 // Local Variables: // 30 27 // tab-width: 4 // -
src/ResolvExpr/RenameVars.h
rfd344aa r9236060 10 10 // Created On : Sun May 17 12:10:28 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 17:36:39 201613 // Update Count : 312 // Last Modified On : Sat Jul 22 09:33:54 2017 13 // Update Count : 4 14 14 // 15 15 16 #ifndef RESOLVEXPR_RENAMEVARS_H 17 #define RESOLVEXPR_RENAMEVARS_H 16 #pragma once 18 17 19 18 #include <list> … … 56 55 } // namespace ResolvExpr 57 56 58 #endif // RENAMEVARS_H59 60 57 // Local Variables: // 61 58 // tab-width: 4 // -
src/ResolvExpr/ResolveTypeof.h
rfd344aa r9236060 10 10 // Created On : Sun May 17 12:14:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S un May 17 12:16:29 201513 // Update Count : 212 // Last Modified On : Sat Jul 22 09:38:35 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef RESOLVETYPEOF_H 17 #define RESOLVETYPEOF_H 16 #pragma once 18 17 19 18 #include "SynTree/SynTree.h" … … 24 23 } // namespace ResolvExpr 25 24 26 #endif // RESOLVETYPEOF_H27 28 25 // Local Variables: // 29 26 // tab-width: 4 // -
src/ResolvExpr/Resolver.cc
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 12:17:01 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : T hu Mar 23 17:23:14201713 // Update Count : 21 111 // Last Modified By : Andrew Beach 12 // Last Modified On : Tus Aug 8 16:06:00 2017 13 // Update Count : 212 14 14 // 15 15 … … 71 71 virtual void visit( ReturnStmt *returnStmt ) override; 72 72 virtual void visit( ThrowStmt *throwStmt ) override; 73 virtual void visit( CatchStmt *catchStmt ) override; 73 74 74 75 virtual void visit( SingleInit *singleInit ) override; … … 368 369 369 370 void Resolver::visit( ThrowStmt *throwStmt ) { 371 // TODO: Replace *exception type with &exception type. 370 372 if ( throwStmt->get_expr() ) { 371 Expression * wrapped = new CastExpr( throwStmt->get_expr(), new BasicType( Type::Qualifiers(), BasicType::SignedInt ) ); 373 StructDecl * exception_decl = 374 lookupStruct( "__cfaehm__base_exception_t" ); 375 assert( exception_decl ); 376 Expression * wrapped = new CastExpr( 377 throwStmt->get_expr(), 378 new PointerType( 379 noQualifiers, 380 new StructInstType( 381 noQualifiers, 382 exception_decl 383 ) 384 ) 385 ); 372 386 Expression * newExpr = findSingleExpression( wrapped, *this ); 373 387 throwStmt->set_expr( newExpr ); 388 } 389 } 390 391 void Resolver::visit( CatchStmt *catchStmt ) { 392 if ( catchStmt->get_cond() ) { 393 Expression * wrapped = new CastExpr( 394 catchStmt->get_cond(), 395 new BasicType( noQualifiers, BasicType::Bool ) 396 ); 397 catchStmt->set_cond( findSingleExpression( wrapped, *this ) ); 374 398 } 375 399 } -
src/ResolvExpr/Resolver.h
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 12:18:34 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Thu Apr 14 15:06:53 201613 // Update Count : 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:36:57 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef RESOLVER_H 17 #define RESOLVER_H 16 #pragma once 18 17 19 18 #include "SynTree/SynTree.h" … … 29 28 } // namespace ResolvExpr 30 29 31 #endif // RESOLVER_H32 33 30 // Local Variables: // 34 31 // tab-width: 4 // -
src/ResolvExpr/TypeEnvironment.h
rfd344aa r9236060 10 10 // Created On : Sun May 17 12:24:58 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S un May 17 12:26:52 201513 // Update Count : 212 // Last Modified On : Sat Jul 22 09:35:45 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef TYPEENVIRONMENT_H 17 #define TYPEENVIRONMENT_H 16 #pragma once 18 17 19 18 #include <string> … … 99 98 } // namespace ResolvExpr 100 99 101 #endif // TYPEENVIRONMENT_H */102 103 100 // Local Variables: // 104 101 // tab-width: 4 // -
src/ResolvExpr/TypeMap.h
rfd344aa r9236060 9 9 // Author : Aaron B. Moss 10 10 // Created On : Fri Feb 19 13:55:00 2016 11 // Last Modified By : Aaron B. Moss 12 // Last Modified On : Fri Feb 19 13:55:00 2016 13 // Update Count : 1 14 // 15 16 #ifndef _TYPEMAP_H 17 #define _TYPEMAP_H 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:37:19 2017 13 // Update Count : 2 14 // 15 16 #pragma once 18 17 19 18 #include <map> … … 204 203 } // namespace ResolvExpr 205 204 206 #endif // _TYPEMAP_H207 208 205 // Local Variables: // 209 206 // tab-width: 4 // -
src/ResolvExpr/Unify.h
rfd344aa r9236060 10 10 // Created On : Sun May 17 13:09:04 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun May 17 13:10:34 201513 // Update Count : 212 // Last Modified On : Fri Jul 21 23:09:34 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef UNIFY_H 17 #define UNIFY_H 16 #pragma once 18 17 19 18 #include <map> … … 72 71 } // namespace ResolvExpr 73 72 74 #endif // UNIFY_H75 76 73 // Local Variables: // 77 74 // tab-width: 4 // -
src/ResolvExpr/typeops.h
rfd344aa r9236060 10 10 // Created On : Sun May 17 07:28:22 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S un May 17 07:33:11 201513 // Update Count : 212 // Last Modified On : Sat Jul 22 09:36:18 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef TYPEOPS_H 17 #define TYPEOPS_H 16 #pragma once 18 17 19 18 #include "SynTree/SynTree.h" … … 116 115 } // namespace ResolvExpr 117 116 118 #endif // TYPEOPS_H119 120 117 // Local Variables: // 121 118 // tab-width: 4 // -
src/SymTab/AddVisit.h
rfd344aa r9236060 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
rfd344aa r9236060 10 10 // Created On : Thu Mar 03 15:45:56 2016 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Jun 28 15:30:00 201713 // Update Count : 6 112 // Last Modified On : Fri Jul 14 16:41:00 2017 13 // Update Count : 62 14 14 // 15 15 16 #include <list>17 #include <iterator>18 #include "SynTree/Visitor.h"19 #include "SynTree/Attribute.h"20 #include "SynTree/Type.h"21 #include "SynTree/Statement.h"22 #include "SynTree/TypeSubstitution.h"23 #include "Common/utility.h"24 #include "CodeGen/OperatorTable.h"25 #include "AddVisit.h"26 #include "MakeLibCfa.h"27 16 #include "Autogen.h" 28 #include "GenPoly/ScopedSet.h" 29 #include "Common/ScopedMap.h" 30 #include "SymTab/Mangler.h" 31 #include "GenPoly/DeclMutator.h" 17 18 #include <algorithm> // for count_if 19 #include <cassert> // for safe_dynamic_cast, assert, assertf 20 #include <iterator> // for back_insert_iterator, back_inserter 21 #include <list> // for list, _List_iterator, list<>::iter... 22 #include <set> // for set, _Rb_tree_const_iterator 23 #include <vector> // for vector 24 25 #include "AddVisit.h" // for addVisit 26 #include "CodeGen/OperatorTable.h" // for isCtorDtor, isCtorDtorAssign 27 #include "Common/ScopedMap.h" // for ScopedMap<>::const_iterator, Scope... 28 #include "Common/utility.h" // for cloneAll, operator+ 29 #include "GenPoly/DeclMutator.h" // for DeclMutator 30 #include "GenPoly/ScopedSet.h" // for ScopedSet, ScopedSet<>::iterator 31 #include "SymTab/Mangler.h" // for Mangler 32 #include "SynTree/Attribute.h" // For Attribute 33 #include "SynTree/Mutator.h" // for maybeMutate 34 #include "SynTree/Statement.h" // for CompoundStmt, ReturnStmt, ExprStmt 35 #include "SynTree/Type.h" // for FunctionType, Type, TypeInstType 36 #include "SynTree/Visitor.h" // for maybeAccept, Visitor, acceptAll 37 38 class Attribute; 32 39 33 40 namespace SymTab { … … 396 403 void makeStructFunctions( StructDecl *aggregateDecl, StructInstType *refType, unsigned int functionNesting, std::list< Declaration * > & declsToAdd, const std::vector< FuncData > & data ) { 397 404 // Builtins do not use autogeneration. 398 if ( aggregateDecl->get_linkage() == LinkageSpec::Builtin ||405 if ( aggregateDecl->get_linkage() == LinkageSpec::BuiltinCFA || 399 406 aggregateDecl->get_linkage() == LinkageSpec::BuiltinC ) { 400 407 return; -
src/SymTab/Autogen.h
rfd344aa r9236060 10 10 // Created On : Sun May 17 21:53:34 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jun 21 17:25:26201713 // Update Count : 1 412 // Last Modified On : Sat Jul 22 09:50:25 2017 13 // Update Count : 15 14 14 // 15 15 16 #ifndef AUTOGEN_H 17 #define AUTOGEN_H 16 #pragma once 18 17 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" 18 #include <cassert> // for assert 19 #include <iterator> // for back_insert_iterator, back_inserter 20 #include <list> // for list 21 #include <string> // for string, operator== 22 23 #include "Common/UniqueName.h" // for UniqueName 24 #include "InitTweak/InitTweak.h" // for InitExpander 25 #include "Parser/LinkageSpec.h" // for C 26 #include "SynTree/Constant.h" // for Constant 27 #include "SynTree/Declaration.h" // for ObjectDecl, Declaration (ptr only) 28 #include "SynTree/Expression.h" // for UntypedExpr, NameExpr, VariableExpr 29 #include "SynTree/Initializer.h" // for SingleInit 30 #include "SynTree/Label.h" // for Label, noLabels 31 #include "SynTree/Statement.h" // for Statement (ptr only), CompoundStmt 32 #include "SynTree/Type.h" // for Type, ArrayType, Type::Qualifiers 25 33 26 34 namespace SymTab { … … 160 168 if ( isUnnamedBitfield( obj ) ) return; 161 169 162 bool addCast = (fname == "?{}" || fname == "^?{}") && ( !obj || ( obj && obj->get_bitfieldWidth() == NULL) );170 bool addCast = (fname == "?{}" || fname == "^?{}") && ( !obj || ( obj && ! obj->get_bitfieldWidth() ) ); 163 171 std::list< Statement * > stmts; 164 172 genCall( srcParam, dstParam, fname, back_inserter( stmts ), obj->get_type(), addCast, forward ); … … 179 187 } 180 188 } // namespace SymTab 181 #endif // AUTOGEN_H 189 190 // Local Variables: // 191 // tab-width: 4 // 192 // mode: c++ // 193 // compile-command: "make install" // 194 // End: // 195 -
src/SymTab/FixFunction.cc
rfd344aa r9236060 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
rfd344aa r9236060 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // FixFunction.h -- 7 // FixFunction.h -- 8 8 // 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 17:02:08 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 17:34:06 201613 // Update Count : 312 // Last Modified On : Sat Jul 22 09:45:55 2017 13 // Update Count : 4 14 14 // 15 15 16 #ifndef FIXFUNCTION_H 17 #define FIXFUNCTION_H 16 #pragma once 18 17 19 #include "SynTree/Mutator.h" 18 #include "SynTree/Mutator.h" // for Mutator 19 #include "SynTree/SynTree.h" // for Types 20 20 21 21 namespace SymTab { … … 44 44 virtual Type* mutate(ZeroType *zeroType); 45 45 virtual Type* mutate(OneType *oneType); 46 46 47 47 bool isVoid; 48 48 }; 49 49 } // namespace SymTab 50 51 #endif // FIXFUNCTION_H52 50 53 51 // Local Variables: // -
src/SymTab/ImplementationType.cc
rfd344aa r9236060 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
rfd344aa r9236060 10 10 // Created On : Sun May 17 21:35:41 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S un May 17 21:37:15 201513 // Update Count : 212 // Last Modified On : Sat Jul 22 09:46:19 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef IMPLEMENTATIONTYPE_H 17 #define IMPLEMENTATIONTYPE_H 16 #pragma once 18 17 19 #include "SynTree/SynTree.h" 20 #include "SymTab/Indexer.h" 18 class Type; 21 19 22 20 namespace SymTab { 21 class Indexer; 22 23 23 Type *implementationType( Type *, const SymTab::Indexer &indexer ); 24 24 … … 31 31 } // namespace SymTab 32 32 33 #endif // IMPLEMENTATIONTYPE_H34 35 33 // Local Variables: // 36 34 // tab-width: 4 // -
src/SymTab/Indexer.cc
rfd344aa r9236060 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 "CodeGen/OperatorTable.h" 30 31 #include "ResolvExpr/typeops.h" 32 33 #include "SynTree/Declaration.h" 34 #include "SynTree/Type.h" 35 #include "SynTree/Expression.h" 36 #include "SynTree/Initializer.h" 37 #include "SynTree/Statement.h" 38 39 #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 "CodeGen/OperatorTable.h" // for isCtorDtor, isCtorDtorAssign 26 #include "Common/SemanticError.h" // for SemanticError 27 #include "Common/utility.h" // for cloneAll 28 #include "InitTweak/InitTweak.h" // for isConstructor, isCopyFunction, isC... 29 #include "Mangler.h" // for Mangler 30 #include "Parser/LinkageSpec.h" // for isMangled, isOverridable, Spec 31 #include "ResolvExpr/typeops.h" // for typesCompatible 32 #include "SynTree/Constant.h" // for Constant 33 #include "SynTree/Declaration.h" // for DeclarationWithType, FunctionDecl 34 #include "SynTree/Expression.h" // for Expression, ImplicitCopyCtorExpr 35 #include "SynTree/Initializer.h" // for Initializer 36 #include "SynTree/Statement.h" // for CompoundStmt, Statement, ForStmt (... 37 #include "SynTree/Type.h" // for Type, StructInstType, UnionInstType 40 38 41 39 #define debugPrint(x) if ( doDebug ) { std::cout << x; } -
src/SymTab/Indexer.h
rfd344aa r9236060 10 10 // Created On : Sun May 17 21:38:55 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 17:34:14 201613 // Update Count : 612 // Last Modified On : Sat Jul 22 09:46:34 2017 13 // Update Count : 7 14 14 // 15 15 16 #ifndef INDEXER_H 17 #define INDEXER_H 16 #pragma once 18 17 19 #include <list> 20 #include <string> 18 #include <iosfwd> // for ostream 19 #include <list> // for list 20 #include <string> // for string 21 21 22 #include "SynTree/Visitor.h" 22 #include "SynTree/Visitor.h" // for Visitor 23 #include "SynTree/SynTree.h" // for AST nodes 23 24 24 25 namespace SymTab { … … 126 127 127 128 struct Impl; 129 128 130 Impl *tables; ///< Copy-on-write instance of table data structure 129 131 unsigned long scope; ///< Scope index of this pointer … … 145 147 } // namespace SymTab 146 148 147 #endif // INDEXER_H148 149 149 // Local Variables: // 150 150 // tab-width: 4 // -
src/SymTab/Mangler.cc
rfd344aa r9236060 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
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 21:44:03 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Aug 19 15:48:46 201513 // Update Count : 1 411 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:45:30 2017 13 // Update Count : 15 14 14 // 15 15 16 #ifndef MANGLER_H 17 #define MANGLER_H 16 #pragma once 18 17 19 #include <sstream> 20 #include "SynTree/SynTree.h" 21 #include "SynTree/Visitor.h" 18 #include <map> // for map, map<>::value_compare 19 #include <sstream> // for ostringstream 20 #include <string> // for string 21 #include <utility> // for pair 22 23 #include "SynTree/SynTree.h" // for Types 24 #include "SynTree/Visitor.h" // for Visitor, maybeAccept 22 25 23 26 namespace SymTab { … … 78 81 } // SymTab 79 82 80 #endif // MANGLER_H81 82 83 // Local Variables: // 83 84 // tab-width: 4 // -
src/SymTab/TypeEquality.cc
rfd344aa r9236060 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
rfd344aa r9236060 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
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 21:50:04 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : T hu Mar 30 16:50:13201713 // Update Count : 35 711 // Last Modified By : Andrew Beach 12 // Last Modified On : Tus Aug 8 13:27:00 2017 13 // Update Count : 358 14 14 // 15 15 … … 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 #include "CodeGen/OperatorTable.h"46 47 #include "Common/PassVisitor.h"48 #include "Common/ScopedMap.h"49 #include "Common/UniqueName.h"50 #include "Common/utility.h"51 52 #include "Concurrency/Keywords.h"53 54 #include "GenPoly/DeclMutator.h"55 56 #include "AddVisit.h"57 #include "Autogen.h"58 #include "FixFunction.h"59 // #include "ImplementationType.h"60 #include "Indexer.h"61 #include "MakeLibCfa.h"62 #include "TypeEquality.h"63 40 #include "Validate.h" 64 41 65 #include "ResolvExpr/typeops.h" 66 67 #include "SynTree/Attribute.h" 68 #include "SynTree/Expression.h" 69 #include "SynTree/Mutator.h" 70 #include "SynTree/Statement.h" 71 #include "SynTree/Type.h" 72 #include "SynTree/TypeSubstitution.h" 73 #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 "CodeGen/OperatorTable.h" // for isCtorDtor, isCtorDtorAssign 57 #include "Common/PassVisitor.h" // for PassVisitor, WithDeclsToAdd 58 #include "Common/ScopedMap.h" // for ScopedMap<>::const_iterator 59 #include "Common/SemanticError.h" // for SemanticError 60 #include "Common/UniqueName.h" // for UniqueName 61 #include "Common/utility.h" // for operator+, cloneAll, deleteAll 62 #include "Concurrency/Keywords.h" // for applyKeywords, implementMutexF... 63 #include "FixFunction.h" // for FixFunction 64 #include "Indexer.h" // for Indexer 65 #include "InitTweak/InitTweak.h" // for isCtorDtor, isCtorDtorAssign 66 #include "Parser/LinkageSpec.h" // for C, Cforall 67 #include "ResolvExpr/typeops.h" // for extractResultType, typesCompat... 68 #include "SynTree/Attribute.h" // for Attribute 69 #include "SynTree/Constant.h" // for Constant 70 #include "SynTree/Declaration.h" // for EnumDecl, StructDecl, UnionDecl 71 #include "SynTree/Expression.h" // for TypeExpr, CompoundLiteralExpr 72 #include "SynTree/Initializer.h" // for ListInit, Initializer, noDesig... 73 #include "SynTree/Mutator.h" // for mutateAll, Mutator 74 #include "SynTree/Statement.h" // for CompoundStmt, DeclStmt, Return... 75 #include "SynTree/Type.h" // for Type, TypeInstType, TraitInstType 76 #include "SynTree/TypeSubstitution.h" // for TypeSubstitution, applySubstit... 77 #include "SynTree/Visitor.h" // for acceptAll, Visitor 74 78 75 79 #define debugPrint( x ) if ( doDebug ) { std::cout << x; } … … 612 616 // a return statement in a void-returning function in C. The expression is treated as if it 613 617 // were cast to void. 614 if ( returnStmt->get_expr() == NULL&& returnVals.size() != 0 ) {618 if ( ! returnStmt->get_expr() && returnVals.size() != 0 ) { 615 619 throw SemanticError( "Non-void function returns no values: " , returnStmt ); 616 620 } … … 691 695 Type *designatorType = tyDecl->get_base()->stripDeclarator(); 692 696 if ( StructInstType *aggDecl = dynamic_cast< StructInstType * >( designatorType ) ) { 693 return new StructDecl( aggDecl->get_name() );697 return new StructDecl( aggDecl->get_name(), DeclarationNode::Struct, noAttributes, tyDecl->get_linkage() ); 694 698 } else if ( UnionInstType *aggDecl = dynamic_cast< UnionInstType * >( designatorType ) ) { 695 return new UnionDecl( aggDecl->get_name() );699 return new UnionDecl( aggDecl->get_name(), noAttributes, tyDecl->get_linkage() ); 696 700 } else if ( EnumInstType *enumDecl = dynamic_cast< EnumInstType * >( designatorType ) ) { 697 return new EnumDecl( enumDecl->get_name() );701 return new EnumDecl( enumDecl->get_name(), noAttributes, tyDecl->get_linkage() ); 698 702 } else { 699 703 return ret->clone(); … … 788 792 type = new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ); 789 793 } // if 790 TypedefDeclPtr tyDecl( new TypedefDecl( aggDecl->get_name(), Type::StorageClasses(), type ) );794 TypedefDeclPtr tyDecl( new TypedefDecl( aggDecl->get_name(), Type::StorageClasses(), type, aggDecl->get_linkage() ) ); 791 795 typedefNames[ aggDecl->get_name() ] = std::make_pair( std::move( tyDecl ), scopeLevel ); 792 796 } // if … … 843 847 void validateGeneric( Aggr * inst ) { 844 848 std::list< TypeDecl * > * params = inst->get_baseParameters(); 845 if ( params != NULL) {849 if ( params ) { 846 850 std::list< Expression * > & args = inst->get_parameters(); 847 851 … … 908 912 FunctionType * ftype = functionDecl->get_functionType(); 909 913 std::list< DeclarationWithType * > & retVals = ftype->get_returnVals(); 910 assertf( retVals.size() == 0 || retVals.size() == 1, "Function %s has too many return values: % d", functionDecl->get_name().c_str(), retVals.size() );914 assertf( retVals.size() == 0 || retVals.size() == 1, "Function %s has too many return values: %zu", functionDecl->get_name().c_str(), retVals.size() ); 911 915 if ( retVals.size() == 1 ) { 912 916 // ensure all function return values have a name - use the name of the function to disambiguate (this also provides a nice bit of help for debugging). … … 944 948 void ArrayLength::previsit( ObjectDecl * objDecl ) { 945 949 if ( ArrayType * at = dynamic_cast< ArrayType * >( objDecl->get_type() ) ) { 946 if ( at->get_dimension() != nullptr) return;950 if ( at->get_dimension() ) return; 947 951 if ( ListInit * init = dynamic_cast< ListInit * >( objDecl->get_init() ) ) { 948 952 at->set_dimension( new ConstantExpr( Constant::from_ulong( init->get_initializers().size() ) ) ); -
src/SymTab/Validate.h
rfd344aa r9236060 11 11 // Created On : Sun May 17 21:53:34 2015 12 12 // Last Modified By : Peter A. Buhr 13 // Last Modified On : Tue May 19 16:49:43 201514 // Update Count : 313 // Last Modified On : Sat Jul 22 09:46:07 2017 14 // Update Count : 4 15 15 // 16 16 17 #ifndef VALIDATE_H 18 #define VALIDATE_H 17 #pragma once 19 18 20 #include "SynTree/SynTree.h" 19 #include <list> // for list 20 21 class Declaration; 22 class Type; 21 23 22 24 namespace SymTab { … … 28 30 } // namespace SymTab 29 31 30 #endif // VALIDATE_H31 32 32 // Local Variables: // 33 33 // tab-width: 4 // -
src/SymTab/module.mk
rfd344aa r9236060 10 10 ## Author : Richard C. Bilson 11 11 ## Created On : Mon Jun 1 17:49:17 2015 12 ## Last Modified By : Rob Schluntz13 ## Last Modified On : T ue Jul 07 16:22:23 201514 ## Update Count : 212 ## Last Modified By : Andrew Beach 13 ## Last Modified On : Thr Aug 10 16:08:00 2017 14 ## Update Count : 4 15 15 ############################################################################### 16 16 -
src/SynTree/AddStmtVisitor.h
rfd344aa r9236060 10 10 // Created On : Wed Jun 22 12:05:48 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 12 17:50:32 201613 // Update Count : 812 // Last Modified On : Sat Jul 22 09:51:08 2017 13 // Update Count : 9 14 14 // 15 15 16 #ifndef ADD_STATEMENT_VISITOR_H 17 #define ADD_STATEMENT_VISITOR_H 16 #pragma once 18 17 19 18 #include <list> … … 42 41 }; 43 42 44 #endif // ADD_STATEMENT_VISITOR_H 43 // Local Variables: // 44 // tab-width: 4 // 45 // mode: c++ // 46 // compile-command: "make install" // 47 // End: // -
src/SynTree/AggregateDecl.cc
rfd344aa r9236060 10 10 // Created On : Sun May 17 23:56:39 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Tus Jun 27 15:30:00 201713 // Update Count : 2 112 // Last Modified On : Fri Aug 4 14:22:00 2017 13 // Update Count : 22 14 14 // 15 15 … … 40 40 using std::endl; 41 41 42 os << typeString() << " " << get_name(); 43 os << string( indent+2, ' ' ) << "with body " << has_body() << endl; 42 os << typeString() << " " << get_name() << ":"; 43 if ( get_linkage() != LinkageSpec::Cforall ) { 44 os << " " << LinkageSpec::linkageName( get_linkage() ); 45 } // if 46 os << " with body " << has_body() << endl; 44 47 45 48 if ( ! parameters.empty() ) { -
src/SynTree/Attribute.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jan 18 16:27:11201713 // Update Count : 3 812 // Last Modified On : Sat Jul 22 09:54:14 2017 13 // Update Count : 39 14 14 // 15 15 16 #ifndef GCC_ATTRIBUTE_H 17 #define GCC_ATTRIBUTE_H 16 #pragma once 18 17 19 18 #include "SynTree.h" … … 42 41 const std::list< Attribute * > noAttributes; 43 42 44 #endif45 46 43 // Local Variables: // 47 44 // tab-width: 4 // -
src/SynTree/BaseSyntaxNode.h
rfd344aa r9236060 14 14 // 15 15 16 #ifndef BASE_SYNTAX_NODE_H 17 #define BASE_SYNTAX_NODE_H 16 #pragma once 18 17 19 18 #include "Common/utility.h" … … 29 28 }; 30 29 31 #endif // BASE_SYNTAX_NODE_H32 33 30 // Local Variables: // 34 31 // tab-width: 4 // -
src/SynTree/Constant.cc
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Thr Jun 22 10:11:00 201713 // Update Count : 2 812 // Last Modified On : Fri Jul 14 14:50:00 2017 13 // Update Count : 29 14 14 // 15 15 … … 46 46 } 47 47 48 Constant Constant::null( Type * ptrtype ) { 49 if ( nullptr == ptrtype ) { 50 ptrtype = new PointerType( 51 Type::Qualifiers(), 52 new VoidType( Type::Qualifiers() ) 53 ); 54 } 55 56 return Constant( ptrtype, "0", (unsigned long long int)0 ); 57 } 58 48 59 unsigned long long Constant::get_ival() const { 49 60 assertf( safe_dynamic_cast<BasicType*>(type)->isInteger(), "Attempt to retrieve ival from non-integer constant." ); -
src/SynTree/Constant.h
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Thr Jun 22 10:13:00201713 // Update Count : 1 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:54:46 2017 13 // Update Count : 17 14 14 // 15 15 16 #ifndef CONSTANT_H 17 #define CONSTANT_H 16 #pragma once 18 17 19 18 #include "SynTree.h" … … 44 43 static Constant from_double( double d ); 45 44 45 /// generates a null pointer value for the given type. void * if omitted. 46 static Constant null( Type * ptrtype = nullptr ); 47 46 48 virtual void accept( Visitor & v ) { v.visit( this ); } 47 49 virtual Constant * acceptMutator( Mutator & m ) { return m.mutate( this ); } … … 58 60 }; 59 61 60 #endif // CONSTANT_H61 62 62 // Local Variables: // 63 63 // tab-width: 4 // -
src/SynTree/Declaration.cc
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Thu Mar 16 07:49:18201713 // Update Count : 2 411 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Aug 9 14:38:00 2017 13 // Update Count : 25 14 14 // 15 15 … … 28 28 29 29 Declaration::Declaration( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage ) 30 : name( name ), storageClasses( scs ), linkage( linkage), uniqueId( 0 ) {30 : name( name ), linkage( linkage ), storageClasses( scs ), uniqueId( 0 ) { 31 31 } 32 32 33 33 Declaration::Declaration( const Declaration &other ) 34 : BaseSyntaxNode( other ), name( other.name ), storageClasses( other.storageClasses ), linkage( other.linkage), uniqueId( other.uniqueId ) {34 : BaseSyntaxNode( other ), name( other.name ), linkage( other.linkage ), extension( other.extension ), storageClasses( other.storageClasses ), uniqueId( other.uniqueId ) { 35 35 } 36 36 -
src/SynTree/Declaration.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Tus Jun 27 15:31:00 2017 13 // Update Count : 122 14 // 15 16 #ifndef DECLARATION_H 17 #define DECLARATION_H 12 // Last Modified On : Wed Aug 9 14:45:00 2017 13 // Update Count : 126 14 // 15 16 #pragma once 18 17 19 18 #include <string> … … 28 27 class Declaration : public BaseSyntaxNode { 29 28 public: 29 std::string name; 30 LinkageSpec::Spec linkage; 31 bool extension = false; 32 30 33 Declaration( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage ); 31 34 Declaration( const Declaration &other ); … … 54 57 static void dumpIds( std::ostream &os ); 55 58 static Declaration *declFromId( UniqueId id ); 56 private: 57 std::string name; 59 60 private: 58 61 Type::StorageClasses storageClasses; 59 LinkageSpec::Spec linkage;60 62 UniqueId uniqueId; 61 bool extension = false;62 63 }; 63 64 64 65 class DeclarationWithType : public Declaration { 65 66 public: 66 DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs );67 DeclarationWithType( const DeclarationWithType &other );68 virtual ~DeclarationWithType();69 70 std::string get_mangleName() const { return mangleName; }71 DeclarationWithType * set_mangleName( std::string newValue ) { mangleName = newValue; return this; }72 73 std::string get_scopedMangleName() const { return mangleName + "_" + std::to_string(scopeLevel); }74 75 int get_scopeLevel() const { return scopeLevel; }76 DeclarationWithType * set_scopeLevel( int newValue ) { scopeLevel = newValue; return this; }77 78 ConstantExpr *get_asmName() const { return asmName; }79 DeclarationWithType * set_asmName( ConstantExpr *newValue ) { asmName = newValue; return this; }80 81 std::list< Attribute * >& get_attributes() { return attributes; }82 const std::list< Attribute * >& get_attributes() const { return attributes; }83 84 Type::FuncSpecifiers get_funcSpec() const { return fs; }85 //void set_functionSpecifiers( Type::FuncSpecifiers newValue ) { fs = newValue; }86 87 virtual DeclarationWithType *clone() const = 0;88 virtual DeclarationWithType *acceptMutator( Mutator &m ) = 0;89 90 virtual Type *get_type() const = 0;91 virtual void set_type(Type *) = 0;92 private:93 67 // this represents the type with all types and typedefs expanded it is generated by SymTab::Validate::Pass2 94 68 std::string mangleName; … … 98 72 ConstantExpr *asmName; 99 73 std::list< Attribute * > attributes; 74 75 DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs ); 76 DeclarationWithType( const DeclarationWithType &other ); 77 virtual ~DeclarationWithType(); 78 79 std::string get_mangleName() const { return mangleName; } 80 DeclarationWithType * set_mangleName( std::string newValue ) { mangleName = newValue; return this; } 81 82 std::string get_scopedMangleName() const { return mangleName + "_" + std::to_string(scopeLevel); } 83 84 int get_scopeLevel() const { return scopeLevel; } 85 DeclarationWithType * set_scopeLevel( int newValue ) { scopeLevel = newValue; return this; } 86 87 ConstantExpr *get_asmName() const { return asmName; } 88 DeclarationWithType * set_asmName( ConstantExpr *newValue ) { asmName = newValue; return this; } 89 90 std::list< Attribute * >& get_attributes() { return attributes; } 91 const std::list< Attribute * >& get_attributes() const { return attributes; } 92 93 Type::FuncSpecifiers get_funcSpec() const { return fs; } 94 //void set_functionSpecifiers( Type::FuncSpecifiers newValue ) { fs = newValue; } 95 96 virtual DeclarationWithType *clone() const = 0; 97 virtual DeclarationWithType *acceptMutator( Mutator &m ) = 0; 98 99 virtual Type *get_type() const = 0; 100 virtual void set_type(Type *) = 0; 101 102 private: 100 103 Type::FuncSpecifiers fs; 101 104 }; … … 104 107 typedef DeclarationWithType Parent; 105 108 public: 109 Type *type; 110 Initializer *init; 111 Expression *bitfieldWidth; 112 106 113 ObjectDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init, 107 114 const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() ); … … 123 130 virtual void print( std::ostream &os, int indent = 0 ) const; 124 131 virtual void printShort( std::ostream &os, int indent = 0 ) const; 125 private:126 Type *type;127 Initializer *init;128 Expression *bitfieldWidth;129 132 }; 130 133 … … 132 135 typedef DeclarationWithType Parent; 133 136 public: 137 FunctionType *type; 138 CompoundStmt *statements; 139 134 140 FunctionDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements, 135 141 const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() ); … … 150 156 virtual void print( std::ostream &os, int indent = 0 ) const; 151 157 virtual void printShort( std::ostream &os, int indent = 0 ) const; 152 private:153 FunctionType *type;154 CompoundStmt *statements;155 158 }; 156 159 … … 158 161 typedef Declaration Parent; 159 162 public: 163 Type *base; 164 std::list< TypeDecl* > parameters; 165 std::list< DeclarationWithType* > assertions; 166 160 167 NamedTypeDecl( const std::string &name, Type::StorageClasses scs, Type *type ); 161 168 NamedTypeDecl( const NamedTypeDecl &other ); … … 172 179 virtual void print( std::ostream &os, int indent = 0 ) const; 173 180 virtual void printShort( std::ostream &os, int indent = 0 ) const; 174 protected:175 private:176 Type *base;177 std::list< TypeDecl* > parameters;178 std::list< DeclarationWithType* > assertions;179 181 }; 180 182 … … 183 185 public: 184 186 enum Kind { Any, Dtype, Ftype, Ttype }; 187 188 Type * init; 189 bool sized; 190 185 191 /// Data extracted from a type decl 186 192 struct Data { … … 217 223 private: 218 224 Kind kind; 219 Type * init;220 bool sized;221 225 }; 222 226 … … 224 228 typedef NamedTypeDecl Parent; 225 229 public: 226 TypedefDecl( const std::string &name, Type::StorageClasses scs, Type *type ) : Parent( name, scs, type ) {}230 TypedefDecl( const std::string &name, Type::StorageClasses scs, Type *type, LinkageSpec::Spec spec = LinkageSpec::Cforall ) : Parent( name, scs, type ) { set_linkage( spec ); } 227 231 TypedefDecl( const TypedefDecl &other ) : Parent( other ) {} 228 232 … … 238 242 typedef Declaration Parent; 239 243 public: 240 AggregateDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall );241 AggregateDecl( const AggregateDecl &other );242 virtual ~AggregateDecl();243 244 std::list<Declaration*>& get_members() { return members; }245 std::list<TypeDecl*>& get_parameters() { return parameters; }246 247 std::list< Attribute * >& get_attributes() { return attributes; }248 const std::list< Attribute * >& get_attributes() const { return attributes; }249 250 bool has_body() const { return body; }251 AggregateDecl * set_body( bool body ) { AggregateDecl::body = body; return this; }252 253 virtual void print( std::ostream &os, int indent = 0 ) const;254 virtual void printShort( std::ostream &os, int indent = 0 ) const;255 protected:256 virtual std::string typeString() const = 0;257 258 private:259 244 std::list<Declaration*> members; 260 245 std::list<TypeDecl*> parameters; 261 246 bool body; 262 247 std::list< Attribute * > attributes; 248 249 AggregateDecl( const std::string &name, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ); 250 AggregateDecl( const AggregateDecl &other ); 251 virtual ~AggregateDecl(); 252 253 std::list<Declaration*>& get_members() { return members; } 254 std::list<TypeDecl*>& get_parameters() { return parameters; } 255 256 std::list< Attribute * >& get_attributes() { return attributes; } 257 const std::list< Attribute * >& get_attributes() const { return attributes; } 258 259 bool has_body() const { return body; } 260 AggregateDecl * set_body( bool body ) { AggregateDecl::body = body; return this; } 261 262 virtual void print( std::ostream &os, int indent = 0 ) const; 263 virtual void printShort( std::ostream &os, int indent = 0 ) const; 264 protected: 265 virtual std::string typeString() const = 0; 263 266 }; 264 267 … … 266 269 typedef AggregateDecl Parent; 267 270 public: 268 StructDecl( const std::string &name, DeclarationNode::Aggregate kind = DeclarationNode::Struct, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ), kind( kind ) {} 271 StructDecl( const std::string &name, DeclarationNode::Aggregate kind = DeclarationNode::Struct, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ), kind( kind ), tagged( false ), parent_name( "" ) {} 272 StructDecl( const std::string &name, const std::string *parent, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ), kind( DeclarationNode::Struct ), tagged( true ), parent_name( parent ? *parent : "" ) {} 269 273 StructDecl( const StructDecl &other ) : Parent( other ) {} 270 274 … … 273 277 bool is_thread() { return kind == DeclarationNode::Thread; } 274 278 279 // Tagged/Tree Structure Excetion 280 bool get_tagged() { return tagged; } 281 void set_tagged( bool newValue ) { tagged = newValue; } 282 bool has_parent() { return parent_name != ""; } 283 std::string get_parentName() { return parent_name; } 284 275 285 virtual StructDecl *clone() const { return new StructDecl( *this ); } 276 286 virtual void accept( Visitor &v ) { v.visit( this ); } … … 279 289 DeclarationNode::Aggregate kind; 280 290 virtual std::string typeString() const; 291 292 bool tagged; 293 std::string parent_name; 281 294 }; 282 295 … … 324 337 class AsmDecl : public Declaration { 325 338 public: 339 AsmStmt *stmt; 340 326 341 AsmDecl( AsmStmt *stmt ); 327 342 AsmDecl( const AsmDecl &other ); … … 336 351 virtual void print( std::ostream &os, int indent = 0 ) const; 337 352 virtual void printShort( std::ostream &os, int indent = 0 ) const; 338 private:339 AsmStmt *stmt;340 353 }; 341 354 342 355 std::ostream & operator<<( std::ostream & out, const Declaration * decl ); 343 356 std::ostream & operator<<( std::ostream & os, const TypeDecl::Data & data ); 344 345 #endif // DECLARATION_H346 357 347 358 // Local Variables: // -
src/SynTree/Expression.cc
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T hu Mar 30 16:41:13201713 // Update Count : 5 212 // Last Modified On : Tue Jul 25 14:15:47 2017 13 // Update Count : 54 14 14 // 15 15 … … 305 305 if ( result->isVoid() ) { 306 306 os << "nothing"; 307 } else { 308 result->print( os, indent+2 ); 309 } // if 310 os << std::endl; 311 Expression::print( os, indent ); 312 } 313 314 VirtualCastExpr::VirtualCastExpr( Expression *arg_, Type *toType ) : Expression(), arg(arg_) { 315 set_result(toType); 316 } 317 318 VirtualCastExpr::VirtualCastExpr( const VirtualCastExpr &other ) : Expression( other ), arg( maybeClone( other.arg ) ) { 319 } 320 321 VirtualCastExpr::~VirtualCastExpr() { 322 delete arg; 323 } 324 325 void VirtualCastExpr::print( std::ostream &os, int indent ) const { 326 os << "Virtual Cast of:" << std::endl << std::string( indent+2, ' ' ); 327 arg->print(os, indent+2); 328 os << std::endl << std::string( indent, ' ' ) << "to:" << std::endl; 329 os << std::string( indent+2, ' ' ); 330 if ( ! result ) { 331 os << "unknown"; 307 332 } else { 308 333 result->print( os, indent+2 ); -
src/SynTree/Expression.h
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Thu Mar 30 16:44:00 201713 // Update Count : 4 111 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Aug 8 11:54:00 2017 13 // Update Count : 44 14 14 // 15 15 16 #ifndef EXPRESSION_H 17 #define EXPRESSION_H 16 #pragma once 18 17 19 18 #include <map> … … 30 29 class Expression : public BaseSyntaxNode{ 31 30 public: 31 Type * result; 32 TypeSubstitution * env; 33 Expression * argName; // if expression is used as an argument, it can be "designated" by this name 34 bool extension = false; 35 32 36 Expression( Expression * _aname = nullptr ); 33 37 Expression( const Expression & other ); … … 50 54 virtual Expression * acceptMutator( Mutator & m ) = 0; 51 55 virtual void print( std::ostream & os, int indent = 0 ) const; 52 protected:53 Type * result;54 TypeSubstitution * env;55 Expression * argName; // if expression is used as an argument, it can be "designated" by this name56 bool extension = false;57 56 }; 58 57 … … 80 79 class ApplicationExpr : public Expression { 81 80 public: 82 ApplicationExpr( Expression * function, const std::list<Expression *> & args = std::list<Expression *>() ); 81 Expression * function; 82 83 ApplicationExpr( Expression * function, const std::list<Expression *> & args = std::list< Expression * >() ); 83 84 ApplicationExpr( const ApplicationExpr & other ); 84 85 virtual ~ApplicationExpr(); … … 93 94 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 94 95 virtual void print( std::ostream & os, int indent = 0 ) const; 96 95 97 private: 96 Expression * function;97 98 std::list<Expression *> args; 98 99 InferredParams inferParams; … … 104 105 class UntypedExpr : public Expression { 105 106 public: 107 Expression * function; 108 std::list<Expression*> args; 109 106 110 UntypedExpr( Expression * function, const std::list<Expression *> & args = std::list< Expression * >(), Expression *_aname = nullptr ); 107 111 UntypedExpr( const UntypedExpr & other ); … … 124 128 virtual void print( std::ostream & os, int indent = 0 ) const; 125 129 virtual void printArgs(std::ostream & os, int indent = 0) const; 126 private:127 Expression * function;128 std::list<Expression*> args;129 130 }; 130 131 … … 132 133 class NameExpr : public Expression { 133 134 public: 135 std::string name; 136 134 137 NameExpr( std::string name, Expression *_aname = nullptr ); 135 138 NameExpr( const NameExpr & other ); … … 143 146 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 144 147 virtual void print( std::ostream & os, int indent = 0 ) const; 145 private:146 std::string name;147 148 }; 148 149 … … 153 154 class AddressExpr : public Expression { 154 155 public: 156 Expression * arg; 157 155 158 AddressExpr( Expression * arg, Expression *_aname = nullptr ); 156 159 AddressExpr( const AddressExpr & other ); … … 164 167 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 165 168 virtual void print( std::ostream & os, int indent = 0 ) const; 166 private:167 Expression * arg;168 169 }; 169 170 … … 171 172 class LabelAddressExpr : public Expression { 172 173 public: 174 Expression * arg; 175 173 176 LabelAddressExpr( Expression * arg ); 174 177 LabelAddressExpr( const LabelAddressExpr & other ); … … 182 185 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 183 186 virtual void print( std::ostream & os, int indent = 0 ) const; 184 private:185 Expression * arg;186 187 }; 187 188 … … 189 190 class CastExpr : public Expression { 190 191 public: 192 Expression * arg; 193 191 194 CastExpr( Expression * arg, Expression *_aname = nullptr ); 192 195 CastExpr( Expression * arg, Type * toType, Expression *_aname = nullptr ); … … 195 198 196 199 Expression * get_arg() const { return arg; } 197 void set_arg( Expression * newValue ) { arg = newValue; }200 void set_arg( Expression * newValue ) { arg = newValue; } 198 201 199 202 virtual CastExpr * clone() const { return new CastExpr( * this ); } … … 201 204 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 202 205 virtual void print( std::ostream & os, int indent = 0 ) const; 203 private: 206 }; 207 208 /// VirtualCastExpr repersents a virtual dynamic cast, e.g. (virtual exception)e 209 class VirtualCastExpr : public Expression { 210 public: 204 211 Expression * arg; 212 213 VirtualCastExpr( Expression * arg, Type * toType ); 214 VirtualCastExpr( const VirtualCastExpr & other ); 215 virtual ~VirtualCastExpr(); 216 217 Expression * get_arg() const { return arg; } 218 void set_arg( Expression * newValue ) { arg = newValue; } 219 220 virtual VirtualCastExpr * clone() const { return new VirtualCastExpr( * this ); } 221 virtual void accept( Visitor & v ) { v.visit( this ); } 222 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 223 virtual void print( std::ostream & os, int indent = 0 ) const; 205 224 }; 206 225 … … 208 227 class UntypedMemberExpr : public Expression { 209 228 public: 229 Expression * member; 230 Expression * aggregate; 231 210 232 UntypedMemberExpr( Expression * member, Expression * aggregate, Expression *_aname = nullptr ); 211 233 UntypedMemberExpr( const UntypedMemberExpr & other ); … … 221 243 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 222 244 virtual void print( std::ostream & os, int indent = 0 ) const; 223 private:224 Expression * member;225 Expression * aggregate;226 245 }; 227 246 … … 230 249 class MemberExpr : public Expression { 231 250 public: 251 DeclarationWithType * member; 252 Expression * aggregate; 253 232 254 MemberExpr( DeclarationWithType * member, Expression * aggregate, Expression *_aname = nullptr ); 233 255 MemberExpr( const MemberExpr & other ); … … 243 265 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 244 266 virtual void print( std::ostream & os, int indent = 0 ) const; 245 private:246 DeclarationWithType * member;247 Expression * aggregate;248 267 }; 249 268 … … 252 271 class VariableExpr : public Expression { 253 272 public: 273 DeclarationWithType * var; 274 254 275 VariableExpr( DeclarationWithType * var, Expression *_aname = nullptr ); 255 276 VariableExpr( const VariableExpr & other ); … … 265 286 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 266 287 virtual void print( std::ostream & os, int indent = 0 ) const; 267 private:268 DeclarationWithType * var;269 288 }; 270 289 … … 272 291 class ConstantExpr : public Expression { 273 292 public: 293 Constant constant; 294 274 295 ConstantExpr( Constant constant, Expression *_aname = nullptr ); 275 296 ConstantExpr( const ConstantExpr & other ); … … 283 304 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 284 305 virtual void print( std::ostream & os, int indent = 0 ) const; 285 private:286 Constant constant;287 306 }; 288 307 … … 290 309 class SizeofExpr : public Expression { 291 310 public: 311 Expression * expr; 312 Type * type; 313 bool isType; 314 292 315 SizeofExpr( Expression * expr, Expression *_aname = nullptr ); 293 316 SizeofExpr( const SizeofExpr & other ); … … 306 329 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 307 330 virtual void print( std::ostream & os, int indent = 0 ) const; 308 private: 331 }; 332 333 /// AlignofExpr represents an alignof expression 334 class AlignofExpr : public Expression { 335 public: 309 336 Expression * expr; 310 337 Type * type; 311 338 bool isType; 312 }; 313 314 /// AlignofExpr represents an alignof expression 315 class AlignofExpr : public Expression { 316 public: 339 317 340 AlignofExpr( Expression * expr, Expression *_aname = nullptr ); 318 341 AlignofExpr( const AlignofExpr & other ); … … 331 354 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 332 355 virtual void print( std::ostream & os, int indent = 0 ) const; 333 private:334 Expression * expr;335 Type * type;336 bool isType;337 356 }; 338 357 … … 340 359 class UntypedOffsetofExpr : public Expression { 341 360 public: 361 Type * type; 362 std::string member; 363 342 364 UntypedOffsetofExpr( Type * type, const std::string & member, Expression *_aname = nullptr ); 343 365 UntypedOffsetofExpr( const UntypedOffsetofExpr & other ); … … 353 375 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 354 376 virtual void print( std::ostream & os, int indent = 0 ) const; 355 private:356 Type * type;357 std::string member;358 377 }; 359 378 … … 361 380 class OffsetofExpr : public Expression { 362 381 public: 382 Type * type; 383 DeclarationWithType * member; 384 363 385 OffsetofExpr( Type * type, DeclarationWithType * member, Expression *_aname = nullptr ); 364 386 OffsetofExpr( const OffsetofExpr & other ); … … 374 396 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 375 397 virtual void print( std::ostream & os, int indent = 0 ) const; 376 private:377 Type * type;378 DeclarationWithType * member;379 398 }; 380 399 … … 382 401 class OffsetPackExpr : public Expression { 383 402 public: 403 StructInstType * type; 404 384 405 OffsetPackExpr( StructInstType * type_, Expression * aname_ = 0 ); 385 406 OffsetPackExpr( const OffsetPackExpr & other ); … … 392 413 virtual void accept( Visitor & v ) { v.visit( this ); } 393 414 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 394 395 virtual void print( std::ostream & os, int indent = 0 ) const; 396 397 private: 398 StructInstType * type; 415 virtual void print( std::ostream & os, int indent = 0 ) const; 399 416 }; 400 417 … … 402 419 class AttrExpr : public Expression { 403 420 public: 421 Expression * attr; 422 Expression * expr; 423 Type * type; 424 bool isType; 425 404 426 AttrExpr(Expression * attr, Expression * expr, Expression *_aname = nullptr ); 405 427 AttrExpr( const AttrExpr & other ); … … 420 442 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 421 443 virtual void print( std::ostream & os, int indent = 0 ) const; 422 private:423 Expression * attr;424 Expression * expr;425 Type * type;426 bool isType;427 444 }; 428 445 … … 430 447 class LogicalExpr : public Expression { 431 448 public: 449 Expression * arg1; 450 Expression * arg2; 451 432 452 LogicalExpr( Expression * arg1, Expression * arg2, bool andp = true, Expression *_aname = nullptr ); 433 453 LogicalExpr( const LogicalExpr & other ); … … 444 464 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 445 465 virtual void print( std::ostream & os, int indent = 0 ) const; 466 446 467 private: 468 bool isAnd; 469 }; 470 471 /// ConditionalExpr represents the three-argument conditional ( p ? a : b ) 472 class ConditionalExpr : public Expression { 473 public: 447 474 Expression * arg1; 448 475 Expression * arg2; 449 bool isAnd; 450 }; 451 452 /// ConditionalExpr represents the three-argument conditional ( p ? a : b ) 453 class ConditionalExpr : public Expression { 454 public: 476 Expression * arg3; 477 455 478 ConditionalExpr( Expression * arg1, Expression * arg2, Expression * arg3, Expression *_aname = nullptr ); 456 479 ConditionalExpr( const ConditionalExpr & other ); … … 468 491 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 469 492 virtual void print( std::ostream & os, int indent = 0 ) const; 470 private: 493 }; 494 495 /// CommaExpr represents the sequence operator ( a, b ) 496 class CommaExpr : public Expression { 497 public: 471 498 Expression * arg1; 472 499 Expression * arg2; 473 Expression * arg3; 474 }; 475 476 /// CommaExpr represents the sequence operator ( a, b ) 477 class CommaExpr : public Expression { 478 public: 500 479 501 CommaExpr( Expression * arg1, Expression * arg2, Expression *_aname = nullptr ); 480 502 CommaExpr( const CommaExpr & other ); … … 490 512 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 491 513 virtual void print( std::ostream & os, int indent = 0 ) const; 492 private:493 Expression * arg1;494 Expression * arg2;495 514 }; 496 515 … … 498 517 class TypeExpr : public Expression { 499 518 public: 519 Type * type; 520 500 521 TypeExpr( Type * type ); 501 522 TypeExpr( const TypeExpr & other ); … … 509 530 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 510 531 virtual void print( std::ostream & os, int indent = 0 ) const; 511 private:512 Type * type;513 532 }; 514 533 … … 516 535 class AsmExpr : public Expression { 517 536 public: 537 Expression * inout; 538 ConstantExpr * constraint; 539 Expression * operand; 540 518 541 AsmExpr( Expression * inout, ConstantExpr * constraint, Expression * operand ) : inout( inout ), constraint( constraint ), operand( operand ) {} 519 542 AsmExpr( const AsmExpr & other ); … … 533 556 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 534 557 virtual void print( std::ostream & os, int indent = 0 ) const; 535 private: 558 536 559 // https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Machine-Constraints.html#Machine-Constraints 537 Expression * inout;538 ConstantExpr * constraint;539 Expression * operand;540 560 }; 541 561 … … 544 564 class ImplicitCopyCtorExpr : public Expression { 545 565 public: 546 ImplicitCopyCtorExpr( ApplicationExpr * callExpr );547 ImplicitCopyCtorExpr( const ImplicitCopyCtorExpr & other );548 virtual ~ImplicitCopyCtorExpr();549 550 ApplicationExpr * get_callExpr() const { return callExpr; }551 void set_callExpr( ApplicationExpr * newValue ) { callExpr = newValue; }552 553 std::list< ObjectDecl * > & get_tempDecls() { return tempDecls; }554 std::list< ObjectDecl * > & get_returnDecls() { return returnDecls; }555 std::list< Expression * > & get_dtors() { return dtors; }556 557 virtual ImplicitCopyCtorExpr * clone() const { return new ImplicitCopyCtorExpr( * this ); }558 virtual void accept( Visitor & v ) { v.visit( this ); }559 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); }560 virtual void print( std::ostream & os, int indent = 0 ) const;561 private:562 566 ApplicationExpr * callExpr; 563 567 std::list< ObjectDecl * > tempDecls; 564 568 std::list< ObjectDecl * > returnDecls; 565 569 std::list< Expression * > dtors; 570 571 ImplicitCopyCtorExpr( ApplicationExpr * callExpr ); 572 ImplicitCopyCtorExpr( const ImplicitCopyCtorExpr & other ); 573 virtual ~ImplicitCopyCtorExpr(); 574 575 ApplicationExpr * get_callExpr() const { return callExpr; } 576 void set_callExpr( ApplicationExpr * newValue ) { callExpr = newValue; } 577 578 std::list< ObjectDecl * > & get_tempDecls() { return tempDecls; } 579 std::list< ObjectDecl * > & get_returnDecls() { return returnDecls; } 580 std::list< Expression * > & get_dtors() { return dtors; } 581 582 virtual ImplicitCopyCtorExpr * clone() const { return new ImplicitCopyCtorExpr( * this ); } 583 virtual void accept( Visitor & v ) { v.visit( this ); } 584 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 585 virtual void print( std::ostream & os, int indent = 0 ) const; 566 586 }; 567 587 … … 569 589 class ConstructorExpr : public Expression { 570 590 public: 591 Expression * callExpr; 592 571 593 ConstructorExpr( Expression * callExpr ); 572 594 ConstructorExpr( const ConstructorExpr & other ); … … 580 602 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 581 603 virtual void print( std::ostream & os, int indent = 0 ) const; 582 private:583 Expression * callExpr;584 604 }; 585 605 … … 587 607 class CompoundLiteralExpr : public Expression { 588 608 public: 609 Initializer * initializer; 610 589 611 CompoundLiteralExpr( Type * type, Initializer * initializer ); 590 612 CompoundLiteralExpr( const CompoundLiteralExpr & other ); … … 598 620 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 599 621 virtual void print( std::ostream & os, int indent = 0 ) const; 600 private:601 Initializer * initializer;602 622 }; 603 623 … … 605 625 class RangeExpr : public Expression { 606 626 public: 627 Expression * low, * high; 628 607 629 RangeExpr( Expression * low, Expression * high ); 608 630 RangeExpr( const RangeExpr & other ); … … 617 639 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 618 640 virtual void print( std::ostream & os, int indent = 0 ) const; 619 private:620 Expression * low, * high;621 641 }; 622 642 … … 624 644 class UntypedTupleExpr : public Expression { 625 645 public: 646 std::list<Expression*> exprs; 647 626 648 UntypedTupleExpr( const std::list< Expression * > & exprs, Expression *_aname = nullptr ); 627 649 UntypedTupleExpr( const UntypedTupleExpr & other ); … … 634 656 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 635 657 virtual void print( std::ostream & os, int indent = 0 ) const; 636 private:637 std::list<Expression*> exprs;638 658 }; 639 659 … … 641 661 class TupleExpr : public Expression { 642 662 public: 663 std::list<Expression*> exprs; 664 643 665 TupleExpr( const std::list< Expression * > & exprs, Expression *_aname = nullptr ); 644 666 TupleExpr( const TupleExpr & other ); … … 651 673 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 652 674 virtual void print( std::ostream & os, int indent = 0 ) const; 653 private:654 std::list<Expression*> exprs;655 675 }; 656 676 … … 658 678 class TupleIndexExpr : public Expression { 659 679 public: 680 Expression * tuple; 681 unsigned int index; 682 660 683 TupleIndexExpr( Expression * tuple, unsigned int index ); 661 684 TupleIndexExpr( const TupleIndexExpr & other ); … … 671 694 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 672 695 virtual void print( std::ostream & os, int indent = 0 ) const; 673 private:674 Expression * tuple;675 unsigned int index;676 696 }; 677 697 … … 679 699 class TupleAssignExpr : public Expression { 680 700 public: 701 StmtExpr * stmtExpr = nullptr; 702 681 703 TupleAssignExpr( const std::list< Expression * > & assigns, const std::list< ObjectDecl * > & tempDecls, Expression * _aname = nullptr ); 682 704 TupleAssignExpr( const TupleAssignExpr & other ); … … 690 712 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 691 713 virtual void print( std::ostream & os, int indent = 0 ) const; 692 private:693 StmtExpr * stmtExpr = nullptr;694 714 }; 695 715 … … 697 717 class StmtExpr : public Expression { 698 718 public: 719 CompoundStmt * statements; 720 std::list< ObjectDecl * > returnDecls; // return variable(s) for stmt expression 721 std::list< Expression * > dtors; // destructor(s) for return variable(s) 722 699 723 StmtExpr( CompoundStmt * statements ); 700 724 StmtExpr( const StmtExpr & other ); … … 711 735 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 712 736 virtual void print( std::ostream & os, int indent = 0 ) const; 713 private:714 CompoundStmt * statements;715 std::list< ObjectDecl * > returnDecls; // return variable(s) for stmt expression716 std::list< Expression * > dtors; // destructor(s) for return variable(s)717 737 }; 718 738 719 739 class UniqueExpr : public Expression { 720 740 public: 741 Expression * expr; 742 ObjectDecl * object; 743 VariableExpr * var; 744 721 745 UniqueExpr( Expression * expr, long long idVal = -1 ); 722 746 UniqueExpr( const UniqueExpr & other ); … … 738 762 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 739 763 virtual void print( std::ostream & os, int indent = 0 ) const; 764 740 765 private: 741 Expression * expr;742 ObjectDecl * object;743 VariableExpr * var;744 766 int id; 745 767 static long long count; … … 758 780 class UntypedInitExpr : public Expression { 759 781 public: 782 Expression * expr; 783 std::list<InitAlternative> initAlts; 784 760 785 UntypedInitExpr( Expression * expr, const std::list<InitAlternative> & initAlts ); 761 786 UntypedInitExpr( const UntypedInitExpr & other ); … … 771 796 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 772 797 virtual void print( std::ostream & os, int indent = 0 ) const; 773 private:774 Expression * expr;775 std::list<InitAlternative> initAlts;776 798 }; 777 799 778 800 class InitExpr : public Expression { 779 801 public: 802 Expression * expr; 803 Designation * designation; 804 780 805 InitExpr( Expression * expr, Designation * designation ); 781 806 InitExpr( const InitExpr & other ); … … 792 817 virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); } 793 818 virtual void print( std::ostream & os, int indent = 0 ) const; 794 private:795 Expression * expr;796 Designation * designation;797 819 }; 798 820 799 821 800 822 std::ostream & operator<<( std::ostream & out, const Expression * expr ); 801 802 #endif // EXPRESSION_H803 823 804 824 // Local Variables: // -
src/SynTree/Initializer.cc
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Fri May 13 13:23:03201613 // Update Count : 2 811 // Last Modified By : Andrew Beach 12 // Last Modified On : Thr Aug 3 11:33:00 2016 13 // Update Count : 29 14 14 // 15 15 … … 74 74 } 75 75 } 76 assertf( initializers.size() == designations.size(), "Created ListInit with mismatching initializers (% d) and designations (%d)", initializers.size(), designations.size() );76 assertf( initializers.size() == designations.size(), "Created ListInit with mismatching initializers (%lu) and designations (%lu)", initializers.size(), designations.size() ); 77 77 } 78 78 -
src/SynTree/Initializer.h
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Thu Mar 23 16:12:42201713 // Update Count : 2 011 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Aug 9 10:19:00 2017 13 // Update Count : 22 14 14 // 15 15 16 #ifndef INITIALIZER_H 17 #define INITIALIZER_H 16 #pragma once 18 17 19 18 #include <cassert> … … 28 27 class Designation : public BaseSyntaxNode { 29 28 public: 29 std::list< Expression * > designators; 30 30 31 Designation( const std::list< Expression * > & designators ); 31 32 Designation( const Designation & other ); … … 38 39 virtual Designation * acceptMutator( Mutator &m ) { return m.mutate( this ); } 39 40 virtual void print( std::ostream &os, int indent = 0 ) const; 40 private:41 std::list< Expression * > designators;42 41 }; 43 42 … … 64 63 class SingleInit : public Initializer { 65 64 public: 65 //Constant *value; 66 Expression *value; // has to be a compile-time constant 67 66 68 SingleInit( Expression *value, bool maybeConstructed = false ); 67 69 SingleInit( const SingleInit &other ); … … 75 77 virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); } 76 78 virtual void print( std::ostream &os, int indent = 0 ) const; 77 private:78 //Constant *value;79 Expression *value; // has to be a compile-time constant80 79 }; 81 80 … … 84 83 class ListInit : public Initializer { 85 84 public: 85 std::list<Initializer *> initializers; // order *is* important 86 std::list<Designation *> designations; // order/length is consistent with initializers 87 86 88 ListInit( const std::list<Initializer*> &initializers, 87 89 const std::list<Designation *> &designators = {}, bool maybeConstructed = false ); … … 103 105 virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); } 104 106 virtual void print( std::ostream &os, int indent = 0 ) const; 105 private:106 std::list<Initializer *> initializers; // order *is* important107 std::list<Designation *> designations; // order/length is consistent with initializers108 107 }; 109 108 … … 114 113 class ConstructorInit : public Initializer { 115 114 public: 115 Statement * ctor; 116 Statement * dtor; 117 116 118 ConstructorInit( Statement * ctor, Statement * dtor, Initializer * init ); 117 119 ConstructorInit( const ConstructorInit &other ); … … 131 133 132 134 private: 133 Statement * ctor;134 Statement * dtor;135 135 // C-style initializer made up of SingleInit and ListInit nodes to use as a fallback 136 136 // if an appropriate constructor definition is not found by the resolver … … 141 141 std::ostream & operator<<( std::ostream & out, const Designation * des ); 142 142 143 #endif // INITIALIZER_H144 145 143 // Local Variables: // 146 144 // tab-width: 4 // -
src/SynTree/Label.h
rfd344aa r9236060 10 10 // Created On : Wed Jun 8 12:53:12 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S un Aug 7 14:44:29 201613 // Update Count : 212 // Last Modified On : Sat Jul 22 09:52:44 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef LABEL_H 17 #define LABEL_H 16 #pragma once 18 17 19 18 #include <string> … … 51 50 static const std::list< Label > noLabels; 52 51 53 #endif // LABEL_H54 55 52 // Local Variables: // 56 53 // tab-width: 4 // -
src/SynTree/Mutator.cc
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Thu Jun 22 13:43:00 201713 // Update Count : 2 412 // Last Modified On : Mon Jul 24 16:32:00 2017 13 // Update Count : 25 14 14 // 15 15 … … 235 235 } 236 236 237 Expression *Mutator::mutate( VirtualCastExpr *castExpr ) { 238 castExpr->set_env( maybeMutate( castExpr->get_env(), *this ) ); 239 castExpr->set_result( maybeMutate( castExpr->get_result(), *this ) ); 240 castExpr->set_arg( maybeMutate( castExpr->get_arg(), *this ) ); 241 return castExpr; 242 } 243 237 244 Expression *Mutator::mutate( UntypedMemberExpr *memberExpr ) { 238 245 memberExpr->set_env( maybeMutate( memberExpr->get_env(), *this ) ); -
src/SynTree/Mutator.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Thu Jun 8 15:45:00 201713 // Update Count : 1 412 // Last Modified On : Mon Jul 24 16:31:00 2017 13 // Update Count : 16 14 14 // 15 15 #include <cassert> … … 18 18 #include "Common/SemanticError.h" 19 19 20 #ifndef MUTATOR_H 21 #define MUTATOR_H 20 #pragma once 22 21 23 22 class Mutator { … … 60 59 virtual Expression* mutate( LabelAddressExpr *labAddressExpr ); 61 60 virtual Expression* mutate( CastExpr *castExpr ); 61 virtual Expression* mutate( VirtualCastExpr *castExpr ); 62 62 virtual Expression* mutate( UntypedMemberExpr *memberExpr ); 63 63 virtual Expression* mutate( MemberExpr *memberExpr ); … … 151 151 } 152 152 153 #endif // MUTATOR_H154 155 153 // Local Variables: // 156 154 // tab-width: 4 // -
src/SynTree/NamedTypeDecl.cc
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Thu Mar 16 07:49:44201713 // Update Count : 1 311 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Aug 9 13:28:00 2017 13 // Update Count : 14 14 14 // 15 15 … … 38 38 if ( get_name() != "" ) { 39 39 os << get_name() << ": "; 40 } // if 41 if ( get_linkage() != LinkageSpec::Cforall ) { 42 os << LinkageSpec::linkageName( get_linkage() ) << " "; 40 43 } // if 41 44 get_storageClasses().print( os ); -
src/SynTree/Statement.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Mon Jun 12 13:35:00 201713 // Update Count : 6 712 // Last Modified On : Thr Aug 3 14:08:00 2017 13 // Update Count : 69 14 14 // 15 15 16 #ifndef STATEMENT_H 17 #define STATEMENT_H 16 #pragma once 18 17 19 18 #include "BaseSyntaxNode.h" … … 27 26 class Statement : public BaseSyntaxNode { 28 27 public: 28 std::list<Label> labels; 29 29 30 Statement( std::list<Label> labels ); 30 31 virtual ~Statement(); … … 37 38 virtual Statement *acceptMutator( Mutator &m ) = 0; 38 39 virtual void print( std::ostream &os, int indent = 0 ) const; 39 protected:40 std::list<Label> labels;41 40 }; 42 41 43 42 class CompoundStmt : public Statement { 44 43 public: 44 std::list<Statement*> kids; 45 45 46 CompoundStmt( std::list<Label> labels ); 46 47 CompoundStmt( const CompoundStmt &other ); … … 55 56 virtual CompoundStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); } 56 57 virtual void print( std::ostream &os, int indent = 0 ) const; 57 private:58 std::list<Statement*> kids;59 58 }; 60 59 … … 68 67 virtual NullStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); } 69 68 virtual void print( std::ostream &os, int indent = 0 ) const; 70 71 private:72 69 }; 73 70 74 71 class ExprStmt : public Statement { 75 72 public: 73 Expression *expr; 74 76 75 ExprStmt( std::list<Label> labels, Expression *expr ); 77 76 ExprStmt( const ExprStmt &other ); … … 85 84 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 86 85 virtual void print( std::ostream &os, int indent = 0 ) const; 87 private:88 Expression *expr;89 86 }; 90 87 91 88 class AsmStmt : public Statement { 92 89 public: 90 bool voltile; 91 ConstantExpr *instruction; 92 std::list<Expression *> output, input; 93 std::list<ConstantExpr *> clobber; 94 std::list<Label> gotolabels; 95 93 96 AsmStmt( std::list<Label> labels, bool voltile, ConstantExpr *instruction, std::list<Expression *> input, std::list<Expression *> output, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels ); 94 97 AsmStmt( const AsmStmt &other ); … … 112 115 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 113 116 virtual void print( std::ostream &os, int indent = 0 ) const; 114 private:115 bool voltile;116 ConstantExpr *instruction;117 std::list<Expression *> output, input;118 std::list<ConstantExpr *> clobber;119 std::list<Label> gotolabels;120 117 }; 121 118 122 119 class IfStmt : public Statement { 123 120 public: 121 Expression *condition; 122 Statement *thenPart; 123 Statement *elsePart; 124 124 125 IfStmt( std::list<Label> labels, Expression *condition, Statement *thenPart, Statement *elsePart ); 125 126 IfStmt( const IfStmt &other ); … … 137 138 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 138 139 virtual void print( std::ostream &os, int indent = 0 ) const; 139 private:140 Expression *condition;141 Statement *thenPart;142 Statement *elsePart;143 140 }; 144 141 145 142 class SwitchStmt : public Statement { 146 143 public: 144 Expression * condition; 145 147 146 SwitchStmt( std::list<Label> labels, Expression *condition, std::list<Statement *> &statements ); 148 147 SwitchStmt( const SwitchStmt &other ); … … 160 159 virtual void print( std::ostream &os, int indent = 0 ) const; 161 160 private: 161 std::list<Statement *> statements; 162 }; 163 164 class CaseStmt : public Statement { 165 public: 162 166 Expression * condition; 163 std::list<Statement *> statements; 164 }; 165 166 class CaseStmt : public Statement { 167 public: 167 std::list<Statement *> stmts; 168 168 169 CaseStmt( std::list<Label> labels, Expression *conditions, std::list<Statement *> &stmts, bool isdef = false ) throw(SemanticError); 169 170 CaseStmt( const CaseStmt &other ); … … 187 188 virtual void print( std::ostream &os, int indent = 0 ) const; 188 189 private: 189 Expression * condition;190 std::list<Statement *> stmts;191 190 bool _isDefault; 192 191 }; … … 194 193 class WhileStmt : public Statement { 195 194 public: 195 Expression *condition; 196 Statement *body; 197 bool isDoWhile; 198 196 199 WhileStmt( std::list<Label> labels, Expression *condition, 197 200 Statement *body, bool isDoWhile = false ); … … 210 213 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 211 214 virtual void print( std::ostream &os, int indent = 0 ) const; 212 private: 215 }; 216 217 class ForStmt : public Statement { 218 public: 219 std::list<Statement *> initialization; 213 220 Expression *condition; 221 Expression *increment; 214 222 Statement *body; 215 bool isDoWhile; 216 }; 217 218 class ForStmt : public Statement { 219 public: 223 220 224 ForStmt( std::list<Label> labels, std::list<Statement *> initialization, 221 225 Expression *condition = 0, Expression *increment = 0, Statement *body = 0 ); … … 236 240 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 237 241 virtual void print( std::ostream &os, int indent = 0 ) const; 238 private:239 std::list<Statement *> initialization;240 Expression *condition;241 Expression *increment;242 Statement *body;243 242 }; 244 243 … … 246 245 public: 247 246 enum Type { Goto = 0, Break, Continue }; 247 248 // originalTarget kept for error messages. 249 const Label originalTarget; 250 Label target; 251 Expression *computedTarget; 252 Type type; 248 253 249 254 BranchStmt( std::list<Label> labels, Label target, Type ) throw (SemanticError); … … 266 271 private: 267 272 static const char *brType[]; 268 Label originalTarget; // can give better error messages if we remember the label name that the user entered269 Label target;270 Expression *computedTarget;271 Type type;272 273 }; 273 274 274 275 class ReturnStmt : public Statement { 275 276 public: 277 Expression *expr; 278 276 279 ReturnStmt( std::list<Label> labels, Expression *expr ); 277 280 ReturnStmt( const ReturnStmt &other ); … … 285 288 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 286 289 virtual void print( std::ostream &os, int indent = 0 ) const; 287 private:288 Expression *expr;289 290 }; 290 291 … … 292 293 public: 293 294 enum Kind { Terminate, Resume }; 295 296 const Kind kind; 297 Expression * expr; 298 Expression * target; 294 299 295 300 ThrowStmt( std::list<Label> labels, Kind kind, Expression * expr, Expression * target = nullptr ); … … 307 312 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 308 313 virtual void print( std::ostream &os, int indent = 0 ) const; 309 private:310 Kind kind;311 Expression * expr;312 Expression * target;313 314 }; 314 315 315 316 class TryStmt : public Statement { 316 317 public: 318 CompoundStmt *block; 319 std::list<CatchStmt *> handlers; 320 FinallyStmt *finallyBlock; 321 317 322 TryStmt( std::list<Label> labels, CompoundStmt *tryBlock, std::list<CatchStmt *> &handlers, FinallyStmt *finallyBlock = 0 ); 318 323 TryStmt( const TryStmt &other ); … … 330 335 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 331 336 virtual void print( std::ostream &os, int indent = 0 ) const; 332 333 private:334 CompoundStmt *block;335 std::list<CatchStmt *> handlers;336 FinallyStmt *finallyBlock;337 337 }; 338 338 … … 340 340 public: 341 341 enum Kind { Terminate, Resume }; 342 343 const Kind kind; 344 Declaration *decl; 345 Expression *cond; 346 Statement *body; 342 347 343 348 CatchStmt( std::list<Label> labels, Kind kind, Declaration *decl, … … 358 363 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 359 364 virtual void print( std::ostream &os, int indent = 0 ) const; 360 361 private:362 Kind kind;363 Declaration *decl;364 Expression *cond;365 Statement *body;366 365 }; 367 366 368 367 class FinallyStmt : public Statement { 369 368 public: 369 CompoundStmt *block; 370 370 371 FinallyStmt( std::list<Label> labels, CompoundStmt *block ); 371 372 FinallyStmt( const FinallyStmt &other ); … … 379 380 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 380 381 virtual void print( std::ostream &os, int indent = 0 ) const; 381 private:382 CompoundStmt *block;383 382 }; 384 383 … … 387 386 class DeclStmt : public Statement { 388 387 public: 388 Declaration *decl; 389 389 390 DeclStmt( std::list<Label> labels, Declaration *decl ); 390 391 DeclStmt( const DeclStmt &other ); … … 398 399 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 399 400 virtual void print( std::ostream &os, int indent = 0 ) const; 400 private:401 Declaration *decl;402 401 }; 403 402 … … 408 407 class ImplicitCtorDtorStmt : public Statement { 409 408 public: 409 // Non-owned pointer to the constructor/destructor statement 410 Statement * callStmt; 411 410 412 ImplicitCtorDtorStmt( Statement * callStmt ); 411 413 ImplicitCtorDtorStmt( const ImplicitCtorDtorStmt & other ); … … 419 421 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 420 422 virtual void print( std::ostream &os, int indent = 0 ) const; 421 422 private:423 // Non-owned pointer to the constructor/destructor statement424 Statement * callStmt;425 423 }; 426 424 427 425 428 426 std::ostream & operator<<( std::ostream & out, const Statement * statement ); 429 430 #endif // STATEMENT_H431 427 432 428 // Local Variables: // -
src/SynTree/SynTree.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Thu Jun 8 17:00:00 201713 // Update Count : 912 // Last Modified On : Mon Jul 24 16:54:00 2017 13 // Update Count : 11 14 14 // 15 15 16 #ifndef SYNTREE_H 17 #define SYNTREE_H 16 #pragma once 18 17 19 18 #include <string> … … 67 66 class LabelAddressExpr; 68 67 class CastExpr; 68 class VirtualCastExpr; 69 69 class MemberExpr; 70 70 class UntypedMemberExpr; … … 136 136 class Attribute; 137 137 138 #endif // SYNTREE_H139 140 138 // Local Variables: // 141 139 // tab-width: 4 // -
src/SynTree/Type.cc
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Fri Mar 17 08:42:47201713 // Update Count : 2 811 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Aug 2 11:11:00 2017 13 // Update Count : 29 14 14 // 15 15 … … 98 98 } 99 99 100 // Empty Variable declarations: 101 const Type::FuncSpecifiers noFuncSpecifiers; 102 const Type::StorageClasses noStorageClasses; 103 const Type::Qualifiers noQualifiers; 104 100 105 std::ostream & operator<<( std::ostream & out, const Type * type ) { 101 106 if ( type ) { -
src/SynTree/Type.h
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Thu Mar 23 16:16:36201713 // Update Count : 1 4911 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Aug 9 14:25:00 2017 13 // Update Count : 152 14 14 // 15 15 16 #ifndef TYPE_H 17 #define TYPE_H 16 #pragma once 18 17 19 18 #include "BaseSyntaxNode.h" … … 128 127 }; // Qualifiers 129 128 129 typedef std::list<TypeDecl *> ForallList; 130 131 Qualifiers tq; 132 ForallList forall; 133 std::list< Attribute * > attributes; 134 130 135 Type( const Qualifiers & tq, const std::list< Attribute * > & attributes ); 131 136 Type( const Type & other ); … … 146 151 void set_atomic( bool newValue ) { tq.is_atomic = newValue; } 147 152 148 typedef std::list<TypeDecl *> ForallList;149 153 ForallList& get_forall() { return forall; } 150 154 … … 172 176 virtual Type *acceptMutator( Mutator & m ) = 0; 173 177 virtual void print( std::ostream & os, int indent = 0 ) const; 174 private: 175 Qualifiers tq; 176 ForallList forall; 177 std::list< Attribute * > attributes; 178 }; 179 180 extern Type::Qualifiers emptyQualifiers; // no qualifiers on constants 178 }; 179 180 extern const Type::FuncSpecifiers noFuncSpecifiers; 181 extern const Type::StorageClasses noStorageClasses; 182 extern const Type::Qualifiers noQualifiers; // no qualifiers on constants 181 183 182 184 class VoidType : public Type { … … 218 220 LongDoubleImaginary, 219 221 NUMBER_OF_BASIC_TYPES 220 } ;222 } kind; 221 223 222 224 static const char *typeNames[]; // string names for basic types, MUST MATCH with Kind … … 233 235 234 236 bool isInteger() const; 235 private:236 Kind kind;237 237 }; 238 238 239 239 class PointerType : public Type { 240 240 public: 241 Type *base; 242 243 // In C99, pointer types can be qualified in many ways e.g., int f( int a[ static 3 ] ) 244 Expression *dimension; 245 bool isVarLen; 246 bool isStatic; 247 241 248 PointerType( const Type::Qualifiers & tq, Type *base, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 242 249 PointerType( const Type::Qualifiers & tq, Type *base, Expression *dimension, bool isVarLen, bool isStatic, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); … … 261 268 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); } 262 269 virtual void print( std::ostream & os, int indent = 0 ) const; 263 private: 270 }; 271 272 class ArrayType : public Type { 273 public: 264 274 Type *base; 265 266 // In C99, pointer types can be qualified in many ways e.g., int f( int a[ static 3 ] )267 275 Expression *dimension; 268 276 bool isVarLen; 269 277 bool isStatic; 270 }; 271 272 class ArrayType : public Type { 273 public: 278 274 279 ArrayType( const Type::Qualifiers & tq, Type *base, Expression *dimension, bool isVarLen, bool isStatic, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 275 280 ArrayType( const ArrayType& ); … … 291 296 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); } 292 297 virtual void print( std::ostream & os, int indent = 0 ) const; 293 private:294 Type *base;295 Expression *dimension;296 bool isVarLen;297 bool isStatic;298 298 }; 299 299 300 300 class ReferenceType : public Type { 301 301 public: 302 Type *base; 303 302 304 ReferenceType( const Type::Qualifiers & tq, Type *base, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 303 305 ReferenceType( const ReferenceType & ); … … 313 315 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); } 314 316 virtual void print( std::ostream & os, int indent = 0 ) const; 315 private:316 Type *base;317 317 }; 318 318 319 319 class FunctionType : public Type { 320 320 public: 321 std::list<DeclarationWithType*> returnVals; 322 std::list<DeclarationWithType*> parameters; 323 324 // Does the function accept a variable number of arguments following the arguments specified in the parameters list. 325 // This could be because of 326 // - an ellipsis in a prototype declaration 327 // - an unprototyped declaration 328 bool isVarArgs; 329 321 330 FunctionType( const Type::Qualifiers & tq, bool isVarArgs, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 322 331 FunctionType( const FunctionType& ); … … 333 342 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); } 334 343 virtual void print( std::ostream & os, int indent = 0 ) const; 335 private:336 std::list<DeclarationWithType*> returnVals;337 std::list<DeclarationWithType*> parameters;338 339 // Does the function accept a variable number of arguments following the arguments specified in the parameters list.340 // This could be because of341 // - an ellipsis in a prototype declaration342 // - an unprototyped declaration343 bool isVarArgs;344 344 }; 345 345 346 346 class ReferenceToType : public Type { 347 347 public: 348 std::list< Expression* > parameters; 349 std::string name; 350 bool hoistType; 351 348 352 ReferenceToType( const Type::Qualifiers & tq, const std::string & name, const std::list< Attribute * > & attributes ); 349 353 ReferenceToType( const ReferenceToType & other ); … … 364 368 protected: 365 369 virtual std::string typeString() const = 0; 366 std::list< Expression* > parameters;367 std::string name;368 private:369 bool hoistType;370 370 }; 371 371 … … 373 373 typedef ReferenceToType Parent; 374 374 public: 375 // this decl is not "owned" by the struct inst; it is merely a pointer to elsewhere in the tree, 376 // where the structure used in this type is actually defined 377 StructDecl *baseStruct; 378 375 379 StructInstType( const Type::Qualifiers & tq, const std::string & name, const std::list< Attribute * > & attributes = std::list< Attribute * >() ) : Parent( tq, name, attributes ), baseStruct( 0 ) {} 376 380 StructInstType( const Type::Qualifiers & tq, StructDecl * baseStruct, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); … … 396 400 private: 397 401 virtual std::string typeString() const; 398 399 // this decl is not "owned" by the struct inst; it is merely a pointer to elsewhere in the tree,400 // where the structure used in this type is actually defined401 StructDecl *baseStruct;402 402 }; 403 403 … … 405 405 typedef ReferenceToType Parent; 406 406 public: 407 // this decl is not "owned" by the union inst; it is merely a pointer to elsewhere in the tree, 408 // where the union used in this type is actually defined 409 UnionDecl *baseUnion; 410 407 411 UnionInstType( const Type::Qualifiers & tq, const std::string & name, const std::list< Attribute * > & attributes = std::list< Attribute * >() ) : Parent( tq, name, attributes ), baseUnion( 0 ) {} 408 412 UnionInstType( const Type::Qualifiers & tq, UnionDecl * baseUnion, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); … … 428 432 private: 429 433 virtual std::string typeString() const; 430 434 }; 435 436 class EnumInstType : public ReferenceToType { 437 typedef ReferenceToType Parent; 438 public: 431 439 // this decl is not "owned" by the union inst; it is merely a pointer to elsewhere in the tree, 432 440 // where the union used in this type is actually defined 433 UnionDecl *baseUnion; 434 }; 435 436 class EnumInstType : public ReferenceToType { 437 typedef ReferenceToType Parent; 438 public: 441 EnumDecl *baseEnum = nullptr; 442 439 443 EnumInstType( const Type::Qualifiers & tq, const std::string & name, const std::list< Attribute * > & attributes = std::list< Attribute * >() ) : Parent( tq, name, attributes ) {} 440 444 EnumInstType( const Type::Qualifiers & tq, EnumDecl * baseEnum, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); … … 451 455 private: 452 456 virtual std::string typeString() const; 453 454 // this decl is not "owned" by the union inst; it is merely a pointer to elsewhere in the tree,455 // where the union used in this type is actually defined456 EnumDecl *baseEnum = nullptr;457 457 }; 458 458 … … 460 460 typedef ReferenceToType Parent; 461 461 public: 462 // this member is filled in by the validate pass, which instantiates the members of the correponding 463 // aggregate with the actual type parameters specified for this use of the context 464 std::list< Declaration* > members; 465 462 466 TraitInstType( const Type::Qualifiers & tq, const std::string & name, const std::list< Attribute * > & attributes = std::list< Attribute * >() ) : Parent( tq, name, attributes ) {} 463 467 TraitInstType( const TraitInstType & other ); … … 473 477 private: 474 478 virtual std::string typeString() const; 475 476 // this member is filled in by the validate pass, which instantiates the members of the correponding477 // aggregate with the actual type parameters specified for this use of the context478 std::list< Declaration* > members;479 479 }; 480 480 … … 482 482 typedef ReferenceToType Parent; 483 483 public: 484 // this decl is not "owned" by the type inst; it is merely a pointer to elsewhere in the tree, 485 // where the type used here is actually defined 486 TypeDecl *baseType; 487 bool isFtype; 488 484 489 TypeInstType( const Type::Qualifiers & tq, const std::string & name, TypeDecl *baseType, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 485 490 TypeInstType( const Type::Qualifiers & tq, const std::string & name, bool isFtype, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); … … 500 505 private: 501 506 virtual std::string typeString() const; 502 // this decl is not "owned" by the type inst; it is merely a pointer to elsewhere in the tree,503 // where the type used here is actually defined504 TypeDecl *baseType;505 bool isFtype;506 507 }; 507 508 508 509 class TupleType : public Type { 509 510 public: 511 std::list<Type *> types; 512 std::list<Declaration *> members; 513 510 514 TupleType( const Type::Qualifiers & tq, const std::list< Type * > & types, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 511 515 TupleType( const TupleType& ); … … 536 540 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); } 537 541 virtual void print( std::ostream & os, int indent = 0 ) const; 538 private:539 std::list<Type *> types;540 std::list<Declaration *> members;541 542 }; 542 543 543 544 class TypeofType : public Type { 544 545 public: 546 Expression *expr; 547 545 548 TypeofType( const Type::Qualifiers & tq, Expression *expr, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 546 549 TypeofType( const TypeofType& ); … … 556 559 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); } 557 560 virtual void print( std::ostream & os, int indent = 0 ) const; 558 private: 561 }; 562 563 class AttrType : public Type { 564 public: 565 std::string name; 559 566 Expression *expr; 560 }; 561 562 class AttrType : public Type { 563 public: 567 Type *type; 568 bool isType; 569 564 570 AttrType( const Type::Qualifiers & tq, const std::string & name, Expression *expr, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); 565 571 AttrType( const Type::Qualifiers & tq, const std::string & name, Type *type, const std::list< Attribute * > & attributes = std::list< Attribute * >() ); … … 582 588 virtual Type *acceptMutator( Mutator & m ) { return m.mutate( this ); } 583 589 virtual void print( std::ostream & os, int indent = 0 ) const; 584 private:585 std::string name;586 Expression *expr;587 Type *type;588 bool isType;589 590 }; 590 591 … … 628 629 629 630 std::ostream & operator<<( std::ostream & out, const Type * type ); 630 631 #endif // TYPE_H632 631 633 632 // Local Variables: // -
src/SynTree/TypeDecl.cc
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Thu Mar 16 07:49:58201713 // Update Count : 511 // Last Modified By : Andrew Beach 12 // Last Modified On : Wed Aug 9 14:35:00 2017 13 // Update Count : 6 14 14 // 15 15 … … 18 18 #include "Common/utility.h" 19 19 20 TypeDecl::TypeDecl( const std::string &name, Type::StorageClasses scs, Type *type, Kind kind, Type * init ) : Parent( name, scs, type ), kind( kind ), init( init ), sized( kind == Any || kind == Ttype) {20 TypeDecl::TypeDecl( const std::string &name, Type::StorageClasses scs, Type *type, Kind kind, Type * init ) : Parent( name, scs, type ), init( init ), sized( kind == Any || kind == Ttype ), kind( kind ) { 21 21 } 22 22 23 TypeDecl::TypeDecl( const TypeDecl &other ) : Parent( other ), kind( other.kind ), init( maybeClone( other.init ) ), sized( other.sized ) {23 TypeDecl::TypeDecl( const TypeDecl &other ) : Parent( other ), init( maybeClone( other.init ) ), sized( other.sized ), kind( other.kind ) { 24 24 } 25 25 -
src/SynTree/TypeSubstitution.h
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Fri Apr 29 15:00:20 201613 // Update Count : 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:52:24 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef TYPESUBSTITUTION_H 17 #define TYPESUBSTITUTION_H 16 #pragma once 18 17 19 18 #include <map> … … 180 179 std::ostream & operator<<( std::ostream & out, const TypeSubstitution & sub ); 181 180 182 #endif // TYPESUBSTITUTION_H183 184 181 // Local Variables: // 185 182 // tab-width: 4 // -
src/SynTree/VarExprReplacer.h
rfd344aa r9236060 9 9 // Author : Rob Schluntz 10 10 // Created On : Wed Jan 13 16:29:30 2016 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Fri May 13 11:27:52 201613 // Update Count : 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:53:41 2017 13 // Update Count : 6 14 14 // 15 15 16 #ifndef VAR_EXPR_REPLACER_H 17 #define VAR_EXPR_REPLACER_H 16 #pragma once 18 17 19 18 #include <map> … … 35 34 }; 36 35 37 #endif // VAR_EXPR_REPLACER_H38 39 36 // Local Variables: // 40 37 // tab-width: 4 // -
src/SynTree/Visitor.cc
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Thu Jun 22 13:41:00 201713 // Update Count : 2 612 // Last Modified On : Mon Jul 24 16:30:00 2017 13 // Update Count : 27 14 14 // 15 15 … … 192 192 } 193 193 194 void Visitor::visit( VirtualCastExpr *castExpr ) { 195 maybeAccept( castExpr->get_result(), *this ); 196 maybeAccept( castExpr->get_arg(), *this ); 197 } 198 194 199 void Visitor::visit( UntypedMemberExpr *memberExpr ) { 195 200 maybeAccept( memberExpr->get_result(), *this ); -
src/SynTree/Visitor.h
rfd344aa r9236060 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Thr Jun 08 15:45:00 201713 // Update Count : 1 112 // Last Modified On : Mon Jul 24 16:28:00 2017 13 // Update Count : 13 14 14 // 15 15 16 #ifndef VISITOR_H 17 #define VISITOR_H 16 #pragma once 18 17 19 18 #include "SynTree.h" … … 61 60 virtual void visit( NameExpr *nameExpr ); 62 61 virtual void visit( CastExpr *castExpr ); 62 virtual void visit( VirtualCastExpr *castExpr ); 63 63 virtual void visit( AddressExpr *addressExpr ); 64 64 virtual void visit( LabelAddressExpr *labAddressExpr ); … … 175 175 } 176 176 177 #endif // VISITOR_H178 179 177 // Local Variables: // 180 178 // tab-width: 4 // -
src/Tuples/Explode.h
rfd344aa r9236060 9 9 // Author : Rob Schluntz 10 10 // Created On : Wed Nov 9 13:12:24 2016 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Nov 9 13:20:24 201613 // Update Count : 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:55:16 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef _EXPLODE_H_ 17 #define _EXPLODE_H_ 16 #pragma once 18 17 19 18 #include "ResolvExpr/AlternativeFinder.h" … … 83 82 } // namespace Tuples 84 83 85 #endif // _TUPLE_ASSIGNMENT_H_86 87 84 // Local Variables: // 88 85 // tab-width: 4 // -
src/Tuples/TupleExpansion.cc
rfd344aa r9236060 66 66 }; 67 67 68 class TupleTypeReplacer : public GenPoly::DeclMutator { 69 public: 70 typedef GenPoly::DeclMutator Parent; 71 using Parent::mutate; 72 73 virtual Type * mutate( TupleType * tupleType ) override; 74 75 virtual CompoundStmt * mutate( CompoundStmt * stmt ) override { 76 typeMap.beginScope(); 77 stmt = Parent::mutate( stmt ); 78 typeMap.endScope(); 79 return stmt; 68 struct TupleTypeReplacer : public WithDeclsToAdd, public WithGuards, public WithTypeSubstitution { 69 Type * postmutate( TupleType * tupleType ); 70 71 void premutate( CompoundStmt * ) { 72 GuardScope( typeMap ); 80 73 } 81 74 private: … … 111 104 mutateAll( translationUnit, assnExpander ); 112 105 113 TupleTypeReplacerreplacer;114 replacer.mutateDeclarationList( translationUnit);106 PassVisitor<TupleTypeReplacer> replacer; 107 mutateAll( translationUnit, replacer ); 115 108 116 109 PassVisitor<TupleIndexExpander> idxExpander; … … 218 211 } 219 212 220 Type * TupleTypeReplacer::mutate( TupleType * tupleType ) { 221 tupleType = safe_dynamic_cast< TupleType * > ( Parent::mutate( tupleType ) ); 213 Type * TupleTypeReplacer::postmutate( TupleType * tupleType ) { 222 214 unsigned tupleSize = tupleType->size(); 223 215 if ( ! typeMap.count( tupleSize ) ) { … … 226 218 decl->set_body( true ); 227 219 for ( size_t i = 0; i < tupleSize; ++i ) { 228 TypeDecl * tyParam = new TypeDecl( toString( "tuple_param_", i ), Type::StorageClasses(), nullptr, TypeDecl::Any );220 TypeDecl * tyParam = new TypeDecl( toString( "tuple_param_", tupleSize, "_", i ), Type::StorageClasses(), nullptr, TypeDecl::Any ); 229 221 decl->get_members().push_back( new ObjectDecl( toString("field_", i ), Type::StorageClasses(), LinkageSpec::C, nullptr, new TypeInstType( Type::Qualifiers(), tyParam->get_name(), tyParam ), nullptr ) ); 230 222 decl->get_parameters().push_back( tyParam ); … … 235 227 } 236 228 typeMap[tupleSize] = decl; 237 addDeclaration( decl );229 declsToAddBefore.push_back( decl ); 238 230 } 239 231 Type::Qualifiers qualifiers = tupleType->get_qualifiers(); … … 241 233 StructDecl * decl = typeMap[tupleSize]; 242 234 StructInstType * newType = new StructInstType( qualifiers, decl ); 243 for ( Type * t : *tupleType ) { 235 for ( auto p : group_iterate( tupleType->get_types(), decl->get_parameters() ) ) { 236 Type * t = std::get<0>(p); 237 TypeDecl * td = std::get<1>(p); 244 238 newType->get_parameters().push_back( new TypeExpr( t->clone() ) ); 239 if ( env ) { 240 // add bindings to the type environment. 241 // xxx - This may not be sufficient, it may be necessary to rename type variables on StructInstType? 242 env->add( td->get_name(), t->clone() ); 243 } 245 244 } 246 245 delete tupleType; -
src/Tuples/Tuples.h
rfd344aa r9236060 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Nov 9 13:17:58 201613 // Update Count : 1 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:55:00 2017 13 // Update Count : 16 14 14 // 15 15 16 #ifndef _TUPLES_H_ 17 #define _TUPLES_H_ 16 #pragma once 18 17 19 18 #include <string> … … 49 48 } // namespace Tuples 50 49 51 #endif // _TUPLE_ASSIGNMENT_H_52 53 50 // Local Variables: // 54 51 // tab-width: 4 // -
src/benchmark/create_pthrd.c
rfd344aa r9236060 14 14 n = atoi(argv[1]); 15 15 } 16 printf(" %lu\n", n);16 printf("create %lu pthreads ... ", n); 17 17 18 18 for (size_t i = 0; i < n; i++) { 19 19 pthread_t thread; 20 20 if (pthread_create(&thread, NULL, foo, NULL) < 0) { 21 perror( "failure" ); 21 22 return 1; 22 23 } 23 24 24 25 if (pthread_join( thread, NULL) < 0) { 26 perror( "failure" ); 25 27 return 1; 26 28 } 27 29 } 28 pthread_exit(NULL); 29 return 0; 30 printf("finish\n"); 30 31 } -
src/include/cassert
rfd344aa r9236060 10 10 // Created On : Thu Aug 18 13:19:26 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T hu Aug 18 13:25:55 201613 // Update Count : 412 // Last Modified On : Tue Aug 1 11:56:01 2017 13 // Update Count : 16 14 14 // 15 15 … … 18 18 // IWYU pragma: private, include <cassert> 19 19 20 #include_next < assert.h>20 #include_next <cassert> 21 21 22 #define __STRINGIFY__(str) #str 23 #define __VSTRINGIFY__(str) __STRINGIFY__(str) 24 #define assertf(expr, fmt, ...) ((expr) ? static_cast<void>(0) : __assert_fail_f(__VSTRINGIFY__(expr), __FILE__, __LINE__, __PRETTY_FUNCTION__, fmt, ## __VA_ARGS__ )) 22 #ifdef NDEBUG 25 23 26 void __assert_fail_f( const char *assertion, const char *file, unsigned int line, const char *function, const char *fmt, ... ) __attribute__((noreturn)); 24 #define assertf(expr, fmt, ...) (__ASSERT_VOID_ASSERT (0)) 25 26 #else 27 28 #define assertf(expr, fmt, ...) ((expr) \ 29 ? (__ASSERT_VOID_CAST (0)) \ 30 : __assert_fail_f( #expr, __FILE__, __LINE__, \ 31 __ASSERT_FUNCTION, fmt, ## __VA_ARGS__ )) 32 33 void __assert_fail_f( const char *assertion, const char *file, 34 unsigned int line, const char *function, 35 const char *fmt, ... 36 ) __attribute__((noreturn, format(printf, 5, 6))); 37 38 #endif 27 39 28 40 template<typename T, typename U> 29 static inline T safe_dynamic_cast( const U& src) {41 static inline T safe_dynamic_cast( const U & src ) { 30 42 T ret = dynamic_cast<T>(src); 31 43 assert(ret); -
src/libcfa/Makefile.am
rfd344aa r9236060 11 11 ## Created On : Sun May 31 08:54:01 2015 12 12 ## Last Modified By : Andrew Beach 13 ## Last Modified On : Wed Ju n 28 15:36:00 201714 ## Update Count : 2 1513 ## Last Modified On : Wed Jul 26 14:15:00 2017 14 ## Update Count : 221 15 15 ############################################################################### 16 16 … … 39 39 40 40 AM_CCASFLAGS = @CFA_FLAGS@ 41 CFLAGS = -quiet -no-include-stdhdr -XCFA -t -B${abs_top_srcdir}/src/driver ${EXTRA_FLAGS} 41 42 #CFLAGS for most libcfa src 43 #use -no-include-stdhdr to prevent rebuild cycles 44 #The built sources must not depend on the installed headers 45 CFLAGS = -quiet -no-include-stdhdr -I${abs_top_srcdir}/src/libcfa/stdhdr -XCFA -t -B${abs_top_srcdir}/src/driver ${EXTRA_FLAGS} 42 46 CC = ${abs_top_srcdir}/src/driver/cfa 43 47 44 headers = assert fstream iostream iterator limits mathrational stdlib \48 headers = fstream iostream iterator limits rational stdlib \ 45 49 containers/maybe containers/pair containers/result containers/vector 46 50 … … 51 55 52 56 libobjs = ${headers:=.o} 53 libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} exception.c 57 libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} \ 58 assert.c exception.c virtual.c 54 59 55 60 # not all platforms support concurrency, add option do disable it … … 68 73 ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $< 69 74 75 libcfa_a-virtual.o : virtual.c 76 ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $< 77 70 78 concurrency/libcfa_d_a-invoke.o : concurrency/invoke.c 71 79 ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $< 72 80 73 81 libcfa_d_a-exception.o : exception.c 82 ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $< 83 84 libcfa_d_a-virtual.o : virtual.c 74 85 ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $< 75 86 … … 84 95 85 96 cfa_includedir = $(CFA_INCDIR) 86 nobase_cfa_include_HEADERS = ${headers} ${stdhdr} gmp concurrency/invoke.h97 nobase_cfa_include_HEADERS = ${headers} ${stdhdr} math gmp concurrency/invoke.h 87 98 88 99 CLEANFILES = libcfa-prelude.c -
src/libcfa/Makefile.in
rfd344aa r9236060 149 149 libcfa_d_a_LIBADD = 150 150 am__libcfa_d_a_SOURCES_DIST = libcfa-prelude.c interpose.c \ 151 libhdr/libdebug.c assert.c fstream.c iostream.c iterator.c \152 limits.c math.c rational.c stdlib.c containers/maybe.c \153 containers/ pair.c containers/result.c containers/vector.c \151 libhdr/libdebug.c fstream.c iostream.c iterator.c limits.c \ 152 rational.c stdlib.c containers/maybe.c containers/pair.c \ 153 containers/result.c containers/vector.c \ 154 154 concurrency/coroutine.c concurrency/thread.c \ 155 concurrency/kernel.c concurrency/monitor.c exception.c \ 156 concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c \ 157 concurrency/invoke.c concurrency/preemption.c 155 concurrency/kernel.c concurrency/monitor.c assert.c \ 156 exception.c virtual.c concurrency/CtxSwitch-@MACHINE_TYPE@.S \ 157 concurrency/alarm.c concurrency/invoke.c \ 158 concurrency/preemption.c 158 159 am__dirstamp = $(am__leading_dot)dirstamp 159 160 @BUILD_CONCURRENCY_TRUE@am__objects_1 = concurrency/libcfa_d_a-coroutine.$(OBJEXT) \ … … 161 162 @BUILD_CONCURRENCY_TRUE@ concurrency/libcfa_d_a-kernel.$(OBJEXT) \ 162 163 @BUILD_CONCURRENCY_TRUE@ concurrency/libcfa_d_a-monitor.$(OBJEXT) 163 am__objects_2 = libcfa_d_a-assert.$(OBJEXT) \ 164 libcfa_d_a-fstream.$(OBJEXT) libcfa_d_a-iostream.$(OBJEXT) \ 165 libcfa_d_a-iterator.$(OBJEXT) libcfa_d_a-limits.$(OBJEXT) \ 166 libcfa_d_a-math.$(OBJEXT) libcfa_d_a-rational.$(OBJEXT) \ 164 am__objects_2 = libcfa_d_a-fstream.$(OBJEXT) \ 165 libcfa_d_a-iostream.$(OBJEXT) libcfa_d_a-iterator.$(OBJEXT) \ 166 libcfa_d_a-limits.$(OBJEXT) libcfa_d_a-rational.$(OBJEXT) \ 167 167 libcfa_d_a-stdlib.$(OBJEXT) \ 168 168 containers/libcfa_d_a-maybe.$(OBJEXT) \ … … 177 177 libcfa_d_a-interpose.$(OBJEXT) \ 178 178 libhdr/libcfa_d_a-libdebug.$(OBJEXT) $(am__objects_2) \ 179 libcfa_d_a-exception.$(OBJEXT) $(am__objects_3) 179 libcfa_d_a-assert.$(OBJEXT) libcfa_d_a-exception.$(OBJEXT) \ 180 libcfa_d_a-virtual.$(OBJEXT) $(am__objects_3) 180 181 am_libcfa_d_a_OBJECTS = $(am__objects_4) 181 182 libcfa_d_a_OBJECTS = $(am_libcfa_d_a_OBJECTS) … … 183 184 libcfa_a_LIBADD = 184 185 am__libcfa_a_SOURCES_DIST = libcfa-prelude.c interpose.c \ 185 libhdr/libdebug.c assert.c fstream.c iostream.c iterator.c \186 limits.c math.c rational.c stdlib.c containers/maybe.c \187 containers/ pair.c containers/result.c containers/vector.c \186 libhdr/libdebug.c fstream.c iostream.c iterator.c limits.c \ 187 rational.c stdlib.c containers/maybe.c containers/pair.c \ 188 containers/result.c containers/vector.c \ 188 189 concurrency/coroutine.c concurrency/thread.c \ 189 concurrency/kernel.c concurrency/monitor.c exception.c \ 190 concurrency/CtxSwitch-@MACHINE_TYPE@.S concurrency/alarm.c \ 191 concurrency/invoke.c concurrency/preemption.c 190 concurrency/kernel.c concurrency/monitor.c assert.c \ 191 exception.c virtual.c concurrency/CtxSwitch-@MACHINE_TYPE@.S \ 192 concurrency/alarm.c concurrency/invoke.c \ 193 concurrency/preemption.c 192 194 @BUILD_CONCURRENCY_TRUE@am__objects_5 = concurrency/libcfa_a-coroutine.$(OBJEXT) \ 193 195 @BUILD_CONCURRENCY_TRUE@ concurrency/libcfa_a-thread.$(OBJEXT) \ 194 196 @BUILD_CONCURRENCY_TRUE@ concurrency/libcfa_a-kernel.$(OBJEXT) \ 195 197 @BUILD_CONCURRENCY_TRUE@ concurrency/libcfa_a-monitor.$(OBJEXT) 196 am__objects_6 = libcfa_a-assert.$(OBJEXT) libcfa_a-fstream.$(OBJEXT) \ 197 libcfa_a-iostream.$(OBJEXT) libcfa_a-iterator.$(OBJEXT) \ 198 libcfa_a-limits.$(OBJEXT) libcfa_a-math.$(OBJEXT) \ 198 am__objects_6 = libcfa_a-fstream.$(OBJEXT) libcfa_a-iostream.$(OBJEXT) \ 199 libcfa_a-iterator.$(OBJEXT) libcfa_a-limits.$(OBJEXT) \ 199 200 libcfa_a-rational.$(OBJEXT) libcfa_a-stdlib.$(OBJEXT) \ 200 201 containers/libcfa_a-maybe.$(OBJEXT) \ … … 209 210 libcfa_a-interpose.$(OBJEXT) \ 210 211 libhdr/libcfa_a-libdebug.$(OBJEXT) $(am__objects_6) \ 211 libcfa_a-exception.$(OBJEXT) $(am__objects_7) 212 libcfa_a-assert.$(OBJEXT) libcfa_a-exception.$(OBJEXT) \ 213 libcfa_a-virtual.$(OBJEXT) $(am__objects_7) 212 214 am_libcfa_a_OBJECTS = $(am__objects_8) 213 215 libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS) … … 258 260 *) (install-info --version) >/dev/null 2>&1;; \ 259 261 esac 260 am__nobase_cfa_include_HEADERS_DIST = assert fstream iostream iterator\261 limits mathrational stdlib containers/maybe containers/pair \262 am__nobase_cfa_include_HEADERS_DIST = fstream iostream iterator limits \ 263 rational stdlib containers/maybe containers/pair \ 262 264 containers/result containers/vector concurrency/coroutine \ 263 265 concurrency/thread concurrency/kernel concurrency/monitor \ 264 ${shell echo stdhdr/*} gmp concurrency/invoke.h266 ${shell echo stdhdr/*} math gmp concurrency/invoke.h 265 267 HEADERS = $(nobase_cfa_include_HEADERS) 266 268 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) … … 306 308 CFA_NAME = @CFA_NAME@ 307 309 CFA_PREFIX = @CFA_PREFIX@ 308 CFLAGS = -quiet -no-include-stdhdr -XCFA -t -B${abs_top_srcdir}/src/driver ${EXTRA_FLAGS} 310 311 #CFLAGS for most libcfa src 312 #use -no-include-stdhdr to prevent rebuild cycles 313 #The built sources must not depend on the installed headers 314 CFLAGS = -quiet -no-include-stdhdr -I${abs_top_srcdir}/src/libcfa/stdhdr -XCFA -t -B${abs_top_srcdir}/src/driver ${EXTRA_FLAGS} 309 315 CPP = @CPP@ 310 316 CPPFLAGS = @CPPFLAGS@ … … 412 418 EXTRA_FLAGS = -g -Wall -Werror -Wno-unused-function -I${abs_top_srcdir}/src/libcfa/libhdr -imacros libcfa-prelude.c @CFA_FLAGS@ 413 419 AM_CCASFLAGS = @CFA_FLAGS@ 414 headers = assert fstream iostream iterator limits mathrational stdlib \420 headers = fstream iostream iterator limits rational stdlib \ 415 421 containers/maybe containers/pair containers/result \ 416 422 containers/vector $(am__append_3) 417 423 libobjs = ${headers:=.o} 418 424 libsrc = libcfa-prelude.c interpose.c libhdr/libdebug.c ${headers:=.c} \ 419 exception.c $(am__append_4)425 assert.c exception.c virtual.c $(am__append_4) 420 426 libcfa_a_SOURCES = ${libsrc} 421 427 libcfa_a_CFLAGS = -nodebug -O2 … … 424 430 stdhdr = ${shell echo stdhdr/*} 425 431 cfa_includedir = $(CFA_INCDIR) 426 nobase_cfa_include_HEADERS = ${headers} ${stdhdr} gmp concurrency/invoke.h432 nobase_cfa_include_HEADERS = ${headers} ${stdhdr} math gmp concurrency/invoke.h 427 433 CLEANFILES = libcfa-prelude.c 428 434 all: all-am … … 590 596 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-libcfa-prelude.Po@am__quote@ 591 597 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-limits.Po@am__quote@ 592 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-math.Po@am__quote@593 598 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-rational.Po@am__quote@ 594 599 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-stdlib.Po@am__quote@ 600 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_a-virtual.Po@am__quote@ 595 601 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-assert.Po@am__quote@ 596 602 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-exception.Po@am__quote@ … … 601 607 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-libcfa-prelude.Po@am__quote@ 602 608 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-limits.Po@am__quote@ 603 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-math.Po@am__quote@604 609 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-rational.Po@am__quote@ 605 610 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-stdlib.Po@am__quote@ 611 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa_d_a-virtual.Po@am__quote@ 606 612 @AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/CtxSwitch-@MACHINE_TYPE@.Po@am__quote@ 607 613 @AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/libcfa_a-alarm.Po@am__quote@ … … 697 703 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libhdr/libcfa_d_a-libdebug.obj `if test -f 'libhdr/libdebug.c'; then $(CYGPATH_W) 'libhdr/libdebug.c'; else $(CYGPATH_W) '$(srcdir)/libhdr/libdebug.c'; fi` 698 704 705 libcfa_d_a-fstream.o: fstream.c 706 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-fstream.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-fstream.Tpo -c -o libcfa_d_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c 707 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-fstream.Tpo $(DEPDIR)/libcfa_d_a-fstream.Po 708 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstream.c' object='libcfa_d_a-fstream.o' libtool=no @AMDEPBACKSLASH@ 709 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 710 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c 711 712 libcfa_d_a-fstream.obj: fstream.c 713 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-fstream.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-fstream.Tpo -c -o libcfa_d_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi` 714 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-fstream.Tpo $(DEPDIR)/libcfa_d_a-fstream.Po 715 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstream.c' object='libcfa_d_a-fstream.obj' libtool=no @AMDEPBACKSLASH@ 716 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 717 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi` 718 719 libcfa_d_a-iostream.o: iostream.c 720 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iostream.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-iostream.Tpo -c -o libcfa_d_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c 721 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iostream.Tpo $(DEPDIR)/libcfa_d_a-iostream.Po 722 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iostream.c' object='libcfa_d_a-iostream.o' libtool=no @AMDEPBACKSLASH@ 723 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 724 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c 725 726 libcfa_d_a-iostream.obj: iostream.c 727 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iostream.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-iostream.Tpo -c -o libcfa_d_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi` 728 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iostream.Tpo $(DEPDIR)/libcfa_d_a-iostream.Po 729 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iostream.c' object='libcfa_d_a-iostream.obj' libtool=no @AMDEPBACKSLASH@ 730 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 731 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi` 732 733 libcfa_d_a-iterator.o: iterator.c 734 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iterator.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-iterator.Tpo -c -o libcfa_d_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c 735 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iterator.Tpo $(DEPDIR)/libcfa_d_a-iterator.Po 736 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iterator.c' object='libcfa_d_a-iterator.o' libtool=no @AMDEPBACKSLASH@ 737 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 738 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c 739 740 libcfa_d_a-iterator.obj: iterator.c 741 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iterator.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-iterator.Tpo -c -o libcfa_d_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi` 742 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iterator.Tpo $(DEPDIR)/libcfa_d_a-iterator.Po 743 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iterator.c' object='libcfa_d_a-iterator.obj' libtool=no @AMDEPBACKSLASH@ 744 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 745 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi` 746 747 libcfa_d_a-limits.o: limits.c 748 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-limits.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-limits.Tpo -c -o libcfa_d_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c 749 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-limits.Tpo $(DEPDIR)/libcfa_d_a-limits.Po 750 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='limits.c' object='libcfa_d_a-limits.o' libtool=no @AMDEPBACKSLASH@ 751 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 752 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c 753 754 libcfa_d_a-limits.obj: limits.c 755 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-limits.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-limits.Tpo -c -o libcfa_d_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi` 756 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-limits.Tpo $(DEPDIR)/libcfa_d_a-limits.Po 757 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='limits.c' object='libcfa_d_a-limits.obj' libtool=no @AMDEPBACKSLASH@ 758 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 759 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi` 760 761 libcfa_d_a-rational.o: rational.c 762 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-rational.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-rational.Tpo -c -o libcfa_d_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c 763 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-rational.Tpo $(DEPDIR)/libcfa_d_a-rational.Po 764 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rational.c' object='libcfa_d_a-rational.o' libtool=no @AMDEPBACKSLASH@ 765 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 766 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c 767 768 libcfa_d_a-rational.obj: rational.c 769 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-rational.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-rational.Tpo -c -o libcfa_d_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi` 770 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-rational.Tpo $(DEPDIR)/libcfa_d_a-rational.Po 771 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rational.c' object='libcfa_d_a-rational.obj' libtool=no @AMDEPBACKSLASH@ 772 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 773 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi` 774 775 libcfa_d_a-stdlib.o: stdlib.c 776 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-stdlib.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-stdlib.Tpo -c -o libcfa_d_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c 777 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-stdlib.Tpo $(DEPDIR)/libcfa_d_a-stdlib.Po 778 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdlib.c' object='libcfa_d_a-stdlib.o' libtool=no @AMDEPBACKSLASH@ 779 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 780 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c 781 782 libcfa_d_a-stdlib.obj: stdlib.c 783 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-stdlib.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-stdlib.Tpo -c -o libcfa_d_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi` 784 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-stdlib.Tpo $(DEPDIR)/libcfa_d_a-stdlib.Po 785 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdlib.c' object='libcfa_d_a-stdlib.obj' libtool=no @AMDEPBACKSLASH@ 786 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 787 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi` 788 789 containers/libcfa_d_a-maybe.o: containers/maybe.c 790 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-maybe.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-maybe.Tpo -c -o containers/libcfa_d_a-maybe.o `test -f 'containers/maybe.c' || echo '$(srcdir)/'`containers/maybe.c 791 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-maybe.Tpo containers/$(DEPDIR)/libcfa_d_a-maybe.Po 792 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/maybe.c' object='containers/libcfa_d_a-maybe.o' libtool=no @AMDEPBACKSLASH@ 793 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 794 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-maybe.o `test -f 'containers/maybe.c' || echo '$(srcdir)/'`containers/maybe.c 795 796 containers/libcfa_d_a-maybe.obj: containers/maybe.c 797 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-maybe.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-maybe.Tpo -c -o containers/libcfa_d_a-maybe.obj `if test -f 'containers/maybe.c'; then $(CYGPATH_W) 'containers/maybe.c'; else $(CYGPATH_W) '$(srcdir)/containers/maybe.c'; fi` 798 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-maybe.Tpo containers/$(DEPDIR)/libcfa_d_a-maybe.Po 799 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/maybe.c' object='containers/libcfa_d_a-maybe.obj' libtool=no @AMDEPBACKSLASH@ 800 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 801 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-maybe.obj `if test -f 'containers/maybe.c'; then $(CYGPATH_W) 'containers/maybe.c'; else $(CYGPATH_W) '$(srcdir)/containers/maybe.c'; fi` 802 803 containers/libcfa_d_a-pair.o: containers/pair.c 804 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-pair.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-pair.Tpo -c -o containers/libcfa_d_a-pair.o `test -f 'containers/pair.c' || echo '$(srcdir)/'`containers/pair.c 805 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-pair.Tpo containers/$(DEPDIR)/libcfa_d_a-pair.Po 806 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/pair.c' object='containers/libcfa_d_a-pair.o' libtool=no @AMDEPBACKSLASH@ 807 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 808 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-pair.o `test -f 'containers/pair.c' || echo '$(srcdir)/'`containers/pair.c 809 810 containers/libcfa_d_a-pair.obj: containers/pair.c 811 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-pair.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-pair.Tpo -c -o containers/libcfa_d_a-pair.obj `if test -f 'containers/pair.c'; then $(CYGPATH_W) 'containers/pair.c'; else $(CYGPATH_W) '$(srcdir)/containers/pair.c'; fi` 812 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-pair.Tpo containers/$(DEPDIR)/libcfa_d_a-pair.Po 813 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/pair.c' object='containers/libcfa_d_a-pair.obj' libtool=no @AMDEPBACKSLASH@ 814 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 815 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-pair.obj `if test -f 'containers/pair.c'; then $(CYGPATH_W) 'containers/pair.c'; else $(CYGPATH_W) '$(srcdir)/containers/pair.c'; fi` 816 817 containers/libcfa_d_a-result.o: containers/result.c 818 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-result.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-result.Tpo -c -o containers/libcfa_d_a-result.o `test -f 'containers/result.c' || echo '$(srcdir)/'`containers/result.c 819 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-result.Tpo containers/$(DEPDIR)/libcfa_d_a-result.Po 820 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/result.c' object='containers/libcfa_d_a-result.o' libtool=no @AMDEPBACKSLASH@ 821 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 822 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-result.o `test -f 'containers/result.c' || echo '$(srcdir)/'`containers/result.c 823 824 containers/libcfa_d_a-result.obj: containers/result.c 825 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-result.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-result.Tpo -c -o containers/libcfa_d_a-result.obj `if test -f 'containers/result.c'; then $(CYGPATH_W) 'containers/result.c'; else $(CYGPATH_W) '$(srcdir)/containers/result.c'; fi` 826 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-result.Tpo containers/$(DEPDIR)/libcfa_d_a-result.Po 827 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/result.c' object='containers/libcfa_d_a-result.obj' libtool=no @AMDEPBACKSLASH@ 828 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 829 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-result.obj `if test -f 'containers/result.c'; then $(CYGPATH_W) 'containers/result.c'; else $(CYGPATH_W) '$(srcdir)/containers/result.c'; fi` 830 831 containers/libcfa_d_a-vector.o: containers/vector.c 832 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-vector.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-vector.Tpo -c -o containers/libcfa_d_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c 833 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-vector.Tpo containers/$(DEPDIR)/libcfa_d_a-vector.Po 834 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_d_a-vector.o' libtool=no @AMDEPBACKSLASH@ 835 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 836 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c 837 838 containers/libcfa_d_a-vector.obj: containers/vector.c 839 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-vector.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-vector.Tpo -c -o containers/libcfa_d_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi` 840 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-vector.Tpo containers/$(DEPDIR)/libcfa_d_a-vector.Po 841 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_d_a-vector.obj' libtool=no @AMDEPBACKSLASH@ 842 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 843 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi` 844 845 concurrency/libcfa_d_a-coroutine.o: concurrency/coroutine.c 846 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-coroutine.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Tpo -c -o concurrency/libcfa_d_a-coroutine.o `test -f 'concurrency/coroutine.c' || echo '$(srcdir)/'`concurrency/coroutine.c 847 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Tpo concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Po 848 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/coroutine.c' object='concurrency/libcfa_d_a-coroutine.o' libtool=no @AMDEPBACKSLASH@ 849 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 850 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-coroutine.o `test -f 'concurrency/coroutine.c' || echo '$(srcdir)/'`concurrency/coroutine.c 851 852 concurrency/libcfa_d_a-coroutine.obj: concurrency/coroutine.c 853 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-coroutine.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Tpo -c -o concurrency/libcfa_d_a-coroutine.obj `if test -f 'concurrency/coroutine.c'; then $(CYGPATH_W) 'concurrency/coroutine.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/coroutine.c'; fi` 854 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Tpo concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Po 855 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/coroutine.c' object='concurrency/libcfa_d_a-coroutine.obj' libtool=no @AMDEPBACKSLASH@ 856 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 857 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-coroutine.obj `if test -f 'concurrency/coroutine.c'; then $(CYGPATH_W) 'concurrency/coroutine.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/coroutine.c'; fi` 858 859 concurrency/libcfa_d_a-thread.o: concurrency/thread.c 860 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-thread.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-thread.Tpo -c -o concurrency/libcfa_d_a-thread.o `test -f 'concurrency/thread.c' || echo '$(srcdir)/'`concurrency/thread.c 861 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-thread.Tpo concurrency/$(DEPDIR)/libcfa_d_a-thread.Po 862 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/thread.c' object='concurrency/libcfa_d_a-thread.o' libtool=no @AMDEPBACKSLASH@ 863 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 864 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-thread.o `test -f 'concurrency/thread.c' || echo '$(srcdir)/'`concurrency/thread.c 865 866 concurrency/libcfa_d_a-thread.obj: concurrency/thread.c 867 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-thread.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-thread.Tpo -c -o concurrency/libcfa_d_a-thread.obj `if test -f 'concurrency/thread.c'; then $(CYGPATH_W) 'concurrency/thread.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/thread.c'; fi` 868 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-thread.Tpo concurrency/$(DEPDIR)/libcfa_d_a-thread.Po 869 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/thread.c' object='concurrency/libcfa_d_a-thread.obj' libtool=no @AMDEPBACKSLASH@ 870 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 871 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-thread.obj `if test -f 'concurrency/thread.c'; then $(CYGPATH_W) 'concurrency/thread.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/thread.c'; fi` 872 873 concurrency/libcfa_d_a-kernel.o: concurrency/kernel.c 874 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-kernel.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-kernel.Tpo -c -o concurrency/libcfa_d_a-kernel.o `test -f 'concurrency/kernel.c' || echo '$(srcdir)/'`concurrency/kernel.c 875 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-kernel.Tpo concurrency/$(DEPDIR)/libcfa_d_a-kernel.Po 876 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/kernel.c' object='concurrency/libcfa_d_a-kernel.o' libtool=no @AMDEPBACKSLASH@ 877 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 878 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-kernel.o `test -f 'concurrency/kernel.c' || echo '$(srcdir)/'`concurrency/kernel.c 879 880 concurrency/libcfa_d_a-kernel.obj: concurrency/kernel.c 881 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-kernel.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-kernel.Tpo -c -o concurrency/libcfa_d_a-kernel.obj `if test -f 'concurrency/kernel.c'; then $(CYGPATH_W) 'concurrency/kernel.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/kernel.c'; fi` 882 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-kernel.Tpo concurrency/$(DEPDIR)/libcfa_d_a-kernel.Po 883 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/kernel.c' object='concurrency/libcfa_d_a-kernel.obj' libtool=no @AMDEPBACKSLASH@ 884 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 885 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-kernel.obj `if test -f 'concurrency/kernel.c'; then $(CYGPATH_W) 'concurrency/kernel.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/kernel.c'; fi` 886 887 concurrency/libcfa_d_a-monitor.o: concurrency/monitor.c 888 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-monitor.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-monitor.Tpo -c -o concurrency/libcfa_d_a-monitor.o `test -f 'concurrency/monitor.c' || echo '$(srcdir)/'`concurrency/monitor.c 889 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-monitor.Tpo concurrency/$(DEPDIR)/libcfa_d_a-monitor.Po 890 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/monitor.c' object='concurrency/libcfa_d_a-monitor.o' libtool=no @AMDEPBACKSLASH@ 891 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 892 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-monitor.o `test -f 'concurrency/monitor.c' || echo '$(srcdir)/'`concurrency/monitor.c 893 894 concurrency/libcfa_d_a-monitor.obj: concurrency/monitor.c 895 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-monitor.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-monitor.Tpo -c -o concurrency/libcfa_d_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi` 896 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-monitor.Tpo concurrency/$(DEPDIR)/libcfa_d_a-monitor.Po 897 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/monitor.c' object='concurrency/libcfa_d_a-monitor.obj' libtool=no @AMDEPBACKSLASH@ 898 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 899 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi` 900 699 901 libcfa_d_a-assert.o: assert.c 700 902 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-assert.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-assert.Tpo -c -o libcfa_d_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c … … 711 913 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi` 712 914 713 libcfa_d_a-fstream.o: fstream.c714 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-fstream.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-fstream.Tpo -c -o libcfa_d_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c715 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-fstream.Tpo $(DEPDIR)/libcfa_d_a-fstream.Po716 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstream.c' object='libcfa_d_a-fstream.o' libtool=no @AMDEPBACKSLASH@717 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@718 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c719 720 libcfa_d_a-fstream.obj: fstream.c721 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-fstream.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-fstream.Tpo -c -o libcfa_d_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`722 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-fstream.Tpo $(DEPDIR)/libcfa_d_a-fstream.Po723 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstream.c' object='libcfa_d_a-fstream.obj' libtool=no @AMDEPBACKSLASH@724 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@725 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`726 727 libcfa_d_a-iostream.o: iostream.c728 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iostream.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-iostream.Tpo -c -o libcfa_d_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c729 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iostream.Tpo $(DEPDIR)/libcfa_d_a-iostream.Po730 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iostream.c' object='libcfa_d_a-iostream.o' libtool=no @AMDEPBACKSLASH@731 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@732 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c733 734 libcfa_d_a-iostream.obj: iostream.c735 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iostream.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-iostream.Tpo -c -o libcfa_d_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`736 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iostream.Tpo $(DEPDIR)/libcfa_d_a-iostream.Po737 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iostream.c' object='libcfa_d_a-iostream.obj' libtool=no @AMDEPBACKSLASH@738 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@739 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`740 741 libcfa_d_a-iterator.o: iterator.c742 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iterator.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-iterator.Tpo -c -o libcfa_d_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c743 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iterator.Tpo $(DEPDIR)/libcfa_d_a-iterator.Po744 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iterator.c' object='libcfa_d_a-iterator.o' libtool=no @AMDEPBACKSLASH@745 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@746 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c747 748 libcfa_d_a-iterator.obj: iterator.c749 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-iterator.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-iterator.Tpo -c -o libcfa_d_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`750 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-iterator.Tpo $(DEPDIR)/libcfa_d_a-iterator.Po751 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iterator.c' object='libcfa_d_a-iterator.obj' libtool=no @AMDEPBACKSLASH@752 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@753 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`754 755 libcfa_d_a-limits.o: limits.c756 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-limits.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-limits.Tpo -c -o libcfa_d_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c757 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-limits.Tpo $(DEPDIR)/libcfa_d_a-limits.Po758 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='limits.c' object='libcfa_d_a-limits.o' libtool=no @AMDEPBACKSLASH@759 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@760 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c761 762 libcfa_d_a-limits.obj: limits.c763 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-limits.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-limits.Tpo -c -o libcfa_d_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`764 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-limits.Tpo $(DEPDIR)/libcfa_d_a-limits.Po765 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='limits.c' object='libcfa_d_a-limits.obj' libtool=no @AMDEPBACKSLASH@766 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@767 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`768 769 libcfa_d_a-math.o: math.c770 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-math.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-math.Tpo -c -o libcfa_d_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c771 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-math.Tpo $(DEPDIR)/libcfa_d_a-math.Po772 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='math.c' object='libcfa_d_a-math.o' libtool=no @AMDEPBACKSLASH@773 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@774 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c775 776 libcfa_d_a-math.obj: math.c777 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-math.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-math.Tpo -c -o libcfa_d_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`778 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-math.Tpo $(DEPDIR)/libcfa_d_a-math.Po779 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='math.c' object='libcfa_d_a-math.obj' libtool=no @AMDEPBACKSLASH@780 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@781 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`782 783 libcfa_d_a-rational.o: rational.c784 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-rational.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-rational.Tpo -c -o libcfa_d_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c785 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-rational.Tpo $(DEPDIR)/libcfa_d_a-rational.Po786 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rational.c' object='libcfa_d_a-rational.o' libtool=no @AMDEPBACKSLASH@787 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@788 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c789 790 libcfa_d_a-rational.obj: rational.c791 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-rational.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-rational.Tpo -c -o libcfa_d_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`792 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-rational.Tpo $(DEPDIR)/libcfa_d_a-rational.Po793 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rational.c' object='libcfa_d_a-rational.obj' libtool=no @AMDEPBACKSLASH@794 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@795 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`796 797 libcfa_d_a-stdlib.o: stdlib.c798 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-stdlib.o -MD -MP -MF $(DEPDIR)/libcfa_d_a-stdlib.Tpo -c -o libcfa_d_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c799 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-stdlib.Tpo $(DEPDIR)/libcfa_d_a-stdlib.Po800 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdlib.c' object='libcfa_d_a-stdlib.o' libtool=no @AMDEPBACKSLASH@801 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@802 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c803 804 libcfa_d_a-stdlib.obj: stdlib.c805 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-stdlib.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-stdlib.Tpo -c -o libcfa_d_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`806 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-stdlib.Tpo $(DEPDIR)/libcfa_d_a-stdlib.Po807 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdlib.c' object='libcfa_d_a-stdlib.obj' libtool=no @AMDEPBACKSLASH@808 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@809 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`810 811 containers/libcfa_d_a-maybe.o: containers/maybe.c812 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-maybe.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-maybe.Tpo -c -o containers/libcfa_d_a-maybe.o `test -f 'containers/maybe.c' || echo '$(srcdir)/'`containers/maybe.c813 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-maybe.Tpo containers/$(DEPDIR)/libcfa_d_a-maybe.Po814 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/maybe.c' object='containers/libcfa_d_a-maybe.o' libtool=no @AMDEPBACKSLASH@815 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@816 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-maybe.o `test -f 'containers/maybe.c' || echo '$(srcdir)/'`containers/maybe.c817 818 containers/libcfa_d_a-maybe.obj: containers/maybe.c819 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-maybe.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-maybe.Tpo -c -o containers/libcfa_d_a-maybe.obj `if test -f 'containers/maybe.c'; then $(CYGPATH_W) 'containers/maybe.c'; else $(CYGPATH_W) '$(srcdir)/containers/maybe.c'; fi`820 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-maybe.Tpo containers/$(DEPDIR)/libcfa_d_a-maybe.Po821 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/maybe.c' object='containers/libcfa_d_a-maybe.obj' libtool=no @AMDEPBACKSLASH@822 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@823 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-maybe.obj `if test -f 'containers/maybe.c'; then $(CYGPATH_W) 'containers/maybe.c'; else $(CYGPATH_W) '$(srcdir)/containers/maybe.c'; fi`824 825 containers/libcfa_d_a-pair.o: containers/pair.c826 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-pair.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-pair.Tpo -c -o containers/libcfa_d_a-pair.o `test -f 'containers/pair.c' || echo '$(srcdir)/'`containers/pair.c827 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-pair.Tpo containers/$(DEPDIR)/libcfa_d_a-pair.Po828 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/pair.c' object='containers/libcfa_d_a-pair.o' libtool=no @AMDEPBACKSLASH@829 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@830 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-pair.o `test -f 'containers/pair.c' || echo '$(srcdir)/'`containers/pair.c831 832 containers/libcfa_d_a-pair.obj: containers/pair.c833 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-pair.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-pair.Tpo -c -o containers/libcfa_d_a-pair.obj `if test -f 'containers/pair.c'; then $(CYGPATH_W) 'containers/pair.c'; else $(CYGPATH_W) '$(srcdir)/containers/pair.c'; fi`834 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-pair.Tpo containers/$(DEPDIR)/libcfa_d_a-pair.Po835 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/pair.c' object='containers/libcfa_d_a-pair.obj' libtool=no @AMDEPBACKSLASH@836 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@837 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-pair.obj `if test -f 'containers/pair.c'; then $(CYGPATH_W) 'containers/pair.c'; else $(CYGPATH_W) '$(srcdir)/containers/pair.c'; fi`838 839 containers/libcfa_d_a-result.o: containers/result.c840 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-result.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-result.Tpo -c -o containers/libcfa_d_a-result.o `test -f 'containers/result.c' || echo '$(srcdir)/'`containers/result.c841 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-result.Tpo containers/$(DEPDIR)/libcfa_d_a-result.Po842 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/result.c' object='containers/libcfa_d_a-result.o' libtool=no @AMDEPBACKSLASH@843 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@844 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-result.o `test -f 'containers/result.c' || echo '$(srcdir)/'`containers/result.c845 846 containers/libcfa_d_a-result.obj: containers/result.c847 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-result.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-result.Tpo -c -o containers/libcfa_d_a-result.obj `if test -f 'containers/result.c'; then $(CYGPATH_W) 'containers/result.c'; else $(CYGPATH_W) '$(srcdir)/containers/result.c'; fi`848 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-result.Tpo containers/$(DEPDIR)/libcfa_d_a-result.Po849 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/result.c' object='containers/libcfa_d_a-result.obj' libtool=no @AMDEPBACKSLASH@850 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@851 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-result.obj `if test -f 'containers/result.c'; then $(CYGPATH_W) 'containers/result.c'; else $(CYGPATH_W) '$(srcdir)/containers/result.c'; fi`852 853 containers/libcfa_d_a-vector.o: containers/vector.c854 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-vector.o -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-vector.Tpo -c -o containers/libcfa_d_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c855 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-vector.Tpo containers/$(DEPDIR)/libcfa_d_a-vector.Po856 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_d_a-vector.o' libtool=no @AMDEPBACKSLASH@857 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@858 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c859 860 containers/libcfa_d_a-vector.obj: containers/vector.c861 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_d_a-vector.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_d_a-vector.Tpo -c -o containers/libcfa_d_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`862 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_d_a-vector.Tpo containers/$(DEPDIR)/libcfa_d_a-vector.Po863 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_d_a-vector.obj' libtool=no @AMDEPBACKSLASH@864 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@865 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_d_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`866 867 concurrency/libcfa_d_a-coroutine.o: concurrency/coroutine.c868 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-coroutine.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Tpo -c -o concurrency/libcfa_d_a-coroutine.o `test -f 'concurrency/coroutine.c' || echo '$(srcdir)/'`concurrency/coroutine.c869 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Tpo concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Po870 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/coroutine.c' object='concurrency/libcfa_d_a-coroutine.o' libtool=no @AMDEPBACKSLASH@871 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@872 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-coroutine.o `test -f 'concurrency/coroutine.c' || echo '$(srcdir)/'`concurrency/coroutine.c873 874 concurrency/libcfa_d_a-coroutine.obj: concurrency/coroutine.c875 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-coroutine.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Tpo -c -o concurrency/libcfa_d_a-coroutine.obj `if test -f 'concurrency/coroutine.c'; then $(CYGPATH_W) 'concurrency/coroutine.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/coroutine.c'; fi`876 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Tpo concurrency/$(DEPDIR)/libcfa_d_a-coroutine.Po877 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/coroutine.c' object='concurrency/libcfa_d_a-coroutine.obj' libtool=no @AMDEPBACKSLASH@878 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@879 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-coroutine.obj `if test -f 'concurrency/coroutine.c'; then $(CYGPATH_W) 'concurrency/coroutine.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/coroutine.c'; fi`880 881 concurrency/libcfa_d_a-thread.o: concurrency/thread.c882 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-thread.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-thread.Tpo -c -o concurrency/libcfa_d_a-thread.o `test -f 'concurrency/thread.c' || echo '$(srcdir)/'`concurrency/thread.c883 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-thread.Tpo concurrency/$(DEPDIR)/libcfa_d_a-thread.Po884 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/thread.c' object='concurrency/libcfa_d_a-thread.o' libtool=no @AMDEPBACKSLASH@885 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@886 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-thread.o `test -f 'concurrency/thread.c' || echo '$(srcdir)/'`concurrency/thread.c887 888 concurrency/libcfa_d_a-thread.obj: concurrency/thread.c889 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-thread.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-thread.Tpo -c -o concurrency/libcfa_d_a-thread.obj `if test -f 'concurrency/thread.c'; then $(CYGPATH_W) 'concurrency/thread.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/thread.c'; fi`890 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-thread.Tpo concurrency/$(DEPDIR)/libcfa_d_a-thread.Po891 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/thread.c' object='concurrency/libcfa_d_a-thread.obj' libtool=no @AMDEPBACKSLASH@892 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@893 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-thread.obj `if test -f 'concurrency/thread.c'; then $(CYGPATH_W) 'concurrency/thread.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/thread.c'; fi`894 895 concurrency/libcfa_d_a-kernel.o: concurrency/kernel.c896 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-kernel.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-kernel.Tpo -c -o concurrency/libcfa_d_a-kernel.o `test -f 'concurrency/kernel.c' || echo '$(srcdir)/'`concurrency/kernel.c897 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-kernel.Tpo concurrency/$(DEPDIR)/libcfa_d_a-kernel.Po898 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/kernel.c' object='concurrency/libcfa_d_a-kernel.o' libtool=no @AMDEPBACKSLASH@899 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@900 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-kernel.o `test -f 'concurrency/kernel.c' || echo '$(srcdir)/'`concurrency/kernel.c901 902 concurrency/libcfa_d_a-kernel.obj: concurrency/kernel.c903 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-kernel.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-kernel.Tpo -c -o concurrency/libcfa_d_a-kernel.obj `if test -f 'concurrency/kernel.c'; then $(CYGPATH_W) 'concurrency/kernel.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/kernel.c'; fi`904 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-kernel.Tpo concurrency/$(DEPDIR)/libcfa_d_a-kernel.Po905 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/kernel.c' object='concurrency/libcfa_d_a-kernel.obj' libtool=no @AMDEPBACKSLASH@906 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@907 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-kernel.obj `if test -f 'concurrency/kernel.c'; then $(CYGPATH_W) 'concurrency/kernel.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/kernel.c'; fi`908 909 concurrency/libcfa_d_a-monitor.o: concurrency/monitor.c910 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-monitor.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-monitor.Tpo -c -o concurrency/libcfa_d_a-monitor.o `test -f 'concurrency/monitor.c' || echo '$(srcdir)/'`concurrency/monitor.c911 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-monitor.Tpo concurrency/$(DEPDIR)/libcfa_d_a-monitor.Po912 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/monitor.c' object='concurrency/libcfa_d_a-monitor.o' libtool=no @AMDEPBACKSLASH@913 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@914 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-monitor.o `test -f 'concurrency/monitor.c' || echo '$(srcdir)/'`concurrency/monitor.c915 916 concurrency/libcfa_d_a-monitor.obj: concurrency/monitor.c917 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-monitor.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-monitor.Tpo -c -o concurrency/libcfa_d_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi`918 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_d_a-monitor.Tpo concurrency/$(DEPDIR)/libcfa_d_a-monitor.Po919 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/monitor.c' object='concurrency/libcfa_d_a-monitor.obj' libtool=no @AMDEPBACKSLASH@920 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@921 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_d_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi`922 923 915 libcfa_d_a-exception.obj: exception.c 924 916 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-exception.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-exception.Tpo -c -o libcfa_d_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi` … … 928 920 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi` 929 921 922 libcfa_d_a-virtual.obj: virtual.c 923 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT libcfa_d_a-virtual.obj -MD -MP -MF $(DEPDIR)/libcfa_d_a-virtual.Tpo -c -o libcfa_d_a-virtual.obj `if test -f 'virtual.c'; then $(CYGPATH_W) 'virtual.c'; else $(CYGPATH_W) '$(srcdir)/virtual.c'; fi` 924 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_d_a-virtual.Tpo $(DEPDIR)/libcfa_d_a-virtual.Po 925 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtual.c' object='libcfa_d_a-virtual.obj' libtool=no @AMDEPBACKSLASH@ 926 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 927 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -c -o libcfa_d_a-virtual.obj `if test -f 'virtual.c'; then $(CYGPATH_W) 'virtual.c'; else $(CYGPATH_W) '$(srcdir)/virtual.c'; fi` 928 930 929 concurrency/libcfa_d_a-alarm.o: concurrency/alarm.c 931 930 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_d_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_d_a-alarm.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_d_a-alarm.Tpo -c -o concurrency/libcfa_d_a-alarm.o `test -f 'concurrency/alarm.c' || echo '$(srcdir)/'`concurrency/alarm.c … … 998 997 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libhdr/libcfa_a-libdebug.obj `if test -f 'libhdr/libdebug.c'; then $(CYGPATH_W) 'libhdr/libdebug.c'; else $(CYGPATH_W) '$(srcdir)/libhdr/libdebug.c'; fi` 999 998 999 libcfa_a-fstream.o: fstream.c 1000 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-fstream.o -MD -MP -MF $(DEPDIR)/libcfa_a-fstream.Tpo -c -o libcfa_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c 1001 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-fstream.Tpo $(DEPDIR)/libcfa_a-fstream.Po 1002 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstream.c' object='libcfa_a-fstream.o' libtool=no @AMDEPBACKSLASH@ 1003 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1004 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c 1005 1006 libcfa_a-fstream.obj: fstream.c 1007 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-fstream.obj -MD -MP -MF $(DEPDIR)/libcfa_a-fstream.Tpo -c -o libcfa_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi` 1008 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-fstream.Tpo $(DEPDIR)/libcfa_a-fstream.Po 1009 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstream.c' object='libcfa_a-fstream.obj' libtool=no @AMDEPBACKSLASH@ 1010 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1011 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi` 1012 1013 libcfa_a-iostream.o: iostream.c 1014 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iostream.o -MD -MP -MF $(DEPDIR)/libcfa_a-iostream.Tpo -c -o libcfa_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c 1015 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iostream.Tpo $(DEPDIR)/libcfa_a-iostream.Po 1016 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iostream.c' object='libcfa_a-iostream.o' libtool=no @AMDEPBACKSLASH@ 1017 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1018 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c 1019 1020 libcfa_a-iostream.obj: iostream.c 1021 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iostream.obj -MD -MP -MF $(DEPDIR)/libcfa_a-iostream.Tpo -c -o libcfa_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi` 1022 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iostream.Tpo $(DEPDIR)/libcfa_a-iostream.Po 1023 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iostream.c' object='libcfa_a-iostream.obj' libtool=no @AMDEPBACKSLASH@ 1024 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1025 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi` 1026 1027 libcfa_a-iterator.o: iterator.c 1028 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iterator.o -MD -MP -MF $(DEPDIR)/libcfa_a-iterator.Tpo -c -o libcfa_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c 1029 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iterator.Tpo $(DEPDIR)/libcfa_a-iterator.Po 1030 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iterator.c' object='libcfa_a-iterator.o' libtool=no @AMDEPBACKSLASH@ 1031 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1032 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c 1033 1034 libcfa_a-iterator.obj: iterator.c 1035 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iterator.obj -MD -MP -MF $(DEPDIR)/libcfa_a-iterator.Tpo -c -o libcfa_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi` 1036 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iterator.Tpo $(DEPDIR)/libcfa_a-iterator.Po 1037 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iterator.c' object='libcfa_a-iterator.obj' libtool=no @AMDEPBACKSLASH@ 1038 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1039 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi` 1040 1041 libcfa_a-limits.o: limits.c 1042 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-limits.o -MD -MP -MF $(DEPDIR)/libcfa_a-limits.Tpo -c -o libcfa_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c 1043 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-limits.Tpo $(DEPDIR)/libcfa_a-limits.Po 1044 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='limits.c' object='libcfa_a-limits.o' libtool=no @AMDEPBACKSLASH@ 1045 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1046 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c 1047 1048 libcfa_a-limits.obj: limits.c 1049 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-limits.obj -MD -MP -MF $(DEPDIR)/libcfa_a-limits.Tpo -c -o libcfa_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi` 1050 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-limits.Tpo $(DEPDIR)/libcfa_a-limits.Po 1051 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='limits.c' object='libcfa_a-limits.obj' libtool=no @AMDEPBACKSLASH@ 1052 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1053 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi` 1054 1055 libcfa_a-rational.o: rational.c 1056 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-rational.o -MD -MP -MF $(DEPDIR)/libcfa_a-rational.Tpo -c -o libcfa_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c 1057 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-rational.Tpo $(DEPDIR)/libcfa_a-rational.Po 1058 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rational.c' object='libcfa_a-rational.o' libtool=no @AMDEPBACKSLASH@ 1059 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1060 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c 1061 1062 libcfa_a-rational.obj: rational.c 1063 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-rational.obj -MD -MP -MF $(DEPDIR)/libcfa_a-rational.Tpo -c -o libcfa_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi` 1064 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-rational.Tpo $(DEPDIR)/libcfa_a-rational.Po 1065 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rational.c' object='libcfa_a-rational.obj' libtool=no @AMDEPBACKSLASH@ 1066 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1067 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi` 1068 1069 libcfa_a-stdlib.o: stdlib.c 1070 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-stdlib.o -MD -MP -MF $(DEPDIR)/libcfa_a-stdlib.Tpo -c -o libcfa_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c 1071 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-stdlib.Tpo $(DEPDIR)/libcfa_a-stdlib.Po 1072 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdlib.c' object='libcfa_a-stdlib.o' libtool=no @AMDEPBACKSLASH@ 1073 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1074 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c 1075 1076 libcfa_a-stdlib.obj: stdlib.c 1077 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-stdlib.obj -MD -MP -MF $(DEPDIR)/libcfa_a-stdlib.Tpo -c -o libcfa_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi` 1078 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-stdlib.Tpo $(DEPDIR)/libcfa_a-stdlib.Po 1079 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdlib.c' object='libcfa_a-stdlib.obj' libtool=no @AMDEPBACKSLASH@ 1080 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1081 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi` 1082 1083 containers/libcfa_a-maybe.o: containers/maybe.c 1084 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-maybe.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-maybe.Tpo -c -o containers/libcfa_a-maybe.o `test -f 'containers/maybe.c' || echo '$(srcdir)/'`containers/maybe.c 1085 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-maybe.Tpo containers/$(DEPDIR)/libcfa_a-maybe.Po 1086 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/maybe.c' object='containers/libcfa_a-maybe.o' libtool=no @AMDEPBACKSLASH@ 1087 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1088 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-maybe.o `test -f 'containers/maybe.c' || echo '$(srcdir)/'`containers/maybe.c 1089 1090 containers/libcfa_a-maybe.obj: containers/maybe.c 1091 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-maybe.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-maybe.Tpo -c -o containers/libcfa_a-maybe.obj `if test -f 'containers/maybe.c'; then $(CYGPATH_W) 'containers/maybe.c'; else $(CYGPATH_W) '$(srcdir)/containers/maybe.c'; fi` 1092 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-maybe.Tpo containers/$(DEPDIR)/libcfa_a-maybe.Po 1093 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/maybe.c' object='containers/libcfa_a-maybe.obj' libtool=no @AMDEPBACKSLASH@ 1094 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1095 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-maybe.obj `if test -f 'containers/maybe.c'; then $(CYGPATH_W) 'containers/maybe.c'; else $(CYGPATH_W) '$(srcdir)/containers/maybe.c'; fi` 1096 1097 containers/libcfa_a-pair.o: containers/pair.c 1098 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-pair.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-pair.Tpo -c -o containers/libcfa_a-pair.o `test -f 'containers/pair.c' || echo '$(srcdir)/'`containers/pair.c 1099 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-pair.Tpo containers/$(DEPDIR)/libcfa_a-pair.Po 1100 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/pair.c' object='containers/libcfa_a-pair.o' libtool=no @AMDEPBACKSLASH@ 1101 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1102 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-pair.o `test -f 'containers/pair.c' || echo '$(srcdir)/'`containers/pair.c 1103 1104 containers/libcfa_a-pair.obj: containers/pair.c 1105 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-pair.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-pair.Tpo -c -o containers/libcfa_a-pair.obj `if test -f 'containers/pair.c'; then $(CYGPATH_W) 'containers/pair.c'; else $(CYGPATH_W) '$(srcdir)/containers/pair.c'; fi` 1106 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-pair.Tpo containers/$(DEPDIR)/libcfa_a-pair.Po 1107 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/pair.c' object='containers/libcfa_a-pair.obj' libtool=no @AMDEPBACKSLASH@ 1108 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1109 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-pair.obj `if test -f 'containers/pair.c'; then $(CYGPATH_W) 'containers/pair.c'; else $(CYGPATH_W) '$(srcdir)/containers/pair.c'; fi` 1110 1111 containers/libcfa_a-result.o: containers/result.c 1112 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-result.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-result.Tpo -c -o containers/libcfa_a-result.o `test -f 'containers/result.c' || echo '$(srcdir)/'`containers/result.c 1113 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-result.Tpo containers/$(DEPDIR)/libcfa_a-result.Po 1114 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/result.c' object='containers/libcfa_a-result.o' libtool=no @AMDEPBACKSLASH@ 1115 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1116 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-result.o `test -f 'containers/result.c' || echo '$(srcdir)/'`containers/result.c 1117 1118 containers/libcfa_a-result.obj: containers/result.c 1119 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-result.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-result.Tpo -c -o containers/libcfa_a-result.obj `if test -f 'containers/result.c'; then $(CYGPATH_W) 'containers/result.c'; else $(CYGPATH_W) '$(srcdir)/containers/result.c'; fi` 1120 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-result.Tpo containers/$(DEPDIR)/libcfa_a-result.Po 1121 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/result.c' object='containers/libcfa_a-result.obj' libtool=no @AMDEPBACKSLASH@ 1122 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1123 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-result.obj `if test -f 'containers/result.c'; then $(CYGPATH_W) 'containers/result.c'; else $(CYGPATH_W) '$(srcdir)/containers/result.c'; fi` 1124 1125 containers/libcfa_a-vector.o: containers/vector.c 1126 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-vector.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-vector.Tpo -c -o containers/libcfa_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c 1127 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-vector.Tpo containers/$(DEPDIR)/libcfa_a-vector.Po 1128 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_a-vector.o' libtool=no @AMDEPBACKSLASH@ 1129 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1130 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c 1131 1132 containers/libcfa_a-vector.obj: containers/vector.c 1133 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-vector.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-vector.Tpo -c -o containers/libcfa_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi` 1134 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-vector.Tpo containers/$(DEPDIR)/libcfa_a-vector.Po 1135 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_a-vector.obj' libtool=no @AMDEPBACKSLASH@ 1136 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1137 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi` 1138 1139 concurrency/libcfa_a-coroutine.o: concurrency/coroutine.c 1140 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-coroutine.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-coroutine.Tpo -c -o concurrency/libcfa_a-coroutine.o `test -f 'concurrency/coroutine.c' || echo '$(srcdir)/'`concurrency/coroutine.c 1141 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-coroutine.Tpo concurrency/$(DEPDIR)/libcfa_a-coroutine.Po 1142 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/coroutine.c' object='concurrency/libcfa_a-coroutine.o' libtool=no @AMDEPBACKSLASH@ 1143 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1144 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-coroutine.o `test -f 'concurrency/coroutine.c' || echo '$(srcdir)/'`concurrency/coroutine.c 1145 1146 concurrency/libcfa_a-coroutine.obj: concurrency/coroutine.c 1147 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-coroutine.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-coroutine.Tpo -c -o concurrency/libcfa_a-coroutine.obj `if test -f 'concurrency/coroutine.c'; then $(CYGPATH_W) 'concurrency/coroutine.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/coroutine.c'; fi` 1148 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-coroutine.Tpo concurrency/$(DEPDIR)/libcfa_a-coroutine.Po 1149 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/coroutine.c' object='concurrency/libcfa_a-coroutine.obj' libtool=no @AMDEPBACKSLASH@ 1150 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1151 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-coroutine.obj `if test -f 'concurrency/coroutine.c'; then $(CYGPATH_W) 'concurrency/coroutine.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/coroutine.c'; fi` 1152 1153 concurrency/libcfa_a-thread.o: concurrency/thread.c 1154 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-thread.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-thread.Tpo -c -o concurrency/libcfa_a-thread.o `test -f 'concurrency/thread.c' || echo '$(srcdir)/'`concurrency/thread.c 1155 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-thread.Tpo concurrency/$(DEPDIR)/libcfa_a-thread.Po 1156 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/thread.c' object='concurrency/libcfa_a-thread.o' libtool=no @AMDEPBACKSLASH@ 1157 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1158 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-thread.o `test -f 'concurrency/thread.c' || echo '$(srcdir)/'`concurrency/thread.c 1159 1160 concurrency/libcfa_a-thread.obj: concurrency/thread.c 1161 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-thread.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-thread.Tpo -c -o concurrency/libcfa_a-thread.obj `if test -f 'concurrency/thread.c'; then $(CYGPATH_W) 'concurrency/thread.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/thread.c'; fi` 1162 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-thread.Tpo concurrency/$(DEPDIR)/libcfa_a-thread.Po 1163 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/thread.c' object='concurrency/libcfa_a-thread.obj' libtool=no @AMDEPBACKSLASH@ 1164 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1165 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-thread.obj `if test -f 'concurrency/thread.c'; then $(CYGPATH_W) 'concurrency/thread.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/thread.c'; fi` 1166 1167 concurrency/libcfa_a-kernel.o: concurrency/kernel.c 1168 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-kernel.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-kernel.Tpo -c -o concurrency/libcfa_a-kernel.o `test -f 'concurrency/kernel.c' || echo '$(srcdir)/'`concurrency/kernel.c 1169 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-kernel.Tpo concurrency/$(DEPDIR)/libcfa_a-kernel.Po 1170 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/kernel.c' object='concurrency/libcfa_a-kernel.o' libtool=no @AMDEPBACKSLASH@ 1171 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1172 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-kernel.o `test -f 'concurrency/kernel.c' || echo '$(srcdir)/'`concurrency/kernel.c 1173 1174 concurrency/libcfa_a-kernel.obj: concurrency/kernel.c 1175 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-kernel.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-kernel.Tpo -c -o concurrency/libcfa_a-kernel.obj `if test -f 'concurrency/kernel.c'; then $(CYGPATH_W) 'concurrency/kernel.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/kernel.c'; fi` 1176 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-kernel.Tpo concurrency/$(DEPDIR)/libcfa_a-kernel.Po 1177 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/kernel.c' object='concurrency/libcfa_a-kernel.obj' libtool=no @AMDEPBACKSLASH@ 1178 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1179 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-kernel.obj `if test -f 'concurrency/kernel.c'; then $(CYGPATH_W) 'concurrency/kernel.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/kernel.c'; fi` 1180 1181 concurrency/libcfa_a-monitor.o: concurrency/monitor.c 1182 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-monitor.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-monitor.Tpo -c -o concurrency/libcfa_a-monitor.o `test -f 'concurrency/monitor.c' || echo '$(srcdir)/'`concurrency/monitor.c 1183 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-monitor.Tpo concurrency/$(DEPDIR)/libcfa_a-monitor.Po 1184 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/monitor.c' object='concurrency/libcfa_a-monitor.o' libtool=no @AMDEPBACKSLASH@ 1185 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1186 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-monitor.o `test -f 'concurrency/monitor.c' || echo '$(srcdir)/'`concurrency/monitor.c 1187 1188 concurrency/libcfa_a-monitor.obj: concurrency/monitor.c 1189 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-monitor.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-monitor.Tpo -c -o concurrency/libcfa_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi` 1190 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-monitor.Tpo concurrency/$(DEPDIR)/libcfa_a-monitor.Po 1191 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/monitor.c' object='concurrency/libcfa_a-monitor.obj' libtool=no @AMDEPBACKSLASH@ 1192 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1193 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi` 1194 1000 1195 libcfa_a-assert.o: assert.c 1001 1196 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-assert.o -MD -MP -MF $(DEPDIR)/libcfa_a-assert.Tpo -c -o libcfa_a-assert.o `test -f 'assert.c' || echo '$(srcdir)/'`assert.c … … 1012 1207 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-assert.obj `if test -f 'assert.c'; then $(CYGPATH_W) 'assert.c'; else $(CYGPATH_W) '$(srcdir)/assert.c'; fi` 1013 1208 1014 libcfa_a-fstream.o: fstream.c1015 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-fstream.o -MD -MP -MF $(DEPDIR)/libcfa_a-fstream.Tpo -c -o libcfa_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c1016 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-fstream.Tpo $(DEPDIR)/libcfa_a-fstream.Po1017 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstream.c' object='libcfa_a-fstream.o' libtool=no @AMDEPBACKSLASH@1018 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1019 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-fstream.o `test -f 'fstream.c' || echo '$(srcdir)/'`fstream.c1020 1021 libcfa_a-fstream.obj: fstream.c1022 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-fstream.obj -MD -MP -MF $(DEPDIR)/libcfa_a-fstream.Tpo -c -o libcfa_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`1023 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-fstream.Tpo $(DEPDIR)/libcfa_a-fstream.Po1024 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fstream.c' object='libcfa_a-fstream.obj' libtool=no @AMDEPBACKSLASH@1025 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1026 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-fstream.obj `if test -f 'fstream.c'; then $(CYGPATH_W) 'fstream.c'; else $(CYGPATH_W) '$(srcdir)/fstream.c'; fi`1027 1028 libcfa_a-iostream.o: iostream.c1029 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iostream.o -MD -MP -MF $(DEPDIR)/libcfa_a-iostream.Tpo -c -o libcfa_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c1030 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iostream.Tpo $(DEPDIR)/libcfa_a-iostream.Po1031 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iostream.c' object='libcfa_a-iostream.o' libtool=no @AMDEPBACKSLASH@1032 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1033 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iostream.o `test -f 'iostream.c' || echo '$(srcdir)/'`iostream.c1034 1035 libcfa_a-iostream.obj: iostream.c1036 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iostream.obj -MD -MP -MF $(DEPDIR)/libcfa_a-iostream.Tpo -c -o libcfa_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`1037 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iostream.Tpo $(DEPDIR)/libcfa_a-iostream.Po1038 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iostream.c' object='libcfa_a-iostream.obj' libtool=no @AMDEPBACKSLASH@1039 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1040 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iostream.obj `if test -f 'iostream.c'; then $(CYGPATH_W) 'iostream.c'; else $(CYGPATH_W) '$(srcdir)/iostream.c'; fi`1041 1042 libcfa_a-iterator.o: iterator.c1043 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iterator.o -MD -MP -MF $(DEPDIR)/libcfa_a-iterator.Tpo -c -o libcfa_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c1044 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iterator.Tpo $(DEPDIR)/libcfa_a-iterator.Po1045 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iterator.c' object='libcfa_a-iterator.o' libtool=no @AMDEPBACKSLASH@1046 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1047 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iterator.o `test -f 'iterator.c' || echo '$(srcdir)/'`iterator.c1048 1049 libcfa_a-iterator.obj: iterator.c1050 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-iterator.obj -MD -MP -MF $(DEPDIR)/libcfa_a-iterator.Tpo -c -o libcfa_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`1051 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-iterator.Tpo $(DEPDIR)/libcfa_a-iterator.Po1052 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iterator.c' object='libcfa_a-iterator.obj' libtool=no @AMDEPBACKSLASH@1053 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1054 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-iterator.obj `if test -f 'iterator.c'; then $(CYGPATH_W) 'iterator.c'; else $(CYGPATH_W) '$(srcdir)/iterator.c'; fi`1055 1056 libcfa_a-limits.o: limits.c1057 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-limits.o -MD -MP -MF $(DEPDIR)/libcfa_a-limits.Tpo -c -o libcfa_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c1058 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-limits.Tpo $(DEPDIR)/libcfa_a-limits.Po1059 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='limits.c' object='libcfa_a-limits.o' libtool=no @AMDEPBACKSLASH@1060 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1061 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-limits.o `test -f 'limits.c' || echo '$(srcdir)/'`limits.c1062 1063 libcfa_a-limits.obj: limits.c1064 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-limits.obj -MD -MP -MF $(DEPDIR)/libcfa_a-limits.Tpo -c -o libcfa_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`1065 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-limits.Tpo $(DEPDIR)/libcfa_a-limits.Po1066 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='limits.c' object='libcfa_a-limits.obj' libtool=no @AMDEPBACKSLASH@1067 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1068 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-limits.obj `if test -f 'limits.c'; then $(CYGPATH_W) 'limits.c'; else $(CYGPATH_W) '$(srcdir)/limits.c'; fi`1069 1070 libcfa_a-math.o: math.c1071 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-math.o -MD -MP -MF $(DEPDIR)/libcfa_a-math.Tpo -c -o libcfa_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c1072 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-math.Tpo $(DEPDIR)/libcfa_a-math.Po1073 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='math.c' object='libcfa_a-math.o' libtool=no @AMDEPBACKSLASH@1074 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1075 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-math.o `test -f 'math.c' || echo '$(srcdir)/'`math.c1076 1077 libcfa_a-math.obj: math.c1078 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-math.obj -MD -MP -MF $(DEPDIR)/libcfa_a-math.Tpo -c -o libcfa_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`1079 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-math.Tpo $(DEPDIR)/libcfa_a-math.Po1080 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='math.c' object='libcfa_a-math.obj' libtool=no @AMDEPBACKSLASH@1081 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1082 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-math.obj `if test -f 'math.c'; then $(CYGPATH_W) 'math.c'; else $(CYGPATH_W) '$(srcdir)/math.c'; fi`1083 1084 libcfa_a-rational.o: rational.c1085 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-rational.o -MD -MP -MF $(DEPDIR)/libcfa_a-rational.Tpo -c -o libcfa_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c1086 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-rational.Tpo $(DEPDIR)/libcfa_a-rational.Po1087 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rational.c' object='libcfa_a-rational.o' libtool=no @AMDEPBACKSLASH@1088 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1089 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-rational.o `test -f 'rational.c' || echo '$(srcdir)/'`rational.c1090 1091 libcfa_a-rational.obj: rational.c1092 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-rational.obj -MD -MP -MF $(DEPDIR)/libcfa_a-rational.Tpo -c -o libcfa_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`1093 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-rational.Tpo $(DEPDIR)/libcfa_a-rational.Po1094 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rational.c' object='libcfa_a-rational.obj' libtool=no @AMDEPBACKSLASH@1095 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1096 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-rational.obj `if test -f 'rational.c'; then $(CYGPATH_W) 'rational.c'; else $(CYGPATH_W) '$(srcdir)/rational.c'; fi`1097 1098 libcfa_a-stdlib.o: stdlib.c1099 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-stdlib.o -MD -MP -MF $(DEPDIR)/libcfa_a-stdlib.Tpo -c -o libcfa_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c1100 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-stdlib.Tpo $(DEPDIR)/libcfa_a-stdlib.Po1101 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdlib.c' object='libcfa_a-stdlib.o' libtool=no @AMDEPBACKSLASH@1102 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1103 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-stdlib.o `test -f 'stdlib.c' || echo '$(srcdir)/'`stdlib.c1104 1105 libcfa_a-stdlib.obj: stdlib.c1106 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-stdlib.obj -MD -MP -MF $(DEPDIR)/libcfa_a-stdlib.Tpo -c -o libcfa_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`1107 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-stdlib.Tpo $(DEPDIR)/libcfa_a-stdlib.Po1108 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stdlib.c' object='libcfa_a-stdlib.obj' libtool=no @AMDEPBACKSLASH@1109 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1110 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-stdlib.obj `if test -f 'stdlib.c'; then $(CYGPATH_W) 'stdlib.c'; else $(CYGPATH_W) '$(srcdir)/stdlib.c'; fi`1111 1112 containers/libcfa_a-maybe.o: containers/maybe.c1113 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-maybe.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-maybe.Tpo -c -o containers/libcfa_a-maybe.o `test -f 'containers/maybe.c' || echo '$(srcdir)/'`containers/maybe.c1114 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-maybe.Tpo containers/$(DEPDIR)/libcfa_a-maybe.Po1115 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/maybe.c' object='containers/libcfa_a-maybe.o' libtool=no @AMDEPBACKSLASH@1116 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1117 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-maybe.o `test -f 'containers/maybe.c' || echo '$(srcdir)/'`containers/maybe.c1118 1119 containers/libcfa_a-maybe.obj: containers/maybe.c1120 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-maybe.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-maybe.Tpo -c -o containers/libcfa_a-maybe.obj `if test -f 'containers/maybe.c'; then $(CYGPATH_W) 'containers/maybe.c'; else $(CYGPATH_W) '$(srcdir)/containers/maybe.c'; fi`1121 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-maybe.Tpo containers/$(DEPDIR)/libcfa_a-maybe.Po1122 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/maybe.c' object='containers/libcfa_a-maybe.obj' libtool=no @AMDEPBACKSLASH@1123 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1124 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-maybe.obj `if test -f 'containers/maybe.c'; then $(CYGPATH_W) 'containers/maybe.c'; else $(CYGPATH_W) '$(srcdir)/containers/maybe.c'; fi`1125 1126 containers/libcfa_a-pair.o: containers/pair.c1127 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-pair.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-pair.Tpo -c -o containers/libcfa_a-pair.o `test -f 'containers/pair.c' || echo '$(srcdir)/'`containers/pair.c1128 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-pair.Tpo containers/$(DEPDIR)/libcfa_a-pair.Po1129 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/pair.c' object='containers/libcfa_a-pair.o' libtool=no @AMDEPBACKSLASH@1130 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1131 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-pair.o `test -f 'containers/pair.c' || echo '$(srcdir)/'`containers/pair.c1132 1133 containers/libcfa_a-pair.obj: containers/pair.c1134 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-pair.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-pair.Tpo -c -o containers/libcfa_a-pair.obj `if test -f 'containers/pair.c'; then $(CYGPATH_W) 'containers/pair.c'; else $(CYGPATH_W) '$(srcdir)/containers/pair.c'; fi`1135 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-pair.Tpo containers/$(DEPDIR)/libcfa_a-pair.Po1136 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/pair.c' object='containers/libcfa_a-pair.obj' libtool=no @AMDEPBACKSLASH@1137 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1138 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-pair.obj `if test -f 'containers/pair.c'; then $(CYGPATH_W) 'containers/pair.c'; else $(CYGPATH_W) '$(srcdir)/containers/pair.c'; fi`1139 1140 containers/libcfa_a-result.o: containers/result.c1141 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-result.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-result.Tpo -c -o containers/libcfa_a-result.o `test -f 'containers/result.c' || echo '$(srcdir)/'`containers/result.c1142 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-result.Tpo containers/$(DEPDIR)/libcfa_a-result.Po1143 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/result.c' object='containers/libcfa_a-result.o' libtool=no @AMDEPBACKSLASH@1144 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1145 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-result.o `test -f 'containers/result.c' || echo '$(srcdir)/'`containers/result.c1146 1147 containers/libcfa_a-result.obj: containers/result.c1148 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-result.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-result.Tpo -c -o containers/libcfa_a-result.obj `if test -f 'containers/result.c'; then $(CYGPATH_W) 'containers/result.c'; else $(CYGPATH_W) '$(srcdir)/containers/result.c'; fi`1149 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-result.Tpo containers/$(DEPDIR)/libcfa_a-result.Po1150 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/result.c' object='containers/libcfa_a-result.obj' libtool=no @AMDEPBACKSLASH@1151 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1152 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-result.obj `if test -f 'containers/result.c'; then $(CYGPATH_W) 'containers/result.c'; else $(CYGPATH_W) '$(srcdir)/containers/result.c'; fi`1153 1154 containers/libcfa_a-vector.o: containers/vector.c1155 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-vector.o -MD -MP -MF containers/$(DEPDIR)/libcfa_a-vector.Tpo -c -o containers/libcfa_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c1156 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-vector.Tpo containers/$(DEPDIR)/libcfa_a-vector.Po1157 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_a-vector.o' libtool=no @AMDEPBACKSLASH@1158 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1159 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-vector.o `test -f 'containers/vector.c' || echo '$(srcdir)/'`containers/vector.c1160 1161 containers/libcfa_a-vector.obj: containers/vector.c1162 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT containers/libcfa_a-vector.obj -MD -MP -MF containers/$(DEPDIR)/libcfa_a-vector.Tpo -c -o containers/libcfa_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`1163 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) containers/$(DEPDIR)/libcfa_a-vector.Tpo containers/$(DEPDIR)/libcfa_a-vector.Po1164 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='containers/vector.c' object='containers/libcfa_a-vector.obj' libtool=no @AMDEPBACKSLASH@1165 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1166 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o containers/libcfa_a-vector.obj `if test -f 'containers/vector.c'; then $(CYGPATH_W) 'containers/vector.c'; else $(CYGPATH_W) '$(srcdir)/containers/vector.c'; fi`1167 1168 concurrency/libcfa_a-coroutine.o: concurrency/coroutine.c1169 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-coroutine.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-coroutine.Tpo -c -o concurrency/libcfa_a-coroutine.o `test -f 'concurrency/coroutine.c' || echo '$(srcdir)/'`concurrency/coroutine.c1170 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-coroutine.Tpo concurrency/$(DEPDIR)/libcfa_a-coroutine.Po1171 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/coroutine.c' object='concurrency/libcfa_a-coroutine.o' libtool=no @AMDEPBACKSLASH@1172 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1173 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-coroutine.o `test -f 'concurrency/coroutine.c' || echo '$(srcdir)/'`concurrency/coroutine.c1174 1175 concurrency/libcfa_a-coroutine.obj: concurrency/coroutine.c1176 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-coroutine.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-coroutine.Tpo -c -o concurrency/libcfa_a-coroutine.obj `if test -f 'concurrency/coroutine.c'; then $(CYGPATH_W) 'concurrency/coroutine.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/coroutine.c'; fi`1177 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-coroutine.Tpo concurrency/$(DEPDIR)/libcfa_a-coroutine.Po1178 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/coroutine.c' object='concurrency/libcfa_a-coroutine.obj' libtool=no @AMDEPBACKSLASH@1179 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1180 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-coroutine.obj `if test -f 'concurrency/coroutine.c'; then $(CYGPATH_W) 'concurrency/coroutine.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/coroutine.c'; fi`1181 1182 concurrency/libcfa_a-thread.o: concurrency/thread.c1183 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-thread.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-thread.Tpo -c -o concurrency/libcfa_a-thread.o `test -f 'concurrency/thread.c' || echo '$(srcdir)/'`concurrency/thread.c1184 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-thread.Tpo concurrency/$(DEPDIR)/libcfa_a-thread.Po1185 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/thread.c' object='concurrency/libcfa_a-thread.o' libtool=no @AMDEPBACKSLASH@1186 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1187 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-thread.o `test -f 'concurrency/thread.c' || echo '$(srcdir)/'`concurrency/thread.c1188 1189 concurrency/libcfa_a-thread.obj: concurrency/thread.c1190 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-thread.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-thread.Tpo -c -o concurrency/libcfa_a-thread.obj `if test -f 'concurrency/thread.c'; then $(CYGPATH_W) 'concurrency/thread.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/thread.c'; fi`1191 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-thread.Tpo concurrency/$(DEPDIR)/libcfa_a-thread.Po1192 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/thread.c' object='concurrency/libcfa_a-thread.obj' libtool=no @AMDEPBACKSLASH@1193 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1194 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-thread.obj `if test -f 'concurrency/thread.c'; then $(CYGPATH_W) 'concurrency/thread.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/thread.c'; fi`1195 1196 concurrency/libcfa_a-kernel.o: concurrency/kernel.c1197 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-kernel.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-kernel.Tpo -c -o concurrency/libcfa_a-kernel.o `test -f 'concurrency/kernel.c' || echo '$(srcdir)/'`concurrency/kernel.c1198 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-kernel.Tpo concurrency/$(DEPDIR)/libcfa_a-kernel.Po1199 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/kernel.c' object='concurrency/libcfa_a-kernel.o' libtool=no @AMDEPBACKSLASH@1200 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1201 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-kernel.o `test -f 'concurrency/kernel.c' || echo '$(srcdir)/'`concurrency/kernel.c1202 1203 concurrency/libcfa_a-kernel.obj: concurrency/kernel.c1204 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-kernel.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-kernel.Tpo -c -o concurrency/libcfa_a-kernel.obj `if test -f 'concurrency/kernel.c'; then $(CYGPATH_W) 'concurrency/kernel.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/kernel.c'; fi`1205 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-kernel.Tpo concurrency/$(DEPDIR)/libcfa_a-kernel.Po1206 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/kernel.c' object='concurrency/libcfa_a-kernel.obj' libtool=no @AMDEPBACKSLASH@1207 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1208 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-kernel.obj `if test -f 'concurrency/kernel.c'; then $(CYGPATH_W) 'concurrency/kernel.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/kernel.c'; fi`1209 1210 concurrency/libcfa_a-monitor.o: concurrency/monitor.c1211 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-monitor.o -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-monitor.Tpo -c -o concurrency/libcfa_a-monitor.o `test -f 'concurrency/monitor.c' || echo '$(srcdir)/'`concurrency/monitor.c1212 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-monitor.Tpo concurrency/$(DEPDIR)/libcfa_a-monitor.Po1213 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/monitor.c' object='concurrency/libcfa_a-monitor.o' libtool=no @AMDEPBACKSLASH@1214 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1215 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-monitor.o `test -f 'concurrency/monitor.c' || echo '$(srcdir)/'`concurrency/monitor.c1216 1217 concurrency/libcfa_a-monitor.obj: concurrency/monitor.c1218 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT concurrency/libcfa_a-monitor.obj -MD -MP -MF concurrency/$(DEPDIR)/libcfa_a-monitor.Tpo -c -o concurrency/libcfa_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi`1219 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) concurrency/$(DEPDIR)/libcfa_a-monitor.Tpo concurrency/$(DEPDIR)/libcfa_a-monitor.Po1220 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='concurrency/monitor.c' object='concurrency/libcfa_a-monitor.obj' libtool=no @AMDEPBACKSLASH@1221 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@1222 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o concurrency/libcfa_a-monitor.obj `if test -f 'concurrency/monitor.c'; then $(CYGPATH_W) 'concurrency/monitor.c'; else $(CYGPATH_W) '$(srcdir)/concurrency/monitor.c'; fi`1223 1224 1209 libcfa_a-exception.obj: exception.c 1225 1210 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-exception.obj -MD -MP -MF $(DEPDIR)/libcfa_a-exception.Tpo -c -o libcfa_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi` … … 1228 1213 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1229 1214 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-exception.obj `if test -f 'exception.c'; then $(CYGPATH_W) 'exception.c'; else $(CYGPATH_W) '$(srcdir)/exception.c'; fi` 1215 1216 libcfa_a-virtual.obj: virtual.c 1217 @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -MT libcfa_a-virtual.obj -MD -MP -MF $(DEPDIR)/libcfa_a-virtual.Tpo -c -o libcfa_a-virtual.obj `if test -f 'virtual.c'; then $(CYGPATH_W) 'virtual.c'; else $(CYGPATH_W) '$(srcdir)/virtual.c'; fi` 1218 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcfa_a-virtual.Tpo $(DEPDIR)/libcfa_a-virtual.Po 1219 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtual.c' object='libcfa_a-virtual.obj' libtool=no @AMDEPBACKSLASH@ 1220 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1221 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcfa_a_CFLAGS) $(CFLAGS) -c -o libcfa_a-virtual.obj `if test -f 'virtual.c'; then $(CYGPATH_W) 'virtual.c'; else $(CYGPATH_W) '$(srcdir)/virtual.c'; fi` 1230 1222 1231 1223 concurrency/libcfa_a-alarm.o: concurrency/alarm.c … … 1521 1513 ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $< 1522 1514 1515 libcfa_a-virtual.o : virtual.c 1516 ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -O2 ${EXTRA_FLAGS} -c -o $@ $< 1517 1523 1518 concurrency/libcfa_d_a-invoke.o : concurrency/invoke.c 1524 1519 ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $< 1525 1520 1526 1521 libcfa_d_a-exception.o : exception.c 1522 ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $< 1523 1524 libcfa_d_a-virtual.o : virtual.c 1527 1525 ${AM_V_CC}@BACKEND_CC@ -DHAVE_CONFIG_H -I. -I../.. -D__CFA_DEBUG__ -O0 ${EXTRA_FLAGS} -c -o $@ $< 1528 1526 -
src/libcfa/assert.c
rfd344aa r9236060 9 9 // Author : Thierry Delisle 10 10 // Created On : Mon Nov 28 12:27:26 2016 11 // Last Modified By : Thierry Delisle12 // Last Modified On : Mon Nov 28 12:27:26 201613 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 20 15:10:26 2017 13 // Update Count : 2 14 14 // 15 15 16 #include "assert"17 #include "stdlib" // abort18 16 #include <assert.h> 17 #include <stdarg.h> // varargs 18 #include <stdio.h> // fprintf 19 19 #include "libhdr/libdebug.h" 20 20 21 21 extern "C" { 22 #include <stdarg.h> // varargs23 #include <stdio.h> // fprintf24 25 22 extern const char * __progname; // global name of running executable (argv[0]) 26 23 … … 47 44 abort(); 48 45 } 49 50 46 } 51 47 -
src/libcfa/concurrency/CtxSwitch-i386.S
rfd344aa r9236060 1 // -*- Mode: Asm -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Tue Dec 6 12:27:26 2016 12 // Last Modified By : Thierry Delisle13 // Last Modified On : Tue Dec 6 12:27:26 201614 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:29:25 2017 13 // Update Count : 1 15 14 // 16 15 // This library is free software; you can redistribute it and/or modify it … … 99 98 100 99 // Local Variables: // 101 // compile-command: "make install" // 100 // mode: c // 101 // tab-width: 4 // 102 102 // End: // -
src/libcfa/concurrency/CtxSwitch-x86_64.S
rfd344aa r9236060 1 // -*- Mode: Asm -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Mon Nov 28 12:27:26 2016 12 // Last Modified By : Thierry Delisle13 // Last Modified On : Mon Nov 28 12:27:26 201614 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:28:11 2017 13 // Update Count : 1 15 14 // 16 15 // This library is free software; you can redistribute it and/or modify it -
src/libcfa/concurrency/alarm.c
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Fri Jun 2 11:31:25 2017 12 // Last Modified By : Thierry Delisle13 // Last Modified On : --14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:35:18 2017 13 // Update Count : 1 15 14 // 16 15 … … 31 30 32 31 //============================================================================================= 32 // time type 33 //============================================================================================= 34 35 #define one_second 1_000_000_000ul 36 #define one_milisecond 1_000_000ul 37 #define one_microsecond 1_000ul 38 #define one_nanosecond 1ul 39 40 __cfa_time_t zero_time = { 0 }; 41 42 void ?{}( __cfa_time_t & this ) { this.val = 0; } 43 void ?{}( __cfa_time_t & this, zero_t zero ) { this.val = 0; } 44 45 void ?{}( itimerval & this, __cfa_time_t * alarm ) { 46 this.it_value.tv_sec = alarm->val / one_second; // seconds 47 this.it_value.tv_usec = max( (alarm->val % one_second) / one_microsecond, 1000 ); // microseconds 48 this.it_interval.tv_sec = 0; 49 this.it_interval.tv_usec = 0; 50 } 51 52 53 void ?{}( __cfa_time_t & this, timespec * curr ) { 54 uint64_t secs = curr->tv_sec; 55 uint64_t nsecs = curr->tv_nsec; 56 this.val = (secs * one_second) + nsecs; 57 } 58 59 __cfa_time_t ?=?( __cfa_time_t & this, zero_t rhs ) { 60 this.val = 0; 61 return this; 62 } 63 64 __cfa_time_t from_s ( uint64_t val ) { __cfa_time_t ret; ret.val = val * 1_000_000_000ul; return ret; } 65 __cfa_time_t from_ms( uint64_t val ) { __cfa_time_t ret; ret.val = val * 1_000_000ul; return ret; } 66 __cfa_time_t from_us( uint64_t val ) { __cfa_time_t ret; ret.val = val * 1_000ul; return ret; } 67 __cfa_time_t from_ns( uint64_t val ) { __cfa_time_t ret; ret.val = val * 1ul; return ret; } 68 69 //============================================================================================= 33 70 // Clock logic 34 71 //============================================================================================= … … 37 74 timespec curr; 38 75 clock_gettime( CLOCK_REALTIME, &curr ); 39 __cfa_time_t curr_time = ((__cfa_time_t)curr.tv_sec * TIMEGRAN) + curr.tv_nsec; 40 // LIB_DEBUG_PRINT_BUFFER_DECL( STDERR_FILENO, "Kernel : current time is %lu\n", curr_time ); 41 return curr_time; 76 return (__cfa_time_t){ &curr }; 42 77 } 43 78 44 79 void __kernel_set_timer( __cfa_time_t alarm ) { 45 LIB_DEBUG_PRINT_BUFFER_DECL( STDERR_FILENO, "Kernel : set timer to %lu\n", (__cfa_time_t)alarm ); 46 itimerval val; 47 val.it_value.tv_sec = alarm / TIMEGRAN; // seconds 48 val.it_value.tv_usec = (alarm % TIMEGRAN) / ( TIMEGRAN / 1_000_000L ); // microseconds 49 val.it_interval.tv_sec = 0; 50 val.it_interval.tv_usec = 0; 80 itimerval val = { &alarm }; 51 81 setitimer( ITIMER_REAL, &val, NULL ); 52 82 } … … 56 86 //============================================================================================= 57 87 58 void ?{}( alarm_node_t & this, thread_desc * thrd, __cfa_time_t alarm = 0, __cfa_time_t period = 0) {88 void ?{}( alarm_node_t & this, thread_desc * thrd, __cfa_time_t alarm = zero_time, __cfa_time_t period = zero_time ) { 59 89 this.thrd = thrd; 60 90 this.alarm = alarm; … … 65 95 } 66 96 67 void ?{}( alarm_node_t & this, processor * proc, __cfa_time_t alarm = 0, __cfa_time_t period = 0) {97 void ?{}( alarm_node_t & this, processor * proc, __cfa_time_t alarm = zero_time, __cfa_time_t period = zero_time ) { 68 98 this.proc = proc; 69 99 this.alarm = alarm; … … 153 183 154 184 void register_self( alarm_node_t * this ) { 185 alarm_list_t * alarms = &event_kernel->alarms; 186 155 187 disable_interrupts(); 156 verify( !systemProcessor->pending_alarm ); 157 lock( &systemProcessor->alarm_lock DEBUG_CTX2 ); 188 lock( &event_kernel->lock DEBUG_CTX2 ); 158 189 { 159 verify( validate( &systemProcessor->alarms ) );160 bool first = ! systemProcessor->alarms.head;161 162 insert( &systemProcessor->alarms, this );163 if( systemProcessor->pending_alarm) {164 tick_preemption();190 verify( validate( alarms ) ); 191 bool first = !alarms->head; 192 193 insert( alarms, this ); 194 if( first ) { 195 __kernel_set_timer( alarms->head->alarm - __kernel_get_time() ); 165 196 } 166 if( first ) { 167 __kernel_set_timer( systemProcessor->alarms.head->alarm - __kernel_get_time() ); 168 } 169 } 170 unlock( &systemProcessor->alarm_lock ); 197 } 198 unlock( &event_kernel->lock ); 171 199 this->set = true; 172 200 enable_interrupts( DEBUG_CTX ); … … 174 202 175 203 void unregister_self( alarm_node_t * this ) { 176 // LIB_DEBUG_PRINT_BUFFER_DECL( STDERR_FILENO, "Kernel : unregister %p start\n", this );177 204 disable_interrupts(); 178 lock( & systemProcessor->alarm_lock DEBUG_CTX2 );205 lock( &event_kernel->lock DEBUG_CTX2 ); 179 206 { 180 verify( validate( & systemProcessor->alarms ) );181 remove( & systemProcessor->alarms, this );182 } 183 unlock( & systemProcessor->alarm_lock );207 verify( validate( &event_kernel->alarms ) ); 208 remove( &event_kernel->alarms, this ); 209 } 210 unlock( &event_kernel->lock ); 184 211 enable_interrupts( DEBUG_CTX ); 185 212 this->set = false; 186 // LIB_DEBUG_PRINT_BUFFER_LOCAL( STDERR_FILENO, "Kernel : unregister %p end\n", this ); 187 } 213 } 214 215 // Local Variables: // 216 // mode: c // 217 // tab-width: 4 // 218 // End: // -
src/libcfa/concurrency/alarm.h
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Fri Jun 2 11:31:25 2017 12 // Last Modified By : Thierry Delisle13 // Last Modified On : --14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:59:27 2017 13 // Update Count : 3 15 14 // 16 15 17 #ifndef ALARM_H 18 #define ALARM_H 16 #pragma once 19 17 20 18 #include <stdbool.h> 19 #include <stdint.h> 21 20 22 #include "assert" 23 24 typedef unsigned long int __cfa_time_t; 21 #include <assert.h> 25 22 26 23 struct thread_desc; 27 24 struct processor; 28 25 26 struct timespec; 27 struct itimerval; 28 29 //============================================================================================= 30 // time type 31 //============================================================================================= 32 33 struct __cfa_time_t { 34 uint64_t val; 35 }; 36 37 // ctors 38 void ?{}( __cfa_time_t & this ); 39 void ?{}( __cfa_time_t & this, zero_t zero ); 40 void ?{}( __cfa_time_t & this, timespec * curr ); 41 void ?{}( itimerval & this, __cfa_time_t * alarm ); 42 43 __cfa_time_t ?=?( __cfa_time_t & this, zero_t rhs ); 44 45 // logical ops 46 static inline bool ?==?( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val == rhs.val; } 47 static inline bool ?!=?( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val != rhs.val; } 48 static inline bool ?>? ( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val > rhs.val; } 49 static inline bool ?<? ( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val < rhs.val; } 50 static inline bool ?>=?( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val >= rhs.val; } 51 static inline bool ?<=?( __cfa_time_t lhs, __cfa_time_t rhs ) { return lhs.val <= rhs.val; } 52 53 static inline bool ?==?( __cfa_time_t lhs, zero_t rhs ) { return lhs.val == rhs; } 54 static inline bool ?!=?( __cfa_time_t lhs, zero_t rhs ) { return lhs.val != rhs; } 55 static inline bool ?>? ( __cfa_time_t lhs, zero_t rhs ) { return lhs.val > rhs; } 56 static inline bool ?<? ( __cfa_time_t lhs, zero_t rhs ) { return lhs.val < rhs; } 57 static inline bool ?>=?( __cfa_time_t lhs, zero_t rhs ) { return lhs.val >= rhs; } 58 static inline bool ?<=?( __cfa_time_t lhs, zero_t rhs ) { return lhs.val <= rhs; } 59 60 // addition/substract 61 static inline __cfa_time_t ?+?( __cfa_time_t lhs, __cfa_time_t rhs ) { 62 __cfa_time_t ret; 63 ret.val = lhs.val + rhs.val; 64 return ret; 65 } 66 67 static inline __cfa_time_t ?-?( __cfa_time_t lhs, __cfa_time_t rhs ) { 68 __cfa_time_t ret; 69 ret.val = lhs.val - rhs.val; 70 return ret; 71 } 72 73 __cfa_time_t from_s ( uint64_t ); 74 __cfa_time_t from_ms( uint64_t ); 75 __cfa_time_t from_us( uint64_t ); 76 __cfa_time_t from_ns( uint64_t ); 77 78 extern __cfa_time_t zero_time; 79 29 80 //============================================================================================= 30 81 // Clock logic 31 82 //============================================================================================= 32 33 #define TIMEGRAN 1_000_000_000L // nanosecond granularity, except for timeval34 83 35 84 __cfa_time_t __kernel_get_time(); … … 56 105 typedef alarm_node_t ** __alarm_it_t; 57 106 58 void ?{}( alarm_node_t & this, thread_desc * thrd, __cfa_time_t alarm = 0, __cfa_time_t period = 0);59 void ?{}( alarm_node_t & this, processor * proc, __cfa_time_t alarm = 0, __cfa_time_t period = 0);107 void ?{}( alarm_node_t & this, thread_desc * thrd, __cfa_time_t alarm = zero_time, __cfa_time_t period = zero_time ); 108 void ?{}( alarm_node_t & this, processor * proc, __cfa_time_t alarm = zero_time, __cfa_time_t period = zero_time ); 60 109 void ^?{}( alarm_node_t & this ); 61 110 … … 76 125 void unregister_self( alarm_node_t * this ); 77 126 78 #endif79 80 127 // Local Variables: // 81 // mode: CFA//128 // mode: c // 82 129 // tab-width: 6 // 83 130 // End: // -
src/libcfa/concurrency/coroutine
rfd344aa r9236060 10 10 // Author : Thierry Delisle 11 11 // Created On : Mon Nov 28 12:27:26 2016 12 // Last Modified By : Thierry Delisle13 // Last Modified On : Mon Nov 28 12:27:26 201614 // Update Count : 012 // Last Modified By : Peter A. Buhr 13 // Last Modified On : Sat Jul 22 09:57:17 2017 14 // Update Count : 2 15 15 // 16 16 17 #ifndef COROUTINES_H 18 #define COROUTINES_H 17 #pragma once 19 18 20 #include "assert"19 #include <assert.h> 21 20 #include "invoke.h" 22 21 … … 63 62 64 63 // Get current coroutine 65 extern volatile thread_local coroutine_desc *this_coroutine;64 extern thread_local coroutine_desc * volatile this_coroutine; 66 65 67 66 // Private wrappers for context switch and stack creation … … 129 128 } 130 129 131 #endif //COROUTINES_H132 133 130 // Local Variables: // 134 131 // mode: c // -
src/libcfa/concurrency/coroutine.c
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Mon Nov 28 12:27:26 2016 12 // Last Modified By : Thierry Delisle13 // Last Modified On : Mon Nov 28 12:27:26 201614 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:34:57 2017 13 // Update Count : 1 15 14 // 16 15 … … 26 25 } 27 26 28 #include "kernel" 29 #include "libhdr.h" 27 #include "kernel_private.h" 30 28 31 29 #define __CFA_INVOKE_PRIVATE__ 32 30 #include "invoke.h" 33 31 34 extern volatile thread_local processor * this_processor;35 32 36 33 //----------------------------------------------------------------------------- -
src/libcfa/concurrency/invoke.c
rfd344aa r9236060 1 // -*- Mode: C -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Tue Jan 17 12:27:26 2016 12 // Last Modified By : Thierry Delisle13 // Last Modified On : --14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:28:33 2017 13 // Update Count : 1 15 14 // 16 15 … … 142 141 #endif 143 142 } 143 144 // Local Variables: // 145 // mode: c // 146 // tab-width: 4 // 147 // End: // -
src/libcfa/concurrency/invoke.h
rfd344aa r9236060 1 // -*- Mode: C -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Tue Jan 17 12:27:26 2016 12 // Last Modified By : Thierry Delisle13 // Last Modified On : --14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:28:56 2017 13 // Update Count : 1 15 14 // 16 15 … … 130 129 } 131 130 #endif 131 132 // Local Variables: // 133 // mode: c // 134 // tab-width: 4 // 135 // End: // -
src/libcfa/concurrency/kernel
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Tue Jan 17 12:27:26 2017 12 // Last Modified By : Thierry Delisle13 // Last Modified On : --14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:58:39 2017 13 // Update Count : 2 15 14 // 16 15 17 #ifndef KERNEL_H 18 #define KERNEL_H 16 #pragma once 19 17 20 18 #include <stdbool.h> … … 28 26 //----------------------------------------------------------------------------- 29 27 // Locks 30 bool try_lock ( spinlock * DEBUG_CTX_PARAM2 ); 31 void lock ( spinlock * DEBUG_CTX_PARAM2 );32 void lock_yield( spinlock * DEBUG_CTX_PARAM2 ); 33 void unlock ( spinlock * ); 28 void lock ( spinlock * DEBUG_CTX_PARAM2 ); // Lock the spinlock, spin if already acquired 29 void lock_yield( spinlock * DEBUG_CTX_PARAM2 ); // Lock the spinlock, yield repeatedly if already acquired 30 bool try_lock ( spinlock * DEBUG_CTX_PARAM2 ); // Lock the spinlock, return false if already acquired 31 void unlock ( spinlock * ); // Unlock the spinlock 34 32 35 33 struct semaphore { … … 48 46 // Cluster 49 47 struct cluster { 50 __thread_queue_t ready_queue; 51 spinlock lock; 48 spinlock ready_queue_lock; // Ready queue locks 49 __thread_queue_t ready_queue; // Ready queue for threads 50 unsigned long long int preemption; // Preemption rate on this cluster 52 51 }; 53 52 … … 76 75 static inline void ^?{}(FinishAction & this) {} 77 76 77 // Processor 78 // Wrapper around kernel threads 78 79 struct processor { 79 struct processorCtx_t * runner; 80 cluster * cltr; 81 pthread_t kernel_thread; 80 // Main state 81 struct processorCtx_t * runner; // Coroutine ctx who does keeps the state of the processor 82 cluster * cltr; // Cluster from which to get threads 83 pthread_t kernel_thread; // Handle to pthreads 82 84 83 semaphore terminated; 84 volatile bool is_terminated; 85 // Termination 86 volatile bool do_terminate; // Set to true to notify the processor should terminate 87 semaphore terminated; // Termination synchronisation 85 88 86 struct FinishAction finish; 89 // RunThread data 90 struct FinishAction finish; // Action to do after a thread is ran 87 91 88 struct alarm_node_t * preemption_alarm; 89 unsigned int preemption; 92 // Preemption data 93 struct alarm_node_t * preemption_alarm; // Node which is added in the discrete event simulaiton 94 bool pending_preemption; // If true, a preemption was triggered in an unsafe region, the processor must preempt as soon as possible 90 95 91 bool pending_preemption; 92 93 char * last_enable; 96 #ifdef __CFA_DEBUG__ 97 char * last_enable; // Last function to enable preemption on this processor 98 #endif 94 99 }; 95 100 … … 98 103 void ^?{}(processor & this); 99 104 100 #endif //KERNEL_H101 102 105 // Local Variables: // 103 // mode: CFA//104 // tab-width: 6//106 // mode: c // 107 // tab-width: 4 // 105 108 // End: // -
src/libcfa/concurrency/kernel.c
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Tue Jan 17 12:27:26 2017 12 // Last Modified By : Thierry Delisle13 // Last Modified On : --14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:33:18 2017 13 // Update Count : 2 15 14 // 16 15 … … 42 41 //----------------------------------------------------------------------------- 43 42 // Kernel storage 44 #define KERNEL_STORAGE(T,X) static char X##Storage[sizeof(T)] 45 46 KERNEL_STORAGE(processorCtx_t, systemProcessorCtx); 47 KERNEL_STORAGE(cluster, systemCluster); 48 KERNEL_STORAGE(system_proc_t, systemProcessor); 49 KERNEL_STORAGE(thread_desc, mainThread); 43 KERNEL_STORAGE(cluster, mainCluster); 44 KERNEL_STORAGE(processor, mainProcessor); 45 KERNEL_STORAGE(processorCtx_t, mainProcessorCtx); 46 KERNEL_STORAGE(thread_desc, mainThread); 50 47 KERNEL_STORAGE(machine_context_t, mainThreadCtx); 51 48 52 cluster * systemCluster;53 system_proc_t * systemProcessor;49 cluster * mainCluster; 50 processor * mainProcessor; 54 51 thread_desc * mainThread; 55 52 … … 57 54 // Global state 58 55 59 volatile thread_local processor * this_processor; 60 volatile thread_local coroutine_desc * this_coroutine; 61 volatile thread_local thread_desc * this_thread; 56 thread_local coroutine_desc * volatile this_coroutine; 57 thread_local thread_desc * volatile this_thread; 58 thread_local processor * volatile this_processor; 59 62 60 volatile thread_local bool preemption_in_progress = 0; 63 61 volatile thread_local unsigned short disable_preempt_count = 1; … … 85 83 86 84 this.limit = (void *)(((intptr_t)this.base) - this.size); 87 this.context = & mainThreadCtxStorage;85 this.context = &storage_mainThreadCtx; 88 86 this.top = this.base; 89 87 } … … 125 123 126 124 void ?{}(processor & this) { 127 this{ systemCluster };125 this{ mainCluster }; 128 126 } 129 127 … … 131 129 this.cltr = cltr; 132 130 (this.terminated){ 0 }; 133 this. is_terminated= false;131 this.do_terminate = false; 134 132 this.preemption_alarm = NULL; 135 this.preemption = default_preemption();136 133 this.pending_preemption = false; 137 134 … … 142 139 this.cltr = cltr; 143 140 (this.terminated){ 0 }; 144 this. is_terminated= false;141 this.do_terminate = false; 145 142 this.preemption_alarm = NULL; 146 this.preemption = default_preemption();147 143 this.pending_preemption = false; 148 144 this.kernel_thread = pthread_self(); 149 145 150 146 this.runner = &runner; 151 LIB_DEBUG_PRINT_SAFE("Kernel : constructing systemprocessor context %p\n", &runner);147 LIB_DEBUG_PRINT_SAFE("Kernel : constructing main processor context %p\n", &runner); 152 148 runner{ &this }; 153 149 } 154 150 155 LIB_DEBUG_DO( bool validate( alarm_list_t * this ); )156 157 void ?{}(system_proc_t & this, cluster * cltr, processorCtx_t & runner) {158 (this.alarms){};159 (this.alarm_lock){};160 this.pending_alarm = false;161 162 (this.proc){ cltr, runner };163 164 verify( validate( &this.alarms ) );165 }166 167 151 void ^?{}(processor & this) { 168 if( ! this. is_terminated) {152 if( ! this.do_terminate ) { 169 153 LIB_DEBUG_PRINT_SAFE("Kernel : core %p signaling termination\n", &this); 170 this. is_terminated= true;154 this.do_terminate = true; 171 155 P( &this.terminated ); 172 156 pthread_join( this.kernel_thread, NULL ); … … 176 160 void ?{}(cluster & this) { 177 161 ( this.ready_queue ){}; 178 ( this.lock ){}; 162 ( this.ready_queue_lock ){}; 163 164 this.preemption = default_preemption(); 179 165 } 180 166 … … 199 185 200 186 thread_desc * readyThread = NULL; 201 for( unsigned int spin_count = 0; ! this-> is_terminated; spin_count++ )187 for( unsigned int spin_count = 0; ! this->do_terminate; spin_count++ ) 202 188 { 203 189 readyThread = nextThread( this->cltr ); … … 343 329 verifyf( thrd->next == NULL, "Expected null got %p", thrd->next ); 344 330 345 lock( &systemProcessor->proc.cltr->lock DEBUG_CTX2 );346 append( & systemProcessor->proc.cltr->ready_queue, thrd );347 unlock( & systemProcessor->proc.cltr->lock );331 lock( &this_processor->cltr->ready_queue_lock DEBUG_CTX2 ); 332 append( &this_processor->cltr->ready_queue, thrd ); 333 unlock( &this_processor->cltr->ready_queue_lock ); 348 334 349 335 verify( disable_preempt_count > 0 ); … … 352 338 thread_desc * nextThread(cluster * this) { 353 339 verify( disable_preempt_count > 0 ); 354 lock( &this-> lock DEBUG_CTX2 );340 lock( &this->ready_queue_lock DEBUG_CTX2 ); 355 341 thread_desc * head = pop_head( &this->ready_queue ); 356 unlock( &this-> lock );342 unlock( &this->ready_queue_lock ); 357 343 verify( disable_preempt_count > 0 ); 358 344 return head; … … 452 438 // Start by initializing the main thread 453 439 // SKULLDUGGERY: the mainThread steals the process main thread 454 // which will then be scheduled by the systemProcessor normally455 mainThread = (thread_desc *)& mainThreadStorage;440 // which will then be scheduled by the mainProcessor normally 441 mainThread = (thread_desc *)&storage_mainThread; 456 442 current_stack_info_t info; 457 443 (*mainThread){ &info }; … … 459 445 LIB_DEBUG_PRINT_SAFE("Kernel : Main thread ready\n"); 460 446 461 // Initialize the systemcluster462 systemCluster = (cluster *)&systemClusterStorage;463 (* systemCluster){};464 465 LIB_DEBUG_PRINT_SAFE("Kernel : Systemcluster ready\n");466 467 // Initialize the system processor and the systemprocessor ctx447 // Initialize the main cluster 448 mainCluster = (cluster *)&storage_mainCluster; 449 (*mainCluster){}; 450 451 LIB_DEBUG_PRINT_SAFE("Kernel : main cluster ready\n"); 452 453 // Initialize the main processor and the main processor ctx 468 454 // (the coroutine that contains the processing control flow) 469 systemProcessor = (system_proc_t *)&systemProcessorStorage; 470 (*systemProcessor){ systemCluster, *(processorCtx_t *)&systemProcessorCtxStorage }; 471 472 // Add the main thread to the ready queue 473 // once resume is called on systemProcessor->runner the mainThread needs to be scheduled like any normal thread 474 ScheduleThread(mainThread); 455 mainProcessor = (processor *)&storage_mainProcessor; 456 (*mainProcessor){ mainCluster, *(processorCtx_t *)&storage_mainProcessorCtx }; 475 457 476 458 //initialize the global state variables 477 this_processor = &systemProcessor->proc;459 this_processor = mainProcessor; 478 460 this_thread = mainThread; 479 461 this_coroutine = &mainThread->cor; 480 disable_preempt_count = 1;481 462 482 463 // Enable preemption 483 464 kernel_start_preemption(); 484 465 485 // SKULLDUGGERY: Force a context switch to the system processor to set the main thread's context to the current UNIX 466 // Add the main thread to the ready queue 467 // once resume is called on mainProcessor->runner the mainThread needs to be scheduled like any normal thread 468 ScheduleThread(mainThread); 469 470 // SKULLDUGGERY: Force a context switch to the main processor to set the main thread's context to the current UNIX 486 471 // context. Hence, the main thread does not begin through CtxInvokeThread, like all other threads. The trick here is that 487 472 // mainThread is on the ready queue when this call is made. 488 resume( * systemProcessor->proc.runner );473 resume( *mainProcessor->runner ); 489 474 490 475 … … 501 486 disable_interrupts(); 502 487 503 // SKULLDUGGERY: Notify the systemProcessor it needs to terminates.488 // SKULLDUGGERY: Notify the mainProcessor it needs to terminates. 504 489 // When its coroutine terminates, it return control to the mainThread 505 490 // which is currently here 506 systemProcessor->proc.is_terminated= true;491 mainProcessor->do_terminate = true; 507 492 suspend(); 508 493 … … 512 497 kernel_stop_preemption(); 513 498 514 // Destroy the systemprocessor and its context in reverse order of construction499 // Destroy the main processor and its context in reverse order of construction 515 500 // These were manually constructed so we need manually destroy them 516 ^(* systemProcessor->proc.runner){};517 ^( systemProcessor){};501 ^(*mainProcessor->runner){}; 502 ^(mainProcessor){}; 518 503 519 504 // Final step, destroy the main thread since it is no longer needed … … 699 684 return top; 700 685 } 686 701 687 // Local Variables: // 702 688 // mode: c // -
src/libcfa/concurrency/kernel_private.h
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Mon Feb 13 12:27:26 2017 12 // Last Modified By : Thierry Delisle13 // Last Modified On : --14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:58:09 2017 13 // Update Count : 2 15 14 // 16 15 17 #ifndef KERNEL_PRIVATE_H 18 #define KERNEL_PRIVATE_H 16 #pragma once 19 17 20 18 #include "libhdr.h" … … 31 29 extern "C" { 32 30 void disable_interrupts(); 33 void enable_interrupts_no RF();31 void enable_interrupts_noPoll(); 34 32 void enable_interrupts( DEBUG_CTX_PARAM ); 35 33 } … … 45 43 thread_desc * nextThread(cluster * this); 46 44 45 //Block current thread and release/wake-up the following resources 47 46 void BlockInternal(void); 48 47 void BlockInternal(spinlock * lock); … … 65 64 void spin(processor * this, unsigned int * spin_count); 66 65 67 struct system_proc_t { 68 processor proc; 69 66 struct event_kernel_t { 70 67 alarm_list_t alarms; 71 spinlock alarm_lock; 72 73 bool pending_alarm; 68 spinlock lock; 74 69 }; 75 70 76 extern cluster * systemCluster; 77 extern system_proc_t * systemProcessor; 78 extern volatile thread_local processor * this_processor; 79 extern volatile thread_local coroutine_desc * this_coroutine; 80 extern volatile thread_local thread_desc * this_thread; 71 extern event_kernel_t * event_kernel; 72 73 extern thread_local coroutine_desc * volatile this_coroutine; 74 extern thread_local thread_desc * volatile this_thread; 75 extern thread_local processor * volatile this_processor; 76 81 77 extern volatile thread_local bool preemption_in_progress; 82 78 extern volatile thread_local unsigned short disable_preempt_count; … … 91 87 extern void ThreadCtxSwitch(coroutine_desc * src, coroutine_desc * dst); 92 88 93 #endif //KERNEL_PRIVATE_H 89 //----------------------------------------------------------------------------- 90 // Utils 91 #define KERNEL_STORAGE(T,X) static char storage_##X[sizeof(T)] 94 92 95 93 // Local Variables: // -
src/libcfa/concurrency/monitor
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Thd Feb 23 12:27:26 2017 12 // Last Modified By : Thierry Delisle13 // Last Modified On : --14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:59:01 2017 13 // Update Count : 3 15 14 // 16 15 17 #ifndef MONITOR_H 18 #define MONITOR_H 16 #pragma once 19 17 20 18 #include <stddef.h> 21 19 22 #include "assert"20 #include <assert.h> 23 21 #include "invoke.h" 24 22 #include "stdlib" … … 99 97 void __accept_internal( unsigned short count, __acceptable_t * acceptables, void (*func)(void) ); 100 98 101 #endif //MONITOR_H 99 // Local Variables: // 100 // mode: c // 101 // tab-width: 4 // 102 // End: // -
src/libcfa/concurrency/monitor.c
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Thd Feb 23 12:27:26 2017 12 // Last Modified By : Thierry Delisle13 // Last Modified On : --14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jul 31 14:59:05 2017 13 // Update Count : 3 15 14 // 16 15 … … 485 484 if( !this->monitors ) { 486 485 // LIB_DEBUG_PRINT_SAFE("Branding\n"); 487 assertf( thrd->current_monitors != NULL, "No current monitor to brand condition ", thrd->current_monitors );486 assertf( thrd->current_monitors != NULL, "No current monitor to brand condition %p", thrd->current_monitors ); 488 487 this->monitor_count = thrd->current_monitor_count; 489 488 … … 528 527 return head; 529 528 } 529 530 // Local Variables: // 531 // mode: c // 532 // tab-width: 4 // 533 // End: // -
src/libcfa/concurrency/preemption.c
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Mon Jun 5 14:20:42 2017 12 // Last Modified By : Thierry Delisle13 // Last Modified On : --14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:36:05 2017 13 // Update Count : 2 15 14 // 16 15 … … 34 33 #endif 35 34 35 //TODO move to defaults 36 36 #define __CFA_DEFAULT_PREEMPTION__ 10000 37 37 38 //TODO move to defaults 38 39 __attribute__((weak)) unsigned int default_preemption() { 39 40 return __CFA_DEFAULT_PREEMPTION__; 40 41 } 41 42 43 // Short hands for signal context information 42 44 #define __CFA_SIGCXT__ ucontext_t * 43 45 #define __CFA_SIGPARMS__ __attribute__((unused)) int sig, __attribute__((unused)) siginfo_t *sfp, __attribute__((unused)) __CFA_SIGCXT__ cxt 44 46 47 // FwdDeclarations : timeout handlers 45 48 static void preempt( processor * this ); 46 49 static void timeout( thread_desc * this ); 47 50 51 // FwdDeclarations : Signal handlers 48 52 void sigHandler_ctxSwitch( __CFA_SIGPARMS__ ); 49 void sigHandler_alarm ( __CFA_SIGPARMS__ );50 53 void sigHandler_segv ( __CFA_SIGPARMS__ ); 51 54 void sigHandler_abort ( __CFA_SIGPARMS__ ); 52 55 56 // FwdDeclarations : sigaction wrapper 53 57 static void __kernel_sigaction( int sig, void (*handler)(__CFA_SIGPARMS__), int flags ); 54 LIB_DEBUG_DO( bool validate( alarm_list_t * this ); ) 55 58 59 // FwdDeclarations : alarm thread main 60 void * alarm_loop( __attribute__((unused)) void * args ); 61 62 // Machine specific register name 56 63 #ifdef __x86_64__ 57 64 #define CFA_REG_IP REG_RIP … … 60 67 #endif 61 68 69 KERNEL_STORAGE(event_kernel_t, event_kernel); // private storage for event kernel 70 event_kernel_t * event_kernel; // kernel public handle to even kernel 71 static pthread_t alarm_thread; // pthread handle to alarm thread 72 73 void ?{}(event_kernel_t & this) { 74 (this.alarms){}; 75 (this.lock){}; 76 } 62 77 63 78 //============================================================================================= … … 65 80 //============================================================================================= 66 81 82 // Get next expired node 83 static inline alarm_node_t * get_expired( alarm_list_t * alarms, __cfa_time_t currtime ) { 84 if( !alarms->head ) return NULL; // If no alarms return null 85 if( alarms->head->alarm >= currtime ) return NULL; // If alarms head not expired return null 86 return pop(alarms); // Otherwise just pop head 87 } 88 89 // Tick one frame of the Discrete Event Simulation for alarms 67 90 void tick_preemption() { 68 // LIB_DEBUG_PRINT_BUFFER_DECL( STDERR_FILENO, "Ticking preemption\n" );69 70 alarm_list_t * alarms = &systemProcessor->alarms;71 __cfa_time_t currtime = __kernel_get_time(); 72 while( alarms->head && alarms->head->alarm < currtime ) {73 alarm_node_t * node = pop(alarms);74 // LIB_DEBUG_PRINT_BUFFER_LOCAL( STDERR_FILENO, "Ticking %p\n", node ); 75 91 alarm_node_t * node = NULL; // Used in the while loop but cannot be declared in the while condition 92 alarm_list_t * alarms = &event_kernel->alarms; // Local copy for ease of reading 93 __cfa_time_t currtime = __kernel_get_time(); // Check current time once so we everything "happens at once" 94 95 //Loop throught every thing expired 96 while( node = get_expired( alarms, currtime ) ) { 97 98 // Check if this is a kernel 76 99 if( node->kernel_alarm ) { 77 100 preempt( node->proc ); … … 81 104 } 82 105 83 verify( validate( alarms ) );84 85 if( node->period > 0 ) {86 node->alarm = currtime + node->period;87 insert( alarms, node ); 106 // Check if this is a periodic alarm 107 __cfa_time_t period = node->period; 108 if( period > 0 ) { 109 node->alarm = currtime + period; // Alarm is periodic, add currtime to it (used cached current time) 110 insert( alarms, node ); // Reinsert the node for the next time it triggers 88 111 } 89 112 else { 90 node->set = false; 91 } 92 } 93 94 if( alarms->head ) { 95 __kernel_set_timer( alarms->head->alarm - currtime ); 96 } 97 98 verify( validate( alarms ) ); 99 // LIB_DEBUG_PRINT_BUFFER_LOCAL( STDERR_FILENO, "Ticking preemption done\n" ); 100 } 101 113 node->set = false; // Node is one-shot, just mark it as not pending 114 } 115 } 116 117 // If there are still alarms pending, reset the timer 118 if( alarms->head ) { __kernel_set_timer( alarms->head->alarm - currtime ); } 119 } 120 121 // Update the preemption of a processor and notify interested parties 102 122 void update_preemption( processor * this, __cfa_time_t duration ) { 103 LIB_DEBUG_PRINT_BUFFER_DECL( STDERR_FILENO, "Processor : %p updating preemption to %lu\n", this, duration );104 105 123 alarm_node_t * alarm = this->preemption_alarm; 106 duration *= 1000;107 124 108 125 // Alarms need to be enabled … … 134 151 135 152 extern "C" { 153 // Disable interrupts by incrementing the counter 136 154 void disable_interrupts() { 137 155 __attribute__((unused)) unsigned short new_val = __atomic_add_fetch_2( &disable_preempt_count, 1, __ATOMIC_SEQ_CST ); 138 verify( new_val < (unsigned short)65_000 ); 139 verify( new_val != (unsigned short) 0 ); 140 } 141 142 void enable_interrupts_noRF() { 143 __attribute__((unused)) unsigned short prev = __atomic_fetch_add_2( &disable_preempt_count, -1, __ATOMIC_SEQ_CST ); 144 verify( prev != (unsigned short) 0 ); 145 } 146 156 verify( new_val < 65_000u ); // If this triggers someone is disabling interrupts without enabling them 157 } 158 159 // Enable interrupts by decrementing the counter 160 // If counter reaches 0, execute any pending CtxSwitch 147 161 void enable_interrupts( DEBUG_CTX_PARAM ) { 148 processor * proc = this_processor; 149 thread_desc * thrd = this_thread; 162 processor * proc = this_processor; // Cache the processor now since interrupts can start happening after the atomic add 163 thread_desc * thrd = this_thread; // Cache the thread now since interrupts can start happening after the atomic add 164 150 165 unsigned short prev = __atomic_fetch_add_2( &disable_preempt_count, -1, __ATOMIC_SEQ_CST ); 151 verify( prev != (unsigned short) 0 ); 166 verify( prev != 0u ); // If this triggers someone is enabled already enabled interruptsverify( prev != 0u ); 167 168 // Check if we need to prempt the thread because an interrupt was missed 152 169 if( prev == 1 && proc->pending_preemption ) { 153 170 proc->pending_preemption = false; … … 155 172 } 156 173 174 // For debugging purposes : keep track of the last person to enable the interrupts 157 175 LIB_DEBUG_DO( proc->last_enable = caller; ) 158 176 } 159 } 160 177 178 // Disable interrupts by incrementint the counter 179 // Don't execute any pending CtxSwitch even if counter reaches 0 180 void enable_interrupts_noPoll() { 181 __attribute__((unused)) unsigned short prev = __atomic_fetch_add_2( &disable_preempt_count, -1, __ATOMIC_SEQ_CST ); 182 verify( prev != 0u ); // If this triggers someone is enabled already enabled interrupts 183 } 184 } 185 186 // sigprocmask wrapper : unblock a single signal 161 187 static inline void signal_unblock( int sig ) { 162 188 sigset_t mask; … … 169 195 } 170 196 197 // sigprocmask wrapper : block a single signal 171 198 static inline void signal_block( int sig ) { 172 199 sigset_t mask; … … 179 206 } 180 207 181 static inline bool preemption_ready() { 182 return disable_preempt_count == 0 && !preemption_in_progress; 183 } 184 185 static inline void defer_ctxSwitch() { 186 this_processor->pending_preemption = true; 187 } 188 189 static inline void defer_alarm() { 190 systemProcessor->pending_alarm = true; 191 } 192 208 // kill wrapper : signal a processor 193 209 static void preempt( processor * this ) { 194 210 pthread_kill( this->kernel_thread, SIGUSR1 ); 195 211 } 196 212 213 // reserved for future use 197 214 static void timeout( thread_desc * this ) { 198 215 //TODO : implement waking threads 199 216 } 200 217 218 219 // Check if a CtxSwitch signal handler shoud defer 220 // If true : preemption is safe 221 // If false : preemption is unsafe and marked as pending 222 static inline bool preemption_ready() { 223 bool ready = disable_preempt_count == 0 && !preemption_in_progress; // Check if preemption is safe 224 this_processor->pending_preemption = !ready; // Adjust the pending flag accordingly 225 return ready; 226 } 227 201 228 //============================================================================================= 202 229 // Kernel Signal Startup/Shutdown logic 203 230 //============================================================================================= 204 231 205 static pthread_t alarm_thread; 206 void * alarm_loop( __attribute__((unused)) void * args ); 207 232 // Startup routine to activate preemption 233 // Called from kernel_startup 208 234 void kernel_start_preemption() { 209 235 LIB_DEBUG_PRINT_SAFE("Kernel : Starting preemption\n"); 210 __kernel_sigaction( SIGUSR1, sigHandler_ctxSwitch, SA_SIGINFO ); 211 // __kernel_sigaction( SIGSEGV, sigHandler_segv , SA_SIGINFO ); 212 // __kernel_sigaction( SIGBUS , sigHandler_segv , SA_SIGINFO ); 236 237 // Start with preemption disabled until ready 238 disable_preempt_count = 1; 239 240 // Initialize the event kernel 241 event_kernel = (event_kernel_t *)&storage_event_kernel; 242 (*event_kernel){}; 243 244 // Setup proper signal handlers 245 __kernel_sigaction( SIGUSR1, sigHandler_ctxSwitch, SA_SIGINFO ); // CtxSwitch handler 246 // __kernel_sigaction( SIGSEGV, sigHandler_segv , SA_SIGINFO ); // Failure handler 247 // __kernel_sigaction( SIGBUS , sigHandler_segv , SA_SIGINFO ); // Failure handler 213 248 214 249 signal_block( SIGALRM ); … … 217 252 } 218 253 254 // Shutdown routine to deactivate preemption 255 // Called from kernel_shutdown 219 256 void kernel_stop_preemption() { 220 257 LIB_DEBUG_PRINT_SAFE("Kernel : Preemption stopping\n"); 221 258 259 // Block all signals since we are already shutting down 222 260 sigset_t mask; 223 261 sigfillset( &mask ); 224 262 sigprocmask( SIG_BLOCK, &mask, NULL ); 225 263 264 // Notify the alarm thread of the shutdown 226 265 sigval val = { 1 }; 227 266 pthread_sigqueue( alarm_thread, SIGALRM, val ); 267 268 // Wait for the preemption thread to finish 228 269 pthread_join( alarm_thread, NULL ); 270 271 // Preemption is now fully stopped 272 229 273 LIB_DEBUG_PRINT_SAFE("Kernel : Preemption stopped\n"); 230 274 } 231 275 276 // Raii ctor/dtor for the preemption_scope 277 // Used by thread to control when they want to receive preemption signals 232 278 void ?{}( preemption_scope & this, processor * proc ) { 233 (this.alarm){ proc };279 (this.alarm){ proc, zero_time, zero_time }; 234 280 this.proc = proc; 235 281 this.proc->preemption_alarm = &this.alarm; 236 update_preemption( this.proc, this.proc->preemption ); 282 283 update_preemption( this.proc, from_us(this.proc->cltr->preemption) ); 237 284 } 238 285 … … 240 287 disable_interrupts(); 241 288 242 update_preemption( this.proc, 0);289 update_preemption( this.proc, zero_time ); 243 290 } 244 291 … … 247 294 //============================================================================================= 248 295 296 // Context switch signal handler 297 // Receives SIGUSR1 signal and causes the current thread to yield 249 298 void sigHandler_ctxSwitch( __CFA_SIGPARMS__ ) { 250 299 LIB_DEBUG_DO( last_interrupt = (void *)(cxt->uc_mcontext.gregs[CFA_REG_IP]); ) 251 if( preemption_ready() ) { 252 preemption_in_progress = true; 253 signal_unblock( SIGUSR1 ); 254 this_processor->pending_preemption = false; 255 preemption_in_progress = false; 256 BlockInternal( (thread_desc*)this_thread ); 257 } 258 else { 259 defer_ctxSwitch(); 260 } 261 } 262 300 301 // Check if it is safe to preempt here 302 if( !preemption_ready() ) { return; } 303 304 preemption_in_progress = true; // Sync flag : prevent recursive calls to the signal handler 305 signal_unblock( SIGUSR1 ); // We are about to CtxSwitch out of the signal handler, let other handlers in 306 preemption_in_progress = false; // Clear the in progress flag 307 308 // Preemption can occur here 309 310 BlockInternal( (thread_desc*)this_thread ); // Do the actual CtxSwitch 311 } 312 313 // Main of the alarm thread 314 // Waits on SIGALRM and send SIGUSR1 to whom ever needs it 263 315 void * alarm_loop( __attribute__((unused)) void * args ) { 316 // Block sigalrms to control when they arrive 264 317 sigset_t mask; 265 318 sigemptyset( &mask ); … … 270 323 } 271 324 325 // Main loop 272 326 while( true ) { 327 // Wait for a sigalrm 273 328 siginfo_t info; 274 329 int sig = sigwaitinfo( &mask, &info ); 275 if( sig < 0 ) { 276 abortf( "internal error, sigwait" ); 277 } 278 else if( sig == SIGALRM ) 330 331 // If another signal arrived something went wrong 332 assertf(sig == SIGALRM, "Kernel Internal Error, sigwait: Unexpected signal %d (%d : %d)\n", sig, info.si_code, info.si_value.sival_int); 333 334 LIB_DEBUG_PRINT_SAFE("Kernel : Caught alarm from %d with %d\n", info.si_code, info.si_value.sival_int ); 335 // Switch on the code (a.k.a. the sender) to 336 switch( info.si_code ) 279 337 { 280 LIB_DEBUG_PRINT_SAFE("Kernel : Caught signal %d (%d)\n", sig, info.si_value.sival_int ); 281 if( info.si_value.sival_int == 0 ) 282 { 283 LIB_DEBUG_PRINT_SAFE("Kernel : Preemption thread tick\n"); 284 lock( &systemProcessor->alarm_lock DEBUG_CTX2 ); 285 tick_preemption(); 286 unlock( &systemProcessor->alarm_lock ); 287 } 288 else if( info.si_value.sival_int == 1 ) 289 { 290 break; 291 } 292 } 293 else 294 { 295 LIB_DEBUG_PRINT_SAFE("Kernel : Unexpected signal %d (%d)\n", sig, info.si_value.sival_int); 296 } 297 } 298 338 // Timers can apparently be marked as sent for the kernel 339 // In either case, tick preemption 340 case SI_TIMER: 341 case SI_KERNEL: 342 LIB_DEBUG_PRINT_SAFE("Kernel : Preemption thread tick\n"); 343 lock( &event_kernel->lock DEBUG_CTX2 ); 344 tick_preemption(); 345 unlock( &event_kernel->lock ); 346 break; 347 // Signal was not sent by the kernel but by an other thread 348 case SI_QUEUE: 349 // For now, other thread only signal the alarm thread to shut it down 350 // If this needs to change use info.si_value and handle the case here 351 goto EXIT; 352 } 353 } 354 355 EXIT: 299 356 LIB_DEBUG_PRINT_SAFE("Kernel : Preemption thread stopping\n"); 300 357 return NULL; 301 358 } 302 359 360 // Sigaction wrapper : register an signal handler 303 361 static void __kernel_sigaction( int sig, void (*handler)(__CFA_SIGPARMS__), int flags ) { 304 362 struct sigaction act; … … 316 374 } 317 375 318 typedef void (*sa_handler_t)(int); 319 376 // Sigaction wrapper : restore default handler 320 377 static void __kernel_sigdefault( int sig ) { 321 378 struct sigaction act; 322 379 323 //act.sa_handler = SIG_DFL;380 act.sa_handler = SIG_DFL; 324 381 act.sa_flags = 0; 325 382 sigemptyset( &act.sa_mask ); … … 429 486 // raise( SIGABRT ); 430 487 // } 488 489 // Local Variables: // 490 // mode: c // 491 // tab-width: 4 // 492 // End: // -
src/libcfa/concurrency/preemption.h
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Mon Jun 5 14:20:42 2017 12 // Last Modified By : Thierry Delisle13 // Last Modified On : --14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:34:25 2017 13 // Update Count : 1 15 14 // 16 15 17 #ifndef PREEMPTION_H 18 #define PREEMPTION_H 16 #pragma once 19 17 20 18 #include "alarm.h" … … 35 33 void ^?{}( preemption_scope & this ); 36 34 37 #endif //PREEMPTION_H 35 // Local Variables: // 36 // mode: c // 37 // tab-width: 4 // 38 // End: // -
src/libcfa/concurrency/thread
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Tue Jan 17 12:27:26 2017 12 // Last Modified By : Thierry Delisle13 // Last Modified On : --14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:59:40 2017 13 // Update Count : 3 15 14 // 16 15 17 #ifndef THREADS_H 18 #define THREADS_H 16 #pragma once 19 17 20 #include "assert"18 #include <assert.h> 21 19 #include "invoke.h" 22 20 … … 54 52 } 55 53 56 extern volatile thread_local thread_desc *this_thread;54 extern thread_local thread_desc * volatile this_thread; 57 55 58 56 forall( dtype T | is_thread(T) ) … … 84 82 void yield( unsigned times ); 85 83 86 #endif //THREADS_H87 88 84 // Local Variables: // 89 85 // mode: c // -
src/libcfa/concurrency/thread.c
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Tue Jan 17 12:27:26 2017 12 // Last Modified By : Thierry Delisle13 // Last Modified On : --14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:34:46 2017 13 // Update Count : 1 15 14 // 16 15 … … 87 86 88 87 void yield( void ) { 89 BlockInternal( (thread_desc *)this_thread );88 BlockInternal( this_thread ); 90 89 } 91 90 -
src/libcfa/containers/maybe
rfd344aa r9236060 9 9 // Author : Andrew Beach 10 10 // Created On : Wed May 24 14:43:00 2017 11 // Last Modified By : Andrew Beach12 // Last Modified On : Fri Jun 16 15:42:00201713 // Update Count : 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 10:00:52 2017 13 // Update Count : 4 14 14 // 15 15 16 17 #ifndef MAYBE_H 18 #define MAYBE_H 16 #pragma once 19 17 20 18 #include <stdbool.h> … … 66 64 void set_none(maybe(T) * this); 67 65 68 #endif // MAYBE_H 66 // Local Variables: // 67 // mode: c // 68 // tab-width: 4 // 69 // End: // -
src/libcfa/containers/maybe.c
rfd344aa r9236060 9 9 // Author : Andrew Beach 10 10 // Created On : Wed May 24 15:40:00 2017 11 // Last Modified By : Andrew Beach12 // Last Modified On : Th r May 25 15:24:00 201713 // Update Count : 111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 20 15:23:50 2017 13 // Update Count : 2 14 14 // 15 15 16 16 #include <containers/maybe> 17 #include <assert >17 #include <assert.h> 18 18 19 19 -
src/libcfa/containers/pair
rfd344aa r9236060 9 9 // Author : Aaron Moss 10 10 // Created On : Wed Apr 12 15:32:00 2017 11 // Last Modified By : Aaron Moss12 // Last Modified On : Wed Apr 12 15:32:00201713 // Update Count : 111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:59:53 2017 13 // Update Count : 2 14 14 // 15 15 16 #ifndef PAIR_H 17 #define PAIR_H 16 #pragma once 18 17 19 18 forall(otype R, otype S) struct pair { … … 44 43 int ?>=?(pair(R, S) p, pair(R, S) q); 45 44 46 #endif // PAIR_H47 48 45 // Local Variables: // 49 46 // mode: c // -
src/libcfa/containers/result
rfd344aa r9236060 9 9 // Author : Andrew Beach 10 10 // Created On : Wed May 24 14:45:00 2017 11 // Last Modified By : Andrew Beach12 // Last Modified On : Fri Jun 16 15:41:00201713 // Update Count : 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 10:00:44 2017 13 // Update Count : 3 14 14 // 15 15 16 17 #ifndef RESULT_H 18 #define RESULT_H 16 #pragma once 19 17 20 18 #include <stdbool.h> … … 78 76 void set_error(result(T, E) * this, E error); 79 77 80 #endif // RESULT_H 78 // Local Variables: // 79 // mode: c // 80 // tab-width: 4 // 81 // End: // -
src/libcfa/containers/result.c
rfd344aa r9236060 9 9 // Author : Andrew Beach 10 10 // Created On : Wed May 24 15:40:00 2017 11 // Last Modified By : Andrew Beach12 // Last Modified On : Th r May 25 15:27:00201713 // Update Count : 111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 20 15:23:58 2017 13 // Update Count : 2 14 14 // 15 15 16 16 #include <containers/result> 17 #include <assert >17 #include <assert.h> 18 18 19 19 -
src/libcfa/containers/vector
rfd344aa r9236060 10 10 // Created On : Tue Jul 5 18:00:07 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 5 18:01:35 201613 // Update Count : 212 // Last Modified On : Sat Jul 22 10:01:18 2017 13 // Update Count : 3 14 14 // 15 15 16 #ifndef VECTOR_H 17 #define VECTOR_H 16 #pragma once 18 17 19 18 extern "C" { … … 166 165 // } 167 166 168 #endif // VECTOR_H169 170 167 // Local Variables: // 171 168 // mode: c // -
src/libcfa/exception.c
rfd344aa r9236060 10 10 // Created On : Mon Jun 26 15:13:00 2017 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Tus Jul 11 16:36:00 201713 // Update Count : 112 // Last Modified On : Fri Aug 4 15:20:00 2017 13 // Update Count : 6 14 14 // 15 16 #include <stddef.h> // for size_t 15 17 16 18 #include "exception.h" … … 22 24 #include <unwind.h> 23 25 26 // FIX ME: temporary hack to keep ARM build working 27 #ifndef _URC_FATAL_PHASE1_ERROR 28 #define _URC_FATAL_PHASE1_ERROR 2 29 #endif // ! _URC_FATAL_PHASE1_ERROR 30 #ifndef _URC_FATAL_PHASE2_ERROR 31 #define _URC_FATAL_PHASE2_ERROR 2 32 #endif // ! _URC_FATAL_PHASE2_ERROR 33 24 34 #include "lsda.h" 25 35 36 37 // Base exception vtable is abstract, you should not have base exceptions. 38 struct __cfaehm__base_exception_t_vtable 39 ___cfaehm__base_exception_t_vtable_instance = { 40 .parent = NULL, 41 .size = 0, 42 .copy = NULL, 43 .free = NULL, 44 .msg = NULL 45 }; 46 47 26 48 // Temperary global exception context. Does not work with concurency. 27 struct shared_stack_t {49 struct exception_context_t { 28 50 struct __cfaehm__try_resume_node * top_resume; 29 51 struct __cfaehm__try_resume_node * current_resume; 30 52 31 exception current_exception;53 exception * current_exception; 32 54 int current_handler_index; 33 55 } shared_stack = {NULL, NULL, 0, 0}; 34 56 35 36 37 // This macro should be the only thing that needs to change across machines. 38 // Used in the personality function, way down in termination. 57 // Get the current exception context. 58 // There can be a single global until multithreading occurs, then each stack 59 // needs its own. It will have to be updated to handle that. 60 struct exception_context_t * this_exception_context() { 61 return &shared_stack; 62 } 63 //#define SAVE_EXCEPTION_CONTEXT(to_name) 64 //struct exception_context_t * to_name = this_exception_context(); 65 //exception * this_exception() { 66 // return this_exception_context()->current_exception; 67 //} 68 69 70 // This macro should be the only thing that needs to change across machines. Used in the personality function, way down 71 // in termination. 39 72 // struct _Unwind_Context * -> _Unwind_Reason_Code(*)(exception *) 40 73 #define MATCHER_FROM_CONTEXT(ptr_to_context) \ … … 47 80 48 81 // DEBUG 49 printf("Throwing resumption exception %d\n", *except);82 printf("Throwing resumption exception\n"); 50 83 51 84 struct __cfaehm__try_resume_node * original_head = shared_stack.current_resume; … … 61 94 } 62 95 63 printf("Unhandled exception %d\n", *except);96 printf("Unhandled exception\n"); 64 97 shared_stack.current_resume = original_head; 65 98 … … 69 102 } 70 103 71 /* Do we control where exceptions get thrown even with concurency? 72 * If not these are not quite thread safe, the cleanup hook has to be added 73 * after the node is built but before it is made the top node. 74 */ 104 // Do we control where exceptions get thrown even with concurency? If not these are not quite thread safe, the cleanup 105 // hook has to be added after the node is built but before it is made the top node. 106 75 107 void __cfaehm__try_resume_setup(struct __cfaehm__try_resume_node * node, 76 108 int (*handler)(exception * except)) { … … 87 119 // TERMINATION =============================================================== 88 120 89 // Requires -fexceptions to work. 90 91 // Global which defines the current exception 92 // Currently an int just to make matching easier 93 //int this_exception; (became shared_stack.current_exception) 121 // MEMORY MANAGEMENT (still for integers) 122 // May have to move to cfa for constructors and destructors (references). 123 124 struct __cfaehm__node { 125 struct __cfaehm__node * next; 126 }; 127 128 #define NODE_TO_EXCEPT(node) ((exception *)(1 + (node))) 129 #define EXCEPT_TO_NODE(except) ((struct __cfaehm__node *)(except) - 1) 130 131 // Creates a copy of the indicated exception and sets current_exception to it. 132 static void __cfaehm__allocate_exception( exception * except ) { 133 struct exception_context_t * context = this_exception_context(); 134 135 // Allocate memory for the exception. 136 struct __cfaehm__node * store = malloc( 137 sizeof( struct __cfaehm__node ) + except->virtual_table->size ); 138 139 if ( ! store ) { 140 // Failure: cannot allocate exception. Terminate thread. 141 abort(); // <- Although I think it might be the process. 142 } 143 144 // Add the node to the list: 145 store->next = EXCEPT_TO_NODE(context->current_exception); 146 context->current_exception = NODE_TO_EXCEPT(store); 147 148 // Copy the exception to storage. 149 except->virtual_table->copy( context->current_exception, except ); 150 } 151 152 // Delete the provided exception, unsetting current_exception if relivant. 153 static void __cfaehm__delete_exception( exception * except ) { 154 struct exception_context_t * context = this_exception_context(); 155 156 // DEBUG 157 printf( "Deleting Exception\n"); 158 159 // Remove the exception from the list. 160 struct __cfaehm__node * to_free = EXCEPT_TO_NODE(except); 161 struct __cfaehm__node * node; 162 163 if ( context->current_exception == except ) { 164 node = to_free->next; 165 context->current_exception = (node) ? NODE_TO_EXCEPT(node) : 0; 166 } else { 167 node = EXCEPT_TO_NODE(context->current_exception); 168 // It may always be in the first or second position. 169 while( to_free != node->next ) { 170 node = node->next; 171 } 172 node->next = to_free->next; 173 } 174 175 // Free the old exception node. 176 except->virtual_table->free( except ); 177 free( to_free ); 178 } 179 180 // If this isn't a rethrow (*except==0), delete the provided exception. 181 void __cfaehm__cleanup_terminate( void * except ) { 182 if ( *(void**)except ) __cfaehm__delete_exception( *(exception**)except ); 183 } 184 94 185 95 186 // We need a piece of storage to raise the exception … … 111 202 } 112 203 113 void __cfaehm__throw_terminate( exception * val ) { 114 // Store the current exception 115 shared_stack.current_exception = *val; 116 117 // DEBUG 118 printf("Throwing termination exception %d\n", *val); 204 // The exception that is being thrown must already be stored. 205 __attribute__((noreturn)) void __cfaehm__begin_unwind(void) { 206 if ( ! this_exception_context()->current_exception ) { 207 printf("UNWIND ERROR missing exception in begin unwind\n"); 208 abort(); 209 } 210 119 211 120 212 // Call stdlibc to raise the exception 121 213 _Unwind_Reason_Code ret = _Unwind_RaiseException( &this_exception_storage ); 122 214 123 // If we reach here it means something happened 124 // For resumption to work we need to find a way to return back to here 125 // Most of them will probably boil down to setting a global flag and making the phase 1 either stop or fail. 126 // Causing an error on purpose may help avoiding unnecessary work but it might have some weird side effects. 127 // If we just pretend no handler was found that would work but may be expensive for no reason since we will always 128 // search the whole stack 215 // If we reach here it means something happened. For resumption to work we need to find a way to return back to 216 // here. Most of them will probably boil down to setting a global flag and making the phase 1 either stop or 217 // fail. Causing an error on purpose may help avoiding unnecessary work but it might have some weird side 218 // effects. If we just pretend no handler was found that would work but may be expensive for no reason since we 219 // will always search the whole stack. 129 220 130 221 if( ret == _URC_END_OF_STACK ) { 131 // No proper handler was found 132 // This can be handled in several way 133 // C++ calls std::terminate 134 // Here we force unwind the stack, basically raising a cancellation 222 // No proper handler was found. This can be handled in several way. C++ calls std::terminate Here we 223 // force unwind the stack, basically raising a cancellation. 135 224 printf("Uncaught exception %p\n", &this_exception_storage); 136 225 … … 140 229 } 141 230 142 // We did not simply reach the end of the stack without finding a handler, 143 // Something wen't wrong 231 // We did not simply reach the end of the stack without finding a handler. Something wen't wrong 144 232 printf("UNWIND ERROR %d after raise exception\n", ret); 145 233 abort(); 146 234 } 147 235 148 // Nesting this the other way would probably be faster. 236 void __cfaehm__throw_terminate( exception * val ) { 237 // DEBUG 238 printf("Throwing termination exception\n"); 239 240 __cfaehm__allocate_exception( val ); 241 __cfaehm__begin_unwind(); 242 } 243 149 244 void __cfaehm__rethrow_terminate(void) { 150 245 // DEBUG 151 246 printf("Rethrowing termination exception\n"); 152 247 153 __cfaehm__throw_terminate(&shared_stack.current_exception); 154 } 155 156 // This is our personality routine 157 // For every stack frame anotated with ".cfi_personality 0x3,__gcfa_personality_v0" 158 // This function will be called twice when unwinding 159 // Once in the search phased and once in the cleanup phase 248 __cfaehm__begin_unwind(); 249 } 250 251 // This is our personality routine. For every stack frame anotated with ".cfi_personality 0x3,__gcfa_personality_v0". 252 // This function will be called twice when unwinding. Once in the search phased and once in the cleanup phase. 160 253 _Unwind_Reason_Code __gcfa_personality_v0 ( 161 254 int version, _Unwind_Action actions, unsigned long long exceptionClass, … … 263 356 _Unwind_Reason_Code (*matcher)(exception *) = 264 357 MATCHER_FROM_CONTEXT(context); 265 int index = matcher( &shared_stack.current_exception);358 int index = matcher(shared_stack.current_exception); 266 359 _Unwind_Reason_Code ret = (0 == index) 267 360 ? _URC_CONTINUE_UNWIND : _URC_HANDLER_FOUND; … … 293 386 // I assume this sets the instruction pointer to the adress of the landing pad 294 387 // It doesn't actually set it, it only state the value that needs to be set once we return _URC_INSTALL_CONTEXT 295 _Unwind_SetIP( context, lsd_info.LPStart + callsite_landing_pad);388 _Unwind_SetIP( context, ((lsd_info.LPStart) + (callsite_landing_pad)) ); 296 389 297 390 // DEBUG … … 317 410 } 318 411 319 // Try statements are hoisted out see comments for details 320 // With this could probably be unique and simply linked from 321 // libcfa but there is one problem left, see the exception table 322 // for details 412 // Try statements are hoisted out see comments for details. With this could probably be unique and simply linked from 413 // libcfa but there is one problem left, see the exception table for details 323 414 __attribute__((noinline)) 324 415 void __cfaehm__try_terminate(void (*try_block)(), … … 328 419 //! printf("%p %p %p %p\n", &try_block, &catch_block, &match_block, &xy); 329 420 330 // Setup statments 331 // These 2 statments won't actually result in any code, 332 // they only setup global tables. 333 // However, they clobber gcc cancellation support from gcc. 334 // We can replace the personality routine but replacing the exception 335 // table gcc generates is not really doable, it generates labels based 336 // on how the assembly works. 421 // Setup statments: These 2 statments won't actually result in any code, they only setup global tables. 422 // However, they clobber gcc cancellation support from gcc. We can replace the personality routine but 423 // replacing the exception table gcc generates is not really doable, it generates labels based on how the 424 // assembly works. 425 337 426 // Setup the personality routine 338 427 asm volatile (".cfi_personality 0x3,__gcfa_personality_v0"); … … 340 429 asm volatile (".cfi_lsda 0x3, .LLSDACFA2"); 341 430 342 // Label which defines the start of the area for which the handler is setup 431 // Label which defines the start of the area for which the handler is setup. 343 432 asm volatile (".TRYSTART:"); 344 433 … … 354 443 // Exceptionnal path 355 444 CATCH : __attribute__(( unused )); 356 // Label which defines the end of the area for which the handler is setup 445 // Label which defines the end of the area for which the handler is setup. 357 446 asm volatile (".TRYEND:"); 358 // Label which defines the start of the exception landing pad 359 // basically what will be called when the exception is caught 360 // Note, if multiple handlers are given, the multiplexing should be done 361 // by the generated code, not the exception runtime 447 // Label which defines the start of the exception landing pad. Basically what is called when the exception is 448 // caught. Note, if multiple handlers are given, the multiplexing should be done by the generated code, not the 449 // exception runtime. 362 450 asm volatile (".CATCH:"); 363 451 364 452 // Exception handler 365 catch_block(shared_stack.current_handler_index, 366 &shared_stack.current_exception); 367 } 368 369 // Exception table data we need to generate 370 // While this is almost generic, the custom data refers to 371 // foo_try_match try match, which is no way generic 372 // Some more works need to be done if we want to have a single 373 // call to the try routine 453 catch_block( shared_stack.current_handler_index, 454 shared_stack.current_exception ); 455 } 456 457 // Exception table data we need to generate. While this is almost generic, the custom data refers to foo_try_match try 458 // match, which is no way generic. Some more works need to be done if we want to have a single call to the try routine. 459 460 #if defined( __x86_64__ ) || defined( __i386__ ) 374 461 asm ( 375 462 //HEADER … … 394 481 // " .section .note.GNU-stack,\"x\",@progbits\n" 395 482 ); 483 #endif // __x86_64__ || __i386__ -
src/libcfa/exception.h
rfd344aa r9236060 10 10 // Created On : Mon Jun 26 15:11:00 2017 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Tus Jul 11 16:31:00 201713 // Update Count : 212 // Last Modified On : Fri Aug 4 15:20:00 2017 13 // Update Count : 5 14 14 // 15 15 16 #ifndef EXCEPTION_H 17 #define EXCEPTION_H 16 #pragma once 18 17 19 20 // Later to be a special structure type.21 typedef int exception;22 18 23 19 #ifdef __CFORALL__ 24 20 extern "C" { 25 21 #endif 22 23 struct __cfaehm__base_exception_t; 24 typedef struct __cfaehm__base_exception_t exception; 25 struct __cfaehm__base_exception_t_vtable { 26 const struct __cfaehm__base_exception_t_vtable * parent; 27 size_t size; 28 void (*copy)(struct __cfaehm__base_exception_t *this, 29 struct __cfaehm__base_exception_t * other); 30 void (*free)(struct __cfaehm__base_exception_t *this); 31 const char (*msg)(struct __cfaehm__base_exception_t *this); 32 }; 33 struct __cfaehm__base_exception_t { 34 struct __cfaehm__base_exception_t_vtable const * virtual_table; 35 }; 36 extern struct __cfaehm__base_exception_t_vtable 37 ___cfaehm__base_exception_t_vtable_instance; 38 26 39 27 40 // Used in throw statement translation. … … 36 49 int (*match_block)(exception * except)); 37 50 51 // Clean-up the exception in catch blocks. 52 void __cfaehm__cleanup_terminate(void * except); 53 38 54 // Data structure creates a list of resume handlers. 39 55 struct __cfaehm__try_resume_node { … … 42 58 }; 43 59 60 // These act as constructor and destructor for the resume node. 44 61 void __cfaehm__try_resume_setup( 45 62 struct __cfaehm__try_resume_node * node, … … 49 66 50 67 // Check for a standard way to call fake deconstructors. 51 struct __cfaehm__cleanup_hook { 52 }; 68 struct __cfaehm__cleanup_hook {}; 53 69 54 70 #ifdef __CFORALL__ 55 71 } 56 72 #endif 57 58 #endif //EXCEPTION_H -
src/libcfa/fstream.c
rfd344aa r9236060 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 6 18:38:25201713 // Update Count : 25 112 // Last Modified On : Thu Jul 20 15:20:49 2017 13 // Update Count : 252 14 14 // 15 15 16 16 #include "fstream" 17 17 18 extern "C" {19 18 #include <stdio.h> // vfprintf, vfscanf 20 19 #include <stdlib.h> // exit … … 24 23 #include <float.h> // DBL_DIG, LDBL_DIG 25 24 #include <complex.h> // creal, cimag 26 } 27 #include "assert" 25 #include <assert.h> 28 26 29 27 #define IO_MSG "I/O error: " -
src/libcfa/interpose.c
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Wed Mar 29 16:10:31 2017 12 // Last Modified By : 13 // Last Modified On : 14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:27:33 2017 13 // Update Count : 1 15 14 // 16 15 … … 141 140 } 142 141 } 142 143 // Local Variables: // 144 // mode: c // 145 // tab-width: 4 // 146 // End: // -
src/libcfa/interpose.h
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Wed Mar 29 15:56:41 2017 12 // Last Modified By : 13 // Last Modified On : 14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 22:33:02 2017 13 // Update Count : 2 15 14 // 16 15 17 #ifndef INTERPOSE_H 18 #define INTERPOSE_H 16 #pragma once 19 17 20 18 void * interpose_symbol( const char* symbol, , const char *version ); … … 23 21 extern __typeof__( exit ) libc_abort __attribute__(( noreturn )); 24 22 25 #endif //INTERPOSE_H 23 // Local Variables: // 24 // mode: c // 25 // tab-width: 4 // 26 // End: // -
src/libcfa/iostream
rfd344aa r9236060 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 7 08:35:59201713 // Update Count : 1 1812 // Last Modified On : Wed Aug 9 16:42:47 2017 13 // Update Count : 131 14 14 // 15 15 … … 46 46 }; // ostream 47 47 48 trait writeable( otype T ) { 49 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, T ); 48 // trait writeable( otype T ) { 49 // forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, T ); 50 // }; // writeable 51 52 trait writeable( otype T, dtype ostype | ostream( ostype ) ) { 53 ostype * ?|?( ostype *, T ); 50 54 }; // writeable 51 55 … … 77 81 78 82 // tuples 79 forall( dtype ostype, otype T, ttype Params | ostream( ostype ) | writeable( T ) | { ostype * ?|?( ostype *, Params ); } ) ostype * ?|?( ostype * os, T arg, Params rest ); 83 forall( dtype ostype, otype T, ttype Params | writeable( T, ostype ) | { ostype * ?|?( ostype *, Params ); } ) 84 ostype * ?|?( ostype * os, T arg, Params rest ); 80 85 81 86 // manipulators … … 90 95 91 96 // writes the range [begin, end) to the given stream 92 forall( otype elt_type | writeable( elt_type ), otype iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) )93 void write( iterator_type begin, iterator_type end, os _type *os );97 forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) ) 98 void write( iterator_type begin, iterator_type end, ostype * os ); 94 99 95 forall( otype elt_type | writeable( elt_type ), otype iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) )96 void write_reverse( iterator_type begin, iterator_type end, os _type *os );100 forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) ) 101 void write_reverse( iterator_type begin, iterator_type end, ostype * os ); 97 102 98 103 //--------------------------------------- -
src/libcfa/iostream.c
rfd344aa r9236060 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 6 18:14:17201713 // Update Count : 39612 // Last Modified On : Wed Aug 9 16:46:51 2017 13 // Update Count : 401 14 14 // 15 15 … … 125 125 forall( dtype ostype | ostream( ostype ) ) 126 126 ostype * ?|?( ostype * os, float _Complex fc ) { 127 os | crealf( fc ); 128 _Bool temp = sepDisable( os ); // disable separators within complex value 129 if ( cimagf( fc ) >= 0 ) os | '+'; // negative value prints '-' 130 os | cimagf( fc ) | 'i'; 131 sepReset( os, temp ); // reset separator 127 if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) ); 128 fmt( os, "%g%+gi", crealf( fc ), cimagf( fc ) ); 132 129 return os; 133 130 } // ?|? … … 135 132 forall( dtype ostype | ostream( ostype ) ) 136 133 ostype * ?|?( ostype * os, double _Complex dc ) { 137 os | creal( dc ); 138 _Bool temp = sepDisable( os ); // disable separators within complex value 139 if ( cimag( dc ) >= 0 ) os | '+'; // negative value prints '-' 140 os | cimag( dc ) | 'i'; 141 sepReset( os, temp ); // reset separator 134 if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) ); 135 fmt( os, "%.*lg%+.*lgi", DBL_DIG, creal( dc ), DBL_DIG, cimag( dc ) ); 142 136 return os; 143 137 } // ?|? … … 145 139 forall( dtype ostype | ostream( ostype ) ) 146 140 ostype * ?|?( ostype * os, long double _Complex ldc ) { 147 os | creall( ldc ); 148 _Bool temp = sepDisable( os ); // disable separators within complex value 149 if ( cimagl( ldc ) >= 0 ) os | '+'; // negative value prints '-' 150 os | cimagl( ldc ) | 'i'; 151 sepReset( os, temp ); // reset separator 141 if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) ); 142 fmt( os, "%.*Lg%+.*Lgi", LDBL_DIG, creall( ldc ), LDBL_DIG, cimagl( ldc ) ); 152 143 return os; 153 144 } // ?|? … … 202 193 203 194 // tuples 204 forall( dtype ostype, otype T, ttype Params | ostream( ostype ) | writeable( T) | { ostype * ?|?( ostype *, Params ); } )195 forall( dtype ostype, otype T, ttype Params | writeable( T, ostype ) | { ostype * ?|?( ostype *, Params ); } ) 205 196 ostype * ?|?( ostype * os, T arg, Params rest ) { 206 197 os | arg; // print first argument … … 265 256 //--------------------------------------- 266 257 267 forall( otype elttype | writeable( elttype ), otype iteratortype | iterator( iteratortype, elttype ), dtype ostype | ostream( ostype ) )268 void write( iterator type begin, iteratortype end, ostype * os ) {269 void print( elt type i ) { os | i; }258 forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) ) 259 void write( iterator_type begin, iterator_type end, ostype * os ) { 260 void print( elt_type i ) { os | i; } 270 261 for_each( begin, end, print ); 271 262 } // ?|? 272 263 273 forall( otype elttype | writeable( elttype ), otype iteratortype | iterator( iteratortype, elttype ), dtype ostype | ostream( ostype ) )274 void write_reverse( iterator type begin, iteratortype end, ostype * os ) {275 void print( elt type i ) { os | i; }264 forall( dtype ostype, otype elt_type | writeable( elt_type, ostype ), otype iterator_type | iterator( iterator_type, elt_type ) ) 265 void write_reverse( iterator_type begin, iterator_type end, ostype * os ) { 266 void print( elt_type i ) { os | i; } 276 267 for_each_reverse( begin, end, print ); 277 268 } // ?|? -
src/libcfa/libhdr.h
rfd344aa r9236060 9 9 // Author : Thierry Delisle 10 10 // Created On : Mon Nov 28 12:27:26 2016 11 // Last Modified By : Thierry Delisle12 // Last Modified On : Mon Nov 28 12:27:26 201613 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 09:56:32 2017 13 // Update Count : 1 14 14 // 15 15 16 #ifndef __LIB_HDR_H__ 17 #define __LIB_HDR_H__ 16 #pragma once 18 17 19 18 #include "libalign.h" … … 21 20 #include "libtools.h" 22 21 23 #endif //__LIB_HDR_H__24 25 22 // Local Variables: // 26 23 // mode: c // -
src/libcfa/libhdr/libalign.h
rfd344aa r9236060 1 // -*- Mode: C++ -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Mon Nov 28 12:27:26 2016 12 // Last Modified By : Thierry Delisle13 // Last Modified On : Mon Nov 28 12:27:26 201614 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 21 23:05:35 2017 13 // Update Count : 2 15 14 // 16 15 // This library is free software; you can redistribute it and/or modify it … … 28 27 // 29 28 29 #pragma once 30 30 31 #ifndef __LIB_ALIGN_H__ 32 #define __LIB_ALIGN_H__ 33 34 #include "assert" 31 #include <assert.h> 35 32 #include <stdbool.h> 36 33 … … 61 58 } // uCeiling 62 59 63 64 #endif // __LIB_ALIGN_H__65 66 67 60 // Local Variables: // 68 61 // compile-command: "make install" // -
src/libcfa/libhdr/libdebug.h
rfd344aa r9236060 9 9 // Author : Thierry Delisle 10 10 // Created On : Mon Nov 28 12:27:26 2016 11 // Last Modified By : Thierry Delisle12 // Last Modified On : Mon Nov 28 12:27:26 201613 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 10:02:24 2017 13 // Update Count : 1 14 14 // 15 15 16 #ifndef __LIB_DEBUG_H__ 17 #define __LIB_DEBUG_H__ 16 #pragma once 18 17 19 18 #ifdef __CFA_DEBUG__ … … 78 77 #endif 79 78 80 #endif //__LIB_DEBUG_H__81 82 79 // Local Variables: // 83 80 // mode: c // -
src/libcfa/libhdr/libtools.h
rfd344aa r9236060 9 9 // Author : Thierry Delisle 10 10 // Created On : Mon Nov 28 12:27:26 2016 11 // Last Modified By : Thierry Delisle12 // Last Modified On : Mon Nov 28 12:27:26 201613 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 10:02:10 2017 13 // Update Count : 1 14 14 // 15 15 16 #ifndef __LIB_TOOLS_H__ 17 #define __LIB_TOOLS_H__ 16 #pragma once 18 17 19 18 // void abortf( const char *fmt, ... ) { … … 30 29 #endif 31 30 32 #endif //__LIB_TOOLS_H__33 34 31 // Local Variables: // 35 32 // mode: c // -
src/libcfa/math
rfd344aa r9236060 10 10 // Created On : Mon Apr 18 23:37:04 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 7 09:34:15 201713 // Update Count : 6112 // Last Modified On : Mon Aug 7 07:51:15 2017 13 // Update Count : 108 14 14 // 15 15 16 16 #pragma once 17 17 18 extern "C" { 19 #include <math.h> // fpclassify, isfinite, isnormal, isnan, isinf 20 } // extern "C" 21 22 float ?%?( float, float ); 23 float fmod( float, float ); 24 double ?%?( double, double ); 18 #include <math.h> 19 #include <complex.h> 20 21 //---------------------- General ---------------------- 22 23 static inline float ?%?( float x, float y ) { return fmodf( x, y ); } 24 static inline float fmod( float x, float y ) { return fmodf( x, y ); } 25 static inline double ?%?( double x, double y ) { return fmod( x, y ); } 25 26 // extern "C" { double fmod( double, double ); } 26 long double ?%?( long double, long double ); 27 long double fmod( long double, long double ); 28 29 float remainder( float, float ); 27 static inline long double ?%?( long double x, long double y ) { return fmodl( x, y ); } 28 static inline long double fmod( long double x, long double y ) { return fmodl( x, y ); } 29 30 static inline float remainder( float x, float y ) { return remainderf( x, y ); } 30 31 // extern "C" { double remainder( double, double ); } 31 long double remainder( long double, long double ); 32 33 [ int, float ] remquo( float, float ); 34 float remquo( float, float, int * ); 35 [ int, double ] remquo( double, double ); 36 // extern "C" { double remquo( double, double, int * ); } 37 [ int, long double ] remquo( long double, long double ); 38 long double remquo( long double, long double, int * ); 39 40 [ int, float ] div( float, float ); // alternative name for remquo 41 float div( float, float, int * ); 42 [ int, double ] div( double, double ); 43 // extern "C" { double div( double, double, int * ); } 44 [ int, long double ] div( long double, long double ); 45 long double div( long double, long double, int * ); 46 47 float fma( float, float, float ); 32 static inline long double remainder( long double x, long double y ) { return remainderl( x, y ); } 33 34 static inline float remquo( float x, float y, int * quo ) { return remquof( x, y, quo ); } 35 // extern "C" { double remquo( double x, double y, int * quo ); } 36 static inline long double remquo( long double x, long double y, int * quo ) { return remquol( x, y, quo ); } 37 static inline [ int, float ] remquo( float x, float y ) { int quo; x = remquof( x, y, &quo ); return [ quo, x ]; } 38 static inline [ int, double ] remquo( double x, double y ) { int quo; x = remquo( x, y, &quo ); return [ quo, x ]; } 39 static inline [ int, long double ] remquo( long double x, long double y ) { int quo; x = remquol( x, y, &quo ); return [ quo, x ]; } 40 41 static inline [ float, float ] div( float x, float y ) { y = modff( x / y, &x ); return [ x, y ]; } 42 static inline [ double, double ] div( double x, double y ) { y = modf( x / y, &x ); return [ x, y ]; } 43 static inline [ long double, long double ] div( long double x, long double y ) { y = modfl( x / y, &x ); return [ x, y ]; } 44 45 static inline float fma( float x, float y, float z ) { return fmaf( x, y, z ); } 48 46 // extern "C" { double fma( double, double, double ); } 49 long double fma( long double, long double, long double ); 50 51 float fdim( float, float ); 47 static inline long double fma( long double x, long double y, long double z ) { return fmal( x, y, z ); } 48 49 static inline float fdim( float x, float y ) { return fdimf( x, y ); } 52 50 // extern "C" { double fdim( double, double ); } 53 long double fdim( long double, long double ); 54 55 float nan( const char * ); 51 static inline long double fdim( long double x, long double y ) { return fdiml( x, y ); } 52 53 static inline float nan( const char * tag ) { return nanf( tag ); } 56 54 // extern "C" { double nan( const char * ); } 57 long double nan( const char * ); 55 static inline long double nan( const char * tag ) { return nanl( tag ); } 58 56 59 57 //---------------------- Exponential ---------------------- 60 58 61 float exp( float ); 59 static inline float exp( float x ) { return expf( x ); } 62 60 // extern "C" { double exp( double ); } 63 long double exp( long double ); 64 float _Complex exp( float _Complex ); 65 double _Complex exp( double _Complex ); 66 long double _Complex exp( long double _Complex ); 67 68 float exp2( float ); 61 static inline long double exp( long double x ) { return expl( x ); } 62 static inline float _Complex exp( float _Complex x ) { return cexpf( x ); } 63 static inline double _Complex exp( double _Complex x ) { return cexp( x ); } 64 static inline long double _Complex exp( long double _Complex x ) { return cexpl( x ); } 65 66 static inline float exp2( float x ) { return exp2f( x ); } 69 67 // extern "C" { double exp2( double ); } 70 long double exp2( long double ); 71 // float _Complex exp2( float _Complex );72 // double _Complex exp2( double _Complex );73 // long double _Complex exp2( long double _Complex );74 75 float expm1( float ); 68 static inline long double exp2( long double x ) { return exp2l( x ); } 69 //static inline float _Complex exp2( float _Complex x ) { return cexp2f( x ); } 70 //static inline double _Complex exp2( double _Complex x ) { return cexp2( x ); } 71 //static inline long double _Complex exp2( long double _Complex x ) { return cexp2l( x ); } 72 73 static inline float expm1( float x ) { return expm1f( x ); } 76 74 // extern "C" { double expm1( double ); } 77 long double expm1( long double ); 78 79 float log( float ); 75 static inline long double expm1( long double x ) { return expm1l( x ); } 76 77 static inline float pow( float x, float y ) { return powf( x, y ); } 78 // extern "C" { double pow( double, double ); } 79 static inline long double pow( long double x, long double y ) { return powl( x, y ); } 80 static inline float _Complex pow( float _Complex x, float _Complex y ) { return cpowf( x, y ); } 81 static inline double _Complex pow( double _Complex x, double _Complex y ) { return cpow( x, y ); } 82 static inline long double _Complex pow( long double _Complex x, long double _Complex y ) { return cpowl( x, y ); } 83 84 //---------------------- Logarithm ---------------------- 85 86 static inline float log( float x ) { return logf( x ); } 80 87 // extern "C" { double log( double ); } 81 long double log( long double ); 82 float _Complex log( float _Complex ); 83 double _Complex log( double _Complex ); 84 long double _Complex log( long double _Complex ); 85 86 float log2( float ); 88 static inline long double log( long double x ) { return logl( x ); } 89 static inline float _Complex log( float _Complex x ) { return clogf( x ); } 90 static inline double _Complex log( double _Complex x ) { return clog( x ); } 91 static inline long double _Complex log( long double _Complex x ) { return clogl( x ); } 92 93 static inline float log2( float x ) { return log2f( x ); } 87 94 // extern "C" { double log2( double ); } 88 long double log2( long double ); 89 // float _Complex log2( float _Complex );90 // double _Complex log2( double _Complex );91 // long double _Complex log2( long double _Complex );92 93 float log10( float ); 95 static inline long double log2( long double x ) { return log2l( x ); } 96 // static inline float _Complex log2( float _Complex x ) { return clog2f( x ); } 97 // static inline double _Complex log2( double _Complex x ) { return clog2( x ); } 98 // static inline long double _Complex log2( long double _Complex x ) { return clog2l( x ); } 99 100 static inline float log10( float x ) { return log10f( x ); } 94 101 // extern "C" { double log10( double ); } 95 long double log10( long double ); 96 // float _Complex log10( float _Complex );97 // double _Complex log10( double _Complex );98 // long double _Complex log10( long double _Complex );99 100 float log1p( float ); 102 static inline long double log10( long double x ) { return log10l( x ); } 103 // static inline float _Complex log10( float _Complex x ) { return clog10f( x ); } 104 // static inline double _Complex log10( double _Complex x ) { return clog10( x ); } 105 // static inline long double _Complex log10( long double _Complex x ) { return clog10l( x ); } 106 107 static inline float log1p( float x ) { return log1pf( x ); } 101 108 // extern "C" { double log1p( double ); } 102 long double log1p( long double ); 103 104 int ilogb( float ); 109 static inline long double log1p( long double x ) { return log1pl( x ); } 110 111 static inline int ilogb( float x ) { return ilogbf( x ); } 105 112 // extern "C" { int ilogb( double ); } 106 int ilogb( long double ); 107 108 float logb( float ); 113 static inline int ilogb( long double x ) { return ilogbl( x ); } 114 115 static inline float logb( float x ) { return logbf( x ); } 109 116 // extern "C" { double logb( double ); } 110 long double logb( long double ); 111 112 //---------------------- Power ---------------------- 113 114 float sqrt( float ); 117 static inline long double logb( long double x ) { return logbl( x ); } 118 119 static inline float sqrt( float x ) { return sqrtf( x ); } 115 120 // extern "C" { double sqrt( double ); } 116 long double sqrt( long double ); 117 float _Complex sqrt( float _Complex ); 118 double _Complex sqrt( double _Complex ); 119 long double _Complex sqrt( long double _Complex ); 120 121 float cbrt( float ); 121 static inline long double sqrt( long double x ) { return sqrtl( x ); } 122 static inline float _Complex sqrt( float _Complex x ) { return csqrtf( x ); } 123 static inline double _Complex sqrt( double _Complex x ) { return csqrt( x ); } 124 static inline long double _Complex sqrt( long double _Complex x ) { return csqrtl( x ); } 125 126 static inline float cbrt( float x ) { return cbrtf( x ); } 122 127 // extern "C" { double cbrt( double ); } 123 long double cbrt( long double ); 124 125 float hypot( float, float ); 128 static inline long double cbrt( long double x ) { return cbrtl( x ); } 129 130 static inline float hypot( float x, float y ) { return hypotf( x, y ); } 126 131 // extern "C" { double hypot( double, double ); } 127 long double hypot( long double, long double ); 128 129 float pow( float, float ); 130 // extern "C" { double pow( double, double ); } 131 long double pow( long double, long double ); 132 float _Complex pow( float _Complex, float _Complex ); 133 double _Complex pow( double _Complex, double _Complex ); 134 long double _Complex pow( long double _Complex, long double _Complex ); 132 static inline long double hypot( long double x, long double y ) { return hypotl( x, y ); } 135 133 136 134 //---------------------- Trigonometric ---------------------- 137 135 138 float sin( float ); 136 static inline float sin( float x ) { return sinf( x ); } 139 137 // extern "C" { double sin( double ); } 140 long double sin( long double ); 141 float _Complex sin( float _Complex ); 142 double _Complex sin( double _Complex ); 143 long double _Complex sin( long double _Complex ); 144 145 float cos( float ); 138 static inline long double sin( long double x ) { return sinl( x ); } 139 static inline float _Complex sin( float _Complex x ) { return csinf( x ); } 140 static inline double _Complex sin( double _Complex x ) { return csin( x ); } 141 static inline long double _Complex sin( long double _Complex x ) { return csinl( x ); } 142 143 static inline float cos( float x ) { return cosf( x ); } 146 144 // extern "C" { double cos( double ); } 147 long double cos( long double ); 148 float _Complex cos( float _Complex ); 149 double _Complex cos( double _Complex ); 150 long double _Complex cos( long double _Complex ); 151 152 float tan( float ); 145 static inline long double cos( long double x ) { return cosl( x ); } 146 static inline float _Complex cos( float _Complex x ) { return ccosf( x ); } 147 static inline double _Complex cos( double _Complex x ) { return ccos( x ); } 148 static inline long double _Complex cos( long double _Complex x ) { return ccosl( x ); } 149 150 static inline float tan( float x ) { return tanf( x ); } 153 151 // extern "C" { double tan( double ); } 154 long double tan( long double ); 155 float _Complex tan( float _Complex ); 156 double _Complex tan( double _Complex ); 157 long double _Complex tan( long double _Complex ); 158 159 float asin( float ); 152 static inline long double tan( long double x ) { return tanl( x ); } 153 static inline float _Complex tan( float _Complex x ) { return ctanf( x ); } 154 static inline double _Complex tan( double _Complex x ) { return ctan( x ); } 155 static inline long double _Complex tan( long double _Complex x ) { return ctanl( x ); } 156 157 static inline float asin( float x ) { return asinf( x ); } 160 158 // extern "C" { double asin( double ); } 161 long double asin( long double ); 162 float _Complex asin( float _Complex ); 163 double _Complex asin( double _Complex ); 164 long double _Complex asin( long double _Complex ); 165 166 float acos( float ); 159 static inline long double asin( long double x ) { return asinl( x ); } 160 static inline float _Complex asin( float _Complex x ) { return casinf( x ); } 161 static inline double _Complex asin( double _Complex x ) { return casin( x ); } 162 static inline long double _Complex asin( long double _Complex x ) { return casinl( x ); } 163 164 static inline float acos( float x ) { return acosf( x ); } 167 165 // extern "C" { double acos( double ); } 168 long double acos( long double ); 169 float _Complex acos( float _Complex ); 170 double _Complex acos( double _Complex ); 171 long double _Complex acos( long double _Complex ); 172 173 float atan( float ); 166 static inline long double acos( long double x ) { return acosl( x ); } 167 static inline float _Complex acos( float _Complex x ) { return cacosf( x ); } 168 static inline double _Complex acos( double _Complex x ) { return cacos( x ); } 169 static inline long double _Complex acos( long double _Complex x ) { return cacosl( x ); } 170 171 static inline float atan( float x ) { return atanf( x ); } 174 172 // extern "C" { double atan( double ); } 175 long double atan( long double ); 176 float _Complex atan( float _Complex ); 177 double _Complex atan( double _Complex ); 178 long double _Complex atan( long double _Complex ); 179 180 float atan2( float, float ); 173 static inline long double atan( long double x ) { return atanl( x ); } 174 static inline float _Complex atan( float _Complex x ) { return catanf( x ); } 175 static inline double _Complex atan( double _Complex x ) { return catan( x ); } 176 static inline long double _Complex atan( long double _Complex x ) { return catanl( x ); } 177 178 static inline float atan2( float x, float y ) { return atan2f( x, y ); } 181 179 // extern "C" { double atan2( double, double ); } 182 long double atan2( long double, long double ); 183 184 float atan( float, float ); // alternative name for atan2 185 double atan( double, double ); 186 long double atan( long double, long double ); 180 static inline long double atan2( long double x, long double y ) { return atan2l( x, y ); } 181 182 // alternative name for atan2 183 static inline float atan( float x, float y ) { return atan2f( x, y ); } 184 static inline double atan( double x, double y ) { return atan2( x, y ); } 185 static inline long double atan( long double x, long double y ) { return atan2l( x, y ); } 187 186 188 187 //---------------------- Hyperbolic ---------------------- 189 188 190 float sinh( float ); 189 static inline float sinh( float x ) { return sinhf( x ); } 191 190 // extern "C" { double sinh( double ); } 192 long double sinh( long double ); 193 float _Complex sinh( float _Complex ); 194 double _Complex sinh( double _Complex ); 195 long double _Complex sinh( long double _Complex ); 196 197 float cosh( float ); 191 static inline long double sinh( long double x ) { return sinhl( x ); } 192 static inline float _Complex sinh( float _Complex x ) { return csinhf( x ); } 193 static inline double _Complex sinh( double _Complex x ) { return csinh( x ); } 194 static inline long double _Complex sinh( long double _Complex x ) { return csinhl( x ); } 195 196 static inline float cosh( float x ) { return coshf( x ); } 198 197 // extern "C" { double cosh( double ); } 199 long double cosh( long double ); 200 float _Complex cosh( float _Complex ); 201 double _Complex cosh( double _Complex ); 202 long double _Complex cosh( long double _Complex ); 203 204 float tanh( float ); 198 static inline long double cosh( long double x ) { return coshl( x ); } 199 static inline float _Complex cosh( float _Complex x ) { return ccoshf( x ); } 200 static inline double _Complex cosh( double _Complex x ) { return ccosh( x ); } 201 static inline long double _Complex cosh( long double _Complex x ) { return ccoshl( x ); } 202 203 static inline float tanh( float x ) { return tanhf( x ); } 205 204 // extern "C" { double tanh( double ); } 206 long double tanh( long double ); 207 float _Complex tanh( float _Complex ); 208 double _Complex tanh( double _Complex ); 209 long double _Complex tanh( long double _Complex ); 210 211 float asinh( float ); 205 static inline long double tanh( long double x ) { return tanhl( x ); } 206 static inline float _Complex tanh( float _Complex x ) { return ctanhf( x ); } 207 static inline double _Complex tanh( double _Complex x ) { return ctanh( x ); } 208 static inline long double _Complex tanh( long double _Complex x ) { return ctanhl( x ); } 209 210 static inline float asinh( float x ) { return asinhf( x ); } 212 211 // extern "C" { double asinh( double ); } 213 long double asinh( long double ); 214 float _Complex asinh( float _Complex ); 215 double _Complex asinh( double _Complex ); 216 long double _Complex asinh( long double _Complex ); 217 218 float acosh( float ); 212 static inline long double asinh( long double x ) { return asinhl( x ); } 213 static inline float _Complex asinh( float _Complex x ) { return casinhf( x ); } 214 static inline double _Complex asinh( double _Complex x ) { return casinh( x ); } 215 static inline long double _Complex asinh( long double _Complex x ) { return casinhl( x ); } 216 217 static inline float acosh( float x ) { return acoshf( x ); } 219 218 // extern "C" { double acosh( double ); } 220 long double acosh( long double ); 221 float _Complex acosh( float _Complex ); 222 double _Complex acosh( double _Complex ); 223 long double _Complex acosh( long double _Complex ); 224 225 float atanh( float ); 219 static inline long double acosh( long double x ) { return acoshl( x ); } 220 static inline float _Complex acosh( float _Complex x ) { return cacoshf( x ); } 221 static inline double _Complex acosh( double _Complex x ) { return cacosh( x ); } 222 static inline long double _Complex acosh( long double _Complex x ) { return cacoshl( x ); } 223 224 static inline float atanh( float x ) { return atanhf( x ); } 226 225 // extern "C" { double atanh( double ); } 227 long double atanh( long double ); 228 float _Complex atanh( float _Complex ); 229 double _Complex atanh( double _Complex ); 230 long double _Complex atanh( long double _Complex ); 226 static inline long double atanh( long double x ) { return atanhl( x ); } 227 static inline float _Complex atanh( float _Complex x ) { return catanhf( x ); } 228 static inline double _Complex atanh( double _Complex x ) { return catanh( x ); } 229 static inline long double _Complex atanh( long double _Complex x ) { return catanhl( x ); } 231 230 232 231 //---------------------- Error / Gamma ---------------------- 233 232 234 float erf( float ); 233 static inline float erf( float x ) { return erff( x ); } 235 234 // extern "C" { double erf( double ); } 236 long double erf( long double ); 235 static inline long double erf( long double x ) { return erfl( x ); } 237 236 // float _Complex erf( float _Complex ); 238 237 // double _Complex erf( double _Complex ); 239 238 // long double _Complex erf( long double _Complex ); 240 239 241 float erfc( float ); 240 static inline float erfc( float x ) { return erfcf( x ); } 242 241 // extern "C" { double erfc( double ); } 243 long double erfc( long double ); 242 static inline long double erfc( long double x ) { return erfcl( x ); } 244 243 // float _Complex erfc( float _Complex ); 245 244 // double _Complex erfc( double _Complex ); 246 245 // long double _Complex erfc( long double _Complex ); 247 246 248 float lgamma( float ); 247 static inline float lgamma( float x ) { return lgammaf( x ); } 249 248 // extern "C" { double lgamma( double ); } 250 long double lgamma( long double ); 251 float lgamma( float, int * ); 252 double lgamma( double, int * ); 253 long double lgamma( long double, int * ); 254 255 float tgamma( float ); 249 static inline long double lgamma( long double x ) { return lgammal( x ); } 250 static inline float lgamma( float x, int * sign ) { return lgammaf_r( x, sign ); } 251 static inline double lgamma( double x, int * sign ) { return lgamma_r( x, sign ); } 252 static inline long double lgamma( long double x, int * sign ) { return lgammal_r( x, sign ); } 253 254 static inline float tgamma( float x ) { return tgammaf( x ); } 256 255 // extern "C" { double tgamma( double ); } 257 long double tgamma( long double ); 256 static inline long double tgamma( long double x ) { return tgammal( x ); } 258 257 259 258 //---------------------- Nearest Integer ---------------------- 260 259 261 float floor( float ); 260 static inline float floor( float x ) { return floorf( x ); } 262 261 // extern "C" { double floor( double ); } 263 long double floor( long double ); 264 265 float ceil( float ); 262 static inline long double floor( long double x ) { return floorl( x ); } 263 264 static inline float ceil( float x ) { return ceilf( x ); } 266 265 // extern "C" { double ceil( double ); } 267 long double ceil( long double ); 268 269 float trunc( float ); 266 static inline long double ceil( long double x ) { return ceill( x ); } 267 268 static inline float trunc( float x ) { return truncf( x ); } 270 269 // extern "C" { double trunc( double ); } 271 long double trunc( long double ); 272 273 float rint( float ); 274 long double rint( long double ); 275 long int rint( float ); 276 long int rint( double ); 277 long int rint( long double ); 278 long long int rint( float ); 279 long long int rint( double ); 280 long long int rint( long double ); 281 282 long int lrint( float ); 270 static inline long double trunc( long double x ) { return truncl( x ); } 271 272 static inline float rint( float x ) { return rintf( x ); } 273 // extern "C" { double rint( double x ); } 274 static inline long double rint( long double x ) { return rintl( x ); } 275 static inline long int rint( float x ) { return lrintf( x ); } 276 static inline long int rint( double x ) { return lrint( x ); } 277 static inline long int rint( long double x ) { return lrintl( x ); } 278 static inline long long int rint( float x ) { return llrintf( x ); } 279 static inline long long int rint( double x ) { return llrint( x ); } 280 static inline long long int rint( long double x ) { return llrintl( x ); } 281 282 static inline long int lrint( float x ) { return lrintf( x ); } 283 283 // extern "C" { long int lrint( double ); } 284 long int lrint( long double ); 285 long long int llrint( float ); 284 static inline long int lrint( long double x ) { return lrintl( x ); } 285 static inline long long int llrint( float x ) { return llrintf( x ); } 286 286 // extern "C" { long long int llrint( double ); } 287 long long int llrint( long double ); 288 289 float nearbyint( float ); 287 static inline long long int llrint( long double x ) { return llrintl( x ); } 288 289 static inline float nearbyint( float x ) { return nearbyintf( x ); } 290 290 // extern "C" { double nearbyint( double ); } 291 long double nearbyint( long double ); 292 293 float round( float ); 294 long double round( long double ); 295 long int round( float ); 296 long int round( double ); 297 long int round( long double ); 298 long long int round( float ); 299 long long int round( double ); 300 long long int round( long double ); 301 302 long int lround( float ); 291 static inline long double nearbyint( long double x ) { return nearbyintl( x ); } 292 293 static inline float round( float x ) { return roundf( x ); } 294 // extern "C" { double round( double x ); } 295 static inline long double round( long double x ) { return roundl( x ); } 296 static inline long int round( float x ) { return lroundf( x ); } 297 static inline long int round( double x ) { return lround( x ); } 298 static inline long int round( long double x ) { return lroundl( x ); } 299 static inline long long int round( float x ) { return llroundf( x ); } 300 static inline long long int round( double x ) { return llround( x ); } 301 static inline long long int round( long double x ) { return llroundl( x ); } 302 303 static inline long int lround( float x ) { return lroundf( x ); } 303 304 // extern "C" { long int lround( double ); } 304 long int lround( long double ); 305 long long int llround( float ); 305 static inline long int lround( long double x ) { return lroundl( x ); } 306 static inline long long int llround( float x ) { return llroundf( x ); } 306 307 // extern "C" { long long int llround( double ); } 307 long long int llround( long double ); 308 static inline long long int llround( long double x ) { return llroundl( x ); } 308 309 309 310 //---------------------- Manipulation ---------------------- 310 311 311 float copysign( float, float ); 312 static inline float copysign( float x, float y ) { return copysignf( x, y ); } 312 313 // extern "C" { double copysign( double, double ); } 313 long double copysign( long double, long double ); 314 315 float frexp( float, int * ); 314 static inline long double copysign( long double x, long double y ) { return copysignl( x, y ); } 315 316 static inline float frexp( float x, int * ip ) { return frexpf( x, ip ); } 316 317 // extern "C" { double frexp( double, int * ); } 317 long double frexp( long double, int * ); 318 319 float ldexp( float, int ); 318 static inline long double frexp( long double x, int * ip ) { return frexpl( x, ip ); } 319 320 static inline float ldexp( float x, int exp2 ) { return ldexpf( x, exp2 ); } 320 321 // extern "C" { double ldexp( double, int ); } 321 long double ldexp( long double, int ); 322 323 [ float, float ] modf( float ); 324 float modf( float, float * ); 325 [ double, double ] modf( double ); 322 static inline long double ldexp( long double x, int exp2 ) { return ldexpl( x, exp2 ); } 323 324 static inline [ float, float ] modf( float x ) { float i; x = modff( x, &i ); return [ i, x ]; } 325 static inline float modf( float x, float * i ) { return modff( x, i ); } 326 static inline [ double, double ] modf( double x ) { double i; x = modf( x, &i ); return [ i, x ]; } 326 327 // extern "C" { double modf( double, double * ); } 327 [ long double, long double ] modf( long double ); 328 long double modf( long double, long double * ); 329 330 float nextafter( float, float ); 328 static inline [ long double, long double ] modf( long double x ) { long double i; x = modfl( x, &i ); return [ i, x ]; } 329 static inline long double modf( long double x, long double * i ) { return modfl( x, i ); } 330 331 static inline float nextafter( float x, float y ) { return nextafterf( x, y ); } 331 332 // extern "C" { double nextafter( double, double ); } 332 long double nextafter( long double, long double ); 333 334 float nexttoward( float, long double ); 333 static inline long double nextafter( long double x, long double y ) { return nextafterl( x, y ); } 334 335 static inline float nexttoward( float x, long double y ) { return nexttowardf( x, y ); } 335 336 // extern "C" { double nexttoward( double, long double ); } 336 long double nexttoward( long double, long double ); 337 338 float scalbn( float, int ); 337 static inline long double nexttoward( long double x, long double y ) { return nexttowardl( x, y ); } 338 339 static inline float scalbn( float x, int exp ) { return scalbnf( x, exp ); } 339 340 // extern "C" { double scalbn( double, int ); } 340 long double scalbn( long double, int ); 341 342 float scalbln( float, long int ); 341 static inline long double scalbn( long double x, int exp ) { return scalbnl( x, exp ); } 342 static inline float scalbn( float x, long int exp ) { return scalblnf( x, exp ); } 343 static inline double scalbn( double x, long int exp ) { return scalbln( x, exp ); } 344 static inline long double scalbn( long double x, long int exp ) { return scalblnl( x, exp ); } 345 346 static inline float scalbln( float x, long int exp ) { return scalblnf( x, exp ); } 343 347 // extern "C" { double scalbln( double, long int ); } 344 long double scalbln( long double, long int ); 348 static inline long double scalbln( long double x, long int exp ) { return scalblnl( x, exp ); } 345 349 346 350 // Local Variables: // -
src/libcfa/startup.h
rfd344aa r9236060 1 // -*- Mode: CFA -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 10 9 // Author : Thierry Delisle 11 10 // Created On : Wed Mar 29 15:56:41 2017 12 // Last Modified By : 13 // Last Modified On : 14 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 20 21:37:11 2017 13 // Update Count : 2 15 14 // 16 15 17 #ifndef STARTUP_H 18 #define STARTUP_H 16 #pragma once 19 17 20 18 #if GCC_VERSION > 50000 … … 34 32 #endif 35 33 36 #endif //STARTUP_H 34 // Local Variables: // 35 // mode: c // 36 // tab-width: 4 // 37 // End: // -
src/libcfa/stdhdr/assert.h
rfd344aa r9236060 10 10 // Created On : Mon Jul 4 23:25:26 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 5 20:34:23 201613 // Update Count : 812 // Last Modified On : Mon Jul 31 23:09:32 2017 13 // Update Count : 13 14 14 // 15 15 … … 18 18 #endif //__CFORALL__ 19 19 20 // has internal check for multiple expansion21 20 #include_next <assert.h> 21 22 #ifdef NDEBUG 23 #define assertf( expr, fmt, ... ) ((void)0) 24 #else 25 #define __STRINGIFY__(str) #str 26 #define __VSTRINGIFY__(str) __STRINGIFY__(str) 27 #define assertf( expr, fmt, ... ) ((expr) ? ((void)0) : __assert_fail_f(__VSTRINGIFY__(expr), __FILE__, __LINE__, __PRETTY_FUNCTION__, fmt, ## __VA_ARGS__ )) 28 29 void __assert_fail_f( const char *assertion, const char *file, unsigned int line, const char *function, const char *fmt, ... ) __attribute__((noreturn, format( printf, 5, 6) )); 30 #endif 22 31 23 32 #ifdef __CFORALL__ -
src/libcfa/stdhdr/gmp.h
rfd344aa r9236060 1 // -*- Mode: C -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo … … 11 10 // Created On : Sun May 14 23:46:01 2017 12 11 // Last Modified By : Peter A. Buhr 13 // Last Modified On : Sun May 14 23:46:34201714 // Update Count : 112 // Last Modified On : Thu Jul 20 18:10:52 2017 13 // Update Count : 4 15 14 // 16 15 -
src/libcfa/stdlib
rfd344aa r9236060 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 7 09:34:49201713 // Update Count : 2 1912 // Last Modified On : Mon Aug 7 11:19:07 2017 13 // Update Count : 223 14 14 // 15 15 … … 18 18 //--------------------------------------- 19 19 20 extern "C" {21 20 #ifndef EXIT_FAILURE 22 21 #define EXIT_FAILURE 1 // failing exit status 23 22 #define EXIT_SUCCESS 0 // successful exit status 24 23 #endif // ! EXIT_FAILURE 25 } // extern "C"26 24 27 25 //--------------------------------------- … … 185 183 //--------------------------------------- 186 184 185 [ int, int ] div( int num, int denom ); 186 [ long int, long int ] div( long int num, long int denom ); 187 [ long long int, long long int ] div( long long int num, long long int denom ); 187 188 forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } ) 188 [ T, T ] div( T t1, T t2);189 [ T, T ] div( T num, T demon ); 189 190 190 191 //--------------------------------------- -
src/libcfa/stdlib.c
rfd344aa r9236060 10 10 // Created On : Thu Jan 28 17:10:29 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T hu Jun 1 21:52:57201713 // Update Count : 2 8012 // Last Modified On : Tue Aug 8 17:31:13 2017 13 // Update Count : 291 14 14 // 15 15 … … 18 18 //--------------------------------------- 19 19 20 extern "C" {21 20 #define _XOPEN_SOURCE 600 // posix_memalign, *rand48 22 21 #include <stdlib.h> // malloc, free, calloc, realloc, memalign, posix_memalign, bsearch … … 25 24 #include <math.h> // fabsf, fabs, fabsl 26 25 #include <complex.h> // _Complex_I 27 } // extern "C"28 26 29 27 // resize, non-array types … … 257 255 //--------------------------------------- 258 256 257 [ int, int ] div( int num, int denom ) { div_t qr = div( num, denom ); return [ qr.quot, qr.rem ]; } 258 [ long int, long int ] div( long int num, long int denom ) { ldiv_t qr = ldiv( num, denom ); return [ qr.quot, qr.rem ]; } 259 [ long long int, long long int ] div( long long int num, long long int denom ) { lldiv_t qr = lldiv( num, denom ); return [ qr.quot, qr.rem ]; } 259 260 forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } ) 260 [ T, T ] div( T t1, T t2 ) { return [ t1 / t2, t1 % t2]; }261 [ T, T ] div( T num, T denom ) { return [ num / denom, num % denom ]; } 261 262 262 263 //--------------------------------------- -
src/main.cc
rfd344aa r9236060 11 11 // Created On : Fri May 15 23:12:02 2015 12 12 // Last Modified By : Andrew Beach 13 // Last Modified On : Fri Jul 7 11:13:00 201714 // Update Count : 44 213 // Last Modified On : Wed Jul 26 14:38:00 2017 14 // Update Count : 443 15 15 // 16 16 … … 58 58 #include "SynTree/Visitor.h" // for acceptAll 59 59 #include "Tuples/Tuples.h" // for expandMemberTuples, expan... 60 #include "Virtual/ExpandCasts.h" // for expandCasts 60 61 61 62 using namespace std; … … 313 314 } 314 315 316 OPTPRINT( "virtual expandCasts" ) // Must come after translateEHM 317 Virtual::expandCasts( translationUnit ); 318 315 319 OPTPRINT("instantiateGenerics") 316 320 GenPoly::instantiateGeneric( translationUnit ); -
src/prelude/builtins.c
rfd344aa r9236060 1 // 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo 3 // 4 // The contents of this file are covered under the licence agreement in the 5 // file "LICENCE" distributed with Cforall. 6 // 7 // builtins.c -- 8 // 9 // Author : Peter A. Buhr 10 // Created On : Fri Jul 21 16:21:03 2017 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Tus Jul 25 15:33:00 2017 13 // Update Count : 14 14 // 15 16 // exception implementation 17 1 18 typedef unsigned long long __cfaabi_exception_type_t; 2 19 20 #include "../libcfa/virtual.h" 3 21 #include "../libcfa/exception.h" 22 23 // exponentiation operator implementation 24 25 extern "C" { 26 float powf( float x, float y ); 27 double pow( double x, double y ); 28 long double powl( long double x, long double y ); 29 float _Complex cpowf( float _Complex x, _Complex float z ); 30 double _Complex cpow( double _Complex x, _Complex double z ); 31 long double _Complex cpowl( long double _Complex x, _Complex long double z ); 32 } // extern "C" 33 34 static inline float ?\?( float x, float y ) { return powf( x, y ); } 35 static inline double ?\?( double x, double y ) { return pow( x, y ); } 36 static inline long double ?\?( long double x, long double y ) { return powl( x, y ); } 37 static inline float _Complex ?\?( float _Complex x, _Complex float y ) { return cpowf(x, y ); } 38 static inline double _Complex ?\?( double _Complex x, _Complex double y ) { return cpow( x, y ); } 39 static inline long double _Complex ?\?( long double _Complex x, _Complex long double y ) { return cpowl( x, y ); } 40 41 static inline long int ?\?( long int ep, unsigned long int y ) { // disallow negative exponent 42 if ( y == 0 ) return 1; // base case 43 if ( ep == 2 ) return ep << (y - 1); // special case, positive shifting only 44 typeof( ep ) op = 1; // accumulate odd product 45 for ( ; y > 1; y >>= 1 ) { // squaring exponentiation, O(log2 y) 46 if ( (y & 1) == 1 ) op *= ep; // odd ? 47 ep *= ep; 48 } // for 49 return ep * op; 50 } // ?\? 51 52 // FIX ME, cannot resolve the "T op = 1". 53 54 // static inline forall( otype T | { void ?{}( T * this, one_t ); T ?*?( T, T ); } ) 55 // T ?\?( T ep, unsigned long int y ) { 56 // if ( y == 0 ) return 1; 57 // T op = 1; 58 // for ( ; y > 1; y >>= 1 ) { // squaring exponentiation, O(log2 y) 59 // if ( (y & 1) == 1 ) op = op * ep; // odd ? 60 // ep = ep * ep; 61 // } // for 62 // return ep * op; 63 // } // ?\? 64 65 // unsigned computation may be faster and larger 66 static inline unsigned long int ?\?( unsigned long int ep, unsigned long int y ) { // disallow negative exponent 67 if ( y == 0 ) return 1; // base case 68 if ( ep == 2 ) return ep << (y - 1); // special case, positive shifting only 69 typeof( ep ) op = 1; // accumulate odd product 70 for ( ; y > 1; y >>= 1 ) { // squaring exponentiation, O(log2 y) 71 if ( (y & 1) == 1 ) op *= ep; // odd ? 72 ep *= ep; 73 } // for 74 return ep * op; 75 } // ?\? 76 77 static inline double ?\?( long int x, signed long int y ) { // allow negative exponent 78 if ( y >= 0 ) return (double)(x \ (unsigned long int)y); 79 else return 1.0 / x \ (unsigned int)(-y); 80 } // ?\? 81 82 static inline forall( otype T | { void ?{}( T & this, one_t ); T ?*?( T, T ); double ?/?( double, T ); } ) 83 double ?\?( T x, signed long int y ) { 84 if ( y >= 0 ) return (double)(x \ (unsigned long int)y); 85 else return 1.0 / x \ (unsigned long int)(-y); 86 } // ?\? 87 88 static inline long int ?\=?( long int * x, unsigned long int y ) { *x = *x \ y; return *x; } 89 static inline unsigned long int ?\=?( unsigned long int * x, unsigned long int y ) { *x = *x \ y; return *x; } 90 static inline int ?\=?( int * x, unsigned long int y ) { *x = *x \ y; return *x; } 91 static inline unsigned int ?\=?( unsigned int * x, unsigned long int y ) { *x = *x \ y; return *x; } 92 93 // Local Variables: // 94 // mode: c // 95 // tab-width: 4 // 96 // End: // -
src/tests/.expect/32/math.txt
rfd344aa r9236060 2 2 remainder:-1 -1 -1 3 3 remquo:7 0.0999999 7 0.1 7 0.0999999999999999999 4 div:7 0.0999999 7 0.1 7 0.09999999999999999994 div:7, 0.2 7, 0.2 7, 0.2 5 5 fma:-2 -2 -2 6 6 fdim:2 2 2 … … 9 9 exp2:2 2 2 10 10 expm1:1.71828 1.71828182845905 1.71828182845904524 11 pow:1 1 1 0.273957+0.583701i 0.273957253830121+0.583700758758615i 0.273957253830121071+0.583700758758614628i 12 16 256 13 912673 256 64 -64 0.015625 -0.015625 18.3791736799526 0.264715-1.1922i 11 14 log:0 0 0 0.346574+0.785398i 0.346573590279973+0.785398163397448i 0.346573590279972655+0.78539816339744831i 12 15 log2:3 3 3 … … 18 21 cbrt:3 3 3 19 22 hypot:1.41421 1.4142135623731 1.41421356237309505 20 pow:1 1 1 0.273957+0.583701i 0.273957253830121+0.583700758758615i 0.273957253830121071+0.583700758758614628i21 23 sin:0.841471 0.841470984807897 0.841470984807896507 1.29846+0.634964i 1.29845758141598+0.634963914784736i 1.29845758141597729+0.634963914784736108i 22 24 cos:0.540302 0.54030230586814 0.540302305868139717 0.83373-0.988898i 0.833730025131149-0.988897705762865i 0.833730025131149049-0.988897705762865096i … … 53 55 frexp:0.5 3 0.5 3 0.5 3 54 56 ldexp:8 8 8 55 modf:2 0.3 2 0.3 2 0.3 nextafter:2 2 2 57 modf:2 0.3 2 0.3 2 0.3 58 modf:2, 0.3 2, 0.3 2, 0.3 59 nextafter:2 2 2 56 60 nexttoward:2 2 2 57 61 scalbn:16 16 16 -
src/tests/.expect/64/math.txt
rfd344aa r9236060 2 2 remainder:-1 -1 -1 3 3 remquo:7 0.0999999 7 0.1 7 0.0999999999999999999 4 div:7 0.0999999 7 0.1 7 0.09999999999999999994 div:7, 0.2 7, 0.2 7, 0.2 5 5 fma:-2 -2 -2 6 6 fdim:2 2 2 … … 9 9 exp2:2 2 2 10 10 expm1:1.71828 1.71828182845905 1.71828182845904524 11 pow:1 1 1 0.273957+0.583701i 0.273957253830121+0.583700758758615i 0.273957253830121071+0.583700758758614627i 12 16 256 13 912673 256 64 -64 0.015625 -0.015625 18.3791736799526 0.264715-1.1922i 11 14 log:0 0 0 0.346574+0.785398i 0.346573590279973+0.785398163397448i 0.346573590279972655+0.78539816339744831i 12 15 log2:3 3 3 … … 18 21 cbrt:3 3 3 19 22 hypot:1.41421 1.4142135623731 1.41421356237309505 20 pow:1 1 1 0.273957+0.583701i 0.273957253830121+0.583700758758615i 0.273957253830121071+0.583700758758614628i21 23 sin:0.841471 0.841470984807897 0.841470984807896507 1.29846+0.634964i 1.29845758141598+0.634963914784736i 1.29845758141597729+0.634963914784736108i 22 24 cos:0.540302 0.54030230586814 0.540302305868139717 0.83373-0.988898i 0.833730025131149-0.988897705762865i 0.833730025131149049-0.988897705762865096i … … 53 55 frexp:0.5 3 0.5 3 0.5 3 54 56 ldexp:8 8 8 55 modf:2 0.3 2 0.3 2 0.3 nextafter:2 2 2 57 modf:2 0.3 2 0.3 2 0.3 58 modf:2, 0.3 2, 0.3 2, 0.3 59 nextafter:2 2 2 56 60 nexttoward:2 2 2 57 61 scalbn:16 16 16 -
src/tests/alloc.c
rfd344aa r9236060 10 10 // Created On : Wed Feb 3 07:56:22 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jun 2 15:13:03 2017 13 // Update Count : 316 14 // 15 16 #include <assert> 17 extern "C" { 18 #include <malloc.h> // malloc_usable_size 19 #include <stdint.h> // uintptr_t 20 #include <stdlib.h> // posix_memalign 21 } // extern 12 // Last Modified On : Thu Jul 20 16:01:10 2017 13 // Update Count : 318 14 // 15 16 #include <assert.h> 17 #include <malloc.h> // malloc_usable_size 18 #include <stdint.h> // uintptr_t 19 #include <stdlib.h> // posix_memalign 22 20 #include <fstream> 23 #include <stdlib> // access C malloc, realloc21 #include <stdlib> // access C malloc, realloc 24 22 25 23 int * foo( int * p, int c ) { return p; } -
src/tests/attributes.c
rfd344aa r9236060 1 // -*- Mode: C -*-2 1 // 3 2 // Cforall Version 1.0.0 Copyright (C) 2017 University of Waterloo … … 11 10 // Created On : Mon Feb 6 16:07:02 2017 12 11 // Last Modified By : Peter A. Buhr 13 // Last Modified On : Mon Feb 6 16:08:21201714 // Update Count : 212 // Last Modified On : Fri Jul 21 23:05:52 2017 13 // Update Count : 3 15 14 // 16 15 -
src/tests/avltree/avl-private.h
rfd344aa r9236060 1 # ifndef AVL_PRIVATE_H1 #pragma once 2 2 #include "avl.h" 3 3 … … 14 14 forall(otype K | Comparable(K), otype V) 15 15 int height(tree(K, V) * t); 16 17 #endif -
src/tests/avltree/avl.h
rfd344aa r9236060 1 #ifndef AVL_TREE_H 2 #define AVL_TREE_H 1 #pragma once 3 2 4 3 extern "C" { … … 104 103 // printTree(t, 0); 105 104 // } 106 107 108 #endif -
src/tests/designations.c
rfd344aa r9236060 9 9 // Author : Rob Schluntz 10 10 // Created On : Thu Jun 29 15:26:36 2017 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Thu Ju n 29 15:27:05 201713 // Update Count : 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 27 11:46:35 2017 13 // Update Count : 3 14 14 // 15 15 … … 89 89 }; 90 90 91 struct Fred { 92 double i[3]; 93 int j; 94 struct Mary { 95 struct Jane { 96 double j; 97 } j; 98 double i; 99 } m; 100 }; 101 struct Fred s1 @= { .m.j : 3 }; 102 struct Fred s2 @= { .i : { [2] : 2 } }; 103 91 104 int main() { 92 105 // simple designation case - starting from beginning of structure, leaves ptr default-initialized (zero) … … 199 212 }; 200 213 #endif 201 214 // array designation 215 int i[2] = { [1] : 3 }; 202 216 // allowed to have 'too many' initialized lists - essentially they are ignored. 203 217 int i1 = { 3 }; … … 240 254 const char * str0 = "hello"; 241 255 char str1[] = "hello"; 256 const char c1[] = "abc"; 257 const char c2[] = { 'a', 'b', 'c' }; 258 const char c3[][2] = { { 'a', 'b' }, { 'c', 'd'}, { 'c', 'd'} }; 242 259 } 243 260 -
src/tests/except-0.c
rfd344aa r9236060 6 6 #include <stdbool.h> 7 7 8 // Local type to mark exits from scopes. (see ERROR) 8 9 struct signal_exit { 9 10 const char * area; … … 19 20 } 20 21 21 void terminate(int except_value) { 22 23 // Local Exception Types and manual vtable types. 24 //#define TRIVIAL_EXCEPTION(name) //TRIVAL_EXCEPTION(yin) 25 struct yin; 26 struct yin_vtable { 27 struct exception_t_vtable const * parent; 28 size_t size; 29 void (*copy)(yin *this, yin * other); 30 void (*free)(yin *this); 31 const char (*msg)(yin *this); 32 }; 33 struct yin { 34 struct yin_vtable const * parent; 35 }; 36 void yin_msg(yin) { 37 return "in"; 38 } 39 yin_vtable _yin_vtable_instance = { 40 &_exception_t_vtable_instance, sizeof(yin), ?{}, ^?{}, yin_msg 41 } 42 43 44 void terminate(exception * except_value) { 22 45 signal_exit a = {"terminate function"}; 23 46 throw except_value; … … 25 48 } 26 49 27 void resume( intexcept_value) {50 void resume(exception * except_value) { 28 51 signal_exit a = {"resume function"}; 29 52 throwResume except_value; -
src/tests/gmp.c
rfd344aa r9236060 10 10 // Created On : Tue Apr 19 08:55:51 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed May 24 22:05:38201713 // Update Count : 54 012 // Last Modified On : Thu Jul 13 16:35:01 2017 13 // Update Count : 541 14 14 // 15 15 … … 95 95 // Local Variables: // 96 96 // tab-width: 4 // 97 // compile-command: "cfa gmp.c -l gmp" //97 // compile-command: "cfa gmp.c -lgmp" // 98 98 // End: // -
src/tests/math.c
rfd344aa r9236060 10 10 // Created On : Fri Apr 22 14:59:21 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed May 24 13:04:33201713 // Update Count : 7 112 // Last Modified On : Wed Aug 9 07:20:49 2017 13 // Update Count : 77 14 14 // 15 15 … … 31 31 l = remquo( 3.6L, 0.5L, " ); 32 32 sout | quot | l | endl; 33 f = div( 3.6F, 0.5F, " ); 34 sout | "div:" | quot | f; 35 d = div( 3.6D, 0.5F, " ); 36 sout | quot | d; 37 l = div( 3.6L, 0.5L, " ); 38 sout | quot | l | endl; 33 sout | "div:" | div( 3.6F, 0.5F ) | div( 3.6D, 0.5D ) | div( 3.6L, 0.5L ) | endl; 39 34 sout | "fma:" | fma( 3.0F, -1.0F, 1.0F ) | fma( 3.0D, -1.0D, 1.0D ) | fma( 3.0L, -1.0L, , 1.0L ) | endl; 40 35 sout | "fdim:" | fdim( 1.0F, -1.0F ) | fdim( 1.0D, -1.0D ) | fdim( 1.0L, -1.0L ) | endl; … … 46 41 sout | "exp2:" | exp2( 1.0F ) | exp2( 1.0D ) | exp2( 1.0L ) | endl; 47 42 sout | "expm1:" | expm1( 1.0F ) | expm1( 1.0D ) | expm1( 1.0L ) | endl; 43 sout | "pow:" | pow( 1.0F, 1.0F ) | pow( 1.0D, 1.0D ) | pow( 1.0L, 1.0L ) | pow( 1.0F+1.0FI, 1.0F+1.0FI ) | pow( 1.0D+1.0DI, 1.0D+1.0DI ) | pow( 1.0DL+1.0LI, 1.0DL+1.0LI ) | endl; 44 45 int b = 4; 46 unsigned int e = 2; 47 b \= e; 48 sout | b | b \ e | endl; 49 sout | 'a' \ 3u | 2 \ 8u | 4 \ 3u | -4 \ 3u | 4 \ -3 | -4 \ -3 | 4.0 \ 2.1 | (1.0f+2.0fi) \ (3.0f+2.0fi) | endl; 50 51 //---------------------- Logarithm ---------------------- 52 48 53 sout | "log:" | log( 1.0F ) | log( 1.0D ) | log( 1.0L ) | log( 1.0F+1.0FI ) | log( 1.0D+1.0DI ) | log( 1.0DL+1.0LI ) | endl; 49 54 sout | "log2:" | log2( 8.0F ) | log2( 8.0D ) | log2( 8.0L ) | endl; … … 53 58 sout | "logb:" | logb( 8.0F ) | logb( 8.0D ) | logb( 8.0L ) | endl; 54 59 55 //---------------------- Power ----------------------56 57 60 sout | "sqrt:" | sqrt( 1.0F ) | sqrt( 1.0D ) | sqrt( 1.0L ) | sqrt( 1.0F+1.0FI ) | sqrt( 1.0D+1.0DI ) | sqrt( 1.0DL+1.0LI ) | endl; 58 61 sout | "cbrt:" | cbrt( 27.0F ) | cbrt( 27.0D ) | cbrt( 27.0L ) | endl; 59 62 sout | "hypot:" | hypot( 1.0F, -1.0F ) | hypot( 1.0D, -1.0D ) | hypot( 1.0L, -1.0L ) | endl; 60 sout | "pow:" | pow( 1.0F, 1.0F ) | pow( 1.0D, 1.0D ) | pow( 1.0L, 1.0L ) | pow( 1.0F+1.0FI, 1.0F+1.0FI ) | pow( 1.0D+1.0DI, 1.0D+1.0DI ) | pow( 1.0DL+1.0LI, 1.0DL+1.0LI ) | endl;61 63 62 64 //---------------------- Trigonometric ---------------------- … … 130 132 sout | di | d; 131 133 l = modf( 2.3L, &ldi ); 132 sout | ldi | l; 134 sout | ldi | l | endl; 135 sout | "modf:" | modf( 2.3F ) | modf( 2.3D ) | modf( 2.3L ) | endl; 133 136 sout | "nextafter:" | nextafter( 2.0F, 3.0F ) | nextafter( 2.0D, 3.0D ) | nextafter( 2.0L, 3.0L ) | endl; 134 137 sout | "nexttoward:" | nexttoward( 2.0F, 3.0F ) | nexttoward( 2.0D, 3.0D ) | nexttoward( 2.0L, 3.0L ) | endl; -
src/tests/maybe.c
rfd344aa r9236060 9 9 // Author : Andrew Beach 10 10 // Created On : Thr May 25 16:02:00 2017 11 // Last Modified By : Andrew Beach12 // Last Modified On : Fri May 16 15:43:00201713 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 20 15:24:07 2017 13 // Update Count : 1 14 14 // 15 15 16 #include <assert >16 #include <assert.h> 17 17 #include <containers/maybe> 18 18 -
src/tests/preempt_longrun/Makefile.am
rfd344aa r9236060 25 25 CC = @CFA_BINDIR@/@CFA_NAME@ 26 26 27 TESTS = b arge block create disjoint enter enter3 processor stack wait yield27 TESTS = block create disjoint enter enter3 processor stack wait yield 28 28 29 29 .INTERMEDIATE: ${TESTS} 30 30 31 31 all-local: ${TESTS:=.run} 32 33 clean-local: 34 rm -f ${TESTS} 32 35 33 36 % : %.c ${CC} -
src/tests/preempt_longrun/Makefile.in
rfd344aa r9236060 453 453 REPEAT = ${abs_top_srcdir}/tools/repeat -s 454 454 BUILD_FLAGS = -g -Wall -Wno-unused-function -quiet @CFA_FLAGS@ -debug -O2 -DPREEMPTION_RATE=${preempt} 455 TESTS = b arge block create disjoint enter enter3 processor stack wait yield455 TESTS = block create disjoint enter enter3 processor stack wait yield 456 456 all: all-am 457 457 … … 635 635 TEST_LOGS="$$log_list"; \ 636 636 exit $$? 637 barge.log: barge638 @p='barge'; \639 b='barge'; \640 $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \641 --log-file $$b.log --trs-file $$b.trs \642 $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \643 "$$tst" $(AM_TESTS_FD_REDIRECT)644 637 block.log: block 645 638 @p='block'; \ … … 790 783 clean: clean-am 791 784 792 clean-am: clean-generic mostlyclean-am785 clean-am: clean-generic clean-local mostlyclean-am 793 786 794 787 distclean: distclean-am … … 857 850 858 851 .PHONY: all all-am all-local check check-TESTS check-am clean \ 859 clean-generic c scopelist-am ctags-am distclean \852 clean-generic clean-local cscopelist-am ctags-am distclean \ 860 853 distclean-generic distdir dvi dvi-am html html-am info info-am \ 861 854 install install-am install-data install-data-am install-dvi \ … … 875 868 all-local: ${TESTS:=.run} 876 869 870 clean-local: 871 rm -f ${TESTS} 872 877 873 % : %.c ${CC} 878 874 ${AM_V_GEN}${CC} ${CFLAGS} ${<} -o ${@} -
src/tests/preempt_longrun/create.c
rfd344aa r9236060 1 1 #include <kernel> 2 2 #include <thread> 3 4 static const unsigned long N = 2_000ul; 3 5 4 6 #ifndef PREEMPTION_RATE … … 16 18 int main(int argc, char* argv[]) { 17 19 processor p; 18 for(int i = 0; i < 10_000ul; i++) {20 for(int i = 0; i < N; i++) { 19 21 worker_t w[7]; 20 22 } -
src/tests/preempt_longrun/enter.c
rfd344aa r9236060 3 3 #include <thread> 4 4 5 #undef N6 5 static const unsigned long N = 70_000ul; 7 6 -
src/tests/preempt_longrun/enter3.c
rfd344aa r9236060 3 3 #include <thread> 4 4 5 #undef N6 5 static const unsigned long N = 50_000ul; 7 6 -
src/tests/preempt_longrun/processor.c
rfd344aa r9236060 1 1 #include <kernel> 2 2 #include <thread> 3 4 static const unsigned long N = 5_000ul; 3 5 4 6 #ifndef PREEMPTION_RATE … … 15 17 16 18 int main(int argc, char* argv[]) { 17 for(int i = 0; i < 10_000ul; i++) {19 for(int i = 0; i < N; i++) { 18 20 processor p; 19 21 } -
src/tests/preempt_longrun/yield.c
rfd344aa r9236060 1 1 #include <kernel> 2 2 #include <thread> 3 4 static const unsigned long N = 325_000ul; 3 5 4 6 #ifndef PREEMPTION_RATE … … 13 15 14 16 void main(worker_t * this) { 15 for(int i = 0; i < 325_000ul; i++) {17 for(int i = 0; i < N; i++) { 16 18 yield(); 17 19 } -
src/tests/result.c
rfd344aa r9236060 9 9 // Author : Andrew Beach 10 10 // Created On : Thr May 25 16:50:00 2017 11 // Last Modified By : Andrew Beach12 // Last Modified On : Fri Jun 16 15:42:00201713 // Update Count : 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 20 15:24:12 2017 13 // Update Count : 1 14 14 // 15 15 16 #include <assert >16 #include <assert.h> 17 17 #include <containers/result> 18 18 -
src/tests/sched-int-barge.c
rfd344aa r9236060 5 5 #include <thread> 6 6 7 static const unsigned long N = 50_000ul; 8 9 #ifndef PREEMPTION_RATE 10 #define PREEMPTION_RATE 10_000ul 11 #endif 12 13 unsigned int default_preemption() { 14 return 0; 15 } 7 16 enum state_t { WAIT, SIGNAL, BARGE }; 8 17 … … 10 19 11 20 monitor global_data_t { 12 bool done;21 volatile bool done; 13 22 int counter; 14 23 state_t state; … … 51 60 c.do_wait2 = ((unsigned)rand48()) % (c.do_signal); 52 61 53 //if(c.do_wait1 == c.do_wait2) sout | "Same" | endl;62 if(c.do_wait1 == c.do_wait2) sout | "Same" | endl; 54 63 } 55 64 … … 73 82 } 74 83 75 if( c.counter >= 100_000) c.done = true;84 if( c.counter >= N ) c.done = true; 76 85 return !c.done; 77 86 } … … 89 98 } 90 99 100 static thread_desc * volatile the_threads; 101 91 102 int main(int argc, char* argv[]) { 92 103 rand48seed(0); … … 94 105 { 95 106 Threads t[17]; 107 the_threads = (thread_desc*)t; 96 108 } 97 109 } -
src/tests/sched-int-block.c
rfd344aa r9236060 5 5 #include <thread> 6 6 7 #ifndef N 8 #define N 10_000 7 #include <time.h> 8 9 static const unsigned long N = 5_000ul; 10 11 #ifndef PREEMPTION_RATE 12 #define PREEMPTION_RATE 10_000ul 9 13 #endif 14 15 unsigned int default_preemption() { 16 return PREEMPTION_RATE; 17 } 10 18 11 19 enum state_t { WAITED, SIGNAL, BARGE }; … … 102 110 103 111 int main(int argc, char* argv[]) { 104 rand48seed( 0);112 rand48seed( time( NULL ) ); 105 113 done = false; 106 114 processor p; -
src/tests/sched-int-disjoint.c
rfd344aa r9236060 4 4 #include <thread> 5 5 6 #ifndef N 7 #define N 10_000 6 static const unsigned long N = 10_000ul; 7 8 #ifndef PREEMPTION_RATE 9 #define PREEMPTION_RATE 10_000ul 8 10 #endif 11 12 unsigned int default_preemption() { 13 return PREEMPTION_RATE; 14 } 9 15 10 16 enum state_t { WAIT, SIGNAL, BARGE }; -
src/tests/sched-int-wait.c
rfd344aa r9236060 5 5 #include <thread> 6 6 7 #ifndef N 8 #define N 10_000 7 static const unsigned long N = 10_000ul; 8 9 #ifndef PREEMPTION_RATE 10 #define PREEMPTION_RATE 10_000ul 9 11 #endif 12 13 unsigned int default_preemption() { 14 return PREEMPTION_RATE; 15 } 10 16 11 17 monitor global_t {}; … … 114 120 int main(int argc, char* argv[]) { 115 121 waiter_left = 4; 116 processor p ;122 processor p[2]; 117 123 sout | "Starting" | endl; 118 124 { -
src/tests/test.py
rfd344aa r9236060 221 221 if retcode == TestResult.SUCCESS: result_txt = "Done" 222 222 elif retcode == TestResult.TIMEOUT: result_txt = "TIMEOUT" 223 else : result_txt = "ERROR "223 else : result_txt = "ERROR code %d" % retcode 224 224 else : 225 225 if retcode == TestResult.SUCCESS: result_txt = "PASSED" 226 226 elif retcode == TestResult.TIMEOUT: result_txt = "TIMEOUT" 227 else : result_txt = "FAILED "227 else : result_txt = "FAILED with code %d" % retcode 228 228 229 229 #print result with error if needed -
src/tests/vector/array.h
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Wed May 27 17:56:53 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Apr 27 17:26:04 201613 // Update Count : 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 10:04:20 2017 13 // Update Count : 6 14 14 // 15 15 16 #ifndef ARRAY_H 17 #define ARRAY_H 16 #pragma once 18 17 19 18 //#include <iterator> … … 45 44 elt_type * end( array_type * array ); 46 45 47 #endif // ARRAY_H48 49 46 // Local Variables: // 50 47 // tab-width: 4 // -
src/tests/vector/vector_int.h
rfd344aa r9236060 9 9 // Author : Richard C. Bilson 10 10 // Created On : Wed May 27 17:56:53 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Apr 27 17:26:59 201613 // Update Count : 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 22 10:04:02 2017 13 // Update Count : 4 14 14 // 15 15 16 #ifndef VECTOR_INT_H 17 #define VECTOR_INT_H 16 #pragma once 18 17 19 18 // A flexible array, similar to a C++ vector, that holds integers and can be resized dynamically … … 27 26 void ?{}( vector_int & ); // allocate vector with default capacity 28 27 void ?{}( vector_int &, int reserve ); // allocate vector with specified capacity 29 void ?{}( vector_int & vec, vector_int other ); // copy constructor30 void ^?{}( vector_int & ); // deallocate vector's storage28 void ?{}( vector_int & vec, vector_int other ); // copy constructor 29 void ^?{}( vector_int & ); // deallocate vector's storage 31 30 32 31 void reserve( vector_int *vec, int reserve ); // reserve more capacity … … 36 35 37 36 int & ?[?]( vector_int * vec, int index ); // access to arbitrary element (does not resize) 38 int last( vector_int * vec ); // return last element 39 40 #endif // VECTOR_INT_H 37 int last( vector_int * vec ); // return last element 41 38 42 39 // Local Variables: //
Note:
See TracChangeset
for help on using the changeset viewer.