- Timestamp:
- Aug 20, 2018, 3:03:20 PM (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:
- efa8b6a
- Parents:
- f7d3215 (diff), ec91336 (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:
-
- 3 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
src/GenPoly/ScrubTyVars.cc
rf7d3215 r72b3605 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
rf7d3215 r72b3605 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 … … 51 51 AM_LDFLAGS = @HOST_FLAGS@ -Xlinker -export-dynamic 52 52 53 demangler_SOURCES = SymTab/demangler.cc 54 55 demangler_LDADD = libdemangle.a # yywrap 56 57 noinst_LIBRARIES = libdemangle.a 58 libdemangle_a_SOURCES = SymTab/Demangle.cc SymTab/ManglerCommon.cc \ 59 SynTree/Type.cc \ 60 SynTree/VoidType.cc \ 61 SynTree/BasicType.cc \ 62 SynTree/PointerType.cc \ 63 SynTree/ArrayType.cc \ 64 SynTree/ReferenceType.cc \ 65 SynTree/FunctionType.cc \ 66 SynTree/ReferenceToType.cc \ 67 SynTree/TupleType.cc \ 68 SynTree/TypeofType.cc \ 69 SynTree/AttrType.cc \ 70 SynTree/VarArgsType.cc \ 71 SynTree/ZeroOneType.cc \ 72 SynTree/Constant.cc \ 73 SynTree/Expression.cc \ 74 SynTree/TupleExpr.cc \ 75 SynTree/CommaExpr.cc \ 76 SynTree/TypeExpr.cc \ 77 SynTree/ApplicationExpr.cc \ 78 SynTree/AddressExpr.cc \ 79 SynTree/Statement.cc \ 80 SynTree/CompoundStmt.cc \ 81 SynTree/DeclStmt.cc \ 82 SynTree/Declaration.cc \ 83 SynTree/DeclarationWithType.cc \ 84 SynTree/ObjectDecl.cc \ 85 SynTree/FunctionDecl.cc \ 86 SynTree/AggregateDecl.cc \ 87 SynTree/NamedTypeDecl.cc \ 88 SynTree/TypeDecl.cc \ 89 SynTree/Initializer.cc \ 90 SynTree/TypeSubstitution.cc \ 91 SynTree/Attribute.cc \ 92 SynTree/DeclReplacer.cc \ 93 CompilationState.cc \ 94 CodeGen/CodeGenerator.cc \ 95 CodeGen/FixMain.cc \ 96 CodeGen/GenType.cc \ 97 CodeGen/OperatorTable.cc \ 98 Common/Assert.cc \ 99 Common/Eval.cc \ 100 Common/SemanticError.cc \ 101 Common/UniqueName.cc \ 102 Concurrency/Keywords.cc \ 103 ControlStruct/ForExprMutator.cc \ 104 ControlStruct/LabelFixer.cc \ 105 ControlStruct/LabelGenerator.cc \ 106 ControlStruct/MLEMutator.cc \ 107 ControlStruct/Mutate.cc \ 108 GenPoly/GenPoly.cc \ 109 GenPoly/Lvalue.cc \ 110 InitTweak/GenInit.cc \ 111 InitTweak/InitTweak.cc \ 112 Parser/LinkageSpec.cc \ 113 ResolvExpr/AdjustExprType.cc \ 114 ResolvExpr/Alternative.cc \ 115 ResolvExpr/AlternativeFinder.cc \ 116 ResolvExpr/ExplodedActual.cc \ 117 ResolvExpr/CastCost.cc \ 118 ResolvExpr/CommonType.cc \ 119 ResolvExpr/ConversionCost.cc \ 120 ResolvExpr/CurrentObject.cc \ 121 ResolvExpr/FindOpenVars.cc \ 122 ResolvExpr/Occurs.cc \ 123 ResolvExpr/PolyCost.cc \ 124 ResolvExpr/PtrsAssignable.cc \ 125 ResolvExpr/PtrsCastable.cc \ 126 ResolvExpr/RenameVars.cc \ 127 ResolvExpr/Resolver.cc \ 128 ResolvExpr/ResolveTypeof.cc \ 129 ResolvExpr/TypeEnvironment.cc \ 130 ResolvExpr/Unify.cc \ 131 SymTab/Autogen.cc \ 132 SymTab/FixFunction.cc \ 133 SymTab/Indexer.cc \ 134 SymTab/Mangler.cc \ 135 SymTab/Validate.cc \ 136 Tuples/Explode.cc \ 137 Tuples/TupleAssignment.cc \ 138 Tuples/TupleExpansion.cc \ 139 Validate/HandleAttributes.cc 140 53 141 MAINTAINERCLEANFILES += ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}} -
src/Makefile.in
rf7d3215 r72b3605 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 ARFLAGS = cru 155 AM_V_AR = $(am__v_AR_@AM_V@) 156 am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) 157 am__v_AR_0 = @echo " AR " $@; 158 am__v_AR_1 = 159 libdemangle_a_AR = $(AR) $(ARFLAGS) 160 libdemangle_a_LIBADD = 161 am__dirstamp = $(am__leading_dot)dirstamp 162 am_libdemangle_a_OBJECTS = SymTab/Demangle.$(OBJEXT) \ 163 SymTab/ManglerCommon.$(OBJEXT) SynTree/Type.$(OBJEXT) \ 164 SynTree/VoidType.$(OBJEXT) SynTree/BasicType.$(OBJEXT) \ 165 SynTree/PointerType.$(OBJEXT) SynTree/ArrayType.$(OBJEXT) \ 166 SynTree/ReferenceType.$(OBJEXT) SynTree/FunctionType.$(OBJEXT) \ 167 SynTree/ReferenceToType.$(OBJEXT) SynTree/TupleType.$(OBJEXT) \ 168 SynTree/TypeofType.$(OBJEXT) SynTree/AttrType.$(OBJEXT) \ 169 SynTree/VarArgsType.$(OBJEXT) SynTree/ZeroOneType.$(OBJEXT) \ 170 SynTree/Constant.$(OBJEXT) SynTree/Expression.$(OBJEXT) \ 171 SynTree/TupleExpr.$(OBJEXT) SynTree/CommaExpr.$(OBJEXT) \ 172 SynTree/TypeExpr.$(OBJEXT) SynTree/ApplicationExpr.$(OBJEXT) \ 173 SynTree/AddressExpr.$(OBJEXT) SynTree/Statement.$(OBJEXT) \ 174 SynTree/CompoundStmt.$(OBJEXT) SynTree/DeclStmt.$(OBJEXT) \ 175 SynTree/Declaration.$(OBJEXT) \ 176 SynTree/DeclarationWithType.$(OBJEXT) \ 177 SynTree/ObjectDecl.$(OBJEXT) SynTree/FunctionDecl.$(OBJEXT) \ 178 SynTree/AggregateDecl.$(OBJEXT) \ 179 SynTree/NamedTypeDecl.$(OBJEXT) SynTree/TypeDecl.$(OBJEXT) \ 180 SynTree/Initializer.$(OBJEXT) \ 181 SynTree/TypeSubstitution.$(OBJEXT) SynTree/Attribute.$(OBJEXT) \ 182 SynTree/DeclReplacer.$(OBJEXT) CompilationState.$(OBJEXT) \ 183 CodeGen/CodeGenerator.$(OBJEXT) CodeGen/FixMain.$(OBJEXT) \ 184 CodeGen/GenType.$(OBJEXT) CodeGen/OperatorTable.$(OBJEXT) \ 185 Common/Assert.$(OBJEXT) Common/Eval.$(OBJEXT) \ 186 Common/SemanticError.$(OBJEXT) Common/UniqueName.$(OBJEXT) \ 187 Concurrency/Keywords.$(OBJEXT) \ 188 ControlStruct/ForExprMutator.$(OBJEXT) \ 189 ControlStruct/LabelFixer.$(OBJEXT) \ 190 ControlStruct/LabelGenerator.$(OBJEXT) \ 191 ControlStruct/MLEMutator.$(OBJEXT) \ 192 ControlStruct/Mutate.$(OBJEXT) GenPoly/GenPoly.$(OBJEXT) \ 193 GenPoly/Lvalue.$(OBJEXT) InitTweak/GenInit.$(OBJEXT) \ 194 InitTweak/InitTweak.$(OBJEXT) Parser/LinkageSpec.$(OBJEXT) \ 195 ResolvExpr/AdjustExprType.$(OBJEXT) \ 196 ResolvExpr/Alternative.$(OBJEXT) \ 197 ResolvExpr/AlternativeFinder.$(OBJEXT) \ 198 ResolvExpr/ExplodedActual.$(OBJEXT) \ 199 ResolvExpr/CastCost.$(OBJEXT) ResolvExpr/CommonType.$(OBJEXT) \ 200 ResolvExpr/ConversionCost.$(OBJEXT) \ 201 ResolvExpr/CurrentObject.$(OBJEXT) \ 202 ResolvExpr/FindOpenVars.$(OBJEXT) ResolvExpr/Occurs.$(OBJEXT) \ 203 ResolvExpr/PolyCost.$(OBJEXT) \ 204 ResolvExpr/PtrsAssignable.$(OBJEXT) \ 205 ResolvExpr/PtrsCastable.$(OBJEXT) \ 206 ResolvExpr/RenameVars.$(OBJEXT) ResolvExpr/Resolver.$(OBJEXT) \ 207 ResolvExpr/ResolveTypeof.$(OBJEXT) \ 208 ResolvExpr/TypeEnvironment.$(OBJEXT) \ 209 ResolvExpr/Unify.$(OBJEXT) SymTab/Autogen.$(OBJEXT) \ 210 SymTab/FixFunction.$(OBJEXT) SymTab/Indexer.$(OBJEXT) \ 211 SymTab/Mangler.$(OBJEXT) SymTab/Validate.$(OBJEXT) \ 212 Tuples/Explode.$(OBJEXT) Tuples/TupleAssignment.$(OBJEXT) \ 213 Tuples/TupleExpansion.$(OBJEXT) \ 214 Validate/HandleAttributes.$(OBJEXT) 215 libdemangle_a_OBJECTS = $(am_libdemangle_a_OBJECTS) 151 216 am__installdirs = "$(DESTDIR)$(cfa_cpplibdir)" 152 217 PROGRAMS = $(cfa_cpplib_PROGRAMS) 153 am__dirstamp = $(am__leading_dot)dirstamp154 218 am__objects_1 = main.$(OBJEXT) MakeLibCfa.$(OBJEXT) \ 155 219 CompilationState.$(OBJEXT) CodeGen/Generate.$(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 \ … … 477 546 ResolvExpr/Occurs.cc ResolvExpr/TypeEnvironment.cc \ 478 547 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 \548 SymTab/Indexer.cc SymTab/Mangler.cc SymTab/ManglerCommon.cc \ 549 SymTab/Validate.cc SymTab/FixFunction.cc SymTab/Autogen.cc \ 550 SynTree/Type.cc SynTree/VoidType.cc SynTree/BasicType.cc \ 482 551 SynTree/PointerType.cc SynTree/ArrayType.cc \ 483 552 SynTree/ReferenceType.cc SynTree/FunctionType.cc \ … … 511 580 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 581 AM_LDFLAGS = @HOST_FLAGS@ -Xlinker -export-dynamic 582 demangler_SOURCES = SymTab/demangler.cc 583 demangler_LDADD = libdemangle.a # yywrap 584 noinst_LIBRARIES = libdemangle.a 585 libdemangle_a_SOURCES = SymTab/Demangle.cc SymTab/ManglerCommon.cc \ 586 SynTree/Type.cc \ 587 SynTree/VoidType.cc \ 588 SynTree/BasicType.cc \ 589 SynTree/PointerType.cc \ 590 SynTree/ArrayType.cc \ 591 SynTree/ReferenceType.cc \ 592 SynTree/FunctionType.cc \ 593 SynTree/ReferenceToType.cc \ 594 SynTree/TupleType.cc \ 595 SynTree/TypeofType.cc \ 596 SynTree/AttrType.cc \ 597 SynTree/VarArgsType.cc \ 598 SynTree/ZeroOneType.cc \ 599 SynTree/Constant.cc \ 600 SynTree/Expression.cc \ 601 SynTree/TupleExpr.cc \ 602 SynTree/CommaExpr.cc \ 603 SynTree/TypeExpr.cc \ 604 SynTree/ApplicationExpr.cc \ 605 SynTree/AddressExpr.cc \ 606 SynTree/Statement.cc \ 607 SynTree/CompoundStmt.cc \ 608 SynTree/DeclStmt.cc \ 609 SynTree/Declaration.cc \ 610 SynTree/DeclarationWithType.cc \ 611 SynTree/ObjectDecl.cc \ 612 SynTree/FunctionDecl.cc \ 613 SynTree/AggregateDecl.cc \ 614 SynTree/NamedTypeDecl.cc \ 615 SynTree/TypeDecl.cc \ 616 SynTree/Initializer.cc \ 617 SynTree/TypeSubstitution.cc \ 618 SynTree/Attribute.cc \ 619 SynTree/DeclReplacer.cc \ 620 CompilationState.cc \ 621 CodeGen/CodeGenerator.cc \ 622 CodeGen/FixMain.cc \ 623 CodeGen/GenType.cc \ 624 CodeGen/OperatorTable.cc \ 625 Common/Assert.cc \ 626 Common/Eval.cc \ 627 Common/SemanticError.cc \ 628 Common/UniqueName.cc \ 629 Concurrency/Keywords.cc \ 630 ControlStruct/ForExprMutator.cc \ 631 ControlStruct/LabelFixer.cc \ 632 ControlStruct/LabelGenerator.cc \ 633 ControlStruct/MLEMutator.cc \ 634 ControlStruct/Mutate.cc \ 635 GenPoly/GenPoly.cc \ 636 GenPoly/Lvalue.cc \ 637 InitTweak/GenInit.cc \ 638 InitTweak/InitTweak.cc \ 639 Parser/LinkageSpec.cc \ 640 ResolvExpr/AdjustExprType.cc \ 641 ResolvExpr/Alternative.cc \ 642 ResolvExpr/AlternativeFinder.cc \ 643 ResolvExpr/ExplodedActual.cc \ 644 ResolvExpr/CastCost.cc \ 645 ResolvExpr/CommonType.cc \ 646 ResolvExpr/ConversionCost.cc \ 647 ResolvExpr/CurrentObject.cc \ 648 ResolvExpr/FindOpenVars.cc \ 649 ResolvExpr/Occurs.cc \ 650 ResolvExpr/PolyCost.cc \ 651 ResolvExpr/PtrsAssignable.cc \ 652 ResolvExpr/PtrsCastable.cc \ 653 ResolvExpr/RenameVars.cc \ 654 ResolvExpr/Resolver.cc \ 655 ResolvExpr/ResolveTypeof.cc \ 656 ResolvExpr/TypeEnvironment.cc \ 657 ResolvExpr/Unify.cc \ 658 SymTab/Autogen.cc \ 659 SymTab/FixFunction.cc \ 660 SymTab/Indexer.cc \ 661 SymTab/Mangler.cc \ 662 SymTab/Validate.cc \ 663 Tuples/Explode.cc \ 664 Tuples/TupleAssignment.cc \ 665 Tuples/TupleExpansion.cc \ 666 Validate/HandleAttributes.cc 667 513 668 all: $(BUILT_SOURCES) 514 669 $(MAKE) $(AM_MAKEFLAGS) all-am … … 546 701 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh 547 702 $(am__aclocal_m4_deps): 703 704 clean-noinstLIBRARIES: 705 -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) 706 SymTab/$(am__dirstamp): 707 @$(MKDIR_P) SymTab 708 @: > SymTab/$(am__dirstamp) 709 SymTab/$(DEPDIR)/$(am__dirstamp): 710 @$(MKDIR_P) SymTab/$(DEPDIR) 711 @: > SymTab/$(DEPDIR)/$(am__dirstamp) 712 SymTab/Demangle.$(OBJEXT): SymTab/$(am__dirstamp) \ 713 SymTab/$(DEPDIR)/$(am__dirstamp) 714 SymTab/ManglerCommon.$(OBJEXT): SymTab/$(am__dirstamp) \ 715 SymTab/$(DEPDIR)/$(am__dirstamp) 716 SynTree/$(am__dirstamp): 717 @$(MKDIR_P) SynTree 718 @: > SynTree/$(am__dirstamp) 719 SynTree/$(DEPDIR)/$(am__dirstamp): 720 @$(MKDIR_P) SynTree/$(DEPDIR) 721 @: > SynTree/$(DEPDIR)/$(am__dirstamp) 722 SynTree/Type.$(OBJEXT): SynTree/$(am__dirstamp) \ 723 SynTree/$(DEPDIR)/$(am__dirstamp) 724 SynTree/VoidType.$(OBJEXT): SynTree/$(am__dirstamp) \ 725 SynTree/$(DEPDIR)/$(am__dirstamp) 726 SynTree/BasicType.$(OBJEXT): SynTree/$(am__dirstamp) \ 727 SynTree/$(DEPDIR)/$(am__dirstamp) 728 SynTree/PointerType.$(OBJEXT): SynTree/$(am__dirstamp) \ 729 SynTree/$(DEPDIR)/$(am__dirstamp) 730 SynTree/ArrayType.$(OBJEXT): SynTree/$(am__dirstamp) \ 731 SynTree/$(DEPDIR)/$(am__dirstamp) 732 SynTree/ReferenceType.$(OBJEXT): SynTree/$(am__dirstamp) \ 733 SynTree/$(DEPDIR)/$(am__dirstamp) 734 SynTree/FunctionType.$(OBJEXT): SynTree/$(am__dirstamp) \ 735 SynTree/$(DEPDIR)/$(am__dirstamp) 736 SynTree/ReferenceToType.$(OBJEXT): SynTree/$(am__dirstamp) \ 737 SynTree/$(DEPDIR)/$(am__dirstamp) 738 SynTree/TupleType.$(OBJEXT): SynTree/$(am__dirstamp) \ 739 SynTree/$(DEPDIR)/$(am__dirstamp) 740 SynTree/TypeofType.$(OBJEXT): SynTree/$(am__dirstamp) \ 741 SynTree/$(DEPDIR)/$(am__dirstamp) 742 SynTree/AttrType.$(OBJEXT): SynTree/$(am__dirstamp) \ 743 SynTree/$(DEPDIR)/$(am__dirstamp) 744 SynTree/VarArgsType.$(OBJEXT): SynTree/$(am__dirstamp) \ 745 SynTree/$(DEPDIR)/$(am__dirstamp) 746 SynTree/ZeroOneType.$(OBJEXT): SynTree/$(am__dirstamp) \ 747 SynTree/$(DEPDIR)/$(am__dirstamp) 748 SynTree/Constant.$(OBJEXT): SynTree/$(am__dirstamp) \ 749 SynTree/$(DEPDIR)/$(am__dirstamp) 750 SynTree/Expression.$(OBJEXT): SynTree/$(am__dirstamp) \ 751 SynTree/$(DEPDIR)/$(am__dirstamp) 752 SynTree/TupleExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 753 SynTree/$(DEPDIR)/$(am__dirstamp) 754 SynTree/CommaExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 755 SynTree/$(DEPDIR)/$(am__dirstamp) 756 SynTree/TypeExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 757 SynTree/$(DEPDIR)/$(am__dirstamp) 758 SynTree/ApplicationExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 759 SynTree/$(DEPDIR)/$(am__dirstamp) 760 SynTree/AddressExpr.$(OBJEXT): SynTree/$(am__dirstamp) \ 761 SynTree/$(DEPDIR)/$(am__dirstamp) 762 SynTree/Statement.$(OBJEXT): SynTree/$(am__dirstamp) \ 763 SynTree/$(DEPDIR)/$(am__dirstamp) 764 SynTree/CompoundStmt.$(OBJEXT): SynTree/$(am__dirstamp) \ 765 SynTree/$(DEPDIR)/$(am__dirstamp) 766 SynTree/DeclStmt.$(OBJEXT): SynTree/$(am__dirstamp) \ 767 SynTree/$(DEPDIR)/$(am__dirstamp) 768 SynTree/Declaration.$(OBJEXT): SynTree/$(am__dirstamp) \ 769 SynTree/$(DEPDIR)/$(am__dirstamp) 770 SynTree/DeclarationWithType.$(OBJEXT): SynTree/$(am__dirstamp) \ 771 SynTree/$(DEPDIR)/$(am__dirstamp) 772 SynTree/ObjectDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 773 SynTree/$(DEPDIR)/$(am__dirstamp) 774 SynTree/FunctionDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 775 SynTree/$(DEPDIR)/$(am__dirstamp) 776 SynTree/AggregateDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 777 SynTree/$(DEPDIR)/$(am__dirstamp) 778 SynTree/NamedTypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 779 SynTree/$(DEPDIR)/$(am__dirstamp) 780 SynTree/TypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \ 781 SynTree/$(DEPDIR)/$(am__dirstamp) 782 SynTree/Initializer.$(OBJEXT): SynTree/$(am__dirstamp) \ 783 SynTree/$(DEPDIR)/$(am__dirstamp) 784 SynTree/TypeSubstitution.$(OBJEXT): SynTree/$(am__dirstamp) \ 785 SynTree/$(DEPDIR)/$(am__dirstamp) 786 SynTree/Attribute.$(OBJEXT): SynTree/$(am__dirstamp) \ 787 SynTree/$(DEPDIR)/$(am__dirstamp) 788 SynTree/DeclReplacer.$(OBJEXT): SynTree/$(am__dirstamp) \ 789 SynTree/$(DEPDIR)/$(am__dirstamp) 790 CodeGen/$(am__dirstamp): 791 @$(MKDIR_P) CodeGen 792 @: > CodeGen/$(am__dirstamp) 793 CodeGen/$(DEPDIR)/$(am__dirstamp): 794 @$(MKDIR_P) CodeGen/$(DEPDIR) 795 @: > CodeGen/$(DEPDIR)/$(am__dirstamp) 796 CodeGen/CodeGenerator.$(OBJEXT): CodeGen/$(am__dirstamp) \ 797 CodeGen/$(DEPDIR)/$(am__dirstamp) 798 CodeGen/FixMain.$(OBJEXT): CodeGen/$(am__dirstamp) \ 799 CodeGen/$(DEPDIR)/$(am__dirstamp) 800 CodeGen/GenType.$(OBJEXT): CodeGen/$(am__dirstamp) \ 801 CodeGen/$(DEPDIR)/$(am__dirstamp) 802 CodeGen/OperatorTable.$(OBJEXT): CodeGen/$(am__dirstamp) \ 803 CodeGen/$(DEPDIR)/$(am__dirstamp) 804 Common/$(am__dirstamp): 805 @$(MKDIR_P) Common 806 @: > Common/$(am__dirstamp) 807 Common/$(DEPDIR)/$(am__dirstamp): 808 @$(MKDIR_P) Common/$(DEPDIR) 809 @: > Common/$(DEPDIR)/$(am__dirstamp) 810 Common/Assert.$(OBJEXT): Common/$(am__dirstamp) \ 811 Common/$(DEPDIR)/$(am__dirstamp) 812 Common/Eval.$(OBJEXT): Common/$(am__dirstamp) \ 813 Common/$(DEPDIR)/$(am__dirstamp) 814 Common/SemanticError.$(OBJEXT): Common/$(am__dirstamp) \ 815 Common/$(DEPDIR)/$(am__dirstamp) 816 Common/UniqueName.$(OBJEXT): Common/$(am__dirstamp) \ 817 Common/$(DEPDIR)/$(am__dirstamp) 818 Concurrency/$(am__dirstamp): 819 @$(MKDIR_P) Concurrency 820 @: > Concurrency/$(am__dirstamp) 821 Concurrency/$(DEPDIR)/$(am__dirstamp): 822 @$(MKDIR_P) Concurrency/$(DEPDIR) 823 @: > Concurrency/$(DEPDIR)/$(am__dirstamp) 824 Concurrency/Keywords.$(OBJEXT): Concurrency/$(am__dirstamp) \ 825 Concurrency/$(DEPDIR)/$(am__dirstamp) 826 ControlStruct/$(am__dirstamp): 827 @$(MKDIR_P) ControlStruct 828 @: > ControlStruct/$(am__dirstamp) 829 ControlStruct/$(DEPDIR)/$(am__dirstamp): 830 @$(MKDIR_P) ControlStruct/$(DEPDIR) 831 @: > ControlStruct/$(DEPDIR)/$(am__dirstamp) 832 ControlStruct/ForExprMutator.$(OBJEXT): ControlStruct/$(am__dirstamp) \ 833 ControlStruct/$(DEPDIR)/$(am__dirstamp) 834 ControlStruct/LabelFixer.$(OBJEXT): ControlStruct/$(am__dirstamp) \ 835 ControlStruct/$(DEPDIR)/$(am__dirstamp) 836 ControlStruct/LabelGenerator.$(OBJEXT): ControlStruct/$(am__dirstamp) \ 837 ControlStruct/$(DEPDIR)/$(am__dirstamp) 838 ControlStruct/MLEMutator.$(OBJEXT): ControlStruct/$(am__dirstamp) \ 839 ControlStruct/$(DEPDIR)/$(am__dirstamp) 840 ControlStruct/Mutate.$(OBJEXT): ControlStruct/$(am__dirstamp) \ 841 ControlStruct/$(DEPDIR)/$(am__dirstamp) 842 GenPoly/$(am__dirstamp): 843 @$(MKDIR_P) GenPoly 844 @: > GenPoly/$(am__dirstamp) 845 GenPoly/$(DEPDIR)/$(am__dirstamp): 846 @$(MKDIR_P) GenPoly/$(DEPDIR) 847 @: > GenPoly/$(DEPDIR)/$(am__dirstamp) 848 GenPoly/GenPoly.$(OBJEXT): GenPoly/$(am__dirstamp) \ 849 GenPoly/$(DEPDIR)/$(am__dirstamp) 850 GenPoly/Lvalue.$(OBJEXT): GenPoly/$(am__dirstamp) \ 851 GenPoly/$(DEPDIR)/$(am__dirstamp) 852 InitTweak/$(am__dirstamp): 853 @$(MKDIR_P) InitTweak 854 @: > InitTweak/$(am__dirstamp) 855 InitTweak/$(DEPDIR)/$(am__dirstamp): 856 @$(MKDIR_P) InitTweak/$(DEPDIR) 857 @: > InitTweak/$(DEPDIR)/$(am__dirstamp) 858 InitTweak/GenInit.$(OBJEXT): InitTweak/$(am__dirstamp) \ 859 InitTweak/$(DEPDIR)/$(am__dirstamp) 860 InitTweak/InitTweak.$(OBJEXT): InitTweak/$(am__dirstamp) \ 861 InitTweak/$(DEPDIR)/$(am__dirstamp) 862 Parser/$(am__dirstamp): 863 @$(MKDIR_P) Parser 864 @: > Parser/$(am__dirstamp) 865 Parser/$(DEPDIR)/$(am__dirstamp): 866 @$(MKDIR_P) Parser/$(DEPDIR) 867 @: > Parser/$(DEPDIR)/$(am__dirstamp) 868 Parser/LinkageSpec.$(OBJEXT): Parser/$(am__dirstamp) \ 869 Parser/$(DEPDIR)/$(am__dirstamp) 870 ResolvExpr/$(am__dirstamp): 871 @$(MKDIR_P) ResolvExpr 872 @: > ResolvExpr/$(am__dirstamp) 873 ResolvExpr/$(DEPDIR)/$(am__dirstamp): 874 @$(MKDIR_P) ResolvExpr/$(DEPDIR) 875 @: > ResolvExpr/$(DEPDIR)/$(am__dirstamp) 876 ResolvExpr/AdjustExprType.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 877 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 878 ResolvExpr/Alternative.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 879 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 880 ResolvExpr/AlternativeFinder.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 881 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 882 ResolvExpr/ExplodedActual.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 883 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 884 ResolvExpr/CastCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 885 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 886 ResolvExpr/CommonType.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 887 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 888 ResolvExpr/ConversionCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 889 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 890 ResolvExpr/CurrentObject.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 891 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 892 ResolvExpr/FindOpenVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 893 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 894 ResolvExpr/Occurs.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 895 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 896 ResolvExpr/PolyCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 897 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 898 ResolvExpr/PtrsAssignable.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 899 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 900 ResolvExpr/PtrsCastable.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 901 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 902 ResolvExpr/RenameVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 903 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 904 ResolvExpr/Resolver.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 905 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 906 ResolvExpr/ResolveTypeof.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 907 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 908 ResolvExpr/TypeEnvironment.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 909 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 910 ResolvExpr/Unify.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 911 ResolvExpr/$(DEPDIR)/$(am__dirstamp) 912 SymTab/Autogen.$(OBJEXT): SymTab/$(am__dirstamp) \ 913 SymTab/$(DEPDIR)/$(am__dirstamp) 914 SymTab/FixFunction.$(OBJEXT): SymTab/$(am__dirstamp) \ 915 SymTab/$(DEPDIR)/$(am__dirstamp) 916 SymTab/Indexer.$(OBJEXT): SymTab/$(am__dirstamp) \ 917 SymTab/$(DEPDIR)/$(am__dirstamp) 918 SymTab/Mangler.$(OBJEXT): SymTab/$(am__dirstamp) \ 919 SymTab/$(DEPDIR)/$(am__dirstamp) 920 SymTab/Validate.$(OBJEXT): SymTab/$(am__dirstamp) \ 921 SymTab/$(DEPDIR)/$(am__dirstamp) 922 Tuples/$(am__dirstamp): 923 @$(MKDIR_P) Tuples 924 @: > Tuples/$(am__dirstamp) 925 Tuples/$(DEPDIR)/$(am__dirstamp): 926 @$(MKDIR_P) Tuples/$(DEPDIR) 927 @: > Tuples/$(DEPDIR)/$(am__dirstamp) 928 Tuples/Explode.$(OBJEXT): Tuples/$(am__dirstamp) \ 929 Tuples/$(DEPDIR)/$(am__dirstamp) 930 Tuples/TupleAssignment.$(OBJEXT): Tuples/$(am__dirstamp) \ 931 Tuples/$(DEPDIR)/$(am__dirstamp) 932 Tuples/TupleExpansion.$(OBJEXT): Tuples/$(am__dirstamp) \ 933 Tuples/$(DEPDIR)/$(am__dirstamp) 934 Validate/$(am__dirstamp): 935 @$(MKDIR_P) Validate 936 @: > Validate/$(am__dirstamp) 937 Validate/$(DEPDIR)/$(am__dirstamp): 938 @$(MKDIR_P) Validate/$(DEPDIR) 939 @: > Validate/$(DEPDIR)/$(am__dirstamp) 940 Validate/HandleAttributes.$(OBJEXT): Validate/$(am__dirstamp) \ 941 Validate/$(DEPDIR)/$(am__dirstamp) 942 943 libdemangle.a: $(libdemangle_a_OBJECTS) $(libdemangle_a_DEPENDENCIES) $(EXTRA_libdemangle_a_DEPENDENCIES) 944 $(AM_V_at)-rm -f libdemangle.a 945 $(AM_V_AR)$(libdemangle_a_AR) libdemangle.a $(libdemangle_a_OBJECTS) $(libdemangle_a_LIBADD) 946 $(AM_V_at)$(RANLIB) libdemangle.a 548 947 install-cfa_cpplibPROGRAMS: $(cfa_cpplib_PROGRAMS) 549 948 @$(NORMAL_INSTALL) … … 588 987 clean-cfa_cpplibPROGRAMS: 589 988 -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 989 CodeGen/Generate.$(OBJEXT): CodeGen/$(am__dirstamp) \ 597 990 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 991 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 992 CodeGen/$(DEPDIR)/$(am__dirstamp) 608 993 CodeTools/$(am__dirstamp): … … 616 1001 CodeTools/TrackLoc.$(OBJEXT): CodeTools/$(am__dirstamp) \ 617 1002 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 1003 Concurrency/Waitfor.$(OBJEXT): Concurrency/$(am__dirstamp) \ 627 1004 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 1005 Common/DebugMalloc.$(OBJEXT): Common/$(am__dirstamp) \ 639 Common/$(DEPDIR)/$(am__dirstamp)640 Common/Assert.$(OBJEXT): Common/$(am__dirstamp) \641 1006 Common/$(DEPDIR)/$(am__dirstamp) 642 1007 Common/Heap.$(OBJEXT): Common/$(am__dirstamp) \ 643 1008 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 1009 ControlStruct/ExceptTranslate.$(OBJEXT): \ 663 1010 ControlStruct/$(am__dirstamp) \ 664 1011 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 1012 GenPoly/Box.$(OBJEXT): GenPoly/$(am__dirstamp) \ 672 1013 GenPoly/$(DEPDIR)/$(am__dirstamp) 673 GenPoly/GenPoly.$(OBJEXT): GenPoly/$(am__dirstamp) \674 GenPoly/$(DEPDIR)/$(am__dirstamp)675 1014 GenPoly/ScrubTyVars.$(OBJEXT): GenPoly/$(am__dirstamp) \ 676 GenPoly/$(DEPDIR)/$(am__dirstamp)677 GenPoly/Lvalue.$(OBJEXT): GenPoly/$(am__dirstamp) \678 1015 GenPoly/$(DEPDIR)/$(am__dirstamp) 679 1016 GenPoly/Specialize.$(OBJEXT): GenPoly/$(am__dirstamp) \ … … 683 1020 GenPoly/InstantiateGeneric.$(OBJEXT): GenPoly/$(am__dirstamp) \ 684 1021 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 1022 InitTweak/FixInit.$(OBJEXT): InitTweak/$(am__dirstamp) \ 694 1023 InitTweak/$(DEPDIR)/$(am__dirstamp) 695 1024 InitTweak/FixGlobalInit.$(OBJEXT): InitTweak/$(am__dirstamp) \ 696 1025 InitTweak/$(DEPDIR)/$(am__dirstamp) 697 InitTweak/InitTweak.$(OBJEXT): InitTweak/$(am__dirstamp) \698 InitTweak/$(DEPDIR)/$(am__dirstamp)699 1026 Parser/parser.hh: Parser/parser.cc 700 1027 @if test ! -f $@; then rm -f Parser/parser.cc; else :; fi 701 1028 @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 1029 Parser/parser.$(OBJEXT): Parser/$(am__dirstamp) \ 709 1030 Parser/$(DEPDIR)/$(am__dirstamp) … … 724 1045 Parser/TypeData.$(OBJEXT): Parser/$(am__dirstamp) \ 725 1046 Parser/$(DEPDIR)/$(am__dirstamp) 726 Parser/LinkageSpec.$(OBJEXT): Parser/$(am__dirstamp) \727 Parser/$(DEPDIR)/$(am__dirstamp)728 1047 Parser/parserutility.$(OBJEXT): Parser/$(am__dirstamp) \ 729 1048 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 1049 ResolvExpr/AlternativePrinter.$(OBJEXT): ResolvExpr/$(am__dirstamp) \ 755 1050 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 1051 Virtual/$(am__dirstamp): 885 1052 @$(MKDIR_P) Virtual … … 897 1064 @rm -f ../driver/cfa-cpp$(EXEEXT) 898 1065 $(AM_V_CXXLD)$(CXXLINK) $(___driver_cfa_cpp_OBJECTS) $(___driver_cfa_cpp_LDADD) $(LIBS) 1066 SymTab/demangler.$(OBJEXT): SymTab/$(am__dirstamp) \ 1067 SymTab/$(DEPDIR)/$(am__dirstamp) 1068 1069 demangler$(EXEEXT): $(demangler_OBJECTS) $(demangler_DEPENDENCIES) $(EXTRA_demangler_DEPENDENCIES) 1070 @rm -f demangler$(EXEEXT) 1071 $(AM_V_CXXLD)$(CXXLINK) $(demangler_OBJECTS) $(demangler_LDADD) $(LIBS) 899 1072 900 1073 mostlyclean-compile: … … 985 1158 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/Unify.Po@am__quote@ 986 1159 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Autogen.Po@am__quote@ 1160 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Demangle.Po@am__quote@ 987 1161 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/FixFunction.Po@am__quote@ 988 1162 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Indexer.Po@am__quote@ 989 1163 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Mangler.Po@am__quote@ 1164 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/ManglerCommon.Po@am__quote@ 990 1165 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/Validate.Po@am__quote@ 1166 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/demangler.Po@am__quote@ 991 1167 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/AddressExpr.Po@am__quote@ 992 1168 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/AggregateDecl.Po@am__quote@ … … 1136 1312 check: $(BUILT_SOURCES) 1137 1313 $(MAKE) $(AM_MAKEFLAGS) check-am 1138 all-am: Makefile $( PROGRAMS)1314 all-am: Makefile $(LIBRARIES) $(PROGRAMS) 1139 1315 installdirs: 1140 1316 for dir in "$(DESTDIR)$(cfa_cpplibdir)"; do \ … … 1209 1385 clean: clean-am 1210 1386 1211 clean-am: clean-cfa_cpplibPROGRAMS clean-generic mostlyclean-am 1387 clean-am: clean-cfa_cpplibPROGRAMS clean-generic clean-noinstLIBRARIES \ 1388 mostlyclean-am 1212 1389 1213 1390 distclean: distclean-am … … 1279 1456 1280 1457 .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 1458 clean-cfa_cpplibPROGRAMS clean-generic clean-noinstLIBRARIES \ 1459 cscopelist-am ctags ctags-am distclean distclean-compile \ 1460 distclean-generic distclean-tags distdir dvi dvi-am html \ 1461 html-am info info-am install install-am \ 1462 install-cfa_cpplibPROGRAMS install-data install-data-am \ 1463 install-dvi install-dvi-am install-exec install-exec-am \ 1464 install-html install-html-am install-info install-info-am \ 1465 install-man install-pdf install-pdf-am install-ps \ 1466 install-ps-am install-strip installcheck installcheck-am \ 1467 installdirs maintainer-clean maintainer-clean-generic \ 1468 mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ 1469 ps ps-am tags tags-am uninstall uninstall-am \ 1470 uninstall-cfa_cpplibPROGRAMS 1293 1471 1294 1472 .PRECIOUS: Makefile -
src/ResolvExpr/AlternativeFinder.cc
rf7d3215 r72b3605 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/TypeEnvironment.cc
rf7d3215 r72b3605 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
rf7d3215 r72b3605 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
rf7d3215 r72b3605 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/module.mk
rf7d3215 r72b3605 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
rf7d3215 r72b3605 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;
Note:
See TracChangeset
for help on using the changeset viewer.