- Timestamp:
- Sep 25, 2018, 11:35:34 AM (7 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
- Children:
- c6bbcdb
- Parents:
- 341bb80 (diff), 7428ad9 (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:
-
- 5 added
- 21 edited
-
CodeTools/ResolvProtoDump.cc (added)
-
CodeTools/ResolvProtoDump.h (added)
-
CodeTools/module.mk (modified) (1 diff)
-
CompilationState.cc (modified) (1 diff)
-
CompilationState.h (modified) (1 diff)
-
GenPoly/ScrubTyVars.cc (modified) (1 diff)
-
Makefile.am (modified) (2 diffs)
-
Makefile.in (modified) (21 diffs)
-
Parser/LinkageSpec.cc (modified) (2 diffs)
-
Parser/LinkageSpec.h (modified) (2 diffs)
-
Parser/lex.ll (modified) (2 diffs)
-
Parser/parser.yy (modified) (8 diffs)
-
ResolvExpr/AlternativeFinder.cc (modified) (2 diffs)
-
ResolvExpr/Resolver.cc (modified) (9 diffs)
-
ResolvExpr/Resolver.h (modified) (1 diff)
-
ResolvExpr/TypeEnvironment.cc (modified) (6 diffs)
-
SymTab/Demangle.cc (added)
-
SymTab/Mangler.cc (modified) (16 diffs)
-
SymTab/Mangler.h (modified) (2 diffs)
-
SymTab/ManglerCommon.cc (added)
-
SymTab/Validate.cc (modified) (6 diffs)
-
SymTab/demangler.cc (added)
-
SymTab/module.mk (modified) (1 diff)
-
SynTree/Declaration.h (modified) (1 diff)
-
cfa.make (modified) (1 diff)
-
main.cc (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/CodeTools/module.mk
r341bb80 r6d44da1 16 16 17 17 SRC += CodeTools/DeclStats.cc \ 18 CodeTools/ResolvProtoDump.cc \ 18 19 CodeTools/TrackLoc.cc -
src/CompilationState.cc
r341bb80 r6d44da1 30 30 parsep = false, 31 31 resolvep = false, 32 resolvprotop = false, 32 33 symtabp = false, 33 34 treep = false, -
src/CompilationState.h
r341bb80 r6d44da1 31 31 parsep, 32 32 resolvep, 33 resolvprotop, 33 34 symtabp, 34 35 treep, -
src/GenPoly/ScrubTyVars.cc
r341bb80 r6d44da1 50 50 delete typeInst; 51 51 return new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) ); 52 default: 53 assertf(false, "Unhandled tyvar kind: %d", tyVar->second.kind); 52 54 } // switch 53 55 } // if -
src/Makefile.am
r341bb80 r6d44da1 44 44 # put into lib for now 45 45 cfa_cpplibdir = $(CFA_LIBDIR) 46 cfa_cpplib_PROGRAMS = ../driver/cfa-cpp 46 cfa_cpplib_PROGRAMS = ../driver/cfa-cpp demangler 47 47 ___driver_cfa_cpp_SOURCES = $(SRC) 48 48 ___driver_cfa_cpp_LDADD = -ldl # yywrap … … 50 50 AM_CXXFLAGS = @HOST_FLAGS@ -Wno-deprecated -Wall -Wextra -DDEBUG_ALL -I./Parser -I$(srcdir)/Parser -I$(srcdir)/include -DYY_NO_INPUT -O2 -g -std=c++14 51 51 AM_LDFLAGS = @HOST_FLAGS@ -Xlinker -export-dynamic 52 ARFLAGS = cr 53 54 demangler_SOURCES = SymTab/demangler.cc 55 56 demangler_LDADD = libdemangle.a # yywrap 57 58 noinst_LIBRARIES = libdemangle.a 59 libdemangle_a_SOURCES = SymTab/Demangle.cc SymTab/ManglerCommon.cc \ 60 SynTree/Type.cc \ 61 SynTree/VoidType.cc \ 62 SynTree/BasicType.cc \ 63 SynTree/PointerType.cc \ 64 SynTree/ArrayType.cc \ 65 SynTree/ReferenceType.cc \ 66 SynTree/FunctionType.cc \ 67 SynTree/ReferenceToType.cc \ 68 SynTree/TupleType.cc \ 69 SynTree/TypeofType.cc \ 70 SynTree/AttrType.cc \ 71 SynTree/VarArgsType.cc \ 72 SynTree/ZeroOneType.cc \ 73 SynTree/Constant.cc \ 74 SynTree/Expression.cc \ 75 SynTree/TupleExpr.cc \ 76 SynTree/CommaExpr.cc \ 77 SynTree/TypeExpr.cc \ 78 SynTree/ApplicationExpr.cc \ 79 SynTree/AddressExpr.cc \ 80 SynTree/Statement.cc \ 81 SynTree/CompoundStmt.cc \ 82 SynTree/DeclStmt.cc \ 83 SynTree/Declaration.cc \ 84 SynTree/DeclarationWithType.cc \ 85 SynTree/ObjectDecl.cc \ 86 SynTree/FunctionDecl.cc \ 87 SynTree/AggregateDecl.cc \ 88 SynTree/NamedTypeDecl.cc \ 89 SynTree/TypeDecl.cc \ 90 SynTree/Initializer.cc \ 91 SynTree/TypeSubstitution.cc \ 92 SynTree/Attribute.cc \ 93 SynTree/DeclReplacer.cc \ 94 CompilationState.cc \ 95 CodeGen/CodeGenerator.cc \ 96 CodeGen/FixMain.cc \ 97 CodeGen/GenType.cc \ 98 CodeGen/OperatorTable.cc \ 99 Common/Assert.cc \ 100 Common/Eval.cc \ 101 Common/SemanticError.cc \ 102 Common/UniqueName.cc \ 103 Concurrency/Keywords.cc \ 104 ControlStruct/ForExprMutator.cc \ 105 ControlStruct/LabelFixer.cc \ 106 ControlStruct/LabelGenerator.cc \ 107 ControlStruct/MLEMutator.cc \ 108 ControlStruct/Mutate.cc \ 109 GenPoly/GenPoly.cc \ 110 GenPoly/Lvalue.cc \ 111 InitTweak/GenInit.cc \ 112 InitTweak/InitTweak.cc \ 113 Parser/LinkageSpec.cc \ 114 ResolvExpr/AdjustExprType.cc \ 115 ResolvExpr/Alternative.cc \ 116 ResolvExpr/AlternativeFinder.cc \ 117 ResolvExpr/ExplodedActual.cc \ 118 ResolvExpr/CastCost.cc \ 119 ResolvExpr/CommonType.cc \ 120 ResolvExpr/ConversionCost.cc \ 121 ResolvExpr/CurrentObject.cc \ 122 ResolvExpr/FindOpenVars.cc \ 123 ResolvExpr/Occurs.cc \ 124 ResolvExpr/PolyCost.cc \ 125 ResolvExpr/PtrsAssignable.cc \ 126 ResolvExpr/PtrsCastable.cc \ 127 ResolvExpr/RenameVars.cc \ 128 ResolvExpr/Resolver.cc \ 129 ResolvExpr/ResolveTypeof.cc \ 130 ResolvExpr/TypeEnvironment.cc \ 131 ResolvExpr/Unify.cc \ 132 SymTab/Autogen.cc \ 133 SymTab/FixFunction.cc \ 134 SymTab/Indexer.cc \ 135 SymTab/Mangler.cc \ 136 SymTab/Validate.cc \ 137 Tuples/Explode.cc \ 138 Tuples/TupleAssignment.cc \ 139 Tuples/TupleExpansion.cc \ 140 Validate/HandleAttributes.cc 52 141 53 142 MAINTAINERCLEANFILES += ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}} -
src/Makefile.in
r341bb80 r6d44da1 62 62 ######################### -*- Mode: Makefile-Gmake -*- ######################## 63 63 ############################################################################### 64 64 65 65 66 VPATH = @srcdir@ … … 137 138 build_triplet = @build@ 138 139 host_triplet = @host@ 139 cfa_cpplib_PROGRAMS = ../driver/cfa-cpp$(EXEEXT) 140 cfa_cpplib_PROGRAMS = ../driver/cfa-cpp$(EXEEXT) demangler$(EXEEXT) 140 141 subdir = src 141 142 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 … … 149 150 CONFIG_CLEAN_FILES = 150 151 CONFIG_CLEAN_VPATH_FILES = 152 LIBRARIES = $(noinst_LIBRARIES) 153 AR = ar 154 AM_V_AR = $(am__v_AR_@AM_V@) 155 am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) 156 am__v_AR_0 = @echo " AR " $@; 157 am__v_AR_1 = 158 libdemangle_a_AR = $(AR) $(ARFLAGS) 159 libdemangle_a_LIBADD = 160 am__dirstamp = $(am__leading_dot)dirstamp 161 am_libdemangle_a_OBJECTS = SymTab/Demangle.$(OBJEXT) \ 162 SymTab/ManglerCommon.$(OBJEXT) SynTree/Type.$(OBJEXT) \ 163 SynTree/VoidType.$(OBJEXT) SynTree/BasicType.$(OBJEXT) \ 164 SynTree/PointerType.$(OBJEXT) SynTree/ArrayType.$(OBJEXT) \ 165 SynTree/ReferenceType.$(OBJEXT) SynTree/FunctionType.$(OBJEXT) \ 166 SynTree/ReferenceToType.$(OBJEXT) SynTree/TupleType.$(OBJEXT) \ 167 SynTree/TypeofType.$(OBJEXT) SynTree/AttrType.$(OBJEXT) \ 168 SynTree/VarArgsType.$(OBJEXT) SynTree/ZeroOneType.$(OBJEXT) \ 169 SynTree/Constant.$(OBJEXT) SynTree/Expression.$(OBJEXT) \ 170 SynTree/TupleExpr.$(OBJEXT) SynTree/CommaExpr.$(OBJEXT) \ 171 SynTree/TypeExpr.$(OBJEXT) SynTree/ApplicationExpr.$(OBJEXT) \ 172 SynTree/AddressExpr.$(OBJEXT) SynTree/Statement.$(OBJEXT) \ 173 SynTree/CompoundStmt.$(OBJEXT) SynTree/DeclStmt.$(OBJEXT) \ 174 SynTree/Declaration.$(OBJEXT) \ 175 SynTree/DeclarationWithType.$(OBJEXT) \ 176 SynTree/ObjectDecl.$(OBJEXT) SynTree/FunctionDecl.$(OBJEXT) \ 177 SynTree/AggregateDecl.$(OBJEXT) \ 178 SynTree/NamedTypeDecl.$(OBJEXT) SynTree/TypeDecl.$(OBJEXT) \ 179 SynTree/Initializer.$(OBJEXT) \ 180 SynTree/TypeSubstitution.$(OBJEXT) SynTree/Attribute.$(OBJEXT) \ 181 SynTree/DeclReplacer.$(OBJEXT) CompilationState.$(OBJEXT) \ 182 CodeGen/CodeGenerator.$(OBJEXT) CodeGen/FixMain.$(OBJEXT) \ 183 CodeGen/GenType.$(OBJEXT) CodeGen/OperatorTable.$(OBJEXT) \ 184 Common/Assert.$(OBJEXT) Common/Eval.$(OBJEXT) \ 185 Common/SemanticError.$(OBJEXT) Common/UniqueName.$(OBJEXT) \ 186 Concurrency/Keywords.$(OBJEXT) \ 187 ControlStruct/ForExprMutator.$(OBJEXT) \ 188 ControlStruct/LabelFixer.$(OBJEXT) \ 189 ControlStruct/LabelGenerator.$(OBJEXT) \ 190 ControlStruct/MLEMutator.$(OBJEXT) \ 191 ControlStruct/Mutate.$(OBJEXT) GenPoly/GenPoly.$(OBJEXT) \ 192 GenPoly/Lvalue.$(OBJEXT) InitTweak/GenInit.$(OBJEXT) \ 193 InitTweak/InitTweak.$(OBJEXT) Parser/LinkageSpec.$(OBJEXT) \ 194 ResolvExpr/AdjustExprType.$(OBJEXT) \ 195 ResolvExpr/Alternative.$(OBJEXT) \ 196 ResolvExpr/AlternativeFinder.$(OBJEXT) \ 197 ResolvExpr/ExplodedActual.$(OBJEXT) \ 198 ResolvExpr/CastCost.$(OBJEXT) ResolvExpr/CommonType.$(OBJEXT) \ 199 ResolvExpr/ConversionCost.$(OBJEXT) \ 200 ResolvExpr/CurrentObject.$(OBJEXT) \ 201 ResolvExpr/FindOpenVars.$(OBJEXT) ResolvExpr/Occurs.$(OBJEXT) \ 202 ResolvExpr/PolyCost.$(OBJEXT) \ 203 ResolvExpr/PtrsAssignable.$(OBJEXT) \ 204 ResolvExpr/PtrsCastable.$(OBJEXT) \ 205 ResolvExpr/RenameVars.$(OBJEXT) ResolvExpr/Resolver.$(OBJEXT) \ 206 ResolvExpr/ResolveTypeof.$(OBJEXT) \ 207 ResolvExpr/TypeEnvironment.$(OBJEXT) \ 208 ResolvExpr/Unify.$(OBJEXT) SymTab/Autogen.$(OBJEXT) \ 209 SymTab/FixFunction.$(OBJEXT) SymTab/Indexer.$(OBJEXT) \ 210 SymTab/Mangler.$(OBJEXT) SymTab/Validate.$(OBJEXT) \ 211 Tuples/Explode.$(OBJEXT) Tuples/TupleAssignment.$(OBJEXT) \ 212 Tuples/TupleExpansion.$(OBJEXT) \ 213 Validate/HandleAttributes.$(OBJEXT) 214 libdemangle_a_OBJECTS = $(am_libdemangle_a_OBJECTS) 151 215 am__installdirs = "$(DESTDIR)$(cfa_cpplibdir)" 152 216 PROGRAMS = $(cfa_cpplib_PROGRAMS) 153 am__dirstamp = $(am__leading_dot)dirstamp154 217 am__objects_1 = main.$(OBJEXT) MakeLibCfa.$(OBJEXT) \ 155 218 CompilationState.$(OBJEXT) CodeGen/Generate.$(OBJEXT) \ … … 157 220 CodeGen/FixNames.$(OBJEXT) CodeGen/FixMain.$(OBJEXT) \ 158 221 CodeGen/OperatorTable.$(OBJEXT) CodeTools/DeclStats.$(OBJEXT) \ 222 CodeTools/ResolvProtoDump.$(OBJEXT) \ 159 223 CodeTools/TrackLoc.$(OBJEXT) Concurrency/Keywords.$(OBJEXT) \ 160 224 Concurrency/Waitfor.$(OBJEXT) Common/SemanticError.$(OBJEXT) \ … … 196 260 ResolvExpr/CurrentObject.$(OBJEXT) \ 197 261 ResolvExpr/ExplodedActual.$(OBJEXT) SymTab/Indexer.$(OBJEXT) \ 198 SymTab/Mangler.$(OBJEXT) SymTab/ Validate.$(OBJEXT) \199 SymTab/ FixFunction.$(OBJEXT) SymTab/Autogen.$(OBJEXT) \200 Sy nTree/Type.$(OBJEXT) SynTree/VoidType.$(OBJEXT) \201 SynTree/ BasicType.$(OBJEXT) SynTree/PointerType.$(OBJEXT) \202 SynTree/ ArrayType.$(OBJEXT) SynTree/ReferenceType.$(OBJEXT) \203 SynTree/ FunctionType.$(OBJEXT) \262 SymTab/Mangler.$(OBJEXT) SymTab/ManglerCommon.$(OBJEXT) \ 263 SymTab/Validate.$(OBJEXT) SymTab/FixFunction.$(OBJEXT) \ 264 SymTab/Autogen.$(OBJEXT) SynTree/Type.$(OBJEXT) \ 265 SynTree/VoidType.$(OBJEXT) SynTree/BasicType.$(OBJEXT) \ 266 SynTree/PointerType.$(OBJEXT) SynTree/ArrayType.$(OBJEXT) \ 267 SynTree/ReferenceType.$(OBJEXT) SynTree/FunctionType.$(OBJEXT) \ 204 268 SynTree/ReferenceToType.$(OBJEXT) SynTree/TupleType.$(OBJEXT) \ 205 269 SynTree/TypeofType.$(OBJEXT) SynTree/AttrType.$(OBJEXT) \ … … 225 289 ___driver_cfa_cpp_OBJECTS = $(am____driver_cfa_cpp_OBJECTS) 226 290 ___driver_cfa_cpp_DEPENDENCIES = 291 am_demangler_OBJECTS = SymTab/demangler.$(OBJEXT) 292 demangler_OBJECTS = $(am_demangler_OBJECTS) 293 demangler_DEPENDENCIES = libdemangle.a 227 294 AM_V_P = $(am__v_P_@AM_V@) 228 295 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) … … 279 346 am__v_CCLD_0 = @echo " CCLD " $@; 280 347 am__v_CCLD_1 = 281 SOURCES = $(___driver_cfa_cpp_SOURCES) 282 DIST_SOURCES = $(___driver_cfa_cpp_SOURCES) 348 SOURCES = $(libdemangle_a_SOURCES) $(___driver_cfa_cpp_SOURCES) \ 349 $(demangler_SOURCES) 350 DIST_SOURCES = $(libdemangle_a_SOURCES) $(___driver_cfa_cpp_SOURCES) \ 351 $(demangler_SOURCES) 283 352 am__can_run_installinfo = \ 284 353 case $$AM_UPDATE_INFO_DIR in \ … … 451 520 CodeGen/FixNames.cc CodeGen/FixMain.cc \ 452 521 CodeGen/OperatorTable.cc CodeTools/DeclStats.cc \ 453 CodeTools/TrackLoc.cc Concurrency/Keywords.cc \ 454 Concurrency/Waitfor.cc Common/SemanticError.cc \ 455 Common/UniqueName.cc Common/DebugMalloc.cc Common/Assert.cc \ 456 Common/Heap.cc Common/Eval.cc ControlStruct/LabelGenerator.cc \ 522 CodeTools/ResolvProtoDump.cc CodeTools/TrackLoc.cc \ 523 Concurrency/Keywords.cc Concurrency/Waitfor.cc \ 524 Common/SemanticError.cc Common/UniqueName.cc \ 525 Common/DebugMalloc.cc Common/Assert.cc Common/Heap.cc \ 526 Common/Eval.cc ControlStruct/LabelGenerator.cc \ 457 527 ControlStruct/LabelFixer.cc ControlStruct/MLEMutator.cc \ 458 528 ControlStruct/Mutate.cc ControlStruct/ForExprMutator.cc \ … … 477 547 ResolvExpr/Occurs.cc ResolvExpr/TypeEnvironment.cc \ 478 548 ResolvExpr/CurrentObject.cc ResolvExpr/ExplodedActual.cc \ 479 SymTab/Indexer.cc SymTab/Mangler.cc SymTab/ Validate.cc \480 SymTab/ FixFunction.cc SymTab/Autogen.cc SynTree/Type.cc \481 SynTree/ VoidType.cc SynTree/BasicType.cc \549 SymTab/Indexer.cc SymTab/Mangler.cc SymTab/ManglerCommon.cc \ 550 SymTab/Validate.cc SymTab/FixFunction.cc SymTab/Autogen.cc \ 551 SynTree/Type.cc SynTree/VoidType.cc SynTree/BasicType.cc \ 482 552 SynTree/PointerType.cc SynTree/ArrayType.cc \ 483 553 SynTree/ReferenceType.cc SynTree/FunctionType.cc \ … … 511 581 AM_CXXFLAGS = @HOST_FLAGS@ -Wno-deprecated -Wall -Wextra -DDEBUG_ALL -I./Parser -I$(srcdir)/Parser -I$(srcdir)/include -DYY_NO_INPUT -O2 -g -std=c++14 512 582 AM_LDFLAGS = @HOST_FLAGS@ -Xlinker -export-dynamic 583 ARFLAGS = cr 584 demangler_SOURCES = SymTab/demangler.cc 585 demangler_LDADD = libdemangle.a # yywrap 586 noinst_LIBRARIES = libdemangle.a 587 libdemangle_a_SOURCES = SymTab/Demangle.cc SymTab/ManglerCommon.cc \ 588 SynTree/Type.cc \ 589 SynTree/VoidType.cc \ 590 SynTree/BasicType.cc \ 591 SynTree/PointerType.cc \ 592 SynTree/ArrayType.cc \ 593 SynTree/ReferenceType.cc \ 594 SynTree/FunctionType.cc \ 595 SynTree/ReferenceToType.cc \ 596 SynTree/TupleType.cc \ 597 SynTree/TypeofType.cc \ 598 SynTree/AttrType.cc \ 599 SynTree/VarArgsType.cc \ 600 SynTree/ZeroOneType.cc \ 601 SynTree/Constant.cc \ 602 SynTree/Expression.cc \ 603 SynTree/TupleExpr.cc \ 604 SynTree/CommaExpr.cc \ 605 SynTree/TypeExpr.cc \ 606 SynTree/ApplicationExpr.cc \ 607 SynTree/AddressExpr.cc \ 608 SynTree/Statement.cc \ 609 SynTree/CompoundStmt.cc \ 610 SynTree/DeclStmt.cc \ 611 SynTree/Declaration.cc \ 612 SynTree/DeclarationWithType.cc \ 613 SynTree/ObjectDecl.cc \ 614 SynTree/FunctionDecl.cc \ 615 SynTree/AggregateDecl.cc \ 616 SynTree/NamedTypeDecl.cc \ 617 SynTree/TypeDecl.cc \ 618 SynTree/Initializer.cc \ 619 SynTree/TypeSubstitution.cc \ 620 SynTree/Attribute.cc \ 621 SynTree/DeclReplacer.cc \ 622 CompilationState.cc \ 623 CodeGen/CodeGenerator.cc \ 624 CodeGen/FixMain.cc \ 625 CodeGen/GenType.cc \ 626 CodeGen/OperatorTable.cc \ 627 Common/Assert.cc \ 628 Common/Eval.cc \ 629 Common/SemanticError.cc \ 630 Common/UniqueName.cc \ 631 Concurrency/Keywords.cc \ 632 ControlStruct/ForExprMutator.cc \ 633 ControlStruct/LabelFixer.cc \ 634 ControlStruct/LabelGenerator.cc \ 635 ControlStruct/MLEMutator.cc \ 636 ControlStruct/Mutate.cc \ 637 GenPoly/GenPoly.cc \ 638 GenPoly/Lvalue.cc \ 639 InitTweak/GenInit.cc \ 640 InitTweak/InitTweak.cc \ 641 Parser/LinkageSpec.cc \ 642 ResolvExpr/AdjustExprType.cc \ 643 ResolvExpr/Alternative.cc \ 644 ResolvExpr/AlternativeFinder.cc \ 645 ResolvExpr/ExplodedActual.cc \ 646 ResolvExpr/CastCost.cc \ 647 ResolvExpr/CommonType.cc \ 648 ResolvExpr/ConversionCost.cc \ 649 ResolvExpr/CurrentObject.cc \ 650 ResolvExpr/FindOpenVars.cc \ 651 ResolvExpr/Occurs.cc \ 652 ResolvExpr/PolyCost.cc \ 653 ResolvExpr/PtrsAssignable.cc \ 654 ResolvExpr/PtrsCastable.cc \ 655 ResolvExpr/RenameVars.cc \ 656 ResolvExpr/Resolver.cc \ 657 ResolvExpr/ResolveTypeof.cc \ 658 ResolvExpr/TypeEnvironment.cc \ 659 ResolvExpr/Unify.cc \ 660 SymTab/Autogen.cc \ 661 SymTab/FixFunction.cc \ 662 SymTab/Indexer.cc \ 663 SymTab/Mangler.cc \ 664 SymTab/Validate.cc \ 665 Tuples/Explode.cc \ 666 Tuples/TupleAssignment.cc \ 667 Tuples/TupleExpansion.cc \ 668 Validate/HandleAttributes.cc 669 513 670 all: $(BUILT_SOURCES) 514 671 $(MAKE) $(AM_MAKEFLAGS) all-am … … 546 703 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh 547 704 $(am__aclocal_m4_deps): 705 706 clean-noinstLIBRARIES: 707 -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) 708 SymTab/$(am__dirstamp): 709 @$(MKDIR_P) SymTab 710 @: > SymTab/$(am__dirstamp) 711 SymTab/$(DEPDIR)/$(am__dirstamp): 712 @$(MKDIR_P) SymTab/$(DEPDIR) 713 @: > SymTab/$(DEPDIR)/$(am__dirstamp) 714 SymTab/Demangle.$(OBJEXT): SymTab/$(am__dirstamp) \ 715 SymTab/$(DEPDIR)/$(am__dirstamp) 716 SymTab/ManglerCommon.$(OBJEXT): SymTab/$(am__dirstamp) \ 717 SymTab/$(DEPDIR)/$(am__dirstamp) 718 SynTree/$(am__dirstamp): 719 @$(MKDIR_P) SynTree 720 @: > SynTree/$(am__dirstamp) 721 SynTree/$(DEPDIR)/$(am__dirstamp): 722 @$(MKDIR_P) SynTree/$(DEPDIR) 723 @: > SynTree/$(DEPDIR)/$(am__dirstamp) 724 SynTree/Type.$(OBJEXT): SynTree/$(am__dirstamp) \ 725 SynTree/$(DEPDIR)/$(am__dirstamp) 726 SynTree/VoidType.$(OBJEXT): SynTree/$(am__dirstamp) \ 727 SynTree/$(DEPDIR)/$(am__dirstamp) 728 SynTree/BasicType.$(OBJEXT): SynTree/$(am__dirstamp) \ 729 SynTree/$(DEPDIR)/$(am__dirstamp) 730 SynTree/PointerType.$(OBJEXT): SynTree/$(am__dirstamp) \ 731 SynTree/$(DEPDIR)/$(am__dirstamp) 732 SynTree/ArrayType.$(OBJEXT): SynTree/$(am__dirstamp) \ 733 SynTree/$(DEPDIR)/$(am__dirstamp) 734 SynTree/ReferenceType.$(OBJEXT): SynTree/$(am__dirstamp) \ 735 SynTree/$(DEPDIR)/$(am__dirstamp) 736 SynTree/FunctionType.$(OBJEXT): SynTree/$(am__dirstamp) \ 737 SynTree/$(DEPDIR)/$(am__dirstamp) 738 SynTree/ReferenceToType.$(OBJEXT): SynTree/$(am__dirstamp) \ 739 SynTree/$(DEPDIR)/$(am__dirstamp) 740 SynTree/TupleType.$(OBJEXT): SynTree/$(am__dirstamp) \ 741 SynTree/$(DEPDIR)/$(am__dirstamp) 742 SynTree/TypeofType.$(OBJEXT): SynTree/$(am__dirstamp) \ 743 SynTree/$(DEPDIR)/$(am__dirstamp) 744 SynTree/AttrType.$(OBJEXT): SynTree/$(am__dirstamp) \ 745 SynTree/$(DEPDIR)/$(am__dirstamp) 746 SynTree/VarArgsType.$(OBJEXT): SynTree/$(am__dirstamp) \ 747 SynTree/$(DEPDIR)/$(am__dirstamp) 748 SynTree/ZeroOneType.$(OBJEXT): SynTree/$(am__dirstamp) \ 749 SynTree/$(DEPDIR)/$(am__dirstamp) 750 SynTree/Constant.$(OBJEXT): SynTree/$(am__dirstamp) \ 751 SynTree/$(DEPDIR)/$(am__dirstamp) 752 SynTree/Expression.$(OBJEXT): SynTree/$(am__dirstamp) \ 753 SynTree/$(DEPDIR)/$(am__dirstamp) 754 SynTree/TupleExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 755 SynTree/$(DEPDIR)/$(am__dirstamp) 756 SynTree/CommaExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 757 SynTree/$(DEPDIR)/$(am__dirstamp) 758 SynTree/TypeExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 759 SynTree/$(DEPDIR)/$(am__dirstamp) 760 SynTree/ApplicationExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 761 SynTree/$(DEPDIR)/$(am__dirstamp) 762 SynTree/AddressExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 763 SynTree/$(DEPDIR)/$(am__dirstamp) 764 SynTree/Statement.$(OBJEXT): SynTree/$(am__dirstamp) \ 765 SynTree/$(DEPDIR)/$(am__dirstamp) 766 SynTree/CompoundStmt.$(OBJEXT): SynTree/$(am__dirstamp) \ 767 SynTree/$(DEPDIR)/$(am__dirstamp) 768 SynTree/DeclStmt.$(OBJEXT): SynTree/$(am__dirstamp) \ 769 SynTree/$(DEPDIR)/$(am__dirstamp) 770 SynTree/Declaration.$(OBJEXT): SynTree/$(am__dirstamp) \ 771 SynTree/$(DEPDIR)/$(am__dirstamp) 772 SynTree/DeclarationWithType.$(OBJEXT): SynTree/$(am__dirstamp) \ 773 SynTree/$(DEPDIR)/$(am__dirstamp) 774 SynTree/ObjectDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 775 SynTree/$(DEPDIR)/$(am__dirstamp) 776 SynTree/FunctionDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 777 SynTree/$(DEPDIR)/$(am__dirstamp) 778 SynTree/AggregateDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 779 SynTree/$(DEPDIR)/$(am__dirstamp) 780 SynTree/NamedTypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 781 SynTree/$(DEPDIR)/$(am__dirstamp) 782 SynTree/TypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 783 SynTree/$(DEPDIR)/$(am__dirstamp) 784 SynTree/Initializer.$(OBJEXT): SynTree/$(am__dirstamp) \ 785 SynTree/$(DEPDIR)/$(am__dirstamp) 786 SynTree/TypeSubstitution.$(OBJEXT): SynTree/$(am__dirstamp) \ 787 SynTree/$(DEPDIR)/$(am__dirstamp) 788 SynTree/Attribute.$(OBJEXT): SynTree/$(am__dirstamp) \ 789 SynTree/$(DEPDIR)/$(am__dirstamp) 790 SynTree/DeclReplacer.$(OBJEXT): SynTree/$(am__dirstamp) \ 791 SynTree/$(DEPDIR)/$(am__dirstamp) 792 CodeGen/$(am__dirstamp): 793 @$(MKDIR_P) CodeGen 794 @: > CodeGen/$(am__dirstamp) 795 CodeGen/$(DEPDIR)/$(am__dirstamp): 796 @$(MKDIR_P) CodeGen/$(DEPDIR) 797 @: > CodeGen/$(DEPDIR)/$(am__dirstamp) 798 CodeGen/CodeGenerator.$(OBJEXT): CodeGen/$(am__dirstamp) \ 799 CodeGen/$(DEPDIR)/$(am__dirstamp) 800 CodeGen/FixMain.$(OBJEXT): CodeGen/$(am__dirstamp) \ 801 CodeGen/$(DEPDIR)/$(am__dirstamp) 802 CodeGen/GenType.$(OBJEXT): CodeGen/$(am__dirstamp) \ 803 CodeGen/$(DEPDIR)/$(am__dirstamp) 804 CodeGen/OperatorTable.$(OBJEXT): CodeGen/$(am__dirstamp) \ 805 CodeGen/$(DEPDIR)/$(am__dirstamp) 806 Common/$(am__dirstamp): 807 @$(MKDIR_P) Common 808 @: > Common/$(am__dirstamp) 809 Common/$(DEPDIR)/$(am__dirstamp): 810 @$(MKDIR_P) Common/$(DEPDIR) 811 @: > Common/$(DEPDIR)/$(am__dirstamp) 812 Common/Assert.$(OBJEXT): Common/$(am__dirstamp) \ 813 Common/$(DEPDIR)/$(am__dirstamp) 814 Common/Eval.$(OBJEXT): Common/$(am__dirstamp) \ 815 Common/$(DEPDIR)/$(am__dirstamp) 816 Common/SemanticError.$(OBJEXT): Common/$(am__dirstamp) \ 817 Common/$(DEPDIR)/$(am__dirstamp) 818 Common/UniqueName.$(OBJEXT): Common/$(am__dirstamp) \ 819 Common/$(DEPDIR)/$(am__dirstamp) 820 Concurrency/$(am__dirstamp): 821 @$(MKDIR_P) Concurrency 822 @: > Concurrency/$(am__dirstamp) 823 Concurrency/$(DEPDIR)/$(am__dirstamp): 824 @$(MKDIR_P) Concurrency/$(DEPDIR) 825 @: > Concurrency/$(DEPDIR)/$(am__dirstamp) 826 Concurrency/Keywords.$(OBJEXT): Concurrency/$(am__dirstamp) \ 827 Concurrency/$(DEPDIR)/$(am__dirstamp) 828 ControlStruct/$(am__dirstamp): 829 @$(MKDIR_P) ControlStruct 830 @: > ControlStruct/$(am__dirstamp) 831 ControlStruct/$(DEPDIR)/$(am__dirstamp): 832 @$(MKDIR_P) ControlStruct/$(DEPDIR) 833 @: > ControlStruct/$(DEPDIR)/$(am__dirstamp) 834 ControlStruct/ForExprMutator.$(OBJEXT): ControlStruct/$(am__dirstamp) \ 835 ControlStruct/$(DEPDIR)/$(am__dirstamp) 836 ControlStruct/LabelFixer.$(OBJEXT): ControlStruct/$(am__dirstamp) \ 837 ControlStruct/$(DEPDIR)/$(am__dirstamp) 838 ControlStruct/LabelGenerator.$(OBJEXT): ControlStruct/$(am__dirstamp) \ 839 ControlStruct/$(DEPDIR)/$(am__dirstamp) 840 ControlStruct/MLEMutator.$(OBJEXT): ControlStruct/$(am__dirstamp) \ 841 ControlStruct/$(DEPDIR)/$(am__dirstamp) 842 ControlStruct/Mutate.$(OBJEXT): ControlStruct/$(am__dirstamp) \ 843 ControlStruct/$(DEPDIR)/$(am__dirstamp) 844 GenPoly/$(am__dirstamp): 845 @$(MKDIR_P) GenPoly 846 @: > GenPoly/$(am__dirstamp) 847 GenPoly/$(DEPDIR)/$(am__dirstamp): 848 @$(MKDIR_P) GenPoly/$(DEPDIR) 849 @: > GenPoly/$(DEPDIR)/$(am__dirstamp) 850 GenPoly/GenPoly.$(OBJEXT): GenPoly/$(am__dirstamp) \ 851 GenPoly/$(DEPDIR)/$(am__dirstamp) 852 GenPoly/Lvalue.$(OBJEXT): GenPoly/$(am__dirstamp) \ 853 GenPoly/$(DEPDIR)/$(am__dirstamp) 854 InitTweak/$(am__dirstamp): 855 @$(MKDIR_P) InitTweak 856 @: > InitTweak/$(am__dirstamp) 857 InitTweak/$(DEPDIR)/$(am__dirstamp): 858 @$(MKDIR_P) InitTweak/$(DEPDIR) 859 @: > InitTweak/$(DEPDIR)/$(am__dirstamp) 860 InitTweak/GenInit.$(OBJEXT): InitTweak/$(am__dirstamp) \ 861 InitTweak/$(DEPDIR)/$(am__dirstamp) 862 InitTweak/InitTweak.$(OBJEXT): InitTweak/$(am__dirstamp) \ 863 InitTweak/$(DEPDIR)/$(am__dirstamp) 864 Parser/$(am__dirstamp): 865 @$(MKDIR_P) Parser 866 @: > Parser/$(am__dirstamp) 867 Parser/$(DEPDIR)/$(am__dirstamp): 868 @$(MKDIR_P) Parser/$(DEPDIR) 869 @: > Parser/$(DEPDIR)/$(am__dirstamp) 870 Parser/LinkageSpec.$(OBJEXT): Parser/$(am__dirstamp) \ 871 Parser/$(DEPDIR)/$(am__dirstamp) 872 ResolvExpr/$(am__dirstamp): 873 @$(MKDIR_P) ResolvExpr 874 @: > ResolvExpr/$(am__dirstamp) 875 ResolvExpr/$(DEPDIR)/$(am__dirstamp): 876 @$(MKDIR_P) ResolvExpr/$(DEPDIR) 877 @: > ResolvExpr/$(DEPDIR)/$(am__dirstamp) 878 ResolvExpr/AdjustExprType.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 879 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 880 ResolvExpr/Alternative.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 881 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 882 ResolvExpr/AlternativeFinder.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 883 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 884 ResolvExpr/ExplodedActual.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 885 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 886 ResolvExpr/CastCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 887 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 888 ResolvExpr/CommonType.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 889 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 890 ResolvExpr/ConversionCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 891 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 892 ResolvExpr/CurrentObject.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 893 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 894 ResolvExpr/FindOpenVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 895 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 896 ResolvExpr/Occurs.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 897 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 898 ResolvExpr/PolyCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 899 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 900 ResolvExpr/PtrsAssignable.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 901 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 902 ResolvExpr/PtrsCastable.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 903 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 904 ResolvExpr/RenameVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 905 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 906 ResolvExpr/Resolver.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 907 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 908 ResolvExpr/ResolveTypeof.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 909 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 910 ResolvExpr/TypeEnvironment.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 911 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 912 ResolvExpr/Unify.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 913 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 914 SymTab/Autogen.$(OBJEXT): SymTab/$(am__dirstamp) \ 915 SymTab/$(DEPDIR)/$(am__dirstamp) 916 SymTab/FixFunction.$(OBJEXT): SymTab/$(am__dirstamp) \ 917 SymTab/$(DEPDIR)/$(am__dirstamp) 918 SymTab/Indexer.$(OBJEXT): SymTab/$(am__dirstamp) \ 919 SymTab/$(DEPDIR)/$(am__dirstamp) 920 SymTab/Mangler.$(OBJEXT): SymTab/$(am__dirstamp) \ 921 SymTab/$(DEPDIR)/$(am__dirstamp) 922 SymTab/Validate.$(OBJEXT): SymTab/$(am__dirstamp) \ 923 SymTab/$(DEPDIR)/$(am__dirstamp) 924 Tuples/$(am__dirstamp): 925 @$(MKDIR_P) Tuples 926 @: > Tuples/$(am__dirstamp) 927 Tuples/$(DEPDIR)/$(am__dirstamp): 928 @$(MKDIR_P) Tuples/$(DEPDIR) 929 @: > Tuples/$(DEPDIR)/$(am__dirstamp) 930 Tuples/Explode.$(OBJEXT): Tuples/$(am__dirstamp) \ 931 Tuples/$(DEPDIR)/$(am__dirstamp) 932 Tuples/TupleAssignment.$(OBJEXT): Tuples/$(am__dirstamp) \ 933 Tuples/$(DEPDIR)/$(am__dirstamp) 934 Tuples/TupleExpansion.$(OBJEXT): Tuples/$(am__dirstamp) \ 935 Tuples/$(DEPDIR)/$(am__dirstamp) 936 Validate/$(am__dirstamp): 937 @$(MKDIR_P) Validate 938 @: > Validate/$(am__dirstamp) 939 Validate/$(DEPDIR)/$(am__dirstamp): 940 @$(MKDIR_P) Validate/$(DEPDIR) 941 @: > Validate/$(DEPDIR)/$(am__dirstamp) 942 Validate/HandleAttributes.$(OBJEXT): Validate/$(am__dirstamp) \ 943 Validate/$(DEPDIR)/$(am__dirstamp) 944 945 libdemangle.a: $(libdemangle_a_OBJECTS) $(libdemangle_a_DEPENDENCIES) $(EXTRA_libdemangle_a_DEPENDENCIES) 946 $(AM_V_at)-rm -f libdemangle.a 947 $(AM_V_AR)$(libdemangle_a_AR) libdemangle.a $(libdemangle_a_OBJECTS) $(libdemangle_a_LIBADD) 948 $(AM_V_at)$(RANLIB) libdemangle.a 548 949 install-cfa_cpplibPROGRAMS: $(cfa_cpplib_PROGRAMS) 549 950 @$(NORMAL_INSTALL) … … 588 989 clean-cfa_cpplibPROGRAMS: 589 990 -test -z "$(cfa_cpplib_PROGRAMS)" || rm -f $(cfa_cpplib_PROGRAMS) 590 CodeGen/$(am__dirstamp):591 @$(MKDIR_P) CodeGen592 @: > CodeGen/$(am__dirstamp)593 CodeGen/$(DEPDIR)/$(am__dirstamp):594 @$(MKDIR_P) CodeGen/$(DEPDIR)595 @: > CodeGen/$(DEPDIR)/$(am__dirstamp)596 991 CodeGen/Generate.$(OBJEXT): CodeGen/$(am__dirstamp) \ 597 992 CodeGen/$(DEPDIR)/$(am__dirstamp) 598 CodeGen/CodeGenerator.$(OBJEXT): CodeGen/$(am__dirstamp) \599 CodeGen/$(DEPDIR)/$(am__dirstamp)600 CodeGen/GenType.$(OBJEXT): CodeGen/$(am__dirstamp) \601 CodeGen/$(DEPDIR)/$(am__dirstamp)602 993 CodeGen/FixNames.$(OBJEXT): CodeGen/$(am__dirstamp) \ 603 CodeGen/$(DEPDIR)/$(am__dirstamp)604 CodeGen/FixMain.$(OBJEXT): CodeGen/$(am__dirstamp) \605 CodeGen/$(DEPDIR)/$(am__dirstamp)606 CodeGen/OperatorTable.$(OBJEXT): CodeGen/$(am__dirstamp) \607 994 CodeGen/$(DEPDIR)/$(am__dirstamp) 608 995 CodeTools/$(am__dirstamp): … … 614 1001 CodeTools/DeclStats.$(OBJEXT): CodeTools/$(am__dirstamp) \ 615 1002 CodeTools/$(DEPDIR)/$(am__dirstamp) 1003 CodeTools/ResolvProtoDump.$(OBJEXT): CodeTools/$(am__dirstamp) \ 1004 CodeTools/$(DEPDIR)/$(am__dirstamp) 616 1005 CodeTools/TrackLoc.$(OBJEXT): CodeTools/$(am__dirstamp) \ 617 1006 CodeTools/$(DEPDIR)/$(am__dirstamp) 618 Concurrency/$(am__dirstamp):619 @$(MKDIR_P) Concurrency620 @: > Concurrency/$(am__dirstamp)621 Concurrency/$(DEPDIR)/$(am__dirstamp):622 @$(MKDIR_P) Concurrency/$(DEPDIR)623 @: > Concurrency/$(DEPDIR)/$(am__dirstamp)624 Concurrency/Keywords.$(OBJEXT): Concurrency/$(am__dirstamp) \625 Concurrency/$(DEPDIR)/$(am__dirstamp)626 1007 Concurrency/Waitfor.$(OBJEXT): Concurrency/$(am__dirstamp) \ 627 1008 Concurrency/$(DEPDIR)/$(am__dirstamp) 628 Common/$(am__dirstamp):629 @$(MKDIR_P) Common630 @: > Common/$(am__dirstamp)631 Common/$(DEPDIR)/$(am__dirstamp):632 @$(MKDIR_P) Common/$(DEPDIR)633 @: > Common/$(DEPDIR)/$(am__dirstamp)634 Common/SemanticError.$(OBJEXT): Common/$(am__dirstamp) \635 Common/$(DEPDIR)/$(am__dirstamp)636 Common/UniqueName.$(OBJEXT): Common/$(am__dirstamp) \637 Common/$(DEPDIR)/$(am__dirstamp)638 1009 Common/DebugMalloc.$(OBJEXT): Common/$(am__dirstamp) \ 639 Common/$(DEPDIR)/$(am__dirstamp)640 Common/Assert.$(OBJEXT): Common/$(am__dirstamp) \641 1010 Common/$(DEPDIR)/$(am__dirstamp) 642 1011 Common/Heap.$(OBJEXT): Common/$(am__dirstamp) \ 643 1012 Common/$(DEPDIR)/$(am__dirstamp) 644 Common/Eval.$(OBJEXT): Common/$(am__dirstamp) \645 Common/$(DEPDIR)/$(am__dirstamp)646 ControlStruct/$(am__dirstamp):647 @$(MKDIR_P) ControlStruct648 @: > ControlStruct/$(am__dirstamp)649 ControlStruct/$(DEPDIR)/$(am__dirstamp):650 @$(MKDIR_P) ControlStruct/$(DEPDIR)651 @: > ControlStruct/$(DEPDIR)/$(am__dirstamp)652 ControlStruct/LabelGenerator.$(OBJEXT): ControlStruct/$(am__dirstamp) \653 ControlStruct/$(DEPDIR)/$(am__dirstamp)654 ControlStruct/LabelFixer.$(OBJEXT): ControlStruct/$(am__dirstamp) \655 ControlStruct/$(DEPDIR)/$(am__dirstamp)656 ControlStruct/MLEMutator.$(OBJEXT): ControlStruct/$(am__dirstamp) \657 ControlStruct/$(DEPDIR)/$(am__dirstamp)658 ControlStruct/Mutate.$(OBJEXT): ControlStruct/$(am__dirstamp) \659 ControlStruct/$(DEPDIR)/$(am__dirstamp)660 ControlStruct/ForExprMutator.$(OBJEXT): ControlStruct/$(am__dirstamp) \661 ControlStruct/$(DEPDIR)/$(am__dirstamp)662 1013 ControlStruct/ExceptTranslate.$(OBJEXT): \ 663 1014 ControlStruct/$(am__dirstamp) \ 664 1015 ControlStruct/$(DEPDIR)/$(am__dirstamp) 665 GenPoly/$(am__dirstamp):666 @$(MKDIR_P) GenPoly667 @: > GenPoly/$(am__dirstamp)668 GenPoly/$(DEPDIR)/$(am__dirstamp):669 @$(MKDIR_P) GenPoly/$(DEPDIR)670 @: > GenPoly/$(DEPDIR)/$(am__dirstamp)671 1016 GenPoly/Box.$(OBJEXT): GenPoly/$(am__dirstamp) \ 672 1017 GenPoly/$(DEPDIR)/$(am__dirstamp) 673 GenPoly/GenPoly.$(OBJEXT): GenPoly/$(am__dirstamp) \674 GenPoly/$(DEPDIR)/$(am__dirstamp)675 1018 GenPoly/ScrubTyVars.$(OBJEXT): GenPoly/$(am__dirstamp) \ 676 GenPoly/$(DEPDIR)/$(am__dirstamp)677 GenPoly/Lvalue.$(OBJEXT): GenPoly/$(am__dirstamp) \678 1019 GenPoly/$(DEPDIR)/$(am__dirstamp) 679 1020 GenPoly/Specialize.$(OBJEXT): GenPoly/$(am__dirstamp) \ … … 683 1024 GenPoly/InstantiateGeneric.$(OBJEXT): GenPoly/$(am__dirstamp) \ 684 1025 GenPoly/$(DEPDIR)/$(am__dirstamp) 685 InitTweak/$(am__dirstamp):686 @$(MKDIR_P) InitTweak687 @: > InitTweak/$(am__dirstamp)688 InitTweak/$(DEPDIR)/$(am__dirstamp):689 @$(MKDIR_P) InitTweak/$(DEPDIR)690 @: > InitTweak/$(DEPDIR)/$(am__dirstamp)691 InitTweak/GenInit.$(OBJEXT): InitTweak/$(am__dirstamp) \692 InitTweak/$(DEPDIR)/$(am__dirstamp)693 1026 InitTweak/FixInit.$(OBJEXT): InitTweak/$(am__dirstamp) \ 694 1027 InitTweak/$(DEPDIR)/$(am__dirstamp) 695 1028 InitTweak/FixGlobalInit.$(OBJEXT): InitTweak/$(am__dirstamp) \ 696 1029 InitTweak/$(DEPDIR)/$(am__dirstamp) 697 InitTweak/InitTweak.$(OBJEXT): InitTweak/$(am__dirstamp) \698 InitTweak/$(DEPDIR)/$(am__dirstamp)699 1030 Parser/parser.hh: Parser/parser.cc 700 1031 @if test ! -f $@; then rm -f Parser/parser.cc; else :; fi 701 1032 @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) Parser/parser.cc; else :; fi 702 Parser/$(am__dirstamp):703 @$(MKDIR_P) Parser704 @: > Parser/$(am__dirstamp)705 Parser/$(DEPDIR)/$(am__dirstamp):706 @$(MKDIR_P) Parser/$(DEPDIR)707 @: > Parser/$(DEPDIR)/$(am__dirstamp)708 1033 Parser/parser.$(OBJEXT): Parser/$(am__dirstamp) \ 709 1034 Parser/$(DEPDIR)/$(am__dirstamp) … … 724 1049 Parser/TypeData.$(OBJEXT): Parser/$(am__dirstamp) \ 725 1050 Parser/$(DEPDIR)/$(am__dirstamp) 726 Parser/LinkageSpec.$(OBJEXT): Parser/$(am__dirstamp) \727 Parser/$(DEPDIR)/$(am__dirstamp)728 1051 Parser/parserutility.$(OBJEXT): Parser/$(am__dirstamp) \ 729 1052 Parser/$(DEPDIR)/$(am__dirstamp) 730 ResolvExpr/$(am__dirstamp):731 @$(MKDIR_P) ResolvExpr732 @: > ResolvExpr/$(am__dirstamp)733 ResolvExpr/$(DEPDIR)/$(am__dirstamp):734 @$(MKDIR_P) ResolvExpr/$(DEPDIR)735 @: > ResolvExpr/$(DEPDIR)/$(am__dirstamp)736 ResolvExpr/AlternativeFinder.$(OBJEXT): ResolvExpr/$(am__dirstamp) \737 ResolvExpr/$(DEPDIR)/$(am__dirstamp)738 ResolvExpr/Alternative.$(OBJEXT): ResolvExpr/$(am__dirstamp) \739 ResolvExpr/$(DEPDIR)/$(am__dirstamp)740 ResolvExpr/Unify.$(OBJEXT): ResolvExpr/$(am__dirstamp) \741 ResolvExpr/$(DEPDIR)/$(am__dirstamp)742 ResolvExpr/PtrsAssignable.$(OBJEXT): ResolvExpr/$(am__dirstamp) \743 ResolvExpr/$(DEPDIR)/$(am__dirstamp)744 ResolvExpr/CommonType.$(OBJEXT): ResolvExpr/$(am__dirstamp) \745 ResolvExpr/$(DEPDIR)/$(am__dirstamp)746 ResolvExpr/ConversionCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \747 ResolvExpr/$(DEPDIR)/$(am__dirstamp)748 ResolvExpr/CastCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \749 ResolvExpr/$(DEPDIR)/$(am__dirstamp)750 ResolvExpr/PtrsCastable.$(OBJEXT): ResolvExpr/$(am__dirstamp) \751 ResolvExpr/$(DEPDIR)/$(am__dirstamp)752 ResolvExpr/AdjustExprType.$(OBJEXT): ResolvExpr/$(am__dirstamp) \753 ResolvExpr/$(DEPDIR)/$(am__dirstamp)754 1053 ResolvExpr/AlternativePrinter.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 755 1054 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 756 ResolvExpr/Resolver.$(OBJEXT): ResolvExpr/$(am__dirstamp) \757 ResolvExpr/$(DEPDIR)/$(am__dirstamp)758 ResolvExpr/ResolveTypeof.$(OBJEXT): ResolvExpr/$(am__dirstamp) \759 ResolvExpr/$(DEPDIR)/$(am__dirstamp)760 ResolvExpr/RenameVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \761 ResolvExpr/$(DEPDIR)/$(am__dirstamp)762 ResolvExpr/FindOpenVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \763 ResolvExpr/$(DEPDIR)/$(am__dirstamp)764 ResolvExpr/PolyCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \765 ResolvExpr/$(DEPDIR)/$(am__dirstamp)766 ResolvExpr/Occurs.$(OBJEXT): ResolvExpr/$(am__dirstamp) \767 ResolvExpr/$(DEPDIR)/$(am__dirstamp)768 ResolvExpr/TypeEnvironment.$(OBJEXT): ResolvExpr/$(am__dirstamp) \769 ResolvExpr/$(DEPDIR)/$(am__dirstamp)770 ResolvExpr/CurrentObject.$(OBJEXT): ResolvExpr/$(am__dirstamp) \771 ResolvExpr/$(DEPDIR)/$(am__dirstamp)772 ResolvExpr/ExplodedActual.$(OBJEXT): ResolvExpr/$(am__dirstamp) \773 ResolvExpr/$(DEPDIR)/$(am__dirstamp)774 SymTab/$(am__dirstamp):775 @$(MKDIR_P) SymTab776 @: > SymTab/$(am__dirstamp)777 SymTab/$(DEPDIR)/$(am__dirstamp):778 @$(MKDIR_P) SymTab/$(DEPDIR)779 @: > SymTab/$(DEPDIR)/$(am__dirstamp)780 SymTab/Indexer.$(OBJEXT): SymTab/$(am__dirstamp) \781 SymTab/$(DEPDIR)/$(am__dirstamp)782 SymTab/Mangler.$(OBJEXT): SymTab/$(am__dirstamp) \783 SymTab/$(DEPDIR)/$(am__dirstamp)784 SymTab/Validate.$(OBJEXT): SymTab/$(am__dirstamp) \785 SymTab/$(DEPDIR)/$(am__dirstamp)786 SymTab/FixFunction.$(OBJEXT): SymTab/$(am__dirstamp) \787 SymTab/$(DEPDIR)/$(am__dirstamp)788 SymTab/Autogen.$(OBJEXT): SymTab/$(am__dirstamp) \789 SymTab/$(DEPDIR)/$(am__dirstamp)790 SynTree/$(am__dirstamp):791 @$(MKDIR_P) SynTree792 @: > SynTree/$(am__dirstamp)793 SynTree/$(DEPDIR)/$(am__dirstamp):794 @$(MKDIR_P) SynTree/$(DEPDIR)795 @: > SynTree/$(DEPDIR)/$(am__dirstamp)796 SynTree/Type.$(OBJEXT): SynTree/$(am__dirstamp) \797 SynTree/$(DEPDIR)/$(am__dirstamp)798 SynTree/VoidType.$(OBJEXT): SynTree/$(am__dirstamp) \799 SynTree/$(DEPDIR)/$(am__dirstamp)800 SynTree/BasicType.$(OBJEXT): SynTree/$(am__dirstamp) \801 SynTree/$(DEPDIR)/$(am__dirstamp)802 SynTree/PointerType.$(OBJEXT): SynTree/$(am__dirstamp) \803 SynTree/$(DEPDIR)/$(am__dirstamp)804 SynTree/ArrayType.$(OBJEXT): SynTree/$(am__dirstamp) \805 SynTree/$(DEPDIR)/$(am__dirstamp)806 SynTree/ReferenceType.$(OBJEXT): SynTree/$(am__dirstamp) \807 SynTree/$(DEPDIR)/$(am__dirstamp)808 SynTree/FunctionType.$(OBJEXT): SynTree/$(am__dirstamp) \809 SynTree/$(DEPDIR)/$(am__dirstamp)810 SynTree/ReferenceToType.$(OBJEXT): SynTree/$(am__dirstamp) \811 SynTree/$(DEPDIR)/$(am__dirstamp)812 SynTree/TupleType.$(OBJEXT): SynTree/$(am__dirstamp) \813 SynTree/$(DEPDIR)/$(am__dirstamp)814 SynTree/TypeofType.$(OBJEXT): SynTree/$(am__dirstamp) \815 SynTree/$(DEPDIR)/$(am__dirstamp)816 SynTree/AttrType.$(OBJEXT): SynTree/$(am__dirstamp) \817 SynTree/$(DEPDIR)/$(am__dirstamp)818 SynTree/VarArgsType.$(OBJEXT): SynTree/$(am__dirstamp) \819 SynTree/$(DEPDIR)/$(am__dirstamp)820 SynTree/ZeroOneType.$(OBJEXT): SynTree/$(am__dirstamp) \821 SynTree/$(DEPDIR)/$(am__dirstamp)822 SynTree/Constant.$(OBJEXT): SynTree/$(am__dirstamp) \823 SynTree/$(DEPDIR)/$(am__dirstamp)824 SynTree/Expression.$(OBJEXT): SynTree/$(am__dirstamp) \825 SynTree/$(DEPDIR)/$(am__dirstamp)826 SynTree/TupleExpr.$(OBJEXT): SynTree/$(am__dirstamp) \827 SynTree/$(DEPDIR)/$(am__dirstamp)828 SynTree/CommaExpr.$(OBJEXT): SynTree/$(am__dirstamp) \829 SynTree/$(DEPDIR)/$(am__dirstamp)830 SynTree/TypeExpr.$(OBJEXT): SynTree/$(am__dirstamp) \831 SynTree/$(DEPDIR)/$(am__dirstamp)832 SynTree/ApplicationExpr.$(OBJEXT): SynTree/$(am__dirstamp) \833 SynTree/$(DEPDIR)/$(am__dirstamp)834 SynTree/AddressExpr.$(OBJEXT): SynTree/$(am__dirstamp) \835 SynTree/$(DEPDIR)/$(am__dirstamp)836 SynTree/Statement.$(OBJEXT): SynTree/$(am__dirstamp) \837 SynTree/$(DEPDIR)/$(am__dirstamp)838 SynTree/CompoundStmt.$(OBJEXT): SynTree/$(am__dirstamp) \839 SynTree/$(DEPDIR)/$(am__dirstamp)840 SynTree/DeclStmt.$(OBJEXT): SynTree/$(am__dirstamp) \841 SynTree/$(DEPDIR)/$(am__dirstamp)842 SynTree/Declaration.$(OBJEXT): SynTree/$(am__dirstamp) \843 SynTree/$(DEPDIR)/$(am__dirstamp)844 SynTree/DeclarationWithType.$(OBJEXT): SynTree/$(am__dirstamp) \845 SynTree/$(DEPDIR)/$(am__dirstamp)846 SynTree/ObjectDecl.$(OBJEXT): SynTree/$(am__dirstamp) \847 SynTree/$(DEPDIR)/$(am__dirstamp)848 SynTree/FunctionDecl.$(OBJEXT): SynTree/$(am__dirstamp) \849 SynTree/$(DEPDIR)/$(am__dirstamp)850 SynTree/AggregateDecl.$(OBJEXT): SynTree/$(am__dirstamp) \851 SynTree/$(DEPDIR)/$(am__dirstamp)852 SynTree/NamedTypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \853 SynTree/$(DEPDIR)/$(am__dirstamp)854 SynTree/TypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \855 SynTree/$(DEPDIR)/$(am__dirstamp)856 SynTree/Initializer.$(OBJEXT): SynTree/$(am__dirstamp) \857 SynTree/$(DEPDIR)/$(am__dirstamp)858 SynTree/TypeSubstitution.$(OBJEXT): SynTree/$(am__dirstamp) \859 SynTree/$(DEPDIR)/$(am__dirstamp)860 SynTree/Attribute.$(OBJEXT): SynTree/$(am__dirstamp) \861 SynTree/$(DEPDIR)/$(am__dirstamp)862 SynTree/DeclReplacer.$(OBJEXT): SynTree/$(am__dirstamp) \863 SynTree/$(DEPDIR)/$(am__dirstamp)864 Tuples/$(am__dirstamp):865 @$(MKDIR_P) Tuples866 @: > Tuples/$(am__dirstamp)867 Tuples/$(DEPDIR)/$(am__dirstamp):868 @$(MKDIR_P) Tuples/$(DEPDIR)869 @: > Tuples/$(DEPDIR)/$(am__dirstamp)870 Tuples/TupleAssignment.$(OBJEXT): Tuples/$(am__dirstamp) \871 Tuples/$(DEPDIR)/$(am__dirstamp)872 Tuples/TupleExpansion.$(OBJEXT): Tuples/$(am__dirstamp) \873 Tuples/$(DEPDIR)/$(am__dirstamp)874 Tuples/Explode.$(OBJEXT): Tuples/$(am__dirstamp) \875 Tuples/$(DEPDIR)/$(am__dirstamp)876 Validate/$(am__dirstamp):877 @$(MKDIR_P) Validate878 @: > Validate/$(am__dirstamp)879 Validate/$(DEPDIR)/$(am__dirstamp):880 @$(MKDIR_P) Validate/$(DEPDIR)881 @: > Validate/$(DEPDIR)/$(am__dirstamp)882 Validate/HandleAttributes.$(OBJEXT): Validate/$(am__dirstamp) \883 Validate/$(DEPDIR)/$(am__dirstamp)884 1055 Virtual/$(am__dirstamp): 885 1056 @$(MKDIR_P) Virtual … … 897 1068 @rm -f ../driver/cfa-cpp$(EXEEXT) 898 1069 $(AM_V_CXXLD)$(CXXLINK) $(___driver_cfa_cpp_OBJECTS) $(___driver_cfa_cpp_LDADD) $(LIBS) 1070 SymTab/demangler.$(OBJEXT): SymTab/$(am__dirstamp) \ 1071 SymTab/$(DEPDIR)/$(am__dirstamp) 1072 1073 demangler$(EXEEXT): $(demangler_OBJECTS) $(demangler_DEPENDENCIES) $(EXTRA_demangler_DEPENDENCIES) 1074 @rm -f demangler$(EXEEXT) 1075 $(AM_V_CXXLD)$(CXXLINK) $(demangler_OBJECTS) $(demangler_LDADD) $(LIBS) 899 1076 900 1077 mostlyclean-compile: … … 928 1105 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/OperatorTable.Po@am__quote@ 929 1106 @AMDEP_TRUE@@am__include@ @am__quote@CodeTools/$(DEPDIR)/DeclStats.Po@am__quote@ 1107 @AMDEP_TRUE@@am__include@ @am__quote@CodeTools/$(DEPDIR)/ResolvProtoDump.Po@am__quote@ 930 1108 @AMDEP_TRUE@@am__include@ @am__quote@CodeTools/$(DEPDIR)/TrackLoc.Po@am__quote@ 931 1109 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/Assert.Po@am__quote@ … … 985 1163 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/Unify.Po@am__quote@ 986 1164 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Autogen.Po@am__quote@ 1165 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Demangle.Po@am__quote@ 987 1166 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/FixFunction.Po@am__quote@ 988 1167 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Indexer.Po@am__quote@ 989 1168 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Mangler.Po@am__quote@ 1169 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/ManglerCommon.Po@am__quote@ 990 1170 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Validate.Po@am__quote@ 1171 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/demangler.Po@am__quote@ 991 1172 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/AddressExpr.Po@am__quote@ 992 1173 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/AggregateDecl.Po@am__quote@ … … 1136 1317 check: $(BUILT_SOURCES) 1137 1318 $(MAKE) $(AM_MAKEFLAGS) check-am 1138 all-am: Makefile $( PROGRAMS)1319 all-am: Makefile $(LIBRARIES) $(PROGRAMS) 1139 1320 installdirs: 1140 1321 for dir in "$(DESTDIR)$(cfa_cpplibdir)"; do \ … … 1209 1390 clean: clean-am 1210 1391 1211 clean-am: clean-cfa_cpplibPROGRAMS clean-generic mostlyclean-am 1392 clean-am: clean-cfa_cpplibPROGRAMS clean-generic clean-noinstLIBRARIES \ 1393 mostlyclean-am 1212 1394 1213 1395 distclean: distclean-am … … 1279 1461 1280 1462 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ 1281 clean-cfa_cpplibPROGRAMS clean-generic cscopelist-am ctags \ 1282 ctags-am distclean distclean-compile distclean-generic \ 1283 distclean-tags distdir dvi dvi-am html html-am info info-am \ 1284 install install-am install-cfa_cpplibPROGRAMS install-data \ 1285 install-data-am install-dvi install-dvi-am install-exec \ 1286 install-exec-am install-html install-html-am install-info \ 1287 install-info-am install-man install-pdf install-pdf-am \ 1288 install-ps install-ps-am install-strip installcheck \ 1289 installcheck-am installdirs maintainer-clean \ 1290 maintainer-clean-generic mostlyclean mostlyclean-compile \ 1291 mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ 1292 uninstall-am uninstall-cfa_cpplibPROGRAMS 1463 clean-cfa_cpplibPROGRAMS clean-generic clean-noinstLIBRARIES \ 1464 cscopelist-am ctags ctags-am distclean distclean-compile \ 1465 distclean-generic distclean-tags distdir dvi dvi-am html \ 1466 html-am info info-am install install-am \ 1467 install-cfa_cpplibPROGRAMS install-data install-data-am \ 1468 install-dvi install-dvi-am install-exec install-exec-am \ 1469 install-html install-html-am install-info install-info-am \ 1470 install-man install-pdf install-pdf-am install-ps \ 1471 install-ps-am install-strip installcheck installcheck-am \ 1472 installdirs maintainer-clean maintainer-clean-generic \ 1473 mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ 1474 ps ps-am tags tags-am uninstall uninstall-am \ 1475 uninstall-cfa_cpplibPROGRAMS 1293 1476 1294 1477 .PRECIOUS: Makefile -
src/Parser/LinkageSpec.cc
r341bb80 r6d44da1 10 10 // Created On : Sat May 16 13:22:09 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Jul 7 11:11:00 201713 // Update Count : 2 512 // Last Modified On : Thr Spt 12 15:59:00 2018 13 // Update Count : 26 14 14 // 15 15 … … 23 23 24 24 namespace LinkageSpec { 25 26 Spec linkageCheck( CodeLocation location, const string * spec ) {27 assert( spec );28 unique_ptr<const string> guard( spec ); // allocated by lexer29 if ( *spec == "\"Cforall\"" ) {30 return Cforall;31 } else if ( *spec == "\"C\"" ) {32 return C;33 } else if ( *spec == "\"BuiltinC\"" ) {34 return BuiltinC;35 } else {36 SemanticError( location, "Invalid linkage specifier " + *spec );37 } // if38 }39 25 40 26 Spec linkageUpdate( CodeLocation location, Spec old_spec, const string * cmd ) { -
src/Parser/LinkageSpec.h
r341bb80 r6d44da1 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:24:28 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Mon Jul 2 07:46:49201813 // Update Count : 1 611 // Last Modified By : Andrew Beach 12 // Last Modified On : Thr Spt 13 15:59:00 2018 13 // Update Count : 17 14 14 // 15 15 … … 41 41 42 42 43 Spec linkageCheck( CodeLocation location, const std::string * );44 // Returns the Spec with the given name (limited to C, Cforall & BuiltinC)45 43 Spec linkageUpdate( CodeLocation location, Spec old_spec, const std::string * cmd ); 46 44 /* If cmd = "C" returns a Spec that is old_spec with is_mangled = false -
src/Parser/lex.ll
r341bb80 r6d44da1 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Wed Aug 8 17:23:17201813 * Update Count : 68 512 * Last Modified On : Wed Aug 29 15:02:41 2018 13 * Update Count : 686 14 14 */ 15 15 … … 410 410 ">>=" { NAMEDOP_RETURN(RSassign); } 411 411 412 "~=" { NAMEDOP_RETURN(Erange); } // CFA413 412 "@=" { NAMEDOP_RETURN(ATassign); } // CFA 413 "~=" { NAMEDOP_RETURN(ErangeUpEq); } // CFA 414 "-~" { NAMEDOP_RETURN(ErangeDown); } // CFA 415 "-~=" { NAMEDOP_RETURN(ErangeDownEq); } // CFA 414 416 415 417 /* CFA, operator identifier */ -
src/Parser/parser.yy
r341bb80 r6d44da1 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Aug 8 17:50:07201813 // Update Count : 399812 // Last Modified On : Thu Aug 30 17:02:25 2018 13 // Update Count : 4029 14 14 // 15 15 … … 186 186 } // fieldDecl 187 187 188 ExpressionNode *forInc( const OperKinds op ) { 189 return new ExpressionNode( build_constantInteger( *new string( op == OperKinds::LThan || op == OperKinds::LEThan ? "1" : "-1" ) ) ); 190 } // forInc 191 188 192 ForCtrl * forCtrl( ExpressionNode * type, string * index, ExpressionNode * start, enum OperKinds compop, ExpressionNode * comp, ExpressionNode * inc ) { 193 ConstantExpr *constant = dynamic_cast<ConstantExpr *>(type->get_expr()); 194 if ( constant && (constant->get_constant()->get_value() == "0" || constant->get_constant()->get_value() == "1") ) { 195 type = new ExpressionNode( new CastExpr( maybeMoveBuild< Expression >(type), new BasicType( Type::Qualifiers(), BasicType::SignedInt ) ) ); 196 } // if 189 197 return new ForCtrl( 190 198 distAttr( DeclarationNode::newTypeof( type ), DeclarationNode::newName( index )->addInitializer( new InitializerNode( start ) ) ), … … 214 222 215 223 // Types declaration for productions 216 %union 217 { 224 %union { 218 225 Token tok; 219 226 ParseNode * pn; … … 290 297 %token ANDassign ERassign ORassign // &= ^= |= 291 298 292 %token Erange //~=299 %token ErangeUpEq ErangeDown ErangeDownEq // ~= -~ -~= 293 300 %token ATassign // @= 294 301 … … 1138 1145 $$ = new ForCtrl( (ExpressionNode * )nullptr, (ExpressionNode * )nullptr, (ExpressionNode * )nullptr ); 1139 1146 } else { 1140 $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ), OperKinds::LThan, $1->clone(),1141 new ExpressionNode( build_constantInteger( *new string( "1" ) )) );1147 $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ), 1148 OperKinds::LThan, $1->clone(), forInc( OperKinds::LThan ) ); 1142 1149 } // if 1143 1150 } 1144 1151 | constant_expression inclexcl constant_expression // CFA 1145 { $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $2, $3, new ExpressionNode( build_constantInteger( *new string( "1" ) )) ); }1152 { $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $2, $3, forInc( $2 ) ); } 1146 1153 | constant_expression inclexcl constant_expression '~' constant_expression // CFA 1147 1154 { $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $2, $3, $5 ); } … … 1154 1161 } else { 1155 1162 if ( NameExpr *identifier = dynamic_cast<NameExpr *>($1->get_expr()) ) { 1156 $$ = forCtrl( $3, new string( identifier->name ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ), OperKinds::LThan, $3->clone(),1157 new ExpressionNode( build_constantInteger( *new string( "1" ) )) );1163 $$ = forCtrl( $3, new string( identifier->name ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ), 1164 OperKinds::LThan, $3->clone(), forInc( OperKinds::LThan ) ); 1158 1165 } else { 1159 1166 SemanticError( yylloc, "Expression disallowed. Only loop-index name allowed" ); $$ = nullptr; … … 1167 1174 } else { 1168 1175 if ( NameExpr *identifier = dynamic_cast<NameExpr *>($1->get_expr()) ) { 1169 $$ = forCtrl( $3, new string( identifier->name ), $3->clone(), $4, $5, new ExpressionNode( build_constantInteger( *new string( "1" ) )) );1176 $$ = forCtrl( $3, new string( identifier->name ), $3->clone(), $4, $5, forInc( $4 ) ); 1170 1177 } else { 1171 1178 SemanticError( yylloc, "Expression disallowed. Only loop-index name allowed" ); $$ = nullptr; … … 1194 1201 '~' 1195 1202 { $$ = OperKinds::LThan; } 1196 | Erange 1203 | ErangeUpEq 1197 1204 { $$ = OperKinds::LEThan; } 1205 | ErangeDown 1206 { $$ = OperKinds::GThan; } 1207 | ErangeDownEq 1208 { $$ = OperKinds::GEThan; } 1198 1209 ; 1199 1210 -
src/ResolvExpr/AlternativeFinder.cc
r341bb80 r6d44da1 25 25 #include <vector> // for vector 26 26 27 #include "CompilationState.h" // for resolvep 27 28 #include "Alternative.h" // for AltList, Alternative 28 29 #include "AlternativeFinder.h" … … 49 50 #include "typeops.h" // for adjustExprType, polyCost, castCost 50 51 51 extern bool resolvep;52 52 #define PRINT( text ) if ( resolvep ) { text } 53 53 //#define DEBUG_COST -
src/ResolvExpr/Resolver.cc
r341bb80 r6d44da1 30 30 #include "RenameVars.h" // for RenameVars, global_renamer 31 31 #include "ResolvExpr/TypeEnvironment.h" // for TypeEnvironment 32 #include "ResolveTypeof.h" // for resolveTypeof33 32 #include "Resolver.h" 34 33 #include "SymTab/Autogen.h" // for SizeType … … 57 56 void postvisit( FunctionDecl *functionDecl ); 58 57 void previsit( ObjectDecl *objectDecll ); 59 void previsit( TypeDecl *typeDecl );60 58 void previsit( EnumDecl * enumDecl ); 61 59 void previsit( StaticAssertDecl * assertDecl ); … … 77 75 void previsit( CatchStmt *catchStmt ); 78 76 void previsit( WaitForStmt * stmt ); 79 void previsit( WithStmt * withStmt );80 77 81 78 void previsit( SingleInit *singleInit ); … … 88 85 void handlePtrType( PtrType * type ); 89 86 90 void resolveWithExprs( std::list< Expression * > & withExprs, std::list< Statement * > & newStmts );91 87 void fallbackInit( ConstructorInit * ctorInit ); 92 88 … … 94 90 CurrentObject currentObject = nullptr; 95 91 bool inEnumDecl = false; 92 }; 93 94 struct ResolveWithExprs : public WithIndexer, public WithGuards, public WithVisitorRef<ResolveWithExprs>, public WithShortCircuiting, public WithStmtsToAdd { 95 void previsit( FunctionDecl * ); 96 void previsit( WithStmt * ); 97 98 void resolveWithExprs( std::list< Expression * > & withExprs, std::list< Statement * > & newStmts ); 96 99 }; 97 100 … … 302 305 } 303 306 307 308 bool isStructOrUnion( const Alternative & alt ) { 309 Type * t = alt.expr->result->stripReferences(); 310 return dynamic_cast< StructInstType * >( t ) || dynamic_cast< UnionInstType * >( t ); 311 } 312 313 void resolveWithExprs( std::list< Declaration * > & translationUnit ) { 314 PassVisitor<ResolveWithExprs> resolver; 315 acceptAll( translationUnit, resolver ); 316 } 317 318 void ResolveWithExprs::resolveWithExprs( std::list< Expression * > & withExprs, std::list< Statement * > & newStmts ) { 319 for ( Expression *& expr : withExprs ) { 320 // only struct- and union-typed expressions are viable candidates 321 findKindExpression( expr, indexer, "with statement", isStructOrUnion ); 322 323 // if with expression might be impure, create a temporary so that it is evaluated once 324 if ( Tuples::maybeImpure( expr ) ) { 325 static UniqueName tmpNamer( "_with_tmp_" ); 326 ObjectDecl * tmp = ObjectDecl::newObject( tmpNamer.newName(), expr->result->clone(), new SingleInit( expr ) ); 327 expr = new VariableExpr( tmp ); 328 newStmts.push_back( new DeclStmt( tmp ) ); 329 if ( InitTweak::isConstructable( tmp->type ) ) { 330 // generate ctor/dtor and resolve them 331 tmp->init = InitTweak::genCtorInit( tmp ); 332 tmp->accept( *visitor ); 333 } 334 } 335 } 336 } 337 338 void ResolveWithExprs::previsit( WithStmt * withStmt ) { 339 resolveWithExprs( withStmt->exprs, stmtsToAddBefore ); 340 } 341 342 void ResolveWithExprs::previsit( FunctionDecl * functionDecl ) { 343 { 344 // resolve with-exprs with parameters in scope and add any newly generated declarations to the 345 // front of the function body. 346 auto guard = makeFuncGuard( [this]() { indexer.enterScope(); }, [this](){ indexer.leaveScope(); } ); 347 indexer.addFunctionType( functionDecl->type ); 348 std::list< Statement * > newStmts; 349 resolveWithExprs( functionDecl->withExprs, newStmts ); 350 if ( functionDecl->statements ) { 351 functionDecl->statements->kids.splice( functionDecl->statements->kids.begin(), newStmts ); 352 } else { 353 assertf( functionDecl->withExprs.empty() && newStmts.empty(), "Function %s without a body has with-clause and/or generated with declarations.", functionDecl->name.c_str() ); 354 } 355 } 356 } 357 304 358 void Resolver::previsit( ObjectDecl *objectDecl ) { 305 Type *new_type = resolveTypeof( objectDecl->get_type(), indexer );306 objectDecl->set_type( new_type );307 359 // To handle initialization of routine pointers, e.g., int (*fp)(int) = foo(), means that class-variable 308 360 // initContext is changed multiple time because the LHS is analysed twice. The second analysis changes … … 334 386 } 335 387 336 void Resolver::previsit( TypeDecl *typeDecl ) {337 if ( typeDecl->get_base() ) {338 Type *new_type = resolveTypeof( typeDecl->get_base(), indexer );339 typeDecl->set_base( new_type );340 } // if341 }342 343 388 void Resolver::previsit( FunctionDecl *functionDecl ) { 344 389 #if 0 … … 347 392 std::cerr << std::endl; 348 393 #endif 349 Type *new_type = resolveTypeof( functionDecl->type, indexer );350 functionDecl->set_type( new_type );351 394 GuardValue( functionReturn ); 352 395 functionReturn = ResolvExpr::extractResultType( functionDecl->type ); 353 354 {355 // resolve with-exprs with parameters in scope and add any newly generated declarations to the356 // front of the function body.357 auto guard = makeFuncGuard( [this]() { indexer.enterScope(); }, [this](){ indexer.leaveScope(); } );358 indexer.addFunctionType( functionDecl->type );359 std::list< Statement * > newStmts;360 resolveWithExprs( functionDecl->withExprs, newStmts );361 if ( functionDecl->statements ) {362 functionDecl->statements->kids.splice( functionDecl->statements->kids.begin(), newStmts );363 } else {364 assertf( functionDecl->withExprs.empty() && newStmts.empty(), "Function %s without a body has with-clause and/or generated with declarations.", functionDecl->name.c_str() );365 }366 }367 396 } 368 397 … … 695 724 stmt->orelse.statement->accept( *visitor ); 696 725 } 697 }698 699 bool isStructOrUnion( const Alternative & alt ) {700 Type * t = alt.expr->result->stripReferences();701 return dynamic_cast< StructInstType * >( t ) || dynamic_cast< UnionInstType * >( t );702 }703 704 void Resolver::resolveWithExprs( std::list< Expression * > & withExprs, std::list< Statement * > & newStmts ) {705 for ( Expression *& expr : withExprs ) {706 // only struct- and union-typed expressions are viable candidates707 findKindExpression( expr, indexer, "with statement", isStructOrUnion );708 709 // if with expression might be impure, create a temporary so that it is evaluated once710 if ( Tuples::maybeImpure( expr ) ) {711 static UniqueName tmpNamer( "_with_tmp_" );712 ObjectDecl * tmp = ObjectDecl::newObject( tmpNamer.newName(), expr->result->clone(), new SingleInit( expr ) );713 expr = new VariableExpr( tmp );714 newStmts.push_back( new DeclStmt( tmp ) );715 if ( InitTweak::isConstructable( tmp->type ) ) {716 // generate ctor/dtor and resolve them717 tmp->init = InitTweak::genCtorInit( tmp );718 tmp->accept( *visitor );719 }720 }721 }722 }723 724 void Resolver::previsit( WithStmt * withStmt ) {725 resolveWithExprs( withStmt->exprs, stmtsToAddBefore );726 726 } 727 727 -
src/ResolvExpr/Resolver.h
r341bb80 r6d44da1 38 38 /// Searches expr and returns the first DeletedExpr found, otherwise nullptr 39 39 DeletedExpr * findDeletedExpr( Expression * expr ); 40 /// Resolves with-stmts and with-clauses on functions 41 void resolveWithExprs( std::list< Declaration * > & translationUnit ); 40 42 } // namespace ResolvExpr 41 43 -
src/ResolvExpr/TypeEnvironment.cc
r341bb80 r6d44da1 69 69 } 70 70 71 EqvClass::EqvClass( EqvClass &&other ) 72 : vars{std::move(other.vars)}, type{other.type}, 71 EqvClass::EqvClass( EqvClass &&other ) 72 : vars{std::move(other.vars)}, type{other.type}, 73 73 allowWidening{std::move(other.allowWidening)}, data{std::move(other.data)} { 74 74 other.type = nullptr; … … 85 85 if ( this == &other ) return *this; 86 86 delete type; 87 87 88 88 vars = std::move(other.vars); 89 89 type = other.type; … … 132 132 ++next; 133 133 std::set<std::string> intersection; 134 std::set_intersection( i->vars.begin(), i->vars.end(), eqvClass.vars.begin(), eqvClass.vars.end(), 134 std::set_intersection( i->vars.begin(), i->vars.end(), eqvClass.vars.begin(), eqvClass.vars.end(), 135 135 std::inserter( intersection, intersection.begin() ) ); 136 136 if ( ! intersection.empty() ) { env.erase( i ); } … … 240 240 // ttype unifies with any tuple type 241 241 return dynamic_cast< TupleType * >( type ) || Tuples::isTtype( type ); 242 default: 243 assertf(false, "Unhandled tyvar kind: %d", data.kind); 242 244 } // switch 243 245 return false; … … 245 247 246 248 bool TypeEnvironment::bindVar( TypeInstType *typeInst, Type *bindTo, const TypeDecl::Data & data, AssertionSet &need, AssertionSet &have, const OpenVarSet &openVars, WidenMode widenMode, const SymTab::Indexer &indexer ) { 247 249 248 250 // remove references from other, so that type variables can only bind to value types 249 251 bindTo = bindTo->stripReferences(); … … 291 293 auto class1 = internal_lookup( var1->get_name() ); 292 294 auto class2 = internal_lookup( var2->get_name() ); 293 295 294 296 // exit early if variables already bound together 295 297 if ( class1 != env.end() && class1 == class2 ) { -
src/SymTab/Mangler.cc
r341bb80 r6d44da1 73 73 bool mangleGenericParams; ///< Include generic parameters in name mangling if true 74 74 bool inFunctionType = false; ///< Include type qualifiers if false. 75 bool inQualifiedType = false; ///< Add start/end delimiters around qualified type 75 76 76 77 void mangleDecl( DeclarationWithType *declaration ); … … 110 111 isTopLevel = false; 111 112 } // if 112 mangleName << "__";113 mangleName << Encoding::manglePrefix; 113 114 CodeGen::OperatorInfo opInfo; 114 115 if ( operatorLookup( declaration->get_name(), opInfo ) ) { 115 mangleName << opInfo.outputName ;116 mangleName << opInfo.outputName.size() << opInfo.outputName; 116 117 } else { 117 mangleName << declaration->get_name(); 118 } // if 119 mangleName << "__"; 118 mangleName << declaration->name.size() << declaration->name; 119 } // if 120 120 maybeAccept( declaration->get_type(), *visitor ); 121 121 if ( mangleOverridable && LinkageSpec::isOverridable( declaration->get_linkage() ) ) { … … 123 123 // so they need a different name mangling 124 124 if ( declaration->get_linkage() == LinkageSpec::AutoGen ) { 125 mangleName << "autogen__";125 mangleName << Encoding::autogen; 126 126 } else if ( declaration->get_linkage() == LinkageSpec::Intrinsic ) { 127 mangleName << "intrinsic__";127 mangleName << Encoding::intrinsic; 128 128 } else { 129 129 // if we add another kind of overridable function, this has to change … … 144 144 void Mangler::postvisit( VoidType * voidType ) { 145 145 printQualifiers( voidType ); 146 mangleName << "v";146 mangleName << Encoding::void_t; 147 147 } 148 148 149 149 void Mangler::postvisit( BasicType * basicType ) { 150 static const char *btLetter[] = {151 "b", // Bool152 "c", // Char153 "Sc", // SignedChar154 "Uc", // UnsignedChar155 "s", // ShortSignedInt156 "Us", // ShortUnsignedInt157 "i", // SignedInt158 "Ui", // UnsignedInt159 "l", // LongSignedInt160 "Ul", // LongUnsignedInt161 "q", // LongLongSignedInt162 "Uq", // LongLongUnsignedInt163 "f", // Float164 "d", // Double165 "r", // LongDouble166 "Xf", // FloatComplex167 "Xd", // DoubleComplex168 "Xr", // LongDoubleComplex169 "If", // FloatImaginary170 "Id", // DoubleImaginary171 "Ir", // LongDoubleImaginary172 "w", // SignedInt128173 "Uw", // UnsignedInt128174 "x", // Float80175 "y", // Float128176 };177 static_assert(178 sizeof(btLetter)/sizeof(btLetter[0]) == BasicType::NUMBER_OF_BASIC_TYPES,179 "Each basic type kind should have a corresponding mangler letter"180 );181 182 150 printQualifiers( basicType ); 183 assert ( basicType->get_kind() < sizeof(btLetter)/sizeof(btLetter[0]) );184 mangleName << btLetter[ basicType->get_kind() ];151 assertf( basicType->get_kind() < BasicType::NUMBER_OF_BASIC_TYPES, "Unhandled basic type: %d", basicType->get_kind() ); 152 mangleName << Encoding::basicTypes[ basicType->get_kind() ]; 185 153 } 186 154 … … 188 156 printQualifiers( pointerType ); 189 157 // mangle void (*f)() and void f() to the same name to prevent overloading on functions and function pointers 190 if ( ! dynamic_cast<FunctionType *>( pointerType->base ) ) mangleName << "P";158 if ( ! dynamic_cast<FunctionType *>( pointerType->base ) ) mangleName << Encoding::pointer; 191 159 maybeAccept( pointerType->base, *visitor ); 192 160 } … … 195 163 // TODO: encode dimension 196 164 printQualifiers( arrayType ); 197 mangleName << "A0";165 mangleName << Encoding::array << "0"; 198 166 maybeAccept( arrayType->base, *visitor ); 199 167 } … … 220 188 void Mangler::postvisit( FunctionType * functionType ) { 221 189 printQualifiers( functionType ); 222 mangleName << "F";190 mangleName << Encoding::function; 223 191 // turn on inFunctionType so that printQualifiers does not print most qualifiers for function parameters, 224 192 // since qualifiers on outermost parameter type do not differentiate function types, e.g., … … 227 195 inFunctionType = true; 228 196 std::list< Type* > returnTypes = getTypes( functionType->returnVals ); 229 acceptAll( returnTypes, *visitor ); 197 if (returnTypes.empty()) mangleName << Encoding::void_t; 198 else acceptAll( returnTypes, *visitor ); 230 199 mangleName << "_"; 231 200 std::list< Type* > paramTypes = getTypes( functionType->parameters ); … … 237 206 printQualifiers( refType ); 238 207 239 mangleName << ( refType->name.length() + prefix.length() ) << prefix<< refType->name;208 mangleName << prefix << refType->name.length() << refType->name; 240 209 241 210 if ( mangleGenericParams ) { … … 254 223 255 224 void Mangler::postvisit( StructInstType * aggregateUseType ) { 256 mangleRef( aggregateUseType, "s");225 mangleRef( aggregateUseType, Encoding::struct_t ); 257 226 } 258 227 259 228 void Mangler::postvisit( UnionInstType * aggregateUseType ) { 260 mangleRef( aggregateUseType, "u");229 mangleRef( aggregateUseType, Encoding::union_t ); 261 230 } 262 231 263 232 void Mangler::postvisit( EnumInstType * aggregateUseType ) { 264 mangleRef( aggregateUseType, "e");233 mangleRef( aggregateUseType, Encoding::enum_t ); 265 234 } 266 235 … … 268 237 VarMapType::iterator varNum = varNums.find( typeInst->get_name() ); 269 238 if ( varNum == varNums.end() ) { 270 mangleRef( typeInst, "t");239 mangleRef( typeInst, Encoding::type ); 271 240 } else { 272 241 printQualifiers( typeInst ); 273 std::ostringstream numStream; 274 numStream << varNum->second.first; 275 switch ( (TypeDecl::Kind )varNum->second.second ) { 276 case TypeDecl::Dtype: 277 mangleName << "d"; 278 break; 279 case TypeDecl::Ftype: 280 mangleName << "f"; 281 break; 282 case TypeDecl::Ttype: 283 mangleName << "tVARGS"; 284 break; 285 default: 286 assert( false ); 287 } // switch 288 mangleName << numStream.str(); 242 // Note: Can't use name here, since type variable names do not actually disambiguate a function, e.g. 243 // forall(dtype T) void f(T); 244 // forall(dtype S) void f(S); 245 // are equivalent and should mangle the same way. This is accomplished by numbering the type variables when they 246 // are first found and prefixing with the appropriate encoding for the type class. 247 assertf( varNum->second.second < TypeDecl::NUMBER_OF_KINDS, "Unhandled type variable kind: %d", varNum->second.second ); 248 mangleName << Encoding::typeVariables[varNum->second.second] << varNum->second.first; 289 249 } // if 290 250 } … … 292 252 void Mangler::postvisit( TraitInstType * inst ) { 293 253 printQualifiers( inst ); 294 mangleName << "_Y" << inst->name << "_";254 mangleName << inst->name.size() << inst->name; 295 255 } 296 256 297 257 void Mangler::postvisit( TupleType * tupleType ) { 298 258 printQualifiers( tupleType ); 299 mangleName << "T";259 mangleName << Encoding::tuple << tupleType->types.size(); 300 260 acceptAll( tupleType->types, *visitor ); 301 mangleName << "_";302 261 } 303 262 304 263 void Mangler::postvisit( VarArgsType * varArgsType ) { 305 264 printQualifiers( varArgsType ); 306 mangleName << "VARGS"; 265 static const std::string vargs = "__builtin_va_list"; 266 mangleName << Encoding::type << vargs.size() << vargs; 307 267 } 308 268 309 269 void Mangler::postvisit( ZeroType * ) { 310 mangleName << "Z";270 mangleName << Encoding::zero; 311 271 } 312 272 313 273 void Mangler::postvisit( OneType * ) { 314 mangleName << "O";274 mangleName << Encoding::one; 315 275 } 316 276 317 277 void Mangler::postvisit( QualifiedType * qualType ) { 278 bool inqual = inQualifiedType; 279 if (! inqual ) { 280 // N marks the start of a qualified type 281 inQualifiedType = true; 282 mangleName << Encoding::qualifiedTypeStart; 283 } 318 284 maybeAccept( qualType->parent, *visitor ); 319 mangleName << "__";320 285 maybeAccept( qualType->child, *visitor ); 286 if ( ! inqual ) { 287 // E marks the end of a qualified type 288 inQualifiedType = false; 289 mangleName << Encoding::qualifiedTypeEnd; 290 } 321 291 } 322 292 323 293 void Mangler::postvisit( TypeDecl * decl ) { 324 static const char *typePrefix[] = { "BT", "BD", "BF" }; 325 mangleName << typePrefix[ decl->get_kind() ] << ( decl->name.length() + 1 ) << decl->name; 294 // TODO: is there any case where mangling a TypeDecl makes sense? If so, this code needs to be 295 // fixed to ensure that two TypeDecls mangle to the same name when they are the same type and vice versa. 296 // Note: The current scheme may already work correctly for this case, I have not thought about this deeply 297 // and the case has not yet come up in practice. Alternatively, if not then this code can be removed 298 // aside from the assert false. 299 assertf(false, "Mangler should not visit typedecl: %s", toCString(decl)); 300 assertf( decl->get_kind() < TypeDecl::NUMBER_OF_KINDS, "Unhandled type variable kind: %d", decl->get_kind() ); 301 mangleName << Encoding::typeVariables[ decl->get_kind() ] << ( decl->name.length() ) << decl->name; 326 302 } 327 303 … … 337 313 if ( ! type->get_forall().empty() ) { 338 314 std::list< std::string > assertionNames; 339 int tcount = 0, dcount = 0, fcount = 0, vcount = 0;340 mangleName << "A";315 int dcount = 0, fcount = 0, vcount = 0, acount = 0; 316 mangleName << Encoding::forall; 341 317 for ( Type::ForallList::iterator i = type->forall.begin(); i != type->forall.end(); ++i ) { 342 318 switch ( (*i)->get_kind() ) { … … 361 337 (*assert)->accept( sub_mangler ); 362 338 assertionNames.push_back( sub_mangler.pass.mangleName.str() ); 339 acount++; 363 340 } // for 364 341 } // for 365 mangleName << tcount << "_" << dcount << "_" << fcount << "_" << vcount << "_";342 mangleName << dcount << "_" << fcount << "_" << vcount << "_" << acount << "_"; 366 343 std::copy( assertionNames.begin(), assertionNames.end(), std::ostream_iterator< std::string >( mangleName, "" ) ); 367 344 mangleName << "_"; … … 370 347 // these qualifiers do not distinguish the outermost type of a function parameter 371 348 if ( type->get_const() ) { 372 mangleName << "C";349 mangleName << Encoding::qualifiers.at(Type::Const); 373 350 } // if 374 351 if ( type->get_volatile() ) { 375 mangleName << "V";352 mangleName << Encoding::qualifiers.at(Type::Volatile); 376 353 } // if 377 354 // Removed due to restrict not affecting function compatibility in GCC … … 380 357 // } // if 381 358 if ( type->get_atomic() ) { 382 mangleName << "A";359 mangleName << Encoding::qualifiers.at(Type::Atomic); 383 360 } // if 384 361 } 385 362 if ( type->get_mutex() ) { 386 mangleName << "M";363 mangleName << Encoding::qualifiers.at(Type::Mutex); 387 364 } // if 388 365 if ( type->get_lvalue() ) { 389 366 // mangle based on whether the type is lvalue, so that the resolver can differentiate lvalues and rvalues 390 mangleName << "L";367 mangleName << Encoding::qualifiers.at(Type::Lvalue); 391 368 } 392 369 -
src/SymTab/Mangler.h
r341bb80 r6d44da1 24 24 #include "SynTree/Visitor.h" // for Visitor, maybeAccept 25 25 26 // https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling 27 // The CFA name mangling scheme is based closely on the itanium C++ name mangling scheme, with the following key differences: 28 // * Variable names are also mangled to include type information, not just functions 29 // * CFA does not have template expansion, so the rules for function specialization do not apply. 30 // * CFA instead has to handle type parameters and assertion parameters. 31 // * Currently name compression is not implemented. 32 26 33 namespace SymTab { 27 34 namespace Mangler { … … 33 40 /// Mangle ignoring generic type parameters 34 41 std::string mangleConcrete( Type* ty ); 42 43 namespace Encoding { 44 extern const std::string manglePrefix; 45 extern const std::string basicTypes[]; 46 extern const std::map<int, std::string> qualifiers; 47 48 extern const std::string void_t; 49 extern const std::string zero; 50 extern const std::string one; 51 52 extern const std::string function; 53 extern const std::string tuple; 54 extern const std::string pointer; 55 extern const std::string array; 56 extern const std::string qualifiedTypeStart; 57 extern const std::string qualifiedTypeEnd; 58 59 extern const std::string forall; 60 extern const std::string typeVariables[]; 61 62 extern const std::string struct_t; 63 extern const std::string union_t; 64 extern const std::string enum_t; 65 extern const std::string type; 66 67 extern const std::string autogen; 68 extern const std::string intrinsic; 69 }; 35 70 } // Mangler 36 71 } // SymTab 72 73 extern "C" { 74 char * cforall_demangle(const char *, int); 75 } 37 76 38 77 // Local Variables: // -
src/SymTab/Validate.cc
r341bb80 r6d44da1 62 62 #include "ResolvExpr/typeops.h" // for typesCompatible 63 63 #include "ResolvExpr/Resolver.h" // for findSingleExpression 64 #include "ResolvExpr/ResolveTypeof.h" // for resolveTypeof 64 65 #include "SymTab/Autogen.h" // for SizeType 65 66 #include "SynTree/Attribute.h" // for noAttributes, Attribute … … 247 248 void previsit( StructInstType * inst ); 248 249 void previsit( UnionInstType * inst ); 250 }; 251 252 struct FixObjectType : public WithIndexer { 253 /// resolves typeof type in object, function, and type declarations 254 static void fix( std::list< Declaration * > & translationUnit ); 255 256 void previsit( ObjectDecl * ); 257 void previsit( FunctionDecl * ); 258 void previsit( TypeDecl * ); 249 259 }; 250 260 … … 312 322 Concurrency::implementThreadStarter( translationUnit ); 313 323 mutateAll( translationUnit, compoundliteral ); 324 ResolvExpr::resolveWithExprs( translationUnit ); // must happen before FixObjectType because user-code is resolved and may contain with variables 325 FixObjectType::fix( translationUnit ); 314 326 ArrayLength::computeLength( translationUnit ); 315 327 acceptAll( translationUnit, finder ); // xxx - remove this pass soon … … 391 403 assert( aggr ); // TODO: need to handle forward declarations 392 404 for ( Declaration * member : aggr->members ) { 393 if ( StructInstType * inst = dynamic_cast< StructInstType * >( child ) ) { 394 if ( StructDecl * aggr = dynamic_cast< StructDecl * >( member ) ) { 395 if ( aggr->name == inst->name ) { 396 // TODO: is this case, and other non-TypeInstType cases, necessary? 397 return new StructInstType( qualType->get_qualifiers(), aggr ); 398 } 399 } 400 } else if ( UnionInstType * inst = dynamic_cast< UnionInstType * >( child ) ) { 401 if ( UnionDecl * aggr = dynamic_cast< UnionDecl * > ( member ) ) { 402 if ( aggr->name == inst->name ) { 403 return new UnionInstType( qualType->get_qualifiers(), aggr ); 404 } 405 } 406 } else if ( EnumInstType * inst = dynamic_cast< EnumInstType * >( child ) ) { 407 if ( EnumDecl * aggr = dynamic_cast< EnumDecl * > ( member ) ) { 408 if ( aggr->name == inst->name ) { 409 return new EnumInstType( qualType->get_qualifiers(), aggr ); 410 } 411 } 412 } else if ( TypeInstType * inst = dynamic_cast< TypeInstType * >( child ) ) { 405 if ( TypeInstType * inst = dynamic_cast< TypeInstType * >( child ) ) { 413 406 // name on the right is a typedef 414 407 if ( NamedTypeDecl * aggr = dynamic_cast< NamedTypeDecl * > ( member ) ) { … … 417 410 Type * ret = aggr->base->clone(); 418 411 ret->get_qualifiers() = qualType->get_qualifiers(); 412 TypeSubstitution sub = parent->genericSubstitution(); 413 sub.apply(ret); 419 414 return ret; 420 415 } … … 1238 1233 } 1239 1234 1235 void FixObjectType::fix( std::list< Declaration * > & translationUnit ) { 1236 PassVisitor<FixObjectType> fixer; 1237 acceptAll( translationUnit, fixer ); 1238 } 1239 1240 void FixObjectType::previsit( ObjectDecl * objDecl ) { 1241 Type *new_type = ResolvExpr::resolveTypeof( objDecl->get_type(), indexer ); 1242 new_type->get_qualifiers() -= Type::Lvalue; // even if typeof is lvalue, variable can never have lvalue-qualified type 1243 objDecl->set_type( new_type ); 1244 } 1245 1246 void FixObjectType::previsit( FunctionDecl * funcDecl ) { 1247 Type *new_type = ResolvExpr::resolveTypeof( funcDecl->type, indexer ); 1248 new_type->get_qualifiers() -= Type::Lvalue; // even if typeof is lvalue, variable can never have lvalue-qualified type 1249 funcDecl->set_type( new_type ); 1250 } 1251 1252 void FixObjectType::previsit( TypeDecl *typeDecl ) { 1253 if ( typeDecl->get_base() ) { 1254 Type *new_type = ResolvExpr::resolveTypeof( typeDecl->get_base(), indexer ); 1255 new_type->get_qualifiers() -= Type::Lvalue; // even if typeof is lvalue, variable can never have lvalue-qualified type 1256 typeDecl->set_base( new_type ); 1257 } // if 1258 } 1259 1240 1260 void ArrayLength::computeLength( std::list< Declaration * > & translationUnit ) { 1241 1261 PassVisitor<ArrayLength> len; -
src/SymTab/module.mk
r341bb80 r6d44da1 17 17 SRC += SymTab/Indexer.cc \ 18 18 SymTab/Mangler.cc \ 19 SymTab/ManglerCommon.cc \ 19 20 SymTab/Validate.cc \ 20 21 SymTab/FixFunction.cc \ -
src/SynTree/Declaration.h
r341bb80 r6d44da1 202 202 typedef NamedTypeDecl Parent; 203 203 public: 204 enum Kind { Dtype, Ftype, Ttype };204 enum Kind { Dtype, Ftype, Ttype, NUMBER_OF_KINDS }; 205 205 206 206 Type * init; -
src/cfa.make
r341bb80 r6d44da1 12 12 am__v_CFA_1 = 13 13 14 .cfa.o: $(CFACC) $(CFACPP)14 .cfa.o: 15 15 $(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ 16 16 $(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -
src/main.cc
r341bb80 r6d44da1 34 34 #include "CodeGen/Generate.h" // for generate 35 35 #include "CodeTools/DeclStats.h" // for printDeclStats 36 #include "CodeTools/ResolvProtoDump.h" // for dumpAsResolvProto 36 37 #include "CodeTools/TrackLoc.h" // for fillLocations 37 38 #include "Common/CompilerError.h" // for CompilerError … … 171 172 if ( filename == nullptr ) filename = argv[ optind ]; 172 173 // prelude filename comes in differently 173 if ( libcfap ) filename = "prelude.cf ";174 if ( libcfap ) filename = "prelude.cfa"; 174 175 optind += 1; 175 176 } else { // no input file name … … 198 199 if ( ! libcfap ) { 199 200 // read the prelude in, if not generating the cfa library 200 FILE * prelude = fopen( (PreludeDirector + "/prelude.cf ").c_str(), "r" );201 assertf( prelude, "cannot open prelude.cf \n" );201 FILE * prelude = fopen( (PreludeDirector + "/prelude.cfa").c_str(), "r" ); 202 assertf( prelude, "cannot open prelude.cfa\n" ); 202 203 parse( prelude, LinkageSpec::Intrinsic ); 203 204 … … 270 271 271 272 CodeTools::fillLocations( translationUnit ); 273 274 if ( resolvprotop ) { 275 CodeTools::dumpAsResolvProto( translationUnit ); 276 return 0; 277 } 272 278 273 279 PASS( "resolve", ResolvExpr::resolve( translationUnit ) ); … … 376 382 377 383 void parse_cmdline( int argc, char * argv[], const char *& filename ) { 378 enum { Ast, Bbox, Bresolver, CtorInitFix, DeclStats, Expr, ExprAlt, Grammar, LibCFA, Linemarks, Nolinemarks, Nopreamble, Parse, PreludeDir, Prototypes, Resolver, Symbol, Tree, TupleExpansion, Validate, };384 enum { Ast, Bbox, Bresolver, CtorInitFix, DeclStats, Expr, ExprAlt, Grammar, LibCFA, Linemarks, Nolinemarks, Nopreamble, Parse, PreludeDir, Prototypes, Resolver, ResolvProto, Symbol, Tree, TupleExpansion, Validate, }; 379 385 380 386 static struct option long_opts[] = { … … 395 401 { "no-prototypes", no_argument, 0, Prototypes }, 396 402 { "resolver", no_argument, 0, Resolver }, 403 { "resolv-proto", no_argument, 0, ResolvProto }, 397 404 { "symbol", no_argument, 0, Symbol }, 398 405 { "tree", no_argument, 0, Tree }, … … 407 414 bool Wsuppress = false, Werror = false; 408 415 int c; 409 while ( (c = getopt_long( argc, argv, "abBcCdefgGlLmnNpqr stTvwW:yzZD:F:", long_opts, &long_index )) != -1 ) {416 while ( (c = getopt_long( argc, argv, "abBcCdefgGlLmnNpqrRstTvwW:yzZD:F:", long_opts, &long_index )) != -1 ) { 410 417 switch ( c ) { 411 418 case Ast: … … 479 486 case 'r': // print resolver steps 480 487 resolvep = true; 488 break; 489 case 'R': // dump resolv-proto instance 490 resolvprotop = true; 481 491 break; 482 492 case Symbol:
Note:
See TracChangeset
for help on using the changeset viewer.