From 967be9e750221ab2ab783f95df79bb26d290a45e Mon Sep 17 00:00:00 2001 From: Martial Simon Date: Mon, 15 Sep 2025 01:07:58 +0200 Subject: add: added projects --- 21sh/autotools/.gitignore | 54 + 21sh/autotools/Makefile.am | 1 + 21sh/autotools/configure.ac | 14 + 21sh/autotools/src/42sh.c | 7 + 21sh/autotools/src/Makefile.am | 7 + 21sh/autotools/src/ast/Makefile.am | 6 + 21sh/autotools/src/ast/ast.c | 11 + 21sh/autotools/src/ast/ast.h | 6 + 21sh/autotools/src/lexer/Makefile.am | 6 + 21sh/autotools/src/lexer/lexer.c | 8 + 21sh/autotools/src/lexer/lexer.h | 6 + 21sh/autotools/src/parser/Makefile.am | 6 + 21sh/autotools/src/parser/parser.c | 11 + 21sh/autotools/src/parser/parser.h | 6 + 21sh/ll-expr/Makefile | 27 + 21sh/ll-expr/src/ast/ast.c | 27 + 21sh/ll-expr/src/ast/ast.h | 40 + 21sh/ll-expr/src/eval/ast_print.c | 57 + 21sh/ll-expr/src/eval/rpn_print.c | 52 + 21sh/ll-expr/src/eval/token_printer.c | 34 + 21sh/ll-expr/src/lexer/lexer.c | 104 + 21sh/ll-expr/src/lexer/lexer.h | 61 + 21sh/ll-expr/src/lexer/token.h | 25 + 21sh/ll-expr/src/parser/parser.c | 149 + 21sh/ll-expr/src/parser/parser.h | 46 + 21sh/mypipe/mypipe.c | 43 + 21sh/mypipe/mypipe.h | 6 + 21sh/myredir/myredir.c | 46 + 42sh/.clang-format | 79 + 42sh/.gitignore | 115 + 42sh/.gitlab-ci.yml | 70 + 42sh/Makefile.am | 1 + 42sh/README | 1 + 42sh/configure.ac | 35 + 42sh/src/42sh.c | 16 + 42sh/src/IO/IOBackend.h | 27 + 42sh/src/IO/Makefile.am | 11 + 42sh/src/IO/string_input.c | 115 + 42sh/src/Makefile.am | 28 + 42sh/src/ast/Makefile.am | 14 + 42sh/src/ast/ast.c | 164 + 42sh/src/ast/ast.h | 221 + 42sh/src/ast/ast_accessors.c | 326 + 42sh/src/ast/ast_accessors.h | 63 + 42sh/src/ast/ast_pretty_print.c | 247 + 42sh/src/ast/ast_redirect.h | 13 + 42sh/src/builtins/Makefile.am | 20 + 42sh/src/builtins/break.c | 27 + 42sh/src/builtins/builtins.h | 21 + 42sh/src/builtins/cd.c | 74 + 42sh/src/builtins/continue.c | 27 + 42sh/src/builtins/dot.c | 43 + 42sh/src/builtins/echo.c | 94 + 42sh/src/builtins/exit.c | 28 + 42sh/src/builtins/export.c | 68 + 42sh/src/builtins/false.c | 10 + 42sh/src/builtins/true.c | 10 + 42sh/src/builtins/unset.c | 44 + 42sh/src/exec/Makefile.am | 15 + 42sh/src/exec/ast_eval.c | 20 + 42sh/src/exec/ast_eval.h | 24 + 42sh/src/exec/ast_exec_functions.c | 491 + 42sh/src/exec/ast_exec_functions.h | 77 + 42sh/src/exec/ast_exec_redirs.c | 149 + 42sh/src/exec/ast_exec_redirs.h | 11 + 42sh/src/helper.c | 43 + 42sh/src/helper.h | 17 + 42sh/src/lexer/Makefile.am | 15 + 42sh/src/lexer/expansion.c | 386 + 42sh/src/lexer/expansion.h | 13 + 42sh/src/lexer/lexer.c | 359 + 42sh/src/lexer/lexer.h | 48 + 42sh/src/lexer/token.h | 54 + 42sh/src/lexer/utils.h | 23 + 42sh/src/parser/Makefile.am | 21 + 42sh/src/parser/parser.c | 40 + 42sh/src/parser/parser.h | 17 + 42sh/src/parser/parser_commands.c | 393 + 42sh/src/parser/parser_conditionnals.c | 152 + 42sh/src/parser/parser_functions.h | 198 + 42sh/src/parser/parser_fundec.c | 63 + 42sh/src/parser/parser_lists.c | 128 + 42sh/src/parser/parser_loops.c | 265 + 42sh/src/parser/parser_operators.c | 122 + 42sh/src/parser/parser_redir.c | 59 + 42sh/src/parser/parser_utils.c | 147 + 42sh/src/parser/parser_utils.h | 75 + 42sh/src/utils/Makefile.am | 13 + 42sh/src/utils/basicstring.c | 124 + 42sh/src/utils/env.c | 125 + 42sh/src/utils/env.h | 41 + 42sh/src/utils/libstring.h | 87 + 42sh/tests/Makefile.am | 19 + 42sh/tests/functional/resources/dot/script1.sh | 1 + 42sh/tests/functional/resources/dot/script2.sh | 2 + 42sh/tests/functional/resources/exit/script1.sh | 1 + 42sh/tests/functional/test_EXCEPTIONNEL_step_3.sh | 1 + 42sh/tests/functional/testsuite.sh | 639 + 42sh/tests/unit/tests_lexer.c | 288 + 42sh/tests/unit/tests_parser.c | 147 + 42sh/tests/wrapper.sh | 8 + benchmark/.gitignore | 152 + benchmark/README.md | 1 + benchmark/app/.gitignore | 1 + benchmark/app/build.gradle.kts | 81 + benchmark/app/proguard-rules.pro | 21 + .../benchmark/ExampleInstrumentedTest.kt | 25 + benchmark/app/src/main/AndroidManifest.xml | 48 + .../io/trentetroim/benchmark/AddBenchActivity.kt | 274 + .../java/io/trentetroim/benchmark/CustomAdapter.kt | 90 + .../java/io/trentetroim/benchmark/MainActivity.kt | 100 + .../java/io/trentetroim/benchmark/MapActivity.kt | 811 + .../java/io/trentetroim/benchmark/ReviewAdapter.kt | 37 + .../benchmark/api/models/ApiResponse.kt | 16 + .../io/trentetroim/benchmark/api/models/Point.kt | 24 + .../io/trentetroim/benchmark/api/models/Review.kt | 20 + .../benchmark/api/repository/PointRepository.kt | 164 + .../benchmark/api/repository/ReviewRepository.kt | 69 + .../benchmark/api/service/ApiService.kt | 38 + .../benchmark/api/service/RetrofitClient.kt | 43 + .../io/trentetroim/benchmark/ui/theme/Color.kt | 17 + .../io/trentetroim/benchmark/ui/theme/Theme.kt | 55 + .../java/io/trentetroim/benchmark/ui/theme/Type.kt | 36 + benchmark/app/src/main/res/drawable/card_bg.xml | 12 + .../app/src/main/res/drawable/ic_bench_icon.xml | 93 + .../main/res/drawable/ic_launcher_background.xml | 74 + .../main/res/drawable/ic_launcher_foreground.xml | 31 + .../src/main/res/drawable/list_handle_layout.xml | 12 + .../app/src/main/res/drawable/plus_5345954.png | Bin 0 -> 384 bytes benchmark/app/src/main/res/drawable/target.xml | 9 + benchmark/app/src/main/res/font/nokia_font.xml | 7 + benchmark/app/src/main/res/font/nokiafc22.ttf | Bin 0 -> 16272 bytes .../src/main/res/layout/bottom_sheet_dialog.xml | 29 + benchmark/app/src/main/res/layout/card_layout.xml | 39 + .../src/main/res/layout/dialog_bench_details.xml | 109 + .../app/src/main/res/layout/dialog_review.xml | 40 + .../src/main/res/layout/dialog_reviews_list.xml | 40 + benchmark/app/src/main/res/layout/item_review.xml | 26 + benchmark/app/src/main/res/layout/main_layout.xml | 34 + .../app/src/main/res/layout/new_bench_layout.xml | 44 + .../app/src/main/res/mipmap-anydpi/ic_launcher.xml | 6 + .../main/res/mipmap-anydpi/ic_launcher_round.xml | 6 + .../app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes .../main/res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes .../app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes .../main/res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes .../app/src/main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes .../main/res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes .../src/main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes .../main/res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes .../src/main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../main/res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes benchmark/app/src/main/res/values/colors.xml | 13 + benchmark/app/src/main/res/values/strings.xml | 18 + benchmark/app/src/main/res/values/themes.xml | 12 + benchmark/app/src/main/res/xml/backup_rules.xml | 14 + .../app/src/main/res/xml/data_extraction_rules.xml | 20 + .../src/main/res/xml/network_security_config.xml | 7 + .../io/trentetroim/benchmark/ExampleUnitTest.kt | 17 + benchmark/build.gradle.kts | 6 + benchmark/doc/openapi.json | 183 + benchmark/gradle.properties | 25 + benchmark/gradle/libs.versions.toml | 65 + benchmark/gradle/wrapper/gradle-wrapper.properties | 6 + benchmark/gradlew | 185 + benchmark/gradlew.bat | 89 + benchmark/settings.gradle.kts | 25 + bittorrent/.clang-format | 79 + bittorrent/.gitignore | 10 + .../bittorrent/libs/mbtbe/include/mbt/be/bencode.h | 122 + .../libs/mbtbe/include/mbt/be/mytorrent.h | 87 + .../bittorrent/libs/mbtbe/include/mbt/be/torrent.h | 53 + .../libs/mbtbe/include/mbt/be/torrent_files.h | 35 + .../libs/mbtbe/include/mbt/be/torrent_getters.h | 88 + bittorrent/bittorrent/libs/mbtbe/meson.build | 57 + bittorrent/bittorrent/libs/mbtbe/src/beutils.c | 107 + bittorrent/bittorrent/libs/mbtbe/src/decode.c | 220 + bittorrent/bittorrent/libs/mbtbe/src/encode.c | 56 + bittorrent/bittorrent/libs/mbtbe/src/mygetters.c | 61 + bittorrent/bittorrent/libs/mbtbe/src/mygetters2.c | 10 + bittorrent/bittorrent/libs/mbtbe/src/mytfiles.c | 26 + bittorrent/bittorrent/libs/mbtbe/src/mytorrent.c | 113 + .../bittorrent/libs/mbtbe/src/mytorrentfile.c | 282 + bittorrent/bittorrent/libs/mbtbe/src/node.c | 93 + .../libs/mbtfile/include/mbt/file/file_handler.h | 42 + .../mbtfile/include/mbt/file/my_file_handler.h | 31 + .../libs/mbtfile/include/mbt/file/my_piece.h | 26 + .../libs/mbtfile/include/mbt/file/piece.h | 55 + bittorrent/bittorrent/libs/mbtfile/meson.build | 51 + .../bittorrent/libs/mbtfile/src/mbt_file_handler.c | 119 + bittorrent/bittorrent/libs/mbtfile/src/mbt_piece.c | 70 + .../libs/mbtnet/include/mbt/net/context.h | 29 + .../libs/mbtnet/include/mbt/net/leeching.h | 15 + .../bittorrent/libs/mbtnet/include/mbt/net/peer.h | 16 + .../libs/mbtnet/include/mbt/net/tracker.h | 12 + bittorrent/bittorrent/libs/mbtnet/meson.build | 59 + bittorrent/bittorrent/libs/mbtnet/src/mbtnet.c | 1 + .../libs/mbtutils/include/mbt/utils/str.h | 30 + .../libs/mbtutils/include/mbt/utils/utils.h | 17 + .../libs/mbtutils/include/mbt/utils/view.h | 88 + bittorrent/bittorrent/libs/mbtutils/meson.build | 29 + bittorrent/bittorrent/libs/mbtutils/src/cmp.c | 18 + bittorrent/bittorrent/libs/mbtutils/src/contains.c | 15 + bittorrent/bittorrent/libs/mbtutils/src/ctor.c | 19 + bittorrent/bittorrent/libs/mbtutils/src/dtor.c | 15 + bittorrent/bittorrent/libs/mbtutils/src/fprint.c | 16 + bittorrent/bittorrent/libs/mbtutils/src/free.c | 10 + bittorrent/bittorrent/libs/mbtutils/src/init.c | 12 + bittorrent/bittorrent/libs/mbtutils/src/pushc.c | 18 + bittorrent/bittorrent/libs/mbtutils/src/pushcstr.c | 11 + bittorrent/bittorrent/libs/mbtutils/src/pushcv.c | 10 + bittorrent/bittorrent/meson.build | 102 + bittorrent/bittorrent/src/mbt.c | 10 + bittorrent/epoll_server/connection.c | 58 + bittorrent/epoll_server/connection.h | 54 + bittorrent/epoll_server/epoll_server.c | 134 + bittorrent/epoll_server/epoll_server.h | 58 + bittorrent/epoll_server/meson.build | 32 + bittorrent/epoll_server/utils/xalloc.c | 31 + bittorrent/epoll_server/utils/xalloc.h | 32 + bittorrent/mbtstr/include/mbtstr/str.h | 30 + bittorrent/mbtstr/include/mbtstr/utils.h | 17 + bittorrent/mbtstr/include/mbtstr/view.h | 88 + bittorrent/mbtstr/meson.build | 45 + bittorrent/mbtstr/src/cmp.c | 18 + bittorrent/mbtstr/src/contains.c | 16 + bittorrent/mbtstr/src/ctor.c | 19 + bittorrent/mbtstr/src/dtor.c | 15 + bittorrent/mbtstr/src/fprint.c | 17 + bittorrent/mbtstr/src/free.c | 11 + bittorrent/mbtstr/src/init.c | 12 + bittorrent/mbtstr/src/pushc.c | 18 + bittorrent/mbtstr/src/pushcstr.c | 11 + bittorrent/mbtstr/src/pushcv.c | 10 + bittorrent/meson.build | 15 + ero1/.gitignore | 13 + ero1/AUTHORS | 5 + ero1/README.md | 108 + ero1/clear.sh | 27 + ero1/demo.py | 111 + ero1/parameters.py | 47 + ero1/rapport ERO1.pdf | Bin 0 -> 396792 bytes ero1/requirements.txt | 31 + ero1/run.sh | 3 + ero1/setup.sh | 36 + ero1/src/README.md | 88 + ero1/src/demo/ask_variable.py | 26 + ero1/src/demo/demo_cost.py | 41 + ero1/src/demo/demo_exec.py | 229 + ero1/src/demo/demo_final_report.py | 110 + ero1/src/demo/demo_stats.py | 64 + ero1/src/demo/print_demo.py | 20 + ero1/src/deneigeuses/basic_euler.py | 48 + ero1/src/deneigeuses/directed_cpp.py | 294 + ero1/src/deneigeuses/drone_path.py | 23 + ero1/src/deneigeuses/hangar_to_deneigeuse.py | 35 + ero1/src/deneigeuses/hierholzer_v1.py | 128 + ero1/src/deneigeuses/hierholzer_v2.py | 168 + ero1/src/deneigeuses/maps/verdun.py | 37 + ero1/src/drone/couverture_sommets.py | 59 + ero1/src/drone/postier_chinoisV1.py | 209 + ero1/src/drone/postier_chinoisV2.py | 258 + ero1/src/drone/postier_chinoisV3.py | 253 + ero1/src/drone/postier_chinois_Martial.py | 122 + ero1/src/drone/postier_chinois_montreal.py | 89 + ero1/src/generation/graph_generation.py | 17 + ero1/src/generation/habitation_generation.py | 24 + ero1/src/generation/snow_generation.py | 85 + ero1/src/generation/suburb_snowplow_generation.py | 88 + ero1/src/helper/check_eulerian.py | 77 + ero1/src/helper/color_suburbs.py | 70 + ero1/src/helper/debug_printer.py | 13 + ero1/src/helper/display_graph.py | 116 + ero1/src/helper/duplicate_removal.py | 16 + ero1/src/helper/export_cost.py | 60 + ero1/src/helper/export_import_yaml.py | 20 + ero1/src/helper/export_to_kml.py | 95 + ero1/src/helper/main_parcours.py | 137 + ero1/src/helper/output_debug.py | 36 + ero1/src/helper/partitions.py | 129 + ero1/src/helper/prune_maps.py | 76 + ero1/src/tests/snow_testing.py | 17 + ero1/start_dev.py | 42 + ero1/temp/README.md | 18 + idvoc-2025/CommentsEngine/.gitignore | 1 + idvoc-2025/CommentsEngine/Dockerfile | 22 + idvoc-2025/CommentsEngine/README.md | 5 + idvoc-2025/CommentsEngine/go.mod | 22 + idvoc-2025/CommentsEngine/go.sum | 34 + idvoc-2025/CommentsEngine/main.go | 128 + idvoc-2025/CommentsEngine/redisc/redis.go | 83 + idvoc-2025/CommentsInteractor/.gitignore | 1 + idvoc-2025/CommentsInteractor/Dockerfile | 24 + idvoc-2025/CommentsInteractor/README.md | 5 + idvoc-2025/CommentsInteractor/go.mod | 18 + idvoc-2025/CommentsInteractor/go.sum | 26 + idvoc-2025/CommentsInteractor/main.go | 147 + idvoc-2025/docker-compose.yml | 48 + idvoc-2025/metrics/README.md | 6 + idvoc-2025/metrics/docker-compose.yml | 25 + idvoc-2025/metrics/prometheus.yml | 16 + idvoc-2025/metrics/start.sh | 10 + jws/.gitignore | 7 + jws/database/pom.xml | 231 + .../epita/assistants/data/model/CourseModel.java | 17 + .../epita/assistants/data/model/StudentModel.java | 15 + .../src/main/resources/application.properties | 24 + jws/endpoints/pom.xml | 186 + .../assistants/presentation/rest/Endpoints.java | 35 + .../presentation/rest/HelloWorldEndpoint.java | 15 + .../presentation/rest/request/ReverseRequest.java | 10 + .../presentation/rest/response/HelloResponse.java | 12 + .../rest/response/ReverseResponse.java | 14 + .../src/main/resources/application.properties | 7 + jws/endpoints/src/main/resources/openapi.yaml | 80 + jws/epibazaar/common/pom.xml | 114 + .../assistants/common/aggregate/ItemAggregate.java | 71 + .../common/aggregate/ResetInventoryAggregate.java | 12 + .../common/aggregate/SellItemAggregate.java | 12 + .../common/aggregate/SyncInventoryAggregate.java | 12 + .../aggregate/UpgradeItemProducerAggregate.java | 10 + .../common/aggregate/UpgradeShopAggregate.java | 12 + .../assistants/common/api/request/ItemRequest.java | 13 + .../common/api/request/ItemsRequest.java | 12 + .../assistants/common/api/request/MoveRequest.java | 11 + .../common/api/request/StartRequest.java | 10 + .../common/api/response/ItemResponse.java | 13 + .../common/api/response/ItemsResponse.java | 12 + .../common/api/response/MoveResponse.java | 11 + .../common/api/response/PlayerResponse.java | 18 + .../common/api/response/ShopPriceResponse.java | 10 + .../common/api/response/ShopResponse.java | 12 + .../common/api/response/ShopsResponse.java | 12 + .../common/api/response/StartResponse.java | 12 + .../common/api/response/UpgradeCostResponse.java | 12 + .../common/command/CollectItemCommand.java | 14 + .../common/command/CreateShopCommand.java | 10 + .../common/command/ResetInventoryCommand.java | 11 + .../assistants/common/command/SellItemCommand.java | 15 + .../common/command/SyncInventoryCommand.java | 11 + .../common/command/UpgradeCollectRateCommand.java | 10 + .../command/UpgradeMovementSpeedCommand.java | 10 + .../common/command/UpgradeShopPriceCommand.java | 12 + .../common/command/UpgradeStaminaCommand.java | 10 + .../epita/assistants/common/utils/Direction.java | 15 + .../epita/assistants/common/utils/ErrorInfo.java | 10 + .../fr/epita/assistants/common/utils/ItemInfo.java | 20 + .../fr/epita/assistants/common/utils/Point.java | 13 + .../src/main/resources/application.properties | 3 + jws/epibazaar/inventory/pom.xml | 135 + .../inventory/converter/InventoryConverter.java | 24 + .../assistants/inventory/data/model/ItemModel.java | 25 + .../inventory/data/repository/ItemRepository.java | 48 + .../inventory/domain/entity/ItemEntity.java | 13 + .../inventory/domain/entity/ItemsEntity.java | 13 + .../inventory/domain/service/InventoryService.java | 59 + .../presentation/subscriber/CommandSubscriber.java | 59 + .../src/main/resources/application.properties | 11 + .../src/main/resources/db/migration/V1__Init.sql | 7 + jws/epibazaar/item-producer/.env | 7 + jws/epibazaar/item-producer/pom.xml | 135 + .../converter/ItemProducerConverter.java | 126 + .../item_producer/data/model/GameModel.java | 19 + .../item_producer/data/model/ItemModel.java | 28 + .../item_producer/data/model/PlayerModel.java | 37 + .../data/repository/GameRepository.java | 59 + .../data/repository/ItemRepository.java | 50 + .../data/repository/PlayerRepository.java | 62 + .../item_producer/domain/entity/GameEntity.java | 4 + .../item_producer/domain/entity/ItemEntity.java | 13 + .../item_producer/domain/entity/ItemsEntity.java | 13 + .../item_producer/domain/entity/MoveEntity.java | 11 + .../item_producer/domain/entity/PlayerEntity.java | 18 + .../item_producer/domain/entity/StartEntity.java | 11 + .../domain/entity/UpgradeCostEntity.java | 12 + .../item_producer/domain/service/ErwenService.java | 4 + .../domain/service/ItemProducerService.java | 199 + .../presentation/rest/HelloWorldResource.java | 19 + .../presentation/rest/ItemProducerResource.java | 154 + .../subscriber/AggregateSubscriber.java | 47 + .../src/main/resources/application.properties | 13 + .../src/main/resources/db/migration/V1__Init.sql | 25 + .../src/main/resources/maps/custom.epimap | 16 + .../src/main/resources/maps/huge.epimap | 30 + .../src/main/resources/maps/pretty.epimap | 16 + .../item-producer/src/main/resources/openapi.yaml | 287 + jws/epibazaar/pom.xml | 359 + jws/epibazaar/shop/.env | 4 + jws/epibazaar/shop/pom.xml | 135 + .../assistants/shop/converter/ShopConverter.java | 24 + .../assistants/shop/data/model/ItemModel.java | 28 + .../assistants/shop/data/model/ShopModel.java | 18 + .../shop/data/repository/ItemRepository.java | 39 + .../shop/data/repository/ShopRepository.java | 30 + .../assistants/shop/domain/entity/ErwenEntity.java | 4 + .../assistants/shop/domain/entity/StartEntity.java | 9 + .../shop/domain/service/ErwenService.java | 4 + .../shop/domain/service/ShopService.java | 79 + .../shop/presentation/rest/HelloWorldResource.java | 19 + .../shop/presentation/rest/ShopResource.java | 63 + .../subscriber/AggregateSubscriber.java | 41 + .../shop/src/main/resources/application.properties | 13 + .../src/main/resources/db/migration/V1__Init.sql | 15 + jws/epibazaar/shop/src/main/resources/openapi.yaml | 242 + jws/epibazaar/viewer.tar.gz | Bin 0 -> 1570562 bytes jws/flake.nix | 29 + jws/kafka/pom.xml | 332 + .../fr/epita/assistants/StringInfoProcessor.java | 41 + .../fr/epita/assistants/StringInfoResource.java | 25 + .../fr/epita/assistants/StringInfoSubscriber.java | 13 + .../java/fr/epita/assistants/utils/StringInfo.java | 13 + .../src/main/resources/application.properties | 3 + malloc/alignment/alignment.c | 12 + malloc/alignment/alignment.h | 10 + malloc/beware_overflow/beware_overflow.c | 10 + malloc/beware_overflow/beware_overflow.h | 8 + malloc/beware_overflow/main.c | 21 + malloc/block_allocator/allocator.c | 61 + malloc/block_allocator/allocator.h | 25 + malloc/block_allocator/main.c | 39 + malloc/block_allocator/utils.c | 16 + malloc/block_allocator/utils.h | 16 + malloc/malloc/Makefile | 27 + malloc/malloc/src/helpers.c | 22 + malloc/malloc/src/helpers.h | 14 + malloc/malloc/src/malloc.c | 23 + malloc/malloc/src/utils.c | 158 + malloc/malloc/src/utils.h | 40 + malloc/malloc/src/wrapper.c | 89 + malloc/malloc/src/wrapper.h | 11 + malloc/malloc/tests/corruptionproof | Bin 0 -> 16632 bytes malloc/malloc/tests/memoryfootprint | Bin 0 -> 18064 bytes malloc/malloc/tests/speed | Bin 0 -> 17280 bytes malloc/malloc/tests/tests.sh | 3 + malloc/malloc/tests/unit.c | 161 + malloc/my_recycler/recycler.c | 62 + malloc/my_recycler/recycler.h | 24 + malloc/page_begin/main.c | 21 + malloc/page_begin/page_begin.c | 10 + malloc/page_begin/page_begin.h | 8 + myfind/ast_evaluation/Makefile | 9 + myfind/ast_evaluation/ast_evaluation.c | 29 + myfind/ast_evaluation/expression.h | 28 + myfind/ast_evaluation/main.c | 24 + myfind/ast_evaluation/memory.c | 36 + myfind/ast_evaluation/memory.h | 10 + myfind/ast_evaluation/parser.c | 258 + myfind/ast_evaluation/parser.h | 9 + myfind/display_perm/Makefile | 15 + myfind/display_perm/display_perm.c | 25 + myfind/group_belong/Makefile | 17 + myfind/group_belong/group_belong.c | 25 + myfind/is_newer/Makefile | 15 + myfind/is_newer/is_newer.c | 29 + myfind/myexecvp/Makefile | 17 + myfind/myexecvp/myexecvp.c | 26 + myfind/myfind/Makefile | 22 + myfind/myfind/src/ast_evaluation.c | 37 + myfind/myfind/src/lexer.c | 205 + myfind/myfind/src/lexer.h | 44 + myfind/myfind/src/myfind.c | 63 + myfind/myfind/src/myfind.h | 9 + myfind/myfind/src/print.c | 75 + myfind/myfind/src/shunting_yard.c | 177 + myfind/myfind/src/shunting_yard.h | 10 + myfind/myfind/src/stack/stack.c | 30 + myfind/myfind/src/stack/stack.h | 15 + myfind/myfind/src/ugtests.c | 82 + myfind/myfind/src/ugtests.h | 10 + myfind/myfind/tests/fun/tests.sh | 196 + myfind/myfind/tests/unit/eval.c | 32 + myfind/myfind/tests/unit/lexing.c | 45 + myfind/myfind/tests/unit/shunting.c | 30 + myfind/simple_ls/Makefile | 15 + myfind/simple_ls/simple_ls.c | 41 + myfind/simple_stat/Makefile | 15 + myfind/simple_stat/simple_stat.c | 31 + myfind/user_belong/Makefile | 17 + myfind/user_belong/user_belong.c | 25 + ping/.env | 1 + ping/.gitignore | 174 + ping/.gitlab-ci.yml | 92 + ping/README.md | 93 + ping/docker-compose.yml | 58 + ping/frontend/.dockerignore | 2 + ping/frontend/.gitignore | 23 + ping/frontend/.npmrc | 1 + ping/frontend/.prettierignore | 6 + ping/frontend/.prettierrc | 15 + ping/frontend/Dockerfile | 8 + ping/frontend/README.md | 38 + ping/frontend/eslint.config.js | 36 + ping/frontend/package-lock.json | 4385 ++ ping/frontend/package.json | 44 + ping/frontend/src/app.css | 58 + ping/frontend/src/app.d.ts | 13 + ping/frontend/src/app.html | 13 + ping/frontend/src/lib/components/Avatar.svelte | 48 + ping/frontend/src/lib/components/Button.svelte | 17 + ping/frontend/src/lib/components/NavBar.svelte | 44 + .../src/lib/components/NumberStatList.svelte | 55 + ping/frontend/src/lib/components/SideBar.svelte | 61 + .../src/lib/components/SteppedLineChart.svelte | 76 + ping/frontend/src/lib/components/ToastList.svelte | 67 + ping/frontend/src/lib/components/UserItem.svelte | 42 + .../lib/components/dashboard/RiskAnalysis.svelte | 10 + .../src/lib/components/dashboard/StockGraph.svelte | 136 + .../components/dashboard/TrendingSymbols.svelte | 85 + .../dashboard/transactions/TransactionModal.svelte | 165 + .../src/lib/components/input/StockSelector.svelte | 231 + .../src/lib/components/input/UserSelector.svelte | 35 + ping/frontend/src/lib/pages.ts | 54 + ping/frontend/src/lib/stores/auth.ts | 66 + ping/frontend/src/lib/stores/toast.ts | 22 + ping/frontend/src/routes/+layout.svelte | 9 + ping/frontend/src/routes/+page.svelte | 59 + ping/frontend/src/routes/dashboard/+layout.svelte | 44 + ping/frontend/src/routes/dashboard/+page.svelte | 81 + .../src/routes/dashboard/analyses/+page.svelte | 409 + .../src/routes/dashboard/messages/+page.svelte | 403 + .../src/routes/dashboard/models/+page.svelte | 568 + .../src/routes/dashboard/personnel/+page.svelte | 290 + .../src/routes/dashboard/settings/+page.svelte | 452 + .../src/routes/dashboard/transactions/+page.svelte | 360 + ping/frontend/src/routes/login/+page.svelte | 149 + .../frontend/src/routes/stocksapi/chart/+server.ts | 21 + .../src/routes/stocksapi/insights/+server.ts | 19 + .../frontend/src/routes/stocksapi/quote/+server.ts | 18 + .../src/routes/stocksapi/search/+server.ts | 18 + .../routes/stocksapi/trendingSymbols/+server.ts | 16 + ping/frontend/static/favicon.png | Bin 0 -> 2329 bytes ping/frontend/static/icons/ICI | 2 + ping/frontend/static/icons/add-green.svg | 7 + ping/frontend/static/icons/bell.svg | 25 + ping/frontend/static/icons/closed-wallet.svg | 17 + ping/frontend/static/icons/coin.svg | 11 + ping/frontend/static/icons/credit-card.svg | 4 + ping/frontend/static/icons/dashboard.svg | 5 + ping/frontend/static/icons/debug.svg | 7 + ping/frontend/static/icons/edit-pen.svg | 5 + ping/frontend/static/icons/floppy-disk.svg | 18 + ping/frontend/static/icons/leaf.svg | 19 + .../static/icons/magnifying_glass_icon.svg | 5 + ping/frontend/static/icons/money-bills.svg | 27 + ping/frontend/static/icons/msg.svg | 7 + ping/frontend/static/icons/people.svg | 7 + ping/frontend/static/icons/settings.svg | 30 + ping/frontend/static/icons/side-menu.svg | 6 + ping/frontend/static/icons/trash.svg | 35 + ping/frontend/static/icons/triangle-down.svg | 12 + ping/frontend/static/icons/triangle-up.svg | 11 + ping/frontend/static/icons/wallet.svg | 15 + ping/frontend/static/img/default-avatar.png | Bin 0 -> 6483 bytes ping/frontend/static/img/favicon.svg | 29 + ping/frontend/static/img/header-bg.jpg | Bin 0 -> 53678 bytes ping/frontend/static/img/logo.svg | 41 + ping/frontend/static/img/logoFull.svg | 75 + ping/frontend/svelte.config.js | 18 + ping/frontend/tsconfig.json | 19 + ping/frontend/vite.config.ts | 30 + ping/ping/.env | 3 + ping/ping/pom.xml | 307 + .../ping/api/requests/ExecFeatureRequest.java | 20 + .../assistants/ping/api/requests/LoginRequest.java | 16 + .../assistants/ping/api/requests/MoveRequest.java | 17 + .../ping/api/requests/NewProjectRequest.java | 15 + .../ping/api/requests/NewTransactionRequest.java | 21 + .../ping/api/requests/NewUserRequest.java | 17 + .../assistants/ping/api/requests/PathRequest.java | 15 + .../ping/api/requests/UpdateProjectRequest.java | 16 + .../api/requests/UpdateTransactionRequest.java | 8 + .../ping/api/requests/UpdateUserRequest.java | 17 + .../ping/api/requests/UserProjectRequest.java | 17 + .../ping/api/responses/EcoScoreResponse.java | 9 + .../ping/api/responses/FSEntryResponse.java | 17 + .../ping/api/responses/LoginResponse.java | 15 + .../ping/api/responses/ProjectResponse.java | 22 + .../ping/api/responses/TransactionResponse.java | 30 + .../ping/api/responses/TransactionsResponse.java | 11 + .../ping/api/responses/UserResponse.java | 23 + .../ping/api/responses/UserSummaryResponse.java | 21 + .../assistants/ping/converters/IConverter.java | 17 + .../TransactionCreationEntityConverter.java | 23 + .../request/TransactionUpdateEntityConverter.java | 23 + .../request/UserCreationEntityConverter.java | 19 + .../request/UserUpdateEntityConverter.java | 19 + .../response/ProjectResponseConverter.java | 25 + .../response/TransactionResponseConverter.java | 25 + .../converters/response/UserResponseConverter.java | 21 + .../response/UserSummaryResponseConverter.java | 20 + .../assistants/ping/data/model/ProjectModel.java | 43 + .../ping/data/model/TransactionModel.java | 61 + .../assistants/ping/data/model/UserModel.java | 42 + .../ping/data/repository/ProjectRepository.java | 113 + .../data/repository/TransactionRepository.java | 32 + .../ping/data/repository/UserRepository.java | 120 + .../domain/entity/TransactionCreationEntity.java | 19 + .../domain/entity/TransactionUpdateEntity.java | 19 + .../ping/domain/entity/UserCreationEntity.java | 7 + .../ping/domain/entity/UserUpdateEntity.java | 7 + .../ping/domain/entity/feature/Feature.java | 14 + .../domain/entity/feature/FeatureExecution.java | 18 + .../ping/domain/executor/FeatureDispatcher.java | 31 + .../ping/domain/executor/FeatureExecutor.java | 17 + .../ping/domain/executor/GitFeatureExecutor.java | 134 + .../ping/domain/service/FileSystemService.java | 497 + .../ping/domain/service/ProjectService.java | 451 + .../ping/domain/service/TransactionService.java | 119 + .../ping/domain/service/UserService.java | 280 + .../epita/assistants/ping/errors/ErrorsCode.java | 36 + .../ping/errors/InvalidCommandException.java | 11 + .../ping/errors/InvalidFeatureException.java | 9 + .../assistants/ping/errors/PingServiceError.java | 25 + .../ping/errors/UnreacheableCodeException.java | 7 + .../ping/presentation/rest/DebugResource.java | 64 + .../ping/presentation/rest/HelloWorldResource.java | 27 + .../presentation/rest/TransactionResource.java | 115 + .../ping/presentation/rest/UtilsResource.java | 19 + .../rest/fileSystemEndpoints/FileResource.java | 108 + .../rest/fileSystemEndpoints/FolderResource.java | 80 + .../rest/projectEndpoints/ProjectResource.java | 154 + .../rest/userEndpoints/UserResource.java | 149 + .../fr/epita/assistants/ping/utils/ErrorInfo.java | 14 + .../fr/epita/assistants/ping/utils/HttpError.java | 40 + .../fr/epita/assistants/ping/utils/IHttpError.java | 7 + .../fr/epita/assistants/ping/utils/Logger.java | 129 + .../epita/assistants/ping/utils/TokenFactory.java | 27 + .../ping/src/main/resources/application.properties | 21 + ping/ping/src/main/resources/openapi.yml | 1065 + ping/ping/src/main/resources/privateKey.pem | 28 + ping/ping/src/main/resources/publicKey.pem | 9 + .../data/repositories/ProjectFakeRepository.java | 111 + .../ping/data/repositories/UserFakeRepository.java | 121 + .../presentation/rest/TestHelloWorldResource.java | 31 + .../presentation/rest/TestProjectResource.java | 32 + .../ping/presentation/rest/TestUserResource.java | 431 + .../ping/src/test/resources/application.properties | 0 tiger-compiler/.clang-format | 91 + tiger-compiler/.clang-tidy | 149 + tiger-compiler/.gitignore | 142 + tiger-compiler/.gitlab-ci.yml | 188 + tiger-compiler/.last-cl-gen | 1 + tiger-compiler/.pre-commit-config.yaml | 17 + tiger-compiler/AUTHORS.txt | 4 + tiger-compiler/ChangeLog | 69023 +++++++++++++++++++ tiger-compiler/Makefile.am | 64 + tiger-compiler/NEWS.txt | 2332 + tiger-compiler/README.md | 93 + tiger-compiler/README.txt | 120 + tiger-compiler/THANKS.txt | 302 + tiger-compiler/bootstrap | 203 + tiger-compiler/configure.ac | 295 + tiger-compiler/data/local.am | 1 + tiger-compiler/data/prelude.tih | 18 + tiger-compiler/doc/Doxyfile.in | 2438 + tiger-compiler/doc/local.am | 28 + tiger-compiler/docker/Dockerfile | 110 + tiger-compiler/docker/Dockerfile-pytest | 9 + tiger-compiler/docker/Dockerfile-testing | 134 + tiger-compiler/flake.lock | 122 + tiger-compiler/flake.nix | 95 + tiger-compiler/lib/local.am | 1 + tiger-compiler/lib/misc/algorithm.hh | 48 + tiger-compiler/lib/misc/algorithm.hxx | 84 + tiger-compiler/lib/misc/concepts.hh | 79 + tiger-compiler/lib/misc/contract.cc | 31 + tiger-compiler/lib/misc/contract.hh | 72 + tiger-compiler/lib/misc/contract.hxx | 11 + tiger-compiler/lib/misc/deref.cc | 14 + tiger-compiler/lib/misc/deref.hh | 41 + tiger-compiler/lib/misc/deref.hxx | 40 + tiger-compiler/lib/misc/endomap.hh | 64 + tiger-compiler/lib/misc/endomap.hxx | 44 + tiger-compiler/lib/misc/error.cc | 107 + tiger-compiler/lib/misc/error.hh | 141 + tiger-compiler/lib/misc/error.hxx | 32 + tiger-compiler/lib/misc/escape.cc | 60 + tiger-compiler/lib/misc/escape.hh | 36 + tiger-compiler/lib/misc/escape.hxx | 27 + tiger-compiler/lib/misc/file-library.cc | 152 + tiger-compiler/lib/misc/file-library.hh | 95 + tiger-compiler/lib/misc/file-library.hxx | 17 + tiger-compiler/lib/misc/fwd.hh | 34 + tiger-compiler/lib/misc/graph.hh | 213 + tiger-compiler/lib/misc/graph.hxx | 171 + tiger-compiler/lib/misc/indent.cc | 57 + tiger-compiler/lib/misc/indent.hh | 30 + tiger-compiler/lib/misc/lambda-visitor.hh | 89 + tiger-compiler/lib/misc/libmisc.hh | 10 + tiger-compiler/lib/misc/list.hh | 25 + tiger-compiler/lib/misc/list.hxx | 43 + tiger-compiler/lib/misc/local.am | 58 + tiger-compiler/lib/misc/map.hh | 141 + tiger-compiler/lib/misc/map.hxx | 176 + tiger-compiler/lib/misc/ref.hh | 91 + tiger-compiler/lib/misc/ref.hxx | 71 + tiger-compiler/lib/misc/scoped-map.hh | 51 + tiger-compiler/lib/misc/scoped-map.hxx | 86 + tiger-compiler/lib/misc/select-const.hh | 42 + tiger-compiler/lib/misc/separator.hh | 43 + tiger-compiler/lib/misc/separator.hxx | 55 + tiger-compiler/lib/misc/set.hh | 146 + tiger-compiler/lib/misc/set.hxx | 208 + tiger-compiler/lib/misc/singleton.hh | 28 + tiger-compiler/lib/misc/symbol.cc | 32 + tiger-compiler/lib/misc/symbol.hh | 77 + tiger-compiler/lib/misc/symbol.hxx | 39 + tiger-compiler/lib/misc/timer.cc | 208 + tiger-compiler/lib/misc/timer.hh | 139 + tiger-compiler/lib/misc/timer.hxx | 50 + tiger-compiler/lib/misc/unique.hh | 85 + tiger-compiler/lib/misc/unique.hxx | 95 + tiger-compiler/lib/misc/variant.hh | 111 + tiger-compiler/lib/misc/variant.hxx | 77 + tiger-compiler/lib/misc/vector.hh | 105 + tiger-compiler/lib/misc/vector.hxx | 193 + tiger-compiler/lib/misc/xalloc.hh | 135 + tiger-compiler/lib/misc/xalloc.hxx | 135 + tiger-compiler/src/assert/binder.cc | 12 + tiger-compiler/src/assert/binder.hh | 22 + tiger-compiler/src/assert/desugar-visitor.cc | 33 + tiger-compiler/src/assert/desugar-visitor.hh | 42 + tiger-compiler/src/assert/desugar-visitor.hxx | 39 + tiger-compiler/src/assert/libassert.cc | 36 + tiger-compiler/src/assert/libassert.hh | 79 + tiger-compiler/src/assert/libassert.hxx | 45 + tiger-compiler/src/assert/local.am | 17 + tiger-compiler/src/assert/renamer.cc | 18 + tiger-compiler/src/assert/renamer.hh | 30 + tiger-compiler/src/assert/tasks.cc | 53 + tiger-compiler/src/assert/tasks.hh | 59 + tiger-compiler/src/assert/type-checker.cc | 21 + tiger-compiler/src/assert/type-checker.hh | 30 + tiger-compiler/src/ast/README.txt | 66 + tiger-compiler/src/ast/all.hh | 51 + tiger-compiler/src/ast/array-exp.cc | 31 + tiger-compiler/src/ast/array-exp.hh | 60 + tiger-compiler/src/ast/array-exp.hxx | 22 + tiger-compiler/src/ast/array-ty.cc | 21 + tiger-compiler/src/ast/array-ty.hh | 48 + tiger-compiler/src/ast/array-ty.hxx | 16 + tiger-compiler/src/ast/assert-exp.cc | 24 + tiger-compiler/src/ast/assert-exp.hh | 42 + tiger-compiler/src/ast/assert-exp.hxx | 14 + tiger-compiler/src/ast/assert-visitor.hh | 51 + tiger-compiler/src/ast/assert-visitor.hxx | 32 + tiger-compiler/src/ast/assign-exp.cc | 26 + tiger-compiler/src/ast/assign-exp.hh | 54 + tiger-compiler/src/ast/assign-exp.hxx | 19 + tiger-compiler/src/ast/ast-nodes.mk | 41 + tiger-compiler/src/ast/ast.cc | 15 + tiger-compiler/src/ast/ast.hh | 48 + tiger-compiler/src/ast/ast.hxx | 18 + tiger-compiler/src/ast/break-exp.cc | 18 + tiger-compiler/src/ast/break-exp.hh | 49 + tiger-compiler/src/ast/break-exp.hxx | 21 + tiger-compiler/src/ast/call-exp.cc | 27 + tiger-compiler/src/ast/call-exp.hh | 64 + tiger-compiler/src/ast/call-exp.hxx | 25 + tiger-compiler/src/ast/cast-exp.cc | 26 + tiger-compiler/src/ast/cast-exp.hh | 62 + tiger-compiler/src/ast/cast-exp.hxx | 19 + tiger-compiler/src/ast/chunk-interface.hh | 25 + tiger-compiler/src/ast/chunk-interface.hxx | 16 + tiger-compiler/src/ast/chunk-list.cc | 58 + tiger-compiler/src/ast/chunk-list.hh | 80 + tiger-compiler/src/ast/chunk-list.hxx | 19 + tiger-compiler/src/ast/chunk.hh | 139 + tiger-compiler/src/ast/chunk.hxx | 118 + tiger-compiler/src/ast/class-ty.cc | 22 + tiger-compiler/src/ast/class-ty.hh | 55 + tiger-compiler/src/ast/class-ty.hxx | 19 + tiger-compiler/src/ast/dec.cc | 17 + tiger-compiler/src/ast/dec.hh | 50 + tiger-compiler/src/ast/dec.hxx | 15 + tiger-compiler/src/ast/default-visitor.hh | 151 + tiger-compiler/src/ast/default-visitor.hxx | 247 + tiger-compiler/src/ast/dumper-dot.cc | 438 + tiger-compiler/src/ast/dumper-dot.hh | 112 + tiger-compiler/src/ast/dumper-dot.hxx | 214 + tiger-compiler/src/ast/escapable.cc | 14 + tiger-compiler/src/ast/escapable.hh | 30 + tiger-compiler/src/ast/escapable.hxx | 16 + tiger-compiler/src/ast/exp.cc | 16 + tiger-compiler/src/ast/exp.hh | 43 + tiger-compiler/src/ast/exp.hxx | 11 + tiger-compiler/src/ast/field-init.cc | 22 + tiger-compiler/src/ast/field-init.hh | 55 + tiger-compiler/src/ast/field-init.hxx | 19 + tiger-compiler/src/ast/field-var.cc | 22 + tiger-compiler/src/ast/field-var.hh | 60 + tiger-compiler/src/ast/field-var.hxx | 22 + tiger-compiler/src/ast/field.cc | 22 + tiger-compiler/src/ast/field.hh | 55 + tiger-compiler/src/ast/field.hxx | 19 + tiger-compiler/src/ast/for-exp.cc | 28 + tiger-compiler/src/ast/for-exp.hh | 60 + tiger-compiler/src/ast/for-exp.hxx | 22 + tiger-compiler/src/ast/function-dec.cc | 33 + tiger-compiler/src/ast/function-dec.hh | 72 + tiger-compiler/src/ast/function-dec.hxx | 23 + tiger-compiler/src/ast/fwd.hh | 80 + tiger-compiler/src/ast/if-exp.cc | 31 + tiger-compiler/src/ast/if-exp.hh | 71 + tiger-compiler/src/ast/if-exp.hxx | 22 + tiger-compiler/src/ast/int-exp.cc | 19 + tiger-compiler/src/ast/int-exp.hh | 44 + tiger-compiler/src/ast/int-exp.hxx | 15 + tiger-compiler/src/ast/let-exp.cc | 26 + tiger-compiler/src/ast/let-exp.hh | 55 + tiger-compiler/src/ast/let-exp.hxx | 19 + tiger-compiler/src/ast/libast.cc | 44 + tiger-compiler/src/ast/libast.hh | 26 + tiger-compiler/src/ast/local.am | 30 + tiger-compiler/src/ast/location.hh | 14 + tiger-compiler/src/ast/method-call-exp.cc | 24 + tiger-compiler/src/ast/method-call-exp.hh | 70 + tiger-compiler/src/ast/method-call-exp.hxx | 21 + tiger-compiler/src/ast/method-dec.cc | 22 + tiger-compiler/src/ast/method-dec.hh | 45 + tiger-compiler/src/ast/method-dec.hxx | 11 + tiger-compiler/src/ast/name-ty.cc | 19 + tiger-compiler/src/ast/name-ty.hh | 56 + tiger-compiler/src/ast/name-ty.hxx | 20 + tiger-compiler/src/ast/nil-exp.cc | 19 + tiger-compiler/src/ast/nil-exp.hh | 37 + tiger-compiler/src/ast/nil-exp.hxx | 11 + tiger-compiler/src/ast/non-assert-visitor.hh | 51 + tiger-compiler/src/ast/non-assert-visitor.hxx | 34 + tiger-compiler/src/ast/non-object-visitor.hh | 92 + tiger-compiler/src/ast/non-object-visitor.hxx | 62 + tiger-compiler/src/ast/object-exp.cc | 19 + tiger-compiler/src/ast/object-exp.hh | 47 + tiger-compiler/src/ast/object-exp.hxx | 16 + tiger-compiler/src/ast/object-visitor.hh | 89 + tiger-compiler/src/ast/object-visitor.hxx | 69 + tiger-compiler/src/ast/op-exp.cc | 42 + tiger-compiler/src/ast/op-exp.hh | 80 + tiger-compiler/src/ast/op-exp.hxx | 21 + tiger-compiler/src/ast/pretty-printer.cc | 419 + tiger-compiler/src/ast/pretty-printer.hh | 96 + tiger-compiler/src/ast/record-exp.cc | 30 + tiger-compiler/src/ast/record-exp.hh | 57 + tiger-compiler/src/ast/record-exp.hxx | 22 + tiger-compiler/src/ast/record-ty.cc | 26 + tiger-compiler/src/ast/record-ty.hh | 49 + tiger-compiler/src/ast/record-ty.hxx | 16 + tiger-compiler/src/ast/seq-exp.cc | 26 + tiger-compiler/src/ast/seq-exp.hh | 47 + tiger-compiler/src/ast/seq-exp.hxx | 16 + tiger-compiler/src/ast/simple-var.cc | 19 + tiger-compiler/src/ast/simple-var.hh | 56 + tiger-compiler/src/ast/simple-var.hxx | 20 + tiger-compiler/src/ast/string-exp.cc | 19 + tiger-compiler/src/ast/string-exp.hh | 47 + tiger-compiler/src/ast/string-exp.hxx | 16 + tiger-compiler/src/ast/subscript-var.cc | 26 + tiger-compiler/src/ast/subscript-var.hh | 54 + tiger-compiler/src/ast/subscript-var.hxx | 19 + tiger-compiler/src/ast/tasks.cc | 32 + tiger-compiler/src/ast/tasks.hh | 24 + tiger-compiler/src/ast/ty.cc | 17 + tiger-compiler/src/ast/ty.hh | 39 + tiger-compiler/src/ast/ty.hxx | 11 + tiger-compiler/src/ast/typable.cc | 15 + tiger-compiler/src/ast/typable.hh | 50 + tiger-compiler/src/ast/typable.hxx | 24 + tiger-compiler/src/ast/type-constructor.cc | 31 + tiger-compiler/src/ast/type-constructor.hh | 38 + tiger-compiler/src/ast/type-constructor.hxx | 23 + tiger-compiler/src/ast/type-dec.cc | 22 + tiger-compiler/src/ast/type-dec.hh | 51 + tiger-compiler/src/ast/type-dec.hxx | 16 + tiger-compiler/src/ast/var-dec.cc | 31 + tiger-compiler/src/ast/var-dec.hh | 61 + tiger-compiler/src/ast/var-dec.hxx | 19 + tiger-compiler/src/ast/var.cc | 15 + tiger-compiler/src/ast/var.hh | 26 + tiger-compiler/src/ast/var.hxx | 11 + tiger-compiler/src/ast/visitor.hh | 114 + tiger-compiler/src/ast/visitor.hxx | 36 + tiger-compiler/src/ast/while-exp.cc | 26 + tiger-compiler/src/ast/while-exp.hh | 53 + tiger-compiler/src/ast/while-exp.hxx | 19 + tiger-compiler/src/astclone/cloner.cc | 311 + tiger-compiler/src/astclone/cloner.hh | 102 + tiger-compiler/src/astclone/cloner.hxx | 72 + tiger-compiler/src/astclone/libastclone.hh | 42 + tiger-compiler/src/astclone/libastclone.hxx | 40 + tiger-compiler/src/astclone/local.am | 12 + tiger-compiler/src/astclone/tasks.cc | 26 + tiger-compiler/src/astclone/tasks.hh | 20 + tiger-compiler/src/bind/binder.cc | 183 + tiger-compiler/src/bind/binder.hh | 138 + tiger-compiler/src/bind/binder.hxx | 124 + tiger-compiler/src/bind/libbind.cc | 31 + tiger-compiler/src/bind/libbind.hh | 29 + tiger-compiler/src/bind/local.am | 17 + tiger-compiler/src/bind/renamer.cc | 63 + tiger-compiler/src/bind/renamer.hh | 62 + tiger-compiler/src/bind/renamer.hxx | 24 + tiger-compiler/src/bind/tasks.cc | 34 + tiger-compiler/src/bind/tasks.hh | 42 + tiger-compiler/src/callgraph/call-graph-visitor.cc | 56 + tiger-compiler/src/callgraph/call-graph-visitor.hh | 38 + tiger-compiler/src/callgraph/fundec-graph.hh | 76 + tiger-compiler/src/callgraph/fundec-graph.hxx | 56 + tiger-compiler/src/callgraph/libcallgraph.cc | 36 + tiger-compiler/src/callgraph/libcallgraph.hh | 28 + tiger-compiler/src/callgraph/local.am | 14 + .../src/callgraph/parent-graph-visitor.cc | 42 + .../src/callgraph/parent-graph-visitor.hh | 36 + tiger-compiler/src/callgraph/tasks.cc | 52 + tiger-compiler/src/callgraph/tasks.hh | 46 + tiger-compiler/src/combine/binder.cc | 17 + tiger-compiler/src/combine/binder.hh | 16 + tiger-compiler/src/combine/libcombine.cc | 26 + tiger-compiler/src/combine/libcombine.hh | 44 + tiger-compiler/src/combine/local.am | 6 + tiger-compiler/src/combine/tasks.cc | 74 + tiger-compiler/src/combine/tasks.hh | 56 + tiger-compiler/src/combine/type-checker.cc | 14 + tiger-compiler/src/combine/type-checker.hh | 20 + tiger-compiler/src/common.cc | 19 + tiger-compiler/src/common.hh | 49 + .../src/desugar/bounds-checking-visitor.cc | 31 + .../src/desugar/bounds-checking-visitor.hh | 46 + tiger-compiler/src/desugar/desugar-visitor.cc | 144 + tiger-compiler/src/desugar/desugar-visitor.hh | 42 + tiger-compiler/src/desugar/libdesugar.hh | 85 + tiger-compiler/src/desugar/libdesugar.hxx | 95 + tiger-compiler/src/desugar/local.am | 27 + tiger-compiler/src/desugar/tasks.cc | 49 + tiger-compiler/src/desugar/tasks.hh | 75 + tiger-compiler/src/doc.hh | 23 + tiger-compiler/src/escapes/escapes-visitor.cc | 31 + tiger-compiler/src/escapes/escapes-visitor.hh | 75 + tiger-compiler/src/escapes/libescapes.cc | 23 + tiger-compiler/src/escapes/libescapes.hh | 23 + tiger-compiler/src/escapes/local.am | 7 + tiger-compiler/src/escapes/tasks.cc | 38 + tiger-compiler/src/escapes/tasks.hh | 28 + tiger-compiler/src/inlining/inliner.cc | 64 + tiger-compiler/src/inlining/inliner.hh | 44 + tiger-compiler/src/inlining/libinlining.cc | 54 + tiger-compiler/src/inlining/libinlining.hh | 42 + tiger-compiler/src/inlining/local.am | 8 + tiger-compiler/src/inlining/pruner.cc | 34 + tiger-compiler/src/inlining/pruner.hh | 42 + tiger-compiler/src/inlining/tasks.cc | 31 + tiger-compiler/src/inlining/tasks.hh | 36 + .../src/llvmtranslate/escapes-collector.cc | 151 + .../src/llvmtranslate/escapes-collector.hh | 13 + tiger-compiler/src/llvmtranslate/fwd.hh | 31 + .../src/llvmtranslate/generate-runtime.sh | 32 + .../src/llvmtranslate/libllvmtranslate.cc | 47 + .../src/llvmtranslate/libllvmtranslate.hh | 31 + .../src/llvmtranslate/llvm-type-visitor.cc | 110 + .../src/llvmtranslate/llvm-type-visitor.hh | 50 + tiger-compiler/src/llvmtranslate/local.am | 39 + tiger-compiler/src/llvmtranslate/tasks.cc | 64 + tiger-compiler/src/llvmtranslate/tasks.hh | 34 + tiger-compiler/src/llvmtranslate/tiger-runtime.c | 304 + tiger-compiler/src/llvmtranslate/translator.cc | 737 + tiger-compiler/src/llvmtranslate/translator.hh | 145 + tiger-compiler/src/llvmtranslate/translator.hxx | 30 + tiger-compiler/src/local.am | 75 + tiger-compiler/src/object/binder.cc | 176 + tiger-compiler/src/object/binder.hh | 98 + tiger-compiler/src/object/desugar-visitor.cc | 1127 + tiger-compiler/src/object/desugar-visitor.hh | 301 + tiger-compiler/src/object/fwd.hh | 16 + tiger-compiler/src/object/libobject.cc | 49 + tiger-compiler/src/object/libobject.hh | 82 + tiger-compiler/src/object/libobject.hxx | 48 + tiger-compiler/src/object/local.am | 33 + tiger-compiler/src/object/renamer.cc | 142 + tiger-compiler/src/object/renamer.hh | 79 + tiger-compiler/src/object/tasks.cc | 52 + tiger-compiler/src/object/tasks.hh | 60 + tiger-compiler/src/object/type-checker.cc | 405 + tiger-compiler/src/object/type-checker.hh | 108 + tiger-compiler/src/overload/binder.cc | 45 + tiger-compiler/src/overload/binder.hh | 65 + tiger-compiler/src/overload/liboverload.cc | 28 + tiger-compiler/src/overload/liboverload.hh | 36 + tiger-compiler/src/overload/local.am | 9 + tiger-compiler/src/overload/over-table.hh | 63 + tiger-compiler/src/overload/over-table.hxx | 64 + tiger-compiler/src/overload/tasks.cc | 38 + tiger-compiler/src/overload/tasks.hh | 29 + tiger-compiler/src/overload/type-checker.cc | 21 + tiger-compiler/src/overload/type-checker.hh | 37 + tiger-compiler/src/parse/fwd.hh | 38 + tiger-compiler/src/parse/generate-prelude.sh | 31 + tiger-compiler/src/parse/libparse.cc | 137 + tiger-compiler/src/parse/libparse.hh | 76 + tiger-compiler/src/parse/local.am | 125 + tiger-compiler/src/parse/metavar-map.hh | 48 + tiger-compiler/src/parse/metavar-map.hxx | 69 + tiger-compiler/src/parse/tasks.cc | 53 + tiger-compiler/src/parse/tasks.hh | 51 + tiger-compiler/src/parse/tiger-driver.cc | 215 + tiger-compiler/src/parse/tiger-driver.hh | 110 + tiger-compiler/src/parse/tiger-factory.hh | 144 + tiger-compiler/src/parse/tiger-factory.hxx | 272 + tiger-compiler/src/parse/tweast.cc | 87 + tiger-compiler/src/parse/tweast.hh | 79 + tiger-compiler/src/parse/tweast.hxx | 75 + tiger-compiler/src/task/argument-task.cc | 29 + tiger-compiler/src/task/argument-task.hh | 58 + tiger-compiler/src/task/boolean-task.cc | 22 + tiger-compiler/src/task/boolean-task.hh | 28 + tiger-compiler/src/task/disjunctive-task.cc | 32 + tiger-compiler/src/task/disjunctive-task.hh | 27 + tiger-compiler/src/task/function-task.cc | 22 + tiger-compiler/src/task/function-task.hh | 31 + tiger-compiler/src/task/fwd.hh | 22 + tiger-compiler/src/task/int-task.cc | 55 + tiger-compiler/src/task/int-task.hh | 33 + tiger-compiler/src/task/libtask.hh | 107 + tiger-compiler/src/task/local.am | 15 + tiger-compiler/src/task/multiple-string-task.cc | 21 + tiger-compiler/src/task/multiple-string-task.hh | 34 + tiger-compiler/src/task/simple-task.cc | 21 + tiger-compiler/src/task/simple-task.hh | 34 + tiger-compiler/src/task/string-task.cc | 22 + tiger-compiler/src/task/string-task.hh | 28 + tiger-compiler/src/task/task-register.cc | 353 + tiger-compiler/src/task/task-register.hh | 118 + tiger-compiler/src/task/task-register.hxx | 15 + tiger-compiler/src/task/task.cc | 68 + tiger-compiler/src/task/task.hh | 103 + tiger-compiler/src/task/task.hxx | 24 + tiger-compiler/src/task/tasks.cc | 28 + tiger-compiler/src/task/tasks.hh | 23 + tiger-compiler/src/tc.cc | 53 + tiger-compiler/src/testsuite/libtestsuite.cc | 30 + tiger-compiler/src/testsuite/libtestsuite.hh | 41 + tiger-compiler/src/testsuite/local.am | 15 + tiger-compiler/src/testsuite/tasks.cc | 49 + tiger-compiler/src/testsuite/tasks.hh | 21 + tiger-compiler/src/testsuite/tests-collector.cc | 19 + tiger-compiler/src/testsuite/tests-collector.hh | 53 + tiger-compiler/src/testsuite/tests-collector.hxx | 21 + .../src/testsuite/testsuite-generator.cc | 143 + .../src/testsuite/testsuite-generator.hh | 23 + tiger-compiler/src/type/README.txt | 92 + tiger-compiler/src/type/array.cc | 28 + tiger-compiler/src/type/array.hh | 30 + tiger-compiler/src/type/array.hxx | 18 + tiger-compiler/src/type/attribute.cc | 16 + tiger-compiler/src/type/attribute.hh | 44 + tiger-compiler/src/type/attribute.hxx | 25 + tiger-compiler/src/type/builtin-types.cc | 22 + tiger-compiler/src/type/builtin-types.hh | 40 + tiger-compiler/src/type/class.cc | 123 + tiger-compiler/src/type/class.hh | 159 + tiger-compiler/src/type/class.hxx | 88 + tiger-compiler/src/type/default-visitor.hh | 65 + tiger-compiler/src/type/default-visitor.hxx | 95 + tiger-compiler/src/type/field.cc | 17 + tiger-compiler/src/type/field.hh | 45 + tiger-compiler/src/type/field.hxx | 16 + tiger-compiler/src/type/function.cc | 38 + tiger-compiler/src/type/function.hh | 59 + tiger-compiler/src/type/function.hxx | 16 + tiger-compiler/src/type/fwd.hh | 31 + tiger-compiler/src/type/libtype.cc | 19 + tiger-compiler/src/type/libtype.hh | 19 + tiger-compiler/src/type/local.am | 29 + tiger-compiler/src/type/method.cc | 48 + tiger-compiler/src/type/method.hh | 90 + tiger-compiler/src/type/method.hxx | 27 + tiger-compiler/src/type/named.cc | 61 + tiger-compiler/src/type/named.hh | 90 + tiger-compiler/src/type/named.hxx | 28 + tiger-compiler/src/type/nil.cc | 34 + tiger-compiler/src/type/nil.hh | 47 + tiger-compiler/src/type/pretty-printer.cc | 127 + tiger-compiler/src/type/pretty-printer.hh | 67 + tiger-compiler/src/type/record.cc | 52 + tiger-compiler/src/type/record.hh | 69 + tiger-compiler/src/type/record.hxx | 34 + tiger-compiler/src/type/tasks.cc | 22 + tiger-compiler/src/type/tasks.hh | 29 + tiger-compiler/src/type/type-checker.cc | 639 + tiger-compiler/src/type/type-checker.hh | 279 + tiger-compiler/src/type/type-checker.hxx | 127 + tiger-compiler/src/type/type.cc | 18 + tiger-compiler/src/type/type.hh | 66 + tiger-compiler/src/type/type.hxx | 37 + tiger-compiler/src/type/types.hh | 18 + tiger-compiler/src/type/visitor.hh | 57 + tiger-compiler/src/type/visitor.hxx | 29 + tiger-compiler/src/version.cc.in | 34 + tiger-compiler/src/version.hh | 23 + tiger-compiler/tcsh/Makefile.am | 5 + tiger-compiler/tcsh/README-deps.txt | 49 + tiger-compiler/tcsh/generate-swig-mk | 101 + tiger-compiler/tcsh/python/Makefile.am | 60 + tiger-compiler/tcsh/python/tc.py | 97 + tiger-compiler/tcsh/python/tcsh-hir.test | 8 + tiger-compiler/tcsh/python/tcsh-llvm.test | 8 + tiger-compiler/tcsh/python/tests/ast.ipynb | 394 + tiger-compiler/tcsh/python/tests/astclone.ipynb | 212 + tiger-compiler/tcsh/python/tests/bind.ipynb | 283 + tiger-compiler/tcsh/python/tests/combine.ipynb | 207 + tiger-compiler/tcsh/python/tests/common.ipynb | 154 + tiger-compiler/tcsh/python/tests/desugar.ipynb | 343 + tiger-compiler/tcsh/python/tests/escapes.ipynb | 194 + tiger-compiler/tcsh/python/tests/ipynbtest.py | 279 + .../tcsh/python/tests/llvmtranslate.ipynb | 220 + tiger-compiler/tcsh/python/tests/misc.ipynb | 358 + tiger-compiler/tcsh/python/tests/object.ipynb | 182 + tiger-compiler/tcsh/python/tests/overload.ipynb | 207 + tiger-compiler/tcsh/python/tests/parse.ipynb | 150 + tiger-compiler/tcsh/python/tests/tc.ipynb | 252 + tiger-compiler/tcsh/python/tests/ti.ipynb | 186 + tiger-compiler/tcsh/python/tests/type.ipynb | 228 + tiger-compiler/tcsh/python/ti.py | 356 + tiger-compiler/tcsh/run.in | 53 + tiger-compiler/tcsh/run.mk | 6 + tiger-compiler/tcsh/src/helper.hh | 16 + tiger-compiler/tcsh/src/swig_real_type.hh | 67 + tiger-compiler/tcsh/src/tiger_ast.i | 312 + tiger-compiler/tcsh/src/tiger_astclone.i | 17 + tiger-compiler/tcsh/src/tiger_bind.i | 13 + tiger-compiler/tcsh/src/tiger_callgraph.i | 18 + tiger-compiler/tcsh/src/tiger_combine.i | 14 + tiger-compiler/tcsh/src/tiger_common.i | 73 + tiger-compiler/tcsh/src/tiger_desugar.i | 30 + tiger-compiler/tcsh/src/tiger_escapes.i | 11 + tiger-compiler/tcsh/src/tiger_llvmtranslate.i | 39 + tiger-compiler/tcsh/src/tiger_misc.i | 73 + tiger-compiler/tcsh/src/tiger_object.i | 32 + tiger-compiler/tcsh/src/tiger_overload.i | 14 + tiger-compiler/tcsh/src/tiger_parse.i | 102 + tiger-compiler/tcsh/src/tiger_type.i | 91 + tiger-compiler/tests/Makefile.am | 23 + tiger-compiler/tests/__init__.py | 0 .../tests/assert/bind/assert-bad-let.tig | 5 + .../assert/bind/assert-nonexistant-attribute.tig | 1 + .../assert/bind/assert-nonexistant-function.tig | 1 + tiger-compiler/tests/assert/good/assert-1.tig | 1 + tiger-compiler/tests/assert/good/assert-call.tig | 5 + .../tests/assert/good/assert-escaped.tig | 6 + tiger-compiler/tests/assert/good/assert-false.tig | 1 + tiger-compiler/tests/assert/good/assert-let.tig | 7 + .../tests/assert/good/assert-seq-let.tig | 5 + .../tests/assert/good/assert-seq_ints.tig | 1 + tiger-compiler/tests/assert/good/assert-strcmp.tig | 1 + tiger-compiler/tests/assert/good/assert-true.tig | 1 + tiger-compiler/tests/assert/good/assert-var.tig | 5 + .../tests/assert/good/simple_unit_test.tig | 10 + .../tests/assert/parse/assert-function-dec.tig | 1 + .../tests/assert/parse/assert-seq-function-dec.tig | 1 + .../tests/assert/type/assert-empty-seq.tig | 1 + tiger-compiler/tests/assert/type/assert-print.tig | 1 + tiger-compiler/tests/assert/type/assert-string.tig | 1 + tiger-compiler/tests/bind/break-outside-loop.tig | 2 + tiger-compiler/tests/bind/compare_to_break.tig | 2 + .../tests/bind/invalid-function-redefinition-1.tig | 11 + .../tests/bind/invalid-type-redefinition.tig | 10 + tiger-compiler/tests/bind/scoped_main.tig | 6 + tiger-compiler/tests/bind/set_to_break.tig | 2 + tiger-compiler/tests/bind/simple_sequence_int.tig | 6 + tiger-compiler/tests/bind/simple_sequence_void.tig | 1 + tiger-compiler/tests/bind/test17.tig | 12 + tiger-compiler/tests/bind/test18.tig | 15 + tiger-compiler/tests/bind/test19.tig | 13 + tiger-compiler/tests/bind/tome.tig | 7 + tiger-compiler/tests/bind/undeclared-variable.tig | 5 + tiger-compiler/tests/bind/unknown-field-type.tig | 5 + tiger-compiler/tests/bind/unknown-record.tig | 6 + .../tests/desugar/breaks-in-embedded-loops.tig | 13 + .../tests/desugar/desugar_basic_strcmp.tig | 34 + tiger-compiler/tests/desugar/desugar_eq_strcmp.tig | 35 + .../tests/desugar/desugar_simple_for.tig | 7 + tiger-compiler/tests/desugar/test64.tig | 40 + tiger-compiler/tests/desugar/test64.tih | 41 + tiger-compiler/tests/good/array-of-alias.tig | 9 + tiger-compiler/tests/good/array-of-nil.tig | 11 + tiger-compiler/tests/good/array.tig | 7 + tiger-compiler/tests/good/break-in-while.tig | 3 + .../tests/good/breaks-in-embedded-loops.tig | 13 + tiger-compiler/tests/good/comments-nested.tig | 6 + .../tests/good/compare-record-and-nil.tig | 7 + tiger-compiler/tests/good/compare_to_void.tig | 2 + tiger-compiler/tests/good/escapes_series.tig | 19 + tiger-compiler/tests/good/escapes_various.tig | 19 + tiger-compiler/tests/good/fact.tig | 11 + tiger-compiler/tests/good/for-in-let.tig | 7 + tiger-compiler/tests/good/fun-vs-var.tig | 13 + tiger-compiler/tests/good/if.tig | 2 + tiger-compiler/tests/good/local-vs-global-type.tig | 10 + tiger-compiler/tests/good/managing_values.tig | 42 + tiger-compiler/tests/good/me.tig | 5 + tiger-compiler/tests/good/meme.tig | 6 + tiger-compiler/tests/good/merge.tig | 54 + .../tests/good/mutually-recursive-functions.tig | 12 + .../tests/good/mutually-recursive-procedures.tig | 12 + tiger-compiler/tests/good/queens.tig | 33 + tiger-compiler/tests/good/record-set-to-nil.tig | 23 + tiger-compiler/tests/good/record.tig | 8 + tiger-compiler/tests/good/recursive-types.tig | 15 + tiger-compiler/tests/good/shadowing-functions.tig | 11 + .../tests/good/shadowing-types-separate.tig | 11 + tiger-compiler/tests/good/string-ordering.tig | 19 + tiger-compiler/tests/good/test27.tig | 8 + tiger-compiler/tests/good/test30.tig | 10 + tiger-compiler/tests/good/test37.tig | 8 + tiger-compiler/tests/good/test42.tig | 27 + tiger-compiler/tests/good/test44.tig | 11 + tiger-compiler/tests/good/test64.tig | 40 + tiger-compiler/tests/good/test64.tih | 41 + tiger-compiler/tests/good/three-name-spaces.tig | 6 + tiger-compiler/tests/good/variable-escapes.tig | 7 + .../llvmtranslate/array_value_compared_to_int.tig | 6 + .../llvmtranslate/record_field_compared_to_int.tig | 6 + .../tests/llvmtranslate/simple_addition.tig | 1 + .../tests/llvmtranslate/simple_array_int.tig | 7 + .../tests/llvmtranslate/simple_array_record.tig | 8 + .../tests/llvmtranslate/simple_array_string.tig | 7 + .../tests/llvmtranslate/simple_assignment_int.tig | 5 + .../llvmtranslate/simple_assignment_string.tig | 5 + .../tests/llvmtranslate/simple_consecutive_ifs.tig | 12 + .../tests/llvmtranslate/simple_declaration_int.tig | 5 + .../llvmtranslate/simple_declaration_string.tig | 5 + .../tests/llvmtranslate/simple_division.tig | 1 + .../tests/llvmtranslate/simple_equal.tig | 1 + .../tests/llvmtranslate/simple_equal_string.tig | 1 + tiger-compiler/tests/llvmtranslate/simple_for.tig | 5 + .../tests/llvmtranslate/simple_for_break.tig | 6 + .../tests/llvmtranslate/simple_funcall_in_if.tig | 9 + .../tests/llvmtranslate/simple_function_int.tig | 5 + .../llvmtranslate/simple_function_int_escaped.tig | 6 + .../llvmtranslate/simple_function_int_param.tig | 5 + .../simple_function_int_param_return.tig | 5 + .../tests/llvmtranslate/simple_function_string.tig | 5 + .../tests/llvmtranslate/simple_greater_than.tig | 1 + tiger-compiler/tests/llvmtranslate/simple_if.tig | 4 + .../tests/llvmtranslate/simple_if_no_else.tig | 6 + tiger-compiler/tests/llvmtranslate/simple_int.tig | 1 + .../tests/llvmtranslate/simple_lesser_than.tig | 1 + .../tests/llvmtranslate/simple_multiplication.tig | 1 + .../tests/llvmtranslate/simple_nested_ifs.tig | 7 + tiger-compiler/tests/llvmtranslate/simple_nil.tig | 9 + .../tests/llvmtranslate/simple_not_equal.tig | 1 + .../tests/llvmtranslate/simple_primitive_call.tig | 1 + .../tests/llvmtranslate/simple_record.tig | 9 + .../tests/llvmtranslate/simple_sequence_int.tig | 8 + .../tests/llvmtranslate/simple_sequence_void.tig | 4 + .../tests/llvmtranslate/simple_string.tig | 1 + .../tests/llvmtranslate/simple_subtraction.tig | 1 + .../tests/llvmtranslate/simple_while.tig | 9 + .../tests/llvmtranslate/simple_while_break.tig | 10 + .../llvmtranslate/variable_compared_to_int.tig | 5 + .../variable_compared_to_variable.tig | 6 + .../tests/object/bind/missing-super-class.tig | 5 + .../tests/object/good/class-to-different-class.tig | 8 + tiger-compiler/tests/object/good/class-to-nil.tig | 6 + .../good/empty-class-inheritance-complex.tig | 7 + .../object/good/empty-class-inheritance-simple.tig | 5 + tiger-compiler/tests/object/good/empty-class.tig | 4 + .../object/good/forward-reference-to-class.tig | 14 + tiger-compiler/tests/object/good/funny.tig | 29 + .../tests/object/good/object-renamer.tig | 25 + tiger-compiler/tests/object/good/override.tig | 28 + tiger-compiler/tests/object/good/self.tig | 16 + .../tests/object/good/simple-class-call-method.tig | 10 + .../tests/object/good/simple-class-structlike.tig | 6 + tiger-compiler/tests/object/good/simple-class.tig | 10 + .../tests/object/type/bad-member-bindings.tig | 7 + .../tests/object/type/circular-inheritance.tig | 7 + .../tests/object/type/class-as-bad-parameter.tig | 7 + .../object/type/class-equals-different-class.tig | 8 + .../type/class-greater-than-different-class.tig | 8 + .../type/class-lower-than-different-class.tig | 8 + .../type/class-not-equals-different-class.tig | 8 + tiger-compiler/tests/object/type/class-to-int.tig | 6 + .../tests/object/type/class-to-string.tig | 6 + .../tests/object/type/incompatible-covariance.tig | 13 + tiger-compiler/tests/python/pytest.ini | 3 + .../tests/python/tests/setup/__init__.py | 4 + .../tests/python/tests/setup/load_files.py | 14 + .../tests/python/tests/setup/load_testsuite.py | 35 + .../tests/python/tests/setup/project_settings.py | 23 + tiger-compiler/tests/python/tests/setup/run_tc.py | 72 + tiger-compiler/tests/python/tests/test_assert.py | 27 + tiger-compiler/tests/python/tests/test_bind.py | 18 + tiger-compiler/tests/python/tests/test_desugar.py | 14 + tiger-compiler/tests/python/tests/test_escapes.py | 14 + .../tests/python/tests/test_llvmtranslate.py | 18 + tiger-compiler/tests/python/tests/test_object.py | 30 + tiger-compiler/tests/python/tests/test_syntax.py | 16 + .../tests/python/tests/test_testsuite.py | 19 + tiger-compiler/tests/python/tests/test_type.py | 16 + .../tests/syntax/constant_redefinition.tig | 2 + tiger-compiler/tests/syntax/typeid.tig | 8 + .../tests/testsuite/good/every_single_case.tig | 28 + .../tests/testsuite/good/one_actual_test.tig | 4 + .../tests/testsuite/good/one_empty_test.tig | 1 + tiger-compiler/tests/testsuite/good/subtests.tig | 24 + .../tests/testsuite/good/tested_function.tig | 18 + .../tests/testsuite/good/three_actual_tests.tig | 14 + .../testsuite/good/three_actual_tests_natural.tig | 19 + .../tests/testsuite/good/three_empty_tests.tig | 5 + tiger-compiler/tests/type/assign-loop-var.tig | 3 + tiger-compiler/tests/type/bad-main-args.tig | 1 + tiger-compiler/tests/type/bad-main-return.tig | 1 + tiger-compiler/tests/type/box.tig | 7 + tiger-compiler/tests/type/compare_to_break.tig | 3 + tiger-compiler/tests/type/field-in-not-record.tig | 7 + .../tests/type/field-twice-in-declaration.tig | 8 + .../tests/type/field-twice-in-instantiation.tig | 8 + tiger-compiler/tests/type/funarg-type-mismatch.tig | 6 + tiger-compiler/tests/type/lower_than_array.tig | 20 + tiger-compiler/tests/type/lower_than_nil.tig | 20 + tiger-compiler/tests/type/lower_than_record.tig | 20 + tiger-compiler/tests/type/missing-arg.tig | 6 + tiger-compiler/tests/type/nil-equals-nil.tig | 2 + tiger-compiler/tests/type/nil-string.tig | 7 + tiger-compiler/tests/type/test09.tig | 3 + tiger-compiler/tests/type/test10.tig | 2 + tiger-compiler/tests/type/test11.tig | 3 + tiger-compiler/tests/type/test13.tig | 3 + tiger-compiler/tests/type/test14.tig | 13 + tiger-compiler/tests/type/test15.tig | 3 + tiger-compiler/tests/type/test21.tig | 11 + tiger-compiler/tests/type/test22.tig | 8 + tiger-compiler/tests/type/test23.tig | 9 + tiger-compiler/tests/type/test24.tig | 7 + tiger-compiler/tests/type/test26.tig | 3 + tiger-compiler/tests/type/test28.tig | 10 + tiger-compiler/tests/type/test29.tig | 10 + tiger-compiler/tests/type/test31.tig | 6 + tiger-compiler/tests/type/test32.tig | 9 + tiger-compiler/tests/type/test40.tig | 7 + tiger-compiler/tests/type/test43.tig | 7 + tiger-compiler/tests/type/too-many-args.tig | 6 + .../tests/type/types-endless-recursion.tig | 11 + tiger-compiler/tests/type/unconstrained-nil.tig | 5 + .../tests/type/wrong-print-invalid-type.tig | 2 + .../tests/type/wrong-print-too-many-args.tig | 2 + tiger-compiler/tests/unit/ast/local.am | 1 + tiger-compiler/tests/unit/ast/test_hello.cc | 6 + tiger-compiler/tests/unit/local.am | 4 + tiger-compiler/tests/unit/misc/local.am | 5 + tiger-compiler/tests/unit/misc/symbol/local.am | 2 + .../tests/unit/misc/symbol/test_symbol_simple.cc | 21 + tiger-compiler/tests/unit/misc/test_hello.cc | 6 + tiger-compiler/tests/unit/misc/unique/local.am | 4 + .../tests/unit/misc/unique/test_unique_char.cc | 18 + .../tests/unit/misc/unique/test_unique_int.cc | 18 + .../tests/unit/misc/unique/test_unique_string.cc | 19 + tiger-compiler/tests/unit/misc/variant/local.am | 3 + .../unit/misc/variant/test_variant_three_types.cc | 35 + .../unit/misc/variant/test_variant_two_types.cc | 28 + tiger-compiler/tests/unit/parse/local.am | 4 + tiger-compiler/tests/unit/parse/test_hello.cc | 36 + .../tests/unit/parse/tiger_driver/local.am | 2 + .../unit/parse/tiger_driver/test_parse_no_check.cc | 19 + .../parse/tiger_factory/define_test_location.cc | 5 + .../parse/tiger_factory/define_test_location.hh | 5 + .../tests/unit/parse/tiger_factory/local.am | 12 + .../parse/tiger_factory/test_make_array_exp.cc | 30 + .../parse/tiger_factory/test_make_break_exp.cc | 30 + .../unit/parse/tiger_factory/test_make_call_exp.cc | 41 + .../parse/tiger_factory/test_make_field_var.cc | 30 + .../unit/parse/tiger_factory/test_make_if_exp.cc | 48 + .../unit/parse/tiger_factory/test_make_int_exp.cc | 38 + .../unit/parse/tiger_factory/test_make_let_exp.cc | 30 + .../parse/tiger_factory/test_make_object_exp.cc | 19 + .../parse/tiger_factory/test_make_record_exp.cc | 30 + .../parse/tiger_factory/test_make_record_ty.cc | 30 + .../parse/tiger_factory/test_make_string_exp.cc | 30 + tiger-compiler/tests/unit/tasks/bind/local.am | 0 tiger-compiler/tests/unit/tasks/local.am | 1 + tiger-compiler/the-tiger.txt | 41 + tigrou/.gitignore | 4 + tigrou/declare-my-variable/declare-my-variable.tig | 6 + tigrou/fibo/fibo.tig | 24 + tigrou/fibo/fibo.tih | 18 + tigrou/hello-tigrou/hello-tigrou.tig | 1 + tigrou/how-old-am-i/how-old-am-i.tig | 2 + tigrou/linked-list/linked-list.tig | 24 + tigrou/linked-list/linked-list.tih | 15 + tigrou/sort/sort.tig | 58 + tigrou/sort/sort.tih | 24 + tigrou/use-an-array/use-an-array.tig | 44 + tigrou/use-an-array/use-an-array.tih | 12 + tigrou/who-am-i/who-am-i.tig | 18 + tigrou/who-am-i/who-am-i.tih | 8 + 1394 files changed, 153137 insertions(+) create mode 100644 21sh/autotools/.gitignore create mode 100644 21sh/autotools/Makefile.am create mode 100644 21sh/autotools/configure.ac create mode 100644 21sh/autotools/src/42sh.c create mode 100644 21sh/autotools/src/Makefile.am create mode 100644 21sh/autotools/src/ast/Makefile.am create mode 100644 21sh/autotools/src/ast/ast.c create mode 100644 21sh/autotools/src/ast/ast.h create mode 100644 21sh/autotools/src/lexer/Makefile.am create mode 100644 21sh/autotools/src/lexer/lexer.c create mode 100644 21sh/autotools/src/lexer/lexer.h create mode 100644 21sh/autotools/src/parser/Makefile.am create mode 100644 21sh/autotools/src/parser/parser.c create mode 100644 21sh/autotools/src/parser/parser.h create mode 100644 21sh/ll-expr/Makefile create mode 100644 21sh/ll-expr/src/ast/ast.c create mode 100644 21sh/ll-expr/src/ast/ast.h create mode 100644 21sh/ll-expr/src/eval/ast_print.c create mode 100644 21sh/ll-expr/src/eval/rpn_print.c create mode 100644 21sh/ll-expr/src/eval/token_printer.c create mode 100644 21sh/ll-expr/src/lexer/lexer.c create mode 100644 21sh/ll-expr/src/lexer/lexer.h create mode 100644 21sh/ll-expr/src/lexer/token.h create mode 100644 21sh/ll-expr/src/parser/parser.c create mode 100644 21sh/ll-expr/src/parser/parser.h create mode 100644 21sh/mypipe/mypipe.c create mode 100644 21sh/mypipe/mypipe.h create mode 100644 21sh/myredir/myredir.c create mode 100644 42sh/.clang-format create mode 100644 42sh/.gitignore create mode 100644 42sh/.gitlab-ci.yml create mode 100644 42sh/Makefile.am create mode 100644 42sh/README create mode 100644 42sh/configure.ac create mode 100644 42sh/src/42sh.c create mode 100644 42sh/src/IO/IOBackend.h create mode 100644 42sh/src/IO/Makefile.am create mode 100644 42sh/src/IO/string_input.c create mode 100644 42sh/src/Makefile.am create mode 100644 42sh/src/ast/Makefile.am create mode 100644 42sh/src/ast/ast.c create mode 100644 42sh/src/ast/ast.h create mode 100644 42sh/src/ast/ast_accessors.c create mode 100644 42sh/src/ast/ast_accessors.h create mode 100644 42sh/src/ast/ast_pretty_print.c create mode 100644 42sh/src/ast/ast_redirect.h create mode 100644 42sh/src/builtins/Makefile.am create mode 100644 42sh/src/builtins/break.c create mode 100644 42sh/src/builtins/builtins.h create mode 100644 42sh/src/builtins/cd.c create mode 100644 42sh/src/builtins/continue.c create mode 100644 42sh/src/builtins/dot.c create mode 100644 42sh/src/builtins/echo.c create mode 100644 42sh/src/builtins/exit.c create mode 100644 42sh/src/builtins/export.c create mode 100644 42sh/src/builtins/false.c create mode 100644 42sh/src/builtins/true.c create mode 100644 42sh/src/builtins/unset.c create mode 100644 42sh/src/exec/Makefile.am create mode 100644 42sh/src/exec/ast_eval.c create mode 100644 42sh/src/exec/ast_eval.h create mode 100644 42sh/src/exec/ast_exec_functions.c create mode 100644 42sh/src/exec/ast_exec_functions.h create mode 100644 42sh/src/exec/ast_exec_redirs.c create mode 100644 42sh/src/exec/ast_exec_redirs.h create mode 100644 42sh/src/helper.c create mode 100644 42sh/src/helper.h create mode 100644 42sh/src/lexer/Makefile.am create mode 100644 42sh/src/lexer/expansion.c create mode 100644 42sh/src/lexer/expansion.h create mode 100644 42sh/src/lexer/lexer.c create mode 100644 42sh/src/lexer/lexer.h create mode 100644 42sh/src/lexer/token.h create mode 100644 42sh/src/lexer/utils.h create mode 100644 42sh/src/parser/Makefile.am create mode 100644 42sh/src/parser/parser.c create mode 100644 42sh/src/parser/parser.h create mode 100644 42sh/src/parser/parser_commands.c create mode 100644 42sh/src/parser/parser_conditionnals.c create mode 100644 42sh/src/parser/parser_functions.h create mode 100644 42sh/src/parser/parser_fundec.c create mode 100644 42sh/src/parser/parser_lists.c create mode 100644 42sh/src/parser/parser_loops.c create mode 100644 42sh/src/parser/parser_operators.c create mode 100644 42sh/src/parser/parser_redir.c create mode 100644 42sh/src/parser/parser_utils.c create mode 100644 42sh/src/parser/parser_utils.h create mode 100644 42sh/src/utils/Makefile.am create mode 100644 42sh/src/utils/basicstring.c create mode 100644 42sh/src/utils/env.c create mode 100644 42sh/src/utils/env.h create mode 100644 42sh/src/utils/libstring.h create mode 100644 42sh/tests/Makefile.am create mode 100644 42sh/tests/functional/resources/dot/script1.sh create mode 100644 42sh/tests/functional/resources/dot/script2.sh create mode 100644 42sh/tests/functional/resources/exit/script1.sh create mode 100644 42sh/tests/functional/test_EXCEPTIONNEL_step_3.sh create mode 100755 42sh/tests/functional/testsuite.sh create mode 100644 42sh/tests/unit/tests_lexer.c create mode 100644 42sh/tests/unit/tests_parser.c create mode 100755 42sh/tests/wrapper.sh create mode 100644 benchmark/.gitignore create mode 100644 benchmark/README.md create mode 100644 benchmark/app/.gitignore create mode 100644 benchmark/app/build.gradle.kts create mode 100644 benchmark/app/proguard-rules.pro create mode 100644 benchmark/app/src/androidTest/java/io/trentetroim/benchmark/ExampleInstrumentedTest.kt create mode 100644 benchmark/app/src/main/AndroidManifest.xml create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/AddBenchActivity.kt create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/CustomAdapter.kt create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/MainActivity.kt create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/MapActivity.kt create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/ReviewAdapter.kt create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/api/models/ApiResponse.kt create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/api/models/Point.kt create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/api/models/Review.kt create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/api/repository/PointRepository.kt create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/api/repository/ReviewRepository.kt create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/api/service/ApiService.kt create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/api/service/RetrofitClient.kt create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/ui/theme/Color.kt create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/ui/theme/Theme.kt create mode 100644 benchmark/app/src/main/java/io/trentetroim/benchmark/ui/theme/Type.kt create mode 100644 benchmark/app/src/main/res/drawable/card_bg.xml create mode 100644 benchmark/app/src/main/res/drawable/ic_bench_icon.xml create mode 100644 benchmark/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 benchmark/app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 benchmark/app/src/main/res/drawable/list_handle_layout.xml create mode 100644 benchmark/app/src/main/res/drawable/plus_5345954.png create mode 100644 benchmark/app/src/main/res/drawable/target.xml create mode 100644 benchmark/app/src/main/res/font/nokia_font.xml create mode 100644 benchmark/app/src/main/res/font/nokiafc22.ttf create mode 100644 benchmark/app/src/main/res/layout/bottom_sheet_dialog.xml create mode 100644 benchmark/app/src/main/res/layout/card_layout.xml create mode 100644 benchmark/app/src/main/res/layout/dialog_bench_details.xml create mode 100644 benchmark/app/src/main/res/layout/dialog_review.xml create mode 100644 benchmark/app/src/main/res/layout/dialog_reviews_list.xml create mode 100644 benchmark/app/src/main/res/layout/item_review.xml create mode 100644 benchmark/app/src/main/res/layout/main_layout.xml create mode 100644 benchmark/app/src/main/res/layout/new_bench_layout.xml create mode 100644 benchmark/app/src/main/res/mipmap-anydpi/ic_launcher.xml create mode 100644 benchmark/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml create mode 100644 benchmark/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 benchmark/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 benchmark/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 benchmark/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 benchmark/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 benchmark/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 benchmark/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 benchmark/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 benchmark/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 benchmark/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 benchmark/app/src/main/res/values/colors.xml create mode 100644 benchmark/app/src/main/res/values/strings.xml create mode 100644 benchmark/app/src/main/res/values/themes.xml create mode 100644 benchmark/app/src/main/res/xml/backup_rules.xml create mode 100644 benchmark/app/src/main/res/xml/data_extraction_rules.xml create mode 100644 benchmark/app/src/main/res/xml/network_security_config.xml create mode 100644 benchmark/app/src/test/java/io/trentetroim/benchmark/ExampleUnitTest.kt create mode 100644 benchmark/build.gradle.kts create mode 100644 benchmark/doc/openapi.json create mode 100644 benchmark/gradle.properties create mode 100644 benchmark/gradle/libs.versions.toml create mode 100644 benchmark/gradle/wrapper/gradle-wrapper.properties create mode 100755 benchmark/gradlew create mode 100644 benchmark/gradlew.bat create mode 100644 benchmark/settings.gradle.kts create mode 100644 bittorrent/.clang-format create mode 100644 bittorrent/.gitignore create mode 100644 bittorrent/bittorrent/libs/mbtbe/include/mbt/be/bencode.h create mode 100644 bittorrent/bittorrent/libs/mbtbe/include/mbt/be/mytorrent.h create mode 100644 bittorrent/bittorrent/libs/mbtbe/include/mbt/be/torrent.h create mode 100644 bittorrent/bittorrent/libs/mbtbe/include/mbt/be/torrent_files.h create mode 100644 bittorrent/bittorrent/libs/mbtbe/include/mbt/be/torrent_getters.h create mode 100644 bittorrent/bittorrent/libs/mbtbe/meson.build create mode 100644 bittorrent/bittorrent/libs/mbtbe/src/beutils.c create mode 100644 bittorrent/bittorrent/libs/mbtbe/src/decode.c create mode 100644 bittorrent/bittorrent/libs/mbtbe/src/encode.c create mode 100644 bittorrent/bittorrent/libs/mbtbe/src/mygetters.c create mode 100644 bittorrent/bittorrent/libs/mbtbe/src/mygetters2.c create mode 100644 bittorrent/bittorrent/libs/mbtbe/src/mytfiles.c create mode 100644 bittorrent/bittorrent/libs/mbtbe/src/mytorrent.c create mode 100644 bittorrent/bittorrent/libs/mbtbe/src/mytorrentfile.c create mode 100644 bittorrent/bittorrent/libs/mbtbe/src/node.c create mode 100644 bittorrent/bittorrent/libs/mbtfile/include/mbt/file/file_handler.h create mode 100644 bittorrent/bittorrent/libs/mbtfile/include/mbt/file/my_file_handler.h create mode 100644 bittorrent/bittorrent/libs/mbtfile/include/mbt/file/my_piece.h create mode 100644 bittorrent/bittorrent/libs/mbtfile/include/mbt/file/piece.h create mode 100644 bittorrent/bittorrent/libs/mbtfile/meson.build create mode 100644 bittorrent/bittorrent/libs/mbtfile/src/mbt_file_handler.c create mode 100644 bittorrent/bittorrent/libs/mbtfile/src/mbt_piece.c create mode 100644 bittorrent/bittorrent/libs/mbtnet/include/mbt/net/context.h create mode 100644 bittorrent/bittorrent/libs/mbtnet/include/mbt/net/leeching.h create mode 100644 bittorrent/bittorrent/libs/mbtnet/include/mbt/net/peer.h create mode 100644 bittorrent/bittorrent/libs/mbtnet/include/mbt/net/tracker.h create mode 100644 bittorrent/bittorrent/libs/mbtnet/meson.build create mode 100644 bittorrent/bittorrent/libs/mbtnet/src/mbtnet.c create mode 100644 bittorrent/bittorrent/libs/mbtutils/include/mbt/utils/str.h create mode 100644 bittorrent/bittorrent/libs/mbtutils/include/mbt/utils/utils.h create mode 100644 bittorrent/bittorrent/libs/mbtutils/include/mbt/utils/view.h create mode 100644 bittorrent/bittorrent/libs/mbtutils/meson.build create mode 100644 bittorrent/bittorrent/libs/mbtutils/src/cmp.c create mode 100644 bittorrent/bittorrent/libs/mbtutils/src/contains.c create mode 100644 bittorrent/bittorrent/libs/mbtutils/src/ctor.c create mode 100644 bittorrent/bittorrent/libs/mbtutils/src/dtor.c create mode 100644 bittorrent/bittorrent/libs/mbtutils/src/fprint.c create mode 100644 bittorrent/bittorrent/libs/mbtutils/src/free.c create mode 100644 bittorrent/bittorrent/libs/mbtutils/src/init.c create mode 100644 bittorrent/bittorrent/libs/mbtutils/src/pushc.c create mode 100644 bittorrent/bittorrent/libs/mbtutils/src/pushcstr.c create mode 100644 bittorrent/bittorrent/libs/mbtutils/src/pushcv.c create mode 100644 bittorrent/bittorrent/meson.build create mode 100644 bittorrent/bittorrent/src/mbt.c create mode 100644 bittorrent/epoll_server/connection.c create mode 100644 bittorrent/epoll_server/connection.h create mode 100644 bittorrent/epoll_server/epoll_server.c create mode 100644 bittorrent/epoll_server/epoll_server.h create mode 100644 bittorrent/epoll_server/meson.build create mode 100644 bittorrent/epoll_server/utils/xalloc.c create mode 100644 bittorrent/epoll_server/utils/xalloc.h create mode 100644 bittorrent/mbtstr/include/mbtstr/str.h create mode 100644 bittorrent/mbtstr/include/mbtstr/utils.h create mode 100644 bittorrent/mbtstr/include/mbtstr/view.h create mode 100644 bittorrent/mbtstr/meson.build create mode 100644 bittorrent/mbtstr/src/cmp.c create mode 100644 bittorrent/mbtstr/src/contains.c create mode 100644 bittorrent/mbtstr/src/ctor.c create mode 100644 bittorrent/mbtstr/src/dtor.c create mode 100644 bittorrent/mbtstr/src/fprint.c create mode 100644 bittorrent/mbtstr/src/free.c create mode 100644 bittorrent/mbtstr/src/init.c create mode 100644 bittorrent/mbtstr/src/pushc.c create mode 100644 bittorrent/mbtstr/src/pushcstr.c create mode 100644 bittorrent/mbtstr/src/pushcv.c create mode 100644 bittorrent/meson.build create mode 100644 ero1/.gitignore create mode 100644 ero1/AUTHORS create mode 100644 ero1/README.md create mode 100755 ero1/clear.sh create mode 100644 ero1/demo.py create mode 100644 ero1/parameters.py create mode 100644 ero1/rapport ERO1.pdf create mode 100644 ero1/requirements.txt create mode 100755 ero1/run.sh create mode 100755 ero1/setup.sh create mode 100644 ero1/src/README.md create mode 100644 ero1/src/demo/ask_variable.py create mode 100644 ero1/src/demo/demo_cost.py create mode 100644 ero1/src/demo/demo_exec.py create mode 100644 ero1/src/demo/demo_final_report.py create mode 100644 ero1/src/demo/demo_stats.py create mode 100644 ero1/src/demo/print_demo.py create mode 100644 ero1/src/deneigeuses/basic_euler.py create mode 100644 ero1/src/deneigeuses/directed_cpp.py create mode 100644 ero1/src/deneigeuses/drone_path.py create mode 100644 ero1/src/deneigeuses/hangar_to_deneigeuse.py create mode 100644 ero1/src/deneigeuses/hierholzer_v1.py create mode 100644 ero1/src/deneigeuses/hierholzer_v2.py create mode 100644 ero1/src/deneigeuses/maps/verdun.py create mode 100644 ero1/src/drone/couverture_sommets.py create mode 100644 ero1/src/drone/postier_chinoisV1.py create mode 100644 ero1/src/drone/postier_chinoisV2.py create mode 100644 ero1/src/drone/postier_chinoisV3.py create mode 100644 ero1/src/drone/postier_chinois_Martial.py create mode 100644 ero1/src/drone/postier_chinois_montreal.py create mode 100644 ero1/src/generation/graph_generation.py create mode 100644 ero1/src/generation/habitation_generation.py create mode 100644 ero1/src/generation/snow_generation.py create mode 100644 ero1/src/generation/suburb_snowplow_generation.py create mode 100644 ero1/src/helper/check_eulerian.py create mode 100644 ero1/src/helper/color_suburbs.py create mode 100644 ero1/src/helper/debug_printer.py create mode 100644 ero1/src/helper/display_graph.py create mode 100644 ero1/src/helper/duplicate_removal.py create mode 100644 ero1/src/helper/export_cost.py create mode 100644 ero1/src/helper/export_import_yaml.py create mode 100644 ero1/src/helper/export_to_kml.py create mode 100644 ero1/src/helper/main_parcours.py create mode 100644 ero1/src/helper/output_debug.py create mode 100644 ero1/src/helper/partitions.py create mode 100644 ero1/src/helper/prune_maps.py create mode 100644 ero1/src/tests/snow_testing.py create mode 100644 ero1/start_dev.py create mode 100644 ero1/temp/README.md create mode 100644 idvoc-2025/CommentsEngine/.gitignore create mode 100644 idvoc-2025/CommentsEngine/Dockerfile create mode 100644 idvoc-2025/CommentsEngine/README.md create mode 100644 idvoc-2025/CommentsEngine/go.mod create mode 100644 idvoc-2025/CommentsEngine/go.sum create mode 100644 idvoc-2025/CommentsEngine/main.go create mode 100644 idvoc-2025/CommentsEngine/redisc/redis.go create mode 100644 idvoc-2025/CommentsInteractor/.gitignore create mode 100644 idvoc-2025/CommentsInteractor/Dockerfile create mode 100644 idvoc-2025/CommentsInteractor/README.md create mode 100644 idvoc-2025/CommentsInteractor/go.mod create mode 100644 idvoc-2025/CommentsInteractor/go.sum create mode 100644 idvoc-2025/CommentsInteractor/main.go create mode 100644 idvoc-2025/docker-compose.yml create mode 100644 idvoc-2025/metrics/README.md create mode 100644 idvoc-2025/metrics/docker-compose.yml create mode 100644 idvoc-2025/metrics/prometheus.yml create mode 100755 idvoc-2025/metrics/start.sh create mode 100644 jws/.gitignore create mode 100644 jws/database/pom.xml create mode 100644 jws/database/src/main/java/fr/epita/assistants/data/model/CourseModel.java create mode 100644 jws/database/src/main/java/fr/epita/assistants/data/model/StudentModel.java create mode 100644 jws/database/src/main/resources/application.properties create mode 100644 jws/endpoints/pom.xml create mode 100644 jws/endpoints/src/main/java/fr/epita/assistants/presentation/rest/Endpoints.java create mode 100644 jws/endpoints/src/main/java/fr/epita/assistants/presentation/rest/HelloWorldEndpoint.java create mode 100644 jws/endpoints/src/main/java/fr/epita/assistants/presentation/rest/request/ReverseRequest.java create mode 100644 jws/endpoints/src/main/java/fr/epita/assistants/presentation/rest/response/HelloResponse.java create mode 100644 jws/endpoints/src/main/java/fr/epita/assistants/presentation/rest/response/ReverseResponse.java create mode 100644 jws/endpoints/src/main/resources/application.properties create mode 100644 jws/endpoints/src/main/resources/openapi.yaml create mode 100644 jws/epibazaar/common/pom.xml create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/aggregate/ItemAggregate.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/aggregate/ResetInventoryAggregate.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/aggregate/SellItemAggregate.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/aggregate/SyncInventoryAggregate.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/aggregate/UpgradeItemProducerAggregate.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/aggregate/UpgradeShopAggregate.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/api/request/ItemRequest.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/api/request/ItemsRequest.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/api/request/MoveRequest.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/api/request/StartRequest.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/api/response/ItemResponse.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/api/response/ItemsResponse.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/api/response/MoveResponse.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/api/response/PlayerResponse.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/api/response/ShopPriceResponse.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/api/response/ShopResponse.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/api/response/ShopsResponse.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/api/response/StartResponse.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/api/response/UpgradeCostResponse.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/command/CollectItemCommand.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/command/CreateShopCommand.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/command/ResetInventoryCommand.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/command/SellItemCommand.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/command/SyncInventoryCommand.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/command/UpgradeCollectRateCommand.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/command/UpgradeMovementSpeedCommand.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/command/UpgradeShopPriceCommand.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/command/UpgradeStaminaCommand.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/utils/Direction.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/utils/ErrorInfo.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/utils/ItemInfo.java create mode 100644 jws/epibazaar/common/src/main/java/fr/epita/assistants/common/utils/Point.java create mode 100644 jws/epibazaar/common/src/main/resources/application.properties create mode 100644 jws/epibazaar/inventory/pom.xml create mode 100644 jws/epibazaar/inventory/src/main/java/fr/epita/assistants/inventory/converter/InventoryConverter.java create mode 100644 jws/epibazaar/inventory/src/main/java/fr/epita/assistants/inventory/data/model/ItemModel.java create mode 100644 jws/epibazaar/inventory/src/main/java/fr/epita/assistants/inventory/data/repository/ItemRepository.java create mode 100644 jws/epibazaar/inventory/src/main/java/fr/epita/assistants/inventory/domain/entity/ItemEntity.java create mode 100644 jws/epibazaar/inventory/src/main/java/fr/epita/assistants/inventory/domain/entity/ItemsEntity.java create mode 100644 jws/epibazaar/inventory/src/main/java/fr/epita/assistants/inventory/domain/service/InventoryService.java create mode 100644 jws/epibazaar/inventory/src/main/java/fr/epita/assistants/inventory/presentation/subscriber/CommandSubscriber.java create mode 100644 jws/epibazaar/inventory/src/main/resources/application.properties create mode 100644 jws/epibazaar/inventory/src/main/resources/db/migration/V1__Init.sql create mode 100644 jws/epibazaar/item-producer/.env create mode 100644 jws/epibazaar/item-producer/pom.xml create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/converter/ItemProducerConverter.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/data/model/GameModel.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/data/model/ItemModel.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/data/model/PlayerModel.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/data/repository/GameRepository.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/data/repository/ItemRepository.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/data/repository/PlayerRepository.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/domain/entity/GameEntity.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/domain/entity/ItemEntity.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/domain/entity/ItemsEntity.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/domain/entity/MoveEntity.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/domain/entity/PlayerEntity.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/domain/entity/StartEntity.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/domain/entity/UpgradeCostEntity.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/domain/service/ErwenService.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/domain/service/ItemProducerService.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/presentation/rest/HelloWorldResource.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/presentation/rest/ItemProducerResource.java create mode 100644 jws/epibazaar/item-producer/src/main/java/fr/epita/assistants/item_producer/presentation/subscriber/AggregateSubscriber.java create mode 100644 jws/epibazaar/item-producer/src/main/resources/application.properties create mode 100644 jws/epibazaar/item-producer/src/main/resources/db/migration/V1__Init.sql create mode 100644 jws/epibazaar/item-producer/src/main/resources/maps/custom.epimap create mode 100644 jws/epibazaar/item-producer/src/main/resources/maps/huge.epimap create mode 100644 jws/epibazaar/item-producer/src/main/resources/maps/pretty.epimap create mode 100644 jws/epibazaar/item-producer/src/main/resources/openapi.yaml create mode 100644 jws/epibazaar/pom.xml create mode 100644 jws/epibazaar/shop/.env create mode 100644 jws/epibazaar/shop/pom.xml create mode 100644 jws/epibazaar/shop/src/main/java/fr/epita/assistants/shop/converter/ShopConverter.java create mode 100644 jws/epibazaar/shop/src/main/java/fr/epita/assistants/shop/data/model/ItemModel.java create mode 100644 jws/epibazaar/shop/src/main/java/fr/epita/assistants/shop/data/model/ShopModel.java create mode 100644 jws/epibazaar/shop/src/main/java/fr/epita/assistants/shop/data/repository/ItemRepository.java create mode 100644 jws/epibazaar/shop/src/main/java/fr/epita/assistants/shop/data/repository/ShopRepository.java create mode 100644 jws/epibazaar/shop/src/main/java/fr/epita/assistants/shop/domain/entity/ErwenEntity.java create mode 100644 jws/epibazaar/shop/src/main/java/fr/epita/assistants/shop/domain/entity/StartEntity.java create mode 100644 jws/epibazaar/shop/src/main/java/fr/epita/assistants/shop/domain/service/ErwenService.java create mode 100644 jws/epibazaar/shop/src/main/java/fr/epita/assistants/shop/domain/service/ShopService.java create mode 100644 jws/epibazaar/shop/src/main/java/fr/epita/assistants/shop/presentation/rest/HelloWorldResource.java create mode 100644 jws/epibazaar/shop/src/main/java/fr/epita/assistants/shop/presentation/rest/ShopResource.java create mode 100644 jws/epibazaar/shop/src/main/java/fr/epita/assistants/shop/presentation/subscriber/AggregateSubscriber.java create mode 100644 jws/epibazaar/shop/src/main/resources/application.properties create mode 100644 jws/epibazaar/shop/src/main/resources/db/migration/V1__Init.sql create mode 100644 jws/epibazaar/shop/src/main/resources/openapi.yaml create mode 100644 jws/epibazaar/viewer.tar.gz create mode 100644 jws/flake.nix create mode 100644 jws/kafka/pom.xml create mode 100644 jws/kafka/src/main/java/fr/epita/assistants/StringInfoProcessor.java create mode 100644 jws/kafka/src/main/java/fr/epita/assistants/StringInfoResource.java create mode 100644 jws/kafka/src/main/java/fr/epita/assistants/StringInfoSubscriber.java create mode 100644 jws/kafka/src/main/java/fr/epita/assistants/utils/StringInfo.java create mode 100644 jws/kafka/src/main/resources/application.properties create mode 100644 malloc/alignment/alignment.c create mode 100644 malloc/alignment/alignment.h create mode 100644 malloc/beware_overflow/beware_overflow.c create mode 100644 malloc/beware_overflow/beware_overflow.h create mode 100644 malloc/beware_overflow/main.c create mode 100644 malloc/block_allocator/allocator.c create mode 100644 malloc/block_allocator/allocator.h create mode 100644 malloc/block_allocator/main.c create mode 100644 malloc/block_allocator/utils.c create mode 100644 malloc/block_allocator/utils.h create mode 100644 malloc/malloc/Makefile create mode 100644 malloc/malloc/src/helpers.c create mode 100644 malloc/malloc/src/helpers.h create mode 100644 malloc/malloc/src/malloc.c create mode 100644 malloc/malloc/src/utils.c create mode 100644 malloc/malloc/src/utils.h create mode 100644 malloc/malloc/src/wrapper.c create mode 100644 malloc/malloc/src/wrapper.h create mode 100755 malloc/malloc/tests/corruptionproof create mode 100755 malloc/malloc/tests/memoryfootprint create mode 100755 malloc/malloc/tests/speed create mode 100755 malloc/malloc/tests/tests.sh create mode 100644 malloc/malloc/tests/unit.c create mode 100644 malloc/my_recycler/recycler.c create mode 100644 malloc/my_recycler/recycler.h create mode 100644 malloc/page_begin/main.c create mode 100644 malloc/page_begin/page_begin.c create mode 100644 malloc/page_begin/page_begin.h create mode 100644 myfind/ast_evaluation/Makefile create mode 100644 myfind/ast_evaluation/ast_evaluation.c create mode 100644 myfind/ast_evaluation/expression.h create mode 100644 myfind/ast_evaluation/main.c create mode 100644 myfind/ast_evaluation/memory.c create mode 100644 myfind/ast_evaluation/memory.h create mode 100644 myfind/ast_evaluation/parser.c create mode 100644 myfind/ast_evaluation/parser.h create mode 100644 myfind/display_perm/Makefile create mode 100644 myfind/display_perm/display_perm.c create mode 100644 myfind/group_belong/Makefile create mode 100644 myfind/group_belong/group_belong.c create mode 100644 myfind/is_newer/Makefile create mode 100644 myfind/is_newer/is_newer.c create mode 100644 myfind/myexecvp/Makefile create mode 100644 myfind/myexecvp/myexecvp.c create mode 100644 myfind/myfind/Makefile create mode 100644 myfind/myfind/src/ast_evaluation.c create mode 100644 myfind/myfind/src/lexer.c create mode 100644 myfind/myfind/src/lexer.h create mode 100644 myfind/myfind/src/myfind.c create mode 100644 myfind/myfind/src/myfind.h create mode 100644 myfind/myfind/src/print.c create mode 100644 myfind/myfind/src/shunting_yard.c create mode 100644 myfind/myfind/src/shunting_yard.h create mode 100644 myfind/myfind/src/stack/stack.c create mode 100644 myfind/myfind/src/stack/stack.h create mode 100644 myfind/myfind/src/ugtests.c create mode 100644 myfind/myfind/src/ugtests.h create mode 100755 myfind/myfind/tests/fun/tests.sh create mode 100644 myfind/myfind/tests/unit/eval.c create mode 100644 myfind/myfind/tests/unit/lexing.c create mode 100644 myfind/myfind/tests/unit/shunting.c create mode 100644 myfind/simple_ls/Makefile create mode 100644 myfind/simple_ls/simple_ls.c create mode 100644 myfind/simple_stat/Makefile create mode 100644 myfind/simple_stat/simple_stat.c create mode 100644 myfind/user_belong/Makefile create mode 100644 myfind/user_belong/user_belong.c create mode 100644 ping/.env create mode 100644 ping/.gitignore create mode 100644 ping/.gitlab-ci.yml create mode 100644 ping/README.md create mode 100644 ping/docker-compose.yml create mode 100644 ping/frontend/.dockerignore create mode 100644 ping/frontend/.gitignore create mode 100644 ping/frontend/.npmrc create mode 100644 ping/frontend/.prettierignore create mode 100644 ping/frontend/.prettierrc create mode 100644 ping/frontend/Dockerfile create mode 100644 ping/frontend/README.md create mode 100644 ping/frontend/eslint.config.js create mode 100644 ping/frontend/package-lock.json create mode 100644 ping/frontend/package.json create mode 100644 ping/frontend/src/app.css create mode 100644 ping/frontend/src/app.d.ts create mode 100644 ping/frontend/src/app.html create mode 100644 ping/frontend/src/lib/components/Avatar.svelte create mode 100644 ping/frontend/src/lib/components/Button.svelte create mode 100644 ping/frontend/src/lib/components/NavBar.svelte create mode 100644 ping/frontend/src/lib/components/NumberStatList.svelte create mode 100644 ping/frontend/src/lib/components/SideBar.svelte create mode 100644 ping/frontend/src/lib/components/SteppedLineChart.svelte create mode 100644 ping/frontend/src/lib/components/ToastList.svelte create mode 100644 ping/frontend/src/lib/components/UserItem.svelte create mode 100644 ping/frontend/src/lib/components/dashboard/RiskAnalysis.svelte create mode 100644 ping/frontend/src/lib/components/dashboard/StockGraph.svelte create mode 100644 ping/frontend/src/lib/components/dashboard/TrendingSymbols.svelte create mode 100644 ping/frontend/src/lib/components/dashboard/transactions/TransactionModal.svelte create mode 100644 ping/frontend/src/lib/components/input/StockSelector.svelte create mode 100644 ping/frontend/src/lib/components/input/UserSelector.svelte create mode 100644 ping/frontend/src/lib/pages.ts create mode 100644 ping/frontend/src/lib/stores/auth.ts create mode 100644 ping/frontend/src/lib/stores/toast.ts create mode 100644 ping/frontend/src/routes/+layout.svelte create mode 100644 ping/frontend/src/routes/+page.svelte create mode 100644 ping/frontend/src/routes/dashboard/+layout.svelte create mode 100644 ping/frontend/src/routes/dashboard/+page.svelte create mode 100644 ping/frontend/src/routes/dashboard/analyses/+page.svelte create mode 100644 ping/frontend/src/routes/dashboard/messages/+page.svelte create mode 100644 ping/frontend/src/routes/dashboard/models/+page.svelte create mode 100644 ping/frontend/src/routes/dashboard/personnel/+page.svelte create mode 100644 ping/frontend/src/routes/dashboard/settings/+page.svelte create mode 100644 ping/frontend/src/routes/dashboard/transactions/+page.svelte create mode 100644 ping/frontend/src/routes/login/+page.svelte create mode 100644 ping/frontend/src/routes/stocksapi/chart/+server.ts create mode 100644 ping/frontend/src/routes/stocksapi/insights/+server.ts create mode 100644 ping/frontend/src/routes/stocksapi/quote/+server.ts create mode 100644 ping/frontend/src/routes/stocksapi/search/+server.ts create mode 100644 ping/frontend/src/routes/stocksapi/trendingSymbols/+server.ts create mode 100644 ping/frontend/static/favicon.png create mode 100644 ping/frontend/static/icons/ICI create mode 100644 ping/frontend/static/icons/add-green.svg create mode 100644 ping/frontend/static/icons/bell.svg create mode 100644 ping/frontend/static/icons/closed-wallet.svg create mode 100644 ping/frontend/static/icons/coin.svg create mode 100644 ping/frontend/static/icons/credit-card.svg create mode 100644 ping/frontend/static/icons/dashboard.svg create mode 100644 ping/frontend/static/icons/debug.svg create mode 100644 ping/frontend/static/icons/edit-pen.svg create mode 100644 ping/frontend/static/icons/floppy-disk.svg create mode 100644 ping/frontend/static/icons/leaf.svg create mode 100644 ping/frontend/static/icons/magnifying_glass_icon.svg create mode 100644 ping/frontend/static/icons/money-bills.svg create mode 100644 ping/frontend/static/icons/msg.svg create mode 100644 ping/frontend/static/icons/people.svg create mode 100644 ping/frontend/static/icons/settings.svg create mode 100644 ping/frontend/static/icons/side-menu.svg create mode 100644 ping/frontend/static/icons/trash.svg create mode 100644 ping/frontend/static/icons/triangle-down.svg create mode 100644 ping/frontend/static/icons/triangle-up.svg create mode 100644 ping/frontend/static/icons/wallet.svg create mode 100644 ping/frontend/static/img/default-avatar.png create mode 100644 ping/frontend/static/img/favicon.svg create mode 100644 ping/frontend/static/img/header-bg.jpg create mode 100644 ping/frontend/static/img/logo.svg create mode 100644 ping/frontend/static/img/logoFull.svg create mode 100644 ping/frontend/svelte.config.js create mode 100644 ping/frontend/tsconfig.json create mode 100644 ping/frontend/vite.config.ts create mode 100644 ping/ping/.env create mode 100644 ping/ping/pom.xml create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/ExecFeatureRequest.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/LoginRequest.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/MoveRequest.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/NewProjectRequest.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/NewTransactionRequest.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/NewUserRequest.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/PathRequest.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UpdateProjectRequest.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UpdateTransactionRequest.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UpdateUserRequest.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UserProjectRequest.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/EcoScoreResponse.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/FSEntryResponse.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/LoginResponse.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/ProjectResponse.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/TransactionResponse.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/TransactionsResponse.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/UserResponse.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/UserSummaryResponse.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/converters/IConverter.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/TransactionCreationEntityConverter.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/TransactionUpdateEntityConverter.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/UserCreationEntityConverter.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/UserUpdateEntityConverter.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/ProjectResponseConverter.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/TransactionResponseConverter.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/UserResponseConverter.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/UserSummaryResponseConverter.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/data/model/ProjectModel.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/data/model/TransactionModel.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/data/model/UserModel.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/data/repository/ProjectRepository.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/data/repository/TransactionRepository.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/data/repository/UserRepository.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/TransactionCreationEntity.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/TransactionUpdateEntity.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/UserCreationEntity.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/UserUpdateEntity.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/feature/Feature.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/feature/FeatureExecution.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/domain/executor/FeatureDispatcher.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/domain/executor/FeatureExecutor.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/domain/executor/GitFeatureExecutor.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/FileSystemService.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/ProjectService.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/TransactionService.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/UserService.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/errors/ErrorsCode.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/errors/InvalidCommandException.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/errors/InvalidFeatureException.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/errors/PingServiceError.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/errors/UnreacheableCodeException.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/DebugResource.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/HelloWorldResource.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/TransactionResource.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/UtilsResource.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/fileSystemEndpoints/FileResource.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/fileSystemEndpoints/FolderResource.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/projectEndpoints/ProjectResource.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/userEndpoints/UserResource.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/utils/ErrorInfo.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/utils/HttpError.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/utils/IHttpError.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/utils/Logger.java create mode 100644 ping/ping/src/main/java/fr/epita/assistants/ping/utils/TokenFactory.java create mode 100644 ping/ping/src/main/resources/application.properties create mode 100644 ping/ping/src/main/resources/openapi.yml create mode 100644 ping/ping/src/main/resources/privateKey.pem create mode 100644 ping/ping/src/main/resources/publicKey.pem create mode 100644 ping/ping/src/test/java/fr/epita/assistants/ping/data/repositories/ProjectFakeRepository.java create mode 100644 ping/ping/src/test/java/fr/epita/assistants/ping/data/repositories/UserFakeRepository.java create mode 100644 ping/ping/src/test/java/fr/epita/assistants/ping/presentation/rest/TestHelloWorldResource.java create mode 100644 ping/ping/src/test/java/fr/epita/assistants/ping/presentation/rest/TestProjectResource.java create mode 100644 ping/ping/src/test/java/fr/epita/assistants/ping/presentation/rest/TestUserResource.java create mode 100644 ping/ping/src/test/resources/application.properties create mode 100644 tiger-compiler/.clang-format create mode 100644 tiger-compiler/.clang-tidy create mode 100644 tiger-compiler/.gitignore create mode 100644 tiger-compiler/.gitlab-ci.yml create mode 100644 tiger-compiler/.last-cl-gen create mode 100644 tiger-compiler/.pre-commit-config.yaml create mode 100644 tiger-compiler/AUTHORS.txt create mode 100644 tiger-compiler/ChangeLog create mode 100644 tiger-compiler/Makefile.am create mode 100644 tiger-compiler/NEWS.txt create mode 100644 tiger-compiler/README.md create mode 100644 tiger-compiler/README.txt create mode 100644 tiger-compiler/THANKS.txt create mode 100755 tiger-compiler/bootstrap create mode 100644 tiger-compiler/configure.ac create mode 100644 tiger-compiler/data/local.am create mode 100644 tiger-compiler/data/prelude.tih create mode 100644 tiger-compiler/doc/Doxyfile.in create mode 100644 tiger-compiler/doc/local.am create mode 100644 tiger-compiler/docker/Dockerfile create mode 100644 tiger-compiler/docker/Dockerfile-pytest create mode 100644 tiger-compiler/docker/Dockerfile-testing create mode 100644 tiger-compiler/flake.lock create mode 100644 tiger-compiler/flake.nix create mode 100644 tiger-compiler/lib/local.am create mode 100644 tiger-compiler/lib/misc/algorithm.hh create mode 100644 tiger-compiler/lib/misc/algorithm.hxx create mode 100644 tiger-compiler/lib/misc/concepts.hh create mode 100644 tiger-compiler/lib/misc/contract.cc create mode 100644 tiger-compiler/lib/misc/contract.hh create mode 100644 tiger-compiler/lib/misc/contract.hxx create mode 100644 tiger-compiler/lib/misc/deref.cc create mode 100644 tiger-compiler/lib/misc/deref.hh create mode 100644 tiger-compiler/lib/misc/deref.hxx create mode 100644 tiger-compiler/lib/misc/endomap.hh create mode 100644 tiger-compiler/lib/misc/endomap.hxx create mode 100644 tiger-compiler/lib/misc/error.cc create mode 100644 tiger-compiler/lib/misc/error.hh create mode 100644 tiger-compiler/lib/misc/error.hxx create mode 100644 tiger-compiler/lib/misc/escape.cc create mode 100644 tiger-compiler/lib/misc/escape.hh create mode 100644 tiger-compiler/lib/misc/escape.hxx create mode 100644 tiger-compiler/lib/misc/file-library.cc create mode 100644 tiger-compiler/lib/misc/file-library.hh create mode 100644 tiger-compiler/lib/misc/file-library.hxx create mode 100644 tiger-compiler/lib/misc/fwd.hh create mode 100644 tiger-compiler/lib/misc/graph.hh create mode 100644 tiger-compiler/lib/misc/graph.hxx create mode 100644 tiger-compiler/lib/misc/indent.cc create mode 100644 tiger-compiler/lib/misc/indent.hh create mode 100644 tiger-compiler/lib/misc/lambda-visitor.hh create mode 100644 tiger-compiler/lib/misc/libmisc.hh create mode 100644 tiger-compiler/lib/misc/list.hh create mode 100644 tiger-compiler/lib/misc/list.hxx create mode 100644 tiger-compiler/lib/misc/local.am create mode 100644 tiger-compiler/lib/misc/map.hh create mode 100644 tiger-compiler/lib/misc/map.hxx create mode 100644 tiger-compiler/lib/misc/ref.hh create mode 100644 tiger-compiler/lib/misc/ref.hxx create mode 100644 tiger-compiler/lib/misc/scoped-map.hh create mode 100644 tiger-compiler/lib/misc/scoped-map.hxx create mode 100644 tiger-compiler/lib/misc/select-const.hh create mode 100644 tiger-compiler/lib/misc/separator.hh create mode 100644 tiger-compiler/lib/misc/separator.hxx create mode 100644 tiger-compiler/lib/misc/set.hh create mode 100644 tiger-compiler/lib/misc/set.hxx create mode 100644 tiger-compiler/lib/misc/singleton.hh create mode 100644 tiger-compiler/lib/misc/symbol.cc create mode 100644 tiger-compiler/lib/misc/symbol.hh create mode 100644 tiger-compiler/lib/misc/symbol.hxx create mode 100644 tiger-compiler/lib/misc/timer.cc create mode 100644 tiger-compiler/lib/misc/timer.hh create mode 100644 tiger-compiler/lib/misc/timer.hxx create mode 100644 tiger-compiler/lib/misc/unique.hh create mode 100644 tiger-compiler/lib/misc/unique.hxx create mode 100644 tiger-compiler/lib/misc/variant.hh create mode 100644 tiger-compiler/lib/misc/variant.hxx create mode 100644 tiger-compiler/lib/misc/vector.hh create mode 100644 tiger-compiler/lib/misc/vector.hxx create mode 100644 tiger-compiler/lib/misc/xalloc.hh create mode 100644 tiger-compiler/lib/misc/xalloc.hxx create mode 100644 tiger-compiler/src/assert/binder.cc create mode 100644 tiger-compiler/src/assert/binder.hh create mode 100644 tiger-compiler/src/assert/desugar-visitor.cc create mode 100644 tiger-compiler/src/assert/desugar-visitor.hh create mode 100644 tiger-compiler/src/assert/desugar-visitor.hxx create mode 100644 tiger-compiler/src/assert/libassert.cc create mode 100644 tiger-compiler/src/assert/libassert.hh create mode 100644 tiger-compiler/src/assert/libassert.hxx create mode 100644 tiger-compiler/src/assert/local.am create mode 100644 tiger-compiler/src/assert/renamer.cc create mode 100644 tiger-compiler/src/assert/renamer.hh create mode 100644 tiger-compiler/src/assert/tasks.cc create mode 100644 tiger-compiler/src/assert/tasks.hh create mode 100644 tiger-compiler/src/assert/type-checker.cc create mode 100644 tiger-compiler/src/assert/type-checker.hh create mode 100644 tiger-compiler/src/ast/README.txt create mode 100644 tiger-compiler/src/ast/all.hh create mode 100644 tiger-compiler/src/ast/array-exp.cc create mode 100644 tiger-compiler/src/ast/array-exp.hh create mode 100644 tiger-compiler/src/ast/array-exp.hxx create mode 100644 tiger-compiler/src/ast/array-ty.cc create mode 100644 tiger-compiler/src/ast/array-ty.hh create mode 100644 tiger-compiler/src/ast/array-ty.hxx create mode 100644 tiger-compiler/src/ast/assert-exp.cc create mode 100644 tiger-compiler/src/ast/assert-exp.hh create mode 100644 tiger-compiler/src/ast/assert-exp.hxx create mode 100644 tiger-compiler/src/ast/assert-visitor.hh create mode 100644 tiger-compiler/src/ast/assert-visitor.hxx create mode 100644 tiger-compiler/src/ast/assign-exp.cc create mode 100644 tiger-compiler/src/ast/assign-exp.hh create mode 100644 tiger-compiler/src/ast/assign-exp.hxx create mode 100644 tiger-compiler/src/ast/ast-nodes.mk create mode 100644 tiger-compiler/src/ast/ast.cc create mode 100644 tiger-compiler/src/ast/ast.hh create mode 100644 tiger-compiler/src/ast/ast.hxx create mode 100644 tiger-compiler/src/ast/break-exp.cc create mode 100644 tiger-compiler/src/ast/break-exp.hh create mode 100644 tiger-compiler/src/ast/break-exp.hxx create mode 100644 tiger-compiler/src/ast/call-exp.cc create mode 100644 tiger-compiler/src/ast/call-exp.hh create mode 100644 tiger-compiler/src/ast/call-exp.hxx create mode 100644 tiger-compiler/src/ast/cast-exp.cc create mode 100644 tiger-compiler/src/ast/cast-exp.hh create mode 100644 tiger-compiler/src/ast/cast-exp.hxx create mode 100644 tiger-compiler/src/ast/chunk-interface.hh create mode 100644 tiger-compiler/src/ast/chunk-interface.hxx create mode 100644 tiger-compiler/src/ast/chunk-list.cc create mode 100644 tiger-compiler/src/ast/chunk-list.hh create mode 100644 tiger-compiler/src/ast/chunk-list.hxx create mode 100644 tiger-compiler/src/ast/chunk.hh create mode 100644 tiger-compiler/src/ast/chunk.hxx create mode 100644 tiger-compiler/src/ast/class-ty.cc create mode 100644 tiger-compiler/src/ast/class-ty.hh create mode 100644 tiger-compiler/src/ast/class-ty.hxx create mode 100644 tiger-compiler/src/ast/dec.cc create mode 100644 tiger-compiler/src/ast/dec.hh create mode 100644 tiger-compiler/src/ast/dec.hxx create mode 100644 tiger-compiler/src/ast/default-visitor.hh create mode 100644 tiger-compiler/src/ast/default-visitor.hxx create mode 100644 tiger-compiler/src/ast/dumper-dot.cc create mode 100644 tiger-compiler/src/ast/dumper-dot.hh create mode 100644 tiger-compiler/src/ast/dumper-dot.hxx create mode 100644 tiger-compiler/src/ast/escapable.cc create mode 100644 tiger-compiler/src/ast/escapable.hh create mode 100644 tiger-compiler/src/ast/escapable.hxx create mode 100644 tiger-compiler/src/ast/exp.cc create mode 100644 tiger-compiler/src/ast/exp.hh create mode 100644 tiger-compiler/src/ast/exp.hxx create mode 100644 tiger-compiler/src/ast/field-init.cc create mode 100644 tiger-compiler/src/ast/field-init.hh create mode 100644 tiger-compiler/src/ast/field-init.hxx create mode 100644 tiger-compiler/src/ast/field-var.cc create mode 100644 tiger-compiler/src/ast/field-var.hh create mode 100644 tiger-compiler/src/ast/field-var.hxx create mode 100644 tiger-compiler/src/ast/field.cc create mode 100644 tiger-compiler/src/ast/field.hh create mode 100644 tiger-compiler/src/ast/field.hxx create mode 100644 tiger-compiler/src/ast/for-exp.cc create mode 100644 tiger-compiler/src/ast/for-exp.hh create mode 100644 tiger-compiler/src/ast/for-exp.hxx create mode 100644 tiger-compiler/src/ast/function-dec.cc create mode 100644 tiger-compiler/src/ast/function-dec.hh create mode 100644 tiger-compiler/src/ast/function-dec.hxx create mode 100644 tiger-compiler/src/ast/fwd.hh create mode 100644 tiger-compiler/src/ast/if-exp.cc create mode 100644 tiger-compiler/src/ast/if-exp.hh create mode 100644 tiger-compiler/src/ast/if-exp.hxx create mode 100644 tiger-compiler/src/ast/int-exp.cc create mode 100644 tiger-compiler/src/ast/int-exp.hh create mode 100644 tiger-compiler/src/ast/int-exp.hxx create mode 100644 tiger-compiler/src/ast/let-exp.cc create mode 100644 tiger-compiler/src/ast/let-exp.hh create mode 100644 tiger-compiler/src/ast/let-exp.hxx create mode 100644 tiger-compiler/src/ast/libast.cc create mode 100644 tiger-compiler/src/ast/libast.hh create mode 100644 tiger-compiler/src/ast/local.am create mode 100644 tiger-compiler/src/ast/location.hh create mode 100644 tiger-compiler/src/ast/method-call-exp.cc create mode 100644 tiger-compiler/src/ast/method-call-exp.hh create mode 100644 tiger-compiler/src/ast/method-call-exp.hxx create mode 100644 tiger-compiler/src/ast/method-dec.cc create mode 100644 tiger-compiler/src/ast/method-dec.hh create mode 100644 tiger-compiler/src/ast/method-dec.hxx create mode 100644 tiger-compiler/src/ast/name-ty.cc create mode 100644 tiger-compiler/src/ast/name-ty.hh create mode 100644 tiger-compiler/src/ast/name-ty.hxx create mode 100644 tiger-compiler/src/ast/nil-exp.cc create mode 100644 tiger-compiler/src/ast/nil-exp.hh create mode 100644 tiger-compiler/src/ast/nil-exp.hxx create mode 100644 tiger-compiler/src/ast/non-assert-visitor.hh create mode 100644 tiger-compiler/src/ast/non-assert-visitor.hxx create mode 100644 tiger-compiler/src/ast/non-object-visitor.hh create mode 100644 tiger-compiler/src/ast/non-object-visitor.hxx create mode 100644 tiger-compiler/src/ast/object-exp.cc create mode 100644 tiger-compiler/src/ast/object-exp.hh create mode 100644 tiger-compiler/src/ast/object-exp.hxx create mode 100644 tiger-compiler/src/ast/object-visitor.hh create mode 100644 tiger-compiler/src/ast/object-visitor.hxx create mode 100644 tiger-compiler/src/ast/op-exp.cc create mode 100644 tiger-compiler/src/ast/op-exp.hh create mode 100644 tiger-compiler/src/ast/op-exp.hxx create mode 100644 tiger-compiler/src/ast/pretty-printer.cc create mode 100644 tiger-compiler/src/ast/pretty-printer.hh create mode 100644 tiger-compiler/src/ast/record-exp.cc create mode 100644 tiger-compiler/src/ast/record-exp.hh create mode 100644 tiger-compiler/src/ast/record-exp.hxx create mode 100644 tiger-compiler/src/ast/record-ty.cc create mode 100644 tiger-compiler/src/ast/record-ty.hh create mode 100644 tiger-compiler/src/ast/record-ty.hxx create mode 100644 tiger-compiler/src/ast/seq-exp.cc create mode 100644 tiger-compiler/src/ast/seq-exp.hh create mode 100644 tiger-compiler/src/ast/seq-exp.hxx create mode 100644 tiger-compiler/src/ast/simple-var.cc create mode 100644 tiger-compiler/src/ast/simple-var.hh create mode 100644 tiger-compiler/src/ast/simple-var.hxx create mode 100644 tiger-compiler/src/ast/string-exp.cc create mode 100644 tiger-compiler/src/ast/string-exp.hh create mode 100644 tiger-compiler/src/ast/string-exp.hxx create mode 100644 tiger-compiler/src/ast/subscript-var.cc create mode 100644 tiger-compiler/src/ast/subscript-var.hh create mode 100644 tiger-compiler/src/ast/subscript-var.hxx create mode 100644 tiger-compiler/src/ast/tasks.cc create mode 100644 tiger-compiler/src/ast/tasks.hh create mode 100644 tiger-compiler/src/ast/ty.cc create mode 100644 tiger-compiler/src/ast/ty.hh create mode 100644 tiger-compiler/src/ast/ty.hxx create mode 100644 tiger-compiler/src/ast/typable.cc create mode 100644 tiger-compiler/src/ast/typable.hh create mode 100644 tiger-compiler/src/ast/typable.hxx create mode 100644 tiger-compiler/src/ast/type-constructor.cc create mode 100644 tiger-compiler/src/ast/type-constructor.hh create mode 100644 tiger-compiler/src/ast/type-constructor.hxx create mode 100644 tiger-compiler/src/ast/type-dec.cc create mode 100644 tiger-compiler/src/ast/type-dec.hh create mode 100644 tiger-compiler/src/ast/type-dec.hxx create mode 100644 tiger-compiler/src/ast/var-dec.cc create mode 100644 tiger-compiler/src/ast/var-dec.hh create mode 100644 tiger-compiler/src/ast/var-dec.hxx create mode 100644 tiger-compiler/src/ast/var.cc create mode 100644 tiger-compiler/src/ast/var.hh create mode 100644 tiger-compiler/src/ast/var.hxx create mode 100644 tiger-compiler/src/ast/visitor.hh create mode 100644 tiger-compiler/src/ast/visitor.hxx create mode 100644 tiger-compiler/src/ast/while-exp.cc create mode 100644 tiger-compiler/src/ast/while-exp.hh create mode 100644 tiger-compiler/src/ast/while-exp.hxx create mode 100644 tiger-compiler/src/astclone/cloner.cc create mode 100644 tiger-compiler/src/astclone/cloner.hh create mode 100644 tiger-compiler/src/astclone/cloner.hxx create mode 100644 tiger-compiler/src/astclone/libastclone.hh create mode 100644 tiger-compiler/src/astclone/libastclone.hxx create mode 100644 tiger-compiler/src/astclone/local.am create mode 100644 tiger-compiler/src/astclone/tasks.cc create mode 100644 tiger-compiler/src/astclone/tasks.hh create mode 100644 tiger-compiler/src/bind/binder.cc create mode 100644 tiger-compiler/src/bind/binder.hh create mode 100644 tiger-compiler/src/bind/binder.hxx create mode 100644 tiger-compiler/src/bind/libbind.cc create mode 100644 tiger-compiler/src/bind/libbind.hh create mode 100644 tiger-compiler/src/bind/local.am create mode 100644 tiger-compiler/src/bind/renamer.cc create mode 100644 tiger-compiler/src/bind/renamer.hh create mode 100644 tiger-compiler/src/bind/renamer.hxx create mode 100644 tiger-compiler/src/bind/tasks.cc create mode 100644 tiger-compiler/src/bind/tasks.hh create mode 100644 tiger-compiler/src/callgraph/call-graph-visitor.cc create mode 100644 tiger-compiler/src/callgraph/call-graph-visitor.hh create mode 100644 tiger-compiler/src/callgraph/fundec-graph.hh create mode 100644 tiger-compiler/src/callgraph/fundec-graph.hxx create mode 100644 tiger-compiler/src/callgraph/libcallgraph.cc create mode 100644 tiger-compiler/src/callgraph/libcallgraph.hh create mode 100644 tiger-compiler/src/callgraph/local.am create mode 100644 tiger-compiler/src/callgraph/parent-graph-visitor.cc create mode 100644 tiger-compiler/src/callgraph/parent-graph-visitor.hh create mode 100644 tiger-compiler/src/callgraph/tasks.cc create mode 100644 tiger-compiler/src/callgraph/tasks.hh create mode 100644 tiger-compiler/src/combine/binder.cc create mode 100644 tiger-compiler/src/combine/binder.hh create mode 100644 tiger-compiler/src/combine/libcombine.cc create mode 100644 tiger-compiler/src/combine/libcombine.hh create mode 100644 tiger-compiler/src/combine/local.am create mode 100644 tiger-compiler/src/combine/tasks.cc create mode 100644 tiger-compiler/src/combine/tasks.hh create mode 100644 tiger-compiler/src/combine/type-checker.cc create mode 100644 tiger-compiler/src/combine/type-checker.hh create mode 100644 tiger-compiler/src/common.cc create mode 100644 tiger-compiler/src/common.hh create mode 100644 tiger-compiler/src/desugar/bounds-checking-visitor.cc create mode 100644 tiger-compiler/src/desugar/bounds-checking-visitor.hh create mode 100644 tiger-compiler/src/desugar/desugar-visitor.cc create mode 100644 tiger-compiler/src/desugar/desugar-visitor.hh create mode 100644 tiger-compiler/src/desugar/libdesugar.hh create mode 100644 tiger-compiler/src/desugar/libdesugar.hxx create mode 100644 tiger-compiler/src/desugar/local.am create mode 100644 tiger-compiler/src/desugar/tasks.cc create mode 100644 tiger-compiler/src/desugar/tasks.hh create mode 100644 tiger-compiler/src/doc.hh create mode 100644 tiger-compiler/src/escapes/escapes-visitor.cc create mode 100644 tiger-compiler/src/escapes/escapes-visitor.hh create mode 100644 tiger-compiler/src/escapes/libescapes.cc create mode 100644 tiger-compiler/src/escapes/libescapes.hh create mode 100644 tiger-compiler/src/escapes/local.am create mode 100644 tiger-compiler/src/escapes/tasks.cc create mode 100644 tiger-compiler/src/escapes/tasks.hh create mode 100644 tiger-compiler/src/inlining/inliner.cc create mode 100644 tiger-compiler/src/inlining/inliner.hh create mode 100644 tiger-compiler/src/inlining/libinlining.cc create mode 100644 tiger-compiler/src/inlining/libinlining.hh create mode 100644 tiger-compiler/src/inlining/local.am create mode 100644 tiger-compiler/src/inlining/pruner.cc create mode 100644 tiger-compiler/src/inlining/pruner.hh create mode 100644 tiger-compiler/src/inlining/tasks.cc create mode 100644 tiger-compiler/src/inlining/tasks.hh create mode 100644 tiger-compiler/src/llvmtranslate/escapes-collector.cc create mode 100644 tiger-compiler/src/llvmtranslate/escapes-collector.hh create mode 100644 tiger-compiler/src/llvmtranslate/fwd.hh create mode 100755 tiger-compiler/src/llvmtranslate/generate-runtime.sh create mode 100644 tiger-compiler/src/llvmtranslate/libllvmtranslate.cc create mode 100644 tiger-compiler/src/llvmtranslate/libllvmtranslate.hh create mode 100644 tiger-compiler/src/llvmtranslate/llvm-type-visitor.cc create mode 100644 tiger-compiler/src/llvmtranslate/llvm-type-visitor.hh create mode 100644 tiger-compiler/src/llvmtranslate/local.am create mode 100644 tiger-compiler/src/llvmtranslate/tasks.cc create mode 100644 tiger-compiler/src/llvmtranslate/tasks.hh create mode 100644 tiger-compiler/src/llvmtranslate/tiger-runtime.c create mode 100644 tiger-compiler/src/llvmtranslate/translator.cc create mode 100644 tiger-compiler/src/llvmtranslate/translator.hh create mode 100644 tiger-compiler/src/llvmtranslate/translator.hxx create mode 100644 tiger-compiler/src/local.am create mode 100644 tiger-compiler/src/object/binder.cc create mode 100644 tiger-compiler/src/object/binder.hh create mode 100644 tiger-compiler/src/object/desugar-visitor.cc create mode 100644 tiger-compiler/src/object/desugar-visitor.hh create mode 100644 tiger-compiler/src/object/fwd.hh create mode 100644 tiger-compiler/src/object/libobject.cc create mode 100644 tiger-compiler/src/object/libobject.hh create mode 100644 tiger-compiler/src/object/libobject.hxx create mode 100644 tiger-compiler/src/object/local.am create mode 100644 tiger-compiler/src/object/renamer.cc create mode 100644 tiger-compiler/src/object/renamer.hh create mode 100644 tiger-compiler/src/object/tasks.cc create mode 100644 tiger-compiler/src/object/tasks.hh create mode 100644 tiger-compiler/src/object/type-checker.cc create mode 100644 tiger-compiler/src/object/type-checker.hh create mode 100644 tiger-compiler/src/overload/binder.cc create mode 100644 tiger-compiler/src/overload/binder.hh create mode 100644 tiger-compiler/src/overload/liboverload.cc create mode 100644 tiger-compiler/src/overload/liboverload.hh create mode 100644 tiger-compiler/src/overload/local.am create mode 100644 tiger-compiler/src/overload/over-table.hh create mode 100644 tiger-compiler/src/overload/over-table.hxx create mode 100644 tiger-compiler/src/overload/tasks.cc create mode 100644 tiger-compiler/src/overload/tasks.hh create mode 100644 tiger-compiler/src/overload/type-checker.cc create mode 100644 tiger-compiler/src/overload/type-checker.hh create mode 100644 tiger-compiler/src/parse/fwd.hh create mode 100755 tiger-compiler/src/parse/generate-prelude.sh create mode 100644 tiger-compiler/src/parse/libparse.cc create mode 100644 tiger-compiler/src/parse/libparse.hh create mode 100644 tiger-compiler/src/parse/local.am create mode 100644 tiger-compiler/src/parse/metavar-map.hh create mode 100644 tiger-compiler/src/parse/metavar-map.hxx create mode 100644 tiger-compiler/src/parse/tasks.cc create mode 100644 tiger-compiler/src/parse/tasks.hh create mode 100644 tiger-compiler/src/parse/tiger-driver.cc create mode 100644 tiger-compiler/src/parse/tiger-driver.hh create mode 100644 tiger-compiler/src/parse/tiger-factory.hh create mode 100644 tiger-compiler/src/parse/tiger-factory.hxx create mode 100644 tiger-compiler/src/parse/tweast.cc create mode 100644 tiger-compiler/src/parse/tweast.hh create mode 100644 tiger-compiler/src/parse/tweast.hxx create mode 100644 tiger-compiler/src/task/argument-task.cc create mode 100644 tiger-compiler/src/task/argument-task.hh create mode 100644 tiger-compiler/src/task/boolean-task.cc create mode 100644 tiger-compiler/src/task/boolean-task.hh create mode 100644 tiger-compiler/src/task/disjunctive-task.cc create mode 100644 tiger-compiler/src/task/disjunctive-task.hh create mode 100644 tiger-compiler/src/task/function-task.cc create mode 100644 tiger-compiler/src/task/function-task.hh create mode 100644 tiger-compiler/src/task/fwd.hh create mode 100644 tiger-compiler/src/task/int-task.cc create mode 100644 tiger-compiler/src/task/int-task.hh create mode 100644 tiger-compiler/src/task/libtask.hh create mode 100644 tiger-compiler/src/task/local.am create mode 100644 tiger-compiler/src/task/multiple-string-task.cc create mode 100644 tiger-compiler/src/task/multiple-string-task.hh create mode 100644 tiger-compiler/src/task/simple-task.cc create mode 100644 tiger-compiler/src/task/simple-task.hh create mode 100644 tiger-compiler/src/task/string-task.cc create mode 100644 tiger-compiler/src/task/string-task.hh create mode 100644 tiger-compiler/src/task/task-register.cc create mode 100644 tiger-compiler/src/task/task-register.hh create mode 100644 tiger-compiler/src/task/task-register.hxx create mode 100644 tiger-compiler/src/task/task.cc create mode 100644 tiger-compiler/src/task/task.hh create mode 100644 tiger-compiler/src/task/task.hxx create mode 100644 tiger-compiler/src/task/tasks.cc create mode 100644 tiger-compiler/src/task/tasks.hh create mode 100644 tiger-compiler/src/tc.cc create mode 100644 tiger-compiler/src/testsuite/libtestsuite.cc create mode 100644 tiger-compiler/src/testsuite/libtestsuite.hh create mode 100644 tiger-compiler/src/testsuite/local.am create mode 100644 tiger-compiler/src/testsuite/tasks.cc create mode 100644 tiger-compiler/src/testsuite/tasks.hh create mode 100644 tiger-compiler/src/testsuite/tests-collector.cc create mode 100644 tiger-compiler/src/testsuite/tests-collector.hh create mode 100644 tiger-compiler/src/testsuite/tests-collector.hxx create mode 100644 tiger-compiler/src/testsuite/testsuite-generator.cc create mode 100644 tiger-compiler/src/testsuite/testsuite-generator.hh create mode 100644 tiger-compiler/src/type/README.txt create mode 100644 tiger-compiler/src/type/array.cc create mode 100644 tiger-compiler/src/type/array.hh create mode 100644 tiger-compiler/src/type/array.hxx create mode 100644 tiger-compiler/src/type/attribute.cc create mode 100644 tiger-compiler/src/type/attribute.hh create mode 100644 tiger-compiler/src/type/attribute.hxx create mode 100644 tiger-compiler/src/type/builtin-types.cc create mode 100644 tiger-compiler/src/type/builtin-types.hh create mode 100644 tiger-compiler/src/type/class.cc create mode 100644 tiger-compiler/src/type/class.hh create mode 100644 tiger-compiler/src/type/class.hxx create mode 100644 tiger-compiler/src/type/default-visitor.hh create mode 100644 tiger-compiler/src/type/default-visitor.hxx create mode 100644 tiger-compiler/src/type/field.cc create mode 100644 tiger-compiler/src/type/field.hh create mode 100644 tiger-compiler/src/type/field.hxx create mode 100644 tiger-compiler/src/type/function.cc create mode 100644 tiger-compiler/src/type/function.hh create mode 100644 tiger-compiler/src/type/function.hxx create mode 100644 tiger-compiler/src/type/fwd.hh create mode 100644 tiger-compiler/src/type/libtype.cc create mode 100644 tiger-compiler/src/type/libtype.hh create mode 100644 tiger-compiler/src/type/local.am create mode 100644 tiger-compiler/src/type/method.cc create mode 100644 tiger-compiler/src/type/method.hh create mode 100644 tiger-compiler/src/type/method.hxx create mode 100644 tiger-compiler/src/type/named.cc create mode 100644 tiger-compiler/src/type/named.hh create mode 100644 tiger-compiler/src/type/named.hxx create mode 100644 tiger-compiler/src/type/nil.cc create mode 100644 tiger-compiler/src/type/nil.hh create mode 100644 tiger-compiler/src/type/pretty-printer.cc create mode 100644 tiger-compiler/src/type/pretty-printer.hh create mode 100644 tiger-compiler/src/type/record.cc create mode 100644 tiger-compiler/src/type/record.hh create mode 100644 tiger-compiler/src/type/record.hxx create mode 100644 tiger-compiler/src/type/tasks.cc create mode 100644 tiger-compiler/src/type/tasks.hh create mode 100644 tiger-compiler/src/type/type-checker.cc create mode 100644 tiger-compiler/src/type/type-checker.hh create mode 100644 tiger-compiler/src/type/type-checker.hxx create mode 100644 tiger-compiler/src/type/type.cc create mode 100644 tiger-compiler/src/type/type.hh create mode 100644 tiger-compiler/src/type/type.hxx create mode 100644 tiger-compiler/src/type/types.hh create mode 100644 tiger-compiler/src/type/visitor.hh create mode 100644 tiger-compiler/src/type/visitor.hxx create mode 100644 tiger-compiler/src/version.cc.in create mode 100644 tiger-compiler/src/version.hh create mode 100644 tiger-compiler/tcsh/Makefile.am create mode 100644 tiger-compiler/tcsh/README-deps.txt create mode 100755 tiger-compiler/tcsh/generate-swig-mk create mode 100644 tiger-compiler/tcsh/python/Makefile.am create mode 100644 tiger-compiler/tcsh/python/tc.py create mode 100755 tiger-compiler/tcsh/python/tcsh-hir.test create mode 100755 tiger-compiler/tcsh/python/tcsh-llvm.test create mode 100644 tiger-compiler/tcsh/python/tests/ast.ipynb create mode 100644 tiger-compiler/tcsh/python/tests/astclone.ipynb create mode 100644 tiger-compiler/tcsh/python/tests/bind.ipynb create mode 100644 tiger-compiler/tcsh/python/tests/combine.ipynb create mode 100644 tiger-compiler/tcsh/python/tests/common.ipynb create mode 100644 tiger-compiler/tcsh/python/tests/desugar.ipynb create mode 100644 tiger-compiler/tcsh/python/tests/escapes.ipynb create mode 100755 tiger-compiler/tcsh/python/tests/ipynbtest.py create mode 100644 tiger-compiler/tcsh/python/tests/llvmtranslate.ipynb create mode 100644 tiger-compiler/tcsh/python/tests/misc.ipynb create mode 100644 tiger-compiler/tcsh/python/tests/object.ipynb create mode 100644 tiger-compiler/tcsh/python/tests/overload.ipynb create mode 100644 tiger-compiler/tcsh/python/tests/parse.ipynb create mode 100644 tiger-compiler/tcsh/python/tests/tc.ipynb create mode 100644 tiger-compiler/tcsh/python/tests/ti.ipynb create mode 100644 tiger-compiler/tcsh/python/tests/type.ipynb create mode 100755 tiger-compiler/tcsh/python/ti.py create mode 100755 tiger-compiler/tcsh/run.in create mode 100644 tiger-compiler/tcsh/run.mk create mode 100644 tiger-compiler/tcsh/src/helper.hh create mode 100644 tiger-compiler/tcsh/src/swig_real_type.hh create mode 100644 tiger-compiler/tcsh/src/tiger_ast.i create mode 100644 tiger-compiler/tcsh/src/tiger_astclone.i create mode 100644 tiger-compiler/tcsh/src/tiger_bind.i create mode 100644 tiger-compiler/tcsh/src/tiger_callgraph.i create mode 100644 tiger-compiler/tcsh/src/tiger_combine.i create mode 100644 tiger-compiler/tcsh/src/tiger_common.i create mode 100644 tiger-compiler/tcsh/src/tiger_desugar.i create mode 100644 tiger-compiler/tcsh/src/tiger_escapes.i create mode 100644 tiger-compiler/tcsh/src/tiger_llvmtranslate.i create mode 100644 tiger-compiler/tcsh/src/tiger_misc.i create mode 100644 tiger-compiler/tcsh/src/tiger_object.i create mode 100644 tiger-compiler/tcsh/src/tiger_overload.i create mode 100644 tiger-compiler/tcsh/src/tiger_parse.i create mode 100644 tiger-compiler/tcsh/src/tiger_type.i create mode 100644 tiger-compiler/tests/Makefile.am create mode 100644 tiger-compiler/tests/__init__.py create mode 100644 tiger-compiler/tests/assert/bind/assert-bad-let.tig create mode 100644 tiger-compiler/tests/assert/bind/assert-nonexistant-attribute.tig create mode 100644 tiger-compiler/tests/assert/bind/assert-nonexistant-function.tig create mode 100644 tiger-compiler/tests/assert/good/assert-1.tig create mode 100644 tiger-compiler/tests/assert/good/assert-call.tig create mode 100644 tiger-compiler/tests/assert/good/assert-escaped.tig create mode 100644 tiger-compiler/tests/assert/good/assert-false.tig create mode 100644 tiger-compiler/tests/assert/good/assert-let.tig create mode 100644 tiger-compiler/tests/assert/good/assert-seq-let.tig create mode 100644 tiger-compiler/tests/assert/good/assert-seq_ints.tig create mode 100644 tiger-compiler/tests/assert/good/assert-strcmp.tig create mode 100644 tiger-compiler/tests/assert/good/assert-true.tig create mode 100644 tiger-compiler/tests/assert/good/assert-var.tig create mode 100644 tiger-compiler/tests/assert/good/simple_unit_test.tig create mode 100644 tiger-compiler/tests/assert/parse/assert-function-dec.tig create mode 100644 tiger-compiler/tests/assert/parse/assert-seq-function-dec.tig create mode 100644 tiger-compiler/tests/assert/type/assert-empty-seq.tig create mode 100644 tiger-compiler/tests/assert/type/assert-print.tig create mode 100644 tiger-compiler/tests/assert/type/assert-string.tig create mode 100644 tiger-compiler/tests/bind/break-outside-loop.tig create mode 100644 tiger-compiler/tests/bind/compare_to_break.tig create mode 100644 tiger-compiler/tests/bind/invalid-function-redefinition-1.tig create mode 100644 tiger-compiler/tests/bind/invalid-type-redefinition.tig create mode 100644 tiger-compiler/tests/bind/scoped_main.tig create mode 100644 tiger-compiler/tests/bind/set_to_break.tig create mode 100644 tiger-compiler/tests/bind/simple_sequence_int.tig create mode 100644 tiger-compiler/tests/bind/simple_sequence_void.tig create mode 100644 tiger-compiler/tests/bind/test17.tig create mode 100644 tiger-compiler/tests/bind/test18.tig create mode 100644 tiger-compiler/tests/bind/test19.tig create mode 100644 tiger-compiler/tests/bind/tome.tig create mode 100644 tiger-compiler/tests/bind/undeclared-variable.tig create mode 100644 tiger-compiler/tests/bind/unknown-field-type.tig create mode 100644 tiger-compiler/tests/bind/unknown-record.tig create mode 100644 tiger-compiler/tests/desugar/breaks-in-embedded-loops.tig create mode 100644 tiger-compiler/tests/desugar/desugar_basic_strcmp.tig create mode 100644 tiger-compiler/tests/desugar/desugar_eq_strcmp.tig create mode 100644 tiger-compiler/tests/desugar/desugar_simple_for.tig create mode 100644 tiger-compiler/tests/desugar/test64.tig create mode 100644 tiger-compiler/tests/desugar/test64.tih create mode 100644 tiger-compiler/tests/good/array-of-alias.tig create mode 100644 tiger-compiler/tests/good/array-of-nil.tig create mode 100644 tiger-compiler/tests/good/array.tig create mode 100644 tiger-compiler/tests/good/break-in-while.tig create mode 100644 tiger-compiler/tests/good/breaks-in-embedded-loops.tig create mode 100644 tiger-compiler/tests/good/comments-nested.tig create mode 100644 tiger-compiler/tests/good/compare-record-and-nil.tig create mode 100644 tiger-compiler/tests/good/compare_to_void.tig create mode 100644 tiger-compiler/tests/good/escapes_series.tig create mode 100644 tiger-compiler/tests/good/escapes_various.tig create mode 100644 tiger-compiler/tests/good/fact.tig create mode 100644 tiger-compiler/tests/good/for-in-let.tig create mode 100644 tiger-compiler/tests/good/fun-vs-var.tig create mode 100644 tiger-compiler/tests/good/if.tig create mode 100644 tiger-compiler/tests/good/local-vs-global-type.tig create mode 100644 tiger-compiler/tests/good/managing_values.tig create mode 100644 tiger-compiler/tests/good/me.tig create mode 100644 tiger-compiler/tests/good/meme.tig create mode 100644 tiger-compiler/tests/good/merge.tig create mode 100644 tiger-compiler/tests/good/mutually-recursive-functions.tig create mode 100644 tiger-compiler/tests/good/mutually-recursive-procedures.tig create mode 100644 tiger-compiler/tests/good/queens.tig create mode 100644 tiger-compiler/tests/good/record-set-to-nil.tig create mode 100644 tiger-compiler/tests/good/record.tig create mode 100644 tiger-compiler/tests/good/recursive-types.tig create mode 100644 tiger-compiler/tests/good/shadowing-functions.tig create mode 100644 tiger-compiler/tests/good/shadowing-types-separate.tig create mode 100644 tiger-compiler/tests/good/string-ordering.tig create mode 100644 tiger-compiler/tests/good/test27.tig create mode 100644 tiger-compiler/tests/good/test30.tig create mode 100644 tiger-compiler/tests/good/test37.tig create mode 100644 tiger-compiler/tests/good/test42.tig create mode 100644 tiger-compiler/tests/good/test44.tig create mode 100644 tiger-compiler/tests/good/test64.tig create mode 100644 tiger-compiler/tests/good/test64.tih create mode 100644 tiger-compiler/tests/good/three-name-spaces.tig create mode 100644 tiger-compiler/tests/good/variable-escapes.tig create mode 100644 tiger-compiler/tests/llvmtranslate/array_value_compared_to_int.tig create mode 100644 tiger-compiler/tests/llvmtranslate/record_field_compared_to_int.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_addition.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_array_int.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_array_record.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_array_string.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_assignment_int.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_assignment_string.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_consecutive_ifs.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_declaration_int.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_declaration_string.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_division.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_equal.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_equal_string.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_for.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_for_break.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_funcall_in_if.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_function_int.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_function_int_escaped.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_function_int_param.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_function_int_param_return.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_function_string.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_greater_than.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_if.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_if_no_else.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_int.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_lesser_than.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_multiplication.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_nested_ifs.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_nil.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_not_equal.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_primitive_call.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_record.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_sequence_int.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_sequence_void.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_string.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_subtraction.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_while.tig create mode 100644 tiger-compiler/tests/llvmtranslate/simple_while_break.tig create mode 100644 tiger-compiler/tests/llvmtranslate/variable_compared_to_int.tig create mode 100644 tiger-compiler/tests/llvmtranslate/variable_compared_to_variable.tig create mode 100755 tiger-compiler/tests/object/bind/missing-super-class.tig create mode 100755 tiger-compiler/tests/object/good/class-to-different-class.tig create mode 100755 tiger-compiler/tests/object/good/class-to-nil.tig create mode 100755 tiger-compiler/tests/object/good/empty-class-inheritance-complex.tig create mode 100755 tiger-compiler/tests/object/good/empty-class-inheritance-simple.tig create mode 100755 tiger-compiler/tests/object/good/empty-class.tig create mode 100644 tiger-compiler/tests/object/good/forward-reference-to-class.tig create mode 100644 tiger-compiler/tests/object/good/funny.tig create mode 100644 tiger-compiler/tests/object/good/object-renamer.tig create mode 100755 tiger-compiler/tests/object/good/override.tig create mode 100644 tiger-compiler/tests/object/good/self.tig create mode 100755 tiger-compiler/tests/object/good/simple-class-call-method.tig create mode 100755 tiger-compiler/tests/object/good/simple-class-structlike.tig create mode 100755 tiger-compiler/tests/object/good/simple-class.tig create mode 100755 tiger-compiler/tests/object/type/bad-member-bindings.tig create mode 100755 tiger-compiler/tests/object/type/circular-inheritance.tig create mode 100755 tiger-compiler/tests/object/type/class-as-bad-parameter.tig create mode 100755 tiger-compiler/tests/object/type/class-equals-different-class.tig create mode 100755 tiger-compiler/tests/object/type/class-greater-than-different-class.tig create mode 100755 tiger-compiler/tests/object/type/class-lower-than-different-class.tig create mode 100755 tiger-compiler/tests/object/type/class-not-equals-different-class.tig create mode 100755 tiger-compiler/tests/object/type/class-to-int.tig create mode 100755 tiger-compiler/tests/object/type/class-to-string.tig create mode 100755 tiger-compiler/tests/object/type/incompatible-covariance.tig create mode 100644 tiger-compiler/tests/python/pytest.ini create mode 100644 tiger-compiler/tests/python/tests/setup/__init__.py create mode 100644 tiger-compiler/tests/python/tests/setup/load_files.py create mode 100644 tiger-compiler/tests/python/tests/setup/load_testsuite.py create mode 100644 tiger-compiler/tests/python/tests/setup/project_settings.py create mode 100644 tiger-compiler/tests/python/tests/setup/run_tc.py create mode 100644 tiger-compiler/tests/python/tests/test_assert.py create mode 100644 tiger-compiler/tests/python/tests/test_bind.py create mode 100644 tiger-compiler/tests/python/tests/test_desugar.py create mode 100644 tiger-compiler/tests/python/tests/test_escapes.py create mode 100644 tiger-compiler/tests/python/tests/test_llvmtranslate.py create mode 100644 tiger-compiler/tests/python/tests/test_object.py create mode 100644 tiger-compiler/tests/python/tests/test_syntax.py create mode 100644 tiger-compiler/tests/python/tests/test_testsuite.py create mode 100644 tiger-compiler/tests/python/tests/test_type.py create mode 100644 tiger-compiler/tests/syntax/constant_redefinition.tig create mode 100644 tiger-compiler/tests/syntax/typeid.tig create mode 100644 tiger-compiler/tests/testsuite/good/every_single_case.tig create mode 100644 tiger-compiler/tests/testsuite/good/one_actual_test.tig create mode 100644 tiger-compiler/tests/testsuite/good/one_empty_test.tig create mode 100644 tiger-compiler/tests/testsuite/good/subtests.tig create mode 100644 tiger-compiler/tests/testsuite/good/tested_function.tig create mode 100644 tiger-compiler/tests/testsuite/good/three_actual_tests.tig create mode 100644 tiger-compiler/tests/testsuite/good/three_actual_tests_natural.tig create mode 100644 tiger-compiler/tests/testsuite/good/three_empty_tests.tig create mode 100644 tiger-compiler/tests/type/assign-loop-var.tig create mode 100644 tiger-compiler/tests/type/bad-main-args.tig create mode 100644 tiger-compiler/tests/type/bad-main-return.tig create mode 100644 tiger-compiler/tests/type/box.tig create mode 100644 tiger-compiler/tests/type/compare_to_break.tig create mode 100644 tiger-compiler/tests/type/field-in-not-record.tig create mode 100644 tiger-compiler/tests/type/field-twice-in-declaration.tig create mode 100644 tiger-compiler/tests/type/field-twice-in-instantiation.tig create mode 100644 tiger-compiler/tests/type/funarg-type-mismatch.tig create mode 100644 tiger-compiler/tests/type/lower_than_array.tig create mode 100644 tiger-compiler/tests/type/lower_than_nil.tig create mode 100644 tiger-compiler/tests/type/lower_than_record.tig create mode 100644 tiger-compiler/tests/type/missing-arg.tig create mode 100644 tiger-compiler/tests/type/nil-equals-nil.tig create mode 100644 tiger-compiler/tests/type/nil-string.tig create mode 100644 tiger-compiler/tests/type/test09.tig create mode 100644 tiger-compiler/tests/type/test10.tig create mode 100644 tiger-compiler/tests/type/test11.tig create mode 100644 tiger-compiler/tests/type/test13.tig create mode 100644 tiger-compiler/tests/type/test14.tig create mode 100644 tiger-compiler/tests/type/test15.tig create mode 100644 tiger-compiler/tests/type/test21.tig create mode 100644 tiger-compiler/tests/type/test22.tig create mode 100644 tiger-compiler/tests/type/test23.tig create mode 100644 tiger-compiler/tests/type/test24.tig create mode 100644 tiger-compiler/tests/type/test26.tig create mode 100644 tiger-compiler/tests/type/test28.tig create mode 100644 tiger-compiler/tests/type/test29.tig create mode 100644 tiger-compiler/tests/type/test31.tig create mode 100644 tiger-compiler/tests/type/test32.tig create mode 100644 tiger-compiler/tests/type/test40.tig create mode 100644 tiger-compiler/tests/type/test43.tig create mode 100644 tiger-compiler/tests/type/too-many-args.tig create mode 100644 tiger-compiler/tests/type/types-endless-recursion.tig create mode 100644 tiger-compiler/tests/type/unconstrained-nil.tig create mode 100644 tiger-compiler/tests/type/wrong-print-invalid-type.tig create mode 100644 tiger-compiler/tests/type/wrong-print-too-many-args.tig create mode 100644 tiger-compiler/tests/unit/ast/local.am create mode 100644 tiger-compiler/tests/unit/ast/test_hello.cc create mode 100644 tiger-compiler/tests/unit/local.am create mode 100644 tiger-compiler/tests/unit/misc/local.am create mode 100644 tiger-compiler/tests/unit/misc/symbol/local.am create mode 100644 tiger-compiler/tests/unit/misc/symbol/test_symbol_simple.cc create mode 100644 tiger-compiler/tests/unit/misc/test_hello.cc create mode 100644 tiger-compiler/tests/unit/misc/unique/local.am create mode 100644 tiger-compiler/tests/unit/misc/unique/test_unique_char.cc create mode 100644 tiger-compiler/tests/unit/misc/unique/test_unique_int.cc create mode 100644 tiger-compiler/tests/unit/misc/unique/test_unique_string.cc create mode 100644 tiger-compiler/tests/unit/misc/variant/local.am create mode 100644 tiger-compiler/tests/unit/misc/variant/test_variant_three_types.cc create mode 100644 tiger-compiler/tests/unit/misc/variant/test_variant_two_types.cc create mode 100644 tiger-compiler/tests/unit/parse/local.am create mode 100644 tiger-compiler/tests/unit/parse/test_hello.cc create mode 100644 tiger-compiler/tests/unit/parse/tiger_driver/local.am create mode 100644 tiger-compiler/tests/unit/parse/tiger_driver/test_parse_no_check.cc create mode 100644 tiger-compiler/tests/unit/parse/tiger_factory/define_test_location.cc create mode 100644 tiger-compiler/tests/unit/parse/tiger_factory/define_test_location.hh create mode 100644 tiger-compiler/tests/unit/parse/tiger_factory/local.am create mode 100644 tiger-compiler/tests/unit/parse/tiger_factory/test_make_array_exp.cc create mode 100644 tiger-compiler/tests/unit/parse/tiger_factory/test_make_break_exp.cc create mode 100644 tiger-compiler/tests/unit/parse/tiger_factory/test_make_call_exp.cc create mode 100644 tiger-compiler/tests/unit/parse/tiger_factory/test_make_field_var.cc create mode 100644 tiger-compiler/tests/unit/parse/tiger_factory/test_make_if_exp.cc create mode 100644 tiger-compiler/tests/unit/parse/tiger_factory/test_make_int_exp.cc create mode 100644 tiger-compiler/tests/unit/parse/tiger_factory/test_make_let_exp.cc create mode 100644 tiger-compiler/tests/unit/parse/tiger_factory/test_make_object_exp.cc create mode 100644 tiger-compiler/tests/unit/parse/tiger_factory/test_make_record_exp.cc create mode 100644 tiger-compiler/tests/unit/parse/tiger_factory/test_make_record_ty.cc create mode 100644 tiger-compiler/tests/unit/parse/tiger_factory/test_make_string_exp.cc create mode 100644 tiger-compiler/tests/unit/tasks/bind/local.am create mode 100644 tiger-compiler/tests/unit/tasks/local.am create mode 100644 tiger-compiler/the-tiger.txt create mode 100644 tigrou/.gitignore create mode 100644 tigrou/declare-my-variable/declare-my-variable.tig create mode 100644 tigrou/fibo/fibo.tig create mode 100644 tigrou/fibo/fibo.tih create mode 100644 tigrou/hello-tigrou/hello-tigrou.tig create mode 100644 tigrou/how-old-am-i/how-old-am-i.tig create mode 100644 tigrou/linked-list/linked-list.tig create mode 100644 tigrou/linked-list/linked-list.tih create mode 100644 tigrou/sort/sort.tig create mode 100644 tigrou/sort/sort.tih create mode 100644 tigrou/use-an-array/use-an-array.tig create mode 100644 tigrou/use-an-array/use-an-array.tih create mode 100644 tigrou/who-am-i/who-am-i.tig create mode 100644 tigrou/who-am-i/who-am-i.tih diff --git a/21sh/autotools/.gitignore b/21sh/autotools/.gitignore new file mode 100644 index 0000000..89511ec --- /dev/null +++ b/21sh/autotools/.gitignore @@ -0,0 +1,54 @@ +# http://www.gnu.org/software/automake + +Makefile.in +COPYING +INSTALL +/ar-lib +/mdate-sh +/py-compile +/test-driver +/ylwrap +.deps/ +.dirstamp + +# http://www.gnu.org/software/autoconf + +autom4te.cache +/autoscan.log +/autoscan-*.log +/aclocal.m4 +/compile +/config.cache +/config.guess +/config.h.in +/config.log +/config.status +/config.sub +/configure +/configure.scan +/depcomp +/install-sh +/missing +/stamp-h1 + +# https://www.gnu.org/software/libtool/ + +/ltmain.sh + +# http://www.gnu.org/software/texinfo + +/texinfo.tex + +# http://www.gnu.org/software/m4/ + +m4/libtool.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/ltversion.m4 +m4/lt~obsolete.m4 + +# Generated Makefile +# (meta build system like autotools, +# can automatically generate from config.status script +# (which is called by configure script)) +Makefile diff --git a/21sh/autotools/Makefile.am b/21sh/autotools/Makefile.am new file mode 100644 index 0000000..af437a6 --- /dev/null +++ b/21sh/autotools/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = src diff --git a/21sh/autotools/configure.ac b/21sh/autotools/configure.ac new file mode 100644 index 0000000..e3a60b6 --- /dev/null +++ b/21sh/autotools/configure.ac @@ -0,0 +1,14 @@ +AC_INIT([autotools], [0.1], [martial.simon@epita.fr]) +AM_INIT_AUTOMAKE([subdir-objects] [foreign]) +AC_PROG_RANLIB +AM_PROG_AR +AC_PROG_CC +AX_COMPILER_FLAGS([], [], [], [-Wall -Wextra -Werror -Wvla -pedantic -std=c99]) +AC_CONFIG_FILES([ + Makefile + src/Makefile + src/ast/Makefile + src/lexer/Makefile + src/parser/Makefile + ]) +AC_OUTPUT diff --git a/21sh/autotools/src/42sh.c b/21sh/autotools/src/42sh.c new file mode 100644 index 0000000..cb3f00b --- /dev/null +++ b/21sh/autotools/src/42sh.c @@ -0,0 +1,7 @@ +#include "ast/ast.h" + +int main(void) +{ + print_ast(); + return 0; +} diff --git a/21sh/autotools/src/Makefile.am b/21sh/autotools/src/Makefile.am new file mode 100644 index 0000000..6a2c6ae --- /dev/null +++ b/21sh/autotools/src/Makefile.am @@ -0,0 +1,7 @@ +SUBDIRS = ast lexer parser + +bin_PROGRAMS = 42sh +42sh_SOURCES = 42sh.c +42sh_CPPFLAGS = -I%D% +42sh_CFLAGS = -std=c99 -Werror -Wall -Wextra -Wvla -pedantic +42sh_LDADD = ast/libast.a lexer/liblexer.a parser/libparser.a diff --git a/21sh/autotools/src/ast/Makefile.am b/21sh/autotools/src/ast/Makefile.am new file mode 100644 index 0000000..d455958 --- /dev/null +++ b/21sh/autotools/src/ast/Makefile.am @@ -0,0 +1,6 @@ +lib_LIBRARIES = libast.a + +libast_a_SOURCES = ast.c ast.h +libast_a_CPPFLAGS = -I$(top_srcdir)/src +libast_a_CFLAGS = -std=c99 -Werror -Wall -Wextra -Wvla -pedantic +noinst_LIBRARIES = libast.a diff --git a/21sh/autotools/src/ast/ast.c b/21sh/autotools/src/ast/ast.c new file mode 100644 index 0000000..084dbf9 --- /dev/null +++ b/21sh/autotools/src/ast/ast.c @@ -0,0 +1,11 @@ +#include "ast.h" + +#include + +#include "parser/parser.h" + +void print_ast() +{ + printf("ast !!!\n"); + print_parser(); +} diff --git a/21sh/autotools/src/ast/ast.h b/21sh/autotools/src/ast/ast.h new file mode 100644 index 0000000..83d52b3 --- /dev/null +++ b/21sh/autotools/src/ast/ast.h @@ -0,0 +1,6 @@ +#ifndef AST_H +#define AST_H + +void print_ast(); + +#endif /* ! AST_H */ diff --git a/21sh/autotools/src/lexer/Makefile.am b/21sh/autotools/src/lexer/Makefile.am new file mode 100644 index 0000000..f5f78b2 --- /dev/null +++ b/21sh/autotools/src/lexer/Makefile.am @@ -0,0 +1,6 @@ +lib_LIBRARIES = liblexer.a + +liblexer_a_SOURCES = lexer.c lexer.h +liblexer_a_CPPFLAGS = -I$(top_srcdir)/src +liblexer_a_CFLAGS = -std=c99 -Werror -Wall -Wextra -Wvla -pedantic +noinst_LIBRARIES = liblexer.a diff --git a/21sh/autotools/src/lexer/lexer.c b/21sh/autotools/src/lexer/lexer.c new file mode 100644 index 0000000..2e9d2f9 --- /dev/null +++ b/21sh/autotools/src/lexer/lexer.c @@ -0,0 +1,8 @@ +#include "lexer.h" + +#include + +void print_lexer() +{ + puts("Vive les lexer"); +} diff --git a/21sh/autotools/src/lexer/lexer.h b/21sh/autotools/src/lexer/lexer.h new file mode 100644 index 0000000..0cc2c2e --- /dev/null +++ b/21sh/autotools/src/lexer/lexer.h @@ -0,0 +1,6 @@ +#ifndef LEXER_H +#define LEXER_H + +void print_lexer(); + +#endif /* ! LEXER_H */ diff --git a/21sh/autotools/src/parser/Makefile.am b/21sh/autotools/src/parser/Makefile.am new file mode 100644 index 0000000..c8fe590 --- /dev/null +++ b/21sh/autotools/src/parser/Makefile.am @@ -0,0 +1,6 @@ +lib_LIBRARIES = libparser.a + +libparser_a_SOURCES = parser.c parser.h $(top_srcdir)/src/lexer/lexer.c $(top_srcdir)/src/lexer/lexer.h +libparser_a_CPPFLAGS = -I$(top_srcdir)/src +libparser_a_CFLAGS = -std=c99 -Werror -Wall -Wextra -Wvla -pedantic +noinst_LIBRARIES = libparser.a diff --git a/21sh/autotools/src/parser/parser.c b/21sh/autotools/src/parser/parser.c new file mode 100644 index 0000000..28f5824 --- /dev/null +++ b/21sh/autotools/src/parser/parser.c @@ -0,0 +1,11 @@ +#include "parser.h" + +#include + +#include "lexer/lexer.h" + +void print_parser() +{ + print_lexer(); + printf("parser !!!\n"); +} diff --git a/21sh/autotools/src/parser/parser.h b/21sh/autotools/src/parser/parser.h new file mode 100644 index 0000000..38d2ae3 --- /dev/null +++ b/21sh/autotools/src/parser/parser.h @@ -0,0 +1,6 @@ +#ifndef PARSER_H +#define PARSER_H + +void print_parser(); + +#endif /* ! PARSER_H */ diff --git a/21sh/ll-expr/Makefile b/21sh/ll-expr/Makefile new file mode 100644 index 0000000..0293956 --- /dev/null +++ b/21sh/ll-expr/Makefile @@ -0,0 +1,27 @@ +CC = gcc +CFLAGS = -Wall -Werror -Wextra -std=c99 -pedantic -Wvla -fsanitize=address +CPPFLAGS = -Isrc -Isrc/parser -Isrc/lexer -Isrc/ast +LDFLAGS = -fsanitize=address + +OBJS = src/ast/ast.o \ + src/lexer/lexer.o \ + src/parser/parser.o + +OBJ_AST = src/eval/ast_print.o +OBJ_RPN = src/eval/rpn_print.o +OBJ_TOKEN = src/eval/token_printer.o + +all: ast rpn token + +ast: $(OBJS) $(OBJ_AST) + $(CC) $(LDFLAGS) -o eval_ast $(OBJS) $(OBJ_AST) + +rpn: $(OBJS) $(OBJ_RPN) + $(CC) $(LDFLAGS) -o eval_rpn $(OBJS) $(OBJ_RPN) + +token: $(OBJS) $(OBJ_TOKEN) + $(CC) $(LDFLAGS) -o eval_token $(OBJS) $(OBJ_TOKEN) + +clean: + $(RM) $(OBJS) $(OBJ_AST) $(OBJ_TOKEN) $(OBJ_RPN) eval_* + diff --git a/21sh/ll-expr/src/ast/ast.c b/21sh/ll-expr/src/ast/ast.c new file mode 100644 index 0000000..701d40e --- /dev/null +++ b/21sh/ll-expr/src/ast/ast.c @@ -0,0 +1,27 @@ +#include "ast.h" + +#include +#include + +struct ast *ast_new(enum ast_type type) +{ + struct ast *new = calloc(1, sizeof(struct ast)); + if (!new) + return NULL; + new->type = type; + return new; +} + +void ast_free(struct ast *ast) +{ + if (ast == NULL) + return; + + ast_free(ast->left); + ast->left = NULL; + + ast_free(ast->right); + ast->right = NULL; + + free(ast); +} diff --git a/21sh/ll-expr/src/ast/ast.h b/21sh/ll-expr/src/ast/ast.h new file mode 100644 index 0000000..01e0064 --- /dev/null +++ b/21sh/ll-expr/src/ast/ast.h @@ -0,0 +1,40 @@ +#ifndef AST_H +#define AST_H + +#include + +enum ast_type +{ + AST_PLUS, + AST_MINUS, + AST_MUL, + AST_DIV, + AST_NUMBER, + AST_NEG +}; + +/** + * This very simple AST structure should be sufficient for a simple AST. + * It is however, NOT GOOD ENOUGH for more complicated projects, such as a + * shell. Please read the project guide for some insights about other kinds of + * ASTs. + */ +struct ast +{ + enum ast_type type; // The kind of node we're dealing with + ssize_t value; // If the node is a number, it stores its value + struct ast *left; // The left branch if any, unary or binary + struct ast *right; // The right branch of the binary node +}; + +/** + ** \brief Allocates a new ast with the given type. + */ +struct ast *ast_new(enum ast_type type); + +/** + ** \brief Recursively frees the given ast. + */ +void ast_free(struct ast *ast); + +#endif /* !AST_H */ diff --git a/21sh/ll-expr/src/eval/ast_print.c b/21sh/ll-expr/src/eval/ast_print.c new file mode 100644 index 0000000..9d7cbb8 --- /dev/null +++ b/21sh/ll-expr/src/eval/ast_print.c @@ -0,0 +1,57 @@ +#include + +#include "lexer.h" +#include "parser.h" + +char tab[] = { [AST_PLUS] = '+', + [AST_MINUS] = '-', + [AST_MUL] = '*', + [AST_DIV] = '/' }; + +void print_ast(struct ast *ast) +{ + if (ast == NULL) + return; + + if (ast->type == AST_NUMBER) + printf("%zu", ast->value); + else if (ast->type == AST_NEG) + printf("-%zu", (ast->left)->value); + else + { + printf("("); + + print_ast(ast->left); + + printf("%c", tab[ast->type]); + + print_ast(ast->right); + + printf(")"); + } +} + +int main(int argc, char *argv[]) +{ + if (argc != 2) + return 1; + + struct lexer *lexer = lexer_new(argv[1]); + + struct ast *ast; + enum parser_status status = PARSER_OK; + ast = parse(&status, lexer); + if (status != PARSER_OK) + { + lexer_free(lexer); + return 1; + } + + print_ast(ast); + printf("\n"); + + ast_free(ast); + lexer_free(lexer); + + return 0; +} diff --git a/21sh/ll-expr/src/eval/rpn_print.c b/21sh/ll-expr/src/eval/rpn_print.c new file mode 100644 index 0000000..defb519 --- /dev/null +++ b/21sh/ll-expr/src/eval/rpn_print.c @@ -0,0 +1,52 @@ +#include + +#include "lexer.h" +#include "parser.h" + +char tab[] = { [AST_PLUS] = '+', + [AST_MINUS] = '-', + [AST_MUL] = '*', + [AST_DIV] = '/' }; + +void print_ast(struct ast *ast) +{ + if (!ast) + return; + + if (ast->type == AST_NUMBER) + printf("%zu ", ast->value); + else if (ast->type == AST_NEG) + printf("-%zu ", (ast->left)->value); + else + { + print_ast(ast->left); + print_ast(ast->right); + + printf("%c ", tab[ast->type]); + } +} + +int main(int argc, char *argv[]) +{ + if (argc != 2) + return 1; + + struct lexer *lexer = lexer_new(argv[1]); + + struct ast *ast; + enum parser_status status; + ast = parse(&status, lexer); + if (status != PARSER_OK) + { + lexer_free(lexer); + return 1; + } + + print_ast(ast); + printf("\n"); + + ast_free(ast); + lexer_free(lexer); + + return 0; +} diff --git a/21sh/ll-expr/src/eval/token_printer.c b/21sh/ll-expr/src/eval/token_printer.c new file mode 100644 index 0000000..78096f4 --- /dev/null +++ b/21sh/ll-expr/src/eval/token_printer.c @@ -0,0 +1,34 @@ +#include + +#include "lexer.h" + +char tab[] = { + [TOKEN_PLUS] = '+', [TOKEN_MINUS] = '-', [TOKEN_MUL] = '*', + [TOKEN_DIV] = '/', [TOKEN_LEFT_PAR] = '(', [TOKEN_RIGHT_PAR] = ')' +}; + +int main(int argc, char *argv[]) +{ + if (argc != 2) + return 1; + + struct lexer *lexer = lexer_new(argv[1]); + struct token token = lexer_pop(lexer); + + while (token.type != TOKEN_EOF && token.type != TOKEN_ERROR) + { + if (token.type == TOKEN_NUMBER) + printf("%zu\n", token.value); + else + printf("%c\n", tab[token.type]); + + token = lexer_pop(lexer); + } + + if (token.type == TOKEN_EOF) + printf("EOF\n"); + + lexer_free(lexer); + + return 0; +} diff --git a/21sh/ll-expr/src/lexer/lexer.c b/21sh/ll-expr/src/lexer/lexer.c new file mode 100644 index 0000000..3b3d29f --- /dev/null +++ b/21sh/ll-expr/src/lexer/lexer.c @@ -0,0 +1,104 @@ +#include "lexer.h" + +#include +#include +#include + +struct lexer *lexer_new(const char *input) +{ + struct lexer *new = malloc(sizeof(struct lexer)); + new->input = input; + new->pos = 0; + return new; +} + +void lexer_free(struct lexer *lexer) +{ + free(lexer); +} + +struct template +{ + char value; + enum token_type type; +}; + +struct template templates[] = { + { '+', TOKEN_PLUS }, { '-', TOKEN_MINUS }, { '*', TOKEN_MUL }, + { '/', TOKEN_DIV }, { '(', TOKEN_LEFT_PAR }, { ')', TOKEN_RIGHT_PAR }, + { '\0', TOKEN_EOF }, { 0, TOKEN_ERROR } +}; + +static ssize_t parse_number(struct lexer *l) +{ + union + { + const char *cc; + char *c; + } cast; + cast.cc = l->input + l->pos; + char *in = cast.c; + size_t t = 0; + while (in[t] && in[t] >= '0' && in[t] <= '9') + t++; + char tmp = in[t]; + in[t] = '\0'; + ssize_t res = atoi(in); + in[t] = tmp; + return res; +} + +struct token lexer_next_token(struct lexer *lexer) +{ + for (; lexer->input[lexer->pos] && lexer->input[lexer->pos] == ' '; + lexer->pos++) + continue; + for (int i = 0; i < 7; i++) + { + if (lexer->input[lexer->pos] == templates[i].value) + { + lexer->current_tok.type = templates[i].type; + return lexer->current_tok; + } + } + if (lexer->input[lexer->pos] > '9' || lexer->input[lexer->pos] < '0') + { + lexer->current_tok.type = TOKEN_ERROR; + fprintf(stderr, "lexer: invalid token %c\n", lexer->input[lexer->pos]); + return lexer->current_tok; + } + else + { + lexer->current_tok.type = TOKEN_NUMBER; + lexer->current_tok.value = parse_number(lexer); + return lexer->current_tok; + } +} + +struct token lexer_peek(struct lexer *lexer) +{ + return lexer_next_token(lexer); +} + +static size_t count_numbers(ssize_t value) +{ + if (value == 0) + return 1; + size_t size = 0; + while (value) + { + size++; + value /= 10; + } + return size; +} + +struct token lexer_pop(struct lexer *lexer) +{ + struct token res = lexer_next_token(lexer); + if (res.type == TOKEN_NUMBER) + lexer->pos += count_numbers(res.value); + else + lexer->pos++; + return res; +} diff --git a/21sh/ll-expr/src/lexer/lexer.h b/21sh/ll-expr/src/lexer/lexer.h new file mode 100644 index 0000000..40a7cc9 --- /dev/null +++ b/21sh/ll-expr/src/lexer/lexer.h @@ -0,0 +1,61 @@ +#ifndef LEXER_H +#define LEXER_H + +#include "token.h" + +/** + * \page Lexer + * + * The lexer cuts some input text into blocks called tokens. + + * This process is done **on demand**: the lexer doesn't read the + * input more than it needs, only creates tokens when lexer_peek + * or lexer_pop is called, and no token is available. + * + * "2 + 3" will produce 3 tokens: + * - TOKEN_NUMBER { .value = 2 } + * - TOKEN_PLUS + * - TOKEN_NUMBER { .value = 3 } + */ + +struct lexer +{ + const char *input; // The input data + size_t pos; // The current offset inside the input data + struct token current_tok; // The next token, if processed +}; + +/** + * \brief Creates a new lexer given an input string. + */ +struct lexer *lexer_new(const char *input); + +/** + ** \brief Frees the given lexer, but not its input. + */ +void lexer_free(struct lexer *lexer); + +/** + * \brief Returns a token from the input string. + + * This function goes through the input string character by character and + * builds a token. lexer_peek and lexer_pop should call it. If the input is + * invalid, you must print something on stderr and return the appropriate token. + */ +struct token lexer_next_token(struct lexer *lexer); + +/** + * \brief Returns the next token, but doesn't move forward: calling lexer_peek + * multiple times in a row always returns the same result. + * This function is meant to help the parser check if the next token matches + * some rule. + */ +struct token lexer_peek(struct lexer *lexer); + +/** + * \brief Returns the next token, and removes it from the stream: + * calling lexer_pop in a loop will iterate over all tokens until EOF. + */ +struct token lexer_pop(struct lexer *lexer); + +#endif /* !LEXER_H */ diff --git a/21sh/ll-expr/src/lexer/token.h b/21sh/ll-expr/src/lexer/token.h new file mode 100644 index 0000000..b0866fc --- /dev/null +++ b/21sh/ll-expr/src/lexer/token.h @@ -0,0 +1,25 @@ +#ifndef TOKEN_H +#define TOKEN_H + +#include + +enum token_type +{ + TOKEN_PLUS, // '+' + TOKEN_MINUS, // '-' + TOKEN_MUL, // '*' + TOKEN_DIV, // '/' + TOKEN_NUMBER, // "[0-9]+" + TOKEN_LEFT_PAR, // '(' + TOKEN_RIGHT_PAR, // ')' + TOKEN_EOF, // end of input marker + TOKEN_ERROR // it is not a real token, it is returned in case of invalid + // input +}; + +struct token +{ + enum token_type type; // The kind of token + ssize_t value; // If the token is a number, its value +}; +#endif /* !TOKEN_H */ diff --git a/21sh/ll-expr/src/parser/parser.c b/21sh/ll-expr/src/parser/parser.c new file mode 100644 index 0000000..d1a1526 --- /dev/null +++ b/21sh/ll-expr/src/parser/parser.c @@ -0,0 +1,149 @@ +#include "parser.h" + +#include + +struct ast *parse(enum parser_status *status, struct lexer *lexer) +{ + struct token t = lexer_peek(lexer); + *status = PARSER_OK; + if (t.type == TOKEN_EOF) + { + lexer_pop(lexer); + return NULL; + } + else + { + struct ast *exp = parse_exp(status, lexer); + if (*status != PARSER_OK) + { + return NULL; + } + struct token t = lexer_pop(lexer); + if (*status == PARSER_OK && t.type == TOKEN_EOF) + { + return exp; + } + else if (t.type != TOKEN_EOF) + { + *status = PARSER_UNEXPECTED_TOKEN; + fprintf(stderr, "parser: unexpected token\n"); + } + ast_free(exp); + return NULL; + } +} + +struct ast *parse_exp(enum parser_status *status, struct lexer *lexer) +{ + struct ast *left = parse_sexp(status, lexer); + if (*status == PARSER_UNEXPECTED_TOKEN) + return NULL; + struct token t = lexer_peek(lexer); + if (t.type != TOKEN_PLUS && t.type != TOKEN_MINUS) + { + *status = PARSER_OK; + return left; + } + else + { + struct ast *root = left; + do + { + left = root; + t = lexer_pop(lexer); + if (t.type == TOKEN_PLUS) + root = ast_new(AST_PLUS); + else + root = ast_new(AST_MINUS); + root->left = left; + root->right = parse_sexp(status, lexer); + if (*status == PARSER_UNEXPECTED_TOKEN) + { + ast_free(root); + return NULL; + } + t = lexer_peek(lexer); + } while (t.type != TOKEN_EOF + && (t.type == TOKEN_PLUS || t.type == TOKEN_MINUS)); + return root; + } +} + +struct ast *parse_sexp(enum parser_status *status, struct lexer *lexer) +{ + struct ast *left = parse_texp(status, lexer); + if (*status == PARSER_UNEXPECTED_TOKEN) + return NULL; + struct token t = lexer_peek(lexer); + if (t.type != TOKEN_MUL && t.type != TOKEN_DIV) + { + *status = PARSER_OK; + return left; + } + else + { + struct ast *root = left; + do + { + left = root; + t = lexer_pop(lexer); + if (t.type == TOKEN_MUL) + root = ast_new(AST_MUL); + else + root = ast_new(AST_DIV); + root->left = left; + root->right = parse_texp(status, lexer); + if (*status == PARSER_UNEXPECTED_TOKEN) + { + ast_free(root); + return NULL; + } + t = lexer_peek(lexer); + } while (t.type != TOKEN_EOF + && (t.type == TOKEN_MUL || t.type == TOKEN_DIV)); + return root; + } +} + +struct ast *parse_texp(enum parser_status *status, struct lexer *lexer) +{ + struct token t = lexer_pop(lexer); + if (t.type == TOKEN_NUMBER) + { + struct ast *res = ast_new(AST_NUMBER); + res->value = t.value; + return res; + } + else if (t.type == TOKEN_MINUS) + { + t = lexer_peek(lexer); + if (t.type != TOKEN_NUMBER && t.type != TOKEN_LEFT_PAR) + { + *status = PARSER_UNEXPECTED_TOKEN; + fprintf(stderr, "parser: unexpected token\n"); + return NULL; + } + struct ast *unary = ast_new(AST_NEG); + unary->left = parse_texp(status, lexer); + return unary; + } + else if (t.type == TOKEN_LEFT_PAR) + { + struct ast *exp = parse_exp(status, lexer); + t = lexer_pop(lexer); + if (t.type != TOKEN_RIGHT_PAR) + { + *status = PARSER_UNEXPECTED_TOKEN; + fprintf(stderr, "parser: expected closing parenthesis\n"); + ast_free(exp); + return NULL; + } + return exp; + } + else + { + *status = PARSER_UNEXPECTED_TOKEN; + fprintf(stderr, "parser: unexpected token\n"); + return NULL; + } +} diff --git a/21sh/ll-expr/src/parser/parser.h b/21sh/ll-expr/src/parser/parser.h new file mode 100644 index 0000000..057c6bc --- /dev/null +++ b/21sh/ll-expr/src/parser/parser.h @@ -0,0 +1,46 @@ +#ifndef PARSER_H +#define PARSER_H + +#include "ast.h" +#include "lexer.h" + +enum parser_status +{ + PARSER_OK, + PARSER_UNEXPECTED_TOKEN, +}; + +/** + * \brief Parses an expression or nothing. + * + * input = EOF + * | exp EOF ; + */ +struct ast *parse(enum parser_status *status, struct lexer *lexer); + +/** + * \brief Parses sexp expressions separated by + and -. + * + * exp = sexp { ( '+' | '-' ) sexp } ; + */ +struct ast *parse_exp(enum parser_status *status, struct lexer *lexer); + +/** + * \brief Parses texp expressions separated by * and /. + * + * sexp = texp { ('*' | '/' ) texp } ; + */ +struct ast *parse_sexp(enum parser_status *status, struct lexer *lexer); + +/** + * \brief Parses a number, a - a number, or a parenthesized expression. + * + * texp = NUMBER + * | '-' NUMBER + * | '-' '(' exp ')' + * | '(' exp ')' + * ; + */ +struct ast *parse_texp(enum parser_status *status, struct lexer *lexer); + +#endif /* !PARSER_H */ diff --git a/21sh/mypipe/mypipe.c b/21sh/mypipe/mypipe.c new file mode 100644 index 0000000..c019e42 --- /dev/null +++ b/21sh/mypipe/mypipe.c @@ -0,0 +1,43 @@ +#include "mypipe.h" + +#include +#include + +int exec_pipe(char **argv_left, char **argv_right) +{ + int fds[2]; + if (pipe(fds)) + return 1; + pid_t pid = fork(); + if (pid == 0) + { + // close read end + close(fds[0]); + // redirect stdout to write end + dup2(fds[1], STDOUT_FILENO); + // tell OS to close write end after exec + fcntl(fds[1], F_SETFD, FD_CLOEXEC); + // exec left + execvp(argv_left[0], argv_left); + return 0; + } + else if (pid > 0) + { + // close write end + close(fds[1]); + // redirect stdin to read end + dup2(fds[0], STDIN_FILENO); + // tell OS to close read end after exec + fcntl(fds[0], F_SETFD, FD_CLOEXEC); + // exec right + execvp(argv_right[0], argv_right); + // return 1 + return 1; + } + else + { + close(fds[0]); + close(fds[1]); + return 1; + } +} diff --git a/21sh/mypipe/mypipe.h b/21sh/mypipe/mypipe.h new file mode 100644 index 0000000..d8c14e4 --- /dev/null +++ b/21sh/mypipe/mypipe.h @@ -0,0 +1,6 @@ +#ifndef MYPIPE_H +#define MYPIPE_H + +int exec_pipe(char **argv_left, char **argv_right); + +#endif /* ! MYPIPE_H */ diff --git a/21sh/myredir/myredir.c b/21sh/myredir/myredir.c new file mode 100644 index 0000000..071a8bf --- /dev/null +++ b/21sh/myredir/myredir.c @@ -0,0 +1,46 @@ +#include +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ + if (argc < 3) + { + fprintf(stderr, "Missing argument\n"); + return 2; + } + // Save stdout + int stdout_dup = dup(STDOUT_FILENO); + + int file_fd = open(argv[1], O_CREAT | O_WRONLY, 0644); + + // Redirect stdout to the file + dup2(file_fd, STDOUT_FILENO); + + int status; + + pid_t pid = fork(); + if (pid == 0) + { + execvp(argv[2], argv + 2); + return 127; + } + else + { + waitpid(pid, &status, 0); + if (WIFEXITED(status)) + { + status = WEXITSTATUS(status); + fflush(stdout); + dup2(stdout_dup, STDOUT_FILENO); + close(stdout_dup); + } + if (status != 127) + printf("%s exited with %d!\n", argv[2], status); + else + fprintf(stderr, "Missing command\n"); + return status == 127; + } +} diff --git a/42sh/.clang-format b/42sh/.clang-format new file mode 100644 index 0000000..7ed8115 --- /dev/null +++ b/42sh/.clang-format @@ -0,0 +1,79 @@ +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlines: Right +AlignOperands: false +AlignTrailingComments: false +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: false +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: Yes +BinPackArguments: true +BinPackParameters: true +BreakBeforeBraces: Custom +BraceWrapping: + AfterEnum: true + AfterClass: true + AfterControlStatement: true + AfterFunction: true + AfterNamespace: true + AfterStruct: true + AfterUnion: true + AfterExternBlock: true + BeforeCatch: true + BeforeElse: true + IndentBraces: false + SplitEmptyFunction: false + SplitEmptyRecord: false + SplitEmptyNamespace: false +BreakBeforeBinaryOperators: NonAssignment +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeComma +BreakInheritanceList: BeforeComma +BreakStringLiterals: true +ColumnLimit: 80 +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +Cpp11BracedListStyle: false +DerivePointerAlignment: false +FixNamespaceComments: true +ForEachMacros: ['ILIST_FOREACH', 'ILIST_FOREACH_ENTRY'] +IncludeBlocks: Regroup +IncludeCategories: + - Regex: '<.*>' + Priority: 1 + - Regex: '.*' + Priority: 2 +IndentCaseLabels: false +IndentPPDirectives: AfterHash +IndentWidth: 4 +IndentWrappedFunctionNames: false +KeepEmptyLinesAtTheStartOfBlocks: false +Language: Cpp +NamespaceIndentation: All +PointerAlignment: Right +ReflowComments: true +SortIncludes: true +SortUsingDeclarations: false +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInContainerLiterals: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +TabWidth: 4 +UseTab: Never diff --git a/42sh/.gitignore b/42sh/.gitignore new file mode 100644 index 0000000..e198c0f --- /dev/null +++ b/42sh/.gitignore @@ -0,0 +1,115 @@ +# http://www.gnu.org/software/automake + +Makefile.in +/ar-lib +/mdate-sh +/py-compile +/test-driver +/ylwrap +.deps/ +.dirstamp +bin/ +out + +# http://www.gnu.org/software/autoconf + +autom4te.cache +/autoscan.log +/autoscan-*.log +/aclocal.m4 +/compile +/config.cache +/config.guess +/config.h.in +/config.log +/config.status +/config.sub +/configure +/configure.scan +/depcomp +/install-sh +/missing +/stamp-h1 + +# https://www.gnu.org/software/libtool/ + +/ltmain.sh + +# http://www.gnu.org/software/texinfo + +/texinfo.tex + +# http://www.gnu.org/software/m4/ + +m4/libtool.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/ltversion.m4 +m4/lt~obsolete.m4 + +# Generated Makefile +# (meta build system like autotools, +# can automatically generate from config.status script +# (which is called by configure script)) +Makefile + +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf + +# Temp files +*~ +*.swp* +.vscode + +# pretty-print file +*.dot diff --git a/42sh/.gitlab-ci.yml b/42sh/.gitlab-ci.yml new file mode 100644 index 0000000..750777b --- /dev/null +++ b/42sh/.gitlab-ci.yml @@ -0,0 +1,70 @@ +# This file is a template, and might need editing before it works on your project. +# This is a sample GitLab CI/CD configuration file that should run without any modifications. +# It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts, +# it uses echo commands to simulate the pipeline execution. +# +# A pipeline is composed of independent jobs that run scripts, grouped into stages. +# Stages run in sequential order, but jobs within stages run in parallel. +# +# For more information, see: https://docs.gitlab.com/ee/ci/yaml/index.html#stages +# +# You can copy and paste this template into a new `.gitlab-ci.yml` file. +# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword. +# +# To contribute improvements to CI/CD templates, please follow the Development guide at: +# https://docs.gitlab.com/ee/development/cicd/templates.html +# This specific template is located at: +# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml + +stages: # List of stages for jobs, and their order of execution + - build + - test + +variables: + CC: gcc + CXX: g++ + MAKEFLAGS: "-j$(proc)" + +build-job: # This job runs in the build stage, which runs first. + stage: build + image: ubuntu:22.04 + script: + - apt-get update + - apt-get install -y gcc + - apt-get install -y build-essential + - apt-get install -y make + - apt-get install -y libcriterion-dev + - apt-get install -y autotools-dev + - apt-get install -y autoconf + - apt-get install -y autoconf-archive + - autoreconf --install + - ./configure --prefix=$(pwd) + - make install + artifacts: + untracked: true + when: on_success + expire_in: 1 hour + +test-job: # This job runs in the test stage. + stage: test # It only starts when the job in the build stage completes successfully. + image: ubuntu:22.04 + script: + - apt-get update + - apt-get install -y gcc + - apt-get install -y build-essential + - apt-get install -y make + - apt-get install -y libcriterion-dev + - apt-get install -y autotools-dev + - apt-get install -y autoconf + - apt-get install -y autoconf-archive + - ./configure --prefix=$(pwd) + - BIN_PATH="$(pwd)/bin/42sh" OUTPUT_FILE="$(pwd)/out" make check + +clang-format-job: # This job also runs in the test stage. + stage: test # It can run at the same time as unit-test-job (in parallel). + image: ubuntu:22.04 + script: + - apt-get update + - apt-get install -y clang-format + - find . -iname "*.[hc]" -type f | xargs clang-format --dry-run --Werror + diff --git a/42sh/Makefile.am b/42sh/Makefile.am new file mode 100644 index 0000000..a459377 --- /dev/null +++ b/42sh/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = src tests diff --git a/42sh/README b/42sh/README new file mode 100644 index 0000000..0f81209 --- /dev/null +++ b/42sh/README @@ -0,0 +1 @@ +# 42sh diff --git a/42sh/configure.ac b/42sh/configure.ac new file mode 100644 index 0000000..644e677 --- /dev/null +++ b/42sh/configure.ac @@ -0,0 +1,35 @@ +# Init the 42sh project +AC_INIT([42sh], [1.0], [martial.simon@epita.fr maxence.moncel@epita.fr nicolas.rivera@epita.fr fabien.bouchon@epita.fr]) + +# Setup Automake +AM_INIT_AUTOMAKE([subdir-objects] [foreign]) + +# Pretty display of Makefile rules +AM_SILENT_RULES([yes]) + +# Enable ar for Makefile +AM_PROG_AR + +# Check if ranlib is available +AC_PROG_RANLIB + +# Check if a C compiler is available +AC_PROG_CC + +# Check if a compiler has this list of flags +AX_COMPILER_FLAGS([], [], [], [-Wall -Wextra -Werror -Wvla -pedantic -std=c99]) + +# List Makefiles in subdirectories +AC_CONFIG_FILES([ + Makefile + src/Makefile + src/ast/Makefile + src/parser/Makefile + src/lexer/Makefile + src/utils/Makefile + src/builtins/Makefile + src/exec/Makefile + src/IO/Makefile + tests/Makefile + ]) +AC_OUTPUT diff --git a/42sh/src/42sh.c b/42sh/src/42sh.c new file mode 100644 index 0000000..780d575 --- /dev/null +++ b/42sh/src/42sh.c @@ -0,0 +1,16 @@ +#define _POSIX_C_SOURCE 200809L + +#include "helper.h" + +int main(int argc, char *argv[]) +{ + env_setup(); + + struct string *input = get_input(argc, argv); + + int r = _process_input(input); + + env_unset("PRETTY_PRINT"); + + return r; +} diff --git a/42sh/src/IO/IOBackend.h b/42sh/src/IO/IOBackend.h new file mode 100644 index 0000000..dc190db --- /dev/null +++ b/42sh/src/IO/IOBackend.h @@ -0,0 +1,27 @@ +#ifndef IOBACKEND_H +#define IOBACKEND_H + +#include "utils/libstring.h" + +#undef DEFAULT_RW_SIZE + +/** + * @brief Represents the 'count' parameter used in read/write syscalls. + */ +#define DEFAULT_RW_SIZE 256 + +/** + * @brief Retrieves the input provided to the main program. + * + * This function processes the program arguments and returns them as a single + * heap-allocated string. The returned string always ends with a null byte + * (`\0`). + * + * @param argc The argument count passed to main(). + * @param argv The argument vector passed to main(). + * @return A pointer to a `struct string` containing the input, or `NULL` on + * failure. + */ +struct string *get_input(int argc, char *argv[]); + +#endif /* ! IOBACKEND_H */ diff --git a/42sh/src/IO/Makefile.am b/42sh/src/IO/Makefile.am new file mode 100644 index 0000000..27b5721 --- /dev/null +++ b/42sh/src/IO/Makefile.am @@ -0,0 +1,11 @@ +lib_LIBRARIES = libIO.a + +libIO_a_SOURCES = \ + IOBackend.h \ + string_input.c + +libIO_a_CPPFLAGS = -I$(top_srcdir)/src + +libIO_a_CFLAGS = -std=c99 -Werror -Wall -Wextra -Wvla -pedantic + +noinst_LIBRARIES = libIO.a diff --git a/42sh/src/IO/string_input.c b/42sh/src/IO/string_input.c new file mode 100644 index 0000000..2f252fb --- /dev/null +++ b/42sh/src/IO/string_input.c @@ -0,0 +1,115 @@ +#define _POSIX_C_SOURCE 200809L + +#include +#include +#include +#include + +#include "IO/IOBackend.h" +#include "utils/env.h" + +static void _usage_xerror(void) +{ + errx(2, "Usage:\n\ + \t./42sh [--pretty-print] [FILENAME]\n\ + \t./42sh [-c | --pretty-print] [FILENAME]\n\ + \t./42sh [--pretty-print] [ < FILENAME ]"); +} + +static struct string *_parse_input(FILE *f) +{ + ssize_t r = 0; + struct string *output = string_create(NULL); + char buf[DEFAULT_RW_SIZE + 1] = { 0 }; + do + { + r = fread(buf, sizeof(char), DEFAULT_RW_SIZE, f); + if (r == -1) + { + fprintf(stderr, "_parse_input: fread failed!"); + return NULL; + } + buf[r] = 0; + string_pushstr(output, buf); + } while (r >= DEFAULT_RW_SIZE); + + return output; +} + +static void _add_newline(struct string *s) +{ + if (s->data[s->length - 1] != '\n') + { + string_pushc(s, '\n'); + } +} + +struct string *get_input(int argc, char *argv[]) +{ + int i = 1; + bool s_input = false; + FILE *f = NULL; + while (i < argc && argv[i][0] == '-') + { + if (strcmp(argv[i], "-c") == 0) + { + s_input = true; + i++; + continue; + } + + if (strcmp(argv[i], "--pretty-print") == 0) + { + env_set("PRETTY_PRINT", "TRUE"); + i++; + continue; + } + + _usage_xerror(); + } + if (i == argc) + { + f = stdin; + } + else + { + char *input = argv[i]; + if (s_input) + { + f = fmemopen(input, strlen(input) + 1, "r"); + } + else + { + f = fopen(input, "r"); + env_set("0", input); + } + } + + if (!f) + { + errx(2, "Invalid path!"); + } + + struct string *string_input = _parse_input(f); + if (f != stdin) + { + fclose(f); + } + + int nb_args = 0; + i++; + for (; i < argc; i++) + { + nb_args++; + char buf[16] = { 0 }; + sprintf(buf, "%d", nb_args); + env_set(buf, argv[i]); + } + + char buf2[16] = { 0 }; + sprintf(buf2, "%d", (s_input && nb_args > 0) ? 1 : nb_args); + env_set("#", buf2); + + _add_newline(string_input); + return string_input; +} diff --git a/42sh/src/Makefile.am b/42sh/src/Makefile.am new file mode 100644 index 0000000..95d8eb4 --- /dev/null +++ b/42sh/src/Makefile.am @@ -0,0 +1,28 @@ +# define the subdirectories +SUBDIRS = ast \ + builtins \ + parser \ + lexer \ + utils \ + IO \ + exec + + +bin_PROGRAMS = 42sh + +42sh_SOURCES = helper.h \ + helper.c \ + 42sh.c + +42sh_CPPFLAGS = -I%D% + +42sh_CFLAGS = -std=c99 -Werror -Wall -Wextra -Wvla -pedantic + +42sh_LDADD = \ + parser/libparser.a \ + IO/libIO.a \ + ast/libast.a \ + exec/libeval.a \ + lexer/liblexer.a \ + utils/libutils.a \ + builtins/libbuiltins.a diff --git a/42sh/src/ast/Makefile.am b/42sh/src/ast/Makefile.am new file mode 100644 index 0000000..6967aa1 --- /dev/null +++ b/42sh/src/ast/Makefile.am @@ -0,0 +1,14 @@ +lib_LIBRARIES = libast.a + +libast_a_SOURCES = \ + ast.h \ + ast.c \ + ast_accessors.h \ + ast_accessors.c \ + ast_pretty_print.c + +libast_a_CPPFLAGS = -I$(top_srcdir)/src + +libast_a_CFLAGS = -std=c99 -Werror -Wall -Wextra -Wvla -pedantic + +noinst_LIBRARIES = libast.a diff --git a/42sh/src/ast/ast.c b/42sh/src/ast/ast.c new file mode 100644 index 0000000..41b7a55 --- /dev/null +++ b/42sh/src/ast/ast.c @@ -0,0 +1,164 @@ +#include "ast/ast.h" + +#include +#include + +#include "ast/ast_accessors.h" + +static const size_t ast_size_ltable[] = { + [AST_COMMAND] = sizeof(struct ast_command), + [AST_IF] = sizeof(struct ast_if), + [AST_LOGICAL] = sizeof(struct ast_logical), + [AST_LIST] = sizeof(struct ast_list), + [AST_REDIRECTION] = sizeof(struct ast_redirection), + [AST_PIPELINE] = sizeof(struct ast_pipeline), + [AST_WHILE] = sizeof(struct ast_while), + [AST_ASSIGN] = sizeof(struct ast_assign), + [AST_FOR] = sizeof(struct ast_for), + [AST_FUNCTION] = sizeof(struct ast_function), + [AST_SUBSHELL] = sizeof(struct ast_subshell) +}; + +struct ast *ast_create(enum ast_node type) +{ + struct ast *a = calloc(1, ast_size_ltable[type]); + if (!a) + { + fprintf(stderr, "ast_create: calloc failed.\n"); + return NULL; + } + + a->type = type; + return a; +} + +static void free_str_args(struct string **args) +{ + if (!args) + { + return; + } + size_t i = 0; + while (args[i]) + { + string_free(args[i]); + i++; + } + free(args); +} + +static void _free_ast_command(struct ast *ast) +{ + free_str_args(((struct ast_command *)ast)->args); + free(ast); +} + +static void _free_ast_if(struct ast *ast) +{ + ast_free(get_i(ast, 0)); + ast_free(get_i(ast, 1)); + ast_free(get_i(ast, 2)); + free(ast); +} + +static void _free_ast_list(struct ast *ast) +{ + for (size_t i = 0; i < ((struct ast_list *)ast)->nb_children; i++) + { + ast_free(get_i(ast, i)); + } + free(((struct ast_list *)ast)->children); + free(ast); +} + +static void _free_ast_logical(struct ast *ast) +{ + ast_free(((struct ast_logical *)ast)->left); + ast_free(((struct ast_logical *)ast)->right); + free(ast); +} + +static void _free_ast_pipeline(struct ast *ast) +{ + ast_free(((struct ast_pipeline *)ast)->left); + ast_free(((struct ast_pipeline *)ast)->right); + free(ast); +} + +static void _free_redir_struct(struct ast *ast) +{ + struct ast_redirection *ast_r = ((struct ast_redirection *)ast); + string_free(ast_r->redirect.fd); + string_free(ast_r->redirect.file); + string_free(ast_r->redirect.redir); +} + +static void _free_ast_redirection(struct ast *ast) +{ + ast_free(((struct ast_redirection *)ast)->expr); + _free_redir_struct(ast); + free(ast); +} + +static void _free_ast_while(struct ast *ast) +{ + ast_free(((struct ast_while *)ast)->cond); + ast_free(((struct ast_while *)ast)->body); + free(ast); +} + +static void _free_ast_assign(struct ast *ast) +{ + string_free(((struct ast_assign *)ast)->name); + string_free(((struct ast_assign *)ast)->val); + free(ast); +} + +static void _free_ast_for(struct ast *ast) +{ + struct ast_for *ast_f = ((struct ast_for *)ast); + ast_free(ast_f->left); + ast_free(ast_f->right); + string_free(ast_f->var); + // Someone probably forgot to free the ast itself + free(ast); +} + +static void _free_ast_function(struct ast *ast) +{ + struct ast_function *ast_fun = ((struct ast_function *)ast); + ast_free(ast_fun->body); + string_free(ast_fun->name); + free(ast); +} + +static void _free_ast_subshell(struct ast *ast) +{ + ast_free(((struct ast_subshell *)ast)->body); + free(ast); +} + +typedef void (*free_fct)(struct ast *); + +static const free_fct free_function_ltable[] = { + [AST_COMMAND] = _free_ast_command, + [AST_IF] = _free_ast_if, + [AST_LOGICAL] = _free_ast_logical, + [AST_LIST] = _free_ast_list, + [AST_PIPELINE] = _free_ast_pipeline, + [AST_REDIRECTION] = _free_ast_redirection, + [AST_WHILE] = _free_ast_while, + [AST_ASSIGN] = _free_ast_assign, + [AST_FOR] = _free_ast_for, + [AST_FUNCTION] = _free_ast_function, + [AST_SUBSHELL] = _free_ast_subshell +}; + +void ast_free(struct ast *ast) +{ + if (!ast) + { + return; + } + free_function_ltable[ast->type](ast); +} diff --git a/42sh/src/ast/ast.h b/42sh/src/ast/ast.h new file mode 100644 index 0000000..3a1d20a --- /dev/null +++ b/42sh/src/ast/ast.h @@ -0,0 +1,221 @@ +#ifndef AST_H +#define AST_H + +#include + +#include "ast/ast_redirect.h" +#include "lexer/token.h" +#include "utils/libstring.h" + +/** + * @brief Each node type represent a class of elements from the SCL grammar. + */ +enum ast_node +{ + // STEP 1 + AST_COMMAND, + AST_IF, + AST_LOGICAL, + AST_LIST, + + // STEP 2 + AST_PIPELINE, + AST_REDIRECTION, + AST_WHILE, + AST_ASSIGN, + AST_FOR, + + // STEP 3 + AST_FUNCTION, + AST_SUBSHELL +}; + +/** + * @brief Base struct for the AST implementation. + */ +struct ast +{ + enum ast_node type; /**< Type of the targeted AST. Used for inheritance. */ +}; + +/** + * @brief AST which represent any kind of `command`. + * It can be a `shell command` or a `simple command`. + * Both are evaluated the same. + */ +struct ast_command +{ + struct ast base; /**< Base struct for the AST implementation. */ + struct string **args; /**< `args` used to call the given command. */ +}; + +/** + * @brief AST which represent a `if/then/elif/else` block. + * An `if` statement may not contain an `elif` or an `else` block. + * If the `if` statement contains an `elif` block, it is stored as an + * `ast_if` in the `else_body`. + */ +struct ast_if +{ + struct ast base; /**< Base struct for the AST implementation. */ + struct ast *condition; /**< Contains the AST to evaluate as a condition. */ + struct ast *then_body; /**< Contains the AST of the `then` block. */ + struct ast *else_body; /**< Contains the AST of the `else` block. */ +}; + +/** + * @brief AST which represent a shell list. + * A list can be either a `list` or a `compound list`. + * @note Although this struct contains a `nb_children` value, + * it is parsed as a binary tree, thus `nb_children` never exceeds 2. + */ +struct ast_list +{ + struct ast base; /**< Base struct for the AST implementation. */ + size_t nb_children; /**< Number of elements in the list */ + struct ast ** + children; /** Array of ASTs which represents the elements of the list */ +}; + +/** + * @brief AST which represents any logical block. + * A logical block can be either a `not` block, a `and` block or a `or` block. + * The type of the logical block is determined by the `type` value. + * The `type` value can be either `TOKEN_AND`, `TOKEN_OR` or `TOKEN_NEG`. + * The binary logical operators are evaluated following the lazy method. + * @note If the `type` value is not one of the listed above, the evaluation + * of the tree will always exit this the code 1 and write to `stderr`. + */ +struct ast_logical +{ + struct ast base; /**< Base struct for the AST implementation. */ + enum token_type type; /**< Type of the logical operator. */ + struct ast *left; /**< First block to be evaluated (always evaluated). */ + struct ast *right; /**< Second block to be evaluated (may not be evaluated, + see `note`). */ +}; + +/** + * @brief AST which represents a pipeline. + * The pipeline evaluation creates a context in which the output of + * `left` is redirected to the input of `right`. + */ +struct ast_pipeline +{ + struct ast base; /**< Base struct for the AST implementation. */ + struct ast *left; /**< The output of this AST is given to `right`. */ + struct ast *right; /**< This AST gets its input from `left`. */ +}; + +/** + * @brief AST used to represent redirections + * Redirect is a struct used to store info about this redirection + * Expr is the expression who the output shall be redirected + */ +struct ast_redirection +{ + struct ast base; /**< Base struct for the AST implementation. */ + struct redirect redirect; + struct ast *expr; +}; + +/** + * @brief AST used to represent the while loops (and also the until loops) + * Cond is the condition used to know if the loop shall still iterate + * Body is the tree to execute while the condition is still valid + */ +struct ast_while +{ + struct ast base; + struct ast *cond; + struct ast *body; +}; + +/** + * @brief Struct used for variable assignment + * Name is the name of the variable + * Val is the value of said variable + */ +struct ast_assign +{ + struct ast base; + struct string *name; + struct string *val; +}; + +/** + * @brief Left contains the args (the `in { WORD }` part). + * Right contains the body to execute. + */ +struct ast_for +{ + struct ast base; + struct ast *left; + struct ast *right; + struct string *var; +}; + +/** + * @brief AST used for function definition. + * Name contains the name of the function + * Body contains the actual ast that will be executed each time + * the function is called + */ +struct ast_function +{ + struct ast base; + struct string *name; + struct ast *body; +}; + +/** + * @brief AST used for subshell + * Body just contains the compound list to be executed in the subshell + */ +struct ast_subshell +{ + struct ast base; + struct ast *body; +}; + +union ast_caster +{ + struct ast *ast; + struct ast_command *ast_c; + struct ast_if *ast_i; + struct ast_list *ast_l; + struct ast_logical *ast_lo; + struct ast_pipeline *ast_p; + struct ast_redirection *ast_r; + struct ast_while *ast_w; + struct ast_assign *ast_a; + struct ast_for *ast_f; + struct ast_function *ast_func; + struct ast_subshell *ast_sub; +}; + +/** + * @brief Creates a heap-allocated AST of the size of ast_`type`. + * The AST is returned as a `struct ast*` but it can be casted into the right + * ast type struct. + * @param type The type of the AST to be created. + */ +struct ast *ast_create(enum ast_node type); + +/** + * @brief Recursively frees the given AST. Any heap-allocated can be passed. + * @param ast The AST to be freed. + * @note This method does not exit when `ast` is `NULL`. + */ +void ast_free(struct ast *ast); + +/** + * @brief Creates a file named `ast.dot` in the current folder which + * contains the DOT representation of the given AST. + * @param ast The AST to represent. + * @note This function is called only when the program is called with + * the `--pretty-print` flag. + */ +void pretty_print(struct ast *ast); + +#endif /* ! AST_H */ diff --git a/42sh/src/ast/ast_accessors.c b/42sh/src/ast/ast_accessors.c new file mode 100644 index 0000000..39affad --- /dev/null +++ b/42sh/src/ast/ast_accessors.c @@ -0,0 +1,326 @@ +#include "ast_accessors.h" + +static struct ast *_get_from_command(struct ast *ast, size_t index) +{ + (void)ast; + (void)index; + return NULL; +} + +static struct ast *_get_from_if(struct ast *ast, size_t index) +{ + switch (index) + { + case 0: + return ((struct ast_if *)ast)->condition; + case 1: + return ((struct ast_if *)ast)->then_body; + case 2: + return ((struct ast_if *)ast)->else_body; + default: + return NULL; + } +} + +static struct ast *_get_from_list(struct ast *ast, size_t index) +{ + if (index >= ((struct ast_list *)ast)->nb_children) + { + return NULL; + } + return ((struct ast_list *)ast)->children[index]; +} + +static struct ast *_get_from_logical(struct ast *ast, size_t index) +{ + switch (index) + { + case 0: + return ((struct ast_logical *)ast)->left; + case 1: + return ((struct ast_logical *)ast)->right; + default: + return NULL; + } +} + +static struct ast *_get_from_pipeline(struct ast *ast, size_t index) +{ + switch (index) + { + case 0: + return ((struct ast_pipeline *)ast)->left; + case 1: + return ((struct ast_pipeline *)ast)->right; + default: + return NULL; + } +} + +static struct ast *_get_from_redirection(struct ast *ast, size_t index) +{ + switch (index) + { + case 0: + return ((struct ast_redirection *)ast)->expr; + default: + return NULL; + } +} + +static struct ast *_get_from_while(struct ast *ast, size_t index) +{ + switch (index) + { + case 0: + return ((struct ast_while *)ast)->cond; + case 1: + return ((struct ast_while *)ast)->body; + default: + return NULL; + } +} + +static struct ast *_get_from_assign(struct ast *ast, size_t index) +{ + (void)ast; + (void)index; + return NULL; +} + +static struct ast *_get_from_for(struct ast *ast, size_t index) +{ + switch (index) + { + case 0: + return ((struct ast_for *)ast)->left; + case 1: + return ((struct ast_for *)ast)->right; + default: + return NULL; + } +} + +static struct ast *_get_from_function(struct ast *ast, size_t index) +{ + switch (index) + { + case 0: + return ((struct ast_function *)ast)->body; + default: + return NULL; + } +} + +static struct ast *_get_from_subshell(struct ast *ast, size_t index) +{ + switch (index) + { + case 0: + return ((struct ast_subshell *)ast)->body; + default: + return NULL; + } +} + +typedef struct ast *(*ast_getters)(struct ast *, size_t); + +static const ast_getters ast_getters_ltable[] = { + [AST_COMMAND] = _get_from_command, + [AST_IF] = _get_from_if, + [AST_LOGICAL] = _get_from_logical, + [AST_LIST] = _get_from_list, + [AST_PIPELINE] = _get_from_pipeline, + [AST_REDIRECTION] = _get_from_redirection, + [AST_WHILE] = _get_from_while, + [AST_ASSIGN] = _get_from_assign, + [AST_FOR] = _get_from_for, + [AST_FUNCTION] = _get_from_function, + [AST_SUBSHELL] = _get_from_subshell +}; + +struct ast *get_i(struct ast *ast, size_t index) +{ + return ast_getters_ltable[ast->type](ast, index); +} + +struct ast *get_left(struct ast *ast) +{ + return get_i(ast, 0); +} + +struct ast *get_right(struct ast *ast) +{ + return get_i(ast, 1); +} + +static void _set_on_command(struct ast *ast, struct ast *child, size_t index) +{ + (void)ast; + (void)child; + (void)index; + return; +} + +static void _set_on_if(struct ast *ast, struct ast *child, size_t index) +{ + switch (index) + { + case 0: + ((struct ast_if *)ast)->condition = child; + return; + case 1: + ((struct ast_if *)ast)->then_body = child; + return; + case 2: + ((struct ast_if *)ast)->else_body = child; + return; + default: + return; + } +} + +static void _set_on_logical(struct ast *ast, struct ast *child, size_t index) +{ + switch (index) + { + case 0: + ((struct ast_logical *)ast)->left = child; + break; + case 1: + ((struct ast_logical *)ast)->right = child; + break; + default: + return; + } +} + +static void _set_on_list(struct ast *ast, struct ast *child, size_t index) +{ + if (index > ((struct ast_list *)ast)->nb_children) + { + return; + } + if (index == ((struct ast_list *)ast)->nb_children) + { + ((struct ast_list *)ast)->nb_children++; + ((struct ast_list *)ast)->children = realloc( + ((struct ast_list *)ast)->children, + ((struct ast_list *)ast)->nb_children * sizeof(struct ast_command)); + } + ((struct ast_list *)ast)->children[index] = child; +} + +static void _set_on_pipeline(struct ast *ast, struct ast *child, size_t index) +{ + switch (index) + { + case 0: + ((struct ast_pipeline *)ast)->left = child; + break; + case 1: + ((struct ast_pipeline *)ast)->right = child; + break; + default: + return; + } +} + +static void _set_on_redirection(struct ast *ast, struct ast *child, + size_t index) +{ + switch (index) + { + case 0: + ((struct ast_redirection *)ast)->expr = child; + break; + default: + return; + } +} + +static void _set_on_while(struct ast *ast, struct ast *child, size_t index) +{ + switch (index) + { + case 0: + ((struct ast_while *)ast)->cond = child; + break; + case 1: + ((struct ast_while *)ast)->body = child; + break; + default: + return; + } +} + +static void _set_on_assign(struct ast *ast, struct ast *child, size_t index) +{ + (void)ast; + (void)child; + (void)index; + return; +} + +static void _set_on_for(struct ast *ast, struct ast *child, size_t index) +{ + switch (index) + { + case 0: + ((struct ast_for *)ast)->left = child; + return; + case 1: + ((struct ast_for *)ast)->right = child; + return; + default: + return; + } +} + +static void _set_on_function(struct ast *ast, struct ast *child, size_t index) +{ + switch (index) + { + case 0: + ((struct ast_function *)ast)->body = child; + default: + return; + } +} + +static void _set_on_subshell(struct ast *ast, struct ast *child, size_t index) +{ + switch (index) + { + case 0: + ((struct ast_subshell *)ast)->body = child; + default: + return; + } +} + +typedef void (*ast_setters)(struct ast *, struct ast *, size_t); + +static const ast_setters ast_setters_ltable[] = { + [AST_COMMAND] = _set_on_command, [AST_IF] = _set_on_if, + [AST_LOGICAL] = _set_on_logical, [AST_LIST] = _set_on_list, + [AST_PIPELINE] = _set_on_pipeline, [AST_REDIRECTION] = _set_on_redirection, + [AST_WHILE] = _set_on_while, [AST_ASSIGN] = _set_on_assign, + [AST_FOR] = _set_on_for, [AST_FUNCTION] = _set_on_function, + [AST_SUBSHELL] = _set_on_subshell +}; + +void set_i(struct ast *ast, struct ast *child, size_t index) +{ + ast_setters_ltable[ast->type](ast, child, index); +} + +void set_left(struct ast *ast, struct ast *child) +{ + set_i(ast, child, 0); +} + +void set_right(struct ast *ast, struct ast *child) +{ + set_i(ast, child, 1); +} diff --git a/42sh/src/ast/ast_accessors.h b/42sh/src/ast/ast_accessors.h new file mode 100644 index 0000000..757bff5 --- /dev/null +++ b/42sh/src/ast/ast_accessors.h @@ -0,0 +1,63 @@ +#ifndef AST_ACCESSORS_H +#define AST_ACCESSORS_H + +#include + +#include "ast/ast.h" + +/** + * @brief Returns the i-th child of `ast`. + * The children are stored as follows: + * `index` 0: left child, or expression in unary trees, or `condition` in `if` + * blocks. `index` 1: right child, or `then` expression in `if` blocks. `index` + * 2+: middle children, or `else` expression in `if` blocks (only `index` 2). + * @param ast Any kind of AST. + * @param index The index of the child to get. + * @note All kinds of ASTs can be passed to this function. + * All `index` can be passed to this function too. + * However, if the given type does not have any child or if the `index` is too + * big, `get_i` returns `NULL.` + */ +struct ast *get_i(struct ast *ast, size_t index); + +/** + * @brief Alias for `get_i(ast, 0)`. + * @note See `get_i` for a full explanation. + */ +struct ast *get_left(struct ast *ast); + +/** + * @brief Alias for `get_i(ast, 1)`. + * @note See `get_i` for a full explanation. + */ +struct ast *get_right(struct ast *ast); + +/** + * @brief Sets the `child` as the i-th child of `ast`. + * The children are stored as follows: + * `index` 0: left child, or expression in unary trees, or `condition` in `if` + * blocks. `index` 1: right child, or `then` expression in `if` blocks. `index` + * 2+: middle children, or `else` expression in `if` blocks (only `index` 2). + * @param ast Any kind of AST. + * @param child The child to be assigned in `ast`. + * @param index The position of the child in the `ast`. + * @note All kinds of ASTs can be passed to this function. + * All `index` can be passed to this function too. + * However, if the given type can not contain any child or if the `index` is too + * big, `set_i` does nothing. + */ +void set_i(struct ast *ast, struct ast *child, size_t index); + +/** + * @brief Alias for `set_i(ast, child, 0)`. + * @note See `set_i` for a full explanation. + */ +void set_left(struct ast *ast, struct ast *child); + +/** + * @brief Alias for `set_i(ast, child, 1)`. + * @note See `set_i` for a full explanation. + */ +void set_right(struct ast *ast, struct ast *child); + +#endif /* ! AST_ACCESSORS_H */ diff --git a/42sh/src/ast/ast_pretty_print.c b/42sh/src/ast/ast_pretty_print.c new file mode 100644 index 0000000..17c5b2a --- /dev/null +++ b/42sh/src/ast/ast_pretty_print.c @@ -0,0 +1,247 @@ +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 200809L + +#include +#include + +#include "ast/ast.h" +#include "ast/ast_accessors.h" +#include "ast/ast_redirect.h" +#include "lexer/token.h" + +#define BUFFER_SIZE 10000 + +static char *_type_to_string[] = { [AST_LOGICAL] = "logical block", + [AST_COMMAND] = "command", + [AST_IF] = "conditionnal block", + [AST_LIST] = "list", + [AST_PIPELINE] = "pipeline", + [AST_REDIRECTION] = "redirection", + [AST_WHILE] = "while", + [AST_ASSIGN] = "assign", + [AST_FOR] = "for" }; + +typedef char *(*tostring)(struct ast *); + +static char *_args_tostring(struct string **args) +{ + struct string *output = string_create(NULL); + size_t i = 0; + while (args[i]) + { + struct string *c = string_deepcopy(args[i++]); + string_catenate(output, c); + if (args[i]) + string_pushstr(output, " - "); + } + char *data = output->data; + free(output); + return data; +} + +static char *_ast_command_tostring(struct ast *ast) +{ + char buf[BUFFER_SIZE] = { 0 }; + char *args_to_string = _args_tostring(((struct ast_command *)ast)->args); + int len = snprintf(buf, BUFFER_SIZE, "%s\\nargs: %s", + _type_to_string[ast->type], args_to_string); + free(args_to_string); + char *str = malloc((len + 1) * sizeof(char)); + for (int i = 0; i < len; i++) + { + str[i] = buf[i]; + } + str[len] = 0; + return str; +} + +static char *_ast_if_tostring(struct ast *ast) +{ + char buf[BUFFER_SIZE] = { 0 }; + int len = snprintf(buf, BUFFER_SIZE, "%s\\n", _type_to_string[ast->type]); + char *str = malloc((len + 1) * sizeof(char)); + for (int i = 0; i < len; i++) + { + str[i] = buf[i]; + } + str[len] = 0; + return str; +} + +static char *_get_token_type_to_str(struct ast *ast) +{ + enum token_type t = ((struct ast_logical *)ast)->type; + switch (t) + { + case TOKEN_AND: + return "&&"; + case TOKEN_OR: + return "||"; + case TOKEN_NEG: + return "!"; + default: + return "unknown"; + } +} + +static char *_ast_logical_tostring(struct ast *ast) +{ + char buf[BUFFER_SIZE] = { 0 }; + int len = snprintf(buf, BUFFER_SIZE, "%s\\n%s", _type_to_string[ast->type], + _get_token_type_to_str(ast)); + char *str = malloc((len + 1) * sizeof(char)); + for (int i = 0; i < len; i++) + { + str[i] = buf[i]; + } + str[len] = 0; + return str; +} + +static char *_ast_list_tostring(struct ast *ast) +{ + char buf[BUFFER_SIZE] = { 0 }; + size_t nb_c = ((struct ast_list *)ast)->nb_children; + int len = snprintf(buf, BUFFER_SIZE, "%s\\n%lu child(ren)", + _type_to_string[ast->type], nb_c); + char *str = malloc((len + 1) * sizeof(char)); + for (int i = 0; i < len; i++) + { + str[i] = buf[i]; + } + str[len] = 0; + return str; +} + +static char *_ast_pipeline_tostring(struct ast *ast) +{ + char buf[BUFFER_SIZE] = { 0 }; + int len = snprintf(buf, BUFFER_SIZE, "%s\\nleft | right", + _type_to_string[ast->type]); + char *str = malloc((len + 1) * sizeof(char)); + for (int i = 0; i < len; i++) + { + str[i] = buf[i]; + } + str[len] = 0; + return str; +} + +static char *_ast_assign_tostring(struct ast *ast) +{ + char buf[BUFFER_SIZE] = { 0 }; + struct string *name = ((struct ast_assign *)ast)->name; + struct string *value = ((struct ast_assign *)ast)->val; + int len = snprintf(buf, BUFFER_SIZE, "%s\\n%s=%s", + _type_to_string[ast->type], name->data, value->data); + char *str = malloc((len + 1) * sizeof(char)); + for (int i = 0; i < len; i++) + { + str[i] = buf[i]; + } + str[len] = 0; + return str; +} + +static char *_ast_redirection_tostring(struct ast *ast) +{ + struct redirect r = ((struct ast_redirection *)ast)->redirect; + char buf[BUFFER_SIZE] = { 0 }; + int len = + snprintf(buf, BUFFER_SIZE, "%s\\n%s %s %s", _type_to_string[ast->type], + r.fd->data, r.redir->data, r.file->data); + char *str = malloc((len + 1) * sizeof(char)); + for (int i = 0; i < len; i++) + { + str[i] = buf[i]; + } + str[len] = 0; + return str; +} + +static char *_ast_while_tostring(struct ast *ast) +{ + char buf[BUFFER_SIZE] = { 0 }; + int len = snprintf(buf, BUFFER_SIZE, "%s\\nleft is cond\nright is body", + _type_to_string[ast->type]); + char *str = malloc((len + 1) * sizeof(char)); + for (int i = 0; i < len; i++) + { + str[i] = buf[i]; + } + str[len] = 0; + return str; +} + +static char *_ast_for_tostring(struct ast *ast) +{ + char buf[BUFFER_SIZE] = { 0 }; + int len = snprintf(buf, BUFFER_SIZE, "%s\\nleft is words\nright is body", + _type_to_string[ast->type]); + char *str = malloc((len + 1) * sizeof(char)); + for (int i = 0; i < len; i++) + { + str[i] = buf[i]; + } + str[len] = 0; + return str; +} + +static const tostring _node_to_string_ltable[] = { + [AST_LOGICAL] = _ast_logical_tostring, + [AST_COMMAND] = _ast_command_tostring, + [AST_IF] = _ast_if_tostring, + [AST_LIST] = _ast_list_tostring, + [AST_PIPELINE] = _ast_pipeline_tostring, + [AST_REDIRECTION] = _ast_redirection_tostring, + [AST_WHILE] = _ast_while_tostring, + [AST_ASSIGN] = _ast_assign_tostring, + [AST_FOR] = _ast_for_tostring +}; + +static char *_ast_to_string(struct ast *ast) +{ + return _node_to_string_ltable[ast->type](ast); +} + +static void _pretty_print_internal(struct ast *ast, FILE *f) +{ + if (!ast) + { + return; + } + char *format = _ast_to_string(ast); + fprintf(f, "\t%lu [label=\"%s\"];\n", (size_t)ast, format); + free(format); + size_t i = 0; + struct ast *child = NULL; + do + { + child = get_i(ast, i); + if (!child) + { + break; + } + i++; + fprintf(f, "\t%lu -- %lu;\n", (size_t)ast, (size_t)child); + _pretty_print_internal(child, f); + } while (child); +} + +void pretty_print(struct ast *ast) +{ + FILE *f = fopen("ast.dot", "w"); + if (!f) + { + fprintf(stderr, + "pretty_print: unable to open a file to write the DOT AST.\n"); + return; + } + + fprintf(f, "graph {\n"); + + _pretty_print_internal(ast, f); + + fprintf(f, "}\n"); + fclose(f); +} diff --git a/42sh/src/ast/ast_redirect.h b/42sh/src/ast/ast_redirect.h new file mode 100644 index 0000000..2f573a8 --- /dev/null +++ b/42sh/src/ast/ast_redirect.h @@ -0,0 +1,13 @@ +#ifndef AST_REDIRECT_H +#define AST_REDIRECT_H + +#include "utils/libstring.h" + +struct redirect +{ + struct string *fd; // src + struct string *redir; // ('<' | '>' | '>>' | etc ...) + struct string *file; // dest +}; + +#endif /* ! AST_REDIRECT_H */ diff --git a/42sh/src/builtins/Makefile.am b/42sh/src/builtins/Makefile.am new file mode 100644 index 0000000..4a16c3d --- /dev/null +++ b/42sh/src/builtins/Makefile.am @@ -0,0 +1,20 @@ +lib_LIBRARIES = libbuiltins.a + +libbuiltins_a_SOURCES = \ + builtins.h \ + true.c \ + false.c \ + echo.c \ + exit.c \ + break.c \ + export.c \ + continue.c \ + unset.c \ + dot.c \ + cd.c + +libbuiltins_a_CPPFLAGS = -I$(top_srcdir)/src + +libbuiltins_a_CFLAGS = -std=c99 -Werror -Wall -Wextra -Wvla -pedantic + +noinst_LIBRARIES = libbuiltins.a diff --git a/42sh/src/builtins/break.c b/42sh/src/builtins/break.c new file mode 100644 index 0000000..6718de1 --- /dev/null +++ b/42sh/src/builtins/break.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include + +#include "builtins.h" +#include "utils/env.h" + +int my_break(struct string **args) +{ + char *n = "1"; + if (args[0] != NULL) + { + char *end; + long num = strtol(args[0]->data, &end, 10); + if (*end != '\0' || num <= 0) + { + fprintf(stderr, "break: %s: numeric argument required\n", + args[1]->data); + return 2; + } + n = args[0]->data; + } + env_set("BREAK", n); + fflush(stdout); + return 0; +} diff --git a/42sh/src/builtins/builtins.h b/42sh/src/builtins/builtins.h new file mode 100644 index 0000000..6b99918 --- /dev/null +++ b/42sh/src/builtins/builtins.h @@ -0,0 +1,21 @@ +#ifndef BUILTINS_H +#define BUILTINS_H + +#include "utils/libstring.h" + +#define NB_BUILTINS 10 + +typedef int (*builtin)(struct string **); + +int echo(struct string **args); +int my_true(struct string **args); +int my_false(struct string **args); +int my_exit(struct string **args); +int cd(struct string **args); +int my_continue(struct string **args); +int my_break(struct string **args); +int dot(struct string **args); +int unset(struct string **args); +int export(struct string **args); + +#endif /* ! BUILTINS_H */ diff --git a/42sh/src/builtins/cd.c b/42sh/src/builtins/cd.c new file mode 100644 index 0000000..90fd9db --- /dev/null +++ b/42sh/src/builtins/cd.c @@ -0,0 +1,74 @@ +#include +#include +#include +#include + +#include "builtins.h" +#include "utils/env.h" + +int cd_pointpoint(char *path, char *old) +{ + char *current = strrchr(path, '/'); + size_t len = current - path; + if (len == 0) + { + fprintf(stderr, "cd: error with ..\n"); + return 2; + } + char *parent = malloc(len + 1); + memcpy(parent, current, len); + parent[len] = '\0'; + old = path; + path = parent; + env_set("OLDPWD", old); + env_set("PWD", path); + free(parent); + + return 0; +} + +int cd(struct string **args) +{ + if (args[0] == NULL || args[1] != NULL) + { + fprintf(stderr, "cd: error too many arguments\n"); + fflush(stdout); + return 2; + } + if (strcmp(env_get("PWD"), "") == 0) + { + fprintf(stderr, "cd: error with PWD\n"); + fflush(stdout); + return 2; + } + char *old = env_get("OLDPWD"); + char *path = env_get("PWD"); + char *tmp = old; + if (strcmp(args[0]->data, "-") == 0) + { + if (strcmp(old, "") == 0) + { + fprintf(stderr, "cd: error with OLDPWD\n"); + fflush(stdout); + return 2; + } + printf("%s\n", old); + old = path; + path = tmp; + } + else if (strcmp(args[0]->data, "..") == 0) + { + int res = cd_pointpoint(path, old); + fflush(stdout); + return res; + } + else + { + old = path; + path = args[0]->data; + } + env_set("OLDPWD", old); + env_set("PWD", path); + fflush(stdout); + return 0; +} diff --git a/42sh/src/builtins/continue.c b/42sh/src/builtins/continue.c new file mode 100644 index 0000000..295fb8c --- /dev/null +++ b/42sh/src/builtins/continue.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include + +#include "builtins.h" +#include "utils/env.h" + +int my_continue(struct string **args) +{ + char *n = "1"; + if (args[0] != NULL) + { + char *end; + long num = strtol(args[0]->data, &end, 10); + if (*end != '\0' || num <= 0) + { + fprintf(stderr, "continue: %s: numeric argument required\n", + args[1]->data); + return 2; + } + n = args[0]->data; + } + env_set("CONTINUE", n); + fflush(stdout); + return 0; +} diff --git a/42sh/src/builtins/dot.c b/42sh/src/builtins/dot.c new file mode 100644 index 0000000..6cec097 --- /dev/null +++ b/42sh/src/builtins/dot.c @@ -0,0 +1,43 @@ +#include +#include +#include +#include +#include +#include + +#include "builtins.h" +#include "utils/env.h" + +int dot(struct string **args) +{ + if (args[0] == NULL) + { + fprintf(stderr, ".: filename argument required\n"); + fflush(stdout); + return 2; + } + if (args[1] != NULL) + { + fprintf(stderr, ".: too many arguments\n"); + fflush(stdout); + return 2; + } + + FILE *file = fopen(args[0]->data, "r"); + if (file == NULL) + { + fprintf(stderr, ".: filename does not exist\n"); + fflush(stdout); + return 1; + } + + char line[1024]; + while (fgets(line, sizeof(line), file)) + { + // TODO : execute file + fputs(line, stdout); + } + fclose(file); + fflush(stdout); + return 0; +} diff --git a/42sh/src/builtins/echo.c b/42sh/src/builtins/echo.c new file mode 100644 index 0000000..f330050 --- /dev/null +++ b/42sh/src/builtins/echo.c @@ -0,0 +1,94 @@ +#include +#include + +#include "builtins.h" + +static void print_echo(struct string **args, int escapes, int newline, int i) +{ + while (args[i] != NULL) + { + if (escapes) + { + size_t j = 0; + while (j < args[i]->length) + { + if (args[i]->data[j] == '\\' && args[i]->data[j] != '\0') + { + j += 1; + switch (args[i]->data[j]) + { + case 'n': + putchar('\n'); + break; + case 't': + putchar('\t'); + break; + case '\\': + putchar('\\'); + break; + default: + putchar('\\'); + putchar(args[i]->data[j]); + break; + } + j += 1; + } + else + { + putchar(args[i]->data[j]); + j += 1; + } + } + } + else + { + fputs(args[i]->data, stdout); + } + if (args[i + 1] != NULL) + { + putchar(' '); + } + i += 1; + } + if (newline) + { + putchar('\n'); + } +} + +int echo(struct string **args) +{ + int newline = 1; + int escapes = 0; + size_t i = 0; + if (args[0] == NULL) + { + putchar('\n'); + return 0; + } + while (args[i] != NULL && args[i]->data[0] == '-') + { + if (args[i]->length == 2 && args[i]->data[1] == 'n') + { + newline = 0; + i += 1; + } + else if (args[i]->length == 2 && args[i]->data[1] == 'e') + { + escapes = 1; + i += 1; + } + else if (args[i]->length == 2 && args[i]->data[1] == 'E') + { + escapes = 0; + i += 1; + } + else + { + break; + } + } + print_echo(args, escapes, newline, i); + fflush(stdout); + return 0; +} diff --git a/42sh/src/builtins/exit.c b/42sh/src/builtins/exit.c new file mode 100644 index 0000000..943c22f --- /dev/null +++ b/42sh/src/builtins/exit.c @@ -0,0 +1,28 @@ +#include +#include +#include +#include + +#include "builtins.h" + +int my_exit(struct string **args) +{ + unsigned int res = 0; + if (args[0] != NULL) + { + char *c; + long status = strtol(args[0]->data, &c, 10); + if (*c != '\0' || status < 0 || status > 255) + { + fprintf(stderr, "exit: %s: numeric argument required\n", + args[0]->data); + res = 2; + } + else + { + res = (unsigned int)status; + } + } + fflush(stdout); + exit(res); +} diff --git a/42sh/src/builtins/export.c b/42sh/src/builtins/export.c new file mode 100644 index 0000000..358cfc7 --- /dev/null +++ b/42sh/src/builtins/export.c @@ -0,0 +1,68 @@ +#include +#include +#include +#include + +#include "builtins.h" +#include "utils/env.h" + +extern char **environ; + +void printenv(void) +{ + size_t i = 0; + while (environ[i] != NULL) + { + printf("export %s\n", environ[i]); + i += 1; + } +} + +void export_var(struct string *arg) +{ + char *equal = strchr(arg->data, '='); + if (equal != NULL) + { + size_t len = equal - arg->data; + char *var = malloc(len + 1); + memcpy(var, arg->data, len); + char *value = equal + 1; + var[len] = '\0'; + env_set(var, value); + free(var); + } + else + { + env_set(arg->data, ""); + } +} + +int export(struct string **args) +{ + if (args[0] == NULL) + { + printenv(); + fflush(stdout); + return 0; + } + int flagp = 0; + size_t i = 0; + if (strcmp(args[0]->data, "-p") == 0) + { + flagp = 1; + i += 1; + } + if (args[1] == NULL && flagp) + { + printenv(); + fflush(stdout); + return 0; + } + while (args[i] != NULL) + { + export_var(args[i]); + i += 1; + } + fflush(stdout); + return 0; +} diff --git a/42sh/src/builtins/false.c b/42sh/src/builtins/false.c new file mode 100644 index 0000000..17ab256 --- /dev/null +++ b/42sh/src/builtins/false.c @@ -0,0 +1,10 @@ +#include + +#include "builtins.h" + +int my_false(struct string **args) +{ + (void)args; + fflush(stdout); + return 1; +} diff --git a/42sh/src/builtins/true.c b/42sh/src/builtins/true.c new file mode 100644 index 0000000..ed7c7d1 --- /dev/null +++ b/42sh/src/builtins/true.c @@ -0,0 +1,10 @@ +#include + +#include "builtins.h" + +int my_true(struct string **args) +{ + (void)args; + fflush(stdout); + return 0; +} diff --git a/42sh/src/builtins/unset.c b/42sh/src/builtins/unset.c new file mode 100644 index 0000000..77b323a --- /dev/null +++ b/42sh/src/builtins/unset.c @@ -0,0 +1,44 @@ +#include +#include +#include +#include + +#include "builtins.h" +#include "utils/env.h" + +int unset(struct string **args) +{ + size_t i = 0; + int var = 0; + int fun = 0; + while (args[i] != NULL && args[i]->data[0] == '-') + { + if (args[i]->data[1] == 'v') + { + var = 1; + i += 1; + } + else if (args[i]->data[1] == 'f') + { + fun = 1; + i += 1; + } + else + { + break; + } + } + if (var == 0 && fun == 0) + { + var = 1; + fun = 1; + } + // TODO unset with flag -f + while (args[i] != NULL) + { + env_unset(args[i]->data); + i += 1; + } + fflush(stdout); + return 0; +} diff --git a/42sh/src/exec/Makefile.am b/42sh/src/exec/Makefile.am new file mode 100644 index 0000000..a6a9134 --- /dev/null +++ b/42sh/src/exec/Makefile.am @@ -0,0 +1,15 @@ +lib_LIBRARIES = libeval.a + +libeval_a_SOURCES = \ + ast_exec_functions.c \ + ast_exec_functions.h \ + ast_eval.h \ + ast_eval.c \ + ast_exec_redirs.h \ + ast_exec_redirs.c + +libeval_a_CPPFLAGS = -I$(top_srcdir)/src + +libeval_a_CFLAGS = -std=c99 -Werror -Wall -Wextra -Wvla -pedantic + +noinst_LIBRARIES = libeval.a diff --git a/42sh/src/exec/ast_eval.c b/42sh/src/exec/ast_eval.c new file mode 100644 index 0000000..db152f8 --- /dev/null +++ b/42sh/src/exec/ast_eval.c @@ -0,0 +1,20 @@ +#include "exec/ast_eval.h" + +#include "exec/ast_exec_functions.h" + +static const exec_f exec_node_ltable[] = { + [AST_LIST] = exec_ast_list, [AST_IF] = exec_ast_if, + [AST_COMMAND] = exec_ast_command, [AST_LOGICAL] = exec_ast_logical, + [AST_PIPELINE] = exec_ast_pipe, [AST_REDIRECTION] = exec_ast_redirection, + [AST_WHILE] = exec_ast_while, [AST_ASSIGN] = exec_ast_assign, + [AST_FOR] = exec_ast_for, [AST_SUBSHELL] = exec_ast_subshell +}; + +int eval_ast(struct ast *ast) +{ + if (!ast) + { + return SHELL_TRUE; + } + return exec_node_ltable[ast->type](ast); +} diff --git a/42sh/src/exec/ast_eval.h b/42sh/src/exec/ast_eval.h new file mode 100644 index 0000000..785df5a --- /dev/null +++ b/42sh/src/exec/ast_eval.h @@ -0,0 +1,24 @@ +#ifndef AST_EVAL_H +#define AST_EVAL_H + +#include "ast/ast.h" + +/** + * @brief Shell true value, this is not the builtin true. + */ +#define SHELL_TRUE 0 + +/** + * @brief Shell false value, this is not the builtin false. + */ +#define SHELL_FALSE 1 + +/** + * @brief Returns the exit code of the given AST. + * @param ast The AST to evaluate. It is given as a `struct ast*` + * and uses an inheritance-like principle. + * An AST can be of any type from the `enum ast_node`. + */ +int eval_ast(struct ast *ast); + +#endif /* ! AST_EVAL_H */ diff --git a/42sh/src/exec/ast_exec_functions.c b/42sh/src/exec/ast_exec_functions.c new file mode 100644 index 0000000..9885997 --- /dev/null +++ b/42sh/src/exec/ast_exec_functions.c @@ -0,0 +1,491 @@ +#define _POSIX_C_SOURCE 200809L + +#include "exec/ast_exec_functions.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ast/ast_accessors.h" +#include "ast/ast_redirect.h" +#include "exec/ast_exec_redirs.h" +#include "lexer/expansion.h" +#include "utils/env.h" + +#define XCODE_TOENV(R) \ + char buf[16] = { 0 }; \ + sprintf(buf, "%d", (R)); \ + env_set("?", buf) + +static char **convert_args(struct string **args) +{ + size_t l = 0; + while (args[l]) + { + l++; + } + + char **c_args = calloc(l + 1, sizeof(char *)); + if (!c_args) + { + errx(EXIT_FAILURE, "convert_args: calloc failed."); + } + + for (size_t i = 0; i < l; i++) + { + c_args[i] = calloc(args[i]->length + 1, sizeof(char)); + if (!c_args[i]) + { + errx(EXIT_FAILURE, "convert_args: calloc failed."); + } + c_args[i] = strncpy(c_args[i], args[i]->data, args[i]->length); + } + + return c_args; +} + +static void free_args(char **args) +{ + size_t i = 0; + while (args[i]) + { + free(args[i]); + i++; + } + free(args); +} + +static builtin fetch_builtin(struct string *s) +{ + if (!s) + { + return NULL; + } + if (STRINGS_ARE_EQUAL(s->data, "false")) + { + return my_false; + } + if (STRINGS_ARE_EQUAL(s->data, "true")) + { + return my_true; + } + if (STRINGS_ARE_EQUAL(s->data, "echo")) + { + return echo; + } + if (STRINGS_ARE_EQUAL(s->data, ".")) + { + return dot; + } + if (STRINGS_ARE_EQUAL(s->data, "exit")) + { + return my_exit; + } + if (STRINGS_ARE_EQUAL(s->data, "cd")) + { + return cd; + } + if (STRINGS_ARE_EQUAL(s->data, "export")) + { + return export; + } + return NULL; +} + +static int exec_program(struct string **args) +{ + char **argv = convert_args(args); + if (!argv[0]) + { + free_args(argv); + return 127; + } + pid_t p = fork(); + if (!p) + { + execvp(argv[0], argv); + if (errno == ENOEXEC) + { + fprintf(stderr, + "exec_program: the file \'%s\' is not executable.\n", + argv[0]); + free_args(argv); + exit(126); + } + fprintf(stderr, "exec_program: command \'%s\' not found.\n", argv[0]); + free_args(argv); + exit(127); + } + else + { + int status = 0; + waitpid(p, &status, 0); + free_args(argv); + if (WIFEXITED(status)) + { + return WEXITSTATUS(status); + } + return SHELL_FALSE; + } +} + +static struct string **_copy_args(struct string **args) +{ + size_t len = 0; + while (args[len]) + { + len++; + } + struct string **cpy = calloc(len + 1, sizeof(struct string *)); + for (size_t i = 0; i < len; i++) + { + cpy[i] = string_deepcopy(args[i]); + } + return cpy; +} + +static void _free_str_args(struct string **args) +{ + size_t i = 0; + while (args[i]) + { + string_free(args[i]); + i++; + } + free(args); +} + +int exec_ast_command(struct ast *ast) +{ + union ast_caster ast_cast; + ast_cast.ast = ast; + struct string **cpy = _copy_args(ast_cast.ast_c->args); + if (!ast_cast.ast_c->args) + { + _free_str_args(cpy); + fprintf(stderr, "exec_ast_command: invalid args for a command exec.\n"); + XCODE_TOENV(SHELL_FALSE); + return SHELL_FALSE; + } + + size_t i = 0; + size_t j = 0; + while (ast_cast.ast_c->args[i]) + { + struct string *cv = expand_word(ast_cast.ast_c->args[i]); + if (cv->length > 0) + { + string_free(ast_cast.ast_c->args[j]); + ast_cast.ast_c->args[j++] = cv; + } + else + { + string_free(cv); + } + i++; + } + while (ast_cast.ast_c->args[j]) + { + string_free(ast_cast.ast_c->args[j]); + ast_cast.ast_c->args[j++] = NULL; + } + if (i == 0) + { + // No args ! + XCODE_TOENV(SHELL_TRUE); + return SHELL_TRUE; + } + builtin f = fetch_builtin(ast_cast.ast_c->args[0]); + int r = SHELL_TRUE; + if (f != NULL) + { + r = (*f)(ast_cast.ast_c->args + 1); + } + else + { + r = exec_program(ast_cast.ast_c->args); + } + _free_str_args(ast_cast.ast_c->args); + ast_cast.ast_c->args = cpy; + XCODE_TOENV(r); + return r; +} + +int exec_ast_list(struct ast *ast) +{ + union ast_caster ast_cast; + ast_cast.ast = ast; + int status = SHELL_TRUE; + for (size_t i = 0; i < ast_cast.ast_l->nb_children; i++) + { + status = eval_ast(get_i(ast_cast.ast, i)); + } + XCODE_TOENV(status); + return status; +} + +int exec_ast_if(struct ast *ast) +{ + int k = SHELL_TRUE; + if (eval_ast(get_i(ast, 0)) == SHELL_TRUE) + { + k = eval_ast(get_i(ast, 1)); + } + else + { + k = eval_ast(get_i(ast, 2)); + } + XCODE_TOENV(k); + return k; +} + +int exec_ast_logical(struct ast *ast) +{ + union ast_caster ast_cast; + ast_cast.ast = ast; + int k = SHELL_TRUE; + switch (ast_cast.ast_lo->type) + { + case TOKEN_NEG: + k = !eval_ast(get_left(ast)); + break; + case TOKEN_AND: + if (eval_ast(get_left(ast)) == SHELL_TRUE) + { + k = eval_ast(get_right(ast)); + break; + } + k = SHELL_FALSE; + break; + case TOKEN_OR: + if (eval_ast(get_left(ast)) == SHELL_FALSE) + { + k = eval_ast(get_right(ast)); + break; + } + k = SHELL_TRUE; + break; + default: + errx(SHELL_FALSE, + "exec_ast_logical: invalid token type for logical operation. Got: " + "%d", + ast_cast.ast_lo->type); + } + XCODE_TOENV(k); + return k; +} + +int exec_ast_pipe(struct ast *ast) +{ + union ast_caster ast_cast; + ast_cast.ast = ast; + + struct ast *left = ast_cast.ast_p->left; + struct ast *right = ast_cast.ast_p->right; + if (!left || !right) + { + XCODE_TOENV(EXIT_FAILURE); + return EXIT_FAILURE; + } + + int fds[2]; + if (pipe(fds) == -1) + { + XCODE_TOENV(EXIT_FAILURE); + return EXIT_FAILURE; + } + + pid_t p1 = fork(); + if (!p1) + { + close(fds[0]); + dup2(fds[1], STDOUT_FILENO); + int r1 = eval_ast(left); + exit(r1); + } + + pid_t p2 = fork(); + if (!p2) + { + close(fds[1]); + dup2(fds[0], STDIN_FILENO); + int r2 = eval_ast(right); + exit(r2); + } + + close(fds[0]); + close(fds[1]); + + int status = 0; + waitpid(p1, &status, 0); + waitpid(p2, &status, 0); + + if (WIFEXITED(status)) + { + int k = WEXITSTATUS(status); + XCODE_TOENV(k); + return k; + } + XCODE_TOENV(SHELL_FALSE); + return SHELL_FALSE; +} + +inline static bool _is_a_std_fd(int fd) +{ + return fd >= STDIN_FILENO && fd <= STDERR_FILENO; +} + +static int _exec_ast_redir(struct ast_redirection *ast, int left_fd, + int right_fd) +{ + // Save std fds + int cpy_stdin = dup(STDIN_FILENO); + int cpy_stdout = dup(STDOUT_FILENO); + int cpy_stderr = dup(STDERR_FILENO); + if (right_fd == CLOSE_FD) + { + close(left_fd); + } + else + { + dup2(right_fd, left_fd); + } + + int r = eval_ast(ast->expr); + + if (!_is_a_std_fd(right_fd)) + { + close(right_fd); + } + if (!_is_a_std_fd(left_fd)) + { + close(left_fd); + } + + // Restore std fds + dup2(cpy_stdin, STDIN_FILENO); + dup2(cpy_stdout, STDOUT_FILENO); + dup2(cpy_stderr, STDERR_FILENO); + XCODE_TOENV(r); + return r; +} + +int exec_ast_redirection(struct ast *ast) +{ + union ast_caster ast_cast; + ast_cast.ast = ast; + + int left_fd = 0; + int right_fd = 0; + find_fds(ast_cast.ast_r->redirect, &left_fd, &right_fd); + if (left_fd == BAD_FD || right_fd == BAD_FD) + { + fprintf(stderr, "redirection: bad fd.\n"); + XCODE_TOENV(SHELL_FALSE); + return SHELL_FALSE; + } + + int k = _exec_ast_redir(ast_cast.ast_r, left_fd, right_fd); + XCODE_TOENV(k); + return k; +} + +int exec_ast_while(struct ast *ast) +{ + int k = SHELL_TRUE; + while (true) + { + int r = eval_ast(((struct ast_while *)ast)->cond); + if (r != SHELL_TRUE) + { + break; + } + k = eval_ast(((struct ast_while *)ast)->body); + } + XCODE_TOENV(k); + return k; +} + +int exec_ast_assign(struct ast *ast) +{ + struct ast_assign *ast_a = (struct ast_assign *)ast; + struct string *expanded = expand_word(ast_a->val); + env_set(ast_a->name->data, expanded->data); + string_free(expanded); + XCODE_TOENV(SHELL_TRUE); + return SHELL_TRUE; +} + +int exec_ast_for(struct ast *ast) +{ + if (!get_left(ast)) + { + XCODE_TOENV(SHELL_TRUE); + return SHELL_TRUE; + } + struct string **args = ((struct ast_command *)get_left(ast))->args; + struct string *name = ((struct ast_for *)ast)->var; + int k = SHELL_TRUE; + size_t i = 0; + while (args[i]) + { + struct string *value = args[i]; + i++; + env_set(name->data, value->data); + k = eval_ast(get_right(ast)); + } + XCODE_TOENV(k); + return k; +} + +static int _exec_fork(struct ast *ast) +{ + pid_t child = fork(); + + if (child == -1) + { + XCODE_TOENV(SHELL_FALSE); + return SHELL_FALSE; + } + else if (child) + { + // Parent process + + int status; + // Why did I put 0 last time I used fork(2) + waitpid(child, &status, 0); + + if (!WIFEXITED(status)) + { + XCODE_TOENV(SHELL_FALSE); + return SHELL_FALSE; + } + + return WEXITSTATUS(status); + } + else + { + // Child process + + int ret = eval_ast(ast); + // Need to exit or else we will have to exit from the main function + // So we will execute the remainder of the ast twice + // Which is not what we want + exit(ret); + } +} + +int exec_ast_subshell(struct ast *ast) +{ + struct ast *sub = get_left(ast); + int fork_res = _exec_fork(sub); + // TODO:The exit codes might not be the correct one + XCODE_TOENV(fork_res); + return fork_res; +} diff --git a/42sh/src/exec/ast_exec_functions.h b/42sh/src/exec/ast_exec_functions.h new file mode 100644 index 0000000..ba2fbcd --- /dev/null +++ b/42sh/src/exec/ast_exec_functions.h @@ -0,0 +1,77 @@ +#ifndef AST_EXEC_FUNCTIONS_H +#define AST_EXEC_FUNCTIONS_H + +#include "builtins/builtins.h" +#include "exec/ast_eval.h" + +#define BASE_RW_SIZE 256 + +typedef int (*exec_f)(struct ast *ast); + +/** + * @brief Evaluates the given AST and return the exit code of it. + * A command can be a shell builtin or an external binary file called with + * `execvp`. + * @param ast An `AST_COMMAND` AST to evaluate. It is given as a `struct ast*` + * and uses inheritance-like principle. + */ +int exec_ast_command(struct ast *ast); + +/** + * @brief Evaluates the given AST and return the exit code of it. + * It performs a lazy evaluation. + * @param ast An `AST_LOGICAL` AST to evaluate. It is given as a `struct ast*` + * and uses inheritance-like principle. + */ +int exec_ast_logical(struct ast *ast); + +/** + * @brief Evaluates the given AST and return the exit code of the last + * `AST_COMMAND`. + * @param ast An `AST_LIST` AST to evaluate. It is given as a `struct ast*` + * and uses inheritance-like principle. + */ +int exec_ast_list(struct ast *ast); + +/** + * @brief Evaluates the given AST and return the exit code of it. + * It performs a lazy evaluation. + * @param ast An `AST_IF` AST to evaluate. It is given as a `struct ast*` + * and uses inheritance-like principle. + */ +int exec_ast_if(struct ast *ast); + +/** + * @brief Evaluates the given AST and return the exit code of it. + * It redirects the standard output of `ast->left` to the standard input of + * `ast->right`. + * @param ast An `AST_PIPELINE` AST to evaluate. It is given as a `struct ast*` + * and uses inheritance-like principle. + */ +int exec_ast_pipe(struct ast *ast); + +/** + * @brief Evaluates the given AST and return the exit code of it. + * It gets the redirection details from `ast->redir` which is a `struct + * redirect`. + * @param ast An `AST_REDIRECTION` AST to evaluate. It is given as a `struct + * ast*` and uses inheritance-like principle. + */ +int exec_ast_redirection(struct ast *ast); + +int exec_ast_while(struct ast *ast); + +int exec_ast_assign(struct ast *ast); + +int exec_ast_for(struct ast *ast); + +/** + * @brief Evaluates the given AST and return the exit code of it. + * It gets the ast corresponding to the subshell and executes it in a new + * environment thanks to the fork(2) function. + * @param ast An `AST_SUBSHELL` AST to evaluate It is given as a `struct ast*` + * and uses inheritance-like principle. + */ +int exec_ast_subshell(struct ast *ast); + +#endif /* ! AST_EXEC_FUNCTIONS_H */ diff --git a/42sh/src/exec/ast_exec_redirs.c b/42sh/src/exec/ast_exec_redirs.c new file mode 100644 index 0000000..5cd013c --- /dev/null +++ b/42sh/src/exec/ast_exec_redirs.c @@ -0,0 +1,149 @@ +#define _POSIX_C_SOURCE 200809L + +#include "exec/ast_exec_redirs.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ast/ast.h" +#include "ast/ast_accessors.h" +#include "ast/ast_redirect.h" +#include "utils/env.h" +#include "utils/libstring.h" + +inline static long _get_open_max(void) +{ + return sysconf(_SC_OPEN_MAX); +} + +static bool _file_exists(char *filename) +{ + struct stat s; + return stat(filename, &s) == 0; +} + +inline static bool _is_a_digit(char c) +{ + return c >= '0' && c <= '9'; +} + +static bool _is_a_number(struct string *s) +{ + size_t i = 0; + while (i < s->length && _is_a_digit(s->data[i])) + { + i++; + } + return i == s->length; +} + +/** + * @brief Assigns the fd described by s to out_fd if s + * describes an integer which is less than _SC_OPEN_MAX. + */ +static void _assign_if_valid_int_fd(struct string *s, int *out_fd) +{ + if (_is_a_number(s)) + { + int fd = atoi(s->data); + if (fd < _get_open_max()) + { + *out_fd = fd; + return; + } + } + *out_fd = BAD_FD; +} + +/** + * @brief Assigns the fd described by s to out_fd if s + * describes an integer which is less than _SC_OPEN_MAX. + * s can also be exactly '-', in which case out_fd contains + * the value CLOSE_FD. + */ +static void _assign_if_valid_fd_and(struct string *s, int *out_fd) +{ + if (_is_a_number(s)) + { + int fd = atoi(s->data); + int cpy_fd = dup(fd); + *out_fd = cpy_fd; + return; + } + if (s->length == 1 && s->data[0] == '-') + { + *out_fd = CLOSE_FD; + return; + } + *out_fd = BAD_FD; +} + +void find_fds(struct redirect r, int *left_fd, int *right_fd) +{ + char *rd = r.redir->data; + static const int filemode = 0644; + + // Default value is no valid left fd is passed in `r`. + *left_fd = BAD_FD; + *right_fd = BAD_FD; + + if (STRINGS_ARE_EQUAL(rd, ">")) + { + // Sec. 2.7.2: noclobber must avoid overwritting on an existing file + if (env_get("noclobber") != NULL && _file_exists(r.file->data)) + { + fprintf(stderr, "redirection: Unable to overwrite on %s.\n", + r.file->data); + return; + } + *right_fd = open(r.file->data, O_WRONLY | O_CREAT | O_TRUNC, filemode); + _assign_if_valid_int_fd(r.fd, left_fd); + } + if (STRINGS_ARE_EQUAL(rd, ">>")) + { + *right_fd = open(r.file->data, O_WRONLY | O_CREAT | O_APPEND, filemode); + _assign_if_valid_int_fd(r.fd, left_fd); + } + if (STRINGS_ARE_EQUAL(rd, ">|")) + { + // Sec. 2.7.2: this redir bypasses noclobber + *right_fd = open(r.file->data, O_WRONLY | O_CREAT | O_TRUNC, filemode); + _assign_if_valid_int_fd(r.fd, left_fd); + } + if (STRINGS_ARE_EQUAL(rd, ">&")) + { + _assign_if_valid_int_fd(r.fd, left_fd); + _assign_if_valid_fd_and(r.file, right_fd); + if (*right_fd == BAD_FD) + { + // Sure why not after all, + // Because when it is about bash posix + // 'undefined' in the SCL means: + // OH <&{filename} is AMBIGUOUS + // BUT >&{filename} is PERFECTLY FINE + *right_fd = + open(r.file->data, O_WRONLY | O_CREAT | O_TRUNC, filemode); + } + } + if (STRINGS_ARE_EQUAL(rd, "<")) + { + *right_fd = open(r.file->data, O_RDONLY); + _assign_if_valid_int_fd(r.fd, left_fd); + } + if (STRINGS_ARE_EQUAL(rd, "<&")) + { + _assign_if_valid_int_fd(r.fd, left_fd); + _assign_if_valid_fd_and(r.file, right_fd); + } + if (STRINGS_ARE_EQUAL(rd, "<>")) + { + *right_fd = open(r.file->data, O_RDWR | O_CREAT, filemode); + _assign_if_valid_int_fd(r.fd, left_fd); + } +} diff --git a/42sh/src/exec/ast_exec_redirs.h b/42sh/src/exec/ast_exec_redirs.h new file mode 100644 index 0000000..4fd32de --- /dev/null +++ b/42sh/src/exec/ast_exec_redirs.h @@ -0,0 +1,11 @@ +#ifndef AST_EXEC_REDIRS_H +#define AST_EXEC_REDIRS_H + +#include "ast/ast_redirect.h" + +#define BAD_FD -1 +#define CLOSE_FD -2 + +void find_fds(struct redirect r, int *left_fd, int *right_fd); + +#endif /* ! AST_EXEC_REDIRS_H */ diff --git a/42sh/src/helper.c b/42sh/src/helper.c new file mode 100644 index 0000000..7f936fc --- /dev/null +++ b/42sh/src/helper.c @@ -0,0 +1,43 @@ +#include "helper.h" + +int _process_input(struct string *input) +{ + struct lexer *lexer = lexer_new(input); + if (!lexer) + { + errx(BAD_GRAMMAR, "main: unable to create lexer."); + } + + enum parser_state status = OK; + + struct ast *ast = NULL; + int r = SHELL_TRUE; + do + { + ast_free(ast); + ast = parse(lexer, &status); + + if (status == ERROR) + { + errx(BAD_GRAMMAR, "main: parse failed."); + } + + if (env_get("PRETTY_PRINT") != NULL) + { + pretty_print(ast); + } + if (ast) + { + r = eval_ast(ast); + } + } while (ast != NULL && status != ERROR); + if (status == ERROR) + { + ast_free(ast); + } + + string_free(lexer->input); + lexer_free(lexer); + + return r; +} diff --git a/42sh/src/helper.h b/42sh/src/helper.h new file mode 100644 index 0000000..6032c1c --- /dev/null +++ b/42sh/src/helper.h @@ -0,0 +1,17 @@ +#ifndef HELPER_H +#define HELPER_H + +#include +#include +#include + +#include "IO/IOBackend.h" +#include "exec/ast_exec_functions.h" +#include "parser/parser.h" +#include "utils/env.h" + +#define BAD_GRAMMAR 2 + +int _process_input(struct string *input); + +#endif /* ! HELPER_H */ diff --git a/42sh/src/lexer/Makefile.am b/42sh/src/lexer/Makefile.am new file mode 100644 index 0000000..4eda36d --- /dev/null +++ b/42sh/src/lexer/Makefile.am @@ -0,0 +1,15 @@ +lib_LIBRARIES = liblexer.a + +liblexer_a_SOURCES = \ + token.h \ + utils.h \ + lexer.h \ + lexer.c \ + expansion.h \ + expansion.c + +liblexer_a_CPPFLAGS = -I$(top_srcdir)/src + +liblexer_a_CFLAGS = -std=c99 -Werror -Wall -Wextra -Wvla -pedantic + +noinst_LIBRARIES = liblexer.a diff --git a/42sh/src/lexer/expansion.c b/42sh/src/lexer/expansion.c new file mode 100644 index 0000000..d648009 --- /dev/null +++ b/42sh/src/lexer/expansion.c @@ -0,0 +1,386 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils/env.h" + +#define BUFFER_SIZE 51 + +#define ERROR_CHECK(MSG) \ + if (str[*i] == '\0') \ + { \ + string_free(input); \ + return clean_exit(MSG, error); \ + } + +#define DQUOTEESCAPED "$\\\n`\"" +// Identifies double-quote escaped characters +#define ISDQUOTEESCAPED(C) strchr(DQUOTEESCAPED, (int)C) + +#define SPECIAL "@*?$#" +// Identifies special variable names +#define ISSPECIAL(C) strchr(SPECIAL, (int)C) + +// error = 1 indicates a missing } +// error = 0 and NULL returned indicates an unrecognized var name +// error = 0 and anything else than NULL returned is the var name +static struct string *get_var_name(char *str, int *error) +{ + struct string *res = string_create(NULL); + int i = 0; + if (str[i] == '{') + { + while (str[i] && str[i] != '}') + { + if (str[i] == '\\' && str[i + 1] == '}') + i++; + string_pushc(res, str[i]); + i++; + } + if (!str[i]) + { + string_free(res); + *error = 1; + return NULL; + } + *error = 0; + return res; + } + else if (ISSPECIAL(str[i]) || isdigit(str[i])) + { + string_pushc(res, str[i]); + *error = 0; + return res; + } + else if (!isalpha(str[i])) + { + *error = 0; + string_free(res); + return NULL; + } + else + { + while (isalnum(str[i]) || str[i] == '_') + string_pushc(res, str[i++]); + return res; + } +} + +// Useful to automate the same exit process accross the few functions +// that often do this +static struct string *clean_exit(char *txt, int *error) +{ + fprintf(stderr, "%s", txt); + *error = 1; + return NULL; +} + +// Creates the fork() in order to make a subshell for the command expansion +// (cf section 2.6.3 of the SCL) +// Only called in expand_substitution() +static struct string *fork_subshell(struct string *input, int j, char *str, + int *error) +{ + int fds[2]; + if (pipe(fds) == -1) + { + return clean_exit("pipe() faild to create 2 fds\n", error); + } + + struct string *output; + pid_t child = fork(); + + if (child == -1) + { + // Fork not working + return clean_exit("fork() faild to produce a children\n", error); + } + else if (child) + { + // Parent process + close(fds[1]); + + output = string_create(NULL); + + char buff[BUFFER_SIZE]; + + buff[BUFFER_SIZE - 1] = 0; + + int r; + + int status; + waitpid(child, &status, 0); + + // Check if the child terminated normally + if (!WIFEXITED(status)) + { + close(fds[0]); + string_free(output); + return clean_exit("Child process failed miserably\n", error); + } + + while ((r = read(fds[0], buff, 50))) + { + buff[r] = 0; + if (!string_pushstr(output, buff)) + { + string_free(output); + return clean_exit("Failed to transfer from pipe\n", error); + } + } + + close(fds[0]); + return output; + } + else + { + // Child process + str += j; + close(fds[0]); + + if (dup2(fds[1], STDOUT_FILENO) == -1) + { + // We are forced to return NULL + // how are we going to know if something wnet wrong ? + exit(-1); + } + + _process_input(input); + + close(fds[1]); + exit(1); + } +} + +static int look_for_next(char *in, int i, char c) +{ + int escaped = 0; + while (in[i] && (in[i] != c || (escaped && in[i] == c))) + { + if (in[i] == '\\') + escaped ^= 1; + else + escaped = 0; + i++; + } + return i; +} + +// Removes all the characters at the end of the string obtained by +// the command substitution (Also section 2.6.3 of the SCL) +static void trimming_newline(struct string *txt) +{ + if (!txt->length) + { + return; + } + char *str = txt->data; + size_t len = txt->length; + + size_t i = len - 1; + while (str[i] == '\n') + { + str[i] = 0; + len--; + } + + // I am scared and I know this isn't useful but just in case + txt->data = str; + txt->length = len; +} + +// Performs the substitution (forks and get back the stdout) +struct string *expand_substitution(char *str, int *i, int *error, char delim) +{ + int j = *i; + struct string *input = string_create(NULL); + if (input == NULL) + { + return clean_exit("Could not create string for input\n", error); + } + + if (delim == '`') + { + *i = look_for_next(str, j, delim); + + ERROR_CHECK("Could not match `\n") + + str[*i] = '\0'; + } + // Sadly, there is no other way around this + else + { + int escaped = 0; + int par_count = 1; + + while (str[*i] != 0) + { + if (str[*i] == '\\') + { + escaped ^= 1; + } + else if (str[*i] == '\'') + { + (*i) += 1; + while (str[*i] != '\0' && str[*i] != '\'') + { + (*i) += 1; + } + ERROR_CHECK("Missing matching '\n") + } + else if ((str[*i] == '\"' || str[*i] == '`') && !escaped) + { + (*i) += 1; + *i = look_for_next(str, *i, str[(*i) - 1]); + + ERROR_CHECK("Missing matching `\n") + } + else if (str[*i] == '(' && !escaped) + { + par_count++; + } + else if (str[*i] == delim && !escaped) + { + par_count--; + if (!par_count) + { + str[*i] = 0; + break; + } + } + else + { + escaped = 0; + } + + (*i)++; + } + } + + string_pushstr(input, str + j); + struct string *output = fork_subshell(input, j, str, error); + string_free(input); + + trimming_newline(output); + str[*i] = delim; + return output; +} + +static int expand_var(struct string *res, char *input, int i) +{ + // Will only be called after a '$' was read + + int e = 0; + struct string *name = get_var_name(input + i + 1, &e); + + if (e) + { + string_free(name); + fprintf(stderr, "Missing } in variable expansion\n"); + return -1; + } + else if (name == NULL) + { + string_pushc(res, input[i]); + i++; + } + else + { + // Get the value associated to the name + char *value = env_get(name->data); + // Concatenate the strings if the variable has a value + if (value) + string_pushstr(res, value); + if (input[++i] == '{') + i += 2; + i += name->length; + string_free(name); + } + return i; +} + +static int expand_dquotes(char *input, int i, struct string *res) +{ + while (input[i] != '"') + { + if (input[i] == '$') + { + if ((i = i + expand_var(res, input, i)) == -1) + { + string_free(res); + return -1; + } + continue; + } + if ((input[i] == '`' || (input[i] == '$' && input[i + 1] == '('))) + { + int e = 0; + i += (input[i] == '$' ? 2 : 1); + struct string *output = + expand_substitution(input, &i, &e, input[i]); + if (!e) + { + string_free(res); + return -1; + } + + // +1 for the last parenthesis/backquote + i++; + string_catenate(res, output); + continue; + } + if (input[i] == '\\' && ISDQUOTEESCAPED(input[i + 1])) + i++; + string_pushc(res, input[i]); + i++; + } + return i; +} + +struct string *expand_word(struct string *word) +{ + char *input = word->data; + int escape = 0; + struct string *res = string_create(NULL); + for (int i = 0; input[i]; i++) + { + if (!escape && input[i] == '\'') + { + while (input[++i] != '\'') + string_pushc(res, input[i]); + } + else if (!escape && input[i] == '"') + { + i++; + + if ((i = expand_dquotes(input, i, res)) == -1) + return NULL; + } + else if (!escape && input[i] == '\\') + escape ^= 1; + else + { + // We don't care if we are after a backslash, we just include this + // char + if (input[i] == '$' && !escape) + { + if ((i = i + expand_var(res, input, i)) == -1) + { + string_free(res); + return NULL; + } + continue; + } + string_pushc(res, input[i]); + escape = 0; + } + } + + // string_free(word); + return res; +} diff --git a/42sh/src/lexer/expansion.h b/42sh/src/lexer/expansion.h new file mode 100644 index 0000000..4729cb8 --- /dev/null +++ b/42sh/src/lexer/expansion.h @@ -0,0 +1,13 @@ +#ifndef EXPANSION_H +#define EXPANSION_H + +#include +#include + +#include "helper.h" + +struct string *expand_substitution(char *str, int *i, int *error, char delim); + +struct string *expand_word(struct string *word); + +#endif /* ! EXPANSION_H */ diff --git a/42sh/src/lexer/lexer.c b/42sh/src/lexer/lexer.c new file mode 100644 index 0000000..eac77ab --- /dev/null +++ b/42sh/src/lexer/lexer.c @@ -0,0 +1,359 @@ +#include "lexer.h" + +#include +#include +#include +#include + +#include "expansion.h" +#include "utils.h" + +#define NEWLINEESCAPE (in[lexer->pos] == '\\' && in[lexer->pos + 1] == '\n') +#define SEPARATORS " \n;&|<>()" +#define ISSEPARATOR(I) strchr(SEPARATORS, (int)I) != NULL + +struct lexer *lexer_new(struct string *input) +{ + struct lexer *new = malloc(sizeof(struct lexer)); + new->input = input; + new->pos = 0; + new->processed = 0; + new->current_tok.value = NULL; + new->current_tok.type = TOKEN_EOF; + return new; +} + +void lexer_free(struct lexer *lexer) +{ + free(lexer); +} + +static void yeet_comment(struct lexer *l) +{ + while (l->input->data[l->pos] && l->input->data[l->pos] != '\n') + l->pos++; +} + +static int create_ionumber(struct lexer *l) +{ + struct string *str = string_create(NULL); + int i; + for (i = l->pos; isdigit(l->input->data[i]); i++) + string_pushc(str, l->input->data[i]); + if (l->input->data[i] == '<' || l->input->data[i] == '>') + { + l->current_tok.type = TOKEN_IONUMBER; + l->current_tok.value = str; + return 1; + } + else + { + string_free(str); + return 0; + } +} + +static int look_for_next(char *in, int i, char c) +{ + int escaped = 0; + while (in[i] && (in[i] != c || (escaped && in[i] == c))) + { + if (in[i] == '\\') + escaped ^= 1; + else + escaped = 0; + i++; + } + return i; +} + +static struct string *substitution(char *in, int i) +{ + char split = in[i]; + in[i] = '\0'; + struct string *new_input = string_create(in); + + if (split == '$') + { + i++; + } + + i++; + int error = 0; + struct string *substitute = + expand_substitution(in, &i, &error, (split == '`') ? '`' : ')'); + + if (error) + { + string_free(new_input); + return NULL; + } + + string_catenate(new_input, substitute); + + struct string *end_input = string_create(in + i + 1); + string_catenate(new_input, end_input); + + return new_input; +} + +static char extract_word(struct lexer *l, int *end) +{ + char *in = l->input->data; + int i = l->pos; + // True if we are currently inside quotes + int escaped = 0; + + while (in[i]) + { + if (!escaped && ((in[i] == '$' && in[i + 1] == '(') || in[i] == '`')) + { + struct string *new_input = substitution(in, i); + if (new_input == NULL) + { + l->current_tok.type = TOKEN_ERROR; + return '\0'; + } + + string_free(l->input); + l->input = new_input; + in = l->input->data; + } + // Checking that we are NOT in a quote and have a separator + if (!escaped && ISSEPARATOR(in[i])) + break; + if (!escaped && in[i] == '\'') + { + i++; + while (in[i] && in[i] != '\'') + i++; + if (!in[i]) + { + l->current_tok.type = TOKEN_ERROR; + return '\0'; + } + } + else if (!escaped && in[i] == '"') + { + i = look_for_next(in, i + 1, in[i]); + if (!in[i]) + { + l->current_tok.type = TOKEN_ERROR; + return '\0'; + } + } + else if (in[i] == '\\') + { + escaped ^= 1; + } + else + escaped = 0; + i++; + } + + char tmp = in[i]; + in[i] = '\0'; + *end = i; + return tmp; +} + +static enum token_type word_or_ass(struct token t) +{ + char *word = t.value->data; + if (isdigit(word[0])) + { + return TOKEN_WORD; + } + for (int i = 0; word[i]; i++) + { + if (word[i] == '=') + { + return TOKEN_ASS_WORD; + } + if (word[i] != '_' && !isalnum(word[i])) + { + return TOKEN_WORD; + } + } + return TOKEN_WORD; +} + +static void lex_word(struct lexer *l) +{ + int i = 0; + char tmp = extract_word(l, &i); + if (l->current_tok.type == TOKEN_ERROR) + return; + char *in = l->input->data; + + l->current_tok.type = TOKEN_ERROR; + // Identifies reserved words + for (int n = 0; reserved_words[n].word != NULL; n++) + { + if (STRINGS_ARE_EQUAL(in + l->pos, reserved_words[n].word)) + l->current_tok.type = reserved_words[n].type; + } + + // If we couldn't identify a reserved word + if (l->current_tok.type == TOKEN_ERROR) + { + struct string *pp = string_create(in + l->pos); + if (pp == NULL) + { + l->current_tok.type = TOKEN_ERROR; + in[i] = tmp; + return; + } + l->current_tok.value = pp; + // Set the token type + l->current_tok.type = word_or_ass(l->current_tok); + } + in[i] = tmp; +} + +static struct token set_ttype(struct lexer *lexer, enum token_type type) +{ + lexer->current_tok.type = type; + return lexer->current_tok; +} + +static struct token lex_and_or(struct lexer *l) +{ + if (l->input->data[l->pos] == '|' && l->input->data[l->pos + 1] == '|') + l->current_tok.type = TOKEN_OR; + else if (l->input->data[l->pos] == '|' && l->input->data[l->pos + 1] != '|') + l->current_tok.type = TOKEN_PIPE; + else if (l->input->data[l->pos] == '&' && l->input->data[l->pos + 1] == '&') + l->current_tok.type = TOKEN_AND; + else + l->current_tok.type = TOKEN_ERROR; + return l->current_tok; +} + +static struct token lex_redirect(struct lexer *l) +{ + l->current_tok.type = TOKEN_REDIR; + struct string *val = (l->current_tok.value = string_create(NULL)); + string_pushc(val, l->input->data[l->pos]); + if ((l->input->data[l->pos + 1] == '>' || l->input->data[l->pos + 1] == '&') + || (l->input->data[l->pos] == '>' && l->input->data[l->pos + 1] == '|')) + string_pushc(val, l->input->data[l->pos + 1]); + return l->current_tok; +} + +static void lex_special(struct lexer *l) +{ + // If the first char is a digit and we recognized a number followed by a + // redir + if (isdigit(l->input->data[l->pos]) && create_ionumber(l)) + // return immediately + return; + lex_word(l); +} + +struct token lexer_next_token(struct lexer *lexer) +{ + if (lexer->pos >= lexer->input->length) + { + lexer->current_tok.type = TOKEN_EOF; + lexer->current_tok.value = NULL; + return lexer->current_tok; + } + char *in = lexer->input->data; + + for (; in[lexer->pos] && (in[lexer->pos] == ' ' || NEWLINEESCAPE); + lexer->pos++) + { + if (in[lexer->pos] == '\\' && in[lexer->pos + 1] == '\n') + lexer->pos++; + continue; + } + + switch (in[lexer->pos]) + { + case ';': + return set_ttype(lexer, TOKEN_SEMICOLON); + case '\n': + return set_ttype(lexer, TOKEN_NEWLINE); + case '\0': + return set_ttype(lexer, TOKEN_EOF); + case '(': + return set_ttype(lexer, TOKEN_PAR_LEFT); + case ')': + return set_ttype(lexer, TOKEN_PAR_RIGHT); + case '{': + return set_ttype(lexer, TOKEN_CURLY_LEFT); + case '}': + return set_ttype(lexer, TOKEN_CURLY_RIGHT); + case '|': + /* FALLTHROUGH */ + case '&': + return lex_and_or(lexer); + case '<': + /* FALLTHROUGH */ + case '>': + return lex_redirect(lexer); + case '#': + yeet_comment(lexer); + return lexer_next_token(lexer); + default: + lex_special(lexer); + return lexer->current_tok; + } +} + +static void move_pos(struct lexer *lexer) +{ + enum token_type t = lexer->current_tok.type; + if (t == TOKEN_EOF) + { + return; + } + if (t == TOKEN_IF || t == TOKEN_FI || t == TOKEN_IN || t == TOKEN_DO + || t == TOKEN_OR || t == TOKEN_AND) + lexer->pos += 2; + else if (t == TOKEN_FOR) + lexer->pos += 3; + else if (t == TOKEN_ELSE || t == TOKEN_ELIF || t == TOKEN_THEN + || t == TOKEN_DONE) + lexer->pos += 4; + else if (t == TOKEN_WHILE || t == TOKEN_UNTIL) + lexer->pos += 5; + else if (t == TOKEN_WORD || t == TOKEN_IONUMBER || t == TOKEN_REDIR + || t == TOKEN_ASS_WORD) + lexer->pos += lexer->current_tok.value->length; + else + lexer->pos++; +} + +struct token lexer_peek(struct lexer *lexer) +{ + if (lexer->processed) + return lexer->current_tok; + lexer->processed = 1; + struct token res = lexer_next_token(lexer); + + move_pos(lexer); + + return res; +} + +struct token lexer_pop(struct lexer *lexer) +{ + struct token res; + + if (lexer->processed) + { + res = lexer->current_tok; + lexer->processed = 0; + return res; + } + + res = lexer_next_token(lexer); + + move_pos(lexer); + + lexer->processed = 0; + + return res; +} diff --git a/42sh/src/lexer/lexer.h b/42sh/src/lexer/lexer.h new file mode 100644 index 0000000..8d8cdf5 --- /dev/null +++ b/42sh/src/lexer/lexer.h @@ -0,0 +1,48 @@ +#ifndef LEXER_H +#define LEXER_H + +#include +#include +#include + +// True if C could be used as a word +#define ISWORD(C) \ + C == TOKEN_WORD || C == TOKEN_THEN || C == TOKEN_ELIF || C == TOKEN_ELSE \ + || C == TOKEN_IF || C == TOKEN_WHILE || C == TOKEN_UNTIL \ + || C == TOKEN_DO || C == TOKEN_DONE || C == TOKEN_FOR || C == TOKEN_IN \ + || C == TOKEN_NEG || C == TOKEN_FI || C == TOKEN_CURLY_LEFT \ + || C == TOKEN_CURLY_RIGHT + +struct lexer +{ + struct string *input; // input data + size_t pos; // the current offset inside the input data + char processed; + struct token current_tok; // next (if processed) token +}; + +// Creates a new lexer given an input string +struct lexer *lexer_new(struct string *input); + +// Frees the given lexer, not its input +void lexer_free(struct lexer *lexer); + +// Returns a token from the input string +// If the token is a WORD, copies the word to the current_tok.value field +struct token lexer_next_token(struct lexer *lexer); + +/* +** Processes the next token if necessary +** (previous call to lexer_pop or first call) +*/ +// Returns the next token +struct token lexer_peek(struct lexer *lexer); + +/* +** Processes the next token if necessary +** (previous call to lexer_pop or first call) +*/ +// Returns the next token and moves the cursor forward +struct token lexer_pop(struct lexer *lexer); + +#endif /* ! LEXER_H */ diff --git a/42sh/src/lexer/token.h b/42sh/src/lexer/token.h new file mode 100644 index 0000000..89d772a --- /dev/null +++ b/42sh/src/lexer/token.h @@ -0,0 +1,54 @@ +#ifndef TOKEN_H +#define TOKEN_H + +#include + +enum token_type +{ + // STEP 1 + TOKEN_NEWLINE, + TOKEN_EOF, + TOKEN_ERROR, + TOKEN_WORD, + TOKEN_IF, + TOKEN_THEN, + TOKEN_ELIF, + TOKEN_ELSE, + TOKEN_SEMICOLON, + TOKEN_FI, + TOKEN_HASHTAG, + + // STEP 2 + TOKEN_REDIR, + TOKEN_PIPE, + TOKEN_NEG, + TOKEN_WHILE, + TOKEN_UNTIL, + TOKEN_DO, + TOKEN_FOR, + TOKEN_DONE, + TOKEN_AND, + TOKEN_OR, + TOKEN_ESCAPE, + TOKEN_ASS_WORD, + TOKEN_DOUBLEQUOTE, + TOKEN_DOLLAR, + TOKEN_IN, + TOKEN_IONUMBER, + + // STEP 3 + TOKEN_PAR_RIGHT, + TOKEN_PAR_LEFT, + TOKEN_CURLY_RIGHT, + TOKEN_CURLY_LEFT, + + // STEP 4 +}; + +struct token +{ + enum token_type type; + struct string *value; +}; + +#endif /* ! TOKEN_H */ diff --git a/42sh/src/lexer/utils.h b/42sh/src/lexer/utils.h new file mode 100644 index 0000000..3edd83f --- /dev/null +++ b/42sh/src/lexer/utils.h @@ -0,0 +1,23 @@ +#ifndef UTILS_H +#define UTILS_H + +#include + +struct reserved_word +{ + const char *word; + enum token_type type; +}; + +static struct reserved_word reserved_words[] = { + { "if", TOKEN_IF }, { "then", TOKEN_THEN }, + { "elif", TOKEN_ELIF }, { "else", TOKEN_ELSE }, + { "fi", TOKEN_FI }, { "while", TOKEN_WHILE }, + { "until", TOKEN_UNTIL }, { "do", TOKEN_DO }, + { "done", TOKEN_DONE }, { "for", TOKEN_FOR }, + { "in", TOKEN_IN }, { "!", TOKEN_NEG }, + { "}", TOKEN_CURLY_RIGHT }, { "{", TOKEN_CURLY_LEFT }, + { NULL, TOKEN_ERROR } +}; + +#endif /* ! UTILS_H */ diff --git a/42sh/src/parser/Makefile.am b/42sh/src/parser/Makefile.am new file mode 100644 index 0000000..f6c38fb --- /dev/null +++ b/42sh/src/parser/Makefile.am @@ -0,0 +1,21 @@ +lib_LIBRARIES = libparser.a + +libparser_a_SOURCES = \ + parser.h \ + parser.c \ + parser_functions.h \ + parser_commands.c \ + parser_conditionnals.c \ + parser_lists.c \ + parser_operators.c \ + parser_redir.c \ + parser_utils.h \ + parser_utils.c \ + parser_loops.c \ + parser_fundec.c + +libparser_a_CPPFLAGS = -I$(top_srcdir)/src + +libparser_a_CFLAGS = -std=c99 -Werror -Wall -Wextra -Wvla -pedantic + +noinst_LIBRARIES = libparser.a diff --git a/42sh/src/parser/parser.c b/42sh/src/parser/parser.c new file mode 100644 index 0000000..7c6a1b2 --- /dev/null +++ b/42sh/src/parser/parser.c @@ -0,0 +1,40 @@ +#include "parser/parser.h" + +#include + +#include "ast/ast_accessors.h" +#include "lexer/token.h" +#include "parser/parser_functions.h" +#include "parser/parser_utils.h" + +struct ast *parse(struct lexer *lexer, enum parser_state *state) +{ + struct token next = lexer_peek(lexer); + + if (next.type == TOKEN_EOF || next.type == TOKEN_NEWLINE) + { + lexer_pop(lexer); + return NULL; + } + + struct ast *res = parse_list(lexer, state); + + next = lexer_peek(lexer); + + if (error_check(res, state, next)) + { + return NULL; + } + + lexer_pop(lexer); + + if (next.type == TOKEN_EOF || next.type == TOKEN_NEWLINE) + { + return res; + } + else + { + cleanup(res, state); + return NULL; + } +} diff --git a/42sh/src/parser/parser.h b/42sh/src/parser/parser.h new file mode 100644 index 0000000..c029a63 --- /dev/null +++ b/42sh/src/parser/parser.h @@ -0,0 +1,17 @@ +#ifndef PARSER_H +#define PARSER_H + +#include "ast/ast.h" +#include "lexer/lexer.h" +#include "parser/parser_utils.h" + +/** + * @brief The main function to be called in the main loop. It will parse the + * current expression given by the lexer. Return NULL and set the state variable + * to `ERROR` if an error occured, else return the AST for this expression. + * @param lexer The lexer used to create the AST. + * @param state A pointger used to store the current state of the pointer. + */ +struct ast *parse(struct lexer *lexer, enum parser_state *state); + +#endif /* ! PARSER_H */ diff --git a/42sh/src/parser/parser_commands.c b/42sh/src/parser/parser_commands.c new file mode 100644 index 0000000..3321773 --- /dev/null +++ b/42sh/src/parser/parser_commands.c @@ -0,0 +1,393 @@ +#include + +#include "parser_functions.h" +#include "parser_utils.h" + +static struct ast *cons_redirs(struct lexer *lexer, enum parser_state *state, + struct ast *root) +{ + struct token next = lexer_peek(lexer); + + while (TST_REDIR) + { + // The redir constructions are not consistents between the two + // grammars that can create redirs + // This is normal as theses redirs don't serve the same purposes + // This redir here is meant to redir a chuncky command + // While the one on the prefix grammar is meant for redirs mixed + // with assignments of variables + struct ast *redir = parse_redirection(lexer, state); + next = lexer_peek(lexer); + if (error_check(root, state, next)) + { + return NULL; + } + set_left(redir, root); + root = redir; + } + + return root; +} + +struct ast *parse_command(struct lexer *lexer, enum parser_state *state) +{ + struct token next = lexer_peek(lexer); + + if (error_check(NULL, state, next)) + { + return NULL; + } + + // Case where we are in a loop + if (next.type == TOKEN_IF || next.type == TOKEN_WHILE + || next.type == TOKEN_UNTIL || next.type == TOKEN_FOR + || next.type == TOKEN_CURLY_LEFT || next.type == TOKEN_PAR_LEFT) + { + struct ast *loops = parse_shell_command(lexer, state); + next = lexer_peek(lexer); + + if (error_check(loops, state, next)) + { + return NULL; + } + + return cons_redirs(lexer, state, loops); + } + // Case where we're sure we have a prefix + else if (next.type == TOKEN_ASS_WORD || TST_REDIR) + { + return parse_simple_command(lexer, state); + } + // Ambiguous case where a WORD can be used in simple_command or in fundec + // We know that parse_simple will crash if something after the WORD is + // a parenthesis. So we just save the word in case and call simple command + else + { + next = lexer_peek(lexer); + if (next.type != TOKEN_WORD) + { + QUICK_CLEANUP + } + + struct string *cpy = + string_create((next.value) ? next.value->data : NULL); + if (cpy == NULL) + { + QUICK_CLEANUP + } + struct ast *temp = parse_simple_command(lexer, state); + + next = lexer_peek(lexer); + + // I have the feeling that this can be problematic in the case where + // we have a function definiton and a subshell + if (next.type == TOKEN_PAR_LEFT) + { + ast_free(temp); + temp = NULL; + } + + if (temp != NULL) + { + string_free(cpy); + return temp; + } + else + { + // Just like it never happened... + *state = OK; + + if (next.type == TOKEN_WORD) + { + string_free(cpy); + temp = parse_funcdec(lexer, state, NULL); + } + else + { + temp = parse_funcdec(lexer, state, cpy); + } + + next = lexer_peek(lexer); + if (error_check(temp, state, next)) + { + return NULL; + } + + return cons_redirs(lexer, state, temp); + } + } +} + +struct ast *parse_shell_command(struct lexer *lexer, enum parser_state *state) +{ + struct token next = lexer_peek(lexer); + switch (next.type) + { + case TOKEN_IF: + return parse_rule_if(lexer, state); + case TOKEN_WHILE: + return parse_rule_while(lexer, state); + case TOKEN_UNTIL: + return parse_rule_until(lexer, state); + case TOKEN_FOR: + return parse_rule_for(lexer, state); + case TOKEN_CURLY_LEFT: + lexer_pop(lexer); + struct ast *lst = parse_compound_list(lexer, state); + next = lexer_peek(lexer); + + if (error_check(lst, state, next)) + { + return NULL; + } + + if (next.type != TOKEN_CURLY_RIGHT) + { + cleanup(lst, state); + return NULL; + } + + lexer_pop(lexer); + return lst; + case TOKEN_PAR_LEFT: + lexer_pop(lexer); + struct ast *subshell = ast_create(AST_SUBSHELL); + + if (subshell == NULL) + { + QUICK_CLEANUP + } + + struct ast *body = parse_compound_list(lexer, state); + next = lexer_peek(lexer); + set_left(subshell, body); + + if (error_check(subshell, state, next)) + { + return NULL; + } + + if (next.type != TOKEN_PAR_RIGHT) + { + cleanup(subshell, state); + return NULL; + } + + lexer_pop(lexer); + return subshell; + default: + // This case should not happen but just in case + for pedantic warnings + cleanup(NULL, state); + return NULL; + } +} + +struct ast *parse_simple_command(struct lexer *lexer, enum parser_state *state) +{ + struct token next = lexer_peek(lexer); + struct ast *root = NULL; + struct ast *up = NULL; + + // Should be enough to guard against the case where we have no prefix/WORDs + if (next.type != TOKEN_ASS_WORD && next.type != TOKEN_IONUMBER + && next.type != TOKEN_REDIR && next.type != TOKEN_WORD) + { + // Honnestly, it's quite useful and also puts me below 40 lines + QUICK_CLEANUP + } + struct ast *lst = ast_create(AST_LIST); + + if (lst == NULL) + { + QUICK_CLEANUP + } + + size_t i = 0; + + while (next.type == TOKEN_ASS_WORD || TST_REDIR) + { + if (next.type == TOKEN_ASS_WORD) + { + struct ast *var = parse_prefix(lexer, state); + next = lexer_peek(lexer); + if (error_check(var, state, next)) + { + return NULL; + } + + set_i(lst, var, i); + i++; + } + else + { + struct ast *redir = parse_prefix(lexer, state); + next = lexer_peek(lexer); + if (error_check(redir, state, next)) + { + return NULL; + } + + if (root == NULL || up == NULL) + { + root = redir; + up = redir; + set_left(up, lst); + } + else + { + set_left(up, redir); + set_left(redir, lst); + up = redir; + } + } + + next = lexer_peek(lexer); + } + + struct ast *son = parse_element(lexer, state, lst, up); + if (root == NULL) + { + root = son; + } + next = lexer_peek(lexer); + + if (error_check(root, state, next)) + { + // You never know if it was only variable assignment + // If so, this would never be attached to root + // cleanup(lst, state); // this one may not be necessary ~ + return NULL; + } + + return (root == NULL) ? lst : root; +} + +// This function takes care of the reallocation and all the checks that +// comes with calling realloc. (Mainly freeing stuff and exiting) +static struct string **_realloc_ast_command(struct ast *ast, size_t *capacity) +{ + struct ast_command *ast_c = ((struct ast_command *)ast); + size_t i = 0; + while (i < *capacity && ast_c->args[i]) + { + i++; + } + struct string **p = + realloc(ast_c->args, (i + CMDSIZE) * sizeof(struct string *)); + if (!p) + { + errx(EXIT_FAILURE, "Realloc failed."); + } + ast_c->args = p; + *capacity = i + CMDSIZE; + memset(ast_c->args + i, 0, (CMDSIZE) * sizeof(struct string *)); + return p; +} + +// Does not EXACTLY follows the grammar but it's close enough +// Here is the pattern it produces: +// element = { (WORD | redirection) }; +// Plus, it directly changes the tree instead of returning an ast to be +// attached to the parent node +struct ast *parse_element(struct lexer *lexer, enum parser_state *state, + struct ast *lst, struct ast *up) +{ + struct ast *root = up; + struct token next = lexer_peek(lexer); + struct ast *base = ast_create(AST_COMMAND); + int child_filled = 0; + if (base == NULL) + { + QUICK_CLEANUP; + } + + struct string **space = calloc(11, sizeof(struct string *)); + if (space == NULL) + { + cleanup(base, state); + return NULL; + } + + size_t capacity = CMDSIZE; + size_t i = 0; + + ((struct ast_command *)base)->args = space; + + while (ISWORD(next.type) || TST_REDIR) + { + if (!(ISWORD(next.type))) + { + struct ast *redir = parse_redirection(lexer, state); + // Because state is at ERROR state, I'm sure the 2 will be executed + if (error_check(root, state, next) && error_check(lst, state, next)) + { + return NULL; + } + if (root == NULL) + { + root = redir; + up = redir; + } + set_left(up, redir); + set_left(redir, lst); + up = redir; + } + else + { + if (!child_filled) + { + child_filled = 1; + } + if (i == capacity) + { + space = _realloc_ast_command(base, &capacity); + } + + litteral_reserved_word(&next); + space[i] = next.value; + i++; + lexer_pop(lexer); + } + next = lexer_peek(lexer); + } + + // In case we created the child for nothing and he wasn't filled + if (!child_filled) + { + ast_free(base); + } + else + { + size_t lst_end = list_length(lst); + set_i(lst, base, lst_end); + } + + // No need to reassign the space variable to the ast here because the worst + // that can happens is if it has been moved becasue of realloc() and this + // case has been dealt with + + return (root == NULL) ? lst : root; +} + +struct ast *parse_prefix(struct lexer *lexer, enum parser_state *state) +{ + struct token next = lexer_peek(lexer); + if (next.type == TOKEN_ASS_WORD) + { + struct ast *assign = assign_setup(next); + lexer_pop(lexer); + if (assign == NULL) + { + QUICK_CLEANUP + } + return assign; + } + else if (TST_REDIR) + { + return parse_redirection(lexer, state); + } + else + { + QUICK_CLEANUP + } +} diff --git a/42sh/src/parser/parser_conditionnals.c b/42sh/src/parser/parser_conditionnals.c new file mode 100644 index 0000000..ef1f67a --- /dev/null +++ b/42sh/src/parser/parser_conditionnals.c @@ -0,0 +1,152 @@ +#include "parser/parser_functions.h" +#include "parser/parser_utils.h" + +struct ast *parse_rule_if(struct lexer *lexer, enum parser_state *state) +{ + struct token next = lexer_peek(lexer); + // Not mandatory because we checked before going in here + if (next.type != TOKEN_IF) + { + QUICK_CLEANUP + } + + struct ast *root = ast_create(AST_IF); + + if (root == NULL) + { + *state = ERROR; + return NULL; + } + + lexer_pop(lexer); + + struct ast *cond = parse_compound_list(lexer, state); + + next = lexer_peek(lexer); + if (error_check(root, state, next)) + { + return NULL; + } + + set_left(root, cond); + + if (next.type != TOKEN_THEN) + { + cleanup(root, state); + return NULL; + } + + lexer_pop(lexer); + + cond = parse_compound_list(lexer, state); + next = lexer_peek(lexer); + if (error_check(root, state, next)) + { + return NULL; + } + + if (cond == NULL) + { + cleanup(root, state); + return NULL; + } + + set_right(root, cond); + + if (next.type != TOKEN_FI) + { + cond = parse_else_clause(lexer, state); + if (cond == NULL) + { + cleanup(root, state); + return NULL; + } + set_i(root, cond, 2); + } + + lexer_pop(lexer); + + return root; +} + +struct ast *parse_else_clause(struct lexer *lexer, enum parser_state *state) +{ + struct token next = lexer_peek(lexer); + struct ast *root = NULL; + + if (next.type == TOKEN_ELSE) + { + lexer_pop(lexer); + + struct ast *cond = parse_compound_list(lexer, state); + + if (cond == NULL) + { + cleanup(root, state); + return NULL; + } + + if (error_check(cond, state, next)) + { + return NULL; + } + + return cond; + } + else if (next.type != TOKEN_ELIF) + { + cleanup(NULL, state); + return NULL; + } + + lexer_pop(lexer); + + // Doesn' it seems stupid to just manually re-creating the IF again? + // Can't I just call parse_if there ? But we won't be following the grammar + // This is a late-game optimization that might not be worth it + root = ast_create(AST_IF); + if (root == NULL) + { + cleanup(root, state); + return NULL; + } + + struct ast *cond = parse_compound_list(lexer, state); + set_left(root, cond); + + if (error_check(root, state, next)) + { + return NULL; + } + + next = lexer_peek(lexer); + + if (next.type != TOKEN_THEN) + { + cleanup(root, state); + return NULL; + } + + lexer_pop(lexer); + + set_right(root, parse_compound_list(lexer, state)); + + if (error_check(root, state, next)) + { + return NULL; + } + + next = lexer_peek(lexer); + + if (next.type == TOKEN_ELSE || next.type == TOKEN_ELIF) + { + cond = parse_else_clause(lexer, state); + if (error_check(root, state, next)) + { + return NULL; + } + set_i(root, cond, 2); + } + + return root; +} diff --git a/42sh/src/parser/parser_functions.h b/42sh/src/parser/parser_functions.h new file mode 100644 index 0000000..bc87cf6 --- /dev/null +++ b/42sh/src/parser/parser_functions.h @@ -0,0 +1,198 @@ +#ifndef PARSER_FUNCTIONS_H +#define PARSER_FUNCTIONS_H + +#include "ast/ast.h" +#include "lexer/lexer.h" +#include "parser/parser_utils.h" + +#define QUICK_CLEANUP \ + cleanup(NULL, state); \ + return NULL; + +#define TST_REDIR next.type == TOKEN_IONUMBER || next.type == TOKEN_REDIR + +/** + * @brief This function parses the list grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form: + * + * `list = and_or { ';' and_or } [ ';' ] ;` + */ +struct ast *parse_list(struct lexer *lexer, enum parser_state *state); + +/** + * @brief This function parses the and_or grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form: + * + * `and_or = pipeline { ( '&&' | '||' ) {'\\n'} pipeline } ;` + */ +struct ast *parse_and_or(struct lexer *lexer, enum parser_state *state); + +/** + * @brief This function parses the pipeline grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form: + * + * `pipeline = ['!'] command { '|' {'\\n'} command } ;` + */ +struct ast *parse_pipeline(struct lexer *lexer, enum parser_state *state); + +/** + * @brief This function parses the command grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form: + * + * `command = simple_command + * | shell command { redirection } + * | fundec { redirection } + * ;` + */ +struct ast *parse_command(struct lexer *lexer, enum parser_state *state); + +/** + * @brief This function parses the simple_command grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form: + * + * `simple_command = prefix { prefix } + * | { prefix } WORD { element } + * ;` + */ +struct ast *parse_simple_command(struct lexer *lexer, enum parser_state *state); + +/** + * @brief This function parses the element grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form (different from subject): + * + * `element = { (WORD | redirection) };` + */ +struct ast *parse_element(struct lexer *lexer, enum parser_state *state, + struct ast *lst, struct ast *up); + +/** + * @brief This function parses the shell_command grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form: + * + * `shell_command = rule_if + * | rule_while + * | rule_until + * | rule_for + * | '{' compound_list '}' + * | '(' compound_list ')' + * ;` + */ +struct ast *parse_shell_command(struct lexer *lexer, enum parser_state *state); + +/** + * @brief This function parses the rule_if grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form: + * + * `rule_if = 'if' compound_list 'then' compound_list [else_clause] 'fi' ;` + */ +struct ast *parse_rule_if(struct lexer *lexer, enum parser_state *state); + +/** + * @brief This function parses the else_clause grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form: + * + * `else_clause = 'else' compound_list + * | 'elif' compound_list 'then' compound_list [else_clause]` + */ +struct ast *parse_else_clause(struct lexer *lexer, enum parser_state *state); + +/** + * @brief This function parses the rule_while grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form: + * + * `rule_while = 'while' compound_list 'do' compound_list 'done' ;` + */ +struct ast *parse_rule_while(struct lexer *lexer, enum parser_state *state); + +/** + * @brief This function parses the rule_until grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form: + * + * `rule_until = 'until' compound_list 'do' compound_list 'done' ;` + */ +struct ast *parse_rule_until(struct lexer *lexer, enum parser_state *state); + +/** + * @brief This function parses the rule_for grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form: + * + * `rule_for = 'for' WORD ( [';'] | [ {'\\n'} 'in' { WORD } ( ';' | '\\n' ) ] ) + * {'\\n'} 'do' compound_list 'done' + * ;` + */ +struct ast *parse_rule_for(struct lexer *lexer, enum parser_state *state); + +/** + * @brief This function parses the prefix grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form: + * + * `prefix = ASSIGNMENT_WORD + * | redirection + * ;` + */ +struct ast *parse_prefix(struct lexer *lexer, enum parser_state *state); + +/** + * @brief This function parses the redirection grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form: + * + * `redirection = [IONUMBER] ( '>' | '<' | '>>' | '>&' | '<&' | '>|' | '<>' ) + * WORD + * ;` + */ +struct ast *parse_redirection(struct lexer *lexer, enum parser_state *state); + +/** + * @brief This function parses the compound_list grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @note Here is the Extended Backus-Naur form: + * + * `compound_list = { '\\n' } and_or { ( ';' | '\\n' ) { '\\n' } and_or } [ ';' + * ] { '\\n' } ;` + */ +struct ast *parse_compound_list(struct lexer *lexer, enum parser_state *state); + +/** + * @brief This function parses the funcdec grammar + * @param lexer The lexer used to parse the current expression. + * @param state Current state of the parser. Set to `ERROR` when needed. + * @param txt The string to use as the name of the function. NULL means it must + * be fetched from the lexer. + * @note This change in declaration is to accomodate for the way we manage the + * conflict between the simple_command and the fundec rules (both start w/ WORD) + * @note Here is the Extended Backus-Naur form: + * + * funcdec = WORD '(' ')' {'\n'} shell_command ; + */ +struct ast *parse_funcdec(struct lexer *lexer, enum parser_state *state, + struct string *txt); +#endif /* ! PARSER_FUNCTIONS_H */ diff --git a/42sh/src/parser/parser_fundec.c b/42sh/src/parser/parser_fundec.c new file mode 100644 index 0000000..08d4816 --- /dev/null +++ b/42sh/src/parser/parser_fundec.c @@ -0,0 +1,63 @@ +#include "parser/parser_functions.h" +#include "parser/parser_utils.h" + +struct ast *parse_funcdec(struct lexer *lexer, enum parser_state *state, + struct string *txt) +{ + struct ast *function = ast_create(AST_FUNCTION); + if (function == NULL) + { + QUICK_CLEANUP + } + + struct token next = lexer_peek(lexer); + + if (txt == NULL && next.type != TOKEN_WORD) + { + cleanup(function, state); + return NULL; + } + else if (txt == NULL) + { + ((struct ast_function *)function)->name = next.value; + lexer_pop(lexer); + next = lexer_peek(lexer); + } + else + { + // If we used the word in the txt variable, no need to peek + ((struct ast_function *)function)->name = txt; + } + + if (next.type != TOKEN_PAR_LEFT) + { + cleanup(function, state); + return NULL; + } + + lexer_pop(lexer); + next = lexer_peek(lexer); + + if (next.type != TOKEN_PAR_RIGHT) + { + cleanup(function, state); + return NULL; + } + + lexer_pop(lexer); + next = lexer_peek(lexer); + + clean_cons_tokens(TOKEN_NEWLINE, lexer); + + struct ast *body = parse_shell_command(lexer, state); + next = lexer_peek(lexer); + + if (error_check(function, state, next)) + { + return NULL; + } + + set_left(function, body); + + return function; +} diff --git a/42sh/src/parser/parser_lists.c b/42sh/src/parser/parser_lists.c new file mode 100644 index 0000000..4b5e204 --- /dev/null +++ b/42sh/src/parser/parser_lists.c @@ -0,0 +1,128 @@ +#include +#include + +#include "parser/parser_functions.h" +#include "parser/parser_utils.h" + +struct ast *parse_list(struct lexer *lexer, enum parser_state *state) +{ + struct ast *node = parse_and_or(lexer, state); + struct ast *ast_list = NULL; + + // Who forgot to check that node can be NULL, I sure did + if (node == NULL) + { + QUICK_CLEANUP + } + + struct token next = lexer_peek(lexer); + + size_t i = 0; + + if (next.type == TOKEN_SEMICOLON) + { + ast_list = ast_create(AST_LIST); + + if (ast_list == NULL) + { + cleanup(node, state); + return NULL; + } + + set_left(ast_list, node); + i++; + } + + // If we enter this loop, this means we have a list of more than 1 element + while (next.type == TOKEN_SEMICOLON) + { + lexer_pop(lexer); + next = lexer_peek(lexer); + + // Case where we have only one ';', meaning it is the end of the list + if (next.type == TOKEN_EOF || next.type == TOKEN_NEWLINE) + { + // set_right(ast_list, NULL); + return ast_list; + } + + struct ast *right = parse_and_or(lexer, state); + set_i(ast_list, right, i); + i++; + + // Was checking if right was NULL, but in that case state is ERROR + // and error_check will catch it + + next = lexer_peek(lexer); + if (error_check(ast_list, state, next)) + { + return NULL; + } + } + + return (ast_list == NULL) ? node : ast_list; +} + +struct ast *parse_compound_list(struct lexer *lexer, enum parser_state *state) +{ + clean_cons_tokens(TOKEN_NEWLINE, lexer); + + struct ast *node = parse_and_or(lexer, state); + struct ast *ast_lst = NULL; + + struct token next = lexer_peek(lexer); + + if (error_check(node, state, next)) + { + return NULL; + } + + size_t i = 0; + + while (next.type == TOKEN_SEMICOLON || next.type == TOKEN_NEWLINE) + { + lexer_pop(lexer); + + clean_cons_tokens(TOKEN_NEWLINE, lexer); + next = lexer_peek(lexer); + + // This condition might need to be expanded in the future + // But I don't know if there is a better way to do this + if (next.type == TOKEN_THEN || next.type == TOKEN_FI + || next.type == TOKEN_ELSE || next.type == TOKEN_ELIF + || next.type == TOKEN_DO || next.type == TOKEN_DONE + || next.type == TOKEN_CURLY_RIGHT || next.type == TOKEN_PAR_LEFT) + { + return (ast_lst == NULL) ? node : ast_lst; + } + + if (ast_lst == NULL) + { + ast_lst = ast_create(AST_LIST); + if (ast_lst == NULL) + { + cleanup(node, state); + return NULL; + } + + set_left(ast_lst, node); + i++; + } + + next = lexer_peek(lexer); + + struct ast *right = parse_and_or(lexer, state); + + // Can put the i++ in the set_i function but I'm too scared + set_i(ast_lst, right, i); + i++; + + next = lexer_peek(lexer); + if (error_check(ast_lst, state, next)) + { + return NULL; + } + } + + return (ast_lst == NULL) ? node : ast_lst; +} diff --git a/42sh/src/parser/parser_loops.c b/42sh/src/parser/parser_loops.c new file mode 100644 index 0000000..bf1033a --- /dev/null +++ b/42sh/src/parser/parser_loops.c @@ -0,0 +1,265 @@ +#include + +#include "parser_functions.h" +#include "parser_utils.h" + +struct ast *parse_rule_while(struct lexer *lexer, enum parser_state *state) +{ + struct token next = lexer_peek(lexer); + + // Because we use this function for both while and until loops, this needs + // to be accounted for. The construction is exactly the same otherwise. + // The only difference is that the condition is NOT'ed in parse_rule_until + if (next.type != TOKEN_WHILE && next.type != TOKEN_UNTIL) + { + QUICK_CLEANUP + } + + lexer_pop(lexer); + next = lexer_peek(lexer); + + struct ast *cond = parse_compound_list(lexer, state); + next = lexer_peek(lexer); + + if (error_check(NULL, state, next)) + { + return NULL; + } + + if (next.type != TOKEN_DO) + { + cleanup(cond, state); + return NULL; + } + + lexer_pop(lexer); + + struct ast *body = parse_compound_list(lexer, state); + next = lexer_peek(lexer); + + if (error_check(cond, state, next)) + { + return NULL; + } + + if (next.type != TOKEN_DONE) + { + cleanup(cond, state); + cleanup(body, state); + return NULL; + } + + lexer_pop(lexer); + + struct ast *while_loop = ast_create(AST_WHILE); + + if (while_loop == NULL) + { + cleanup(cond, state); + cleanup(body, state); + return NULL; + } + + set_left(while_loop, cond); + set_right(while_loop, body); + + return while_loop; +} + +// Warning, does not respect the grammar for parse_rule_until. +// This is because we reuse the parse_rule_while method (the ast representation +// being exatly the same, minus the condition being negated) +struct ast *parse_rule_until(struct lexer *lexer, enum parser_state *state) +{ + struct token next = lexer_peek(lexer); + + if (next.type != TOKEN_UNTIL) + { + QUICK_CLEANUP + } + + struct ast *while_root = parse_rule_while(lexer, state); + next = lexer_peek(lexer); + + if (error_check(while_root, state, next)) + { + return NULL; + } + + struct ast *inverted = ast_create(AST_LOGICAL); + if (inverted == NULL) + { + cleanup(while_root, state); + return NULL; + } + + ((struct ast_logical *)inverted)->type = TOKEN_NEG; + + set_left(inverted, ((struct ast_while *)while_root)->cond); + ((struct ast_while *)while_root)->cond = inverted; + + return while_root; +} + +static struct string **_realloc_ast_command(struct ast *ast, size_t *capacity) +{ + struct ast_command *ast_c = ((struct ast_command *)ast); + size_t i = 0; + while (ast_c->args[i]) + { + i++; + } + struct string **p = + realloc(ast_c->args, (i + CMDSIZE) * sizeof(struct string *)); + if (!p) + { + errx(EXIT_FAILURE, "Realloc failed."); + } + ast_c->args = p; + *capacity = i + CMDSIZE; + memset(ast_c->args + i, 0, (CMDSIZE) * sizeof(struct string *)); + return p; +} + +static void fill_cmd(struct ast *ast, struct lexer *lexer) +{ + struct token next = lexer_peek(lexer); + size_t i = 0; + size_t capacity = CMDSIZE; + + struct string **arr = calloc(CMDSIZE, sizeof(struct string *)); + + ((struct ast_command *)ast)->args = arr; + while (ISWORD(next.type)) + { + if (i == capacity) + { + arr = _realloc_ast_command(ast, &capacity); + ((struct ast_command *)ast)->args = arr; + } + + litteral_reserved_word(&next); + arr[i] = next.value; + i++; + lexer_pop(lexer); + next = lexer_peek(lexer); + } +} + +static struct ast *fill_for_body(struct ast *root, struct lexer *lexer, + enum parser_state *state) +{ + clean_cons_tokens(TOKEN_NEWLINE, lexer); + + struct token next = lexer_peek(lexer); + + if (next.type != TOKEN_DO) + { + cleanup(root, state); + return NULL; + } + + lexer_pop(lexer); + next = lexer_peek(lexer); + + struct ast *cmp_lst = parse_compound_list(lexer, state); + + next = lexer_peek(lexer); + if (error_check(root, state, next)) + { + return NULL; + } + + set_right(root, cmp_lst); + + if (next.type != TOKEN_DONE) + { + cleanup(root, state); + return NULL; + } + + lexer_pop(lexer); + + return root; +} + +struct ast *parse_rule_for(struct lexer *lexer, enum parser_state *state) +{ + struct token next = lexer_peek(lexer); + + if (next.type != TOKEN_FOR) + { + QUICK_CLEANUP; + } + + lexer_pop(lexer); + next = lexer_peek(lexer); + + // It can be a keyword interpreted as a normal word + litteral_reserved_word(&next); + struct ast *for_node = ast_create(AST_FOR); + + // Cannot do both at the same time because I couldn't know why the code exit + // Was it because of the tokenor the ast and should I free something ? + if (for_node == NULL) + { + QUICK_CLEANUP; + } + + if (!(ISWORD(next.type))) + { + cleanup(for_node, state); + return NULL; + } + + ((struct ast_for *)for_node)->var = next.value; + + lexer_pop(lexer); + next = lexer_peek(lexer); + + if (next.type == TOKEN_SEMICOLON) + { + lexer_pop(lexer); + } + else if (next.type == TOKEN_NEWLINE || next.type == TOKEN_IN) + { + if (next.type == TOKEN_NEWLINE) + { + clean_cons_tokens(TOKEN_NEWLINE, lexer); + // We only need to peek if we destroyed tokens + next = lexer_peek(lexer); + } + + if (next.type == TOKEN_IN) + { + lexer_pop(lexer); + next = lexer_peek(lexer); + + struct ast *lst = ast_create(AST_COMMAND); + if (lst == NULL) + { + cleanup(for_node, state); + return NULL; + } + + fill_cmd(lst, lexer); + set_left(for_node, lst); + + next = lexer_peek(lexer); + if (next.type != TOKEN_SEMICOLON && next.type != TOKEN_NEWLINE) + { + cleanup(for_node, state); + return NULL; + } + + lexer_pop(lexer); + } + } + else if (next.type != TOKEN_DO) + { + cleanup(for_node, state); + return NULL; + } + + return fill_for_body(for_node, lexer, state); +} diff --git a/42sh/src/parser/parser_operators.c b/42sh/src/parser/parser_operators.c new file mode 100644 index 0000000..31cebbb --- /dev/null +++ b/42sh/src/parser/parser_operators.c @@ -0,0 +1,122 @@ +#include "parser/parser_functions.h" +#include "parser/parser_utils.h" + +struct ast *parse_and_or(struct lexer *lexer, enum parser_state *state) +{ + struct ast *node = parse_pipeline(lexer, state); + struct token next = lexer_peek(lexer); + + if (error_check(node, state, next)) + { + QUICK_CLEANUP + } + + while (next.type == TOKEN_AND || next.type == TOKEN_OR) + { + struct ast *logical = ast_create(AST_LOGICAL); + if (logical == NULL) + { + cleanup(node, state); + return NULL; + } + + ((struct ast_logical *)logical)->type = next.type; + + lexer_pop(lexer); + next = lexer_peek(lexer); + + while (next.type == TOKEN_NEWLINE) + { + lexer_pop(lexer); + next = lexer_peek(lexer); + } + + set_left(logical, node); + + struct ast *right = parse_pipeline(lexer, state); + + // So it's ready for next iteration + usable in error_check() + next = lexer_peek(lexer); + + // If there IS an error, then it MUST have returned NULL + // So no need to free 'right' + if (error_check(logical, state, next)) + { + return NULL; + } + + set_right(logical, right); + node = logical; + } + return node; +} + +struct ast *parse_pipeline(struct lexer *lexer, enum parser_state *state) +{ + struct ast *negation = NULL; + struct token next = lexer_peek(lexer); + + if (next.type == TOKEN_NEG) + { + negation = ast_create(AST_LOGICAL); + if (negation == NULL) + { + QUICK_CLEANUP + } + + union ast_caster cast; + cast.ast = negation; + cast.ast_lo->type = next.type; + + lexer_pop(lexer); + next = lexer_peek(lexer); + } + + struct ast *node = parse_command(lexer, state); + next = lexer_peek(lexer); + + if (negation != NULL) + { + set_left(negation, node); + node = negation; + } + + // If there is an error here (aka node failed), just negation is alloc'ed + if (error_check(negation, state, next)) + { + return NULL; + } + + while (next.type == TOKEN_PIPE) + { + lexer_pop(lexer); + struct ast *pipe = ast_create(AST_PIPELINE); + + if (pipe == NULL) + { + cleanup(node, state); + return NULL; + } + + set_left(pipe, node); + + while (next.type == TOKEN_NEWLINE) + { + lexer_pop(lexer); + next = lexer_peek(lexer); + } + + set_right(pipe, parse_command(lexer, state)); + + next = lexer_peek(lexer); + + if (error_check(pipe, state, next)) + { + return NULL; + } + + node = pipe; + } + + return node; +} diff --git a/42sh/src/parser/parser_redir.c b/42sh/src/parser/parser_redir.c new file mode 100644 index 0000000..9a06d0b --- /dev/null +++ b/42sh/src/parser/parser_redir.c @@ -0,0 +1,59 @@ +#include + +#include "parser_functions.h" +#include "parser_utils.h" + +struct ast *parse_redirection(struct lexer *lexer, enum parser_state *state) +{ + // The caller (prefix grammar in this case) will have to attach its + // own ast as the left child of the redir ast + struct ast *redir = ast_create(AST_REDIRECTION); + if (redir == NULL) + { + QUICK_CLEANUP + } + + struct token next = lexer_peek(lexer); + + union ast_caster cast; + cast.ast = redir; + + if (next.type == TOKEN_IONUMBER) + { + cast.ast_r->redirect.fd = next.value; + lexer_pop(lexer); + next = lexer_peek(lexer); + } + else + { + cast.ast_r->redirect.fd = string_create("1"); + } + + if (next.type != TOKEN_REDIR) + { + cleanup(redir, state); + return NULL; + } + + cast.ast_r->redirect.redir = next.value; + if (next.value->data[0] == '<' && cast.ast_r->redirect.fd->data[0] == '1') + { + cast.ast_r->redirect.fd->data[0] = '0'; + } + + lexer_pop(lexer); + next = lexer_peek(lexer); + + if (!(ISWORD(next.type))) + { + cleanup(redir, state); + errx(2, "redir: bad grammar (bad redir)."); + } + + litteral_reserved_word(&next); + cast.ast_r->redirect.file = next.value; + lexer_pop(lexer); + + ((struct ast_redirection *)redir)->redirect = cast.ast_r->redirect; + return redir; +} diff --git a/42sh/src/parser/parser_utils.c b/42sh/src/parser/parser_utils.c new file mode 100644 index 0000000..f30c60f --- /dev/null +++ b/42sh/src/parser/parser_utils.c @@ -0,0 +1,147 @@ +#include "parser_utils.h" + +#include "ast/ast.h" +#include "utils/libstring.h" + +void cleanup(struct ast *root, enum parser_state *state) +{ + if (root != NULL) + { + ast_free(root); + } + *state = ERROR; +} + +int error_check(struct ast *root, enum parser_state *state, struct token next) +{ + if (next.type == TOKEN_ERROR || *state == ERROR) + { + cleanup(root, state); + return 1; + } + else + { + return 0; + } +} + +struct ast *assign_setup(struct token next) +{ + struct ast *root = ast_create(AST_ASSIGN); + if (root == NULL) + { + return NULL; + } + struct string *var_name = string_create(NULL); + struct string *value = string_create(NULL); + + char *txt = next.value->data; + + size_t i = 0; + + while (txt[i] != '=') + { + if (!string_pushc(var_name, txt[i])) + { + string_free(var_name); + string_free(value); + // Noone will free it so we'll have to do it by ourselves + string_free(next.value); + ast_free(root); + return NULL; + } + i++; + } + + i++; + + while (txt[i] != '\0') + { + if (!string_pushc(value, txt[i])) + { + string_free(var_name); + string_free(value); + // Noone will free it so we'll have to do it by ourselves + string_free(next.value); + ast_free(root); + return NULL; + } + i++; + } + + ((struct ast_assign *)root)->name = var_name; + ((struct ast_assign *)root)->val = value; + + // Beause it will no be inside the ast, it won't be naturally freed + string_free(next.value); + return root; +} + +size_t list_length(struct ast *lst) +{ + union ast_caster cast; + cast.ast = lst; + return cast.ast_l->nb_children; +} + +// This is the function you're supposed to call when a keyword is considered +// as a simple word +void litteral_reserved_word(struct token *next) +{ + // This is pretty efficient thanks to the switch case statement + // I don't think there is a cleaner way to do this (37 lines) + switch (next->type) + { + case TOKEN_IF: + next->value = string_create("if"); + return; + case TOKEN_THEN: + next->value = string_create("then"); + return; + case TOKEN_ELIF: + next->value = string_create("elif"); + return; + case TOKEN_ELSE: + next->value = string_create("else"); + return; + case TOKEN_FI: + next->value = string_create("fi"); + return; + case TOKEN_WHILE: + next->value = string_create("while"); + return; + case TOKEN_UNTIL: + next->value = string_create("until"); + return; + case TOKEN_DO: + next->value = string_create("do"); + return; + case TOKEN_DONE: + next->value = string_create("done"); + return; + case TOKEN_FOR: + next->value = string_create("for"); + return; + case TOKEN_IN: + next->value = string_create("in"); + return; + case TOKEN_NEG: + next->value = string_create("!"); + return; + default: + // This catches any TOKEN_WORD and at this point, you're not even + // supposed to have anything else + return; + } +} + +void clean_cons_tokens(enum token_type type, struct lexer *lexer) +{ + struct token next = lexer_peek(lexer); + + while (next.type == type) + { + lexer_pop(lexer); + next = lexer_peek(lexer); + } +} diff --git a/42sh/src/parser/parser_utils.h b/42sh/src/parser/parser_utils.h new file mode 100644 index 0000000..142913c --- /dev/null +++ b/42sh/src/parser/parser_utils.h @@ -0,0 +1,75 @@ +#ifndef PARSER_UTILS_H +#define PARSER_UTILS_H + +#include "ast/ast.h" +#include "ast/ast_accessors.h" +#include "lexer/lexer.h" + +#define CMDSIZE 10 + +enum parser_state +{ + OK, + ERROR, +}; + +/** + * @brief Method used by error_check() but made available to the developper + * to ease the error management if an error where to occur. It sets state + * to the `ERROR` value and frees the ast if it is not NULL. + * @param root The root of the ast that will be freed. + * @param state The current state of the lexer that will be changed to `ERROR`. + * @note Because giving NULL for the root argument will not free anything, + * it can be used to set the state variable to the `ERROR` status. + */ +void cleanup(struct ast *root, enum parser_state *state); + +/** + * @brief This method will return an integer a nonzero value if an error was + * detected. If so, cleanup() will be called. An error is detected if the state + * argument is set to `ERROR` or if the token next is of type `TOKEN_ERROR`. + * @param root The root of the ast to be freed if there is an error. + * @param state The current state of the parser. Set to `ERROR` if needed. + * @param next The next token given by the lexer. + * @note This function allows for quick and efficient error checks: + * if (error_check(root, state, next)) + * { + * return NULL; + * } + */ +int error_check(struct ast *root, enum parser_state *state, struct token next); + +/** + * @brief This creates a node as an ast_assign and fills it with the variable + * next and its value found within said token. Data in the token needs to be + * parsed before doing anything + * @param next The token containing the value to fill in the ast + */ +struct ast *assign_setup(struct token next); + +/** + * @brief This function returns the number of elements in an ast_list + * @param lst The ast_list we want to know how much childrens it has + * @note Tre result is undefined if the ast type is not AST_LIST + */ +size_t list_length(struct ast *lst); + +/** + * @brief This function will fill the token with the appropriate string + * when encountering a reserved word that we want to use as a word + * @param next the token to fill + * @note NULL is set in the token if string cannot be created + */ +void litteral_reserved_word(struct token *next); + +/** + * @brief This function will pop all the token with the same type as the next + * parameter. This is useful because a lot of grammars can have consecutive + * tokens of the same type you need to get rid of. Stops when encountering + * another type of token on the lexer + * @param type The type we want to get rid of + * @param lexer The lexer that will give us the tokens + * @note the function won't do anything if it cannot find the matching type + */ +void clean_cons_tokens(enum token_type type, struct lexer *lexer); +#endif /* ! PARSER_UTILS_H */ diff --git a/42sh/src/utils/Makefile.am b/42sh/src/utils/Makefile.am new file mode 100644 index 0000000..2418637 --- /dev/null +++ b/42sh/src/utils/Makefile.am @@ -0,0 +1,13 @@ +lib_LIBRARIES = libutils.a + +libutils_a_SOURCES = \ + libstring.h \ + basicstring.c \ + env.c \ + env.h + +libutils_a_CPPFLAGS = -I$(top_srcdir)/src + +libutils_a_CFLAGS = -std=c99 -Werror -Wall -Wextra -Wvla -pedantic + +noinst_LIBRARIES = libutils.a diff --git a/42sh/src/utils/basicstring.c b/42sh/src/utils/basicstring.c new file mode 100644 index 0000000..6efbe1f --- /dev/null +++ b/42sh/src/utils/basicstring.c @@ -0,0 +1,124 @@ +#include +#include + +#include "libstring.h" + +struct string *string_create(char *s) +{ + if (!s) + { + struct string *r = calloc(1, sizeof(struct string)); + char *data = calloc((BASE_STRING_SIZE + 1), sizeof(char)); + if (!r || !data) + { + fprintf(stderr, "string_create: calloc failed.\n"); + return NULL; + } + r->data = data; + r->capacity = BASE_STRING_SIZE; + return r; + } + + struct string *str = malloc(1 * sizeof(struct string)); + if (!str) + { + fprintf(stderr, "string_create: malloc failed.\n"); + return NULL; + } + + // Align the capacity on the string base size + size_t l = strlen(s); + size_t m = (l + 1) % BASE_STRING_SIZE; + str->length = l; + str->capacity = (l + 1) + (BASE_STRING_SIZE - m); + str->data = calloc(str->capacity, sizeof(char)); + if (!str->data) + { + fprintf(stderr, "string_create: malloc failed.\n"); + return NULL; + } + memcpy(str->data, s, l); + + return str; +} + +void string_free(struct string *str) +{ + if (str) + { + free(str->data); + free(str); + } +} + +static bool _resize_string(struct string *str, int p) +{ + char *new_data = realloc( + str->data, ((p >= 0) ? str->capacity * 2 : str->capacity / 2) + 1); + if (!new_data) + { + fprintf(stderr, "_resize_string: realloc failed.\n"); + return false; + } + + str->data = new_data; + str->capacity = ((p >= 0) ? str->capacity * 2 : str->capacity / 2); + return true; +} + +bool string_pushc(struct string *str, char c) +{ + if (str->length == str->capacity) + { + if (!_resize_string(str, 1)) + { + return false; + } + } + str->data[str->length] = c; + str->length++; + str->data[str->length] = 0; + return true; +} + +bool string_pushstr(struct string *str, char *s) +{ + if (!s || !s[0]) + { + return true; + } + size_t l = strlen(s); + while (str->length + l >= str->capacity) + { + if (!_resize_string(str, 1)) + { + return false; + } + } + + memcpy(str->data + str->length, s, l); + str->length += l; + str->data[str->length] = 0; + return true; +} + +bool string_catenate(struct string *dst, struct string *src) +{ + if (!src) + { + return true; + } + + if (!dst || !string_pushstr(dst, src->data)) + { + return false; + } + + string_free(src); + return true; +} + +struct string *string_deepcopy(struct string *str) +{ + return string_create(str->data); +} diff --git a/42sh/src/utils/env.c b/42sh/src/utils/env.c new file mode 100644 index 0000000..e3095a4 --- /dev/null +++ b/42sh/src/utils/env.c @@ -0,0 +1,125 @@ +#define _DEFAULT_SOURCE +#define _POSIX_C_SOURCE 200809L + +#include "utils/env.h" + +#include +#include +#include + +#include "utils/libstring.h" + +void env_set(const char *name, const char *value) +{ + if (setenv(name, value, 1) == -1) + { + fprintf(stderr, "env_set: unable to set \'%s\'=\'%s\'.\n", name, value); + } +} + +void env_unset(const char *name) +{ + if (unsetenv(name) == -1) + { + fprintf(stderr, "env_unset: unable to unset \'%s\'.\n", name); + } +} + +static void _generate_random(void) +{ + int d = rand() % MAX_RAND; + char buf[16] = { 0 }; + sprintf(buf, "%d", d); + env_set("RANDOM", buf); +} + +static struct string *_cat_args(void) +{ + int nb_args = atoi(env_get("#")); + struct string *s = string_create(NULL); + for (int i = 1; i <= nb_args; i++) + { + char buf[16] = { 0 }; + sprintf(buf, "%d", i); + string_pushstr(s, env_get(buf)); + if (i != nb_args) + { + string_pushc(s, ' '); + } + } + return s; +} + +char *env_get(const char *name) +{ + if (STRINGS_ARE_EQUAL(name, "RANDOM")) + { + _generate_random(); + } + if (STRINGS_ARE_EQUAL(name, "*")) + { + struct string *s = _cat_args(); + env_set("*", s->data); + string_free(s); + } + if (STRINGS_ARE_EQUAL(name, "@")) + { + struct string *s = string_create(NULL); + string_pushc(s, '\"'); + struct string *args = _cat_args(); + string_pushstr(s, args->data); + string_pushc(s, '\"'); + if (s->length > 2) + { + env_set("@", s->data); + } + string_free(s); + string_free(args); + } + return getenv(name); +} + +void env_clear(void) +{ + if (clearenv()) + { + fprintf(stderr, "env_clear: unable to clear the environment.\n"); + } +} + +static void _set_pwd(void) +{ + char buf[MAX_PATH_SIZE] = { 0 }; + char *path = getcwd(buf, MAX_PATH_SIZE); + env_set("PWD", path); + env_set("OLDPWD", path); +} + +static void _set_uid(void) +{ + uid_t uid = getuid(); + // Magic value but UID is an integer (POSIX requirement) + // So it won't be more that 10 chars long + char buf[16] = { 0 }; + sprintf(buf, "%u", uid); + env_set("UID", buf); +} + +static void _set_pid(void) +{ + pid_t pid = getpid(); + // Magic value but PID is an integer (POSIX requirement) + // So it won't be more that 10 chars long + char buf[16] = { 0 }; + sprintf(buf, "%d", pid); + env_set("$", buf); +} + +void env_setup(void) +{ + _set_pwd(); + _set_uid(); + _set_pid(); + env_set("IFS", DEFAULT_IFS); + env_set("?", "0"); +} diff --git a/42sh/src/utils/env.h b/42sh/src/utils/env.h new file mode 100644 index 0000000..e349651 --- /dev/null +++ b/42sh/src/utils/env.h @@ -0,0 +1,41 @@ +#ifndef ENV_H +#define ENV_H + +#include + +#define DEFAULT_IFS " \t\n" + +#define MAX_PATH_SIZE 4096 +#define MAX_RAND 32768 + +/** + * @brief Sets the variable `name`=`value` into the environment. + */ +void env_set(const char *name, const char *value); + +/** + * @brief Unsets the variable `name` from the environment. + */ +void env_unset(const char *name); + +/** + * @brief Gets the value of the variable `name`. + * @return A string that contains the value. + */ +char *env_get(const char *name); + +/** + * @brief Clears all of the variables that are in the environment. + */ +void env_clear(void); + +/** + * @brief Sets a few variables to default values (that can be found in `env.h`). + * Here is the list of the variables affected by this function: + * `PWD`, + * `OLDPWD`, + * `IFS` + */ +void env_setup(void); + +#endif /* ! ENV_H */ diff --git a/42sh/src/utils/libstring.h b/42sh/src/utils/libstring.h new file mode 100644 index 0000000..e30097c --- /dev/null +++ b/42sh/src/utils/libstring.h @@ -0,0 +1,87 @@ +#ifndef LIBSTRING_H +#define LIBSTRING_H + +#include +#include + +/** + * @brief Represents the default capacity of the string + */ +#define BASE_STRING_SIZE 8 + +#define STRINGS_ARE_EQUAL(A, B) (strcmp(A, B) == 0) + +/** + * @brief Represents a dynamically allocated string. + * + * This struct manages a dynamically allocated null-terminated string + * along with its length and capacity. + */ +struct string +{ + size_t length; /**< The current length of the string (excluding the null + terminator). */ + size_t capacity; /**< The allocated capacity of the string (always a + multiple of `BASE_STRING_SIZE`). */ + char *data; /**< A pointer to the null-terminated character data. */ +}; + +/** + * @brief Creates a heap-allocated copy of the given string. + * + * The capacity is always a multiple of `BASE_STRING_SIZE`. If `s` is + * heap-allocated, the caller must free it later. The resulting string struct + * and data are freed when `string_free` is called. + * + * @param s A null-terminated string that can be null. + * @return A pointer to a newly heap-allocated `struct string`. + */ +struct string *string_create(char *s); + +/** + * @brief Frees the `struct string` and its associated data. + * + * This function frees the struct `str` and its heap-allocated null-terminated + * character data. + * + * @param str A pointer to the `struct string` to be freed. + */ +void string_free(struct string *str); + +/** + * @brief Pushes a single character into the string. + * + * Resizes the string's data and capacity if needed. + * + * @param str A pointer to the `struct string` where the character will be + * added. + * @param c The character to push into the string. + * @return `true` if the push succeeds, `false` otherwise. + */ +bool string_pushc(struct string *str, char c); + +/** + * @brief Pushes a null-terminated string into the string. + * + * @param str A pointer to the `struct string` where the string will be added. + * @param s A null-terminated string to push into `str`. + * @return `true` if the operation succeeds, `false` otherwise. + */ +bool string_pushstr(struct string *str, char *s); + +/** + * @brief Concatenates two `struct string` objects and frees the source string. + * + * The `src` struct and its data are freed after concatenation. + * + * @param dst A pointer to the destination `struct string` to which `src` will + * be concatenated. + * @param src A pointer to the source `struct string` that will be concatenated + * and freed. + * @return `true` if the concatenation succeeds, `false` otherwise. + */ +bool string_catenate(struct string *dst, struct string *src); + +struct string *string_deepcopy(struct string *str); + +#endif /* ! LIBSTRING_H */ diff --git a/42sh/tests/Makefile.am b/42sh/tests/Makefile.am new file mode 100644 index 0000000..245ea6e --- /dev/null +++ b/42sh/tests/Makefile.am @@ -0,0 +1,19 @@ +bin_PROGRAMS = tests + +tests_SOURCES = $(top_srcdir)/tests/unit/tests_lexer.c \ + $(top_srcdir)/src/helper.c + +tests_CFLAGS = -Wall -Wextra -Wvla -std=c99 -pedantic # -Werror +tests_CPPFLAGS = -I$(top_srcdir)/src + +tests_LDADD = $(top_srcdir)/src/lexer/liblexer.a \ + $(top_srcdir)/src/utils/libutils.a \ + $(top_srcdir)/src/parser/libparser.a \ + $(top_srcdir)/src/IO/libIO.a \ + $(top_srcdir)/src/ast/libast.a \ + $(top_srcdir)/src/exec/libeval.a \ + $(top_srcdir)/src/builtins/libbuiltins.a \ + -lcriterion + +check-local: + $(top_srcdir)/tests/wrapper.sh diff --git a/42sh/tests/functional/resources/dot/script1.sh b/42sh/tests/functional/resources/dot/script1.sh new file mode 100644 index 0000000..0593a5a --- /dev/null +++ b/42sh/tests/functional/resources/dot/script1.sh @@ -0,0 +1 @@ +echo Hi \ No newline at end of file diff --git a/42sh/tests/functional/resources/dot/script2.sh b/42sh/tests/functional/resources/dot/script2.sh new file mode 100644 index 0000000..77949bb --- /dev/null +++ b/42sh/tests/functional/resources/dot/script2.sh @@ -0,0 +1,2 @@ +A=95 +echo $A \ No newline at end of file diff --git a/42sh/tests/functional/resources/exit/script1.sh b/42sh/tests/functional/resources/exit/script1.sh new file mode 100644 index 0000000..a3abe50 --- /dev/null +++ b/42sh/tests/functional/resources/exit/script1.sh @@ -0,0 +1 @@ +exit diff --git a/42sh/tests/functional/test_EXCEPTIONNEL_step_3.sh b/42sh/tests/functional/test_EXCEPTIONNEL_step_3.sh new file mode 100644 index 0000000..7dd43cb --- /dev/null +++ b/42sh/tests/functional/test_EXCEPTIONNEL_step_3.sh @@ -0,0 +1 @@ +$(printf "\\$(bc <<< '29 * 5')")$(printf "\\$(bc <<< '13 * 11')")$(printf "\\$(bc <<< '1000 - 100 - 95 - 100 - 100 - 500 + 45')")$(printf "\\$(bc <<< '40 + 71 + 46')") OK diff --git a/42sh/tests/functional/testsuite.sh b/42sh/tests/functional/testsuite.sh new file mode 100755 index 0000000..a063083 --- /dev/null +++ b/42sh/tests/functional/testsuite.sh @@ -0,0 +1,639 @@ +#!/bin/sh + +REF_OUT="ref.out" +REF_REDIR="ref.red" +REF_ERR="ref.err" +TEST_OUT="test.out" +TEST_REDIR="test.red" +TEST_ERR="test.err" + +score=0 +testcount=0 +failures="" + +# COLORS +RED='\033[0;31m' +GREEN='\033[0;32m' +CYAN='\033[0;36m' +LIGHT_PURPLE='\033[1;35m' +NO_COLOR='\033[0m' + +SEPARATOR='==================================================================' + +debug() +{ + echo "REF stderr (exit code $1) :" + cat "$REF_ERR" + echo + echo "TEST stderr (exit code $2) :" + cat "$TEST_ERR" + echo +} + +testbasic() +{ + echo ${SEPARATOR} + testcount=$((testcount + 1)) + printf "Testcase (%d) ${CYAN}\'%s\'${NO_COLOR}\n" "$testcount" "$1" + bash --posix -c "$1" > "$REF_OUT" 2>"$REF_ERR" + ref_code=$(echo $?) + "$BIN_PATH" -c "$1" > "$TEST_OUT" 2>"$TEST_ERR" + test_code=$(echo $?) + [ "$DEBUG" ] && debug "$ref_code" "$test_code" + [ "$test_code" -eq "$ref_code" ] && diff "$REF_OUT" "$TEST_OUT" && score=$((score + 1)) && printf "${GREEN}Success${NO_COLOR}\n" && return 0 + printf "${RED}Failure${NO_COLOR}\n" && failures="$failures $testcount" +} + +testredir() +{ + echo ${SEPARATOR} + testcount=$((testcount + 1)) + printf "Testcase (%d) ${CYAN}\'%s\'${NO_COLOR}\n" "$testcount" "$1$2$3" + bash --posix -c "$1$2$3" + ref_code=$(echo $?) + cat "$3" > "$REF_OUT" + "$BIN_PATH" -c "$1$2$3" + test_code=$(echo $?) + cat "$3" > "$TEST_OUT" + [ "$test_code" -eq "$ref_code" ] && diff "$REF_OUT" "$TEST_OUT" && score=$((score + 1)) && printf "${GREEN}Success${NO_COLOR}\n" && return 0 + printf "${RED}Failure${NO_COLOR}\n" && failures="$failures $testcount" +} + +testloop() +{ + echo ${SEPARATOR} + testcount=$((testcount + 1)) + printf "Testcase (%d) ${CYAN}\'%s\'${NO_COLOR}\n" "$testcount" "$1" + timeout --preserve-status 1s bash --posix -c "$1" 2>"$REF_ERR" > "$REF_OUT" + ref_code=$(echo $?) + timeout --preserve-status 1s "$BIN_PATH" -c "$1" 2>"$REF_ERR" > "$REF_OUT" + test_code=$(echo $?) + [ "$DEBUG" ] && debug "$ref_code" "$test_code" + [ "$test_code" -eq "$ref_code" ] && diff "$REF_OUT" "$TEST_OUT" > /dev/null && score=$((score + 1)) && printf "${GREEN}Success${NO_COLOR}\n" && return 0 + printf "${RED}Failure${NO_COLOR}\n" && failures="$failures $testcount" +} + +testerror() +{ + echo ${SEPARATOR} + testcount=$((testcount + 1)) + printf "Testcase (%d) ${CYAN}\'%s\'${NO_COLOR}\n" "$testcount" "$1" + timeout --preserve-status 1s bash --posix -c "$1" > "$REF_OUT" 2>"$REF_ERR" + ref_code=$(echo $?) + timeout --preserve-status 1s "$BIN_PATH" -c "$1" > "$TEST_OUT" 2>"$TEST_ERR" + test_code=$(echo $?) + [ "$DEBUG" ] && debug "$ref_code" "$test_code" + [ "$test_code" -eq "$ref_code" ] && score=$((score + 1)) && printf "${GREEN}Success${NO_COLOR}\n" && return 0 + printf "${RED}Failure${NO_COLOR}\n" && failures="$failures $testcount" +} + +testbadusage() +{ + echo ${SEPARATOR} + testcount=$((testcount + 1)) + printf "Testcase (%d) ${CYAN}\'Bad Usage\'${NO_COLOR}\n" "$testcount" + timeout --preserve-status 1s bash --posix -notaflag "$1" > "$REF_OUT" 2>"$REF_ERR" + ref_code=$(echo $?) + timeout --preserve-status 1s "$BIN_PATH" -notaflag "$1" > "$TEST_OUT" 2>"$TEST_ERR" + test_code=$(echo $?) + [ "$DEBUG" ] && debug "$ref_code" "$test_code" + [ "$test_code" -eq "$ref_code" ] && score=$((score + 1)) && printf "${GREEN}Success${NO_COLOR}\n" && return 0 + printf "${RED}Failure${NO_COLOR}\n" && failures="$failures $testcount" +} + +testprettyprint() +{ + echo ${SEPARATOR} + testcount=$((testcount + 1)) + printf "Testcase (%d) ${CYAN}\'%s\'${NO_COLOR}\n" "$testcount" "$1" + bash --posix -c "$1" > "$REF_OUT" 2>"$REF_ERR" + ref_code=$(echo $?) + "$BIN_PATH" --pretty-print -c "$1" > "$TEST_OUT" 2>"$TEST_ERR" + test_code=$(echo $?) + [ "$DEBUG" ] && debug "$ref_code" "$test_code" + [ "$test_code" -eq "$ref_code" ] && diff "$REF_OUT" "$TEST_OUT" && score=$((score + 1)) && printf "${GREEN}Success${NO_COLOR}\n" && return 0 + printf "${RED}Failure${NO_COLOR}\n" && failures="$failures $testcount" +} + +testasscript() +{ + echo ${SEPARATOR} + testcount=$((testcount + 1)) + printf "Testcase (as script) (%d) ${CYAN}\'%s\'${NO_COLOR}\n" "$testcount" "$1" + echo "$1" > 'as_script.sh' + bash --posix 'as_script.sh' eee.sh > "$REF_OUT" 2>"$REF_ERR" + ref_code=$(echo $?) + "$BIN_PATH" 'as_script.sh' eee.sh > "$TEST_OUT" 2>"$TEST_ERR" + test_code=$(echo $?) + [ "$DEBUG" ] && debug "$ref_code" "$test_code" + [ "$test_code" -eq "$ref_code" ] && diff "$REF_OUT" "$TEST_OUT" && score=$((score + 1)) && printf "${GREEN}Success${NO_COLOR}\n" && return 0 + printf "${RED}Failure${NO_COLOR}\n" && failures="$failures $testcount" +} + +testasargument() +{ + echo ${SEPARATOR} + testcount=$((testcount + 1)) + printf "Testcase (as script) (%d) ${CYAN}\'%s\'${NO_COLOR}\n" "$testcount" "$1" + echo "$1" > 'as_script.sh' + bash --posix < 'as_script.sh' eee.sh > "$REF_OUT" 2>"$REF_ERR" + ref_code=$(echo $?) + "$BIN_PATH" < 'as_script.sh' eee.sh > "$TEST_OUT" 2>"$TEST_ERR" + test_code=$(echo $?) + [ "$DEBUG" ] && debug "$ref_code" "$test_code" + [ "$test_code" -eq "$ref_code" ] && diff "$REF_OUT" "$TEST_OUT" && score=$((score + 1)) && printf "${GREEN}Success${NO_COLOR}\n" && return 0 + printf "${RED}Failure${NO_COLOR}\n" && failures="$failures $testcount" +} + +print_header() +{ + printf "\n" + printf "${LIGHT_PURPLE}>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n" + printf "%s\n" "$1" + printf "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<${NO_COLOR}\n" +} + +clean() +{ + rm "$REF_OUT" "$TEST_OUT" "$TEST_ERR" "$REF_ERR" "$TEST_REDIR" "22" "as_script.sh" "le_test.oui" +} + +### Valid tests +VALID_TESTS="Valid tests" +print_header ${VALID_TESTS} + +## Builtins +# true +testbasic 'true' +testbasic 'true -c -e' + +# false +testbasic 'false' +testbasic 'false -c -e' + +# echo +# echo no flag +testbasic 'echo' +testbasic 'echo OK' +testbasic 'echo A AA AAA A AA AAA' +testbasic 'echo !' +testbasic "echo Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Egestas purus viverra accumsan in nisl nisi. At quis risus sed vulputate. Neque laoreet suspendisse interdum consectetur libero. Et molestie ac feugiat sed lectus vestibulum mattis. Tristique nulla aliquet enim tortor at auctor. Aliquet porttitor lacus luctus accumsan tortor. Tellus cras adipiscing enim eu turpis. Mattis ullamcorper velit sed ullamcorper morbi tincidunt ornare. Nec sagittis aliquam malesuada bibendum arcu vitae elementum. Consequat id porta nibh venenatis cras. Dolor magna eget est lorem ipsum. Vivamus at augue eget arcu dictum varius duis. Aliquam eleifend mi in nulla. Cursus risus at ultrices mi tempus imperdiet nulla malesuada. Adipiscing elit ut aliquam purus sit amet luctus venenatis. Risus at ultrices mi tempus imperdiet nulla malesuada pellentesque elit. Mauris cursus mattis molestie a iaculis at erat pellentesque adipiscing." +testbasic "echo if then do fi elif while for done until else in !" +# echo flag -n +testbasic 'echo -n' +testbasic 'echo -n OK' +testbasic 'echo -n A AA AAA A AA AAA' +testbasic 'Echo -n Ugly presentation innit?' +# echo flag -e +testbasic 'echo -e' +testbasic 'echo -e OK' +testbasic 'echo -e A AA AAA A AA AAA' +testbasic 'echo -e \n\t\e' +testbasic 'echo -e \n \t \e \\ \f' +testbasic 'echo -e some stuff \\ is in here' +testbasic 'echo -e Cutni\n half' +testbasic 'echo -e Testing the tab \t Just like this, see?\n' +# echo flag -E +testbasic 'echo -E' +testbasic 'echo -E OK' +testbasic 'echo -E A AA AAA A AA AAA' +testbasic 'echo -E \n\t\e' +testbasic 'echo -E \n \t \e \\ \f' +testbasic 'echo -E Nothing to see here' +# echo multiple flags +testbasic 'echo -E -n' +testbasic 'echo -E -n OK' +testbasic 'echo -E -n A AA AAA A AA AAA' +testbasic 'echo -E -e \n\t\e' +testbasic 'echo -e -E \n\t\e' +testbasic 'echo -e -E -n \n\t\e' +testbasic 'echo -E -e -n \n \t \e \\ \f' +testbasic 'echo -e -E \n \t \e \\ \f' +testbasic "echo -e -n Something\'s wrong\nI can \\feel\\ it\n" +testbasic 'echo -E -n Still nothing to \tsee here\n' +testbasic 'echo -e -n Testing the tab \t Just like this, see?\n Abd I also force a newline\n' +testbasic 'echo -e -n Something'\''s wrong\nI can \feel\\ it\n' +testbasic 'echo -E -e does this \t works ??' + +# dot +testbasic '.' +testbasic '. ./tests/resources/dot/script1.sh' +testbasic '. ./tests/resources/dot/script2.sh' + +# exit +testbasic 'exit' +testbasic 'exit -e' +testbasic 'exit 5' +testbasic '. ./tests/resources/exit/script1.sh' + +# cd +testbasic 'cd' +testbasic 'cd -' +testbasic 'cd /usr/' +testbasic 'cd ..' + +# export +testbasic 'export' +testbasic 'export A=42' +testbasic 'export A' + +# unset +testbasic 'export A=42; unset A' +testbasic 'unset A' + +# break & continue +testbasic 'break' +testbasic 'break 5' +testbasic 'continue' +testbasic 'continue 5' + +## Simple Command +testbasic 'ls' +testbasic 'cat /etc/passwd' +testbasic 'git status' +testbasic 'git log --all --decorate --oneline --graph' +testbasic 'tree' +testbasic 'date' +testbasic 'echo Testsuite now functional!' +testbasic 'echo if' +testbasic 'echo then' +testbasic 'ls then' +testbasic 'cat fi' +testbasic ' cat for a while' + +## Command List +testbasic 'true; false;' +testbasic 'false; true;' +testbasic 'true; true;' +testbasic 'false; false;' +testbasic 'echo aaa bbb ccc; true; ls;' +testbasic 'echo aaa bbb ccc; true; false; if true; then echo ok; fi' +testbasic 'echo a; echo b; echo c; echo ; echo ; echo ; echo d; echo ls; ls;' +testbasic 'true; true; true; true; true; true; true; true; true; true; false' +testbasic 'ls;ls .;ls ./;ls;ls;ls;ls ..;ls;ls;ls ../;ls;ls;' +testbasic 'true; true; true; true; echo aaa; true; true; false' +testbasic 'false; false; false; false; echo aaa; true' + +## Single Quote +testbasic "'echo' OK" +testbasic "'ech'o OK" +testbasic "cat 'fi'" +testbasic "l'''s'" +testbasic "'c''a''t' '/etc/pa'sswd" +testbasic "g'i't s'tat'us" +testbasic "g'i't l'o'g --all --decorate --oneline --graph" +testbasic "'tree'" +testbasic "'d''a''t''e'" +testbasic "'d''''a''''''t''''''''e'" +testbasic "'e''c'ho 'test aaaa'" + +## Comment +testbasic "echo \'# comment ça ???\'" +testbasic "echo \'comment ça ???\' \# comment ça \'????\'" +testbasic "echo \# et lĂ  ?" +testbasic "echo '\# et lĂ  ?'" +testbasic "echo han ? \# '\# et lĂ  ?'" +testbasic "echo \# '\# et lĂ  ?'" +testbasic "#######################################" +testbasic "echo \#Inexistant" +testbasic "echo Existe \#pas" + +## If then elif else +testbasic "if echo test; false; then echo ok; else echo ko; fi" +testbasic "if false; then echo ok; else echo ko; fi" +testbasic "if false; then echo ok; elif true; then echo bogos binted; else echo ko; fi" +testbasic "if false; then echo ok; elif ls; then echo bogos binted; else echo ko; fi" +testbasic "if false; then echo KO1; elif false; then echo KO2; elif false; then echo KO3; elif false; then echo KO4; elif false; then echo KO5; fi" +testbasic "if false; then echo KO1; elif false; then echo KO2; elif false; then echo KO3; elif false; then echo KO4; elif false; then echo KO5; else echo OK; fi" +testbasic "if false; then echo ok; elif true; then echo bogos binted; else echo ko; fi" +testbasic "if false; then \n\n\n\n\n\n\n\n echo ok; else echo ko\n\n\n\n; fi" +testbasic "if 'true' ; then e'ch'o O'K' ; else e'ch'o K'O'; fi" +testbasic "if 'tr'ue ; then 'echo' OK ; else 'echo' KO; fi" +testbasic "if true ; then echo OK ; elif false; then echo KO; elif false; then echo KO; fi" +testbasic "if false; then echo ok; else echo ko; fi ; if false; then echo ok; else echo ko; fi" +testbasic "if echo count with me; then echo 1 2 3 4 5 6 7 8 9 10 | wc; else echo too bad; fi" +testbasic "if echo -n many comms; then echo a; echo b; echo c; else echo too bad; fi" +testbasic "if echo testing redirs in the condition | wc; then echo it works; else echo it breakes; fi" +testbasic "if echo testing compound lists; echo another one; echo and another one; false; then echo problem; else echo fine; fi" +testbasic "if echo testing compound lists; echo another one; echo and another one; false; echo this is actually true; then echo fine; else echo problem; fi" + +## Pipeline +testbasic "true | false" +testbasic "false | true" +testbasic "find -iname \"*.[ch]\" | grep '.*test.*'" +testbasic "echo aaaaa | cat -e | sed 's/$/€/g'" +testbasic "echo Bonjour je suis lĂ  | cut --characters o | sed 's/o/a/g'" +testbasic "echo aaa | cat" +testbasic "echo aaa | cat -e" +testbasic "cat testsuite.sh | wc -l | cat -e" +testbasic "cat testsuite.sh | wc -l | cat | wc -c" +testbasic "cat testsuite.sh | wc -l | cat | wc -l" +testbasic "cat testsuite.sh | wc -l | cat | wc | cat -e" +testbasic "echo ./ | ls" +testbasic "echo ./TrustMeBroItJustWorks | ls" +testbasic "ls | ls" +testbasic "echo | echo" + +## Redirection +testredir "echo bonjour" '>' "$TEST_REDIR" +testredir "echo bonjour" '<' "$TEST_REDIR" +testredir "echo bonjour" '>>' "$TEST_REDIR" +testredir "echo bonjour" '<>' "$TEST_REDIR" +testredir "echo bonjour" '>|' "$TEST_REDIR" +testredir "echo -a bonjour" '>&' "$TEST_REDIR" +testredir "echo bonjour" '<&' "$TEST_REDIR" + +## And Or Not (Logical) +testbasic "! echo" +testbasic "! true" +testbasic "! false" +testbasic "! ! echo Invalid double negation" +testbasic "if ! false; then echo OK; else echo KO; fi" +testbasic "! true; echo aaa" +testbasic "true && false" +testbasic "true || false" +testbasic "false && true" +testbasic "! false && true" +testbasic "echo aa && true" +testbasic "if test -z $aaaaaa && echo doesn\'t exist; then echo OK; fi" +testbasic "false || ! false" +testbasic "if ! true || true ; then echo KO ; else echo OK ; fi" +testbasic "true || false || false || false || false || false" +testbasic "false && false && false && false && false && false" +testbasic "! true || ! false || ! false || ! false || ! false || ! false" +testbasic "if false && ! true && ! true || false; then echo KO; else echo OK; fi" + +## While +testbasic 'while false ; do echo LOOOOOOP ; done' +testbasic 'while invalid ; do echo LOOOOOOP ; done' + +## Until +testbasic 'until true ; do echo LOOOOOOP ; done' +testbasic 'until cat /etc/passwd ; do echo LOOOOOOP ; done' + +## Variable expansion +# Basic var +testbasic 'A=42 echo $A sh' +testbasic 'A=42; echo $A sh' +testbasic 'echo $A; A=42' +testbasic 'A=42 B=43 C=44 echo $A $B $C' +testbasic 'A=42 B=43 C=44 echo; $A $B $C' +testbasic 'A=42; B=43; C=44; echo; $A $B $C' +testbasic 'A=42 echo $A Nope; echo $A YES' +testbasic 'A=42 ;echo $A; A=43; echo $A; A=44; echo $A' +testbasic 'A=42 A=43 A=44; echo $A' +testbasic 'echo; echo; A=42; echo; echo; echo $A' +testbasic 'A=42 B=43 A=43;echo $A $B' +testbasic 'A=42 B=42 C=43 D=44 E=45 F=46 G=47 H=48 I=49 K=50; echo $A $B $C $D $E $F $G $H $I $J $K' +testbasic 'A=42; B=$A ; echo $B' + +# Special var +testbasic 'echo $@' +testbasic 'echo $*' +testbasic 'echo $?' +testbasic 'echo $$' +testbasic 'echo $1' +testbasic 'echo $2 $3' +testbasic 'echo $#' +testbasic 'echo $RANDOM' +testbasic 'echo $UID' +testbasic 'echo $OLDPWD' +testbasic 'echo $PWD' +testbasic 'echo $IFS' +testbasic 'echo ${PWD}' + +## For +testbasic 'for i in foo bar baz ; do echo $i ; done' +testbasic 'for i in foo "bar baz" ; do echo $i ; done' +testbasic 'for i; do echo $i ; done' + +## Command Substitution +testbasic 'echo $(echo toto)' +testbasic 'echo $(echo toto; echo tata)' +testbasic 'echo $(echo toto | cat -e)' +testbasic 'echo $(if true; then echo OK; else echo KO; fi)' +testbasic 'echo $(true)' +testbasic 'echo$(echo " toto")' +testbasic 'echo `echo $(printf " coucou")`' +testbasic 'echo `echo $(printf " coucou%s" $(echo aaaaaaaaaaaaaaa))`' +# This test will print stuff on STDERR but still succedes with exit code 0 +testbasic 'echo `echo $(printf " coucou%s" $(aaaaaaaaaaaaaaa))`' +testbasic 'echo "$(echo OK)"' + +## Subshells +testbasic 'echo aaa; (echo bbb); echo ccc;' +testbasic 'echo aaa; (A=42; echo $A sh);' +testbasic 'echo aaa; (A=42; echo $A sh); echo ccc' +testbasic 'A=41; (echo $A; A=42); echo $A' +testbasic 'A=41; (A=42; echo $A); echo $A' +testbasic 'A=41; (A=42 echo $A); echo $A' +testbasic '(A=42); echo $A' +testbasic '(A=1;(A=2;(A=3; echo $A); echo $A); echo $A)' +testbasic '(A=1); (A=2); (echo $A)' +testbasic '(A=1; (B=2)); echo $A $B' +testbasic '(A=1); (B=1); (C=1); (echo $A $B $C)' +testbasic 'A=1; B=2; C=3; (echo $A $B $C)' +testbasic '((A=1);(B=2); echo $A $B)' + +## Command Block +testredir "{ echo bonjour ; echo au revoir; }" '>' "$TEST_REDIR" +testredir "{ echo bonjour ; echo au revoir; }" '<' "$TEST_REDIR" +testredir "{ echo bonjour ; echo au revoir; }" '>>' "$TEST_REDIR" +testredir "{ echo bonjour ; echo au revoir; }" '<>' "$TEST_REDIR" +testredir "{ echo bonjour ; echo au revoir; }" '>|' "$TEST_REDIR" +testredir "{ echo bonjour ; echo au revoir; }" '>&' "$TEST_REDIR" +testredir "{ echo bonjour ; echo au revoir; }" '<&' "$TEST_REDIR" + +## Mixed tests +testbasic "echo a; echo b; echo c | wc | cat; echo d; echo e" +testbasic "echo a; echo b; if true; then echo OK; else echo KO; fi; echo c; echo d" +testbasic "ls; echo a && t'ru'e || false; echo conditionals are now over | wc; if true; then echo OK; else echo KO; fi" +testbasic "echo aaa | wc | cat; echo bbb | cat | ls; echo ccc | echo" + +## As Script +testasscript "echo a; echo b; echo c | wc | cat; echo d; echo e" +testasscript "echo a; echo b; if true; then echo OK; else echo KO; fi; echo c; echo d" +testasscript "ls; echo a && t'ru'e || false; echo conditionals are now over | wc; if true; then echo OK; else echo KO; fi" +testasscript "echo aaa | wc | cat; echo bbb | cat | ls; echo ccc | echo" + +## As Argument +testasargument "echo a; echo b; echo c | wc | cat; echo d; echo e" +testasargument "echo a; echo b; if true; then echo OK; else echo KO; fi; echo c; echo d" +testasargument "ls; echo a && t'ru'e || false; echo conditionals are now over | wc; if true; then echo OK; else echo KO; fi" +testasargument "echo aaa | wc | cat; echo bbb | cat | ls; echo ccc | echo" + +# Error tests +ERROR_TESTS="Error tests" +print_header ${ERROR_TESTS} + +testerror "ghsdfloerijg" +testerror "if echo test; false; then\n echo ok;\n else\n echo ko;\n fi" +testerror "if djunkleschkog; then echo bear; else echo plushie; fi" +testerror "if true; then nope; else echo you sure?; fi" +testerror "if false; then echo Seriously?; else depression; fi" +testerror "if false; then echo not again; elif insanity; then echo Nope; else echo still nope; fi" +testerror "if false; then echo stop; elif true; then nope; else echo really, stop; fi" +testerror "if false; then echo stop; elif false; then echo STOP DAMMIT; else adog; fi" +testerror "ech'o a'aa" +testerror "'echo aaa'" +testerror "if true; echo OK ; else echo KO; fi" +testerror "if bobby; then echo GREEDY; else echo fine; fi" +testerror "'if' true; 'then' echo OK; 'else' echo KO; 'fi'" +testerror "if true; 'then' echo OK; 'else' echo KO; 'fi'" +testerror "e'cho aaa" +testerror "echo aa ><" +testerror "while while true; do echo ok else echo false" +testerror "while true; echo missing; done" +testerror "while true; do echo missing again;" +testerror "while ; do echo no cond; done" +testerror "while true; do echo no end done" +testerror "while echo infinity; do do echo incorrect; done" +testerror "while invalid; do echo no end; done" +testerror "while invalid; do incorrect; done" +testerror "until while true; do echo ok else echo false" +testerror "until true; echo missing; done" +testerror "until true; do echo missing again;" +testerror "until ; do echo no cond; done" +testerror "until true; do echo no end done" +testerror "until echo infinity; do do echo incorrect; done" +testerror "until invalid; do echo no end; done" +testerror "until invalid; do incorrect; done" + +# Logic Combined with Pipelines +testerror "true && echo This | grep This || echo Fail" +testerror "false || echo Fallback | grep Fall" +testerror "echo Hello | grep H && echo Found || echo Not Found" +testerror "echo Hello | grep Z && echo Found || echo Not Found" +testerror "false || echo aaaaa | cat | sed 's/a/b/g'" +testerror "true && echo OK | cat -e && echo Done" +testerror "true || echo This should not print | grep This" +testerror "false && echo This should not print | grep This" + +# Complex Conditions with Pipelines +testerror "if echo Hello | grep H; then echo OK; else echo KO; fi" +testerror "if echo Bonjour | grep Z; then echo OK; else echo KO; fi" +testerror "if echo Foo | grep F && echo Bar | grep B; then echo OK; else echo KO; fi" +testerror "if false || echo Hello | grep H; then echo OK; else echo KO; fi" + +# Invalid Pipelines +testerror "| echo Leading pipe" +testerror "echo Trailing pipe |" +testerror "echo Double || pipe" +testerror "echo || echo || Invalid logic" +testerror "echo Missing command | | grep H" + +# Invalid Redirections +testerror "echo Test >" +testerror "echo Test >< file" +testerror "echo Test ><< file" +# testerror 'echo Test >!< file' +testerror "echo Test > > file" +testerror "cat < nonexistentfile" +testerror "ls 2> /nonexistentdirectory/file" + +# Invalid Logic +testerror '!echo' +testerror '!true' +testerror '!false' +testerror "true && && echo Invalid and" +testerror "true || || echo Invalid or" + +# Micellanious +testerror ')' +testerror '}' +testerror '||' +testerror '&&' +testerror '$' +testerror '&' +testerror '|' + +# If loops +testerror 'if' +testerror 'if true; echo aaa' +testerror 'if ; echo aaa' +testerror 'if true; then echo aaa' +testerror 'if true; then echo aaa; else' +testerror 'if true; then echo aaa; else echo bbb' +testerror 'if true; then echo aaa; else echo bbb; elif' +testerror 'if true; then echo aaa; elif' +testerror 'if true; then echo aaa; elif false; echo ccc' +testerror 'if true; then echo aaa; elif false; then echo ccc' +testerror 'if true; then echo aaa; elif false; then echo ccc;' +testerror 'if rue; then echo aaa' +testerror 'if true; then cho aaa; else' +testerror 'if true; then cho aaa; else cho bbb' +testerror 'if true; then cho aaa; else cho bbb; elif' +testerror 'if true; then cho aaa; elif' +testerror 'if true; then cho aaa; elif false; cho ccc' +testerror 'if true; then cho aaa; elif false; then cho ccc' +testerror 'if true; then cho aaa; elif false; then cho ccc;' + +# While loops +testerror 'while' +testerror 'while false' +testerror 'while false; echo aaa' +testerror 'while false; do echo aaa;' + +# Until loops +testerror 'until' +testerror 'until true' +testerror 'until true; echo aaa' +testerror 'until true; do echo aaa;' + +# For loops +testerror 'for' +testerror 'for a' +testerror 'for abc def' +testerror 'for a in ;' +testerror 'for (' +testerror 'for a ;' +testerror 'for a in b c d e f g h ;' +testerror 'for i in range; do' +testerror 'for j in range; asd' +testerror 'for k in range; do echo aaa;' +testerror 'for l in range; do echo aaa' +testerror 'for in in in' + +# Function declaration +testerror 'test (' +testerror 'test (0123456789' +testerror 'test ()' +testerror 'test &' +testerror 'test () {' + +# Redirection +testerror '2' +testerror 'wipuevbhqipie 2>&' +testerror 'echo aaa 2>&' +testerror 'echo > >' +testerror 'echo aaa >& (' +testerror 'echo aaa >& )' +testerror '>22' +testerror '>>>>>>>>>' +testerror '() > ()' + +# Bad Usage +testbadusage + +## Pretty print +testprettyprint 'echo OK' +testprettyprint 'ls' +testprettyprint 'if true ; then exit ; else . ./tests/resources/dot/script1.sh' +testprettyprint 'while false ; do your mom ; done' +testprettyprint 'until true ; do nothing ; done' +testprettyprint 'for i in foo bar baz ; do echo $i ; done' +testprettyprint 'A=42 ; echo $A' +testprettyprint 'find . -name "*.[hc]" | xargs wc -l' +testprettyprint 'if ! false && true || true ; then echo OK ; else echo KO ; fi' +testprettyprint 'echo OK > le_test.oui && rm -f le_test.oui' + +RESULTS="Results" +print_header ${RESULTS} +printf "%d%% ($score/$testcount) of the tests passed!\n" $((score * 100 / testcount)) +[ "$failures" ] && echo "Failing tests ($((testcount - score))/$testcount): $failures" +echo ${SEPARATOR} +[ "$OUTPUT_FILE" ] && echo $((score * 100 / testcount)) > "$OUTPUT_FILE" + +clean + +exit 0 diff --git a/42sh/tests/unit/tests_lexer.c b/42sh/tests/unit/tests_lexer.c new file mode 100644 index 0000000..b7617aa --- /dev/null +++ b/42sh/tests/unit/tests_lexer.c @@ -0,0 +1,288 @@ +#include //TODO Include the 2 libs of criterion +#include +#include +#include + +#include "lexer/expansion.h" +#include "lexer/lexer.h" +#include "lexer/token.h" +#include "utils/libstring.h" + +TestSuite(Trying); + +Test(Trying, Hello_World) +{ + printf("Hello World!\n"); + cr_expect_eq(1, 0); +} + +TestSuite(LexerBasic); + +Test(LexerBasic, New) +{ + struct string *input = string_create("echo Hello World !"); + struct lexer *test = lexer_new(input); + struct string *txt = test->input; + + cr_expect_str_eq("echo Hello World !", txt->data); + cr_expect(strlen("echo Hello World !") == txt->length, + "Expected 17, got %zu\n", txt->length); + + lexer_free(test); + string_free(input); +} + +Test(LexerBasic, SimplePeek) +{ + struct string *input = string_create("echo Hello World !"); + struct lexer *test = lexer_new(input); + + struct token head = lexer_peek(test); + + cr_expect_eq(TOKEN_WORD, head.type); + cr_expect_str_eq(head.value->data, "echo"); + + lexer_pop(test); + + head = lexer_pop(test); + + cr_expect_eq(TOKEN_WORD, head.type); + cr_expect_str_eq(head.value->data, "Hello"); + + head = lexer_pop(test); + + cr_expect_eq(TOKEN_WORD, head.type); + cr_expect_str_eq(head.value->data, "World"); + + head = lexer_pop(test); + + cr_expect_eq(head.type, TOKEN_NEG); + + head = lexer_peek(test); + cr_expect_eq(TOKEN_EOF, head.type); + + lexer_free(test); +} + +Test(LexerBasic, PeekComment) +{ + struct string *input = + string_create("echo; Hello # zoubi zoubi le commentaire \n World !"); + struct lexer *test = lexer_new(input); + + struct token head = lexer_peek(test); + + cr_expect_eq(TOKEN_WORD, head.type); + cr_expect_str_eq(head.value->data, "echo"); + + lexer_pop(test); + + head = lexer_pop(test); + cr_expect_eq(head.type, TOKEN_SEMICOLON); + + head = lexer_pop(test); + cr_expect_eq(TOKEN_WORD, head.type); + cr_expect_str_eq(head.value->data, "Hello"); + + head = lexer_pop(test); + cr_expect_eq(head.type, TOKEN_NEWLINE); + + head = lexer_pop(test); + + cr_expect_eq(TOKEN_WORD, head.type); + cr_expect_str_eq(head.value->data, "World"); + + head = lexer_pop(test); + + cr_expect_eq(head.type, TOKEN_NEG); + + head = lexer_peek(test); + cr_expect_eq(TOKEN_EOF, head.type); + + lexer_free(test); +} + +Test(LexerBasic, HardPeek) +{ + struct string *input = string_create("echo; Hello\n World !"); + struct lexer *test = lexer_new(input); + + struct token head = lexer_peek(test); + + cr_expect_eq(TOKEN_WORD, head.type); + cr_expect_str_eq(head.value->data, "echo"); + + lexer_pop(test); + + head = lexer_pop(test); + cr_expect_eq(head.type, TOKEN_SEMICOLON); + + head = lexer_pop(test); + cr_expect_eq(TOKEN_WORD, head.type); + cr_expect_str_eq(head.value->data, "Hello"); + + head = lexer_pop(test); + cr_expect_eq(head.type, TOKEN_NEWLINE); + + head = lexer_pop(test); + + cr_expect_eq(TOKEN_WORD, head.type); + cr_expect_str_eq(head.value->data, "World"); + + head = lexer_pop(test); + + cr_expect_eq(head.type, TOKEN_NEG); + + head = lexer_peek(test); + cr_expect_eq(TOKEN_EOF, head.type); + + lexer_free(test); +} + +Test(LexerBasic, easytricky) +{ + struct string *input = string_create("\'echo\' H\'el\'lo World \n test"); + struct lexer *l = lexer_new(input); + + struct token t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "'echo'"); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "'Hello'"); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "World"); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_NEWLINE); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "test"); + + lexer_free(l); + string_free(input); +} + +Test(LexerBasic, harderdaddy) +{ + struct string *input = string_create("echo\'\' H\\'ello World\\' \n test"); + struct lexer *l = lexer_new(input); + + struct token t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "echo''"); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "H\\'ello World\\'"); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_NEWLINE); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "test"); + + lexer_free(l); + string_free(input); +} + +Test(LexerBasic, routine) +{ + struct string *input = string_create( + "i'f' 't''r''u''e'; 'then'\necho ok;\nelse echo \\'ko\\';"); + struct lexer *l = lexer_new(input); + + struct token t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_IF); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "true"); + + t = lexer_pop(l); + cr_expect_eq(t.type, TOKEN_SEMICOLON); + + t = lexer_pop(l); + cr_expect_eq(t.type, TOKEN_THEN); + + t = lexer_pop(l); + cr_expect_eq(t.type, TOKEN_NEWLINE); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "echo"); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "ok"); + + t = lexer_pop(l); + cr_expect_eq(t.type, TOKEN_SEMICOLON); + + t = lexer_pop(l); + cr_expect_eq(t.type, TOKEN_NEWLINE); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_ELSE); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "echo"); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "\'ko\'"); + + t = lexer_pop(l); + cr_expect_eq(t.type, TOKEN_SEMICOLON); + + lexer_free(l); + string_free(input); +} + +Test(LexerBasic, redir) +{ + struct string *input = string_create("echo Hello >> test.txt"); + struct lexer *test = lexer_new(input); + + struct token t = lexer_pop(test); + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "echo"); + + t = lexer_pop(test); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "Hello"); + + t = lexer_pop(test); + cr_expect_eq(t.type, TOKEN_REDIR); + cr_expect_str_eq(t.value->data, ">>"); + + t = lexer_pop(test); + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "test.txt"); + + lexer_free(test); + string_free(input); +} diff --git a/42sh/tests/unit/tests_parser.c b/42sh/tests/unit/tests_parser.c new file mode 100644 index 0000000..8d0f84c --- /dev/null +++ b/42sh/tests/unit/tests_parser.c @@ -0,0 +1,147 @@ +#include //TODO Include the 2 libs of criterion +#include +#include +#include + +#include "ast/ast.h" +#include "lexer/expansion.h" +#include "lexer/lexer.h" +#include "lexer/token.h" +#include "utils/utils.h" + +TestSuite(ParserBasic); + +Test(ParserBasic, onlyone) +{ + struct string *input = string_create("echo"); + struct lexer *test = lexer_new(input); + + struct ast *root = parse(lexer); + + cr_expect(root->type == AST_LIST); + + ast_free(root); + lexer_free(test); +} + +/* +Test(ParserBasic, easytricky) +{ + struct string *input = string_create("\'echo\' H\'el\'lo World \n test"); + struct lexer *l = lexer_new(input); + + struct token t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "echo"); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "Hello"); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "World"); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_NEWLINE); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "test"); + + lexer_free(l); + string_free(input); +} + +Test(ParserBasic, harderdaddy) +{ + struct string *input = string_create("echo\'\' H\\'ello World\\' \n test"); + struct lexer *l = lexer_new(input); + + struct token t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "echo"); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "H\'ello World\'"); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_NEWLINE); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "test"); + + lexer_free(l); + string_free(input); +} + +Test(ParserBasic, routine) +{ + struct string *input = string_create("i'f' 't''r''u''e'; 'then'\necho ok;\nelse echo \\'ko\\';"); + struct lexer *l = lexer_new(input); + + struct token t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_IF); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "true"); + + t = lexer_pop(l); + cr_expect_eq(t.type, TOKEN_SEMICOLON); + + t = lexer_pop(l); + cr_expect_eq(t.type, TOKEN_THEN); + + t = lexer_pop(l); + cr_expect_eq(t.type, TOKEN_NEWLINE); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "echo"); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "ok"); + + t = lexer_pop(l); + cr_expect_eq(t.type, TOKEN_SEMICOLON); + + t = lexer_pop(l); + cr_expect_eq(t.type, TOKEN_NEWLINE); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_ELSE); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "echo"); + + t = lexer_pop(l); + + cr_expect_eq(t.type, TOKEN_WORD); + cr_expect_str_eq(t.value->data, "\'ko\'"); + + t = lexer_pop(l); + cr_expect_eq(t.type, TOKEN_SEMICOLON); + + lexer_free(l); + string_free(input); +}*\ diff --git a/42sh/tests/wrapper.sh b/42sh/tests/wrapper.sh new file mode 100755 index 0000000..1972768 --- /dev/null +++ b/42sh/tests/wrapper.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +echo \#\#\#\#\#\#\#\#\# FUNCTIONAL TESTS \#\#\#\#\#\#\#\#\# +functional/testsuite.sh + +[ "$COVERAGE" ] && echo \#\#\#\#\#\#\#\#\# UNIT TESTS \#\#\#\#\#\#\#\#\# && ./tests + +exit 0 diff --git a/benchmark/.gitignore b/benchmark/.gitignore new file mode 100644 index 0000000..1c8df90 --- /dev/null +++ b/benchmark/.gitignore @@ -0,0 +1,152 @@ +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Log/OS Files +*.log + +# Android Studio generated files and folders +captures/ +.externalNativeBuild/ +.cxx/ +*.apk +output.json + +# IntelliJ +*.iml +.idea/ +misc.xml +deploymentTargetDropDown.xml +render.experimental.xml + +# Keystore files +*.jks +*.keystore + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Android Profiling +*.hprof + +# Compiled class file +*.class + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* +replay_pid* + +# Kotlin Gradle plugin data, see https://kotlinlang.org/docs/whatsnew20.html#new-directory-for-kotlin-data-in-gradle-projects +.kotlin/ + +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ +.idea/sonarlint.xml # see https://community.sonarsource.com/t/is-the-file-idea-idea-idea-sonarlint-xml-intended-to-be-under-source-control/121119 + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser +/doc/API_INTEGRATION.md diff --git a/benchmark/README.md b/benchmark/README.md new file mode 100644 index 0000000..ee09ff5 --- /dev/null +++ b/benchmark/README.md @@ -0,0 +1 @@ +# BenchMark diff --git a/benchmark/app/.gitignore b/benchmark/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/benchmark/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/benchmark/app/build.gradle.kts b/benchmark/app/build.gradle.kts new file mode 100644 index 0000000..7dfb21a --- /dev/null +++ b/benchmark/app/build.gradle.kts @@ -0,0 +1,81 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.compose) +} + +android { + namespace = "io.trentetroim.benchmark" + compileSdk = 35 + + defaultConfig { + applicationId = "io.trentetroim.benchmark" + minSdk = 33 + targetSdk = 35 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } + buildFeatures { + compose = true + } +} + +dependencies { + implementation(libs.osmdroid.android) + implementation(libs.osmbonuspack) + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.runtime.ktx) + implementation(libs.androidx.activity.compose) + implementation(platform(libs.androidx.compose.bom)) + implementation(libs.androidx.ui) + implementation(libs.androidx.ui.graphics) + implementation(libs.androidx.ui.tooling.preview) + implementation(libs.androidx.material3) + implementation(libs.androidx.constraintlayout) + implementation(libs.androidx.cardview) + + implementation(libs.retrofit) + implementation(libs.retrofit.gson) + implementation(libs.gson) + + implementation(libs.okhttp) + implementation(libs.okhttp.logging) + + implementation(libs.kotlinx.coroutines.core) + implementation(libs.kotlinx.coroutines.android) + implementation(libs.play.services.location) + implementation(libs.material) + implementation(libs.glide) + implementation(libs.samsung.image.picker) + implementation(libs.coil.compose) + + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.androidx.espresso.core) + androidTestImplementation(platform(libs.androidx.compose.bom)) + androidTestImplementation(libs.androidx.ui.test.junit4) + debugImplementation(libs.androidx.ui.tooling) + implementation(libs.androidx.core.splashscreen) + debugImplementation(libs.androidx.ui.test.manifest) + implementation("com.github.a914-gowtham:compose-ratingbar:1.3.12") + implementation(libs.slidingUp){exclude(group="com.android.support", module="support-v4")} +} diff --git a/benchmark/app/proguard-rules.pro b/benchmark/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/benchmark/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/benchmark/app/src/androidTest/java/io/trentetroim/benchmark/ExampleInstrumentedTest.kt b/benchmark/app/src/androidTest/java/io/trentetroim/benchmark/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..a883705 --- /dev/null +++ b/benchmark/app/src/androidTest/java/io/trentetroim/benchmark/ExampleInstrumentedTest.kt @@ -0,0 +1,25 @@ +package io.trentetroim.benchmark + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = + InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("io.trentetroim.benchmark", appContext.packageName) + } +} \ No newline at end of file diff --git a/benchmark/app/src/main/AndroidManifest.xml b/benchmark/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..9021931 --- /dev/null +++ b/benchmark/app/src/main/AndroidManifest.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/benchmark/app/src/main/java/io/trentetroim/benchmark/AddBenchActivity.kt b/benchmark/app/src/main/java/io/trentetroim/benchmark/AddBenchActivity.kt new file mode 100644 index 0000000..62432e3 --- /dev/null +++ b/benchmark/app/src/main/java/io/trentetroim/benchmark/AddBenchActivity.kt @@ -0,0 +1,274 @@ +package io.trentetroim.benchmark + +import android.app.Activity +import android.graphics.drawable.shapes.Shape +import android.net.Uri +import android.os.Bundle +import android.util.Log +import android.widget.Toast +import androidx.activity.ComponentActivity +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.compose.setContent +import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableFloatStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen +import coil.compose.rememberAsyncImagePainter +import com.gowtham.ratingbar.RatingBar +import com.gowtham.ratingbar.RatingBarStyle +import io.trentetroim.benchmark.ui.theme.BenchmarkTheme +import io.trentetroim.benchmark.ui.theme.Grass +import io.trentetroim.benchmark.ui.theme.Typography +import io.trentetroim.benchmark.api.models.ApiResponse +import io.trentetroim.benchmark.api.models.Point +import io.trentetroim.benchmark.api.models.Review +import io.trentetroim.benchmark.api.repository.PointRepository +import io.trentetroim.benchmark.api.repository.ReviewRepository +import kotlinx.coroutines.launch +import androidx.lifecycle.lifecycleScope +import io.trentetroim.benchmark.ui.theme.Lagoon +import io.trentetroim.benchmark.ui.theme.Tildeeth +import io.trentetroim.benchmark.ui.theme.TildeethAlpha +import org.osmdroid.views.overlay.simplefastpoint.SimpleFastPointOverlayOptions + +class AddBenchActivity : ComponentActivity() { + private val defaultImageUrl = "https://guillotinemelody.dev/resources/icon.png" + private val pointRepository = PointRepository() + private val reviewRepository = ReviewRepository() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + installSplashScreen() + val latitude = intent.getDoubleExtra("currentLatitude", 0.0) + val longitude = intent.getDoubleExtra("currentLongitude", 0.0) + + setContent { + BenchmarkTheme { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + modifier = Modifier.fillMaxSize().background( + color = Grass + ).padding(16.dp) + ) { + Text(text = stringResource(R.string.new_bench), textAlign = TextAlign.Center) + + Spacer(modifier = Modifier.height(16.dp)) + + var description by remember { mutableStateOf("") } + Input(value = description, onValueChange = { description = it }) + + Spacer(modifier = Modifier.height(16.dp)) + + var rating by remember { mutableFloatStateOf(3.0f) } + Rating(value = rating, onValueChange = { rating = it }) + + Spacer(modifier = Modifier.height(16.dp)) + + var imageUrl by remember { mutableStateOf(defaultImageUrl) } + var selectedImageUri by remember { mutableStateOf(null) } + var isUploading by remember { mutableStateOf(false) } + val context = LocalContext.current + + val pickImageLauncher = rememberLauncherForActivityResult( + contract = ActivityResultContracts.GetContent() + ) { uri: Uri? -> + uri?.let { + selectedImageUri = it + isUploading = true + + lifecycleScope.launch { + pointRepository.uploadImage(context, it).collect { response -> + when (response) { + is ApiResponse.Success -> { + imageUrl = response.data + isUploading = false + Toast.makeText(context, "Image uploaded successfully", Toast.LENGTH_SHORT).show() + } + is ApiResponse.Error -> { + isUploading = false + Toast.makeText(context, "Error: ${response.errorMessage}", Toast.LENGTH_SHORT).show() + } + is ApiResponse.Loading -> { + } + } + } + } + } + } + + Button( + onClick = { pickImageLauncher.launch("image/*") }, + enabled = !isUploading + ) { + Text("Ajouter une photo") + } + + Spacer(modifier = Modifier.height(8.dp)) + + if (isUploading) { + CircularProgressIndicator( + modifier = Modifier.size(24.dp), + color = Color.White + ) + Spacer(modifier = Modifier.height(8.dp)) + } + + selectedImageUri?.let { + Image( + painter = rememberAsyncImagePainter(it), + contentDescription = "Selected image", + modifier = Modifier + .size(150.dp) + .padding(8.dp) + ) + } + + Text( + text = "URL de l'image: $imageUrl", + modifier = Modifier.padding(8.dp) + ) + + Spacer(modifier = Modifier.height(16.dp)) + + Row( + horizontalArrangement = Arrangement.SpaceEvenly, + modifier = Modifier.fillMaxWidth() + ) { + Button(onClick = { finish() }) { + Text(stringResource(R.string.cancel)) + } + + Button(onClick = { + val prefixedImageUrl = if (!imageUrl.startsWith("http://la-banquise.fr:5431")) { + "http://la-banquise.fr:5431" + if (imageUrl.startsWith("/")) imageUrl else "/$imageUrl" + } else { + imageUrl + } + + val point = Point( + x = latitude, + y = longitude, + type = "bench", + name = description, + picture = prefixedImageUrl, + id = "" + ) + + lifecycleScope.launch { + pointRepository.createPoint(point).collect { response -> + when (response) { + is ApiResponse.Success -> { + Log.d("AddBenchActivity", "Point created: $point") + + val createdPoint = response.data + val initialReview = Review( + id = "", + pointId = createdPoint.id, + grade = rating.toInt(), + comment = "Initial rating", + pictures = null + ) + + reviewRepository.addReview(createdPoint.id, initialReview).collect { reviewResponse -> + when (reviewResponse) { + is ApiResponse.Success -> { + Log.d("AddBenchActivity", "Initial review added: ${reviewResponse.data}") + Toast.makeText( + this@AddBenchActivity, + "Banc et note initiale ajoutĂ©s avec succĂšs!", + Toast.LENGTH_SHORT + ).show() + } + is ApiResponse.Error -> { + Log.e("AddBenchActivity", "Error adding initial review: ${reviewResponse.errorMessage}") + Toast.makeText( + this@AddBenchActivity, + "Banc ajoutĂ© mais erreur lors de l'ajout de la note initiale", + Toast.LENGTH_SHORT + ).show() + } + is ApiResponse.Loading -> { + } + } + finish() + } + } + is ApiResponse.Error -> { + Log.e("AddBenchActivity", "Error creating point: ${response.errorMessage}") + Toast.makeText( + this@AddBenchActivity, + "Erreur lors de la crĂ©ation du banc: ${response.errorMessage}", + Toast.LENGTH_SHORT + ).show() + } + is ApiResponse.Loading -> { + } + } + } + } + }) { + Text(stringResource(R.string.save)) + } + } + } + } + } + } +} + +@Composable +fun Input(value: String, onValueChange: (String) -> Unit) { + OutlinedTextField( + value = value, + onValueChange = onValueChange, + label = { Text("Description", color = Tildeeth) }, + placeholder = { Text("Smash", color = TildeethAlpha) }, + maxLines = 3, + textStyle = TextStyle(color = Tildeeth, fontFamily = Typography.bodyLarge.fontFamily), + modifier = Modifier.padding(8.dp).background(Lagoon).border(3.dp, Tildeeth) + ) +} + +@Composable +fun Rating(value: Float, onValueChange: (Float) -> Unit) { + RatingBar( + value = value, + style = RatingBarStyle.Fill(), + onValueChange = onValueChange, + onRatingChanged = { + Log.d("TAG", "onRatingChanged: $it") + } + ) +} diff --git a/benchmark/app/src/main/java/io/trentetroim/benchmark/CustomAdapter.kt b/benchmark/app/src/main/java/io/trentetroim/benchmark/CustomAdapter.kt new file mode 100644 index 0000000..5b77dcc --- /dev/null +++ b/benchmark/app/src/main/java/io/trentetroim/benchmark/CustomAdapter.kt @@ -0,0 +1,90 @@ +package io.trentetroim.benchmark + +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.RatingBar +import android.widget.TextView +import androidx.lifecycle.LifecycleCoroutineScope +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import io.trentetroim.benchmark.api.models.ApiResponse +import io.trentetroim.benchmark.api.models.Point +import io.trentetroim.benchmark.api.repository.ReviewRepository +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch + +interface OnBenchClickListener { + fun onBenchClick(point: Point) +} + +class CustomAdapter( + private val dataSet: List, + private val lifecycleScope: LifecycleCoroutineScope, + private val onBenchClickListener: OnBenchClickListener? = null +) : RecyclerView.Adapter() { + + private val reviewRepository = ReviewRepository() + + class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { + val cardPfp: ImageView = view.findViewById(R.id.benchPfp) + val cardName: TextView + val cardPosition: TextView + val cardRating: RatingBar + val itemView: View = view + + init { + cardName = view.findViewById(R.id.benchName) + cardPosition = view.findViewById(R.id.benchPos) + cardRating = view.findViewById(R.id.benchRating) + } + } + + override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): ViewHolder { + val view = LayoutInflater.from(viewGroup.context) + .inflate(R.layout.card_layout, viewGroup, false) + + return ViewHolder(view) + } + + override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) { + val point = dataSet[position] + viewHolder.cardName.text = point.name + + val decimalFormat = java.text.DecimalFormat("0.000") + viewHolder.cardPosition.text = "Position: ${decimalFormat.format(point.x)}, ${decimalFormat.format(point.y)}" + + // Fetch and display the average rating + lifecycleScope.launch { + reviewRepository.getAverageRating(point.id).collectLatest { response -> + when (response) { + is ApiResponse.Success -> { + viewHolder.cardRating.rating = response.data + } + else -> { + viewHolder.cardRating.rating = 0f + } + } + } + } + + // Set click listener on the card view + viewHolder.itemView.setOnClickListener { + onBenchClickListener?.onBenchClick(point) + } + + if (!point.picture.isNullOrEmpty()) { + Glide.with(viewHolder.itemView.context) + .load(point.picture) + .placeholder(R.drawable.ic_bench_icon) + .error(R.drawable.ic_bench_icon) + .into(viewHolder.cardPfp) + } else { + viewHolder.cardPfp.setImageResource(R.drawable.ic_bench_icon) + } + } + + override fun getItemCount() = dataSet.size +} diff --git a/benchmark/app/src/main/java/io/trentetroim/benchmark/MainActivity.kt b/benchmark/app/src/main/java/io/trentetroim/benchmark/MainActivity.kt new file mode 100644 index 0000000..d99db2e --- /dev/null +++ b/benchmark/app/src/main/java/io/trentetroim/benchmark/MainActivity.kt @@ -0,0 +1,100 @@ +package io.trentetroim.benchmark + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import io.trentetroim.benchmark.ui.theme.BenchmarkTheme +import android.content.Context +import android.content.Intent +import android.os.UserManager +import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.size +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.ui.Alignment +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen +import io.trentetroim.benchmark.ui.theme.Lagoon +import io.trentetroim.benchmark.ui.theme.Salmon +import io.trentetroim.benchmark.ui.theme.White + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + installSplashScreen() + enableEdgeToEdge() + setContent { + BenchmarkTheme { + MainContent(Modifier.background(Lagoon)) + } + } + } + + @Composable + @Preview + fun MainContent(modifier : Modifier = Modifier) { + Column( + modifier.fillMaxSize(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.SpaceEvenly + ) { + val user: UserManager = applicationContext.getSystemService(USER_SERVICE) as UserManager + Text("User is a goat: " + user.isUserAGoat().toString()) + Infos() + IntentToSwitch(LocalContext.current) + Footer() + } + } + + @Composable + @Preview + fun Infos() { + Image( + painter = painterResource(R.drawable.ic_bench_icon), + modifier = Modifier.size(200.dp), + contentDescription = "App icon", + contentScale = ContentScale.Fit + ) + Text(text = stringResource(R.string.app_name), fontSize = 50.sp) + } + + // composable with a button + @Composable + fun IntentToSwitch(context: Context) { + Button( + onClick = { + context.startActivity(Intent(context, MapActivity::class.java)) + }, + colors = ButtonDefaults.buttonColors(containerColor = Salmon), + ) { + Text("DĂ©marrer", color = White) + } + } + + @Composable + @Preview + fun Footer() { + Column(horizontalAlignment = Alignment.CenterHorizontally) { + Text( + text = stringResource(R.string.devs), + ) + Text(stringResource(R.string.quote), fontStyle = FontStyle.Italic, fontFamily = FontFamily.Cursive) + } + } +} \ No newline at end of file diff --git a/benchmark/app/src/main/java/io/trentetroim/benchmark/MapActivity.kt b/benchmark/app/src/main/java/io/trentetroim/benchmark/MapActivity.kt new file mode 100644 index 0000000..09376b2 --- /dev/null +++ b/benchmark/app/src/main/java/io/trentetroim/benchmark/MapActivity.kt @@ -0,0 +1,811 @@ +package io.trentetroim.benchmark + +import android.Manifest +import android.animation.ValueAnimator +import android.content.Intent +import android.content.pm.PackageManager +import android.graphics.Bitmap +import android.graphics.drawable.Drawable +import android.os.Bundle +import android.preference.PreferenceManager.getDefaultSharedPreferences +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import android.widget.EditText +import android.widget.ImageButton +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.RatingBar +import android.widget.TextView +import android.widget.Toast +import androidx.activity.ComponentActivity +import androidx.coordinatorlayout.widget.CoordinatorLayout +import androidx.core.app.ActivityCompat +import androidx.core.animation.doOnEnd +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.updateLayoutParams +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.request.target.CustomTarget +import com.bumptech.glide.request.transition.Transition +import com.google.android.gms.location.FusedLocationProviderClient +import com.google.android.gms.location.LocationServices +import com.google.android.material.bottomsheet.BottomSheetBehavior +import io.trentetroim.benchmark.api.models.ApiResponse +import io.trentetroim.benchmark.api.models.Point +import io.trentetroim.benchmark.api.models.Review +import io.trentetroim.benchmark.api.repository.PointRepository +import io.trentetroim.benchmark.api.repository.ReviewRepository +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch +import org.osmdroid.config.Configuration.getInstance +import org.osmdroid.tileprovider.tilesource.TileSourceFactory +import org.osmdroid.util.GeoPoint +import org.osmdroid.views.MapView +import org.osmdroid.views.overlay.ItemizedIconOverlay +import org.osmdroid.views.overlay.ItemizedOverlayWithFocus +import org.osmdroid.views.overlay.OverlayItem +import org.osmdroid.views.overlay.gestures.RotationGestureOverlay +import org.osmdroid.views.overlay.MapEventsOverlay +import org.osmdroid.events.MapEventsReceiver +import androidx.core.graphics.drawable.toDrawable +import org.osmdroid.bonuspack.routing.OSRMRoadManager +import org.osmdroid.bonuspack.routing.Road +import org.osmdroid.bonuspack.routing.RoadManager +import org.osmdroid.views.overlay.Polyline + +class MapActivity : ComponentActivity(), MapEventsReceiver, OnBenchClickListener { + private lateinit var map: MapView + + private lateinit var locationClient: FusedLocationProviderClient + private val locationPermissionRequest = 1001 + private var latitude = 46.0837 + private var longitude = 6.0452 + + private val pointRepository = PointRepository() + private val reviewRepository = ReviewRepository() + private var points: List = emptyList() + private val TAG = "MapActivity" + private lateinit var bottomText: TextView; + private lateinit var listContainer: CoordinatorLayout; + private lateinit var sheetBehavior: BottomSheetBehavior + + + private var isDialogShowing = false + + override fun onBenchClick(point: Point) { + val startPoint = map.mapCenter as GeoPoint + val endPoint = GeoPoint(point.x, point.y) + val startZoom = map.zoomLevelDouble + var endZoom = map.zoomLevelDouble + if (endZoom < 17.5) + endZoom = 17.5 + + val animator = ValueAnimator.ofFloat(0f, 1f) + animator.duration = 1000 + animator.addUpdateListener { animation -> + val fraction = animation.animatedFraction + val lat = startPoint.latitude + (endPoint.latitude - startPoint.latitude) * fraction + val lon = startPoint.longitude + (endPoint.longitude - startPoint.longitude) * fraction + val zoom = startZoom + (endZoom - startZoom) * fraction + map.controller.setCenter(GeoPoint(lat, lon)) + map.controller.setZoom(zoom) + } + animator.start() + } + + override fun singleTapConfirmedHelper(p0: GeoPoint): Boolean { + return false + } + + override fun longPressHelper(p0: GeoPoint): Boolean { + val startPoint = map.mapCenter as GeoPoint + val endPoint = p0 + val startZoom = map.zoomLevelDouble + var endZoom = map.zoomLevelDouble + if (endZoom < 17.5) + endZoom = 17.5 + val animator = ValueAnimator.ofFloat(0f, 1f) + animator.duration = 1000 + animator.addUpdateListener { animation -> + val fraction = animation.animatedFraction + val lat = startPoint.latitude + (endPoint.latitude - startPoint.latitude) * fraction + val lon = startPoint.longitude + (endPoint.longitude - startPoint.longitude) * fraction + val zoom = startZoom + (endZoom - startZoom) * fraction + map.controller.setCenter(GeoPoint(lat, lon)) + map.controller.setZoom(zoom) + } + animator.doOnEnd { + Thread.sleep(400) + showAddBenchDialog(p0.latitude, p0.longitude) + } + animator.start() + return true + } + + private fun showAddBenchDialog(lat: Double, lon: Double) { + val intent = Intent(baseContext, AddBenchActivity::class.java) + intent.putExtra("currentLatitude", lat) + intent.putExtra("currentLongitude", lon) + startActivity(intent) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + // enableEdgeToEdge() + + getInstance().load(this, getDefaultSharedPreferences(this)) + + setContentView(R.layout.main_layout) + sheetBehavior = BottomSheetBehavior.from(findViewById(R.id.slideUpContainer)) + + sheetBehavior.setBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() { + override fun onStateChanged(bottomSheet: View, newState: Int) { + when (newState) { + BottomSheetBehavior.STATE_HIDDEN -> { + bottomText.text = "Steak hachĂ©" + } + + BottomSheetBehavior.STATE_EXPANDED -> + bottomText.text = "Bas!" + + BottomSheetBehavior.STATE_COLLAPSED -> + bottomText.text = "Haut!" + + BottomSheetBehavior.STATE_DRAGGING -> { + bottomText.text = "Oh oui tire plus fort" + } + + BottomSheetBehavior.STATE_SETTLING -> { + bottomText.text = "je cĂąble" + } + + BottomSheetBehavior.STATE_HALF_EXPANDED -> { + TODO() + } + } + } + + override fun onSlide(bottomSheet: View, slideOffset: Float) { + bottomText.text = "Oh oui maĂźtre tirez encore " + ((1 - slideOffset) * 100) + "% de plus" + } + }) + + + map = findViewById(R.id.map) + map.setTileSource(TileSourceFactory.MAPNIK) + + val mapController = map.controller + mapController.setZoom(15.0) + val startPoint = GeoPoint(latitude, longitude) + mapController.setCenter(startPoint) + + val rotationGestureOverlay = RotationGestureOverlay(map) + rotationGestureOverlay.isEnabled + map.setMultiTouchControls(true) + map.overlays.add(rotationGestureOverlay) + + val mapEventsOverlay = MapEventsOverlay(this) + map.overlays.add(mapEventsOverlay) + + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.greenwashed)) { v, windowInsets -> + val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.updateLayoutParams { + leftMargin = insets.left + bottomMargin = insets.bottom + rightMargin = insets.right + } + + WindowInsetsCompat.CONSUMED + } + + val newBenchBtn: ImageButton = findViewById(R.id.plusBtn) + locationClient = LocationServices.getFusedLocationProviderClient(this) + newBenchBtn.setOnClickListener { + val center = map.mapCenter as GeoPoint + val intent = Intent(baseContext, AddBenchActivity::class.java) + intent.putExtra("currentLatitude", center.latitude) + intent.putExtra("currentLongitude", center.longitude) + startActivity(intent) + } + val centerPosBtn: ImageButton = findViewById(R.id.posBtn) + centerPosBtn.setOnClickListener { + sendCurrentLocation(false) + } + + val recyclerView: RecyclerView = findViewById(R.id.greenwashed) + recyclerView.layoutManager = LinearLayoutManager(this) + + bottomText = findViewById(R.id.divider) + listContainer = findViewById(R.id.listWrapper) + + sendCurrentLocation(false) + } + + private fun sendCurrentLocation(launchDialog: Boolean = true) { + if (ActivityCompat.checkSelfPermission( + this, + Manifest.permission.ACCESS_FINE_LOCATION + ) != PackageManager.PERMISSION_GRANTED + ) { + ActivityCompat.requestPermissions( + this, + arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), + locationPermissionRequest + ) + return + } + locationClient.lastLocation.addOnSuccessListener { location -> + if (location != null) { + latitude = location.latitude + longitude = location.longitude + + if (!launchDialog) { + val startPoint = map.mapCenter as GeoPoint + val endPoint = GeoPoint(location.latitude, location.longitude) + val startZoom = map.zoomLevelDouble + var endZoom = map.zoomLevelDouble + if (endZoom < 18.0) + endZoom = 18.0 + val animator = ValueAnimator.ofFloat(0f, 1f) + animator.duration = 1000 + animator.addUpdateListener { animation -> + val fraction = animation.animatedFraction + val lat = startPoint.latitude + (endPoint.latitude - startPoint.latitude) * fraction + val lon = startPoint.longitude + (endPoint.longitude - startPoint.longitude) * fraction + val zoom = startZoom + (endZoom - startZoom) * fraction + map.controller.setCenter(GeoPoint(lat, lon)) + map.controller.setZoom(zoom) + } + animator.start() + + val recyclerView: RecyclerView = findViewById(R.id.greenwashed) + fetchPoints(recyclerView) + } else { + val intent = Intent(baseContext, AddBenchActivity::class.java) + intent.putExtra("currentLatitude", location.latitude) + intent.putExtra("currentLongitude", location.longitude) + startActivity(intent) + } + } else { + Toast.makeText( + this@MapActivity, + "Merci d'activer la localisation", + Toast.LENGTH_LONG + ).show() + } + } + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + + if (requestCode == locationPermissionRequest && + grantResults.isNotEmpty() && + grantResults[0] == PackageManager.PERMISSION_GRANTED + ) { + sendCurrentLocation() + } else { + Toast.makeText( + this@MapActivity, + "La permission d'accĂšs Ă  la position est requise pour ajouter un banc", + Toast.LENGTH_LONG + ).show() + } + } + + private fun calculateDistance(lat1: Double, lon1: Double, lat2: Double, lon2: Double): Double { + val r = 6371 + val dLat = Math.toRadians(lat2 - lat1) + val dLon = Math.toRadians(lon2 - lon1) + val a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * + Math.sin(dLon / 2) * Math.sin(dLon / 2) + val c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)) + return r * c + } + + private fun fetchPoints(recyclerView: RecyclerView) { + lifecycleScope.launch { + pointRepository.getPoints().collectLatest { response -> + when (response) { + is ApiResponse.Loading -> { + bottomText.text = "Chargement..." + } + + is ApiResponse.Success -> { + points = response.data.sortedBy { point -> + calculateDistance(latitude, longitude, point.x, point.y) + } + + val customAdapter = CustomAdapter(points, lifecycleScope, this@MapActivity) + recyclerView.adapter = customAdapter + + addMarkersToMap() + bottomText.text = "Up!" + } + + is ApiResponse.Error -> { + Toast.makeText( + this@MapActivity, + "Error loading points: ${response.errorMessage}", + Toast.LENGTH_LONG + ).show() + + /* val fallbackPoints = listOf( + Point(id = "1", x = 48.8566, y = 2.3522, type = "bench", name = "Bench 1"), + Point(id = "2", x = 48.8566, y = 2.3523, type = "bench", name = "Bench 2"), + Point(id = "3", x = 48.8566, y = 2.3524, type = "bench", name = "Bench 3"), + Point(id = "4", x = 48.8566, y = 2.3525, type = "bench", name = "Bench 4"), + Point(id = "5", x = 48.8566, y = 2.3526, type = "bench", name = "Bench 5") + ) + + points = fallbackPoints + val customAdapter = CustomAdapter(fallbackPoints, lifecycleScope, this@MapActivity) + recyclerView.adapter = customAdapter + + addMarkersToMap()*/ + bottomText.text = "Erreur bozo" + } + } + } + } + } + + private fun addMarkersToMap() { + while (map.overlays.size > 2) { + map.overlays.removeAt(map.overlays.size - 1) + } + + val items = ArrayList() + val decimalFormat = java.text.DecimalFormat("0.00") + val decimalFormatPopup = java.text.DecimalFormat("0.000") + + for (point in points) { + val item = OverlayItem( + point.name, + "Type: ${point.type} | Position: ${decimalFormat.format(point.x)}, ${decimalFormat.format(point.y)}", + GeoPoint(point.x, point.y) + ) + items.add(item) + } + + if (items.isNotEmpty()) { + val overlay = ItemizedOverlayWithFocus( + items, + object : ItemizedIconOverlay.OnItemGestureListener { + override fun onItemSingleTapUp(index: Int, item: OverlayItem): Boolean { + val point = points.getOrNull(index) + if (point != null) { + lifecycleScope.launch { + reviewRepository.getAverageRating(point.id).collectLatest { response -> + when (response) { + is ApiResponse.Success -> { + val rating = response.data + if (!point.picture.isNullOrEmpty()) { + showBenchPictureDialog( + point, item, rating, + decimalFormatPopup.format(point.x), + decimalFormatPopup.format(point.y) + ) + } else { + Toast.makeText( + this@MapActivity, + "${item.title}\nType: ${point.type} | Position: ${ + decimalFormatPopup.format( + point.x + ) + }, ${decimalFormatPopup.format(point.y)}\nRating: $rating/5", + Toast.LENGTH_SHORT + ).show() + } + } + + else -> { + if (!point.picture.isNullOrEmpty()) { + showBenchPictureDialog( + point, item, 0f, + decimalFormatPopup.format(point.x), + decimalFormatPopup.format(point.y) + ) + } else { + Toast.makeText( + this@MapActivity, + "${item.title}\nType: ${point.type} | Position: ${ + decimalFormatPopup.format( + point.x + ) + }, ${decimalFormatPopup.format(point.y)}", + Toast.LENGTH_SHORT + ).show() + } + } + } + } + } + } else { + Toast.makeText( + this@MapActivity, + "${item.title}\n${item.snippet}", + Toast.LENGTH_SHORT + ).show() + } + return true + } + + override fun onItemLongPress(index: Int, item: OverlayItem): Boolean { + return false + } + }, + this + ) + + overlay.setFocusItemsOnTap(false) + map.overlays.add(overlay) + map.invalidate() + } + } + + private fun loadMarkerImage(point: Point, item: OverlayItem) { + try { + Log.d(TAG, "Attempting to fetch image for marker: ${point.picture}") + + Glide.with(this) + .asBitmap() + .load(point.picture) + .into(object : CustomTarget(100, 100) { + override fun onResourceReady(resource: Bitmap, transition: Transition?) { + val drawable = resource.toDrawable(resources) + item.setMarker(drawable) + map.invalidate() + } + + override fun onLoadCleared(placeholder: Drawable?) { + } + + override fun onLoadFailed(errorDrawable: Drawable?) { + Log.e(TAG, "Echec de chargement de l'image du point ${point.id}") + } + }) + } catch (e: Exception) { + Log.e(TAG, "Echec de chargement du marqueur: ${e.message}") + } + } + + private fun showBenchPictureDialog(point: Point, item: OverlayItem, rating: Float, xTrunc: String, yTrunc: String) { + if (isDialogShowing) { + Log.d(TAG, "Dialogue dĂ©ja ouvert!") + return + } + + isDialogShowing = true + + val dialogView = LayoutInflater.from(this).inflate(R.layout.dialog_bench_details, null) + val dialog = android.app.AlertDialog.Builder(this) + .setView(dialogView) + .setOnDismissListener { + isDialogShowing = false + } + .create() + + val titleTextView = dialogView.findViewById(R.id.dialogTitle) + val messageTextView = dialogView.findViewById(R.id.dialogMessage) + val benchImageView = dialogView.findViewById(R.id.benchImageView) + + titleTextView.text = item.title + + messageTextView.text = "Chargement des informations..." + + Glide.with(this) + .load(point.picture) + .placeholder(R.drawable.ic_bench_icon) + .error(R.drawable.ic_bench_icon) + .into(benchImageView) + + dialogView.findViewById +{/if} diff --git a/ping/frontend/src/lib/components/NavBar.svelte b/ping/frontend/src/lib/components/NavBar.svelte new file mode 100644 index 0000000..1a76876 --- /dev/null +++ b/ping/frontend/src/lib/components/NavBar.svelte @@ -0,0 +1,44 @@ + + + + + diff --git a/ping/frontend/src/lib/components/NumberStatList.svelte b/ping/frontend/src/lib/components/NumberStatList.svelte new file mode 100644 index 0000000..b6444e8 --- /dev/null +++ b/ping/frontend/src/lib/components/NumberStatList.svelte @@ -0,0 +1,55 @@ + + +
+ {#each statsList as stat} +
+ + {stat.name} + {stat.value} +
+ {/each} +
+ + diff --git a/ping/frontend/src/lib/components/SideBar.svelte b/ping/frontend/src/lib/components/SideBar.svelte new file mode 100644 index 0000000..9ea8a04 --- /dev/null +++ b/ping/frontend/src/lib/components/SideBar.svelte @@ -0,0 +1,61 @@ + + + + + diff --git a/ping/frontend/src/lib/components/SteppedLineChart.svelte b/ping/frontend/src/lib/components/SteppedLineChart.svelte new file mode 100644 index 0000000..d393b44 --- /dev/null +++ b/ping/frontend/src/lib/components/SteppedLineChart.svelte @@ -0,0 +1,76 @@ + + +
+ +
diff --git a/ping/frontend/src/lib/components/ToastList.svelte b/ping/frontend/src/lib/components/ToastList.svelte new file mode 100644 index 0000000..5351ef7 --- /dev/null +++ b/ping/frontend/src/lib/components/ToastList.svelte @@ -0,0 +1,67 @@ + + +
+ {#each $toastList as toast} +
+

{toast.title}

+

{toast.message}

+
+ {/each} +
+ + diff --git a/ping/frontend/src/lib/components/UserItem.svelte b/ping/frontend/src/lib/components/UserItem.svelte new file mode 100644 index 0000000..44add60 --- /dev/null +++ b/ping/frontend/src/lib/components/UserItem.svelte @@ -0,0 +1,42 @@ + + +
+
+ + + +
+
+

Nom: {user.displayName}

+

Login: {user.login}

+

Role: {user.isAdmin ? 'ADMIN' : 'USER'}

+

Id: {user.id}

+
+
+ + diff --git a/ping/frontend/src/lib/components/dashboard/RiskAnalysis.svelte b/ping/frontend/src/lib/components/dashboard/RiskAnalysis.svelte new file mode 100644 index 0000000..3844abc --- /dev/null +++ b/ping/frontend/src/lib/components/dashboard/RiskAnalysis.svelte @@ -0,0 +1,10 @@ +

Analyse de risque

+tkt t safe c hardcodé chef + + diff --git a/ping/frontend/src/lib/components/dashboard/StockGraph.svelte b/ping/frontend/src/lib/components/dashboard/StockGraph.svelte new file mode 100644 index 0000000..beefed9 --- /dev/null +++ b/ping/frontend/src/lib/components/dashboard/StockGraph.svelte @@ -0,0 +1,136 @@ + + +
+
+

Vue d'ensemble : {selectedStock}

+
+ + + + + +
+
+ +
+ + diff --git a/ping/frontend/src/lib/components/dashboard/TrendingSymbols.svelte b/ping/frontend/src/lib/components/dashboard/TrendingSymbols.svelte new file mode 100644 index 0000000..3d947ad --- /dev/null +++ b/ping/frontend/src/lib/components/dashboard/TrendingSymbols.svelte @@ -0,0 +1,85 @@ + + +

Tendances

+ + + diff --git a/ping/frontend/src/lib/components/dashboard/transactions/TransactionModal.svelte b/ping/frontend/src/lib/components/dashboard/transactions/TransactionModal.svelte new file mode 100644 index 0000000..b9f0224 --- /dev/null +++ b/ping/frontend/src/lib/components/dashboard/transactions/TransactionModal.svelte @@ -0,0 +1,165 @@ + + + + +{#if isOpen} +
+ e.stopPropagation()}> +

Créer une nouvelle transaction

+
+ + + + + + + +
+
+
+{/if} + + diff --git a/ping/frontend/src/lib/components/input/StockSelector.svelte b/ping/frontend/src/lib/components/input/StockSelector.svelte new file mode 100644 index 0000000..1237128 --- /dev/null +++ b/ping/frontend/src/lib/components/input/StockSelector.svelte @@ -0,0 +1,231 @@ + + + + + +
+ + +
+
+
+ {#if stocks.length === 0} +

Aucune action, ETFs trouvés.

+ {:else} +

{stocks.length} actions, ETFs trouvés

+ {#each stocks as stock} + + {/each} + {/if} +
+
+ {#if news.length === 0} +

Pas de news trouvés.

+ {:else} +

{news.length} news trouvées

+ {#each news as newsItem} + + {#if newsItem.thumbnail?.resolutions?.length > 0} + News Thumbnail + {/if} +

{newsItem.title}

+ {/each} + {/if} +
+
+
+ + +
+ + diff --git a/ping/frontend/src/lib/components/input/UserSelector.svelte b/ping/frontend/src/lib/components/input/UserSelector.svelte new file mode 100644 index 0000000..a0c80c7 --- /dev/null +++ b/ping/frontend/src/lib/components/input/UserSelector.svelte @@ -0,0 +1,35 @@ + + +
+ {#each users as u, i} + { + users = users.filter((_, index) => index !== i); + }} + /> + {/each} + { + let userId = prompt("Entrez l'ID de l'utilisateur à ajouter :"); + if (userId === null || userId.trim() === '') { + addToast({ title: 'ID utilisateur invalide.' }); + return; + } + if (users.map((u) => u.displayName).includes(userId)) { + addToast({ title: 'Cet utilisateur est déjà ajouté.' }); + return; + } + users = [...users, { displayName: userId, avatar: '/img/default-avatar.png' } as IUser]; + }} + /> +
diff --git a/ping/frontend/src/lib/pages.ts b/ping/frontend/src/lib/pages.ts new file mode 100644 index 0000000..e5d424e --- /dev/null +++ b/ping/frontend/src/lib/pages.ts @@ -0,0 +1,54 @@ +interface SideBarItem { + icon: string; + name: string; + href: string; +} + +export const pages: SideBarItem[] = [ + { + name: 'Dashboard', + icon: '/icons/dashboard.svg', + href: '/dashboard' + }, + { + name: 'Transactions', + icon: '/icons/credit-card.svg', + href: '/dashboard/transactions' + }, + { + name: 'ModÚles', + icon: '/icons/floppy-disk.svg', + href: '/dashboard/models' + }, + { + name: 'Analyses', + icon: '/icons/magnifying_glass_icon.svg', + href: '/dashboard/analyses' + }, + { + name: 'Personnel', + icon: '/icons/people.svg', + href: '/dashboard/personnel' + }, + { + name: 'Messages', + icon: '/icons/msg.svg', + href: '/dashboard/messages' + }, + { + name: 'ParamÚtres', + icon: '/icons/settings.svg', + href: '/dashboard/settings' + } +]; + +export function getPageIndex(pathname: string) { + if (pathname === '/dashboard') return 0; + if (pathname.startsWith('/dashboard/transactions')) return 1; + if (pathname.startsWith('/dashboard/models')) return 2; + if (pathname.startsWith('/dashboard/analyses')) return 3; + if (pathname.startsWith('/dashboard/personnel')) return 4; + if (pathname.startsWith('/dashboard/messages')) return 5; + if (pathname.startsWith('/dashboard/settings')) return 6; + return -1; // Not found +} \ No newline at end of file diff --git a/ping/frontend/src/lib/stores/auth.ts b/ping/frontend/src/lib/stores/auth.ts new file mode 100644 index 0000000..97acaf2 --- /dev/null +++ b/ping/frontend/src/lib/stores/auth.ts @@ -0,0 +1,66 @@ +import { error } from "@sveltejs/kit"; +import { get, writable } from "svelte/store"; + +export interface IUser { + id: string; + login: string; + displayName: string; + avatar: string; + isAdmin: boolean; +} + +export const user = writable(null); + +export async function getUser() { + const userVal = get(user); + if (userVal) { + return userVal; + } + return getUpdatedUser(); +} + +export async function getUpdatedUser() { + const token = localStorage.getItem("token"); + if (!token) { + localStorage.clear(); + window.location.replace("/login"); + throw new Error("Pas de token"); + } + try { + const userId = JSON.parse(atob(token.split(".")[1])).sub; + + const res = await authFetch(`/api/user/${userId}`); + if (!res.ok) { + throw error(res.status, "Erreur lors de la récupération de l'utilisateur"); + } + const data = await res.json(); + user.set({ ...data }); + return data; + } + catch (e) { + console.error("Erreur lors de la récupération de l'ID utilisateur depuis le token", e); + localStorage.clear(); + window.location.replace("/login"); + throw new Error("Token invalide " + e); + } +} + +// place files you want to import through the `$lib` alias in this folder. +export function authFetch(url: string | URL, options: RequestInit = {}) { + const token = localStorage.getItem("token"); + if (!token) { + localStorage.clear(); + window.location.replace("/login"); + throw new Error("Pas de token"); + } + + const mergedOptions: RequestInit = { + ...options, + headers: { + Authorization: `Bearer ${token}`, + ...(options.headers ?? {}) + } + }; + + return fetch(url, mergedOptions); +} \ No newline at end of file diff --git a/ping/frontend/src/lib/stores/toast.ts b/ping/frontend/src/lib/stores/toast.ts new file mode 100644 index 0000000..454461b --- /dev/null +++ b/ping/frontend/src/lib/stores/toast.ts @@ -0,0 +1,22 @@ +import { writable } from "svelte/store"; + +export interface Toast { + color?: string | undefined; + title?: string | undefined; + message?: string | undefined; +} + +export const toastList = writable([]); + +export function addToast(toast: Toast) { + toast ??= { color: "red", title: "Error", message: "An error occurred" }; + toast.color ??= "red"; + toast.title ??= "Error"; + toast.message ??= "An error occurred"; + + toastList.update((list) => [...list, toast]); + + setTimeout(() => { + toastList.update((list) => list.filter((t) => t !== toast)); + }, 5000); +} \ No newline at end of file diff --git a/ping/frontend/src/routes/+layout.svelte b/ping/frontend/src/routes/+layout.svelte new file mode 100644 index 0000000..ba995cc --- /dev/null +++ b/ping/frontend/src/routes/+layout.svelte @@ -0,0 +1,9 @@ + + +{@render children()} + diff --git a/ping/frontend/src/routes/+page.svelte b/ping/frontend/src/routes/+page.svelte new file mode 100644 index 0000000..7088945 --- /dev/null +++ b/ping/frontend/src/routes/+page.svelte @@ -0,0 +1,59 @@ + + + + + {#snippet rightComponent()} + + {/snippet} + +
+
+
+
+

Investissons plus mieux et plus vert

+
    +
  • Investissez facilement
  • +
  • Analysez les risques et les performances
  • +
  • Soulagez votre Ă©co-conscience
  • +
+
+
+ + diff --git a/ping/frontend/src/routes/dashboard/+layout.svelte b/ping/frontend/src/routes/dashboard/+layout.svelte new file mode 100644 index 0000000..a2f7efe --- /dev/null +++ b/ping/frontend/src/routes/dashboard/+layout.svelte @@ -0,0 +1,44 @@ + + + + + {#snippet rightComponent()} +
+
+ +
+ +
+ {/snippet} +
+ +
{@render children()}
+ + diff --git a/ping/frontend/src/routes/dashboard/+page.svelte b/ping/frontend/src/routes/dashboard/+page.svelte new file mode 100644 index 0000000..c38e281 --- /dev/null +++ b/ping/frontend/src/routes/dashboard/+page.svelte @@ -0,0 +1,81 @@ + + +
+ +
+
+ +
+ + +
+ +
+ +
+
+ + diff --git a/ping/frontend/src/routes/dashboard/analyses/+page.svelte b/ping/frontend/src/routes/dashboard/analyses/+page.svelte new file mode 100644 index 0000000..1a8ed47 --- /dev/null +++ b/ping/frontend/src/routes/dashboard/analyses/+page.svelte @@ -0,0 +1,409 @@ + + +
+
+

Analyses des Transactions

+
+ + +
+
+ + + + {#if analysisData.thresholdAlerts} +
+ {#if analysisData.thresholdAlerts.dailySpending} +
+ ⚠ DĂ©penses quotidiennes Ă©levĂ©es ({(Math.abs(analysisData.totalAmount) / selectedPeriod).toFixed(0)}€/jour) +
+ {/if} + {#if analysisData.thresholdAlerts.co2Impact} +
+ 🌍 Impact CO2 Ă©levĂ© ({analysisData.totalCO2}g) +
+ {/if} + {#if analysisData.thresholdAlerts.profitTarget} +
+ 🎯 Objectif de profit atteint ({analysisData.totalAmount.toFixed(0)}€) +
+ {/if} +
+ {/if} + +
+
+

Transactions dans le temps

+ {#if analysisData.chartData?.length > 0} + + {:else} +

Aucune donnée

+ {/if} +
+ +
+

Top destinataires

+
+ {#each (analysisData.recipientChartData || []).slice(0, 5) as recipient} +
+ {recipient.x} +
+ {#if analysisData.recipientChartData?.length > 0} + {@const maxValue = Math.max(...analysisData.recipientChartData.map(r => r.y))} +
+ {:else} +
+ {/if} + {recipient.y.toFixed(0)}€ +
+
+ {/each} +
+
+ +
+

Répartition des transactions

+
+
+ Achats: + + {(analysisData.filteredTransactions || []).filter((t: Transaction) => t.type === 'buy').length} + +
+
+ Ventes: + + {(analysisData.filteredTransactions || []).filter((t: Transaction) => t.type === 'sell').length} + +
+
+ Volume total: + + {Math.abs(analysisData.totalAmount || 0).toFixed(0)}€ + +
+
+
+ +
+

Métriques CO2

+
+
+ Impact total: + + {analysisData.totalCO2 || 0}g CO2 + +
+
+ Par transaction: + + {(analysisData.filteredTransactions?.length ? analysisData.totalCO2 / analysisData.filteredTransactions.length : 0).toFixed(1)}g + +
+
+
+
+
+ + diff --git a/ping/frontend/src/routes/dashboard/messages/+page.svelte b/ping/frontend/src/routes/dashboard/messages/+page.svelte new file mode 100644 index 0000000..52869e4 --- /dev/null +++ b/ping/frontend/src/routes/dashboard/messages/+page.svelte @@ -0,0 +1,403 @@ + + +
+
+ +
+

Messages

+ +
+ +
+ +
+

Boßte de réception

+
+ {#each messages as message} +
selectMessage(message)} + > +
+ {message.sender} + {message.date.toLocaleDateString()} +
+
{message.subject}
+
{message.content.substring(0, 80)}...
+ {#if message.unread} +
+ {/if} +
+ {/each} +
+
+ + +
+ {#if selectedMessage} +
+

{selectedMessage.subject}

+
+ +
+
+
+ De: {selectedMessage.sender} + Date: {selectedMessage.date.toLocaleDateString()} +
+
+ {selectedMessage.content} +
+ + +
+

Répondre

+ + +
+ {:else} +
+

Sélectionnez un message

+

Choisissez un message dans la liste pour le lire

+
+ {/if} +
+
+
+
+ + diff --git a/ping/frontend/src/routes/dashboard/models/+page.svelte b/ping/frontend/src/routes/dashboard/models/+page.svelte new file mode 100644 index 0000000..3be6f00 --- /dev/null +++ b/ping/frontend/src/routes/dashboard/models/+page.svelte @@ -0,0 +1,568 @@ + + +
+
+
+

ModĂšles actifs

+
+ {#each models as m, i} +
+
+ {m.name}
+ {m.id} +
+
+
+ Eco score + {69} % +
+
+ Efficacité + {69} % +
+
+ + +
+ {/each} +
+
+ +
+
+
+ {#if modelToEdit !== null} +

Modifier un modĂšle

+ {:else} +

Nouveau modĂšle

+ {/if} + +
+
+ + +
+ {#if modelToEdit !== null} + + {:else if currentUser} + + {:else} + Chargement en cours... + {/if} + +
+
+ +
+
+ Sources de données + +
+ + {#each sources as source, index} +
+ + +
+ + +
+
+ {/each} +
+
+
+
+
+ + diff --git a/ping/frontend/src/routes/dashboard/personnel/+page.svelte b/ping/frontend/src/routes/dashboard/personnel/+page.svelte new file mode 100644 index 0000000..a1722c1 --- /dev/null +++ b/ping/frontend/src/routes/dashboard/personnel/+page.svelte @@ -0,0 +1,290 @@ + + +{#if user} +
+
+
+

Mon compte

+ +

Nom: {user.displayName}

+

Login: {user.login}

+

Role: {user.isAdmin ? 'ADMIN' : 'USER'}

+

Id: {user.id}

+
+
+

Modifier

+ Laisser vide pour ne pas modifier
+ {#if user.isAdmin} +

Vous pouvez modifier les informations de n'importe quel utilisateur.

+ {:else} +

Vous ne pouvez modifier que vos propres informations.

+ {/if} +

+
+ {#if user.isAdmin} + + + {/if} + + + + + + + +
+
+
+ + {#if user.isAdmin} +
+
+

Créer un nouvel utilisateur

+
+ + + + + + + + + +
+
+
+

Liste des utilisateurs

+
+ {#each allUsers as u} + { + idValue = u.id; + urlValue = u.avatar || ''; + nameValue = u.displayName || ''; + }} + onDelete={() => { + authFetch(`/api/user/${u.id}`, { + method: 'DELETE' + }) + .then(async (res) => { + if (!res.ok) { + addToast({ + title: 'Erreur', + message: "Impossible de supprimer l'utilisateur." + }); + throw new Error("Erreur lors de la suppression de l'utilisateur"); + } + allUsers = allUsers.filter((user) => user.id !== u.id); + addToast({ + title: 'SuccÚs', + message: 'Utilisateur supprimé avec succÚs.', + color: 'green' + }); + }) + .catch(() => { + addToast({ + title: 'Erreur', + message: "Impossible de supprimer l'utilisateur." + }); + }); + }} + /> + {/each} +
+
+
+ {/if} +
+{:else} +

Chargement des informations utilisateur...

+{/if} + + diff --git a/ping/frontend/src/routes/dashboard/settings/+page.svelte b/ping/frontend/src/routes/dashboard/settings/+page.svelte new file mode 100644 index 0000000..99c5d8f --- /dev/null +++ b/ping/frontend/src/routes/dashboard/settings/+page.svelte @@ -0,0 +1,452 @@ + + +
+
+
+

ParamĂštres

+
+ +
+
+

đŸ‘€ Profil utilisateur

+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ +
+
+ +
+

🔔 Notifications

+
+
+ + + + + +
+ +
+
+ +
+

🔒 SĂ©curitĂ©

+
+
+ +
+
+ + +
+
+ +
+ +
+ +
+

Changer le mot de passe

+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+ +
+

🎹 Affichage

+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ +
+
+ +
+

📊 Gestion des donnĂ©es

+
+
+
+

Exporter mes données

+

Téléchargez toutes vos données personnelles dans un fichier JSON

+
+ +
+
+
+

Supprimer mon compte

+

Supprimez définitivement votre compte et toutes vos données

+
+ +
+
+
+
+
+
+ + diff --git a/ping/frontend/src/routes/dashboard/transactions/+page.svelte b/ping/frontend/src/routes/dashboard/transactions/+page.svelte new file mode 100644 index 0000000..86f9292 --- /dev/null +++ b/ping/frontend/src/routes/dashboard/transactions/+page.svelte @@ -0,0 +1,360 @@ + + +
+
+
+

Transactions

+ +
+ +
+
+ Trier +
+ + +
+
+
+ + +
+
+ +
+ {#each visibleTransactions as transaction} +
+
+
+

{transaction.label}

+

+ {transaction.receiverIban} ‱ {transaction.receiverLabel} +

+
+
+
+ CO2 + {transaction.eco_score} +
+
+ {transaction.currency} + {transaction.amount} +
+
+ +
+
+ {/each} +
+
+
+ + + diff --git a/ping/frontend/src/routes/login/+page.svelte b/ping/frontend/src/routes/login/+page.svelte new file mode 100644 index 0000000..0d66f8d --- /dev/null +++ b/ping/frontend/src/routes/login/+page.svelte @@ -0,0 +1,149 @@ + + +
+
+

Connectez-vous

+
+ + + + + +
+
+
+ + + diff --git a/ping/frontend/src/routes/stocksapi/chart/+server.ts b/ping/frontend/src/routes/stocksapi/chart/+server.ts new file mode 100644 index 0000000..3271e83 --- /dev/null +++ b/ping/frontend/src/routes/stocksapi/chart/+server.ts @@ -0,0 +1,21 @@ +import type { RequestHandler } from '@sveltejs/kit'; +import yahooFinance from 'yahoo-finance2'; + +/** + * Example request : GET /stocksapi/chart?query=AAPL&startDate=2025-01-01& + */ +export const GET: RequestHandler = async ({ request }) => { + const sp = new URL(request.url).searchParams; + const query = sp.get('query') || 'AAPL'; + const startDate = sp.get('startDate') || '2025-01-01'; + const endDate = sp.get('endDate') || new Date().toISOString().split('T')[0]; + const interval = sp.get('interval') || '1d'; + + const data = await yahooFinance.chart(query, { period1: startDate, period2: endDate, interval: interval }); + return new Response(JSON.stringify(data), { + headers: { + 'Content-Type': 'application/json', + 'Cache-Control': 'no-cache', + }, + }); +}; \ No newline at end of file diff --git a/ping/frontend/src/routes/stocksapi/insights/+server.ts b/ping/frontend/src/routes/stocksapi/insights/+server.ts new file mode 100644 index 0000000..6be76e9 --- /dev/null +++ b/ping/frontend/src/routes/stocksapi/insights/+server.ts @@ -0,0 +1,19 @@ +import type { RequestHandler } from '@sveltejs/kit'; +import yahooFinance from 'yahoo-finance2'; + +/** + * Example request : GET /stocksapi/insights?query=AAPL + */ +export const GET: RequestHandler = async ({ request }) => { + const sp = new URL(request.url).searchParams; + const query = sp.get('query') || 'AAPL'; + + const queryOptions = { lang: 'en-US', reportsCount: 2, region: 'US' }; + const data = await yahooFinance.insights(query, queryOptions); + return new Response(JSON.stringify(data), { + headers: { + 'Content-Type': 'application/json', + 'Cache-Control': 'no-cache', + }, + }); +}; \ No newline at end of file diff --git a/ping/frontend/src/routes/stocksapi/quote/+server.ts b/ping/frontend/src/routes/stocksapi/quote/+server.ts new file mode 100644 index 0000000..96619fc --- /dev/null +++ b/ping/frontend/src/routes/stocksapi/quote/+server.ts @@ -0,0 +1,18 @@ +import type { RequestHandler } from '@sveltejs/kit'; +import yahooFinance from 'yahoo-finance2'; + +/** + * Example request : GET /stocksapi/quote?query=AAPL + */ +export const GET: RequestHandler = async ({ request }) => { + const sp = new URL(request.url).searchParams; + const query = sp.get('query') || 'AAPL'; + + const data = await yahooFinance.quote(query); + return new Response(JSON.stringify(data), { + headers: { + 'Content-Type': 'application/json', + 'Cache-Control': 'no-cache', + }, + }); +}; \ No newline at end of file diff --git a/ping/frontend/src/routes/stocksapi/search/+server.ts b/ping/frontend/src/routes/stocksapi/search/+server.ts new file mode 100644 index 0000000..e58fc6b --- /dev/null +++ b/ping/frontend/src/routes/stocksapi/search/+server.ts @@ -0,0 +1,18 @@ +import type { RequestHandler } from '@sveltejs/kit'; +import yahooFinance from 'yahoo-finance2'; + +/** + * Example request : GET /stocksapi/search?query=AAPL + */ +export const GET: RequestHandler = async ({ request }) => { + const sp = new URL(request.url).searchParams; + const query = sp.get('query') || 'AAPL'; + + const data = await yahooFinance.search(query, { region: 'US' }) + return new Response(JSON.stringify(data), { + headers: { + 'Content-Type': 'application/json', + 'Cache-Control': 'no-cache', + }, + }); +}; \ No newline at end of file diff --git a/ping/frontend/src/routes/stocksapi/trendingSymbols/+server.ts b/ping/frontend/src/routes/stocksapi/trendingSymbols/+server.ts new file mode 100644 index 0000000..3dac574 --- /dev/null +++ b/ping/frontend/src/routes/stocksapi/trendingSymbols/+server.ts @@ -0,0 +1,16 @@ +import type { RequestHandler } from '@sveltejs/kit'; +import yahooFinance from 'yahoo-finance2'; + +/** + * Example request : GET /stocksapi/trendingSymbols + */ +export const GET: RequestHandler = async () => { + const queryOptions = { count: 5, lang: 'en-US' }; + const data = await yahooFinance.trendingSymbols('US', queryOptions); + return new Response(JSON.stringify(data), { + headers: { + 'Content-Type': 'application/json', + 'Cache-Control': 'no-cache', + }, + }); +}; \ No newline at end of file diff --git a/ping/frontend/static/favicon.png b/ping/frontend/static/favicon.png new file mode 100644 index 0000000..83e6bff Binary files /dev/null and b/ping/frontend/static/favicon.png differ diff --git a/ping/frontend/static/icons/ICI b/ping/frontend/static/icons/ICI new file mode 100644 index 0000000..01a9115 --- /dev/null +++ b/ping/frontend/static/icons/ICI @@ -0,0 +1,2 @@ +todo : remove this file +fact: les triangles sont pas exactement les memes diff --git a/ping/frontend/static/icons/add-green.svg b/ping/frontend/static/icons/add-green.svg new file mode 100644 index 0000000..d165f30 --- /dev/null +++ b/ping/frontend/static/icons/add-green.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/bell.svg b/ping/frontend/static/icons/bell.svg new file mode 100644 index 0000000..797220a --- /dev/null +++ b/ping/frontend/static/icons/bell.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/closed-wallet.svg b/ping/frontend/static/icons/closed-wallet.svg new file mode 100644 index 0000000..ffd10f6 --- /dev/null +++ b/ping/frontend/static/icons/closed-wallet.svg @@ -0,0 +1,17 @@ + + + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/coin.svg b/ping/frontend/static/icons/coin.svg new file mode 100644 index 0000000..331f0aa --- /dev/null +++ b/ping/frontend/static/icons/coin.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/credit-card.svg b/ping/frontend/static/icons/credit-card.svg new file mode 100644 index 0000000..d84911c --- /dev/null +++ b/ping/frontend/static/icons/credit-card.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/dashboard.svg b/ping/frontend/static/icons/dashboard.svg new file mode 100644 index 0000000..072ca90 --- /dev/null +++ b/ping/frontend/static/icons/dashboard.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/debug.svg b/ping/frontend/static/icons/debug.svg new file mode 100644 index 0000000..4f6cfb2 --- /dev/null +++ b/ping/frontend/static/icons/debug.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/edit-pen.svg b/ping/frontend/static/icons/edit-pen.svg new file mode 100644 index 0000000..0c6f108 --- /dev/null +++ b/ping/frontend/static/icons/edit-pen.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/floppy-disk.svg b/ping/frontend/static/icons/floppy-disk.svg new file mode 100644 index 0000000..4952daf --- /dev/null +++ b/ping/frontend/static/icons/floppy-disk.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/leaf.svg b/ping/frontend/static/icons/leaf.svg new file mode 100644 index 0000000..d58987d --- /dev/null +++ b/ping/frontend/static/icons/leaf.svg @@ -0,0 +1,19 @@ + + + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/magnifying_glass_icon.svg b/ping/frontend/static/icons/magnifying_glass_icon.svg new file mode 100644 index 0000000..dd521f6 --- /dev/null +++ b/ping/frontend/static/icons/magnifying_glass_icon.svg @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/money-bills.svg b/ping/frontend/static/icons/money-bills.svg new file mode 100644 index 0000000..57b37a7 --- /dev/null +++ b/ping/frontend/static/icons/money-bills.svg @@ -0,0 +1,27 @@ + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/msg.svg b/ping/frontend/static/icons/msg.svg new file mode 100644 index 0000000..6f3930f --- /dev/null +++ b/ping/frontend/static/icons/msg.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/people.svg b/ping/frontend/static/icons/people.svg new file mode 100644 index 0000000..b8ad20a --- /dev/null +++ b/ping/frontend/static/icons/people.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/settings.svg b/ping/frontend/static/icons/settings.svg new file mode 100644 index 0000000..25f7ec8 --- /dev/null +++ b/ping/frontend/static/icons/settings.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/side-menu.svg b/ping/frontend/static/icons/side-menu.svg new file mode 100644 index 0000000..5972d63 --- /dev/null +++ b/ping/frontend/static/icons/side-menu.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/trash.svg b/ping/frontend/static/icons/trash.svg new file mode 100644 index 0000000..e19d236 --- /dev/null +++ b/ping/frontend/static/icons/trash.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/triangle-down.svg b/ping/frontend/static/icons/triangle-down.svg new file mode 100644 index 0000000..9a40495 --- /dev/null +++ b/ping/frontend/static/icons/triangle-down.svg @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/triangle-up.svg b/ping/frontend/static/icons/triangle-up.svg new file mode 100644 index 0000000..0b54139 --- /dev/null +++ b/ping/frontend/static/icons/triangle-up.svg @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/icons/wallet.svg b/ping/frontend/static/icons/wallet.svg new file mode 100644 index 0000000..7dfd46f --- /dev/null +++ b/ping/frontend/static/icons/wallet.svg @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/img/default-avatar.png b/ping/frontend/static/img/default-avatar.png new file mode 100644 index 0000000..406d770 Binary files /dev/null and b/ping/frontend/static/img/default-avatar.png differ diff --git a/ping/frontend/static/img/favicon.svg b/ping/frontend/static/img/favicon.svg new file mode 100644 index 0000000..3d7b3eb --- /dev/null +++ b/ping/frontend/static/img/favicon.svg @@ -0,0 +1,29 @@ + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/img/header-bg.jpg b/ping/frontend/static/img/header-bg.jpg new file mode 100644 index 0000000..ca76595 Binary files /dev/null and b/ping/frontend/static/img/header-bg.jpg differ diff --git a/ping/frontend/static/img/logo.svg b/ping/frontend/static/img/logo.svg new file mode 100644 index 0000000..c73d1fe --- /dev/null +++ b/ping/frontend/static/img/logo.svg @@ -0,0 +1,41 @@ + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ping/frontend/static/img/logoFull.svg b/ping/frontend/static/img/logoFull.svg new file mode 100644 index 0000000..505564a --- /dev/null +++ b/ping/frontend/static/img/logoFull.svg @@ -0,0 +1,75 @@ + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ping/frontend/svelte.config.js b/ping/frontend/svelte.config.js new file mode 100644 index 0000000..1295460 --- /dev/null +++ b/ping/frontend/svelte.config.js @@ -0,0 +1,18 @@ +import adapter from '@sveltejs/adapter-auto'; +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + // Consult https://svelte.dev/docs/kit/integrations + // for more information about preprocessors + preprocess: vitePreprocess(), + + kit: { + // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list. + // If your environment is not supported, or you settled on a specific environment, switch out the adapter. + // See https://svelte.dev/docs/kit/adapters for more information about adapters. + adapter: adapter() + } +}; + +export default config; diff --git a/ping/frontend/tsconfig.json b/ping/frontend/tsconfig.json new file mode 100644 index 0000000..0b2d886 --- /dev/null +++ b/ping/frontend/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } + // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias + // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/ping/frontend/vite.config.ts b/ping/frontend/vite.config.ts new file mode 100644 index 0000000..ef26a3a --- /dev/null +++ b/ping/frontend/vite.config.ts @@ -0,0 +1,30 @@ +import tailwindcss from '@tailwindcss/vite'; +import devtoolsJson from 'vite-plugin-devtools-json'; +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig, loadEnv } from 'vite'; + +export default defineConfig(({ mode }) => { + // @ts-expect-error process is loaded + const env = loadEnv(mode, process.cwd()); + + console.log("Found API URL:", env.VITE_BACKEND_URL); + + const API_URL = (env.VITE_BACKEND_URL ?? "http://127.0.1:8080"); + + return { + plugins: [tailwindcss(), sveltekit(), devtoolsJson()], + optimizeDeps: { + exclude: ['chart.js'] + }, + server: { + proxy: { + '/api': API_URL + }, + allowedHosts: [ + 'patapimvest.esteban-charvin.dev', + 'localhost', + '127.0.0.1' + ], + } + } +}); diff --git a/ping/ping/.env b/ping/ping/.env new file mode 100644 index 0000000..4808f47 --- /dev/null +++ b/ping/ping/.env @@ -0,0 +1,3 @@ +PROJECT_DEFAULT_PATH = ping +LOG_FILE=ping.log +ERROR_LOG_FILE=error.log diff --git a/ping/ping/pom.xml b/ping/ping/pom.xml new file mode 100644 index 0000000..cf9c1e3 --- /dev/null +++ b/ping/ping/pom.xml @@ -0,0 +1,307 @@ + + + 4.0.0 + fr.epita.assistants + ping + 1.0 + + + 3.13.0 + + 21 + 21 + 21 + + 3.13.0 + 3.2.5 + 3.4.1 + 3.1.2 + + UTF-8 + UTF-8 + + quarkus-bom + io.quarkus.platform + 3.17.5 + + true + 3.2.5 + + 9.2.0 + 1.18.30 + 6.1.0.202203080745-r + 1.21 + + + + + + ${quarkus.platform.group-id} + ${quarkus.platform.artifact-id} + ${quarkus.platform.version} + pom + import + + + + + + + io.quarkus + quarkus-resteasy-jsonb + + + + io.quarkus + quarkus-arc + + + io.quarkus + quarkus-junit5 + test + + + + org.apache.maven.surefire + surefire-junit-platform + ${versions.maven-surefire-plugin} + + + + io.rest-assured + rest-assured + test + + + + org.eclipse.jgit + org.eclipse.jgit + ${versions.jgit} + + + + com.fasterxml.jackson.core + jackson-databind + 2.16.0 + + + + org.apache.lucene + lucene-core + ${versions.lucene} + + + + org.apache.lucene + lucene-queryparser + ${versions.lucene} + + + + javax.validation + validation-api + 2.0.1.Final + + + + org.projectlombok + lombok + ${versions.lombok} + true + + + + org.assertj + assertj-core + 3.24.2 + + + + com.tngtech.archunit + archunit-junit5 + 1.3.0 + + + + commons-io + commons-io + 2.6 + + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + 2.16.0 + + + com.fasterxml.jackson.core + jackson-core + 2.16.0 + + + + org.yaml + snakeyaml + 2.0 + + + + javax.servlet + servlet-api + 2.5 + + + + io.quarkus + quarkus-hibernate-orm-panache + + + io.quarkus + quarkus-jdbc-postgresql + + + + + io.quarkus + quarkus-smallrye-openapi + + + + io.quarkus + quarkus-resteasy-jackson + + + + io.quarkus + quarkus-smallrye-jwt-build + + + io.quarkus + quarkus-smallrye-jwt + + + + com.auth0 + java-jwt + 4.4.0 + test + + + + + + org.junit.jupiter + junit-jupiter + 5.9.1 + test + + + org.junit.platform + junit-platform-launcher + 1.9.1 + + + io.quarkus + quarkus-junit5-mockito + test + + + io.quarkus + quarkus-test-security-jwt + test + + + + + + + org.apache.maven.plugins + maven-clean-plugin + 2.5 + + + org.apache.maven.plugins + maven-resources-plugin + 2.6 + + + org.apache.maven.plugins + maven-dependency-plugin + 3.3.0 + + + maven-assembly-plugin + + + + fully.qualified.MainClass + + + + jar-with-dependencies + + + + + ${quarkus.platform.group-id} + quarkus-maven-plugin + ${quarkus.platform.version} + true + + + + build + generate-code + generate-code-tests + + + + + + maven-compiler-plugin + ${compiler-plugin.version} + + + -parameters + + + + + maven-surefire-plugin + ${surefire-plugin.version} + + + org.jboss.logmanager.LogManager + ${maven.home} + + + + + org.codehaus.mojo + exec-maven-plugin + 3.0.0 + + + org.apache.maven.plugins + maven-install-plugin + 3.1.0 + + + + + + + native + + + native + + + + false + true + + + + diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/ExecFeatureRequest.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/ExecFeatureRequest.java new file mode 100644 index 0000000..50f665c --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/ExecFeatureRequest.java @@ -0,0 +1,20 @@ +package fr.epita.assistants.ping.api.requests; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.lang.reflect.Array; +import java.util.List; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class ExecFeatureRequest +{ + public String feature; + public String command; + public List params; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/LoginRequest.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/LoginRequest.java new file mode 100644 index 0000000..c88dc2c --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/LoginRequest.java @@ -0,0 +1,16 @@ +package fr.epita.assistants.ping.api.requests; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class LoginRequest +{ + public String login; + public String password; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/MoveRequest.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/MoveRequest.java new file mode 100644 index 0000000..260d574 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/MoveRequest.java @@ -0,0 +1,17 @@ +package fr.epita.assistants.ping.api.requests; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class MoveRequest +{ + public String src; + public String dst; + +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/NewProjectRequest.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/NewProjectRequest.java new file mode 100644 index 0000000..8033ecb --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/NewProjectRequest.java @@ -0,0 +1,15 @@ +package fr.epita.assistants.ping.api.requests; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class NewProjectRequest +{ + public String name; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/NewTransactionRequest.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/NewTransactionRequest.java new file mode 100644 index 0000000..f7a3c6b --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/NewTransactionRequest.java @@ -0,0 +1,21 @@ +package fr.epita.assistants.ping.api.requests; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class NewTransactionRequest { + + public Float amount; + + public String currency; + + public String label = null; + + public String receiverLabel = null; + + public String receiverIban; + + public LocalDateTime operationDate; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/NewUserRequest.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/NewUserRequest.java new file mode 100644 index 0000000..9023b91 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/NewUserRequest.java @@ -0,0 +1,17 @@ +package fr.epita.assistants.ping.api.requests; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class NewUserRequest +{ + public String login; + public String password; + public Boolean isAdmin; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/PathRequest.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/PathRequest.java new file mode 100644 index 0000000..a5fcb36 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/PathRequest.java @@ -0,0 +1,15 @@ +package fr.epita.assistants.ping.api.requests; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class PathRequest +{ + public String relativePath = ""; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UpdateProjectRequest.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UpdateProjectRequest.java new file mode 100644 index 0000000..94f872d --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UpdateProjectRequest.java @@ -0,0 +1,16 @@ +package fr.epita.assistants.ping.api.requests; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class UpdateProjectRequest +{ + public String name; + public String newOwnerId; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UpdateTransactionRequest.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UpdateTransactionRequest.java new file mode 100644 index 0000000..58b90d0 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UpdateTransactionRequest.java @@ -0,0 +1,8 @@ +package fr.epita.assistants.ping.api.requests; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class UpdateTransactionRequest extends NewTransactionRequest {} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UpdateUserRequest.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UpdateUserRequest.java new file mode 100644 index 0000000..5bb4176 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UpdateUserRequest.java @@ -0,0 +1,17 @@ +package fr.epita.assistants.ping.api.requests; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class UpdateUserRequest +{ + public String password; + public String displayName; + public String avatar; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UserProjectRequest.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UserProjectRequest.java new file mode 100644 index 0000000..9f30b84 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/requests/UserProjectRequest.java @@ -0,0 +1,17 @@ +package fr.epita.assistants.ping.api.requests; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class UserProjectRequest +{ + // WARNING: THE ID FIELD ID A UUID STRING + // MAKE SURE THAT IT PASSES THE REGEX SHOWN IN THE SWAGGER + public String userId; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/EcoScoreResponse.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/EcoScoreResponse.java new file mode 100644 index 0000000..129f63c --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/EcoScoreResponse.java @@ -0,0 +1,9 @@ +package fr.epita.assistants.ping.api.responses; + +import lombok.Data; + +@Data +public class EcoScoreResponse { + + public final Float score; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/FSEntryResponse.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/FSEntryResponse.java new file mode 100644 index 0000000..e3443ed --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/FSEntryResponse.java @@ -0,0 +1,17 @@ +package fr.epita.assistants.ping.api.responses; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class FSEntryResponse +{ + public String name; + public String path; + public Boolean isDirectory; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/LoginResponse.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/LoginResponse.java new file mode 100644 index 0000000..b59ede0 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/LoginResponse.java @@ -0,0 +1,15 @@ +package fr.epita.assistants.ping.api.responses; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class LoginResponse +{ + public String token; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/ProjectResponse.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/ProjectResponse.java new file mode 100644 index 0000000..100b996 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/ProjectResponse.java @@ -0,0 +1,22 @@ +package fr.epita.assistants.ping.api.responses; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.util.List; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class ProjectResponse +{ + // WARNING: THE ID FIELD ID A UUID STRING + // MAKE SURE THAT IT PASSES THE REGEX SHOWN IN THE SWAGGER + public String id; + public String name; + public List members; + public UserSummaryResponse owner; +} \ No newline at end of file diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/TransactionResponse.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/TransactionResponse.java new file mode 100644 index 0000000..51d07f6 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/TransactionResponse.java @@ -0,0 +1,30 @@ +package fr.epita.assistants.ping.api.responses; + +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.UUID; + +@Data +public class TransactionResponse { + + public final UUID id; + + public final String label; + + public final Float amount; + + public final String currency; + + public final String receiverLabel; + + public final String receiverIban; + + public final LocalDateTime operationDate; + + public final Float eco_score; + + public final LocalDateTime creationDate; + + public final UUID createrId; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/TransactionsResponse.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/TransactionsResponse.java new file mode 100644 index 0000000..03efb1e --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/TransactionsResponse.java @@ -0,0 +1,11 @@ +package fr.epita.assistants.ping.api.responses; + +import lombok.Data; + +import java.util.List; + +@Data +public class TransactionsResponse { + + public final List transactions; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/UserResponse.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/UserResponse.java new file mode 100644 index 0000000..04c2a57 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/UserResponse.java @@ -0,0 +1,23 @@ +package fr.epita.assistants.ping.api.responses; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.util.UUID; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class UserResponse +{ + // WARNING: THE ID FIELD ID A UUID STRING + // MAKE SURE THAT IT PASSES THE REGEX SHOWN IN THE SWAGGER + public UUID id; + public String login; + public String displayName; + public Boolean isAdmin; + public String avatar; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/UserSummaryResponse.java b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/UserSummaryResponse.java new file mode 100644 index 0000000..228ebc7 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/api/responses/UserSummaryResponse.java @@ -0,0 +1,21 @@ +package fr.epita.assistants.ping.api.responses; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +// The only purpose of this class is to be used by +// the ProjectResponse class +@Getter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class UserSummaryResponse +{ + // WARNING: THE ID FIELD ID A UUID STRING + // MAKE SURE THAT IT PASSES THE REGEX SHOWN IN THE SWAGGER + public String id; + public String displayName; + public String avatar; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/converters/IConverter.java b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/IConverter.java new file mode 100644 index 0000000..5db6e3b --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/IConverter.java @@ -0,0 +1,17 @@ +package fr.epita.assistants.ping.converters; + + +import java.util.List; + +// Maxence regarde j'ai Ă©crit Teto :D +public interface IConverter { + + TTo convert(TFrom object); + + default List convert(List objects) { + return objects + .stream() + .map(this::convert) + .toList(); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/TransactionCreationEntityConverter.java b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/TransactionCreationEntityConverter.java new file mode 100644 index 0000000..99372b3 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/TransactionCreationEntityConverter.java @@ -0,0 +1,23 @@ +package fr.epita.assistants.ping.converters.request; + +import fr.epita.assistants.ping.api.requests.NewTransactionRequest; +import fr.epita.assistants.ping.converters.IConverter; +import fr.epita.assistants.ping.domain.entity.TransactionCreationEntity; +import jakarta.enterprise.context.ApplicationScoped; + +import java.util.Currency; + +@ApplicationScoped +public class TransactionCreationEntityConverter implements IConverter { + + public TransactionCreationEntity convert(final NewTransactionRequest request) throws IllegalArgumentException { + return new TransactionCreationEntity( + request.getAmount(), + Currency.getInstance(request.getCurrency()), + request.getLabel(), + request.getReceiverLabel(), + request.getReceiverIban(), + request.getOperationDate() + ); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/TransactionUpdateEntityConverter.java b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/TransactionUpdateEntityConverter.java new file mode 100644 index 0000000..1448716 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/TransactionUpdateEntityConverter.java @@ -0,0 +1,23 @@ +package fr.epita.assistants.ping.converters.request; + +import fr.epita.assistants.ping.api.requests.UpdateTransactionRequest; +import fr.epita.assistants.ping.converters.IConverter; +import fr.epita.assistants.ping.domain.entity.TransactionUpdateEntity; +import jakarta.enterprise.context.ApplicationScoped; + +import java.util.Currency; + +@ApplicationScoped +public class TransactionUpdateEntityConverter implements IConverter { + + public TransactionUpdateEntity convert(final UpdateTransactionRequest request) throws IllegalArgumentException { + return new TransactionUpdateEntity( + request.getAmount(), + Currency.getInstance(request.getCurrency()), + request.getLabel(), + request.getReceiverLabel(), + request.getReceiverIban(), + request.getOperationDate() + ); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/UserCreationEntityConverter.java b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/UserCreationEntityConverter.java new file mode 100644 index 0000000..b452d9e --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/UserCreationEntityConverter.java @@ -0,0 +1,19 @@ +package fr.epita.assistants.ping.converters.request; + +import fr.epita.assistants.ping.api.requests.NewUserRequest; +import fr.epita.assistants.ping.converters.IConverter; +import fr.epita.assistants.ping.domain.entity.UserCreationEntity; +import jakarta.enterprise.context.ApplicationScoped; + + +@ApplicationScoped +public class UserCreationEntityConverter implements IConverter { + + public UserCreationEntity convert(final NewUserRequest request) { + return new UserCreationEntity( + request.getLogin(), + request.getPassword(), + request.getIsAdmin() + ); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/UserUpdateEntityConverter.java b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/UserUpdateEntityConverter.java new file mode 100644 index 0000000..3803a97 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/request/UserUpdateEntityConverter.java @@ -0,0 +1,19 @@ +package fr.epita.assistants.ping.converters.request; + +import fr.epita.assistants.ping.api.requests.UpdateUserRequest; +import fr.epita.assistants.ping.converters.IConverter; +import fr.epita.assistants.ping.domain.entity.UserUpdateEntity; +import jakarta.enterprise.context.ApplicationScoped; + + +@ApplicationScoped +public class UserUpdateEntityConverter implements IConverter { + + public UserUpdateEntity convert(final UpdateUserRequest request) { + return new UserUpdateEntity( + request.getPassword(), + request.getDisplayName(), + request.getAvatar() + ); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/ProjectResponseConverter.java b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/ProjectResponseConverter.java new file mode 100644 index 0000000..b45c764 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/ProjectResponseConverter.java @@ -0,0 +1,25 @@ +package fr.epita.assistants.ping.converters.response; + +import fr.epita.assistants.ping.api.responses.ProjectResponse; +import fr.epita.assistants.ping.converters.IConverter; +import fr.epita.assistants.ping.data.model.ProjectModel; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; + +@ApplicationScoped +public class ProjectResponseConverter implements IConverter { + + @Inject + UserSummaryResponseConverter userSummaryResponseConverter; + + public ProjectResponse convert(ProjectModel p) { + var owner = p.getOwner(); + + return new ProjectResponse( + p.getId().toString(), + p.getName(), + p.getMembers().stream().map(userSummaryResponseConverter::convert).toList(), + userSummaryResponseConverter.convert(owner) + ); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/TransactionResponseConverter.java b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/TransactionResponseConverter.java new file mode 100644 index 0000000..daed47b --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/TransactionResponseConverter.java @@ -0,0 +1,25 @@ +package fr.epita.assistants.ping.converters.response; + +import fr.epita.assistants.ping.api.responses.TransactionResponse; +import fr.epita.assistants.ping.converters.IConverter; +import fr.epita.assistants.ping.data.model.TransactionModel; +import jakarta.enterprise.context.ApplicationScoped; + +@ApplicationScoped +public class TransactionResponseConverter implements IConverter { + + public TransactionResponse convert(TransactionModel transactionModel) { + return new TransactionResponse( + transactionModel.getId(), + transactionModel.getLabel(), + transactionModel.getAmount(), + transactionModel.getCurrency().getCurrencyCode(), + transactionModel.getReceiverLabel(), + transactionModel.getReceiverIban(), + transactionModel.getOperationDate(), + transactionModel.getEcoScore(), + transactionModel.getCreationTimestamp(), + transactionModel.getCreationUser().getId() + ); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/UserResponseConverter.java b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/UserResponseConverter.java new file mode 100644 index 0000000..ef251d0 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/UserResponseConverter.java @@ -0,0 +1,21 @@ +package fr.epita.assistants.ping.converters.response; + +import fr.epita.assistants.ping.api.responses.UserResponse; +import fr.epita.assistants.ping.converters.IConverter; +import fr.epita.assistants.ping.data.model.UserModel; +import jakarta.enterprise.context.ApplicationScoped; + + +@ApplicationScoped +public class UserResponseConverter implements IConverter { + + public UserResponse convert(final UserModel userModel) { + return new UserResponse( + userModel.getId(), + userModel.getLogin(), + userModel.getDisplayName(), + userModel.getIsAdmin(), + userModel.getAvatar() + ); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/UserSummaryResponseConverter.java b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/UserSummaryResponseConverter.java new file mode 100644 index 0000000..aa4d1a4 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/converters/response/UserSummaryResponseConverter.java @@ -0,0 +1,20 @@ +package fr.epita.assistants.ping.converters.response; + +import fr.epita.assistants.ping.api.responses.UserSummaryResponse; +import fr.epita.assistants.ping.converters.IConverter; +import fr.epita.assistants.ping.data.model.UserModel; +import jakarta.enterprise.context.ApplicationScoped; + + +@ApplicationScoped +public class UserSummaryResponseConverter implements IConverter { + + public UserSummaryResponse convert(UserModel um) { + return new UserSummaryResponse( + um.getId().toString(), + um.getDisplayName(), + um.getAvatar() + ); + } + +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/data/model/ProjectModel.java b/ping/ping/src/main/java/fr/epita/assistants/ping/data/model/ProjectModel.java new file mode 100644 index 0000000..f969cf7 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/data/model/ProjectModel.java @@ -0,0 +1,43 @@ +package fr.epita.assistants.ping.data.model; + +import jakarta.persistence.*; +import lombok.*; + +import java.util.List; +import java.util.UUID; + +@Getter +@Setter +@Entity +@NoArgsConstructor +@AllArgsConstructor +@ToString +@Table(name = "projects") +public class ProjectModel { + // TODO DONE + @Id + @GeneratedValue(strategy = GenerationType.UUID) + UUID id; + @ManyToOne + @With + @JoinColumn(name = "owner_id", referencedColumnName = "id") + UserModel owner; + @With + String name; + @With + String path; + + @ManyToMany(fetch = FetchType.EAGER) + @JoinTable( + name="project_members", + joinColumns = @JoinColumn(name = "project_id"), + inverseJoinColumns = @JoinColumn(name = "user_id") + ) + List members; + + public boolean hasMember(final UserModel user) { + return owner.getId().compareTo(user.getId()) == 0 || members + .stream() + .anyMatch(userModel -> userModel.getId().compareTo(user.getId()) == 0); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/data/model/TransactionModel.java b/ping/ping/src/main/java/fr/epita/assistants/ping/data/model/TransactionModel.java new file mode 100644 index 0000000..08289f7 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/data/model/TransactionModel.java @@ -0,0 +1,61 @@ +package fr.epita.assistants.ping.data.model; + +import io.quarkus.hibernate.orm.panache.PanacheEntityBase; +import jakarta.annotation.Nullable; +import jakarta.persistence.*; +import lombok.*; + +import java.time.LocalDateTime; +import java.util.Currency; +import java.util.UUID; + +@EqualsAndHashCode(callSuper = true) +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "transactions") +public class TransactionModel extends PanacheEntityBase { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + UUID id; + + @With + String label; + + @With + Float amount; + + @With + Currency currency; + + @With + @Nullable + @Column(name = "receiver_label") + String receiverLabel = null; + + @With + @Column(name = "receiver_iban") + String receiverIban; + + @With + @Column(name = "operation_date") + LocalDateTime operationDate; + + @With + @Column(name = "eco_score") + Float ecoScore; + + @With + @ManyToOne + @JoinColumn(name = "creation_user") + UserModel creationUser; + + @Column(name = "creation_timestamp") + LocalDateTime creationTimestamp = LocalDateTime.now(); + + @Nullable + @Column(name = "update_timestamp") + LocalDateTime updateTimestamp = null; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/data/model/UserModel.java b/ping/ping/src/main/java/fr/epita/assistants/ping/data/model/UserModel.java new file mode 100644 index 0000000..07a54c8 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/data/model/UserModel.java @@ -0,0 +1,42 @@ +package fr.epita.assistants.ping.data.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import jakarta.persistence.*; +import lombok.*; + +import java.util.List; +import java.util.Set; +import java.util.UUID; + +@Getter +@Setter +@Entity +@NoArgsConstructor +@AllArgsConstructor +@ToString +@Table(name = "users") +public class UserModel { + // TODO DONE + @Id @GeneratedValue(strategy = GenerationType.UUID) + UUID id; + + @Column(name = "display_name") @With + String displayName; + + @Column(name = "is_admin") @With + Boolean isAdmin; + + @With + String avatar; + + @With + String login; + + @With + String password; + + @JsonIgnore + @ToString.Exclude + @ManyToMany(mappedBy = "members", fetch = FetchType.EAGER) + List projectMemberships; +} \ No newline at end of file diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/data/repository/ProjectRepository.java b/ping/ping/src/main/java/fr/epita/assistants/ping/data/repository/ProjectRepository.java new file mode 100644 index 0000000..31346f0 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/data/repository/ProjectRepository.java @@ -0,0 +1,113 @@ +package fr.epita.assistants.ping.data.repository; + +import fr.epita.assistants.ping.data.model.ProjectModel; +import fr.epita.assistants.ping.data.model.UserModel; +import fr.epita.assistants.ping.utils.Logger; +import io.quarkus.hibernate.orm.panache.PanacheRepository; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.transaction.Transactional; +import org.eclipse.microprofile.config.inject.ConfigProperty; + +import java.net.URI; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +@ApplicationScoped +public class ProjectRepository implements PanacheRepository { + @ConfigProperty(name = "PROJECT_DEFAULT_PATH") + String defaultPath; + + @Inject + Logger logger; + + // MODIFIENT LA DB + @Transactional + public ProjectModel createProject(UserModel owner, String name) { + ProjectModel project = new ProjectModel().withName(name).withOwner(owner); + List members = new ArrayList<>(); + members.add(owner); + project.setMembers(members); + persist(project); + defaultPath = defaultPath.charAt(defaultPath.length() - 1) == '/' ? defaultPath : defaultPath + "/"; + project.setPath(defaultPath + project.getId().toString()); + persist(project); + logger.info("Projet " + project.getId() + " créé."); + return project; + } + + // UPDATE + // On admet que le projet existe -> utilisez getProject ! + @Transactional + public void updateName(UUID id, String name) { + update("name = ?1 where id = ?2", id, name); + logger.info("Projet " + id + " mis Ă  jour (nouveau nom : " + name + ")."); + } + + @Transactional + public void updateOwner(UUID id, UserModel newOwner) { + update("owner = ?1 where id = ?2", id, newOwner); + logger.info("Projet " + id + " mis Ă  jour (nouveau propriĂ©taire : " + newOwner + ")."); + } + + @Transactional + public void addMember(UUID id, UserModel member) { + ProjectModel p = find("where id = ?1", id).firstResult(); + p.getMembers().add(member); + persist(p); + logger.info("Nouveau membre (utilisateur " + member.getDisplayName() + ") " + " ajoutĂ© au projet " + id + "."); + } + + @Transactional + public void removeMember(UUID id, UserModel member) { + ProjectModel p = find("where id = ?1", id).firstResult(); + p.getMembers().remove(member); + persist(p); + logger.info("Membre (utilisateur " + member + ") " + " retirĂ© du projet " + id + "."); + } + + // DELETE + // Admis : + // - Le projet existe -> Utilisez getProject + public void deleteProject(UUID id) { + Optional optPm = getProject(id); + if(optPm.isEmpty()) return; + ProjectModel pm = optPm.get(); + // Les membres connaissent plus ce projet + pm.getMembers().forEach(m -> m.getProjectMemberships().remove(pm)); + // Le projet connait plus ses membres + pm.getMembers().clear(); + persist(pm); + // Le projet part dans le ventre de bombardiro crocodiro + delete("where id = ?1",id); + logger.info("Projet " + id + "supprimĂ©."); + } + + // NE MODIFIENT PAS LA DB + @Transactional + public List getAllProjects() { + List res = findAll().stream().toList(); + logger.info("RĂ©cupĂ©ration de tous les projets depuis la base de donnĂ©es `projects`."); + for (ProjectModel elem : res) + { + logger.info("Found project: " + elem.toString()); + } + return res; + } + + @Transactional + public List getAllOwnedProjects(UserModel owner) { + var res = find("where owner.id = ?1", owner.getId()).stream().toList(); + logger.info("RĂ©cupĂ©ration de tous les projets de " + owner.getDisplayName() + " depuis la base de donnĂ©es `projects`."); + return res; + } + + @Transactional + public Optional getProject(UUID id) { + var res = find("where id = ?1", id).firstResultOptional(); + logger.info("RĂ©cupĂ©ration du projet " + id + " depuis la base de donnĂ©es `projects`."); + return res; + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/data/repository/TransactionRepository.java b/ping/ping/src/main/java/fr/epita/assistants/ping/data/repository/TransactionRepository.java new file mode 100644 index 0000000..cc0193f --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/data/repository/TransactionRepository.java @@ -0,0 +1,32 @@ +package fr.epita.assistants.ping.data.repository; + +import fr.epita.assistants.ping.data.model.TransactionModel; +import io.quarkus.hibernate.orm.panache.PanacheRepository; +import jakarta.enterprise.context.ApplicationScoped; + +import java.util.Optional; +import java.util.UUID; + +@ApplicationScoped +public class TransactionRepository implements PanacheRepository { + + public TransactionModel findById(final UUID identifier) { + return TransactionModel.findById(identifier); + } + + public Optional findByIdOptional(final UUID identifier) { + return find("where id = ?1", identifier).firstResultOptional(); + } + + public boolean deleteById(final UUID identifier) { + final Optional transaction = findByIdOptional(identifier); + + if (transaction.isEmpty()) { + return false; + } + + transaction.get().delete(); + + return true; + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/data/repository/UserRepository.java b/ping/ping/src/main/java/fr/epita/assistants/ping/data/repository/UserRepository.java new file mode 100644 index 0000000..599a8fc --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/data/repository/UserRepository.java @@ -0,0 +1,120 @@ +package fr.epita.assistants.ping.data.repository; + +import fr.epita.assistants.ping.data.model.ProjectModel; +import fr.epita.assistants.ping.data.model.UserModel; +import fr.epita.assistants.ping.utils.Logger; +import io.quarkus.hibernate.orm.panache.PanacheRepository; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.transaction.Transactional; + +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; + +@ApplicationScoped +public class UserRepository implements PanacheRepository { + @Inject + Logger logger; + // @Transactional ĂȘtre la voie + + // MODIFIENT LA DB + @Transactional + public UserModel createUser(String name, Boolean admin, String avatar, String login, String password) { + UserModel user = new UserModel() + .withAvatar(avatar) + .withLogin(login) + .withPassword(password) + .withIsAdmin(admin) + .withDisplayName(name); + + persist(user); + logger.info("Utilisateur " + user.getId() + " créé."); + return user; + } + + // Projets dans lesquels l'utilisateur est + // id = user + // ProjectModel = le projet + @Transactional + public void joinProject(UUID id, ProjectModel project) { + logger.info("Adding user (" + id + ") to project" + project.getName()); + UserModel user = find("id = ?1", id).firstResult(); + if (user != null) { + user.getProjectMemberships().add(project); + persist(user); + } + } + + @Transactional + public void leaveProject(UUID id, ProjectModel project) { + logger.info("Removing user (" + id + ") from project" + project.getName()); + UserModel user = find("id = ?1", id).firstResult(); + if (user != null) { + user.getProjectMemberships().remove(project); + persist(user); + } + } + + // UPDATE + // On admet que le user existe -> Utilisez getUser ! + + @Transactional + public void updatePassword(UUID id, String password) { + update("password = ?1 where id = ?2", password, id); + logger.info("Utilisateur " + id + " mis Ă  jour (nouveau mot de passe : " + password + ")."); + } + @Transactional + public void updateDisplayName(UUID id, String name) { + update("displayName = ?1 where id = ?2", name, id); + logger.info("Utilisateur " + id + " mis Ă  jour (nouveau nom : " + name + ")."); + } + @Transactional + public void updateAvatar(UUID id, String avatar) { + update("avatar = ?1 where id = ?2", avatar, id); + logger.info("Utilisateur " + id + " mis Ă  jour (nouvel avatar : " + avatar + ")."); + } + @Transactional + public void updateLogin(UUID id, String login) { + update("login = ?1 where id = ?2", login, id); + logger.info("Utilisateur " + id + " mis Ă  jour (nouveau login : " + login + ")."); + } + @Transactional + public void updateIsAdmin(UUID id, Boolean admin) { + update("isAdmin = ?1 where id = ?2", admin, id); + logger.info("Utilisateur " + id + " mis Ă  jour (nouveau statut administrateur : " + admin + ")."); + } + + // DELETE + // Admis : + // - Le user existe -> Utilisez getUser + // - Le user n'est propriĂ©taire d'aucun projet -> Utilisez ProjectRepository + @Transactional + public void deleteUser(UUID id) { + delete("id = ?1", id); + logger.info("Utilisateur " + id + "supprimĂ©."); + } + + // NE MODIFIENT PAS LA DB + + @Transactional + public List getAllUsers() { + var res = findAll().stream().toList(); + logger.info("RĂ©cupĂ©ration de tous les utilisateurs depuis la base de donnĂ©es `users`."); + return res; + } + + // Getters renvoie Optional si jamais le user n'existe pas + @Transactional + public Optional getUser(UUID id) { + var res = find("where id = ?1", id).firstResultOptional(); + logger.info("RĂ©cupĂ©ration de l'utilisateur (" + id + " " + ((res.isEmpty())? "[NOT FOUND]" : res.get().getDisplayName()) + ") depuis la base de donnĂ©es `users`."); + return res; + } + public Optional getUser(String login) { + var res = find("where login = ?1", login).firstResultOptional(); + logger.info("RĂ©cupĂ©ration de l'utilisateur (" + login + ") depuis la base de donnĂ©es `users`."); + return res; + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/TransactionCreationEntity.java b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/TransactionCreationEntity.java new file mode 100644 index 0000000..2f69c03 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/TransactionCreationEntity.java @@ -0,0 +1,19 @@ +package fr.epita.assistants.ping.domain.entity; + +import java.time.LocalDateTime; +import java.util.Currency; + +public record TransactionCreationEntity( + + Float amount, + + Currency currency, + + String label, + + String receiver_label, + + String receiver_iban, + + LocalDateTime operation_date +) {} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/TransactionUpdateEntity.java b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/TransactionUpdateEntity.java new file mode 100644 index 0000000..a6c0c8d --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/TransactionUpdateEntity.java @@ -0,0 +1,19 @@ +package fr.epita.assistants.ping.domain.entity; + +import java.time.LocalDateTime; +import java.util.Currency; + +public record TransactionUpdateEntity( + + Float amount, + + Currency currency, + + String label, + + String receiverLabel, + + String receiverIban, + + LocalDateTime operationDate +) {} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/UserCreationEntity.java b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/UserCreationEntity.java new file mode 100644 index 0000000..7b87bc3 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/UserCreationEntity.java @@ -0,0 +1,7 @@ +package fr.epita.assistants.ping.domain.entity; + +public record UserCreationEntity( + String login, + String password, + Boolean isAdmin +) {} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/UserUpdateEntity.java b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/UserUpdateEntity.java new file mode 100644 index 0000000..ae237e1 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/UserUpdateEntity.java @@ -0,0 +1,7 @@ +package fr.epita.assistants.ping.domain.entity; + +public record UserUpdateEntity ( + String password, + String displayName, + String avatar +) {} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/feature/Feature.java b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/feature/Feature.java new file mode 100644 index 0000000..cf401d7 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/feature/Feature.java @@ -0,0 +1,14 @@ +package fr.epita.assistants.ping.domain.entity.feature; + +import fr.epita.assistants.ping.errors.InvalidFeatureException; + +public enum Feature { + GIT; + + public static Feature fromString(final String string) { + return switch (string) { + case "git" -> GIT; + default -> throw new InvalidFeatureException("Invalid feature parameter: " + string); + }; + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/feature/FeatureExecution.java b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/feature/FeatureExecution.java new file mode 100644 index 0000000..c993e3b --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/entity/feature/FeatureExecution.java @@ -0,0 +1,18 @@ +package fr.epita.assistants.ping.domain.entity.feature; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.List; + +@Getter +@AllArgsConstructor +public class FeatureExecution { + public final Feature feature; + public final String command; + public final List args; + + public FeatureExecution(final String feature, final String command, final List args) { + this(Feature.fromString(feature), command, args); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/domain/executor/FeatureDispatcher.java b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/executor/FeatureDispatcher.java new file mode 100644 index 0000000..f01ed3e --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/executor/FeatureDispatcher.java @@ -0,0 +1,31 @@ +package fr.epita.assistants.ping.domain.executor; + +import fr.epita.assistants.ping.domain.entity.feature.Feature; +import fr.epita.assistants.ping.domain.entity.feature.FeatureExecution; +import io.quarkus.runtime.Startup; +import jakarta.enterprise.context.ApplicationScoped; + +import java.io.File; +import java.security.InvalidParameterException; +import java.util.HashMap; +import java.util.Map; + +@ApplicationScoped +public class FeatureDispatcher { + private final Map features = new HashMap<>(); + + @Startup + public void init() { + features.put(Feature.GIT, new GitFeatureExecutor()); + } + + public void execute(final File projectRoot, final FeatureExecution executionRequest) { + if (!features.containsKey(executionRequest.getFeature())) { + throw new InvalidParameterException( + "Feature " + executionRequest.getFeature() + " currently does not have any implementation" + ); + } + + features.get(executionRequest.getFeature()).execute(projectRoot, executionRequest); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/domain/executor/FeatureExecutor.java b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/executor/FeatureExecutor.java new file mode 100644 index 0000000..e67b075 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/executor/FeatureExecutor.java @@ -0,0 +1,17 @@ +package fr.epita.assistants.ping.domain.executor; + +import fr.epita.assistants.ping.domain.entity.feature.FeatureExecution; + +import java.io.File; + +public interface FeatureExecutor { + /** + * unique tool name, e.g. "git" + */ + String name(); + + /** + * execute sub-command on the project root directory + */ + void execute(File projectRoot, FeatureExecution request); +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/domain/executor/GitFeatureExecutor.java b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/executor/GitFeatureExecutor.java new file mode 100644 index 0000000..098536a --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/executor/GitFeatureExecutor.java @@ -0,0 +1,134 @@ +package fr.epita.assistants.ping.domain.executor; + +import fr.epita.assistants.ping.domain.entity.feature.FeatureExecution; +import fr.epita.assistants.ping.errors.InvalidCommandException; +import org.eclipse.jgit.api.AddCommand; +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.storage.file.FileRepositoryBuilder; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Path; +import java.security.InvalidParameterException; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; + +public class GitFeatureExecutor implements FeatureExecutor { + + private List validateAddArgs(final List args) { + return args; + } + + private List gitAddRecursive(final File contextFolder, final Path rootFolder, final String pattern) { + final Pattern asPattern = Pattern.compile(pattern); + final File[] files = contextFolder.listFiles(); + final List result = new ArrayList<>(); + + assert files != null; + + for (final File child : files) { + final Path relativePath = rootFolder.relativize(Path.of(child.getPath())); + + if (asPattern.matcher(relativePath.toString()).matches()) { + result.add(relativePath); + } + + if (child.isDirectory()) { + result.addAll(gitAddRecursive(child, rootFolder, pattern)); + } + } + + return result; + } + + private Repository loadRepository(final File contextRoot) { + try { + return new FileRepositoryBuilder() + .setGitDir(contextRoot.toPath().resolve(".git").toFile()) + .build(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private void gitInit(final File contextRoot, final List _args) { + try { + Git.init().setDirectory(contextRoot).call(); + } catch (GitAPIException e) { + throw new RuntimeException(e); + } + } + + private void gitAdd(final File contextRoot, final List args) { + final List actualArgs = validateAddArgs(args); + + if (actualArgs.isEmpty()) { + throw new InvalidParameterException("Expected at least 1 argument but got none"); + } + + final Repository repository = loadRepository(contextRoot); + final Git git = new Git(repository); + AddCommand addCommand = git.add(); + final Path contextRootAsPath = contextRoot.toPath(); + final List filesToAdd = new ArrayList<>(); + + for (final String arg : actualArgs) { + if (arg == null) { + throw new InvalidParameterException("Git add patterns cannot include a null value"); + } + + final List correspondances = gitAddRecursive(contextRoot, contextRootAsPath, arg); + + if (correspondances.isEmpty()) { + throw new InvalidParameterException("Git add pattern " + arg + " does not match any file"); + } + + filesToAdd.addAll(correspondances); + } + + filesToAdd.forEach(path -> addCommand.addFilepattern(path.toString())); + + try { + addCommand.call(); + } catch (GitAPIException e) { + throw new RuntimeException(e); + } + } + + private void gitCommit(final File contextRoot, final List args) { + if (args.size() != 1) { + throw new InvalidParameterException("Expected 1 argument but got " + args.size()); + } + + final Repository repository = loadRepository(contextRoot); + final Git git = new Git(repository); + final String commitMessage = args.getFirst(); + + try { + git.commit().setMessage(commitMessage).call(); + } catch (GitAPIException e) { + throw new RuntimeException(e); + } + } + + @Override + public String name() { + return "Git"; + } + + @Override + public void execute(File projectRoot, FeatureExecution request) { + final String command = request.getCommand(); + final List args = request.getArgs(); + + switch (command) { + case "init" -> gitInit(projectRoot, args); + case "add" -> gitAdd(projectRoot, args); + case "commit" -> gitCommit(projectRoot, args); + default -> throw new InvalidCommandException(this, command); + } + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/FileSystemService.java b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/FileSystemService.java new file mode 100644 index 0000000..2ee3959 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/FileSystemService.java @@ -0,0 +1,497 @@ +package fr.epita.assistants.ping.domain.service; + +import fr.epita.assistants.ping.api.requests.MoveRequest; +import fr.epita.assistants.ping.api.requests.PathRequest; +import fr.epita.assistants.ping.api.responses.FSEntryResponse; +import fr.epita.assistants.ping.data.model.ProjectModel; +import fr.epita.assistants.ping.data.model.UserModel; +import fr.epita.assistants.ping.errors.ErrorsCode; +import fr.epita.assistants.ping.errors.UnreacheableCodeException; +import fr.epita.assistants.ping.utils.Logger; +import io.quarkus.runtime.Startup; +import jakarta.annotation.Nullable; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.ws.rs.core.Response; +import org.eclipse.microprofile.config.inject.ConfigProperty; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.*; +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; + +@ApplicationScoped +public class FileSystemService { + + @ConfigProperty(name = "PROJECT_DEFAULT_PATH") + String defaultPath; + + private Path projectRootPath; + + @Inject + UserService userService; + + @Inject + ProjectService projectService; + + @Inject + Logger logger; + + @Startup + void init() { + projectRootPath = Paths.get(defaultPath); + logger.info("Set project files root path to " + projectRootPath); + } + + private ProjectModel loadContextProject(final UUID contextUserId, final UUID projectId) { + logger.debug("Attempting to load context project " + projectId + " as " + contextUserId); + final UserModel contextUser = userService.loadContextUser(contextUserId); + return projectService.loadContextProject(projectId, contextUser); + } + + private Path resolvePath(final ProjectModel project, @Nullable final String relativePath) { + final Path thisProjectRoot = projectRootPath.resolve(project.getId().toString()); + Path resolvedPath = thisProjectRoot; + + if (relativePath != null && !relativePath.isBlank()) { + resolvedPath = resolvedPath.resolve(relativePath); + } + + resolvedPath = resolvedPath.normalize(); + + if (!resolvedPath.startsWith(thisProjectRoot)) { + ErrorsCode.FORBIDDEN.throwException("Access denied: Path attempts to access outside project directory"); + } + + return resolvedPath; + } + + public Response listFolder(final UUID contextUserId, final UUID projectId, final PathRequest request) { + ProjectModel contextProject = loadContextProject(contextUserId, projectId); + logger.info("Listing folder contents for: " + request.getRelativePath()); + + try { + Path dirPath = resolvePath(contextProject, request.getRelativePath()); + logger.info("Listing folder contents for: " + request.getRelativePath()); + + if (!Files.exists(dirPath)) { + logger.error("Folder not found: " + dirPath); + ErrorsCode.NOT_FOUND.throwException("Folder not found"); + } + + if (!Files.isDirectory(dirPath)) { + logger.error("Path is not a directory: " + dirPath); + ErrorsCode.BAD_REQUEST.throwException("Path is not a directory"); + } + + List entries = Files.list(dirPath) + .map(path -> new FSEntryResponse( + path.getFileName().toString(), + //dirPath.relativize(path).toString(), + projectRootPath.resolve(contextProject.getId().toString()).relativize(path).toString(), + Files.isDirectory(path) + )) + .collect(Collectors.toList()); + + logger.info("Listing folder contents at path: " + request.getRelativePath()); + if (entries.isEmpty()) { + logger.info("Folder is empty"); + } + + logger.info("Found " + entries.size() + " entries in folder: " + request.getRelativePath()); + return Response.ok(entries).build(); + + } catch (IOException e) { + logger.error("Failed to list folder contents: " + e.getMessage()); + ErrorsCode.INTERNAL_ERROR.throwException("Failed to list folder contents: " + e.getMessage()); + } + + logger.error("Unreachable code reached in listFolder method"); + throw new UnreacheableCodeException(); + } + + public Response deleteFolder(final UUID contextUserId, final UUID projectId, final PathRequest request) { + ProjectModel contextProject = loadContextProject(contextUserId, projectId); + logger.info("Deleting folder: " + request.getRelativePath()); + + try { + if (request.getRelativePath() == null) { + logger.error("Invalid path: null or empty"); + ErrorsCode.BAD_REQUEST.throwException("Path cannot be null or empty"); + } + + Path dirPath = resolvePath(contextProject, request.getRelativePath()); + Path projectRoot = projectRootPath.resolve(contextProject.getId().toString()); + + if (!Files.exists(dirPath)) { + logger.error("Folder not found: " + dirPath); + ErrorsCode.NOT_FOUND.throwException("Folder not found"); + } + + if (!Files.isDirectory(dirPath)) { + logger.error("Path is not a directory: " + dirPath); + ErrorsCode.BAD_REQUEST.throwException("Path is not a directory"); + } + + logger.info("Removing folder and its contents: " + dirPath); + + if (dirPath.equals(projectRoot)) { + logger.info("Emptying root folder contents without deleting root"); + Files.walk(dirPath) + .sorted((a, b) -> b.compareTo(a)) + .filter(path -> !path.equals(dirPath)) + .forEach(path -> { + try { + Files.delete(path); + } catch (IOException e) { + logger.error("Failed to remove file: " + path + " - " + e.getMessage()); + ErrorsCode.INTERNAL_ERROR.throwException( + "Failed to remove file " + path + ": " + e.getMessage()); + } + }); + } else { + Files.walk(dirPath) + .sorted((a, b) -> b.compareTo(a)) + .forEach(path -> { + try { + Files.delete(path); + } catch (IOException e) { + logger.error("Failed to remove file: " + path + " - " + e.getMessage()); + ErrorsCode.INTERNAL_ERROR.throwException( + "Failed to remove file " + path + ": " + e.getMessage()); + } + }); + } + + logger.info("Successfully deleted folder: " + dirPath); + return Response.noContent().build(); + + } catch (IOException e) { + logger.error("Failed to delete folder: " + e.getMessage()); + ErrorsCode.INTERNAL_ERROR.throwException("Failed to delete folder: " + e.getMessage()); + } + + logger.error("Unreachable code reached in deleteFolder method"); + throw new UnreacheableCodeException(); + } + + public Response createFolder(final UUID contextUserId, final UUID projectId, final PathRequest request) { + ProjectModel contextProject = loadContextProject(contextUserId, projectId); + logger.info("Creating folder: " + request.getRelativePath()); + + try { + logger.info("Attempting to create folder with path: " + request.getRelativePath()); + if (request.getRelativePath() == null) { + logger.error("Create folder failed: path is null"); + ErrorsCode.BAD_REQUEST.throwException("Path cannot be null"); + } + if (request.getRelativePath().isEmpty()) { + logger.error("Create folder failed: path is empty"); + ErrorsCode.BAD_REQUEST.throwException("Path cannot be empty"); + } + + Path dirPath = resolvePath(contextProject, request.getRelativePath()); + + if (Files.exists(dirPath)) { + logger.error("Folder already exists: " + dirPath); + ErrorsCode.CONFLICT.throwException("Folder already exists"); + } + + logger.info("Creating new folder at path: " + request.getRelativePath()); + Files.createDirectories(dirPath); + + return Response.status(Response.Status.CREATED) + .entity(new FSEntryResponse( + dirPath.getFileName().toString(), + request.getRelativePath(), + true + )).build(); + + } catch (IOException e) { + logger.error("Failed to create folder: " + e.getMessage()); + ErrorsCode.INTERNAL_ERROR.throwException("Failed to create folder: " + e.getMessage()); + } + + logger.error("Unreachable code reached in createFolder method"); + throw new UnreacheableCodeException(); + } + + public Response createFile(final UUID contextUserId, final UUID projectId, final PathRequest request) { + ProjectModel contextProject = loadContextProject(contextUserId, projectId); + logger.info("Creating file: " + request.getRelativePath()); + + try { + if (request.getRelativePath() == null || request.getRelativePath().isEmpty()) { + logger.error("Invalid path: null or empty"); + ErrorsCode.BAD_REQUEST.throwException("Path cannot be null or empty"); + } + + Path filePath = resolvePath(contextProject, request.getRelativePath()); + + logger.info("Creating new file at path: " + request.getRelativePath()); + if (Files.exists(filePath)) { + logger.error("Create file failed: file already exists at " + filePath); + ErrorsCode.CONFLICT.throwException("File already exists"); + } + + Files.createDirectories(filePath.getParent()); + Files.createFile(filePath); + + return Response.status(Response.Status.CREATED) + .entity(new FSEntryResponse( + filePath.getFileName().toString(), + request.getRelativePath(), + false + )).build(); + + } catch (IOException e) { + logger.error("Failed to create file: " + e.getMessage()); + ErrorsCode.INTERNAL_ERROR.throwException("Failed to create file: " + e.getMessage()); + } + + logger.error("Unreachable code reached in createFile method"); + throw new UnreacheableCodeException(); + } + + public Response deleteFile(final UUID contextUserId, final UUID projectId, final PathRequest request) { + ProjectModel contextProject = loadContextProject(contextUserId, projectId); + logger.info("Deleting file: " + request.getRelativePath()); + + try { + if (request.getRelativePath() == null || request.getRelativePath().isEmpty()) { + logger.error("Invalid path: null or empty"); + ErrorsCode.BAD_REQUEST.throwException("Path cannot be null or empty"); + } + + Path filePath = resolvePath(contextProject, request.getRelativePath()); + Path projectRoot = projectRootPath.resolve(contextProject.getId().toString()); + + logger.info("Attempting to delete file: " + request.getRelativePath()); + if (filePath.equals(projectRoot)) { + logger.error("Cannot delete project root directory"); + ErrorsCode.FORBIDDEN.throwException("Cannot delete project root directory"); + } + + if (!Files.exists(filePath)) { + logger.error("Delete file failed: file not found at " + filePath); + ErrorsCode.NOT_FOUND.throwException("File not found"); + } + + if (Files.isDirectory(filePath)) { + logger.error("Path is a directory, not a file: " + filePath); + ErrorsCode.BAD_REQUEST.throwException("Path is a directory, not a file"); + } + + logger.info("Removing file: " + filePath); + Files.delete(filePath); + + return Response.noContent().build(); + + } catch (IOException e) { + logger.error("Failed to delete file: " + e.getMessage()); + ErrorsCode.INTERNAL_ERROR.throwException("Failed to delete file: " + e.getMessage()); + } + + logger.error("Unreachable code reached in deleteFile method"); + throw new UnreacheableCodeException(); + } + + public Response readFile(final UUID contextUserId, final UUID projectId, final PathRequest request) { + ProjectModel contextProject = loadContextProject(contextUserId, projectId); + logger.info("Reading file: " + request.getRelativePath()); + + try { + Path filePath = resolvePath(contextProject, request.getRelativePath()); + + logger.info("Downloading file from path: " + request.getRelativePath()); + if (!Files.exists(filePath)) { + logger.error("Download failed: file not found at " + filePath); + ErrorsCode.NOT_FOUND.throwException("File not found"); + } + + if (Files.isDirectory(filePath)) { + logger.error("Path is a directory, not a file: " + filePath); + ErrorsCode.BAD_REQUEST.throwException("Path is a directory, not a file"); + } + + logger.info("Reading file content: " + filePath); + byte[] content = Files.readAllBytes(filePath); + + return Response.ok(content).build(); + + } catch (IOException e) { + logger.error("Failed to read file: " + e.getMessage()); + ErrorsCode.INTERNAL_ERROR.throwException("Failed to read file: " + e.getMessage()); + } + + logger.error("Unreachable code reached in readFile method"); + throw new UnreacheableCodeException(); + } + + public Response updateFile(final UUID contextUserId, final UUID projectId, final PathRequest request, + final String content) { + ProjectModel contextProject = loadContextProject(contextUserId, projectId); + logger.info("Trying to update file " + request.getRelativePath() + " from project " + projectId); + + try { + Path filePath = resolvePath(contextProject, request.getRelativePath()); + + if (!Files.exists(filePath)) { + logger.error("File not found: " + filePath); + ErrorsCode.NOT_FOUND.throwException("File not found"); + } + + if (Files.isDirectory(filePath)) { + logger.error("Path is a directory, not a file: " + filePath); + ErrorsCode.BAD_REQUEST.throwException("Path is a directory, not a file"); + } + + logger.info("Updating file content: " + filePath); + Files.writeString(filePath, content); + + return Response.ok(new FSEntryResponse( + filePath.getFileName().toString(), + request.getRelativePath(), + false + )).build(); + + } catch (IOException e) { + logger.error("Failed to update file: " + e.getMessage()); + ErrorsCode.INTERNAL_ERROR.throwException("Failed to update file: " + e.getMessage()); + } + + logger.error("Unreachable code reached in updateFile method"); + throw new UnreacheableCodeException(); + } + + public Response moveFile(final UUID contextUserId, final UUID projectId, final MoveRequest request) { + ProjectModel contextProject = loadContextProject(contextUserId, projectId); + logger.info("Moving file from " + request.getSrc() + " to " + request.getDst() + " in project " + projectId); + + try { + if (request.getSrc() == null || request.getSrc().isEmpty() || + request.getDst() == null || request.getDst().isEmpty()) { + logger.error("Invalid path: source or destination is null or empty"); + ErrorsCode.BAD_REQUEST.throwException("Source and destination paths cannot be null or empty"); + } + + Path sourcePath = resolvePath(contextProject, request.getSrc()); + Path targetPath = resolvePath(contextProject, request.getDst()); + + logger.info("Moving file from " + request.getSrc() + " to " + request.getDst()); + if (!Files.exists(sourcePath)) { + logger.error("Move file failed: source file not found at " + sourcePath); + ErrorsCode.NOT_FOUND.throwException("Source file not found"); + } + + if (Files.isDirectory(sourcePath)) { + logger.error("Source path is a directory, not a file: " + sourcePath); + ErrorsCode.BAD_REQUEST.throwException("Source path is a directory, not a file"); + } + + if (Files.exists(targetPath)) { + logger.error("Target file already exists: " + targetPath); + ErrorsCode.CONFLICT.throwException("Target file already exists"); + } + + Files.createDirectories(targetPath.getParent()); + Files.move(sourcePath, targetPath); + + return Response.noContent().build(); + + } catch (IOException e) { + logger.error("Failed to move file: " + e.getMessage()); + ErrorsCode.INTERNAL_ERROR.throwException("Failed to move file: " + e.getMessage()); + } + + logger.error("Unreachable code reached in moveFile method"); + throw new UnreacheableCodeException(); + } + + public Response moveFolder(final UUID contextUserId, final UUID projectId, final MoveRequest request) { + ProjectModel contextProject = loadContextProject(contextUserId, projectId); + logger.info("Moving folder from " + request.getSrc() + " to " + request.getDst() + " in project " + projectId); + + try { + if (request.getSrc() == null || request.getSrc().isEmpty() || + request.getDst() == null || request.getDst().isEmpty()) { + logger.error("Invalid path: source or destination is null or empty"); + ErrorsCode.BAD_REQUEST.throwException("Source and destination paths cannot be null or empty"); + } + + Path sourcePath = resolvePath(contextProject, request.getSrc()); + Path targetPath = resolvePath(contextProject, request.getDst()); + + logger.info("Moving folder from " + request.getSrc() + " to " + request.getDst()); + if (!Files.exists(sourcePath)) { + logger.error("Source folder not found: " + sourcePath); + ErrorsCode.NOT_FOUND.throwException("Source folder not found"); + } + + if (!Files.isDirectory(sourcePath)) { + logger.error("Source path is not a directory: " + sourcePath); + ErrorsCode.BAD_REQUEST.throwException("Source path is not a directory"); + } + + if (Files.exists(targetPath)) { + logger.error("Target folder already exists: " + targetPath); + ErrorsCode.CONFLICT.throwException("Target folder already exists"); + } + + Files.createDirectories(targetPath.getParent()); + Files.move(sourcePath, targetPath); + + return Response.noContent().build(); + + } catch (IOException e) { + logger.error("Failed to move folder: " + e.getMessage()); + ErrorsCode.INTERNAL_ERROR.throwException("Failed to move folder: " + e.getMessage()); + } + + logger.error("Unreachable code reached in moveFolder method"); + throw new UnreacheableCodeException(); + } + + public Response uploadFile(final UUID contextUserId, final UUID projectId, String path, InputStream fileContent) { + ProjectModel contextProject = loadContextProject(contextUserId, projectId); + logger.info("Uploading file to " + projectId + "/" + path); + + try { + logger.info("Uploading file to path: " + path); + if (path == null || path.isEmpty()) { + logger.error("Upload failed: path is null or empty"); + ErrorsCode.BAD_REQUEST.throwException("Path cannot be null or empty"); + } + + Path filePath = resolvePath(contextProject, path); + + Files.createDirectories(filePath.getParent()); + + Files.copy(fileContent, filePath, StandardCopyOption.REPLACE_EXISTING); + + return Response.status(Response.Status.CREATED) + .entity(new FSEntryResponse( + filePath.getFileName().toString(), + path, + false + )).build(); + + } catch (IOException e) { + logger.error("Failed to upload file: " + e.getMessage()); + ErrorsCode.INTERNAL_ERROR.throwException("Failed to upload file: " + e.getMessage()); + } finally { + logger.info("Closing file content stream"); + try { + fileContent.close(); + } catch (IOException e) { + logger.error("Error closing file content stream: " + e.getMessage()); + ErrorsCode.INTERNAL_ERROR.throwException("Error happened while closing file: " + e.getMessage()); + } + } + + logger.error("Unreachable code reached in uploadFile method"); + throw new UnreacheableCodeException(); + } +} \ No newline at end of file diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/ProjectService.java b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/ProjectService.java new file mode 100644 index 0000000..b54ebfd --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/ProjectService.java @@ -0,0 +1,451 @@ +package fr.epita.assistants.ping.domain.service; + +import fr.epita.assistants.ping.api.responses.ProjectResponse; +import fr.epita.assistants.ping.converters.response.ProjectResponseConverter; +import fr.epita.assistants.ping.data.model.ProjectModel; +import fr.epita.assistants.ping.data.model.UserModel; +import fr.epita.assistants.ping.data.repository.ProjectRepository; +import fr.epita.assistants.ping.data.repository.UserRepository; +import fr.epita.assistants.ping.domain.entity.feature.FeatureExecution; +import fr.epita.assistants.ping.domain.executor.FeatureDispatcher; +import fr.epita.assistants.ping.errors.ErrorsCode; +import fr.epita.assistants.ping.errors.InvalidFeatureException; +import fr.epita.assistants.ping.utils.Logger; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.transaction.Transactional; +import org.eclipse.microprofile.config.inject.ConfigProperty; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.security.InvalidParameterException; +import java.util.*; + +@ApplicationScoped +public class ProjectService { + + @Inject + FeatureDispatcher featureDispatcher; + + @Inject + ProjectRepository projectRepository; + + @Inject + UserRepository userRepository; + + @Inject + UserService userService; + + @Inject + ProjectResponseConverter projectResponseConverter; + + @ConfigProperty(name = "PROJECT_DEFAULT_PATH", defaultValue = "/var/www/projects/") + String PROJECT_DEFAULT_PATH; + + @Inject + Logger logger; + + private boolean isIgnorableString(final String string) { + return string == null || string.isBlank(); + } + + public ProjectModel loadContextProject(final UUID contextProjectId, final UserModel contextUser) { + Optional contextProjectQuery = projectRepository.getProject(contextProjectId); + + if (contextProjectQuery.isEmpty()) { + logger.error("Tried to process query with an invalid project id : " + contextProjectId); + ErrorsCode.NOT_FOUND.throwException("Invalid project id"); + } + + final ProjectModel contextProject = contextProjectQuery.get(); + + if (!contextUser.getIsAdmin() && !contextProject.hasMember(contextUser)) { + logger.error( + "Tried to process query implying project " + contextProjectId + " with an user who is not " + + "part of said project: " + contextUser.getId() + ); + ErrorsCode.FORBIDDEN.throwException("User is not allowed to access project " + contextProjectId); + } + + return contextProject; + } + + /** + * List projects of current user + * + * @param onlyOwned show only owned projects (not member ones) + * @return 200 - A list of projects + */ + @Transactional + public List listProjectsOfUser(final UUID contextUuid, Boolean onlyOwned) { + final UserModel contextUser = userService.loadContextUser(contextUuid); + + boolean onlyowned_ = onlyOwned != null ? onlyOwned : false; + logger.info("Asking listProjectsOfUser : onlyOwned? " + onlyowned_); + + final List projects = onlyowned_ + ? projectRepository.getAllOwnedProjects(contextUser) + : new ArrayList<>(contextUser.getProjectMemberships()); + + return projectResponseConverter.convert(projects); + } + + /** + * Create a new project with a name + * + * @param projectName + * @return 200 - The created project + * @throws RuntimeException 400 - Project name is invalid + */ + @Transactional + public ProjectResponse createProject(final UUID contextUuid, String projectName) { + logger.info("Asking createProject"); + + final UserModel contextUser = userService.loadContextUser(contextUuid); + + if (projectName == null || projectName.isEmpty()) { + logger.error("Project name null or empty"); + ErrorsCode.BAD_REQUEST.throwException("The project name is invalid (null or empty for example)"); + } + + ProjectModel pm = projectRepository.createProject(contextUser,projectName); + logger.log("New project " + projectName + " created"); + + userRepository.joinProject(contextUuid, pm); + + try { + Files.createDirectories(Path.of(PROJECT_DEFAULT_PATH,pm.getId().toString())); + } catch (IOException e) { + logger.error("Le gros paf de projet ne peut ĂȘtre construit : "+Path.of(PROJECT_DEFAULT_PATH,pm.getId().toString())); + } + + return projectResponseConverter.convert(pm); + } + + /** + * List all projects + * + * @return 200 - list of projects + * @throws 403 - the user is not an admin + */ + @Transactional + public List listAllProjects() { + logger.info("Asking listAllProjects"); + return projectResponseConverter.convert(projectRepository.getAllProjects()); + } + + /** + * Update a project, changing at least name or owner + * + * @param projectId the current project id + * @param newProjectName the nullable new project name + * @param newProjectOwner the nullable new project owner + * @return 200 - the updated project + * @throws RuntimeException 400 - The name and owner are both null + * @throws RuntimeException 404 - Project with ID not found + */ + @Transactional + public ProjectResponse updateProject(final UUID contextUuid, String projectId, String newProjectName, String newProjectOwner) { + logger.info("Asking updateProject"); + final UserModel contextUser = userService.loadContextUser(contextUuid); + + if (newProjectName == null && newProjectOwner == null) { + logger.error("Both the name and the new owner are null"); + ErrorsCode.BAD_REQUEST.throwException("Both the name and the new owner are null"); + } + + Optional optProj = Optional.empty(); + try { + optProj = projectRepository.getProject(UUID.fromString(projectId)); + } catch (Exception e) { + logger.error("Project not found (Bad UUID), while updating project"); + ErrorsCode.NOT_FOUND.throwException("Project not found (Bad UUID), while updating project"); + } + if (optProj.isEmpty()) { + logger.error("Project not found, while updating project"); + ErrorsCode.NOT_FOUND.throwException("Project not found, while updating project"); + } + var proj = optProj.get(); + + if (!contextUser.getIsAdmin() && !proj.getOwner().getId().toString().equals(contextUuid.toString())) { + logger.error("The user isn't admin nor owner"); + ErrorsCode.FORBIDDEN.throwException("The user isn't admin nor owner. (owner:" + proj.getOwner().getId() + ",user:" + contextUuid + ")"); + } + if (newProjectOwner != null && !newProjectOwner.equals(proj.getOwner().toString())) { + Optional optNewOwner = Optional.empty(); + try { + optNewOwner = userRepository.getUser(UUID.fromString(newProjectOwner)); + } catch (Exception e) { + logger.error("New owner not found (Bad UUID), while updating project"); + ErrorsCode.NOT_FOUND.throwException("New owner not found (Bad UUID), while updating project"); + } + + if(optNewOwner.isEmpty()) + { + logger.error("New owner not found, while updating project"); + ErrorsCode.NOT_FOUND.throwException("New owner not found, while updating project"); + } + + optNewOwner.ifPresent(u -> { + if(proj.getMembers().stream().noneMatch(pm -> u.getId().equals(pm.getId()))) + { + logger.error("The new owner isn't member of project, while updating project"); + ErrorsCode.NOT_FOUND.throwException("The new owner isn't member of project, while updating project"); + } + proj.setOwner(u); + }); + } + if (newProjectName != null) + proj.setName(newProjectName); + + projectRepository.persist(proj); + logger.info("Updating project !"); + return projectResponseConverter.convert(proj); + } + + /** + * Get a project + * + * @param contextUuid + * @param projectId UUID of the project + * @return 200 - The project + * @throws RuntimeException 404 - Project not found + */ + @Transactional + public ProjectResponse getProject(UUID contextUuid, String projectId) { + logger.info("Aking getProject"); + Optional optProj = Optional.empty(); + try { + optProj = projectRepository.getProject(UUID.fromString(projectId)); + } catch (Exception e) { + logger.error("Project " + projectId + " not found (not an UUID)"); + ErrorsCode.NOT_FOUND.throwException("Project " + projectId + " not found (not an UUID)"); + } + if (optProj.isEmpty()) { + logger.error("Project " + projectId + " not found"); + ErrorsCode.NOT_FOUND.throwException("Project " + projectId + " not found"); + } + var proj = optProj.get(); + + final UserModel contextUser = userService.loadContextUser(contextUuid); + if (!contextUser.getIsAdmin() && proj.getMembers().stream().noneMatch(m -> m.getId() == contextUser.getId())) { + logger.error("The user is not allowed to access the project"); + ErrorsCode.FORBIDDEN.throwException("The user is not allowed to access the project"); + } + logger.info("Got project !"); + return projectResponseConverter.convert(proj); + } + + /** + * Deletes a projet, if the user is owner or admin + * + * @param contextUuid + * @param projectId the UUID of the project + * @throws RuntimeException 404 - Project not found + */ + @Transactional + public void deleteProject(UUID contextUuid, String projectId) { + logger.info("Asking deleteProject"); + Optional optProj = Optional.empty(); + try { + optProj = projectRepository.getProject(UUID.fromString(projectId)); + } catch (Exception e) { + logger.error("Project " + projectId + " not found (not an UUID)"); + ErrorsCode.NOT_FOUND.throwException("Project " + projectId + " not found (not an UUID)"); + } + if (optProj.isEmpty()) { + logger.error("Project " + projectId + " not found"); + ErrorsCode.NOT_FOUND.throwException("Project " + projectId + " not found"); + } + var proj = optProj.get(); + + final UserModel contextUser = userService.loadContextUser(contextUuid); + if (!contextUser.getIsAdmin() && !proj.getOwner().getId().toString().equals(contextUuid.toString())) { + logger.error("The user isn't admin nor owner"); + ErrorsCode.FORBIDDEN.throwException("The user isn't admin nor owner. (owner:" + proj.getOwner().getId() + ",user:" + contextUuid + ")"); + } + + try { + Files.delete(Path.of(PROJECT_DEFAULT_PATH,proj.getId().toString())); + } catch (IOException e) { + logger.error( + "Le gros paf de projet ne peut ĂȘtre dĂ©truit : " + + Path.of(PROJECT_DEFAULT_PATH,proj.getId().toString()) + + ", raison: " + e.getMessage() + ); + ErrorsCode.INTERNAL_ERROR.throwException( + "Le gros paf de projet " + projectId + "ne peut ĂȘtre dĂ©truit. Raison : " + + e.getMessage() + ); + } + + projectRepository.deleteProject(proj.getId()); + logger.error("Kaboom deleted project"); + } + + /** + * Add a user as a project member. + * + * @param contextUuid + * @param projectId the UUID of project + * @param userId the UUID of user + * @throws RuntimeException 404 - User or project not found + * @throws RuntimeException 400 - userId is empty or null + * @throws RuntimeException 409 - The user is already a member + */ + @Transactional + public void addMember(UUID contextUuid, String projectId, String userId) { + logger.info("Asking addMember"); + Optional optProj = Optional.empty(); + try { + optProj = projectRepository.getProject(UUID.fromString(projectId)); + } catch (Exception e) { + logger.error("Project " + projectId + " not found (not an UUID)"); + ErrorsCode.NOT_FOUND.throwException("Project " + projectId + " not found (not an UUID)"); + } + + if (optProj.isEmpty()) { + logger.error("Project " + projectId + " not found"); + ErrorsCode.NOT_FOUND.throwException("Project " + projectId + " not found"); + } + ProjectModel proj = optProj.get(); + + if (userId == null || userId.isEmpty()) { + logger.error("The userId is invalid (null or empty for example)"); + ErrorsCode.BAD_REQUEST.throwException("The userId is invalid (null or empty for example)"); + } + + Optional optUser = Optional.empty(); + try { + optUser = userRepository.getUser(UUID.fromString(userId)); + } catch (Exception e) { + logger.error("User " + userId + " not found (not an UUID)"); + ErrorsCode.NOT_FOUND.throwException("User " + userId + " not found (not an UUID)"); + } + + if (optUser.isEmpty()) { + logger.error("User " + userId + " not found"); + ErrorsCode.NOT_FOUND.throwException("User " + userId + " not found"); + } + var user = optUser.get(); + + if (proj.getMembers().stream().map(UserModel::getLogin).anyMatch(login -> login.equals(user.getLogin()))) { + logger.error("The user is already a member of the project"); + ErrorsCode.CONFLICT.throwException("The user is already a member of the project"); + } + final UserModel contextUser = userService.loadContextUser(contextUuid); + if (!contextUser.getIsAdmin() && proj.getMembers().stream().noneMatch(m -> m.getId() == contextUser.getId())) { + logger.error("The user is not allowed to access the project"); + ErrorsCode.FORBIDDEN.throwException("The user is not allowed to access the project"); + } + projectRepository.addMember(proj.getId(),user); + logger.info("Welcome to the crew member !"); + } + + /** + * Execute a feature on the project. + * + * @param contextUuid + * @param projectId project UUID + * @param feature + * @param command + * @param params + * @throws RuntimeException 400 - feature is null or command is null + * @throws RuntimeException 404 - Project not found + */ + public void execute(final UUID contextUuid, final UUID projectId, String feature, String command, List params) { + final UserModel contextUser = userService.loadContextUser(contextUuid); + final ProjectModel contextProject = loadContextProject(projectId, contextUser); + + if (isIgnorableString(feature)) { + logger.error("Attempted command execution with an empty feature"); + ErrorsCode.BAD_REQUEST.throwException("Attempted command execution with an empty feature"); + } + + if (isIgnorableString(command)) { + logger.error("Attempted command execution with an empty command"); + ErrorsCode.BAD_REQUEST.throwException("Attempted command execution with an empty command"); + } + + logger.info( + "Attempting command using feature " + feature + " on project " + projectId + ": " + command + + " with params " + String.join(" ", params) + ); + + try { + File commandSource = Path.of(contextProject.getPath()).toFile(); + FeatureExecution commandInstructions = new FeatureExecution(feature, command, params); + + featureDispatcher.execute(commandSource, commandInstructions); + } catch (InvalidFeatureException e) { + logger.error("Caught an InvalidFeatureException: " + e.getMessage()); + ErrorsCode.NOT_FOUND.throwException("Feature " + feature + " does not lead to any existing feature"); + } catch (InvalidParameterException e) { + logger.error("Caught an InvalidParameterException: " + e.getMessage()); + ErrorsCode.BAD_REQUEST.throwException("Invalid argument: " + e.getMessage()); + } catch (RuntimeException e) { + logger.error("Caught a RuntimeException: " + e.getMessage()); + ErrorsCode.INTERNAL_ERROR.throwException("Failed to run command: " + e.getMessage()); + } + } + + @Transactional + public void removeMember(UUID contextUuid, String projectId, String userId) { + logger.info("Asking removeMember"); + Optional optProj = Optional.empty(); + try { + optProj = projectRepository.getProject(UUID.fromString(projectId)); + } catch (Exception e) { + logger.error("Project " + projectId + " not found (not an UUID)"); + ErrorsCode.NOT_FOUND.throwException("Project " + projectId + " not found (not an UUID)"); + } + + if (optProj.isEmpty()) { + logger.error("Project " + projectId + " not found"); + ErrorsCode.NOT_FOUND.throwException("Project " + projectId + " not found"); + } + ProjectModel proj = optProj.get(); + + if (userId == null || userId.isEmpty()) { + logger.error("The userId is invalid (null or empty for example)"); + ErrorsCode.BAD_REQUEST.throwException("The userId is invalid (null or empty for example)"); + } + final UserModel contextUser = userService.loadContextUser(contextUuid); + if (!contextUser.getIsAdmin() && !proj.getOwner().getId().toString().equals(contextUuid.toString())) { + logger.error("The user isn't admin nor owner"); + ErrorsCode.FORBIDDEN.throwException("The user isn't admin nor owner. (owner:" + proj.getOwner().getId() + ",user:" + contextUuid + ")"); + } + + Optional optUser = Optional.empty(); + try { + optUser = userRepository.getUser(UUID.fromString(userId)); + } catch (Exception e) { + logger.error("The userId is invalid (not an UUID)"); + ErrorsCode.NOT_FOUND.throwException("The userId is invalid (not an UUID)"); + } + + if (optUser.isEmpty()) { + logger.error("The userId is invalid"); + ErrorsCode.NOT_FOUND.throwException("The userId is invalid"); + } + var user = optUser.get(); + + if (proj.getMembers().stream().map(UserModel::getLogin).noneMatch(login -> login.equals(user.getLogin()))) { + logger.error("The user is not a member of the project"); + ErrorsCode.FORBIDDEN.throwException("The user is not a member of the project"); + } + + if(proj.getOwner().getId().toString().equals(user.getId().toString())) + { + logger.error("An owner can't remove himself from his project"); + ErrorsCode.FORBIDDEN.throwException("An owner can't remove himself from his project"); + } + + userRepository.leaveProject(user.getId(),proj); + projectRepository.removeMember(proj.getId(),user); + + logger.info("Farewell, bro"); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/TransactionService.java b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/TransactionService.java new file mode 100644 index 0000000..69192cb --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/TransactionService.java @@ -0,0 +1,119 @@ +package fr.epita.assistants.ping.domain.service; + +import fr.epita.assistants.ping.data.model.TransactionModel; +import fr.epita.assistants.ping.data.model.UserModel; +import fr.epita.assistants.ping.data.repository.TransactionRepository; +import fr.epita.assistants.ping.domain.entity.TransactionCreationEntity; +import fr.epita.assistants.ping.domain.entity.TransactionUpdateEntity; +import fr.epita.assistants.ping.errors.ErrorsCode; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.transaction.Transactional; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +@ApplicationScoped +public class TransactionService { + + @Inject + UserService userService; + + @Inject + TransactionRepository transactionRepository; + + private TransactionModel retrieveTransaction(final UUID transactionId) { + final Optional transaction = transactionRepository.findByIdOptional(transactionId); + + if (transaction.isEmpty()) { + ErrorsCode.NOT_FOUND.throwException("transaction does not exist"); + } + + return transaction.get(); + } + + private float computeEcoScore(final TransactionModel transaction) { + /** + * On considere qu'une transaction peut consommer aux alentours de 2g + * de COÂČ enempreinte carbone. + * On considere aussi que la somme de la transaction a aussi un impact + * minime. + * Sources : daf-mag.fr, delubac.com + */ + return 1.0F + (float) (Math.random() * 2) + transaction.getAmount() * 0.000005F; + } + + public Float getAverageEcoScore(final UUID contextUserId) { + return (float) (getAllTransactions(contextUserId) + .stream() + .mapToDouble(transaction -> transaction.getEcoScore().doubleValue()) + .average() + .orElse(0)); + } + + public List getAllTransactions(final UUID contextUserId) { + userService.loadContextUser(contextUserId); + return transactionRepository.listAll(); + } + + public TransactionModel getTransaction(final UUID contextUserId, final UUID transactionId) { + userService.loadContextUser(contextUserId); + return retrieveTransaction(transactionId); + } + + @Transactional + public TransactionModel createTransaction(final UUID contextUserId, final TransactionCreationEntity request) { + final UserModel contextUser = userService.loadContextUser(contextUserId); + + final TransactionModel newTransaction = new TransactionModel() + .withLabel(request.label()) + .withAmount(request.amount()) + .withCurrency(request.currency()) + .withReceiverLabel(request.receiver_label()) + .withReceiverIban(request.receiver_iban()) + .withCreationUser(contextUser); + + final float transactionEcoScore = computeEcoScore(newTransaction); + + newTransaction.setEcoScore(transactionEcoScore); + + newTransaction.persist(); + + return newTransaction; + } + + @Transactional + public TransactionModel updateTransaction(final UUID contextUserId, final UUID updatedTransactionId, + final TransactionUpdateEntity request) { + userService.loadContextUser(contextUserId); + final TransactionModel transaction = retrieveTransaction(updatedTransactionId); + final float transactionEcoScore = computeEcoScore(transaction); + + transaction.setAmount(request.amount()); + transaction.setLabel(request.label()); + transaction.setCurrency(request.currency()); + transaction.setReceiverLabel(request.receiverLabel()); + transaction.setReceiverIban(request.receiverIban()); + transaction.setOperationDate(request.operationDate()); + + transaction.setEcoScore(transactionEcoScore); + transaction.setUpdateTimestamp(LocalDateTime.now()); + + transaction.persist(); + + return transaction; + } + + @Transactional + public TransactionModel deleteTransaction(final UUID contextUserId, final UUID deletedTransactionId) { + userService.loadContextUser(contextUserId); + + final TransactionModel transaction = retrieveTransaction(deletedTransactionId); + + transactionRepository.deleteById(deletedTransactionId); + + return transaction; + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/UserService.java b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/UserService.java new file mode 100644 index 0000000..42be213 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/domain/service/UserService.java @@ -0,0 +1,280 @@ +package fr.epita.assistants.ping.domain.service; + +import fr.epita.assistants.ping.data.model.UserModel; +import fr.epita.assistants.ping.data.repository.ProjectRepository; +import fr.epita.assistants.ping.data.repository.UserRepository; +import fr.epita.assistants.ping.domain.entity.UserCreationEntity; +import fr.epita.assistants.ping.domain.entity.UserUpdateEntity; +import fr.epita.assistants.ping.errors.ErrorsCode; +import fr.epita.assistants.ping.utils.Logger; +import fr.epita.assistants.ping.utils.TokenFactory; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.transaction.Transactional; +import jakarta.ws.rs.WebApplicationException; +import org.apache.maven.surefire.shared.lang3.StringUtils; + +import java.util.*; + + +@ApplicationScoped +public class UserService { + + private class UserCreationValidator { + + private void validateUserLoginValid(final String login) throws WebApplicationException { + if (login == null) { + logger.error("Attempted to create a new user with an empty login"); + ErrorsCode.BAD_REQUEST.throwException("Username should not be empty or null"); + } + + int totalDots = StringUtils.countMatches(login, '.'); + int totalDashes = StringUtils.countMatches(login, '_'); + + if (totalDots + totalDashes != 1) { + logger.error("Attempted to create a new user with an invalid login: " + login); + ErrorsCode.BAD_REQUEST.throwException("Login must only have at most a dot or a dash"); + } + } + + private void validateUserLoginExistence(final String login) throws WebApplicationException { + if (userRepository.getUser(login).isPresent()) { + logger.error("Attempted to create a new user with an already existing login: " + login); + ErrorsCode.CONFLICT.throwException("User with login " + login + " already exists"); + } + } + + private void validateUserPasswordValid(final String password) throws WebApplicationException { + if (password == null) { + logger.error("Attempted to create a new user with an empty password"); + ErrorsCode.BAD_REQUEST.throwException("Password should not be empty or null"); + } + } + + public void validate(final UserCreationEntity request) throws WebApplicationException { + validateUserLoginValid(request.login()); + validateUserPasswordValid(request.password()); + validateUserLoginExistence(request.login()); + } + } + + UserCreationValidator userCreationValidator = new UserCreationValidator(); + + @Inject + Logger logger; + + @Inject + TokenFactory tokenFactory; + + @Inject + UserRepository userRepository; + + @Inject + ProjectRepository projectRepository; + + private boolean isIgnorableString(final String string) { + return string == null || string.isBlank(); + } + + private String generateDefaultName(final String login) { + final String clean_login = login + .replace('.', ' ') + .replace('_', ' '); + + if (Objects.equals(clean_login, login)) { + return login; + } + + final StringBuilder builder = new StringBuilder(); + + for (String word : clean_login.split(" ")) { + builder.append(StringUtils.capitalize(word)); + builder.append(' '); + } + + final String name = builder.toString(); + + return name.substring(0, name.length() - 1); + } + + public UserModel loadContextUser(final UUID userId) throws WebApplicationException { + final Optional user = userRepository.getUser(userId); + + if (user.isEmpty()) { + logger.error("Usage of JWT carrying an invalid user detected. UserId : " + userId); + + ErrorsCode.UNAUTHORIZED.throwException( + "Session JWT lead to an user who does not exist. You may need to login again." + ); + } + + return user.get(); + } + + public String login(final String username, final String password) throws WebApplicationException { + if (isIgnorableString(username)) { + logger.error("Connection attempted with an empty username"); + ErrorsCode.BAD_REQUEST.throwException("Username field is empty or null"); + } + if (isIgnorableString(password)) { + logger.error("Connection attempted with an empty password"); + ErrorsCode.BAD_REQUEST.throwException("Password field is empty or null"); + } + + logger.debug("Attempting a login as " + username); + + final Optional user_query = userRepository.getUser(username); + + if (user_query.isEmpty()) { + logger.error("Connection attempted with a non-existant user: " + username); + + ErrorsCode.UNAUTHORIZED.throwException("User does not exist"); + } + + final UserModel user = user_query.get(); + + if (!Objects.equals(user.getPassword(), password)) { + logger.error("Failed connection for username " + username); + + ErrorsCode.UNAUTHORIZED.throwException("Password is incorrect"); + } + + logger.debug("Logging " + " succeeded as " + user); + + String token = tokenFactory.generateLoginToken(user); + + logger.info("Created token " + token); + + return token; + } + + public String refreshToken(final UUID contextUserUuid) { + final UserModel contextUser = loadContextUser(contextUserUuid); + + final String token = tokenFactory.generateLoginToken(contextUser); + + logger.info("Refreshed token for user " + contextUserUuid + " with a new one: " + token); + + return token; + } + + public List getAllUsers() { + List users = userRepository.getAllUsers(); + + logger.debug("GetAllUsers query returned the following list : [\n"); + + users.forEach((user) -> logger.debug(user + ",\n")); + + logger.debug("]"); + + return users; + } + + public UserModel getUser(final UUID contextUserId, final UUID searchedUserId) throws WebApplicationException { + logger.debug("Attempting to retrieve user " + searchedUserId + " as " + contextUserId); + + final UserModel contextUser = loadContextUser(contextUserId); + final Optional userSearch = userRepository.getUser(searchedUserId); + + if (userSearch.isEmpty()) { + logger.error("Query to user " + searchedUserId + " leaded to a failing outcome"); + ErrorsCode.NOT_FOUND.throwException("User does not exist"); + } + + final UserModel user = userSearch.get(); + final boolean canAccess = contextUser.getIsAdmin() + || contextUser.getId().compareTo(user.getId()) == 0; + + if (!canAccess) { + logger.error( + "Query about user " + searchedUserId + " failed because user " + contextUserId + + " is not allowed to read their information." + ); + + ErrorsCode.FORBIDDEN.throwException( + "Only admins can read information from different users than the current one" + ); + } + + logger.debug("Returning information about user : " + user); + + return user; + } + + @Transactional + public UserModel createUser(final UUID contextUserId, final UserCreationEntity request) + throws WebApplicationException { + userCreationValidator.validate(request); + + final String defaultName = generateDefaultName(request.login()); + + final UserModel new_user = userRepository.createUser( + defaultName, + request.isAdmin(), + null, + request.login(), + request.password() + ); + + logger.info( + "Successfully created user as " + contextUserId + " with parameters " + + "id : " + new_user.getId() + ", " + + "login: " + request.login() + ", " + + "defaultName: " + defaultName + ", " + + "isAdmin: " + request.isAdmin() + ); + + return new_user; + } + + @Transactional + public UserModel updateUser(final UUID contextUserId, + final UUID subjectUserId, + final UserUpdateEntity updateUserRequest) throws WebApplicationException { + final UserModel safe_user = getUser(contextUserId, subjectUserId); + final UUID safe_id = safe_user.getId(); + + logger.info( + "Updating new user with the following information : " + + "avatar: " + updateUserRequest.avatar() + ", " + + "displayName: " + updateUserRequest.displayName() + ", " + + "is password changed ? " + isIgnorableString(updateUserRequest.avatar()) + ); + + final String newAvatar = isIgnorableString(updateUserRequest.avatar()) + ? null + : updateUserRequest.avatar(); + + userRepository.updateAvatar(safe_id, newAvatar); + safe_user.setAvatar(newAvatar); + + if (!isIgnorableString(updateUserRequest.displayName())) { + userRepository.updateDisplayName(safe_id, updateUserRequest.displayName()); + safe_user.setDisplayName(updateUserRequest.displayName()); + } + + if (!isIgnorableString(updateUserRequest.password())) { + userRepository.updatePassword(safe_id, updateUserRequest.password()); + safe_user.setPassword(updateUserRequest.password()); + } + + return safe_user; + } + + @Transactional + public UserModel deleteUser(final UUID contextUserId, final UUID subjectUserId) throws WebApplicationException { + final UserModel user = getUser(contextUserId, subjectUserId); + + logger.info("Deleting user " + subjectUserId + " as user " + contextUserId); + + if (!projectRepository.getAllOwnedProjects(user).isEmpty()) { + logger.error("User deletion for user " + subjectUserId + " because user has existing projects"); + + ErrorsCode.UNAUTHORIZED.throwException("A user cannot be removed if they still own projects"); + } + + userRepository.deleteUser(user.getId()); + + return user; + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/errors/ErrorsCode.java b/ping/ping/src/main/java/fr/epita/assistants/ping/errors/ErrorsCode.java new file mode 100644 index 0000000..cf0f8da --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/errors/ErrorsCode.java @@ -0,0 +1,36 @@ +package fr.epita.assistants.ping.errors; + +import fr.epita.assistants.ping.utils.HttpError; +import fr.epita.assistants.ping.utils.IHttpError; +import jakarta.ws.rs.core.Response.Status; +import lombok.Getter; + + +@Getter +public enum ErrorsCode implements IHttpError { + EXAMPLE_ERROR(Status.BAD_REQUEST, "Example error: %s"), + BAD_REQUEST(Status.BAD_REQUEST, "Bad request: %s"), + UNAUTHORIZED(Status.UNAUTHORIZED, "Unauthorized: %s"), + FORBIDDEN(Status.FORBIDDEN, "Forbidden: %s"), + NOT_FOUND(Status.NOT_FOUND, "Not found: %s"), + CONFLICT(Status.CONFLICT, "Conflict: %s"), + INTERNAL_ERROR(Status.INTERNAL_SERVER_ERROR, "Internal server error: %s"), + NOT_IMPLEMENTED(Status.NOT_IMPLEMENTED, "Not implemented") + ; + + private final HttpError error; + + ErrorsCode(Status status, String message) { + error = new HttpError(status, message); + } + + @Override + public RuntimeException get(Object... args) { + return error.get(args); + } + + @Override + public void throwException(Object... args) { + throw error.get(args); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/errors/InvalidCommandException.java b/ping/ping/src/main/java/fr/epita/assistants/ping/errors/InvalidCommandException.java new file mode 100644 index 0000000..ad5abe7 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/errors/InvalidCommandException.java @@ -0,0 +1,11 @@ +package fr.epita.assistants.ping.errors; + +import fr.epita.assistants.ping.domain.executor.FeatureExecutor; + +import java.security.InvalidParameterException; + +public class InvalidCommandException extends InvalidParameterException { + public InvalidCommandException(FeatureExecutor feature, String command) { + super("Invalid " + feature.name() + " command: " + command); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/errors/InvalidFeatureException.java b/ping/ping/src/main/java/fr/epita/assistants/ping/errors/InvalidFeatureException.java new file mode 100644 index 0000000..37a594c --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/errors/InvalidFeatureException.java @@ -0,0 +1,9 @@ +package fr.epita.assistants.ping.errors; + +import java.security.InvalidParameterException; + +public class InvalidFeatureException extends InvalidParameterException { + public InvalidFeatureException(final String feature) { + super("Invalid feature name: " + feature); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/errors/PingServiceError.java b/ping/ping/src/main/java/fr/epita/assistants/ping/errors/PingServiceError.java new file mode 100644 index 0000000..4a6cf6a --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/errors/PingServiceError.java @@ -0,0 +1,25 @@ +package fr.epita.assistants.ping.errors; + +import lombok.Getter; + +@Getter +public class PingServiceError extends RuntimeException { + private final Integer code; + private final String message; + + public PingServiceError(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public String toJSON() + { + return "{\"error\":"+code+",\"message\":\""+message+"\"}"; + } + + @Override + public String toString() { + return toJSON(); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/errors/UnreacheableCodeException.java b/ping/ping/src/main/java/fr/epita/assistants/ping/errors/UnreacheableCodeException.java new file mode 100644 index 0000000..eb7c1e8 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/errors/UnreacheableCodeException.java @@ -0,0 +1,7 @@ +package fr.epita.assistants.ping.errors; + +public class UnreacheableCodeException extends RuntimeException { + public UnreacheableCodeException() { + super("Unreacheable code reached during execution"); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/DebugResource.java b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/DebugResource.java new file mode 100644 index 0000000..9b9ffd9 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/DebugResource.java @@ -0,0 +1,64 @@ +package fr.epita.assistants.ping.presentation.rest; + +import fr.epita.assistants.ping.data.repository.UserRepository; +import jakarta.inject.Inject; +import jakarta.transaction.Transactional; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + +import javax.sql.DataSource; +import java.sql.Connection; + +@Path("/api") +public class DebugResource { + + @Inject + DataSource dataSource; + @Inject + UserRepository userRepository; + + // c bo l'html dans les commentaires :) + /** + *

+ * GET /dbstatus
+ * Returns 200 {"status":"OK"} if connected to DB
+ * Otherwise 400 {"status":"KO","reason":"brr brr patapim (raison de l'erreur)"} + *

+ */ + @GET + @Path("/dbstatus") + @Produces(MediaType.APPLICATION_JSON) + public Response dbStatus() { + try (Connection conn = dataSource.getConnection()) { + if (conn.isValid(2)) { + return Response.ok("{\"status\":\"OK\"}").build(); + } else { + return Response.status(400).entity("{\"status\":\"KO\",\"reason\":\"Connection not valid\"}").build(); + } + } catch(Exception e) { + return Response.status(400).entity("{\"status\":\"KO\",\"reason\":\"" + e.getMessage() + "\"}").build(); + } + } + + @GET + @Path("/dbdebuguser") + @Produces(MediaType.APPLICATION_JSON) + @Transactional + public Response dbDebugUser() { + try { + if(userRepository.getUser("admin").isPresent() && userRepository.getUser("brrbrr").isPresent()) + return Response.ok("{\"created\":false}").build(); + var u1 = userRepository.createUser("admin",true,"/img/default-avatar.png","admin","admin"); + var u2 = userRepository.createUser("brrbrr",false,"/img/default-avatar.png","brrbrr","brrbrr"); + userRepository.persist(u1); + userRepository.persist(u2); + return Response.ok("{\"created\":true}").build(); + } catch (Exception e){ + return Response.status(409).entity("{\"error\":true}").build(); + } + + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/HelloWorldResource.java b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/HelloWorldResource.java new file mode 100644 index 0000000..7dc29dc --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/HelloWorldResource.java @@ -0,0 +1,27 @@ +package fr.epita.assistants.ping.presentation.rest; + +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; + +import static fr.epita.assistants.ping.errors.ErrorsCode.EXAMPLE_ERROR; + +@Path("/api") +public class HelloWorldResource { + + @GET + @Path("/hello") + @Produces(MediaType.TEXT_PLAIN) + public Response helloWorld() { + return Response.ok("Hello World !").build(); + } + + @GET + @Path("/error") + @Produces(MediaType.APPLICATION_JSON) + public Response error() { + EXAMPLE_ERROR.throwException("This is an error"); + // This line will never be reached + return Response.noContent().build(); + } +} \ No newline at end of file diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/TransactionResource.java b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/TransactionResource.java new file mode 100644 index 0000000..1cde188 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/TransactionResource.java @@ -0,0 +1,115 @@ +package fr.epita.assistants.ping.presentation.rest; + +import fr.epita.assistants.ping.api.requests.NewTransactionRequest; +import fr.epita.assistants.ping.api.requests.UpdateTransactionRequest; +import fr.epita.assistants.ping.api.responses.EcoScoreResponse; +import fr.epita.assistants.ping.api.responses.TransactionResponse; +import fr.epita.assistants.ping.api.responses.TransactionsResponse; +import fr.epita.assistants.ping.converters.request.TransactionCreationEntityConverter; +import fr.epita.assistants.ping.converters.request.TransactionUpdateEntityConverter; +import fr.epita.assistants.ping.converters.response.TransactionResponseConverter; +import fr.epita.assistants.ping.domain.service.TransactionService; +import fr.epita.assistants.ping.errors.ErrorsCode; +import io.quarkus.security.Authenticated; +import jakarta.inject.Inject; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.Response; +import org.eclipse.microprofile.jwt.JsonWebToken; + +import java.util.UUID; + +@Path("/api/transactions") +@Authenticated +public class TransactionResource { + + @Inject + JsonWebToken jwt; + + @Inject + TransactionCreationEntityConverter transactionCreationEntityConverter; + + @Inject + TransactionUpdateEntityConverter transactionUpdateEntityConverter; + + @Inject + TransactionResponseConverter transactionResponseConverter; + + @Inject + TransactionService transactionService; + + @GET + public TransactionsResponse getAllTransactions() { + return new TransactionsResponse( + transactionResponseConverter.convert( + transactionService.getAllTransactions(UUID.fromString(jwt.getSubject())) + ) + ); + } + + @POST + public Response createNewTransaction(final NewTransactionRequest request) { + try { + return Response.status(201).entity(transactionResponseConverter.convert( + transactionService.createTransaction( + UUID.fromString(jwt.getSubject()), + transactionCreationEntityConverter.convert(request) + ) + )).build(); + } catch (IllegalArgumentException e) { + ErrorsCode.BAD_REQUEST.throwException("Currency is invalid"); + } + + return null; + } + + @Path("eco-score") + @GET + public EcoScoreResponse getTransactionsEcoScore() { + return new EcoScoreResponse( + transactionService.getAverageEcoScore( + UUID.fromString(jwt.getSubject()) + ) + ); + } + + @Path("{id}") + @GET + public TransactionResponse getTransaction(@PathParam("id") final UUID id) { + return transactionResponseConverter.convert( + transactionService.getTransaction( + UUID.fromString(jwt.getSubject()), + id + ) + ); + } + + @Path("{id}") + @PUT + public TransactionResponse updateTransaction(@PathParam("id") final UUID id, + final UpdateTransactionRequest request) { + try { + return transactionResponseConverter.convert( + transactionService.updateTransaction( + UUID.fromString(jwt.getSubject()), + id, + transactionUpdateEntityConverter.convert(request) + ) + ); + } catch (IllegalArgumentException e) { + ErrorsCode.BAD_REQUEST.throwException("Currency is invalid"); + } + + return null; + } + + @Path("{id}") + @DELETE + public TransactionResponse deleteTransaction(@PathParam("id") final UUID id) { + return transactionResponseConverter.convert( + transactionService.deleteTransaction( + UUID.fromString(jwt.getSubject()), + id + ) + ); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/UtilsResource.java b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/UtilsResource.java new file mode 100644 index 0000000..1661b96 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/UtilsResource.java @@ -0,0 +1,19 @@ +package fr.epita.assistants.ping.presentation.rest; + +import fr.epita.assistants.ping.api.responses.EcoScoreResponse; +import fr.epita.assistants.ping.errors.ErrorsCode; +import io.quarkus.security.Authenticated; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; + +@Path("/api") +public class UtilsResource { + + @Path("/eco-score") + @GET + @Authenticated + public EcoScoreResponse getGlobalEcoScore() { + ErrorsCode.NOT_IMPLEMENTED.throwException(); + return null; + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/fileSystemEndpoints/FileResource.java b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/fileSystemEndpoints/FileResource.java new file mode 100644 index 0000000..a278b2b --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/fileSystemEndpoints/FileResource.java @@ -0,0 +1,108 @@ +package fr.epita.assistants.ping.presentation.rest.fileSystemEndpoints; + +import fr.epita.assistants.ping.domain.service.FileSystemService; + +import fr.epita.assistants.ping.api.requests.MoveRequest; +import fr.epita.assistants.ping.api.requests.PathRequest; +import fr.epita.assistants.ping.utils.Logger; +import io.quarkus.security.Authenticated; +import io.smallrye.jwt.util.ResourceUtils; +import jakarta.annotation.security.RolesAllowed; +import jakarta.inject.Inject; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.SecurityContext; +import org.eclipse.microprofile.jwt.JsonWebToken; + +import java.io.InputStream; +import java.util.UUID; + +@Path("/api/projects") +public class FileResource +{ + @Inject + JsonWebToken jwt; + + @Inject + FileSystemService fileSystemService; + + @Inject + Logger logger; + + // Seuls les membres du projet et les admins y ont access + // Quand on renvoit du octet stream: + @GET + @Path("/{projectId}/files") + @Authenticated + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response getFile(@Context SecurityContext ctx, + @PathParam("projectId") final UUID id, + @QueryParam("path") String path) + { + //return Response.ok("Some stuff that is in the file").build(); + logger.log("Entering endpoint 'getFile' with parameters: | ctx: " + ctx.toString() + " | (Path)projectId: " + id.toString() + " | (Query)path: " + path); + return fileSystemService.readFile(UUID.fromString(jwt.getSubject()), id, new PathRequest(path)); + } + + // Seuls les membres du projet et les admins y ont access + @DELETE + @Path("/{projectId}/files") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response deleteFile(@Context SecurityContext ctx, + @PathParam("projectId") final UUID id, + PathRequest path) + { + //return Response.ok().build(); + logger.log("Entering endpoint 'deleteFile' with parameters: | ctx: " + ctx.toString() + " | (Path)projectId: " + id.toString() + " | path: " + path.toString()); + return fileSystemService.deleteFile(UUID.fromString(jwt.getSubject()), id, path); + } + + // Seuls les membres du projet et les admins y ont access + @POST + @Path("/{projectId}/files") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response createFile(@Context SecurityContext ctx, + @PathParam("projectId") final UUID id, + PathRequest path) + { + //return Response.ok().build(); + logger.log("Entering endpoint 'createFile' with parameters: | ctx: " + ctx.toString() + " | (Path)projectId: " + id.toString() + " | path: " + path.toString()); + return fileSystemService.createFile(UUID.fromString(jwt.getSubject()), id, path); + } + + // Seuls les membres du projet et les admins y ont access + @PUT + @Path("/{projectId}/files/move") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response moveFile(@Context SecurityContext ctx, + @PathParam("projectId") final UUID id, + MoveRequest request) + { + //return Response.ok().build(); + logger.log("Entering endpoint 'moveFile' with parameters: | ctx: " + ctx.toString() + " | (Path)projectId: " + id.toString() + " | request: " + request.toString()); + return fileSystemService.moveFile(UUID.fromString(jwt.getSubject()), id, request); + } + + // Seuls les membres du projet et les admins y ont access + // Probleme, beaucoup de sources semblent dire que consommer de l'application octet stream + // Necessite de lire/utiliser une variable speciale + // Aucune idee de ce que c'est ou comment ca marche + @POST + @Path("/{projectId}/files/upload") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + @Consumes(MediaType.APPLICATION_OCTET_STREAM) + public Response uploadFile(@Context SecurityContext ctx, + @PathParam("projectId") final UUID id, + @QueryParam("path") String path, + InputStream content) + { + logger.log("Entering endpoint 'uploadFile' with parameters: | ctx: " + ctx.toString() + " | (Path)projectId: " + id.toString() + " | path: " + path + " | content: " + content.toString()); + return fileSystemService.uploadFile(UUID.fromString(jwt.getSubject()), id, path, content); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/fileSystemEndpoints/FolderResource.java b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/fileSystemEndpoints/FolderResource.java new file mode 100644 index 0000000..ee8e319 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/fileSystemEndpoints/FolderResource.java @@ -0,0 +1,80 @@ +package fr.epita.assistants.ping.presentation.rest.fileSystemEndpoints; + +import fr.epita.assistants.ping.api.requests.MoveRequest; +import fr.epita.assistants.ping.api.requests.PathRequest; +import fr.epita.assistants.ping.domain.service.FileSystemService; + +import fr.epita.assistants.ping.utils.Logger; +import io.quarkus.security.Authenticated; +import jakarta.inject.Inject; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.SecurityContext; +import org.eclipse.microprofile.jwt.JsonWebToken; + +import java.util.UUID; + +@Path("/api/projects") +public class FolderResource +{ + @Inject + JsonWebToken jwt; + + @Inject + FileSystemService fileSystemService; + + @Inject + Logger logger; + + // Seuls les membres du projet et les admins y ont access + @GET + @Path("/{projectId}/folders") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response listFolder(@Context SecurityContext ctx, + @PathParam("projectId") final UUID id, + @QueryParam("path") String path) + { + logger.log("Entering endpoint 'listFolder' with parameters: | ctx: " + ctx.toString() + " | (Path)projectId: " + id.toString() + " | (Query)path: " + path); + return fileSystemService.listFolder(UUID.fromString(jwt.getSubject()), id, new PathRequest(path)); + } + + // Seuls les membres du projet et les admins y ont access + @DELETE + @Path("/{projectId}/folders") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response deleteFolder(@Context SecurityContext ctx, + @PathParam("projectId") final UUID id, + PathRequest path) + { + logger.log("Entering endpoint 'deleteFolder' with parameters: | ctx: " + ctx.toString() + " | (Path)projectId: " + id.toString() + " | path: " + path.toString()); + return fileSystemService.deleteFolder(UUID.fromString(jwt.getSubject()), id, path); + } + + @POST + @Path("/{projectId}/folders") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response createFolder(@Context SecurityContext ctx, + @PathParam("projectId") final UUID id, + PathRequest path) + { + logger.log("Entering endpoint 'createFolder' with parameters: | ctx: " + ctx.toString() + " | (Path)projectId: " + id.toString() + " | path: " + path.toString()); + return fileSystemService.createFolder(UUID.fromString(jwt.getSubject()), id, path); + } + + @PUT + @Path("/{projectId}/folders/move") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response moveFolder(@Context SecurityContext ctx, + @PathParam("projectId") final UUID id, + MoveRequest request) + { + logger.log("Entering endpoint 'moveFolder' with parameters: | ctx: " + ctx.toString() + " | (Path)projectId: " + id.toString() + " | request: " + request.toString()); + return fileSystemService.moveFolder(UUID.fromString(jwt.getSubject()), id, request); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/projectEndpoints/ProjectResource.java b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/projectEndpoints/ProjectResource.java new file mode 100644 index 0000000..2d9a712 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/projectEndpoints/ProjectResource.java @@ -0,0 +1,154 @@ +package fr.epita.assistants.ping.presentation.rest.projectEndpoints; + +import fr.epita.assistants.ping.api.requests.ExecFeatureRequest; +import fr.epita.assistants.ping.api.requests.NewProjectRequest; +import fr.epita.assistants.ping.api.requests.UpdateProjectRequest; +import fr.epita.assistants.ping.api.requests.UserProjectRequest; +import fr.epita.assistants.ping.api.responses.ProjectResponse; +import fr.epita.assistants.ping.errors.ErrorsCode; +import fr.epita.assistants.ping.errors.PingServiceError; +import fr.epita.assistants.ping.domain.service.ProjectService; +import fr.epita.assistants.ping.utils.Logger; +import io.quarkus.security.Authenticated; +import jakarta.annotation.security.RolesAllowed; +import jakarta.inject.Inject; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.SecurityContext; +import org.eclipse.microprofile.jwt.JsonWebToken; + +import java.util.List; +import java.util.UUID; + +@Path("/api/projects") +public class ProjectResource { + @Inject + JsonWebToken jwt; + + @Inject + ProjectService projectService; + + @Inject + Logger logger; + + // Si le QueryParam onlyOwned n'est pas precise, le considerer faux + @GET + @Path("/") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response getMyProject(@Context SecurityContext ctx, @QueryParam("onlyOwned") Boolean owned) { + logger.log("Entering endpoint 'getMyProject' with parameters: | ctx: " + ctx.toString() + " | (QuerryParam) onlyOwned: " + ((owned) != null && owned)); + List ls = projectService.listProjectsOfUser(UUID.fromString(jwt.getSubject()), owned); + return Response.ok(ls).build(); + } + + @POST + @Path("/") + @Authenticated + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + public Response createProject(@Context SecurityContext ctx, NewProjectRequest project) { + if(project == null || ctx == null) { + logger.error("Entering endpoint with 'createProject' (it will fail cuz project or ctx is null)"); + ErrorsCode.BAD_REQUEST.throwException("Invalid project creation form"); + } + + logger.log("Entering endpoint 'createProject' with parameters: | ctx: " + ctx.toString() + " | project: " + project.toString()); + ProjectResponse pr = projectService.createProject(UUID.fromString(jwt.getSubject()), project.getName()); + return Response.ok(pr).build(); + } + + @GET + @Path("/all") + @RolesAllowed({"admin"}) + @Produces(MediaType.APPLICATION_JSON) + public Response allProject(@Context SecurityContext ctx) { + logger.log("Entering endpoint 'allProject' with parameters: | ctx: " + ctx.toString()); + List ls = projectService.listAllProjects(); + return Response.ok(ls).build(); + + } + + // Seul un admin ou le detenteur du projet a le droit de call ça + @PUT + @Path("/{id}") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response updateProject(@Context SecurityContext ctx, + @PathParam("id") final String id, + final UpdateProjectRequest update) { + logger.log("Entering endpoint 'updateProject' with parameters: | ctx: " + ctx.toString() + " | (PathParam) id: " + id + " | update: " + update.toString()); + ProjectResponse res = projectService.updateProject(UUID.fromString(jwt.getSubject()), id, update.getName(), update.getNewOwnerId()); + return Response.ok(res).build(); + + } + + // User y accede s'il est owner ou membre du projet + @GET + @Path("/{id}") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response getProject(@Context SecurityContext ctx, @PathParam("id") final String id) { + logger.log("Entering endpoint 'getProject' with parameters: | ctx: " + ctx.toString() + " | (PathParam) id: " + id); + ProjectResponse res = projectService.getProject(UUID.fromString(jwt.getSubject()), id); + return Response.ok(res).build(); + + } + + // Seul admin et le detenteur du projet y ont acces + @DELETE + @Path("/{id}") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response deleteProject(@Context SecurityContext ctx, @PathParam("id") final String id) { + logger.log("Entering endpoint 'deleteProject' with parameters: | ctx: " + ctx.toString() + " | (PathParam) id: " + id); + projectService.deleteProject(UUID.fromString(jwt.getSubject()), id); + return Response.noContent().build(); + } + + // Admin and members of the project can access this + @POST + @Path("/{id}/add-user") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response addUserProject(@Context SecurityContext ctx, + @PathParam("id") final String id, + final UserProjectRequest project) { + logger.log("Entering endpoint 'addUserProject' with parameters: | ctx: " + ctx.toString() + " | (PathParam) id: " + id + " | project: " + project.toString()); + projectService.addMember(UUID.fromString(jwt.getSubject()), id, project.getUserId()); + return Response.noContent().build(); + } + + // Admin and members of the project can access this + @POST + @Path("/{id}/exec") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response execOnProject(@Context SecurityContext ctx, + @PathParam("id") final String id, + final ExecFeatureRequest request) { + logger.log("Entering endpoint 'execOnProject' with parameters: | ctx: " + ctx.toString() + " | (PathParam) id: " + id + " | request: " + request.toString()); + + projectService.execute( + UUID.fromString(jwt.getSubject()), UUID.fromString(id), request.getFeature(), request.getCommand(), + request.getParams() + ); + + return Response.noContent().build(); + + } + + @POST + @Path("/{id}/remove-user") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response removeUserProject(@Context SecurityContext ctx, + @PathParam("id") final String id, + final UserProjectRequest project) { + logger.log("Entering endpoint 'updateProject' with parameters: | ctx: " + ctx.toString() + " | (PathParam) id: " + id + " | project: " + project.toString()); + projectService.removeMember(UUID.fromString(jwt.getSubject()), id, project.getUserId()); + return Response.noContent().build(); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/userEndpoints/UserResource.java b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/userEndpoints/UserResource.java new file mode 100644 index 0000000..6b7ea77 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/presentation/rest/userEndpoints/UserResource.java @@ -0,0 +1,149 @@ +package fr.epita.assistants.ping.presentation.rest.userEndpoints; + +import fr.epita.assistants.ping.api.requests.LoginRequest; +import fr.epita.assistants.ping.api.requests.NewUserRequest; +import fr.epita.assistants.ping.api.requests.UpdateUserRequest; +import fr.epita.assistants.ping.api.responses.LoginResponse; +import fr.epita.assistants.ping.converters.request.UserCreationEntityConverter; +import fr.epita.assistants.ping.converters.request.UserUpdateEntityConverter; +import fr.epita.assistants.ping.converters.response.UserResponseConverter; +import fr.epita.assistants.ping.domain.service.UserService; +import fr.epita.assistants.ping.utils.Logger; +import io.quarkus.security.Authenticated; +import jakarta.annotation.security.RolesAllowed; +import jakarta.inject.Inject; +import jakarta.ws.rs.*; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.SecurityContext; +import org.eclipse.microprofile.jwt.JsonWebToken; + +import java.util.UUID; + +@Path("/api/user") +public class UserResource +{ + @Inject + JsonWebToken jwt; + + @Inject + UserService userService; + + @Inject + Logger logger; + + @Inject + UserResponseConverter userResponseConverter; + + @Inject + UserCreationEntityConverter userCreationEntityConverter; + + @Inject + UserUpdateEntityConverter userUpdateEntityConverter; + + // Si on n'a pas de token/token invalide, alors le RolesAllowed + // vont renvoyer un 401. + // Je suppose que ne pas etre admin va renvoyer 403 si le jwt est bien fait + @POST + @Path("/") + @RolesAllowed({"admin"}) + @Produces(MediaType.APPLICATION_JSON) + public Response createUser(@Context SecurityContext ctx, NewUserRequest user) + { + logger.log("Entering endpoint 'createUser' with parameters: | ctx: " + ctx.toString() + " | user: " + user.toString()); + return Response + .ok(userResponseConverter.convert( + userService.createUser( + UUID.fromString(jwt.getSubject()), + userCreationEntityConverter.convert(user) + ))) + .build(); + } + + @GET + @Path("/all") + @RolesAllowed({"admin"}) + @Produces(MediaType.APPLICATION_JSON) + public Response allUsers(@Context SecurityContext ctx) + { + logger.log("Entering endpoint 'allUser' with parameters: | ctx: " + ctx.toString()); + return Response + .ok(userResponseConverter.convert(userService.getAllUsers())) + .build(); + } + + // Le seul endpoint qui ne sera pas protege + @POST + @Path("/login") + @Produces(MediaType.APPLICATION_JSON) + public Response logInUser(final LoginRequest request) + { + logger.log("Entering endpoint 'logInUser' with parameters: | request: " + request.toString()); + return Response + .ok(new LoginResponse(userService.login(request.getLogin(), request.getPassword()))) + .build(); + } + + @GET + @Path("/refresh") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response refreshToken(@Context SecurityContext ctx) + { + logger.log("Entering endpoint 'refreshToken' with parameters: | ctx: " + ctx.toString()); + return Response + .ok(new LoginResponse(userService.refreshToken(UUID.fromString(jwt.getSubject())))) + .build(); + } + + // Admin peut tout toucher + // User peut toucher que a son profil + @PUT + @Path("/{id}") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response updateUser(@Context SecurityContext ctx, + @PathParam("id") final UUID id, + UpdateUserRequest user) + { + logger.log("Entering endpoint 'updateUser' with parameters: | ctx: " + ctx.toString() + " | (Path) id: " + id.toString() + " | user: " + user.toString()); + return Response + .ok(userResponseConverter.convert( + userService.updateUser( + UUID.fromString(jwt.getSubject()), + id, + userUpdateEntityConverter.convert(user)) + )) + .build(); + } + + // Admin peut tout toucher + // User peut toucher que a son profil + @GET + @Path("/{id}") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Response getUser(@Context SecurityContext ctx, @PathParam("id") final UUID id) + { + logger.log("Entering endpoint 'getUser' with parameters: | ctx: " + ctx.toString() + " | (Path) id: " + id.toString()); + return Response + .ok(userResponseConverter.convert(userService.getUser(UUID.fromString(jwt.getSubject()), id))) + .build(); + } + + // Seul Admin peut delete + // Cependant un user avec des projects ne peut pas etre delete + @DELETE + @Path("/{id}") + @RolesAllowed({"admin"}) + @Produces(MediaType.APPLICATION_JSON) + public Response deleteUser(@Context SecurityContext ctx, @PathParam("id") final UUID id) + { + logger.log("Entering endpoint 'getUser' with parameters: | ctx: " + ctx.toString() + " | (Path) id: " + id.toString()); + return Response + .status(204) + .entity(userResponseConverter.convert(userService.deleteUser(UUID.fromString(jwt.getSubject()), id))) + .build(); + } +} \ No newline at end of file diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/utils/ErrorInfo.java b/ping/ping/src/main/java/fr/epita/assistants/ping/utils/ErrorInfo.java new file mode 100644 index 0000000..0255e86 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/utils/ErrorInfo.java @@ -0,0 +1,14 @@ +package fr.epita.assistants.ping.utils; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@AllArgsConstructor +@Setter +@NoArgsConstructor +public class ErrorInfo { + private String message; +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/utils/HttpError.java b/ping/ping/src/main/java/fr/epita/assistants/ping/utils/HttpError.java new file mode 100644 index 0000000..3ec0c86 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/utils/HttpError.java @@ -0,0 +1,40 @@ +package fr.epita.assistants.ping.utils; + +import java.util.function.Supplier; + +import jakarta.ws.rs.WebApplicationException; +import jakarta.ws.rs.core.Response.Status; + +import static jakarta.ws.rs.core.Response.status; + +public class HttpError implements Supplier, IHttpError { + private final Status status; + private final String message; + + public HttpError(Status status, String message) { + this.status = status; + this.message = message; + } + + private RuntimeException createError(Object... args) { + return new WebApplicationException( + status(status) + .entity(new ErrorInfo(String.format(message, args))) + .build()); + } + + @Override + public RuntimeException get() { + return createError(); + } + + @Override + public RuntimeException get(Object... args) { + return createError(args); + } + + @Override + public void throwException(Object... args) { + throw get(args); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/utils/IHttpError.java b/ping/ping/src/main/java/fr/epita/assistants/ping/utils/IHttpError.java new file mode 100644 index 0000000..6616166 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/utils/IHttpError.java @@ -0,0 +1,7 @@ +package fr.epita.assistants.ping.utils; + +public interface IHttpError { + RuntimeException get(Object... args); + + void throwException(Object... args); +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/utils/Logger.java b/ping/ping/src/main/java/fr/epita/assistants/ping/utils/Logger.java new file mode 100644 index 0000000..a3010b3 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/utils/Logger.java @@ -0,0 +1,129 @@ +package fr.epita.assistants.ping.utils; + +import jakarta.enterprise.context.ApplicationScoped; +import org.eclipse.microprofile.config.inject.ConfigProperty; + +import java.io.Console; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Calendar; + +@ApplicationScoped +public class Logger { + private static final String RESET_TEXT = "\u001B[0m"; + private static final String RED_TEXT = "\u001B[31m"; + private static final String GREEN_TEXT = "\u001B[32m"; + private static final String YELLOW_TEXT = "\u001B[33m"; + private static final String BLUE_TEXT = "\u001B[36m"; + private static final String PURPLE_TEXT = "\u001B[35m"; + + @ConfigProperty(name="LOG_FILE", defaultValue="ping.log") + String logFile; + + @ConfigProperty(name="ERROR_LOG_FILE", defaultValue="error.log") + String errorFile; + + // null = file inexistante + private static File logPath = null; + private static File errorPath = null; + + public void checkFiles() + { + if (logPath == null) + { + logPath = new File(logFile); + + try + { + logPath.createNewFile(); + } + catch (IOException e) + { + System.out.println(e.getMessage()); + } + } + + if (errorPath == null) + { + errorPath = new File(errorFile); + try + { + errorPath.createNewFile(); + } + catch (IOException e) + { + System.out.println(e.getMessage()); + } + } + } + + public void log(String text) + { + text = "[" + timestamp() + "] [LOG] " + text; + writeToFile("normal", text); + System.out.println(PURPLE_TEXT + text + RESET_TEXT); + } + public void debug(String text) + { + text = "[" + timestamp() + "] [DEBUG] " + text; + writeToFile("normal", text); + System.out.println(BLUE_TEXT + text + RESET_TEXT); + } + public void info(String text) + { + text = "[" + timestamp() + "] [INFO] " + text; + writeToFile("normal", text); + System.out.println(text); + } + public void warn(String text) + { + text = "[" + timestamp() + "] [!WARN!] " + text; + writeToFile("normal", text); + System.out.println(YELLOW_TEXT + text + RESET_TEXT); + } + public void error(String text) + { + text = "[" + timestamp() + "] [!!!ERROR!!!] " + text; + writeToFile("error", text); + System.out.println(RED_TEXT + text + RESET_TEXT); + } + + private void writeToFile(String type, String text) + { + checkFiles(); + if (type.equals("normal") && logFile != null) + { + try + { + // On est en Java, j'en ai rien a faire + FileWriter writer = new FileWriter(logFile, true); + writer.write(text + "\n"); + writer.close(); + } + catch (IOException e) + { + System.out.println(e.getMessage()); + } + } + if (!type.equals("normal") && errorFile != null) + { + try + { + FileWriter writer = new FileWriter(errorFile, true); + writer.write(text + "\n"); + writer.close(); + } + catch (IOException e) + { + System.out.println(e.getMessage()); + } + } + } + + private static String timestamp() { + return new SimpleDateFormat("dd/MM/yy - HH:mm:ss") + .format(Calendar.getInstance().getTime()); + } +} diff --git a/ping/ping/src/main/java/fr/epita/assistants/ping/utils/TokenFactory.java b/ping/ping/src/main/java/fr/epita/assistants/ping/utils/TokenFactory.java new file mode 100644 index 0000000..1059733 --- /dev/null +++ b/ping/ping/src/main/java/fr/epita/assistants/ping/utils/TokenFactory.java @@ -0,0 +1,27 @@ +package fr.epita.assistants.ping.utils; + +import fr.epita.assistants.ping.data.model.UserModel; +import io.smallrye.jwt.build.Jwt; +import io.smallrye.jwt.build.JwtClaimsBuilder; +import jakarta.enterprise.context.ApplicationScoped; + + +@ApplicationScoped +public class TokenFactory { + + private String deduceTokenRole(UserModel user) { + return user.getIsAdmin() ? "admin" : "user"; + } + + private JwtClaimsBuilder buildClaims(UserModel user) { + return Jwt.claims() + .subject(user.getId().toString()) + .upn(user.getLogin()) + .preferredUserName(user.getLogin()) + .groups(deduceTokenRole(user)); + } + + public String generateLoginToken(UserModel user) { + return buildClaims(user).sign(); + } +} diff --git a/ping/ping/src/main/resources/application.properties b/ping/ping/src/main/resources/application.properties new file mode 100644 index 0000000..31ac487 --- /dev/null +++ b/ping/ping/src/main/resources/application.properties @@ -0,0 +1,21 @@ +# Enable HTTP +quarkus.http.insecure-requests=enabled +# Setup PostgreSQL +quarkus.datasource.db-kind=postgresql +quarkus.datasource.username=postgres +quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/ping +quarkus.transaction-manager.default-transaction-timeout=3000s +quarkus.hibernate-orm.log.queries-slower-than-ms=200 +quarkus.hibernate-orm.database.generation=update +# Set port +quarkus.http.port=8080 +quarkus.http.cors.enabled=false +quarkus.devservices.enabled=true +%test.quarkus.devservices.enabled=false +# JWT configuration +smallrye.jwt.new-token.signature-algorithm=RS256 +smallrye.jwt.sign.key.location=privateKey.pem +smallrye.jwt.verify.key.location=publicKey.pem +smallrye.jwt.new-token.lifespan=3600 +smallrye.jwt.new-token.issuer=PatapimVest-API +PROJECT_DEFAULT_PATH=/var/www/projects/ \ No newline at end of file diff --git a/ping/ping/src/main/resources/openapi.yml b/ping/ping/src/main/resources/openapi.yml new file mode 100644 index 0000000..104ba5e --- /dev/null +++ b/ping/ping/src/main/resources/openapi.yml @@ -0,0 +1,1065 @@ +--- +openapi: 3.1.0 +paths: + /api/error: + get: + responses: + "200": + description: OK + summary: Error + tags: + - Hello World Resource + /api/hello: + get: + responses: + "200": + description: OK + summary: Hello World + tags: + - Hello World Resource + /api/projects: + get: + summary: List projects of user + description: | + List all the projects of the logged in user. + + The param onlyOwned specifies if the response should return all the projects the user is a member of, + or only those the user owns. + + By default onlyOwned is considered as false. + + Any logged in user can access this endpoint. + tags: + - Project + parameters: + - name: onlyOwned + in: query + schema: + type: boolean + responses: + "200": + description: List of the projects + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ProjectResponse' + "403": + description: Should not happen (this is automatically generated) + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + post: + summary: Create a project + description: | + Create a new project with a name, the owner should also be in the list of members. + + Any logged in user can access this endpoint. + tags: + - Project + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NewProjectRequest' + required: true + responses: + "200": + description: The created project + content: + application/json: + schema: + $ref: '#/components/schemas/ProjectResponse' + "400": + description: The project name is invalid (null or empty for example) + "403": + description: Should not happen (this is automatically generated) + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + /api/projects/all: + get: + summary: List all the projects + description: | + List all the projects available, be careful the response should not contain all the information about the members or the owner. + + Only an admin can access this endpoint. + tags: + - Project + responses: + "200": + description: List of the projects + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ProjectResponse' + "403": + description: The user is not an admin + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: + - admin + /api/projects/{id}: + put: + summary: Update a project + description: | + Update a project, by changing its name or the owner of the project. + + If the new owner id or the new name are the same as the current one, it should not change anything and it is not an error. + + You should only update the fields that are not null in the request. + If some fields are null, they should not be updated. + + If all the fields are null, it should return a bad request. + + Only the owner of the project or an admin can access this endpoint. + tags: + - Project + parameters: + - name: id + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateProjectRequest' + required: true + responses: + "200": + description: The project was modified + content: + application/json: + schema: + $ref: '#/components/schemas/ProjectResponse' + "404": + description: "The project could not be found, or the new owner is not a\ + \ member of the project" + "403": + description: The user is not allowed to access the project + "400": + description: Both the name and the new owner are null + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + get: + summary: Get a project + description: |- + Get a specific project based on its id. + + A user can access this endpoint if he is a member of the project or the owner. + + An admin can access this endpoint in any case. + tags: + - Project + parameters: + - name: id + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + responses: + "200": + description: The project + content: + application/json: + schema: + $ref: '#/components/schemas/ProjectResponse' + "404": + description: Project not found + "403": + description: The user is not allowed to access the project + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + delete: + summary: Delete a project + description: | + Delete a project. + + Only the owner of the project or an admin can access this endpoint. + tags: + - Project + parameters: + - name: id + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + responses: + "204": + description: The project was deleted + "404": + description: The project could not be found + "403": + description: The user is not allowed to access this project + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + /api/projects/{id}/add-user: + post: + summary: Add a member + description: | + Add a member to a project. + + Any member of the project or an admin can access this endpoint. + tags: + - Project + parameters: + - name: id + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserProjectRequest' + required: true + responses: + "204": + description: The user was added to the project + "404": + description: "The project, or the user could not be found" + "403": + description: The user is not allowed to access the project + "400": + description: The userId is invalid (null or empty for example) + "409": + description: The user is already a member of the project + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + /api/projects/{id}/exec: + post: + summary: Execute a feature + description: | + Execute a feature on the project. + + For git features: + + If the project is not a git repository, it should return a bad request (except if the feature is git init). + + + For git add, if a file does not exist it should return a bad request. + + Any other error should be returned as an internal server error. + + Any member of the project or an admin can access this endpoint. + tags: + - Project + parameters: + - name: id + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExecFeatureRequest' + required: true + responses: + "204": + description: The feature was successfully executed + "404": + description: The project could not be found + "403": + description: The user is not allowed to access the project + "400": + description: "Any parameter of the request is invalid (null or non-existent\ + \ feature)" + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + /api/projects/{id}/remove-user: + post: + summary: Remove a member + description: | + Remove a member from a project. + + Only the owner of the project or an admin can access this endpoint. + tags: + - Project + parameters: + - name: id + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UserProjectRequest' + required: true + responses: + "204": + description: The user was removed from the project + "404": + description: "The project, or the user could not be found, the user to remove\ + \ is not a member of the project" + "403": + description: "The user is not allowed to access the project, or the user\ + \ to remove is the owner of the project" + "400": + description: The userId is invalid (null or empty for example) + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + /api/projects/{projectId}/files: + get: + summary: Get a file + description: | + Retrieve the content of a file. + + It should return a byte array of the content of the file. + + The content type must be application/octet-stream. + + Any member of the project or an admin can access this endpoint. + tags: + - File + parameters: + - name: projectId + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + - name: path + in: query + schema: + type: string + default: "" + responses: + "200": + description: Content of the file + "404": + description: The project or the relative path could not be found + "403": + description: The user is not allowed to access the project or a path traversal + attack was detected + "400": + description: The relative path is invalid (null or empty for example) + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + delete: + summary: Delete a file + description: | + Delete a file from the file system and all its content, be careful if the file is the root + you should only empty it and not remove the root file of the project. + + Any member of the project or an admin can access this endpoint. + tags: + - File + parameters: + - name: projectId + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PathRequest' + required: true + responses: + "204": + description: The file was deleted + "404": + description: The project or the file could not be found + "403": + description: The user is not allowed to access the project or a path traversal + attack was detected + "400": + description: The source or destination path is invalid (null or empty for + example) + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + post: + summary: Create a file + description: | + Create a new file on the file system. + + Any member of the project or an admin can access this endpoint. + tags: + - File + parameters: + - name: projectId + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PathRequest' + required: true + responses: + "201": + description: The file was created + "404": + description: The project could not be found + "403": + description: The user is not allowed to access the project or a path traversal + attack was detected + "409": + description: The file already exists + "400": + description: The relative path is invalid (null or empty for example) + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + /api/projects/{projectId}/files/move: + put: + summary: Move a file + description: | + Move a file to a new location or rename it if the destination is in the same parent directory + + Any member of the project or an admin can access this endpoint. + tags: + - File + parameters: + - name: projectId + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MoveRequest' + required: true + responses: + "204": + description: The file was renamed + "404": + description: The project could not be found + "403": + description: The user is not allowed to access the project or a path traversal + attack was detected + "409": + description: The file already exists + "400": + description: The source or destination path is invalid (null or empty for + example) + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + /api/projects/{projectId}/files/upload: + post: + summary: Upload a new file + description: | + Upload data to create or modify a file, it should write the content + of the body to the file and create it if it does not exist. + + The content type received must be application/octet-stream. + + You can retrieve the data of the body using the InputStream type for your parameter. + + Any member of the project or an admin can access this endpoint. + tags: + - File + parameters: + - name: projectId + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + - name: path + in: query + schema: + type: string + requestBody: + content: + application/octet-stream: + schema: + type: string + format: binary + required: true + responses: + "201": + description: The file was created + "404": + description: The project could not be found + "403": + description: The user is not allowed to access the project or a path traversal + attack was detected + "400": + description: The relative path is invalid (null or empty for example) + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + /api/projects/{projectId}/folders: + get: + summary: List a folder + description: | + List the content of the folder located at the given path + in the project with the given id. By default it lists the root folder. + + It is NOT a recursive listing, it only lists the immediate children of the folder. + + Any member of the project or an admin can access this endpoint. + tags: + - Folder + parameters: + - name: projectId + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + - name: path + in: query + schema: + type: string + default: "" + responses: + "200": + description: List of folder entries + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/FSEntryResponse' + "404": + description: The project or the relative path could not be found + "403": + description: The user is not allowed to access the project or a path traversal + attack was detected + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + delete: + summary: Delete a folder + description: | + Delete a folder from the file system and all its content, + be careful if the folder is the root you should only empty it and not remove the root folder of the project. + + Any member of the project or an admin can access this endpoint. + tags: + - Folder + parameters: + - name: projectId + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PathRequest' + required: true + responses: + "204": + description: The folder was deleted + "404": + description: The project or the folder could not be found + "403": + description: The user is not allowed to access the project or a path traversal + attack was detected + "400": + description: The relative path is invalid (null or empty for example) + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + post: + summary: Create a folder + description: | + Create a new folder on the file system. + + Any member of the project or an admin can access this endpoint. + tags: + - Folder + parameters: + - name: projectId + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PathRequest' + required: true + responses: + "201": + description: The folder was created + "404": + description: The project could not be found + "403": + description: The user is not allowed to access the project or a path traversal + attack was detected + "409": + description: The folder already exists + "400": + description: The relative path is invalid (null or empty for example) + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + /api/projects/{projectId}/folders/move: + put: + summary: Move a folder + description: | + Move a folder to a new location, or rename it if the destination is in the same parent directory. + + Any member of the project or an admin can access this endpoint. + tags: + - Folder + parameters: + - name: projectId + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MoveRequest' + required: true + responses: + "204": + description: The folder was renamed + "404": + description: The project could not be found or the source folder could not + be found + "403": + description: The user is not allowed to access the project or a path traversal + attack was detected + "409": + description: The folder already exists + "400": + description: The source or destination path is invalid (null or empty for + example) + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + /api/user: + post: + summary: Create a user + description: | + Create a new user, its login should be unique and contain at most + one '.' or '_'. The name should be initialized to the login split and capitalized on the separator. + + Only an admin can access this endpoint. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NewUserRequest' + required: true + responses: + "200": + description: The created user + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + "400": + description: The login or the password is invalid + "409": + description: The login is already taken + "403": + description: The user is not an admin + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: + - admin + /api/user/all: + get: + summary: List all the users + description: | + List all the users available, be careful the response should not contain all the + information about the members or the owner. + + Only an admin can access this endpoint. + tags: + - User + responses: + "200": + description: List of the users + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/UserResponse' + "403": + description: The user is not an admin + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: + - admin + /api/user/login: + post: + summary: Login a user + description: | + Login a user with its login and password. + + It should return a token if the login/password combination is valid. + tags: + - User + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LoginRequest' + required: true + responses: + "200": + description: The token of the user + content: + application/json: + schema: + $ref: '#/components/schemas/LoginResponse' + "401": + description: The login/password combination is invalid + "400": + description: The login or the password is null + servers: + - url: http://localhost:8080 + /api/user/refresh: + get: + summary: Refresh a token + description: | + Refresh the token of a user by returning a new one. + + Only a logged in user can access this endpoint. + tags: + - User + responses: + "200": + description: The new token + content: + application/json: + schema: + $ref: '#/components/schemas/LoginResponse' + "404": + description: The user could not be found + "401": + description: Not Authorized + "403": + description: Not Allowed + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + /api/user/{id}: + put: + summary: Update a user + description: | + Update a user + + For the sake of simplicity the password can be modified. + + Any blank value should be ignored (except for the avatar). + + Only the same user or an admin can access this endpoint. + tags: + - User + parameters: + - name: id + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateUserRequest' + required: true + responses: + "200": + description: The modified user + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + "404": + description: The user could not be found + "403": + description: The user is not allowed + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + get: + summary: Get a user + description: | + Get the data of a user. + + A user can only access its data while an admin can access any user data. + tags: + - User + parameters: + - name: id + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + responses: + "200": + description: The user + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + "404": + description: User not found + "403": + description: The user is not allowed to access this user + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: [] + delete: + summary: Delete a user + description: | + Delete a user. + + If the user owns projects, he cannot be deleted and a forbidden response should be returned. + + Only an admin can access this endpoint. + tags: + - User + parameters: + - name: id + in: path + required: true + schema: + $ref: '#/components/schemas/UUID' + responses: + "204": + description: The user was deleted + "404": + description: The user could not be found + "403": + description: "The user is not allowed to access this endpoint, or the user\ + \ owns projects" + "401": + description: Not Authorized + servers: + - url: http://localhost:8080 + security: + - SecurityScheme: + - admin +components: + schemas: + ExecFeatureRequest: + type: object + properties: + feature: + type: string + command: + type: string + params: + type: array + items: + type: string + FSEntryResponse: + type: object + properties: + name: + type: string + path: + type: string + isDirectory: + type: boolean + LoginRequest: + type: object + properties: + login: + type: string + password: + type: string + LoginResponse: + type: object + properties: + token: + type: string + MoveRequest: + type: object + properties: + src: + type: string + dst: + type: string + NewProjectRequest: + type: object + properties: + name: + type: string + NewUserRequest: + type: object + properties: + login: + type: string + password: + type: string + isAdmin: + type: boolean + PathRequest: + type: object + properties: + relativePath: + type: string + ProjectResponse: + type: object + properties: + id: + $ref: '#/components/schemas/UUID' + name: + type: string + members: + type: array + items: + $ref: '#/components/schemas/UserSummaryResponse' + owner: + $ref: '#/components/schemas/UserSummaryResponse' + UUID: + type: string + format: uuid + pattern: "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}" + UpdateProjectRequest: + type: object + properties: + name: + type: string + newOwnerId: + $ref: '#/components/schemas/UUID' + UpdateUserRequest: + type: object + properties: + password: + type: string + displayName: + type: string + avatar: + type: string + UserProjectRequest: + type: object + properties: + userId: + $ref: '#/components/schemas/UUID' + UserResponse: + type: object + properties: + id: + $ref: '#/components/schemas/UUID' + login: + type: string + displayName: + type: string + isAdmin: + type: boolean + avatar: + type: string + UserSummaryResponse: + type: object + properties: + id: + $ref: '#/components/schemas/UUID' + displayName: + type: string + avatar: + type: string + securitySchemes: + SecurityScheme: + type: http + scheme: bearer + bearerFormat: JWT + description: Authentication +tags: +- name: File + description: File API +- name: Folder + description: Folder API +- name: Project + description: Project API +- name: User + description: User API +info: + title: ping API + version: "1.0" diff --git a/ping/ping/src/main/resources/privateKey.pem b/ping/ping/src/main/resources/privateKey.pem new file mode 100644 index 0000000..72fef7b --- /dev/null +++ b/ping/ping/src/main/resources/privateKey.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEugIBADANBgkqhkiG9w0BAQEFAASCBKQwggSgAgEAAoIBAQDM3vt0cpH3XNFa +ZpZDkwa6QLV45Z5nB3qd9dF+NgoP+Kzar/VAUndnTaf8YDK4J90bc3jwaepvsE7y +0Wy3KGEwNEDx5A+rIhWFx3UfoPvZLbPzkwpMpCP+tU22OF+EB/mdKRMzl2VX6nOG +fo/P88xmF5wCVTCscM7PQmzEuMTn+MZCnI2N6StrBpJDf2g6lrN3JOq3wpqcIAxP +y2AkrHN2E2Ihut1cbLE9dmhDdyygM2XtzCjFs2foBycFc0u/GpWwqA5VfHs7fww9 +saAtXuBVrZ1A9fvZbXxHbLNVgjsRCoAhk299cRv0h06lamqD/xvfO8UqpIxKAVeQ +3kVReoM/AgMBAAECggEAHnT77wjlWF/tI8JijnM6KdBa6jlAvlJnUTptRZUlE9DF +adGE5WYdKDdsROHMSIJspZsaHKuyVZ5hbkniHqybHj52dT+RcMClcHkBmY0mQ9g+ +i3SNsG0qiMBNaEyjLo689jdYCnB0eYh6WkFQgfrdpUPXRqWBkfFHXZqjbu+FHnMi +VWLspMGetabvEcMDAcDWWrVE+JKuXaBFwJBfXdwNNeo0og4F785YlckymdCoYSBl +9Xv2P7GUilF6PRaNGmSN5gLw9bpJWev7hxPIZK2I+h8fAZOigpPdw0KkpnWFP/Lo +zUT9e4yUeeO2XrWdpY4YEJFcQY1xC47AI62b7pZnoQKBgQDzlGp6DpzANR1frjvS +cwxRqgGssW0ADbuAX7vNDfNGpnbhlSJglWkYIRmP9ylHTjLKz8ju9pmGJ1DU5ADW +B3UBGA3rEOJdqW3pu2Pfc49vZY8XUnUb9iEcjWEIx/bli8md/AoZTb+p+PWHBtOa +EQaicCqYc4HGtLcy40t6rQwNjwKBgQDXUUeK0lkEyEzDDXHqGl1DumMSx5/b+TzO ++GMG00ODNHifO1yNwXZpJ6qwOln6MEVQQxbO0zsWb/fCBa3+nO8QkwJ6RiwL2wZM +LhVT1DgGnGdUHyX8cYrz48KSHT1AaL2Xpso+PEBG57oG06OnTCs4zjmXNhscKQO7 +xp7PQve3UQJ/DkWj94LjrF9wWSrcVnhnQGG1t2it+lLTqbHyTxGCL6GRVaZnXUFj +5wYJeWYCBSuPzlJec6H/XNzw34h8hA3rzSSbrCpRGSvURN21/GHJBb3tpHAwbHL/ +fazLAri0vr5yEc+yx8jGci8kM8UyoNRejyYDWOtrrzjngxPOWGHLUwKBgDdItEDN +j3Ot5h+yxQvhpw6rvaJlxQLa9KUDm5F2DwCSKWJhAHuZL8kCGU5UPSQC3tkj0Khc +DfDN4ORdRvZ33t33kQxKFicZHn3S20EB3Ty9Tb6InN07Xf0O/rc7cK2n9v4IIidm +mu5ZsybrkjpzUSmtsZXEm6NYWJAPCFmZDTdxAoGAPZUhdtFBDHcq1lexfTZuLQXg +/V0aSDO8ptagb/foHuWEnqxwsldMplMjx3naOkLrRYA+BJ/zdItv0cJrbl5xpXI4 +S5AHyerNXzZr3ptYGwOUyulNsmA+9WGBTdREhDnzToFL4u0ZZn5+ENJFPK8rygqh +M6PGLdqKHiXGAsGQz18= +-----END PRIVATE KEY----- diff --git a/ping/ping/src/main/resources/publicKey.pem b/ping/ping/src/main/resources/publicKey.pem new file mode 100644 index 0000000..49676c3 --- /dev/null +++ b/ping/ping/src/main/resources/publicKey.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzN77dHKR91zRWmaWQ5MG +ukC1eOWeZwd6nfXRfjYKD/is2q/1QFJ3Z02n/GAyuCfdG3N48Gnqb7BO8tFstyhh +MDRA8eQPqyIVhcd1H6D72S2z85MKTKQj/rVNtjhfhAf5nSkTM5dlV+pzhn6Pz/PM +ZhecAlUwrHDOz0JsxLjE5/jGQpyNjekrawaSQ39oOpazdyTqt8KanCAMT8tgJKxz +dhNiIbrdXGyxPXZoQ3csoDNl7cwoxbNn6AcnBXNLvxqVsKgOVXx7O38MPbGgLV7g +Va2dQPX72W18R2yzVYI7EQqAIZNvfXEb9IdOpWpqg/8b3zvFKqSMSgFXkN5FUXqD +PwIDAQAB +-----END PUBLIC KEY----- diff --git a/ping/ping/src/test/java/fr/epita/assistants/ping/data/repositories/ProjectFakeRepository.java b/ping/ping/src/test/java/fr/epita/assistants/ping/data/repositories/ProjectFakeRepository.java new file mode 100644 index 0000000..d9a1e69 --- /dev/null +++ b/ping/ping/src/test/java/fr/epita/assistants/ping/data/repositories/ProjectFakeRepository.java @@ -0,0 +1,111 @@ +package fr.epita.assistants.ping.data.repositories; + +import fr.epita.assistants.ping.data.model.ProjectModel; +import fr.epita.assistants.ping.data.model.UserModel; +import fr.epita.assistants.ping.data.repository.ProjectRepository; + +import java.nio.file.Path; +import java.util.*; + + +public class ProjectFakeRepository extends ProjectRepository { + + private final Path defaultPath = Path.of("."); + + private final Map database = new HashMap<>(); + + @Override + public long count() { + return database.size(); + } + + @Override + public ProjectModel createProject(UserModel owner, String name) { + ProjectModel project = new ProjectModel() + .withName(name) + .withOwner(owner); + + project.setId(UUID.randomUUID()); + project.setPath(defaultPath + project.getId().toString()); + + database.put(project.getId(), project); + + return project; + } + + @Override + public List getAllProjects() { + return database.values().stream().toList(); + } + + @Override + public Optional getProject(UUID id) { + return Optional.ofNullable(database.get(id)); + } + + @Override + public List getAllOwnedProjects(UserModel owner) { + return database + .values() + .stream() + .filter( + project -> project + .getOwner() + .getId() + .compareTo(owner.getId()) == 0 + ).toList(); + } + + @Override + public void updateName(UUID id, String name) { + ProjectModel project = database.get(id); + + if (project == null) { + return; + } + + project.setName(name); + database.put(id, project); + } + + @Override + public void updateOwner(UUID id, UserModel newOwner) { + ProjectModel project = database.get(id); + + if (project == null) { + return; + } + + project.setOwner(newOwner); + database.put(id, project); + } + + @Override + public void addMember(UUID id, UserModel member) { + ProjectModel project = database.get(id); + + if (project == null) { + return; + } + + project.getMembers().add(member); + database.put(id, project); + } + + @Override + public void removeMember(UUID id, UserModel member) { + ProjectModel project = database.get(id); + + if (project == null) { + return; + } + + project.getMembers().remove(member); + database.put(id, project); + } + + @Override + public void deleteProject(UUID id) { + database.remove(id); + } +} diff --git a/ping/ping/src/test/java/fr/epita/assistants/ping/data/repositories/UserFakeRepository.java b/ping/ping/src/test/java/fr/epita/assistants/ping/data/repositories/UserFakeRepository.java new file mode 100644 index 0000000..bd4861a --- /dev/null +++ b/ping/ping/src/test/java/fr/epita/assistants/ping/data/repositories/UserFakeRepository.java @@ -0,0 +1,121 @@ +package fr.epita.assistants.ping.data.repositories; + +import fr.epita.assistants.ping.data.model.UserModel; +import fr.epita.assistants.ping.data.repository.UserRepository; + +import java.util.*; + + +public class UserFakeRepository extends UserRepository { + + private final Map database = new HashMap<>(); + + @Override + public long count() { + return database.size(); + } + + public UserModel createUser(UserModel user) { + database.put(user.getId(), user); + + return user; + } + + @Override + public UserModel createUser(String name, Boolean admin, String avatar, String login, String password) { + UserModel user = new UserModel() + .withAvatar(avatar) + .withLogin(login) + .withPassword(password) + .withIsAdmin(admin) + .withDisplayName(name); + + user.setId(UUID.randomUUID()); + + return createUser(user); + } + + @Override + public List getAllUsers() { + return database.values().stream().toList(); + } + + @Override + public Optional getUser(UUID id) { + return Optional.ofNullable(database.get(id)); + } + + @Override + public Optional getUser(String login) { + return database + .values() + .stream() + .filter(userModel -> Objects.equals(userModel.getLogin(), login)) + .findFirst(); + } + + @Override + public void updateLogin(UUID id, String login) { + UserModel user = database.get(id); + + if (user == null) { + return; + } + + user.setLogin(login); + database.put(id, user); + } + + @Override + public void updatePassword(UUID id, String password) { + UserModel user = database.get(id); + + if (user == null) { + return; + } + + user.setPassword(password); + database.put(id, user); + } + + @Override + public void updateIsAdmin(UUID id, Boolean admin) { + UserModel user = database.get(id); + + if (user == null) { + return; + } + + user.setIsAdmin(admin); + database.put(id, user); + } + + @Override + public void updateAvatar(UUID id, String avatar) { + UserModel user = database.get(id); + + if (user == null) { + return; + } + + user.setAvatar(avatar); + database.put(id, user); + } + + @Override + public void updateDisplayName(UUID id, String name) { + UserModel user = database.get(id); + + if (user == null) { + return; + } + + user.setDisplayName(name); + database.put(id, user); + } + + @Override + public void deleteUser(UUID id) { + database.remove(id); + } +} diff --git a/ping/ping/src/test/java/fr/epita/assistants/ping/presentation/rest/TestHelloWorldResource.java b/ping/ping/src/test/java/fr/epita/assistants/ping/presentation/rest/TestHelloWorldResource.java new file mode 100644 index 0000000..1368cf3 --- /dev/null +++ b/ping/ping/src/test/java/fr/epita/assistants/ping/presentation/rest/TestHelloWorldResource.java @@ -0,0 +1,31 @@ +package fr.epita.assistants.ping.presentation.rest; + +import io.quarkus.test.junit.QuarkusTest; +import io.quarkus.test.common.http.TestHTTPEndpoint; +import org.junit.jupiter.api.Test; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.Matchers.equalTo; + +@QuarkusTest +@TestHTTPEndpoint(HelloWorldResource.class) +public class TestHelloWorldResource { + + @Test + public void testHelloWorldEndpoint() { + given() + .when().get("/hello") + .then() + .statusCode(200) + .body(equalTo("Hello World !")); + } + + @Test + public void testErrorEndpoint() { + given() + .when().get("/error") + .then() + .statusCode(400) + .body("message", equalTo("Example error: This is an error")); + } +} diff --git a/ping/ping/src/test/java/fr/epita/assistants/ping/presentation/rest/TestProjectResource.java b/ping/ping/src/test/java/fr/epita/assistants/ping/presentation/rest/TestProjectResource.java new file mode 100644 index 0000000..54bf30c --- /dev/null +++ b/ping/ping/src/test/java/fr/epita/assistants/ping/presentation/rest/TestProjectResource.java @@ -0,0 +1,32 @@ +package fr.epita.assistants.ping.presentation.rest; + +import fr.epita.assistants.ping.data.repository.UserRepository; +import io.quarkus.test.junit.QuarkusTest; +import jakarta.inject.Inject; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import static io.restassured.RestAssured.given; + +@QuarkusTest +public class TestProjectResource { + + @BeforeAll + public static void setup() + { + // TODO : Create the two users, store their JWT + } + + @Nested + class GetMyProject { + + @Test + public void GetNonExistent() + { + given().when().get("/api/hello").then().statusCode(200); + } + + } + +} diff --git a/ping/ping/src/test/java/fr/epita/assistants/ping/presentation/rest/TestUserResource.java b/ping/ping/src/test/java/fr/epita/assistants/ping/presentation/rest/TestUserResource.java new file mode 100644 index 0000000..1d08df6 --- /dev/null +++ b/ping/ping/src/test/java/fr/epita/assistants/ping/presentation/rest/TestUserResource.java @@ -0,0 +1,431 @@ +package fr.epita.assistants.ping.presentation.rest; + +import fr.epita.assistants.ping.api.responses.UserResponse; +import fr.epita.assistants.ping.data.model.UserModel; +import fr.epita.assistants.ping.data.repositories.UserFakeRepository; +import fr.epita.assistants.ping.data.repository.UserRepository; +import io.quarkus.test.junit.QuarkusMock; +import io.quarkus.test.junit.QuarkusTest; +import io.quarkus.test.security.TestSecurity; +import io.quarkus.test.security.jwt.Claim; +import io.quarkus.test.security.jwt.JwtSecurity; +import io.restassured.http.ContentType; +import io.restassured.response.Response; +import org.junit.jupiter.api.*; + +import java.util.UUID; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.Matchers.*; + +@QuarkusTest +public class TestUserResource { + + UserFakeRepository userFakeRepository; + + private static final String testUserUUIDStr = "5ed796ba-e0b9-476d-b4e0-6924ae1144be"; + private static final UUID testUserUUID = UUID.fromString(testUserUUIDStr); + private static final String testUserUsername = "test_user"; + private static final String testUserPassword = "bombardillo"; + private static final UserModel testUser = new UserModel() + .withLogin(testUserUsername) + .withPassword(testUserPassword) + .withDisplayName(testUserUsername) + .withAvatar(null) + .withIsAdmin(false); + + private static final String testAdminUUIDStr = "d962b6b0-79fb-40a7-a12d-fdbb416aa7b2"; + private static final UUID testAdminUUID = UUID.fromString(testAdminUUIDStr); + private static final String testAdminUsername = "test_admin"; + private static final String testAdminPassword = "crocodillo"; + private static final UserModel testAdmin = new UserModel() + .withLogin(testAdminUsername) + .withPassword(testAdminPassword) + .withDisplayName(testAdminUsername) + .withAvatar(null) + .withIsAdmin(true); + + @BeforeEach + void setupEach() { + userFakeRepository = new UserFakeRepository(); + + testUser.setId(testUserUUID); + testAdmin.setId(testAdminUUID); + + userFakeRepository.createUser(testUser); + userFakeRepository.createUser(testAdmin); + + QuarkusMock.installMockForType(userFakeRepository, UserRepository.class); + } + + @Nested + class TestSession { + + @Nested + class TestLogin { + + @Test + public void testLoginGood() { + final String testPayload = "{" + + "\"login\": \"" + testUserUsername + "\", " + + "\"password\": \"" + testUserPassword + "\" " + + "} "; + + given() + .contentType(ContentType.JSON) + .body(testPayload) + .when().post("/api/user/login") + .then() + .statusCode(200) + .body("token", anything()); + } + + @Test + public void testLoginBadPassword() { + final String testPayload = "{ " + + "\"login\": \"" + testUserUsername + "\", " + + "\"password\": \"" + testUserPassword + "_123\" " + + "} "; + + given() + .contentType(ContentType.JSON) + .body(testPayload) + .when().post("/api/user/login") + .then() + .statusCode(401) + .body("message", containsString("Password is incorrect")); + } + + @Test + public void testLoginBadUsername() { + final String testPayload = "{" + + "\"login\": \"" + testUserUsername + "_123\", " + + "\"password\": \"" + testUserPassword + "\" " + + "} "; + + given() + .contentType(ContentType.JSON) + .body(testPayload) + .when().post("/api/user/login") + .then() + .statusCode(401) + .body("message", containsString("User does not exist")); + } + + @Test + public void testLoginNonexistant() { + final String testPayload = "{ " + + "\"login\": \"" + "bad_user" + "\", " + + "\"password\": \"" + "wiwiwi" + "\" " + + "} "; + + given() + .contentType(ContentType.JSON) + .body(testPayload) + .when().post("/api/user/login") + .then() + .statusCode(401) + .body("message", containsString("User does not exist")); + } + + @Test + public void testLoginInvalidUsername() { + final String testPayload = "{ " + + "\"login\": \"\", " + + "\"password\": \"" + "wiwiwi" + "\" " + + "} "; + + given() + .contentType(ContentType.JSON) + .body(testPayload) + .when().post("/api/user/login") + .then() + .statusCode(400) + .body("message", containsString("Username field is empty or null")); + } + + @Test + public void testLoginInvalidPassword() { + final String testPayload = "{ " + + "\"login\": \"" + testUserUsername + "\", " + + "\"password\": \"\" " + + "} "; + + given() + .contentType(ContentType.JSON) + .body(testPayload) + .when().post("/api/user/login") + .then() + .statusCode(400) + .body("message", containsString("Password field is empty or null")); + } + + @Test + public void testLoginNullUsername() { + final String testPayload = "{ " + + "\"login\": null, " + + "\"password\": \"" + testUserPassword + "\" " + + "} "; + + given() + .contentType(ContentType.JSON) + .body(testPayload) + .when().post("/api/user/login") + .then() + .statusCode(400) + .body("message", containsString("Username field is empty or null")); + } + + @Test + public void testLoginNullPassword() { + final String testPayload = "{ " + + "\"login\": \"" + testUserUsername + "\", " + + "\"password\": null " + + "} "; + + given() + .contentType(ContentType.JSON) + .body(testPayload) + .when().post("/api/user/login") + .then() + .statusCode(400) + .body("message", containsString("Password field is empty or null")); + } + } + + @Nested + class TestRefresh { + + @Test + @TestSecurity(user = testUserUsername, roles = { "user" }) + @JwtSecurity( + claims = { + @Claim(key = "sub", value = testUserUUIDStr) + } + ) + public void testRefreshGood() { + given() + .when().get("/api/user/refresh") + .then() + .statusCode(200) + .body("token", anything()); + } + + @Test + @TestSecurity(user = testUserUsername, roles = { "user" }) + @JwtSecurity( + claims = { + @Claim(key = "sub", value = "32516464-07c7-4aad-9585-d248e45dbdf8") + } + ) + public void testRefreshBad() { + given() + .when().get("/api/user/refresh") + .then() + .statusCode(401) + .body("message", containsString( + "Session JWT lead to an user who does not exist." + + " You may need to login again.") + ); + } + + @Test + public void testRefreshNotLogged() { + given() + .when().get("/api/user/refresh") + .then() + .statusCode(401) + .body(emptyString()); + } + } + } + + @Nested + class TestUser { + + @Nested + class TestAllUsers { + + @Test + @TestSecurity(user = testAdminUsername, roles = { "admin" }) + @JwtSecurity( + claims = { + @Claim(key = "sub", value = testAdminUUIDStr) + } + ) + public void testAllUsersAuthorized() { + given() + .when().get("/api/user/all") + .then() + .statusCode(200) + .extract() + .as(UserResponse[].class); + } + + @Test + @TestSecurity(user = testUserUsername, roles = { "user" }) + @JwtSecurity( + claims = { + @Claim(key = "sub", value = testUserUUIDStr) + } + ) + public void testAllUsersUnauthorized() { + given() + .when().get("/api/user/all") + .then() + .statusCode(403) + .body(emptyString()); + } + + @Test + public void testAllUsersNotConnected() { + given() + .when().get("/api/user/all") + .then() + .statusCode(401) + .body(emptyString()); + } + } + + @Nested + class TestCreateUser { + + private Response givenTemplate(final String body) { + return given() + .contentType(ContentType.JSON) + .body(body) + .when().post("/api/user"); + } + + @Nested + @TestSecurity(user = testAdminUsername, roles = { "admin" }) + @JwtSecurity( + claims = { + @Claim(key = "sub", value = testAdminUUIDStr) + } + ) + class TestCreateUserAuthenticated { + + @Test + public void testCreateUserValid() { + final String newUsername = "jammy.oiaia"; + final String newPassword = "fred"; + final String testPayload = "{ " + + "\"login\": \"" + newUsername + "\", " + + "\"password\": \"" + newPassword + "\", " + + "\"isAdmin\": \"false\"" + + "}"; + + final long oldCount = userFakeRepository.count(); + + givenTemplate(testPayload) + .then() + .statusCode(200) + .body("id", matchesPattern("^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$")) + .body("login", equalTo(newUsername)) + .body("displayName", equalTo("Jammy Oiaia")) + .body("isAdmin", equalTo(false)) + .body("avatar", equalTo(null)); + + Assertions.assertEquals(userFakeRepository.count(), oldCount + 1); + } + + @Test + public void testCreateUserInvalid() { + final String newUsername = "jammy"; + final String newPassword = "fred"; + final String testPayload = "{ " + + "\"login\": \"" + newUsername + "\", " + + "\"password\": \"" + newPassword + "\", " + + "\"isAdmin\": \"false\"" + + "}"; + + givenTemplate(testPayload) + .then() + .statusCode(400) + .body("message", containsString("Login must only have at most a dot or a dash")); + } + + @Test + public void testCreateUserLoginExistant() { + final String testPayload = "{ " + + "\"login\": \"" + testUserUsername + "\", " + + "\"password\": \"" + testUserPassword + "\", " + + "\"isAdmin\": false" + + " }"; + + givenTemplate(testPayload) + .then() + .statusCode(409) + .body("message", containsString("User with login " + testUserUsername + " already exists")); + } + + @Test + public void testCreateUserNull() { + final String newPassword = "fred"; + final String testPayload = "{ " + + "\"login\": null, " + + "\"password\": \"" + newPassword + "\", " + + "\"isAdmin\": \"false\"" + + "}"; + + givenTemplate(testPayload) + .then() + .statusCode(400) + .body("message", containsString("Username should not be empty or null")); + } + + @Test + public void testCreatePasswordNull() { + final String newLogin = "fred.pp"; + final String testPayload = "{ " + + "\"login\": \"" + newLogin + "\", " + + "\"password\": null, " + + "\"isAdmin\": \"false\"" + + "}"; + + givenTemplate(testPayload) + .then() + .statusCode(400) + .body("message", containsString("Password should not be empty or null")); + } + } + + @Test + @TestSecurity(user = testUserUsername, roles = { "user" }) + @JwtSecurity( + claims = { + @Claim(key = "sub", value = testUserUUIDStr) + } + ) + public void testCreateUserNotAnAdmin() { + final String testPayload = "{ " + + "\"login\": \"" + testUserUsername + "_2\", " + + "\"password\": \"" + testUserPassword + "\", " + + "\"isAdmin\": false\"\"" + + "}"; + + given() + .contentType(ContentType.JSON) + .body(testPayload) + .then() + .statusCode(403) + .body(emptyString()); + } + + @Test + public void testCreateUserNotConnected() { + final String testPayload = "{ " + + "\"login\": " + testUserUsername + "_2\", " + + "\"password\": \"" + testUserPassword + "\", " + + "\"isAdmin\": \"false\"" + + "}"; + + givenTemplate(testPayload) + .then() + .statusCode(401) + .body(emptyString()); + } + } + } +} diff --git a/ping/ping/src/test/resources/application.properties b/ping/ping/src/test/resources/application.properties new file mode 100644 index 0000000..e69de29 diff --git a/tiger-compiler/.clang-format b/tiger-compiler/.clang-format new file mode 100644 index 0000000..3dfd8c9 --- /dev/null +++ b/tiger-compiler/.clang-format @@ -0,0 +1,91 @@ +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlines: Right +AlignOperands: false +AlignTrailingComments: true +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +BinPackArguments: true +BinPackParameters: false +BreakBeforeBraces: Custom +BraceWrapping: + AfterEnum: true + AfterCaseLabel: true + AfterClass: true + AfterControlStatement: true + AfterFunction: true + AfterNamespace: true + AfterStruct: true + AfterUnion: true + AfterExternBlock: true + BeforeCatch: true + BeforeElse: true + IndentBraces: true + SplitEmptyFunction: false + SplitEmptyRecord: false + SplitEmptyNamespace: false +BreakBeforeBinaryOperators: NonAssignment +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeComma +BreakInheritanceList: BeforeComma +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 2 +ContinuationIndentWidth: 2 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +FixNamespaceComments: true +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^<[^.]*>' + Priority: 1 + - Regex: '^<.*\.h>' + Priority: 2 + - Regex: '^' + Priority: 3 + - Regex: '^<.*>' + Priority: 4 + - Regex: '^"' + Priority: 5 + - Regex: '.*' + Priority: 6 +IndentCaseLabels: false +IndentPPDirectives: AfterHash +IndentWidth: 2 +IndentWrappedFunctionNames: false +KeepEmptyLinesAtTheStartOfBlocks: false +Language: Cpp +NamespaceIndentation: All +PointerAlignment: Left +ReflowComments: false +SortIncludes: true +SortUsingDeclarations: false +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInContainerLiterals: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp11 +TabWidth: 2 +UseTab: Never diff --git a/tiger-compiler/.clang-tidy b/tiger-compiler/.clang-tidy new file mode 100644 index 0000000..b84d6d4 --- /dev/null +++ b/tiger-compiler/.clang-tidy @@ -0,0 +1,149 @@ +# Based on CLion Inspection settings +--- +SystemHeaders: false +FormatStyle: none +Checks: '-*, +bugprone-argument-comment, +bugprone-assert-side-effect, +bugprone-bad-signal-to-kill-thread, +bugprone-branch-clone, +bugprone-copy-constructor-init, +bugprone-dangling-handle, +bugprone-dynamic-static-initializers, +bugprone-fold-init-type, +bugprone-forward-declaration-namespace, +bugprone-forwarding-reference-overload, +bugprone-inaccurate-erase, +bugprone-incorrect-roundings, +bugprone-integer-division, +bugprone-lambda-function-name, +bugprone-macro-parentheses, +bugprone-macro-repeated-side-effects, +bugprone-misplaced-operator-in-strlen-in-alloc, +bugprone-misplaced-pointer-arithmetic-in-alloc, +bugprone-misplaced-widening-cast, +bugprone-move-forwarding-reference, +bugprone-multiple-statement-macro, +bugprone-no-escape, +bugprone-parent-virtual-call, +bugprone-posix-return, +bugprone-reserved-identifier, +bugprone-sizeof-container, +bugprone-sizeof-expression, +bugprone-spuriously-wake-up-functions, +bugprone-string-constructor, +bugprone-string-integer-assignment, +bugprone-string-literal-with-embedded-nul, +bugprone-suspicious-enum-usage, +bugprone-suspicious-include, +bugprone-suspicious-memset-usage, +bugprone-suspicious-missing-comma, +bugprone-suspicious-semicolon, +bugprone-suspicious-string-compare, +bugprone-suspicious-memory-comparison, +bugprone-suspicious-realloc-usage, +bugprone-swapped-arguments, +bugprone-terminating-continue, +bugprone-throw-keyword-missing, +bugprone-too-small-loop-variable, +bugprone-undefined-memory-manipulation, +bugprone-undelegated-constructor, +bugprone-unhandled-self-assignment, +bugprone-unused-raii, +bugprone-unused-return-value, +bugprone-use-after-move, +bugprone-virtual-near-miss, +cert-dcl21-cpp, +cert-dcl58-cpp, +cert-err34-c, +cert-err52-cpp, +cert-err60-cpp, +cert-flp30-c, +cert-msc50-cpp, +cert-msc51-cpp, +cert-str34-c, +cppcoreguidelines-interfaces-global-init, +cppcoreguidelines-narrowing-conversions, +cppcoreguidelines-pro-type-member-init, +cppcoreguidelines-pro-type-static-cast-downcast, +cppcoreguidelines-slicing, +google-default-arguments, +google-explicit-constructor, +google-runtime-operator, +hicpp-exception-baseclass, +hicpp-multiway-paths-covered, +misc-misplaced-const, +misc-new-delete-overloads, +misc-no-recursion, +misc-non-copyable-objects, +misc-throw-by-value-catch-by-reference, +misc-unconventional-assign-operator, +misc-uniqueptr-reset-release, +modernize-avoid-bind, +modernize-concat-nested-namespaces, +modernize-deprecated-headers, +modernize-deprecated-ios-base-aliases, +modernize-loop-convert, +modernize-make-shared, +modernize-make-unique, +modernize-pass-by-value, +modernize-raw-string-literal, +modernize-redundant-void-arg, +modernize-replace-auto-ptr, +modernize-replace-disallow-copy-and-assign-macro, +modernize-replace-random-shuffle, +modernize-return-braced-init-list, +modernize-shrink-to-fit, +modernize-unary-static-assert, +modernize-use-auto, +modernize-use-bool-literals, +modernize-use-emplace, +modernize-use-equals-default, +modernize-use-equals-delete, +modernize-use-nodiscard, +modernize-use-noexcept, +modernize-use-nullptr, +modernize-use-override, +modernize-use-transparent-functors, +modernize-use-uncaught-exceptions, +mpi-buffer-deref, +mpi-type-mismatch, +openmp-use-default-none, +performance-faster-string-find, +performance-for-range-copy, +performance-implicit-conversion-in-loop, +performance-inefficient-algorithm, +performance-inefficient-string-concatenation, +performance-inefficient-vector-operation, +performance-move-const-arg, +performance-move-constructor-init, +performance-no-automatic-move, +performance-noexcept-move-constructor, +performance-trivially-destructible, +performance-type-promotion-in-math-fn, +performance-unnecessary-copy-initialization, +performance-unnecessary-value-param, +portability-simd-intrinsics, +readability-avoid-const-params-in-decls, +readability-const-return-type, +readability-container-size-empty, +readability-convert-member-functions-to-static, +readability-delete-null-pointer, +readability-deleted-default, +readability-inconsistent-declaration-parameter-name, +readability-make-member-function-const, +readability-misleading-indentation, +readability-misplaced-array-index, +readability-non-const-parameter, +readability-redundant-control-flow, +readability-redundant-declaration, +readability-redundant-function-ptr-dereference, +readability-redundant-smartptr-get, +readability-redundant-string-cstr, +readability-redundant-string-init, +readability-simplify-subscript-expr, +readability-static-accessed-through-instance, +readability-static-definition-in-anonymous-namespace, +readability-string-compare, +readability-uniqueptr-delete-release, +readability-use-anyofallof' \ No newline at end of file diff --git a/tiger-compiler/.gitignore b/tiger-compiler/.gitignore new file mode 100644 index 0000000..cd3c851 --- /dev/null +++ b/tiger-compiler/.gitignore @@ -0,0 +1,142 @@ +# GNU Autotools related files + +## http://www.gnu.org/software/automake +Makefile.in +/ar-lib +/mdate-sh +/py-compile +/test-driver +/ylwrap +.deps/ +.dirstamp + +## http://www.gnu.org/software/autoconf +autom4te.cache +/autoscan.log +/autoscan-*.log +/aclocal.m4 +/compile +/config.cache +/config.guess +/config.h.in +/config.log +/config.status +/config.sub +/configure +/configure.scan +/depcomp +/install-sh +/missing +/stamp-h1 + +## https://www.gnu.org/software/libtool/ +/ltmain.sh + +## http://www.gnu.org/software/texinfo +/texinfo.tex + +## http://www.gnu.org/software/m4/ +m4/libtool.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/ltversion.m4 +m4/lt~obsolete.m4 + +## Tiger project specific configuration files +libtool +build/ +build-aux/ + +# Generated Makefile +# (meta build system like autotools, +# can automatically generate from config.status script +# (which is called by configure script)) +Makefile + + +# C++ related files + +## Prerequisites +*.d + +## Precompiled Headers +*.gch +*.pch + +## Compiled Object files +*.slo +*.lo +*.o +*.obj + +## Compiled Dynamic libraries +*.so +*.dylib +*.dll + +## Compiled Static libraries +*.lai +*.la +*.a +*.lib + +## Other files generated by compilation +*.hh.bak + +## Executables +*.exe +*.out +*.app +tc +/tests/check_unit +/src/*/test-* +/lib/misc/test-* + +## Tiger project temporary files +tcsh/run +tcsh/python/swig.mk +confdefs.h +conftest* +compile +authors.h +src/parse/prelude.cc +src/version.cc +src/version.stamp +test-*.trs +test-*.log + + +# Python related files +.env +.venv +env/ +venv/ +__pycache__/ + + +# IDEs related files + +## JetBrains IDEs +.idea/ + +## Visual Studio Code +.vscode/ +.history/ + + +# Auto-generated source code +!src/parse/parsetiger.yy +src/parse/parsetiger.* +!src/parse/scantiger.ll +src/parse/scantiger.* +src/parse/location.hh +config.h +*.tmp + +# Custom files +temp/ +tmp/ +CMakeLists.txt +cmake-build-debug/ +*~ +.devcontainer/ diff --git a/tiger-compiler/.gitlab-ci.yml b/tiger-compiler/.gitlab-ci.yml new file mode 100644 index 0000000..6b96e4e --- /dev/null +++ b/tiger-compiler/.gitlab-ci.yml @@ -0,0 +1,188 @@ +image: alpine:3.21.3 + +stages: + - build + - test + - deploy + - release + +.on_mr_only: + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + when: always + +.connect_to_intra_git: + image: + name: alpine/git:2.47.1 + entrypoint: [""] + environment: + name: forge-intra + url: https://intra.forge.epita.fr/epita-ing-assistants-yaka/tiger-2027/root/tiger-2027/ + before_script: + ## + ## Check that all parameters are properly defined + ## + - test -n "$GIT_INTRA_REPO_URL" + - test -n "$GIT_INTRA_GLOBAL_URL" + - test -n "$GIT_DEPLOY_BRANCH" + - test -n "$GIT_RUNNER_NAME" + - test -n "$GIT_RUNNER_EMAIL" + + ## + ## Check that ssh-agent is active. Install it and start it if it isn't yet + ## + - 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )' + - eval $(ssh-agent -s) + + ## + ## Add the SSH key to the known keys + ## + - chmod 400 "$SSH_PRIVATE_KEY" + - ssh-add "$SSH_PRIVATE_KEY" + + ## + ## Properly setup .ssh folder if it hasn't been properly done so already + ## + - mkdir -p ~/.ssh + - chmod 700 ~/.ssh + + ## + ## Add the host (Git repo server) to known hosts + ## + - ssh-keyscan -v -H $GIT_INTRA_GLOBAL_URL >> ~/.ssh/known_hosts + - chmod 644 ~/.ssh/known_hosts + + ## + ## Test connection. Stop job on failure + ## + - ssh -T git@"$GIT_INTRA_GLOBAL_URL" + + ## + ## Set Git credentials + ## + - git config --global user.email "$RUNNER_GIT_EMAIL" + - git config --global user.name "$RUNNER_GIT_NAME" + +# clang-format-job: +# extends: .on_mr_only +# stage: build +# allow_failure: true +# before_script: +# - apk update && apk add --no-cache clang-extra-tools +# - clang-format --version +# script: +# - find src lib -type f '(' -name '*.c?' -o -name '*.h*' ')' | xargs clang-format --Werror --dry-run + +# clang-tidy-job: +# extends: .on_mr_only +# stage: build +# allow_failure: true +# before_script: +# - apk update && apk add --no-cache clang-extra-tools +# - clang-tidy --version +# script: +# # TODO: improve command (this one works but is slow) +# - find src -type f -a -name "*.cc" -exec clang-tidy {} --extra-arg=-std=c++20 -- -Isrc -Ilib \; + +compilation-job: + extends: .on_mr_only + stage: build + image: registry.cri.epita.fr/martial.simon/tiger-compiler/buildenv-slim:1.1.0 + before_script: + - gcc --version + - make --version + - autoreconf --version + script: + - ./bootstrap + - ./configure + - make -j + artifacts: + paths: + - src/tc + expire_in: 7 days + +testing-job: + extends: .on_mr_only + stage: test + image: registry.cri.epita.fr/martial.simon/tiger-compiler/buildenv-slim:1.1.0-pytest + dependencies: + - compilation-job + before_script: + - pytest --version + script: + - cd tests/python + - CI=1 pytest + +push-master-state-to-intra-job: + extends: .connect_to_intra_git + stage: deploy + rules: + - if: $CI_COMMIT_BRANCH == "master" && $CI_PIPELINE_SOURCE == "push" + when: always + script: + ## + ## Check connection to Git repo before trying to push into it + ## + - git ls-remote --exit-code -h "$GIT_INTRA_REPO_URL" || { [ $? -ne 2 ] && return 1; } + + ## + ## Get intra repo reference + ## + - git remote | grep 'intra' || git remote add intra "$GIT_INTRA_REPO_URL" + - git remote update + + ## + ## Debug dumping + ## + - git log --all --oneline --graph --decorate + + ## + ## Push + ## + - git push intra HEAD:"$GIT_DEPLOY_BRANCH" + +push-tag-to-intra-job: + extends: .connect_to_intra_git + stage: deploy + rules: + - if: > + $CI_COMMIT_TAG != null + && ($CI_COMMIT_TAG =~ "/^bonus-dementor-tc\w+.*$/" + || $CI_COMMIT_TAG =~ "/^dementor-tc\w+.*$/" + || $CI_COMMIT_TAG =~ "/^tc\w+.*$/") + when: always + script: + ## + ## Check connection to Git repo before trying to push into it + ## + - git ls-remote --exit-code -h "$GIT_INTRA_REPO_URL" || { [ $? -ne 2 ] && return 1; } + + ## + ## Get intra repo reference + ## + - git remote | grep 'intra' || git remote add intra "$GIT_INTRA_REPO_URL" + - git remote update + + ## + ## Debug dumping + ## + - git log --all --oneline --graph --decorate + + ## + ## Push tag + ## + - git push intra "$CI_COMMIT_TAG" + +release-job: + stage: release + image: registry.gitlab.com/gitlab-org/release-cli:latest + rules: + - if: $CI_COMMIT_TAG != null + needs: + - job: push-tag-to-intra-job + artifacts: false + script: + - echo "creating a new release for tag $CI_COMMIT_TAG..." + release: # See https://docs.gitlab.com/ee/ci/yaml/#release for available properties + tag_name: '$CI_COMMIT_TAG' + description: '$CI_COMMIT_TAG' diff --git a/tiger-compiler/.last-cl-gen b/tiger-compiler/.last-cl-gen new file mode 100644 index 0000000..1f4df3c --- /dev/null +++ b/tiger-compiler/.last-cl-gen @@ -0,0 +1 @@ +fd57e6f759b2331e062539217ab25c3f6978a0fd diff --git a/tiger-compiler/.pre-commit-config.yaml b/tiger-compiler/.pre-commit-config.yaml new file mode 100644 index 0000000..e61f35a --- /dev/null +++ b/tiger-compiler/.pre-commit-config.yaml @@ -0,0 +1,17 @@ +repos: +- repo: local + hooks: + - id: clang-format + name: coding style + entry: clang-format --Werror --dry-run + language: system + files: \.(c|h)$ +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v2.3.0 + hooks: + - id: trailing-whitespace + exclude: ^tests/ +- repo: https://github.com/jumanjihouse/pre-commit-hooks + rev: 2.1.4 + hooks: + - id: forbid-binary diff --git a/tiger-compiler/AUTHORS.txt b/tiger-compiler/AUTHORS.txt new file mode 100644 index 0000000..5d32ee5 --- /dev/null +++ b/tiger-compiler/AUTHORS.txt @@ -0,0 +1,4 @@ +Clément Metz +Grégoire Le Bihan +Martial Simon +Maxence Moncel diff --git a/tiger-compiler/ChangeLog b/tiger-compiler/ChangeLog new file mode 100644 index 0000000..b82488f --- /dev/null +++ b/tiger-compiler/ChangeLog @@ -0,0 +1,69023 @@ +2025-04-07 Mael Cravero + + Version 1.94.d for 2027-tc-L.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2025-03-25 Mael Cravero + + Version 1.94.c for 2027-tc-4.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2025-03-19 Mael Cravero + + Version 1.94.b for 2027-tc-3.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2025-03-10 Mael Cravero + + Version 1.94.a for 2027-tc-12.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog, Makefile.am: here. + +2025-02-27 Aurélien Delval-Carbonne + + llvmtranslate: fix missing static libraries + + * src/llvmtranslate/local.am: Here. + +2025-02-20 Clément Fabien + + flake: update lock to get new buildenv version * flake.lock: Here. + +2025-02-14 Clément Fabien + + autoreconf: re added comment on boost * configure.ac: Here. + +2025-02-14 Romain LE MIERE + + flake: change place of comment to prevent errors + + * flake.nix: Here. + +2025-02-14 Clément Fabien + + flake: added comments to only include arm in tc-9 * flake.nix: Here. + +2025-02-14 Clément Fabien + + flake: rework flake & added arm packages * configure.ac, * flake.lock, * flake.nix: Here. + +2025-02-14 Julie Fiadino + + authors: add 2025 maintainers + + * AUTHORS.txt: Here. + +2025-02-14 Julie Fiadino + + authors: align authors emails + + * AUTHORS.txt: Here. + +2025-02-14 Elsa Keirouz + Raphaël Montes + + escapes-collector: do not escape locals escaped in nested call exp + + + * src/llvmtranslate/escapes-collector.cc: Here. + +2025-02-14 Elsa Keirouz + + translation: do not reuse same pointer + + This aims to ensure that each tree node is represented + by a different object even when they represent the same + chunk of code semantically. + This is especially useful when renaming different uses + of a same temporary for translation to SSA form. + + * src/translate/translation.cc: Here. + +2025-02-14 lucas.plantrose + + fix(Nix): reverted the buildenv url in the flake for stability + + * flake.nix: Here. + +2025-02-11 Aurélien Delval-Carbonne + + testsuite: consider all steps in test passed status + + * tests/testsuite/test_runner.py: Here. + +2025-02-11 Julie Fiadino + + ast: apply clang-format on header files + + * src/ast/chunk.hh, + * src/ast/dumper-dot.hh: Here. + +2025-02-11 Aurélien Delval-Carbonne + + misc: fix compilation warning with map concept + + Makes sure to compare the type of the iterator value and considers the map key as a const value. + + * lib/misc/concepts.hh: Here. + +2025-02-03 Julie Fiadino + + object-renamer: add comments for student FIXMEs + + * src/object/renamer.cc: Here. + +2025-01-25 Elsa Keirouz + + object-renamer: add test for edge-case + + * tests/object-good/attribute-init-by-var-in-let.-e.ia32.s, + * tests/object-good/attribute-init-by-var-in-let.-e.mips.s, + * tests/object-good/attribute-init-by-var-in-let.-e.u.mips.s, + * tests/object-good/attribute-init-by-var-in-let.err, + * tests/object-good/attribute-init-by-var-in-let.hir, + * tests/object-good/attribute-init-by-var-in-let.hpr, + * tests/object-good/attribute-init-by-var-in-let.ia32.s, + * tests/object-good/attribute-init-by-var-in-let.lir, + * tests/object-good/attribute-init-by-var-in-let.lpr, + * tests/object-good/attribute-init-by-var-in-let.mips.s, + * tests/object-good/attribute-init-by-var-in-let.out, + * tests/object-good/attribute-init-by-var-in-let.pan, + * tests/object-good/attribute-init-by-var-in-let.sta, + * tests/object-good/attribute-init-by-var-in-let.tig, + * tests/object-good/attribute-init-by-var-in-let.u.mips.s: Here. + +2025-01-25 Elsa Keirouz + + object-renamer: visit letexp to set within_class_ty_ + + * src/object/renamer.cc, + * src/object/renamer.hh: Here. + +2025-01-16 Aurélien Delval-Carbonne + + llvm: fix double malloc instruction registration + + * src/llvmtranslate/translator.cc: Here. + +2025-01-16 Aurélien Delval-Carbonne + + ci: fix used Docker image in generated pipelines + + Switch to GitLab one. + + * buildfarm/gen-pipeline.py: Here. + +2025-01-15 lucas.plantrose + + fix: changed regex for getting versions + + * bootstrap: Here. + +2024-12-10 lucas.plantrose + + feat: updating python version in flake to match buildenv docker image + + * flake.nix: Here. + +2024-12-10 lucas.plantrose + + fix: Compilation error where raw string in the runtime.cc was ending early + + * src:llvmtranslate/generate-runtime.sh: Here. + +2024-12-10 Nicolas Fidel + + nix: add arm dependency + + The gcc arm binary does not have the same name as on debian it is called + arm-unknown-linux-gnueabihf-gcc + + * flake.nix: Here. + +2024-11-22 Elsa Keirouz + + canon: fix comparing raw ptr to misc::ref with gcc-13 + + * src/canon/canon.cc: Here. + +2024-11-22 Nicolas Fidel + + dumper-dot: fix include for gcc-13 + + * dev/ast-dumper-dot-gen.py, + * src/ast/dumper-dot.hh, + * src/ast/dumper-dot.hxx: Here. + +2024-11-22 Elsa Keirouz + + llvm: update in compliance to llvm-18 + + - change directory paths + - CreateMalloc is now within IRBuilderBase + - use PointerType::get + + * src/llvmtranslate/translator.cc: Here. + +2024-11-22 Elsa Keirouz + + llvm: update header file directory + + * src/llvmtranslate/tasks.cc: Here. + +2024-11-22 Elsa Keirouz + + llvm: use PointerType::get + + * src/llvmtranslate/llvm-type-visitor.cc: Here. + +2024-11-22 Ethan Zouzoulkowsky + + nix: updated flake to nixpgks 24.05 & added llvm-18 + + * flake.nix: Here. + +2024-11-22 Elsa Keirouz + + nix: remove obsolete clang-tools_14 package + + * flake.nix: Here. + +2024-11-22 Elsa Keirouz + + nix: add i686 for missing gnu/stubs-32.h + + * flake.nix: Here. + +2024-11-22 Elsa Keirouz + + nix: update to include llvm & clang 18 + + * flake.lock, + * flake.nix: Here. + +2024-11-22 Elsa Keirouz + + auotools: require clang > 18 + + * configure.ac: Here. + +2024-11-22 Elsa Keirouz + + autotools: bump to llvm and clang 18 + + * configure.ac: Here. + +2024-11-18 Ghislain Bonnard + + ci: change used image to gitlab one + + Change ci image which was lrde one because it was no longer maintained. + + * .gitlab-ci.yml: Here. + +2024-09-10 Mael Cravero + + ast: push missing updates to wrapped_ field + + * src/ast/ast.hh, + * src/ast/ast.hxx, + * src/ast/exp.hh, + * src/ast/exp.hxx: here. + +2024-06-20 Elsa Keirouz + + fix: named comment mentions function-dec + + * src/type/named.hh: Here. + +2024-06-20 Elsa Keirouz + + type: clean up code in object type-checker + + * src/object/type-checker.cc: Here. + +2024-06-20 Elsa Keirouz + + type: fix comments in method + + * src/type/method.hh: Here. + +2024-06-15 Elsa Keirouz + + liveness: rephrase comment + + * src/liveness/liveness.cc: Here. + +2024-06-12 Elsa Keirouz + + object: fix given code at tc-4 + + * src/object/fwd.hh, + * src/object/libobject.cc, + * src/object/libobject.hh, + * src/object/local.am, + * src/object/tasks.cc, + * src/object/tasks.hh, + * src/object/type-checker.cc, + * src/type/class.cc, + * src/type/class.hh, + * src/type/class.hxx: Here. + +2024-06-12 Ghislain Bonnard + + ast: move wrapper attribute to exp class + + * dev/ast-cloner-gen.py, + * src/ast/ast.yml, + * src/astclone/cloner.cc, + * src/desugar/desugar-visitor.cc, + * src/inlining/inliner.cc, + * src/inlining/pruner.cc: Here. + +2024-06-12 Elsa Keirouz + + tests: untested edge case for record init + + * tests/good/rec-in-rec.-e.ia32.s, + * tests/good/rec-in-rec.-e.mips.s, + * tests/good/rec-in-rec.-e.u.mips.s, + * tests/good/rec-in-rec.err, + * tests/good/rec-in-rec.hir, + * tests/good/rec-in-rec.hpr, + * tests/good/rec-in-rec.ia32.s, + * tests/good/rec-in-rec.lir, + * tests/good/rec-in-rec.lpr, + * tests/good/rec-in-rec.mips.s, + * tests/good/rec-in-rec.out, + * tests/good/rec-in-rec.sta, + * tests/good/rec-in-rec.tig, + * tests/good/rec-in-rec.u.mips.s: Here. + +2024-06-11 Nicolas Fidel + + clean: remove more deprecated files + + * Makefile.am, + * dev/local.am: Remove deprecated rules. + + * build-aux/local.am, + * build-aux/panther.el, + * build-aux/rebox.el: Delete. + + * debian/*: Delete. + + * dev/install-bison.sh, + * dev/install-generic.sh, + * dev/install-ghc-osx.sh, + * dev/install-havm.sh, + * dev/install-nolimips.sh: Delete. Replaced by buildend. + + * dev/tc.css, + * dev/tc.png, + * dev/tc.texi, + * dev/stats.sh: Delete. + + * licenses/local.am: Delete. No third parties are used anymore. + + * tools/tiger-interpretor.pl, + * tools/toc.php: Delete. + +2024-06-11 Nicolas Fidel + + Makefile.am: clean unsued rules + + * Makefile.am: Here. + +2024-06-11 Pierre Brandone + + clean: remove deprecated files + + I moved the best-of to the project's wiki + + * .gitattributes, + * Makefile.am, + * dev/stagize_conf.yml: Here, + * .dir-locals.el, + * TODO.txt, + * best-of.txt, + * config.site, + * debian/changelog, + * debian/compat, + * debian/control, + * debian/copyright, + * debian/local.am, + * debian/rules, + * reparens: Delete. + +2024-06-11 Mael Cravero + + Version 1.93.k for 2026-tc-9.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2024-06-10 Mael Cravero + + Version 1.93.j for 2026-tc-8.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2024-06-03 Mael Cravero + + Version 1.93.i for 2026-tc-7.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2024-05-27 Mael Cravero + + Version 1.93.h for 2026-tc-6.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2024-05-13 Mael Cravero + + Version 1.93.g for 2026-tc-5.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2024-05-13 Ghislain Bonnard + + canon: add fixme in reorder function + + * src/canon/canon.cc: Here. + + canon: fix comment + +2024-05-13 Elsa Keirouz + + tests: add object binding test case + + * tests/object-bind/use-attr-without-self-in-method.tc-err, + * tests/object-bind/use-attr-without-self-in-method.tc-sta, + * tests/object-bind/use-attr-without-self-in-method.tig: Here. + +2024-05-13 Elsa Keirouz + + fix: comment regarding ForExp in translator + + * src/translate/translator.hh: Here. + +2024-05-12 Elsa Keirouz + + pretty-printer: do not display bindings before tc-3 + + * src/ast/pretty-printer.cc: Here. + +2024-04-15 Mael Cravero + + Version 1.93.f for 2026-tc-EXTS.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2024-04-15 Mael Cravero + + Makefile.am: allow multiple chars in stages names + + * Makefile.am: here. + +2024-04-08 Mael Cravero + + Version 1.93.e for 2025-tc-L.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2024-03-28 Mael Cravero + + Version 1.93.d for 2025-tc-4.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2024-03-21 Mael Cravero + + Version 1.93.c for 2025-tc-3.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2024-03-18 Mael Cravero + + Version 1.93.b for 2025-tc-2.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2024-03-05 Mael Cravero + + Version 1.93.a for 2025-tc-1.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog, Makefile.am: here. + +2024-03-04 Ghislain Bonnard + + ast: change marks for def_ accessors + + * dev/ast-nodes-gen.py, + * dev/stagize_conf.yml, + * src/ast/break-exp.hh, + * src/ast/break-exp.hxx, + * src/ast/call-exp.hh, + * src/ast/call-exp.hxx, + * src/ast/method-call-exp.hh, + * src/ast/method-call-exp.hxx: Here. + +2024-03-04 Mael Cravero + + ast: update studentize marks + + * src/ast/array-exp.cc, + * src/ast/array-exp.hh, + * src/ast/array-exp.hxx, + * src/ast/assign-exp.cc, + * src/ast/assign-exp.hh, + * src/ast/assign-exp.hxx, + * src/ast/break-exp.cc, + * src/ast/break-exp.hh, + * src/ast/break-exp.hxx, + * src/ast/call-exp.cc, + * src/ast/call-exp.hh, + * src/ast/call-exp.hxx, + * src/ast/escapable.hh, + * src/ast/escapable.hxx, + * src/ast/field-var.cc, + * src/ast/field-var.hh, + * src/ast/field-var.hxx, + * src/ast/if-exp.cc, + * src/ast/if-exp.hh, + * src/ast/if-exp.hxx, + * src/ast/let-exp.cc, + * src/ast/let-exp.hh, + * src/ast/let-exp.hxx, + * src/ast/method-call-exp.cc, + * src/ast/method-call-exp.hh, + * src/ast/method-call-exp.hxx, + * src/ast/object-exp.cc, + * src/ast/object-exp.hh, + * src/ast/object-exp.hxx, + * src/ast/op-exp.cc, + * src/ast/record-exp.cc, + * src/ast/record-exp.hh, + * src/ast/record-exp.hxx, + * src/ast/record-ty.cc, + * src/ast/record-ty.hh, + * src/ast/record-ty.hxx, + * src/ast/seq-exp.cc, + * src/ast/seq-exp.hh, + * src/ast/seq-exp.hxx, + * src/ast/string-exp.cc, + * src/ast/string-exp.hh, + * src/ast/string-exp.hxx: here. + + * src/ast/ast.yml: update comment for escapable. + +2024-03-04 Nicolas Fidel + + ast-gen: add autoformatting on ast gen + + * dev/tools.py: Here. + +2024-03-04 Nicolas Fidel + + nix: add black to format python code + + * flake.nix: Here. + +2024-03-03 Vinh-Toan Phan + + nix: bump version nixpkgs + + * flake.nix, + * flake.lock: Here. + +2024-02-29 raphael.montes + + tests: added escape-in-inner-functionchunk tests after fixing it on TC-L + + * tests/good/escape-in-inner-functionchunk.-e.ia32.s, + * tests/good/escape-in-inner-functionchunk.-e.mips.s, + * tests/good/escape-in-inner-functionchunk.-e.u.mips.s, + * tests/good/escape-in-inner-functionchunk.err, + * tests/good/escape-in-inner-functionchunk.hir, + * tests/good/escape-in-inner-functionchunk.hpr, + * tests/good/escape-in-inner-functionchunk.ia32.s, + * tests/good/escape-in-inner-functionchunk.lir, + * tests/good/escape-in-inner-functionchunk.lpr, + * tests/good/escape-in-inner-functionchunk.mips.s, + * tests/good/escape-in-inner-functionchunk.out, + * tests/good/escape-in-inner-functionchunk.sta, + * tests/good/escape-in-inner-functionchunk.tig, + * tests/good/escape-in-inner-functionchunk.u.mips.s: Here. + +2024-02-29 raphael.montes + + llvmtranslate: saving did_modify_ when visiting inner FunctionChunk + + * src/llvmtranslate/escapes-collector.cc: Here. + +2024-02-29 Ghislain Bonnard + + testsuite: add tests for TC-EXTS + + * tests/configurations/testsuite.yaml.in: Here. + +2024-02-29 Ghislain Bonnard + + tcsh: update marks + + Since we changed extensions distribution, we do not want to + add overload and combine to TESTS at tc4. + + * tcsh/python/Makefile.am: Here. + +2024-02-29 Ghislain Bonnard + + testsuite: divide rename feature in two + + Separate the object rename in a new feature as object renaming + is handle in object-desugar part which is now in TC-EXTS. + + * tests/configurations/testsuit.yaml.in: Here. + +2024-02-29 Ghislain Bonnard + + stagize: change combine-types-compute balises + + The add of combine-types-computes are now made after + TC-L instead of at TC-4 for the tasks bound and typed. + + * dev/stagize_conf.yml, + * dev/studentize_tc.conf, + * src/bind/tasks.hh, + * src/type/tasks.hh: Here. + +2024-02-29 Ghislain Bonnard + + testsuite: change overload configuration + + Overload is now tested after tc-L. + + * tests/configurations/testsuite.yaml.in: Here. + +2024-02-29 Ghislain Bonnard + + stagize: change config to match new distribution + + Extensions will now be distributed after TC-L. + + * src/desugar/libdesugar.hh, + * src/desugar/libdesugar.hxx, + * src/desugar/tasks.hh, + * src/desugar/tasks.cc, + * src/desugar/local.am, + * dev/studentize_tc.yml, + * dev/stagize_conf.yml: Here. + +2024-02-29 Dylan INNOU + + feat(misc/unique): added explicit FIXME comments + + * lib/misc/unique.hxx: Here. + +2024-02-29 Elsa Keirouz + + escapes-visitor: factorize code to use definition_site_ attribute + + * src/escapes/escapes-visitor.cc, + * src/escapes/escapes-visitor.hh: Here. + +2024-02-29 Ghislain Bonnard + + llvmtranslate: fixed opexp between void types + + OpExp between void types are now working without + consideration for the llvm type assigned for the value. + Changed translation of void type from llvm void to constant + int. + + * src/llvmtranslate/llvm-type-visitor.cc, + * src/llvmtranslate/translator.cc: Here. + +2024-02-29 Elsa Keirouz + + escapes: use escapes-visitor for llvm lambda lifting + + * src/llvmtranslate/escapes-collector.cc, + * src/llvmtranslate/escapes-collector.hh: Here. + +2024-02-29 Elsa Keirouz + Ghislain Bonnard + + escapes: compute escapes before llvm-compute + + + * src/llvmtranslate/tasks.hh: Here. + +2024-02-29 Elsa Keirouz + Elsa Keirouz + Raphaël Montes + + escapes: add def_site attribute + + Edit ast::Escapable to store the pointer to the function in which + each variable are defined. + Add 'include' attribute to attribute python class which tells whether we + want to include an attribute ast class. + + + * dev/ast-dumper-dot-gen.py, + * dev/ast-nodes-gen.py, + * dev/ast.py, + * src/ast/ast.yml, + * src/ast/escapable.hh, + * src/escapes/escapes-visitor.cc, + * src/escapes/escapes-visitor.hh: Here. + +2024-02-28 Author timothee.strouk + + tasks: escape if clone has been done + + Add a boolean that do the escape again after a desugar was done + + * src/desugar/tasks.cc, + * src/escapes/libescapes.cc, + * src/escapes/libescapes.hh: Here. + +2024-02-27 Mael Cravero + + target: use more specific default cases in matchers + + The auto keyword was previously used in the case of all default cases in + patterns, much like the _ pattern in OCaml/Rust... This is akin to + templating the lambdas and causes monomorphization, which increases + compilation times (and drastically increases the number of warning when + compiling with GCC). We can instead default to the super type of all + variants in most cases to mitigate this issue, auto being still + required in some places to have proper overload resolution when + multiple patterns could overlap (using auto = using templates, which + generates lambdas for each possible case individually). + + * src/target/arm/arm-matcher.cc, + * src/target/ia32/gas-matcher.cc, + * src/target/mips/spim-matcher.cc: here. + +2024-02-27 Mael Cravero + + tree-variants: use raw pointers + + Variants used for pattern-matching in the middle- and back-end were + previously set as variants between misc::ref smart pointers. This caused + hindrances such as unnecessary ownership sharing and made generating + variants from virtual methods difficult. Using raw pointers instead + should work as well, while avoiding such problems and potentially + increasing performances. + + * src/tree/tree-variants.hh: switch to raw pointers. + + * src/tree/local.am, + * src/tree/tree-variants.hxx: delete. + + * src/tree/tree.hh, + * src/tree/exp.hh, + * src/tree/stm.hh, + * src/tree/binop.cc, + * src/tree/binop.hh, + * src/tree/call.cc, + * src/tree/call.hh, + * src/tree/cjump.cc, + * src/tree/cjump.hh, + * src/tree/const.cc, + * src/tree/const.hh, + * src/tree/eseq.cc, + * src/tree/eseq.hh, + * src/tree/jump.cc, + * src/tree/jump.hh, + * src/tree/label.cc, + * src/tree/label.hh, + * src/tree/mem.cc, + * src/tree/mem.hh, + * src/tree/move.cc, + * src/tree/move.hh, + * src/tree/name.cc, + * src/tree/name.hh, + * src/tree/seq.cc, + * src/tree/seq.hh, + * src/tree/sxp.cc, + * src/tree/sxp.hh, + * src/tree/temp.cc, + * src/tree/temp.hh: update variants method. + + * src/canon/canon.cc, + * src/canon/canon.hh, + * src/canon/exp-matcher.cc, + * src/canon/exp-matcher.hh, + * src/canon/stm-matcher.cc, + * src/canon/stm-matcher.hh, + * src/target/arm/arm-codegen.cc, + * src/target/arm/arm-matcher.cc, + * src/target/arm/arm-matcher.hh, + * src/target/ia32/gas-codegen.cc, + * src/target/ia32/gas-matcher.cc, + * src/target/ia32/gas-matcher.hh, + * src/target/matcher.cc, + * src/target/matcher.hh, + * src/target/mips/spim-codegen.cc, + * src/target/mips/spim-matcher.cc, + * src/target/mips/spim-matcher.hh: update matchers. + +2024-02-27 Elsa Keirouz + + overload: remove inherited methods + + check_main, scope_begin and scope_end are all inherited from the Binder. + Since these are no longer given to students, we have removed their uses + and declarations. + + * src/overload/binder.cc, + * src/overload/binder.hh: Here. + +2024-02-27 Elsa Keirouz + + escapes: remove map include which hints to attribute. + + * src/escapes/escapes-visitor.hh: Here. + +2024-02-27 Dylan I + + renamer: remove hint map include which hints at attribute. + + * src/bind/renamer.hh: Here. + +2024-02-27 Elsa Keirouz + + binder: update given code for tc-3. + + * src/bind/binder.cc, + * src/bind/binder.hh, + * src/bind/binder.hxx, + * src/bind/renamer.cc, + * src/bind/renamer.hh, + * src/bind/renamer.hxx, + * src/object/binder.cc: Here. + +2024-02-26 Ghislain Bonnard + + ast: add hide_accessors attribute + + Add a hide_accessors attribute to hide some + accessors like def_ attribute for tc3. + + * dev/ast-nodes-gen.py, + * dev/ast.py, + * src/ast/ast.yml: Here. + +2024-02-26 Ghislain Bonnard + + ast: remove hide attribute from ast nodes of TC2 + + Remove hide attribute from ast.yml to give all nodes to + students at TC2. Create hide_cloner and hide_dumper attributes + and add them to the concerned nodes to keep their hiding in the + cloner and the dumper. + + * dev/ast-dumper-dot-gen.py, + * dev/ast-cloner-gen.py, + * dev/ast.py, + * src/ast/README-student.txt, + * src/ast/ast.yml: Here. + +2024-02-26 Ethan Zouzoulkowsky + + tests: added void-var-usage test after fixing it on TC-L + + * tests/good/void-var-usage.-e.ia32.s, + * tests/good/void-var-usage.-e.mips.s, + * tests/good/void-var-usage.-e.u.mips.s, + * tests/good/void-var-usage.err, + * tests/good/void-var-usage.hir, + * tests/good/void-var-usage.hpr, + * ests/good/void-var-usage.ia32.s, + * tests/good/void-var-usage.lir, + * tests/good/void-var-usage.lpr, + * tests/good/void-var-usage.mips.s, + * tests/good/void-var-usage.out, + * tests/good/void-var-usage.sta, + * tests/good/void-var-usage.tig, + * tests/good/void-var-usage.u.mips.s: Here. + +2024-02-26 Ethan Zouzoulkowsky + + nix: updated stdenv LLVM version + added clang_tools into dev packages + + This llvmPackages_13 was something I forgot to bump earlier. clang_tools + is needed to get a nix-patched clangd, thus a working lsp on NixOS + + * flake.nix: Here. + +2024-02-26 Ethan Zouzoulkowsky + + src: llvmtranslate: fixed translation for SimpleVar in void case + + In the earlier bump, this case was not tought of not handled and broke + on the assistant's testsuite, this is now fixed + + * src/llvmtranslate/translator.cc: Here. + +2024-02-20 Vinh-Toan Phan + + testsuite: edit config file + + Removed the flags related to type checking when testing TC3. + + * tests/configurations/testsuite.yaml.in: Here. + +2024-02-03 Ghislain Bonnard + + inliner: use of parent graph for nested functions + + Change the way of handling recursive nested functions for the inliner + by using a parentgraph. + + * tests/tesuite/env.py: update timeouts, + * dev/stagize_conf.yml, + * src/callgraph/local.am, + * src/callgraph/tasks.cc, + * src/callgraph/tasks.hh, + * src/callgraph/libcallgraph.cc, + * src/callgraph/libcallgraph.hh, + * src/callgraph/call-graph-visitor.cc, + * src/callgraph/call-graph-visitor.hh, + * src/callgraph/fundec-graph.hh, + * src/callgraph/fundec-graph.hxx, + * src/inlining/inliner.cc, + * src/inlining/inliner.hh: Here. + +2024-01-30 Ghislain Bonnard + + testsuite: edit config files + + Evaluate bonus with TC-9 to check their execution and add missing tests + configuration. + + * tests/configurations/testsuite.yaml.in, + * tests/testsuite/externals.py: Here. + + * tests/testsuite/env.py: update timeouts. + +2024-01-30 Mathieu Merienne + + testsuite: add requirements + + * requirements.txt: Create file. + +2024-01-30 Mathieu Merienne + + testsuite: update config to not reparsing every output possible + + * tests/configurations/testsuite.yaml.in: Here. + +2024-01-30 Mathieu Merienne + + testsuite: remove hide-tests and modify verbose behavior + + * tests/Makefile.am, + * tests/testsuite/classes.py, + * tests/testsuite/env.py, + * tests/testsuite/report.py, + * tests/testsuite/report_classes.py, + * tests/testsuite/tc_check.py: Here. + +2024-01-30 Mathieu Merienne + + testsuite: remove reparsing with the `REF` + + * configurations/binaries.yaml.in, + * testsuite/binaries.py, + * testsuite/test_runner.py: Here. + +2024-01-30 Mathieu Merienne + + testsuite: simplify stderr checking + + * testsuite/report_classes.py, + * testsuite/test_runner.py: Here. + +2024-01-30 Mathieu Merienne + + testsuite: Rework testsuite.yaml.in + + * configurations/testsuite.yaml.in: Here. + +2024-01-30 Mael Cravero + + testsuite: run with -j 4 in make check + + * tests/Makefile.am: here. + +2024-01-30 Mathieu Merienne + + testsuite: display passed tests by default + + * testsuite/classes.py, + * testsuite/env.py, + * testsuite/report.py, + * testsuite/report_classes.py, + * testsuite/tc_check.py: Here. + +2024-01-30 Mathieu Merienne + + testsuite: split into multiple files + + * tests/testsuite/binaries.py, + * tests/testsuite/classes.py, + * tests/testsuite/config_parser.py, + * tests/testsuite/env.py, + * tests/testsuite/error_handling.py, + * tests/testsuite/exec.py, + * tests/testsuite/externals.py, + * tests/testsuite/generate_tests.py, + * tests/testsuite/report.py, + * tests/testsuite/report_classes.py, + * tests/testsuite/tc_check.py, + * tests/testsuite/test_runner.py, + * tests/testsuite/utils.py: Create files. + * dev/stagize_conf.yml, + * flake.lock, + * tests/Makefile.am, + * tests/README.md: Here. + +2024-01-30 Mathieu Merienne + + testsuite: switch config files to yaml + + * tests/configurations/binaries.yaml.in, + * tests/configurations/testsuite.yaml.in: Create files. + * tests/json_inputs/testsuite.json, + * tests/tc-check.in: Delete files. + * .gitignore, + * configure.ac: Here. + +2024-01-30 Mathieu Merienne + + tests/README: migrate documentation on gitlab wiki + + Convert .txt into .md to enforce readibility + + * tests/README.txt -> tests/README.md: Create. + +2024-01-30 Mathieu Merienne + + flake.nix: adapt to the testsuite + + dump python version and install few python packages + + * flake.nix: Here. + +2024-01-30 Mathieu Merienne + + pre-commit: adapt to the testsuite + + * .pre-commit-config.yaml: Here. + +2024-01-30 Mathieu Merienne + Arthur Hugonnot + + testsuite: replace perl testsuite by python + + + * configure.ac, + * tests/Makefile.am, + * tests/README.txt: here. + * tests/tc-check.in: switch to python. + * tests/json_inputs/testsuite.json: new testsuite config file. + +2024-01-30 Ghislain Bonnard + + factory: delete the TigerFactory class + + Delete TigerFactory class and replace its methods by functions. + + * src/parse/parsetiger.yy, + * src/parse/tiger-driver.hh, + * src/parse/tiger-factory.hh, + * src/parse/tiger-factory.hxx: Here. + +2024-01-30 ghislain.bonnard + + parser: rename TigerParser and TigerDriver with a better name + + Rename TigerParser by TigerDriver and TigerDriver by TigerFactory. + + * dev/stagize_conf.yml, + * dev/stats.sh, + * dev/tc.texi, + * src/parser/fwd.hh, + * src/parse/generate-prelude.sh, + * src/parse/libparse.cc, + * src/parse/local.am, + * src/parse/parsetiger.yy, + * src/parse/scantiger.ll, + * src/parse/tiger-parser.cc -> tiger-driver.cc, + * src/parser/tiger-driver.hh, + * src/parse/tiger-factory.hh, + * src/parse/tiger-driver.hxx -> tiger-factory.hxx, + * src/parse/tiger-parser.hh, + * tcsh/src/tiger_parse.i: Here. + +2024-01-04 Pierre Brandone + + ci: use dynamic pipelines for distchecks + + Generate distcheck and studistcheck jobs upon the MR updated files. + + * .gitlab-ci.yml, + * buildfarm/gen-pipeline.py: Here. + +2023-11-30 Ghislain Bonnard + + tests: add nested-recursive-functions test + + Add the test fixed for TC-I. + + * tests/good/nested-recursive-functions.-e.mips.s, + * tests/good/nested-recursive-functions.-e.u.mips.s + * tests/good/nested-recursive-functions.err, + * tests/good/nested-recursive-functions.hir, + * tests/good/nested-recursive-functions.hpr, + * tests/good/nested-recursive-functions.ia32.s, + * tests/good/nested-recursive-functions.lir, + * tests/good/nested-recursive-functions.lpr, + * tests/good/nested-recursive-functions.mips.s, + * tests/good/nested-recursive-functions.out, + * tests/good/nested-recursive-functions.sta, + * tests/good/nested-recursive-functions.tig, + * tests/good/nested-recursive-functions.u.mips.s: Here. + +2023-11-30 Ghislain Bonnard + + inliner: handle recursive nested functions + + * src/callgraph/call-graph-visitor.cc, + * src/callgraph/call-graph-visitor.hh, + * src/inlining/pruner.cc, + * src/inlining/pruner.hh: Here. + +2023-11-16 Mathieu Merienne + + astclone: clone wrapper attribute + + Change the python script which generates the cloner to clone the wrapper + attribute. Modify the classes which inherit from the cloner to do the same. + + * dev/ast-cloner-gen.py, + * src/astclone/cloner.cc, + * src/desugar/desugar-visitor.cc, + * src/inlining/inliner.cc, + * src/inlining/pruner.cc: Here. + +2023-11-16 Mael Cravero + + authors: increase min length to fit long names + + * build-aux/bin/authors.h-gen: here. + +2023-10-27 Vinh-Toan Phan + + shebang: make perl shebang POSIX + + * build-aux/bin/diff-dirs, + * build-aux/bin/fuse-switch, + * build-aux/bin/logeval-to-csv, + * dev/reheader.pl, + * dev/rename-headers.pl, + * dev/studentize.pl, + * tests/tc-check.in, + * tools/tiger-interpretor.pl: Here. + +2023-09-20 Mael Cravero + + ci: make pre-commit optional and part of check + + This prevents having CI failures for formatting errors and having to + wait on pre-commit to finish in order to start proper tests. + + * .gitlab-ci.yml: here. + +2023-09-20 Mael Cravero + + ci: make some jobs optional when not on master + + Waiting for distchecks and studistchecks jobs is time consuming and not + always necessary. + + * .gitlab-ci.yml: here. + +2023-09-20 Nicolas Fidel + + buildfarm: remove unused script distcheck + + * .gitlab-ci.yml, + * buildfarm/distcheck: Here. + +2023-09-20 Nicolas Fidel + + gitlab ci: add needs to improve speed + + * .gitlab-ci.yml: Here. + +2023-06-20 Mathieu Merienne + + target: fix rewrite_programs marks + + * src/target/arm/arm-codegen.cc, + * src/target/ia32/gas-codegen.cc, + * modified: src/target/mips/spim-codegen.cc: Here. + +2023-06-17 Mael Cravero + + Version 1.92.k for 2025-tc-9.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2023-06-11 Mael Cravero + + Version 1.92.j for 2025-tc-8.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2023-06-05 Mael Cravero + + Version 1.92.h for 2025-tc-7.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2023-05-30 Mael Cravero + + Version 1.92.g for 2025-tc-6.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2023-05-15 Mael Cravero + + Version 1.92.f for 2025-tc-5.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2023-04-16 Nicolas Fidel + + nix: bump to llvm14 + + * flake.nix: Here. + +2023-04-16 Mael Cravero + + Version 1.92.e for 2025-tc-L.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2023-04-01 Mael Cravero + + Version 1.92.d for 2025-tc-4.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2023-03-26 Mael Cravero + + Version 1.92.c for 2025-tc-3.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2023-03-18 Mael Cravero + + Version 1.92.b for 2025-tc-2.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog: here. + +2023-03-05 Mael Cravero + + common.hh: remove extraneous fixme marks + + * src/common.hh: here. + +2023-03-03 Mael Cravero + + stagize: do not ship generated file scantiger.hh + + * dev/stagize_conf.yml: here. + +2023-03-02 Mael Cravero + + Version 1.92.a for 2025-tc-1.0 + + * NEWS.txt, configure.ac, .last-cl-gen, ChangeLog, Makefile.am: here. + +2023-03-02 Mael Cravero + + AUTHORS: update contributions + + * AUTHORS.txt: here. + +2023-03-02 Mael Cravero + + AUTHORS: add 2024 maintainers + + * AUTHORS.txt: here. + +2023-03-02 Adrien Houpert + + AUTHORS: add 2023 maintainers + + * AUTHORS.txt: here. + +2023-03-02 Nicolas Fidel + + tiger-parser: update lexer fixmes + + * src/parse/tiger-parser.cc: Here. + +2023-02-27 Nicolas Fidel + + buildfarm: add flag to install global pip package + + * buildfarm/buildfarm-assignment: Here. + +2023-02-26 Mathieu Merienne + + lexer: add explanation to YY_USER_ACTION FIXME + + * src/parse/scantiger.ll: Here. + +2023-02-21 Pierre Brandone + + tweasts: improve dumping on error + + * src/parse/libparse.cc, + * src/parse/tweast.cc: Here. + +2023-02-20 Pierre Brandone + + metavar-map: dump non-empty maps on destuctor + + * src/parse/metavar-map.hh, + * src/parse/metavar-map.hxx: Here. + +2023-02-20 Pierre Brandone + + pretty-printer: explicit `the_program' precondition + + This is the most recurrent bug in TC-2. + + * src/ast/tasks.cc, + * src/parse/tasks.cc: Here. + +2023-02-20 Pierre Brandone + + test-bind: studentize the binder method calls + + `bind' methods are student-defined (thus, named). + + * src/bind/test-bind.cc, + * src/object/test-bind.cc: Here. + +2023-02-19 Nicolas Fidel + + tcsh: remove position.hh + + * src/tiger_parse.i: Here. + +2023-02-19 Nicolas Fidel + + m4: remove unsued macro flex version + + * build-aux/m4/flex-version.m4: Delete. + +2023-02-19 Nicolas Fidel + + build-aux: remove flexx++ + + * build-aux/bin/flex++.in: Delete, + * configure.ac: Here. + +2023-02-19 Nicolas Fidel + + scantiger: change make rule to gen scanner + + The stagize has also been modified for reflex use + + * dev/stagize.py, + * src/parse/local.am: Here. + +2023-02-19 Nicolas Fidel + + lib: delete flex header + + * lib/misc/flex-lexer.hh: Delete, + * lib/misc/local.am: Here. + +2023-02-19 Nicolas Fidel + + parser: adapt parser to use reflex + + * src/parse/parsetiger.yy, + * src/parse/tiger-parser.cc, + * src/parse/tiger-parser.hh: Here. + +2023-02-19 Nicolas Fidel + + scantiger: add comment of reflex option + + * src/parse/scantiger.ll: Here. + +2023-02-19 Nicolas Fidel + + scanner: replace flex by reflex + + * .gitignore, + * src/local.am, + * src/parse/fwd.hh, + * src/parse/local.am, + * src/parse/scantiger.ll: Here, + * src/parse/scantiger.hh: Delete. + +2023-02-19 Nicolas Fidel + + configure: add reflex + + * configure.ac: Here. + +2023-02-19 Nicolas Fidel + + nix: add reflex + + * flake.lock, + * flake.nix: Here. + +2023-02-19 Nicolas Fidel + + style: reformat tc + + With the version of clang14 we can now format the concepts of c++20, + and change the style of the small functions in one line, we also take + advantage of it to reformat the old files + + * lib/misc/algorithm.hh, + * lib/misc/concepts.hh + * lib/misc/error.hh + * lib/misc/flex-lexer.hh, + * lib/misc/map.hxx, + * lib/misc/set.hh, + * lib/misc/set.hxx, + * lib/misc/test-graph.cc, + * lib/misc/variant.hh, + * lib/misc/variant.hxx, + * lib/misc/vector.hxx, + * src/assem/fragment.cc, + * src/assem/fragments.cc, + * src/ast/array-exp.hxx, + * src/ast/array-ty.hxx, + * src/ast/assign-exp.hxx, + * src/ast/ast.hxx, + * src/ast/break-exp.hxx, + * src/ast/call-exp.hxx, + * src/ast/cast-exp.hxx, + * src/ast/chunk-list.cc, + * src/ast/chunk-list.hxx, + * src/ast/class-ty.hxx, + * src/ast/dec.hxx, + * src/ast/dumper-dot.cc, + * src/ast/dumper-dot.hh, + * src/ast/escapable.hxx, + * src/ast/exp.hxx, + * src/ast/field-init.hxx, + * src/ast/field-var.hxx, + * src/ast/field.hxx, + * src/ast/for-exp.hxx, + * src/ast/function-dec.hxx, + * src/ast/if-exp.hxx, + * src/ast/int-exp.hxx, + * src/ast/let-exp.hxx, + * src/ast/method-call-exp.hxx, + * src/ast/method-dec.hxx, + * src/ast/name-ty.hxx, + * src/ast/nil-exp.hxx, + * src/ast/object-exp.hxx, + * src/ast/op-exp.hxx, + * src/ast/pretty-printer.cc, + * src/ast/record-exp.hxx, + * src/ast/record-ty.hxx, + * src/ast/seq-exp.hxx, + * src/ast/simple-var.hxx, + * src/ast/string-exp.hxx, + * src/ast/subscript-var.hxx, + * src/ast/tasks.cc, + * src/ast/test-ast.cc, + * src/ast/ty.hxx, + * src/ast/typable.hxx, + * src/ast/type-constructor.hxx, + * src/ast/type-dec.hxx, + * src/ast/var-dec.hxx, + * src/ast/var.hxx, + * src/ast/while-exp.hxx, + * src/canon/stm-matcher.cc, + * src/inlining/inliner-check.cc, + * src/inlining/inliner-check.hh, + * src/inlining/pruner-check.hh, + * src/inlining/pruner.cc, + * src/llvmtranslate/llvm-type-visitor.cc, + * src/parse/libparse.hh, + * src/parse/scantiger.hh, + * src/parse/tasks.hh, + * src/parse/tiger-driver.hh, + * src/regalloc/regallocator.cc, + * src/target/arm/arm-codegen.cc, + * src/target/arm/target.cc, + * src/target/ia32/gas-codegen.cc, + * src/target/ia32/target.cc, + * src/target/mips/spim-codegen.cc, + * src/target/mips/target.cc, + * src/task/task-register.cc, + * src/translate/libtranslate.cc, + * src/translate/libtranslate.hh, + * src/translate/tasks.cc, + * src/translate/tasks.hh, + * src/translate/translation.cc, + * src/tree/seq.cc, + * src/tree/tree.cc, + * src/type/class.cc, + * src/type/function.cc, + * src/type/type-checker.cc: Here. + +2023-02-19 Nicolas Fidel + + clang-format: wrap all short functions on one line + + * .clang-format: Here. + +2023-02-17 Adrien Langou + + misc::contract: Extend misc::contract + + misc::contract can be used as a stream. + E.g: contract(condition) << "optional" << "message"; + + * lib/misc/contract.cc, + * lib/misc/contract.hh, + * lib/misc/contract.hxx, + * lib/misc/local.am: here. + +2023-02-14 Nicolas Fidel + + ci: fix trigger gitlab.lre not gitlab.lrde + + * .gitlab-ci.yml: Here. + +2023-02-08 Pierre Brandone + + ast: resync ast.hh with ast.yml + + * src/ast/ast.hh: here. + +2023-02-06 Nicolas Fidel + + tests: add test64 missing in tc + + * tests/good/test64.-e.ia32.s, + * tests/good/test64.-e.mips.s, + * tests/good/test64.-e.u.mips.s, + * tests/good/test64.err, + * tests/good/test64.hir, + * tests/good/test64.hpr, + * tests/good/test64.ia32.s, + * tests/good/test64.lir, + * tests/good/test64.lpr, + * tests/good/test64.mips.s, + * tests/good/test64.out, + * tests/good/test64.sta, + * tests/good/test64.tig, + * tests/good/test64.tih, + * tests/good/test64.u.mips.s: Here. + +2023-02-06 Nicolas Fidel + + stagize: add function to add given tests in tc-base + + * dev/stagize.py, + * dev/stagize_conf.yml: Here. + +2023-02-06 Romain Foucher + + style: use raw literal strings + + * lib/misc/escape.cc, + * lib/misc/test-escape.cc, + * src/llvmtranslate/generate-runtime.sh, + * src/object/test-desugar.cc, + * src/parse/generate-prelude.sh, + * src/stc/generate-runtime.sh, + * src/target/arm/generate-runtime.sh, + * src/target/ia32/generate-runtime.sh, + * src/target/mips/generate-runtime.sh: Here. + +2023-01-23 Romain Foucher + + src: stc: split local.am and runtime generation script + + * src/parse/generate-runtime.sh: New file. + * src/stc/local.am: Here. + +2023-01-23 Romain Foucher + + src: parse: split local.am and prelude generation script + + * src/parse/generate-prelude.sh: New file. + * src/parse/local.am: Here. + +2023-01-23 Romain Foucher + + src: llvmtranslate: split local.am and runtime generation script + + * src/llvmtranslate/generate-runtime.sh: New file. + * src/llvmtranslate/local.am: Here. + +2023-01-23 Romain Foucher + + src: target: split IA32 local.am and runtime generation script + + * src/target/ia32/generate-runtime.sh: New file. + * src/target/ia32/local.am: Here. + +2023-01-23 Romain Foucher + + src: target: split ARM local.am and runtime generation script + + * src/target/arm/generate-runtime.sh: New file. + * src/target/arm/local.am: Here. + +2023-01-23 Romain Foucher + + src: target: split MIPS local.am and runtime generation script + + * src/target/mips/generate-runtime.sh: New file. + * src/target/mips/local.am: Here. + +2023-01-19 Adrien Langou + + misc::contract: Extend misc::contract + + misc::contract can be used as a stream. + E.g: contract(condition) << "optional" << "message"; + + * lib/misc/contract.cc, + * lib/misc/contract.hh, + * lib/misc/contract.hxx, + * lib/misc/local.am: here. + +2023-01-12 Ethan Zouzoulkowsky + + llvmtranslate: bump to LLVM15 + + * configure.ac, + * src/llvmtranslate/translator.cc, + * src/llvmtranslate/llvm-type-visitor.cc: Here + +2023-01-12 Ethan Zouzoulkowsky + + llvmtranslate: added get_record_ltype function + + * src/llvmtranslate/llvm-type-visitor.cc, + * src/llvmtranslate/llvm-type-visitor.hh: Here. + +2023-01-09 Nicolas Fidel + + flake: add swig + + * flake.nix: Here. + +2022-12-23 Pierre Brandone + + pretty-print: add `explicit-wrapping' option task + + `explicit-wrapping' forces any wrappable node to be displayed with + wrapping parenthesis. + + * src/ast/libast.cc, + * src/ast/libast.hh, + * src/ast/pretty-printer.cc, + * src/ast/tasks.cc, + * src/ast/tasks.hh: Here. + +2022-12-23 Pierre Brandone + + pretty-print: restrict the display of parenthesis to wrapped nodes + + * src/ast/pretty-printer.cc: Here. + +2022-12-23 Pierre Brandone + + ast: track parenthesis wrapped nodes + + The desc is changed for better english + + * src/ast/ast.hh, + * src/ast/ast.hxx, + * src/ast/ast.yml, + * src/parse/parsetiger.yy: Here. + +2022-12-22 adrien.houpert + + chunk: add typename to compile with clang++ + + * src/ast/chunk.hh, + * src/ast/chunk.hxx: Here. + +2022-12-22 timothee.strouk + + clang-format: clang-format for fragments, stm-matcher, target.cc and seq.cc + + * src/assem/fragment.cc, + * src/assem/fragments.cc, + * src/target/arm/target.cc, + * src/target/ia32/target.cc, + * src/target/mips/target.cc, + * src/tree/seq.cc, + * src/canon/stm-matcher.hh: Here. + +2022-12-22 Nicolas Fidel + + stagize: fix permission check for generation + + * dev/stagize.py, + * dev/stagize_conf.yml: Here. + +2022-12-20 Nicolas Fidel + + dumper-dot: dump type in dumper dot + + * dev/ast-dumper-dot-gen.py, + * dev/stagize_conf.yml, + * src/ast/dumper-dot.cc, + * src/ast/dumper-dot.hh, + * src/ast/dumper-dot.hxx: Here. + +2022-12-08 Nicolas Fidel + + dumper-dot: fix dump_def fixme not appear + + * dev/ast-dumper-dot-gen.py, + * dev/stagize_conf.yml, + * src/ast/dumper-dot.cc, + * src/ast/dumper-dot.hh: Here. + +2022-12-08 Nicolas Fidel + + dumper-dot: check arg of dump_list with concepts + + * dev/ast-dumper-dot-gen.py, + * src/ast/dumper-dot.hh, + * src/ast/dumper-dot.hxx: Here. + +2022-12-08 Nicolas Fidel + + dumper-dot: change remove template in dump function + + * dev/ast-dumper-dot-gen.py, + * src/ast/dumper-dot.cc, + * src/ast/dumper-dot.hh, + * src/ast/dumper-dot.hxx: Here. + +2022-12-08 Nicolas Fidel + + nix: add colordiff in flake + + colordiff is use in dev/diff-r.sh at the end + of ast gen for show diff + + * flake.nix: Here. + +2022-12-07 Serval Martinot-Lagarde + + multithread: multithread stagize.py + + * dev/stagize.py, + * dev/tools.py: Here. + +2022-12-02 Nicolas Fidel + + ci: add check for tcl + + * .gitlab-ci.yml: Here. + +2022-12-01 Nicolas Fidel + + nix: delete bison from buildenv and use nixpkgs version and bump input + + * flake.lock, + * flake.nix: Here. + +2022-12-01 Nicolas Fidel + + flake: bump llvm on flake.nix + + * flake.lock, + * flake.nix: Here. + +2022-12-01 Nicolas Fidel + + llvm: bump to llvm 13 + + * configure.ac: Here. + +2022-11-22 Pierre Brandone + + type-checker: set Nil's record_type in check_types + + * src/type/type-checker.cc: Here. + +2022-11-15 Serval Martinot-Lagarde + + chunklist: add interesting using in ChunkList to use concepts + + * src/ast/ast.yml, + * src/ast/chunk-list.hh: Here. + +2022-11-09 Mathieu Merienne + + studentize: rewrite_program's FIXMEs now appears at TC-9 + + * dev/stagize_conf.yml, + * src/target/arm/arm-codegen.cc, + * src/target/ia32/gas-codegen.cc, + * src/target/mips/spim-codegen.cc: Here. + +2022-11-09 Mathieu Merienne + + codegen: clang-format old code + + * target/arm/arm-codegen.cc, + * target/ia32/gas-codegen.cc, + * target/mips/spim-codegen.cc: Here. + +2022-11-08 Pierre Brandone + + doc: resolve "overriding recipe" warning + + Stop considering doc/Doxyfile as a `AC_CONFIG_FILES' since we + use our own sed command to generate it from doc/Doxyfile.in + + * configure.ac: Here. + +2022-11-08 Pierre Brandone + + automake: explicit variable overriding, silence warning + + * Makefile.am: Here. + +2022-11-08 Pierre Brandone + + style: I hate tabulations + + Rearrange tabulations to improve lisibility on different tabspaces. + + * Makefile.am, + * **/local.am + * configure.ac: Here. + +2022-11-08 Pierre Brandone + + build: silence warnings on bison generated code + + * configure.ac: Here. + +2022-11-08 Pierre Brandone + + build: replace obsolete autoconf macros + + * build-aux/m4/with-tcsh.m4, + * configure.ac: Here. + +2022-11-04 Serval Martinot-Lagarde + + llvmtranslate: update deprecated overloads + + * src/llvmtranslate/translator.cc: Here. + +2022-10-17 nico34683 + + clang-format: format old code + + * lib/misc/algorithm.hxx, + * lib/misc/test-separator.cc, + * lib/misc/vector.hxx, + * src/inlining/pruner.cc, + * src/regalloc/regallocator.cc, + * src/task/task-register.cc, + * src/task/task.cc, + * src/translate/translation.cc, + * src/tree/tree.cc, + * src/type/class.cc, + * src/type/function.cc, + * src/type/type-checker.cc: Here. + +2022-10-07 Aleksandar Radojicic + + licenses: remove ranges-v3 license + +2022-10-07 Aleksandar Radojicic + + type: use std::ranges instead of rangev3 + +2022-10-07 Aleksandar Radojicic + + tree: use std::ranges instead of rangev3 + +2022-10-07 Aleksandar Radojicic + + translate: use std::ranges instead of rangev3 + +2022-10-07 Aleksandar Radojicic + + overload: use std::ranges instead of rangev3 + +2022-10-07 Aleksandar Radojicic + + regalloc: use std::ranges instead of rangev3 + +2022-10-07 Aleksandar Radojicic + + object: use std::ranges instead of rangev3 + +2022-10-07 Aleksandar Radojicic + + inlining: use std::ranges instead of rangev3 + +2022-10-07 Aleksandar Radojicic + + canon: use std::ranges instead of rangev3 + +2022-10-07 Aleksandar Radojicic + + assem: use std::ranges instead of rangev3 + +2022-10-07 Aleksandar Radojicic + + task: use std::ranges instead of rangev3 + +2022-10-07 Aleksandar Radojicic + + lib: remove deleted libs from lib/local.am + +2022-10-07 Aleksandar Radojicic + + misc: use std::ranges instead of rangev3 + +2022-10-07 Aleksandar Radojicic + + lib: delete lib/meta and lib/std used by rangev3 + +2022-10-07 Aleksandar Radojicic + + lib: remove concepts lib + +2022-10-07 Aleksandar Radojicic + + lib: remove range lib + +2022-07-15 Serval Martinot-Lagarde + + generate-swig-mk: reduce globbing to tcsh/src/**.i + + * tcsh/generate-swig-mk: Here. + +2022-06-16 Etienne Renault + + Version 1.91.j for 2024-tc-9.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here. + +2022-06-13 Etienne Renault + + Version 1.91.i for 2024-tc-8.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here. + +2022-06-06 adrien.houpert + + tcsh: clang-format for ti.py * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: remove CastVar + + * tcsh/python/tests/ast.ipynb, + * tcsh/src/swig_real_type.hh, + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: better error checks on ti.py arguments + + * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add objects support + + * tcsh/python/tests/assem.ipynb, + * tcsh/python/tests/ast.ipynb, + * tcsh/python/tests/astclone.ipynb, + * tcsh/python/tests/bind.ipynb, + * tcsh/python/tests/canon.ipynb, + * tcsh/python/tests/combine.ipynb, + * tcsh/python/tests/desugar.ipynb, + * tcsh/python/tests/escapes.ipynb, + * tcsh/python/tests/misc.ipynb, + * tcsh/python/tests/object.ipynb, + * tcsh/python/tests/overload.ipynb, + * tcsh/python/tests/regalloc.ipynb, + * tcsh/python/tests/target.ipynb, + * tcsh/python/tests/temp.ipynb, + * tcsh/python/tests/ti.ipynb, + * tcsh/python/tests/translate.ipynb, + * tcsh/python/tests/tree.ipynb, + * tcsh/python/tests/type.ipynb, + * tcsh/python/ti.py, + * tcsh/src/tiger_object.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + object: create libobject.hxx to store templated functions + + * dev/stagize_conf.yml, + * src/object/desugar-visitor.hh, + * src/object/fwd.hh, + * src/object/libobject.cc, + * src/object/libobject.hh, + * src/object/libobject.hxx, + * src/object/local.am, + * src/object/renamer.hh, + * src/object/test-desugar.cc: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: format swig code to lrde + + * tcsh/src/helper.hh, + * tcsh/src/tiger_assem.i, + * tcsh/src/tiger_ast.i, + * tcsh/src/tiger_astclone.i, + * tcsh/src/tiger_bind.i, + * tcsh/src/tiger_common.i, + * tcsh/src/tiger_desugar.i, + * tcsh/src/tiger_frame.i, + * tcsh/src/tiger_misc.i, + * tcsh/src/tiger_object.i, + * tcsh/src/tiger_parse.i, + * tcsh/src/tiger_target.i, + * tcsh/src/tiger_temp.i, + * tcsh/src/tiger_tree.i, + * tcsh/src/tiger_type.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ti: change default backend to mips + + * tcsh/python/tc.py, + * tcsh/python/tests/assem.ipynb, + * tcsh/python/tests/regalloc.ipynb, + * tcsh/python/tests/ti.ipynb, + * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: pass distdir on TC2 + + * dev/stagize_conf.yml, + * tcsh/python/tests/ast.ipynb, + * tcsh/python/tests/object.ipynb, + * tcsh/python/tests/ti.ipynb: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: stagize remove tests files + + * dev/stagize.py, + * tcsh/example.ipynb: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: add all regalloc tests + + * tcsh/python/Makefile.am, + * tcsh/python/tests/regalloc.ipynb: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: add all liveness tests + + * tcsh/python/Makefile.am, + * tcsh/python/tests/liveness.ipynb, + * tcsh/src/tiger_liveness.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add timer in misc and add #DONTCHECK cell + + * tcsh/python/tests/ipynbtest.py, + * tcsh/python/tests/misc.ipynb, + * tcsh/src/tiger_misc.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: add all TC7 tests + + * tcsh/python/Makefile.am, + * tcsh/python/tests/assem.ipynb, + * tcsh/python/tests/target.ipynb: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: assem Instr real type and import classes + + * tcsh/src/helper.hh, + * tcsh/src/tiger_assem.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: add all canon tests + + * tcsh/python/Makefile.am, + * tcsh/python/tests/canon.ipynb, + * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: add all TC5 tests + + * tcsh/python/Makefile.am, + * tcsh/python/tests/temp.ipynb, + * tcsh/python/tests/translate.ipynb, + * tcsh/python/tests/tree.ipynb: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: add llvmtranslate tests + + * tcsh/python/Makefile.am, + * tcsh/python/tc.py, + * tcsh/python/tests/llvmtranslate.ipynb: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: add all TC4 tests + + * tcsh/python/Makefile.am, + * tcsh/python/tests/astclone.ipynb, + * tcsh/python/tests/combine.ipynb, + * tcsh/python/tests/desugar.ipynb, + * tcsh/python/tests/overload.ipynb, + * tcsh/python/tests/type.ipynb: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: combine and overload with std::pair + + * tcsh/src/tiger_combine.i, + * tcsh/src/tiger_overload.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: __str__ on type::Type and type visitor + + * tcsh/src/tiger_ast.i, + * tcsh/src/tiger_type.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: add all TC3 tests + + * tcsh/python/Makefile.am, + * tcsh/python/tests/bind.ipynb, + * tcsh/python/tests/escapes.ipynb: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: change include to import on tiger modules + + * tcsh/python/tests/ipynbtest.py, + * tcsh/python/tests/parse.ipynb, + * tcsh/src/tiger_ast.i, + * tcsh/src/tiger_bind.i, + * tcsh/src/tiger_parse.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: add ast tests + + * tcsh/python/Makefile.am, + * tcsh/python/tests/ast.ipynb: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: add all TC1 tests + + * tcsh/python/Makefile.am, + * tcsh/python/tests/common.ipynb, + * tcsh/python/tests/object.ipynb, + * tcsh/python/tests/parse.ipynb, + * tcsh/python/tests/ti.ipynb: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: add ipynb in testsuite + + * .gitignore, + * tcsh/python/Makefile.am, + * tcsh/python/tc.py, + * tcsh/run.in: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh/ipynbtest: Create Jupyter test suite, adapted from spot + + * tcsh/python/tests/ipynbtest.py, + * tcsh/python/tests/misc.ipynb, + * tcsh/python/tests/tc.ipynb: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: typed python scripts + + * tcsh/python/tc.py, + * tcsh/python/ti.py, + * tcsh/src/tiger_misc.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + notebook: add optional backend parameter + + * dev/stagize.py, + * dev/stagize_conf.yml, + * tcsh/python/tc.py, + * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add tiger_frame module + + * tcsh/src/tiger_frame.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add all tree::Tree sub types + + * tcsh/src/tiger_tree.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add regex to replace name of tmp file + + * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: remove some ast warnings + + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: __str__ on temp::Temp and temp::Label + + * tcsh/src/tiger_temp.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: tiger_misc refacto misc error tuple + + * tcsh/src/tiger_misc.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: undef HELPER macros * tcsh/src/swig_real_type.hh, * tcsh/src/tiger_assem.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: use python3 with swig * tcsh/python/Makefile.am, * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add debug flag in Tiger Interpreter + + * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tree: remove friend operator<< function in tree::Tree + + * src/tree/tree.hh: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: hide initializer_list in tree::Seq + + * src/tree/seq.cc, src/tree/seq.hh: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: astclone, use %inline keyword + + * tcsh/src/tiger_astclone.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add desugar module + + * tcsh/python/tc.py, + * tcsh/python/ti.py, + * tcsh/src/tiger_desugar.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + desugar: rename libdesugar.cc to libdesugar.hxx + + * src/desugar/libdesugar.hh, + * src/desugar/local.am, + * src/desugar/libdesugar.cc -> src/desugar/libdesugar.hxx: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: configure.ac use dnl to stadgize + + * configure.ac: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add get on all backend + + * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add llvmtranslate module + + * tcsh/python/tc.py, + * tcsh/python/ti.py, + * tcsh/src/tiger_llvmtranslate.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: create astclone with clone function + + * tcsh/python/tc.py, + * tcsh/src/tiger_astclone.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: export SwigAstTypeVisitor from tiger_ast + + * tcsh/src/swig_real_type.hh, + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: define functions or method declared + + * src/ast/ast.yml, + * src/ast/chunk.hh, + * src/ast/op-exp.cc, + * src/bind/binder.hxx, + * src/type/named.cc: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: stadgize tiger_ast.i + + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: remove old test, now use ti + + * tcsh/python/Makefile.am, + * tcsh/python/tcsh-mips.test, + * tcsh/python/tcsh-tree.test: Here. + * tcsh/python/tcsh.test, + * tcsh/python/test-compiler.py, + * tcsh/python/test-front-end.py: Deleted. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add tcsh/src in EXTRA_DIST + + * tcsh/Makefile.am: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: stadgize python ti and tc module + + * tcsh/python/tc.py, + * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + notebook: dot_dump example in notebook + + * tcsh/example.ipynb, + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: CallbackVisitor pass ast in dictionary + + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: delete tcsh/ruby and dependency + + * .gitignore, + * bootstrap, + * build-aux/m4/with-tcsh.m4, + * configure.ac, + * dev/stats.sh, + * tcsh/Makefile.am, + * tcsh/generate-swig-mk, + * tcsh/run.in: Here. + * tcsh/ruby/Makefile.am, + * tcsh/ruby/ltrequire.rb, + * tcsh/ruby/tc.rb, + * tcsh/ruby/tcsh.test, + * tcsh/ruby/test-compiler.rb, + * tcsh/ruby/test-front-end.rb: Deleted. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: import tiger_assem.i in tiger_target.i + + * tcsh/example.ipynb, + * tcsh/src/tiger_assem.i, + * tcsh/src/tiger_target.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: assem add __str__ on Fragments, Intrs and Instr + + * tcsh/src/tiger_assem.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: Create a helper.hh in swig to factorise real type visitors + + * tcsh/src/helper.hh, + * tcsh/src/tiger_assem.i, + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add three python method to OpExp + + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: tiger_ast refacto codding style + + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: use swig %apply to remove duplicated lines and add rvalues + + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + notebook: adapt %%tiger example to use TiExecutor + + * tcsh/example.ipynb: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: create TiExecutor class with step processing + + * tcsh/python/tc.py, + * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: swig compatibility with assem + + * tcsh/src/tiger_assem.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + notebook: python notebook example and error list + + * tcsh/example.ipynb: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add misc symbol as a valid swig type + + * tcsh/src/tiger_misc.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: iterable ast items + + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: SwigTypeVisitor, get the real type of each ast element + + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: remove ast_upcast in ti for notebooks + + * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: remove some swig warnings + + * src/common.hh, + * tcsh/src/tiger_common.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: parse ast in notebook without exit on error + + * tcsh/python/tc.py, + * tcsh/python/ti.py, + * tcsh/src/tiger_bind.i, + * tcsh/src/tiger_misc.i, + * tcsh/src/tiger_parse.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: ast add tikz and normal dumper + + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add option -no-pie to gcc and remove exit for tree + + * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + notebook: %%tiger need one argument to store the ast + + * tcsh/python/tc.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + notebook: basic version of IPython magics + + * tcsh/python/tc.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: get return value into variable in tiger interpreter + + * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: split python tiger interpreter into multiple functions with a main + + * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add tcsh/run export to get variable to set + + * tcsh/run.in: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: imp module deprecated since python 3.4, now importlib + + * tcsh/python/tc.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add __str__ in temp::TempMap + + * src/tiger_temp.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add __str__ in target::Target and target::Cpu + + * src/tiger_target.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: resolve print of fragments adding std_unique_ptr + + * tcsh/src/tiger_tree.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add SWIG template to visitors + + * src/assem/visitor.hh, + * src/ast/default-visitor.hh, + * src/ast/non-object-visitor.hh, + * src/type/default-visitor.hh, + * src/type/visitor.hh: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: update tiger_ast.i to remove some warnings + + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: split python tcsh tests + + split python/tcsh.test into: + * python/tcsh-mips.test, python/tcsh-tree.test, python/tcsh.test: Here. + + Add new tests into make check: + * python/Makefile.am: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: update SWIG documentation in dev/tc.texi + + * dev/tc.texi: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add combine to ti unavailable modules check + + * tcsh/python/ti.py: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: change Decs to Chunk + + * tcsh/src/tiger_ast.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add SWIG guards for [[nodiscard]] + + * src/ast/chunk.hh: Here. + +2022-06-06 Serval Martinot-Lagarde + + tcsh: add combine module to tcsh + + * tcsh/python/tc.py, + * tcsh/src/tiger_combine.i: Here. + +2022-06-06 Louis Dufeu + + tcsh: add support for object extension + + * tcsh/src/tiger_parse.i: here. + +2022-06-06 Louis Dufeu + + tcsh: add name of declaration if ast is a Dec when calling callback + + * tcsh/src/tiger_ast.i: here. + +2022-06-06 Louis Dufeu + + tcsh: move CallbackVisitor in SWIGPYTHON guard + + * tcsh/Makefile.am, + * tcsh/src/tiger_ast.i: here. + +2022-06-06 Louis Dufeu + + error: rename NORETURN macro to TC_NORETURN + + * lib/misc/error.hh: here. + +2022-06-06 Louis Dufeu + + error: wrap definition of NORETURN macro inside ifndef directive + + * lib/misc/error.hh: here. + +2022-06-06 Louis Dufeu + + tcsh: add callback visitor for python bindings + + * tcsh/Makefile.am, + * tcsh/src/tiger_ast.i: here. + +2022-06-06 Louis Dufeu + + tcsh: add needed includes and remove useless ones + + * tcsh/src/tiger_ast.i, + * tcsh/src/tiger_bind.i, + * tcsh/src/tiger_callgraph.i, + * tcsh/src/tiger_escapes.i, + * tcsh/src/tiger_parse.i, + * tcsh/src/tiger_translate.i, + * tcsh/src/tiger_tree.i: here. + +2022-06-06 Louis Dufeu + + swig: fix the %template directives in visitor headers + + * src/ast/default-visitor, + * src/ast/non-object-visitor, + * src/ast/object-visitor: here. + +2022-06-06 Louis Dufeu + + build-aux: add error message when requesting SWIG without shared libraries + + * build-aux/m4/with-tcsh.m4: here. + +2022-06-06 Louis Dufeu + + buildfarm: add conditional TCSH_RUBY even when swig was not found + + * build-aux/m4/with-tcsh.m4: here. + +2022-06-06 Louis Dufeu + + tcsh: add ruby folder in subdirs to process + + * tcsh/Makefile.am: here. + +2022-06-06 Louis Dufeu + + tcsh: remove interface files from EXTRA_DIST + + * lib/misc/local.am, + * src/ast/local.am, + * src/bind/local.am, + * src/callgraph/local.am, + * src/canon/local.am, + * src/escapes/local.am, + * src/liveness/local.am, + * src/llvmtranslate/local.am, + * src/object/local.am, + * src/overload/local.am, + * src/parse/local.am, + * src/regalloc/local.am, + * src/target/local.am, + * src/temp/local.am, + * src/translate/local.am, + * src/tree/local.am, + * src/type/local.am: here. + +2022-06-06 Louis Dufeu + + bootstrap: decomment generation of swig Makefiles + + * bootstrap: here. + +2022-06-06 Louis Dufeu + + tcsh: add calls to ast_upcast after parsing in python tests + + * tcsh/python/test-compiler.py, + * tcsh/python/test-front-end.py: here. + +2022-06-06 Louis Dufeu + + tcsh: remove run from tests environment + + * tcsh/python/Makefile.am, + * tcsh/ruby/Makefile.am: here. + +2022-06-06 Louis Dufeu + + tcsh: remove unecessary swig double namespace declarations + + * configure.ac, + * lib/misc/error.hh, + * src/local.am, + * src/target/arm/target.cc, + * src/target/arm/target.hh, + * src/target/ia32/target.cc, + * src/target/ia32/target.hh, + * src/target/mips/target.cc, + * src/target/mips/target.hh, + * tcsh/Makefile.am, + * tcsh/ruby/Makefile.am: here. + +2022-06-06 Louis Dufeu + + build-aux: make ruby an optional dependency for tcsh + + * .gitignore, + * build-aux/m4/with-tcsh.m4, + * tcsh/ruby/Makefile.am: here. + +2022-06-06 Loic Reyreaud + + tcsh: build: Updated tcsh for python3 swig3 + + Update old swig bindings to use swig4 / python3. Update build system to + build to build them. Made some modification in cpp code to allow swig to + parse it. + + Require a custom version of swig4 to compile at the moment. + Moved the .i files to tcsh/src, tcsh/python hold python related code for + swig, tcsh/ruby will hold ruby related code for swig. + + * .gitignore, + * build-aux/m4/pypath.m4, + * build-aux/m4/with-tcsh.m4, + * configure.ac, + * lib/misc/error.hh, + * lib/misc/file-library.hh, + * src/bind/tiger_bind.i, + * src/local.am, + * src/stc/local.am, + * src/target/arm/target.cc, + * src/target/arm/target.hh, + * src/target/ia32/target.cc, + * src/target/ia32/target.hh, + * src/target/mips/target.cc, + * src/target/mips/target.hh, + * tcsh/Makefile.am, + * tcsh/generate-swig-mk, + * tcsh/python/Makefile.am, + * tcsh/python/tc.py, + * tcsh/python/ti.py, + * src/ast/tiger_ast.i -> tcsh/src/tiger_ast.i, + * tcsh/src/tiger_bind.i, + * src/callgraph/tiger_callgraph.i -> tcsh/src/tiger_callgraph.i, + * src/canon/tiger_canon.i -> tcsh/src/tiger_canon.i, + * src/tiger_common.i -> tcsh/src/tiger_common.i, + * src/escapes/tiger_escapes.i -> tcsh/src/tiger_escapes.i, + * src/liveness/tiger_liveness.i -> tcsh/src/tiger_liveness.i, + * lib/misc/tiger_misc.i -> tcsh/src/tiger_misc.i, + * src/object/tiger_object.i -> tcsh/src/tiger_object.i, + * src/overload/tiger_overload.i -> tcsh/src/tiger_overload.i, + * src/parse/tiger_parse.i -> tcsh/src/tiger_parse.i, + * src/regalloc/tiger_regalloc.i -> tcsh/src/tiger_regalloc.i, + * src/target/tiger_target.i -> tcsh/src/tiger_target.i, + * src/temp/tiger_temp.i -> tcsh/src/tiger_temp.i, + * src/translate/tiger_translate.i -> tcsh/src/tiger_translate.i, + * src/tree/tiger_tree.i -> tcsh/src/tiger_tree.i, + * src/type/tiger_type.i -> tcsh/src/tiger_type.i: Here. + +2022-06-06 Serval Martinot-Lagarde + + operator<<: missing operator<< for assem::Fragments + + * src/assem/fragments.cc: Here. + +2022-06-06 Serval Martinot-Lagarde + + const: add a cont to print in assem fragments + + * src/assem/fragments.cc, src/assem/fragments.hh: Here. + +2022-06-06 adrien.houpert + + pre-commit: apply pre-commit autoupdate to fix black fail * .pre-commit-config.yaml: Here. + +2022-05-25 Etienne Renault + + Version 1.91.h for 2024-tc-7.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here. + +2022-05-16 Etienne Renault + + Version 1.91.g for 2024-tc-6.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here. + +2022-05-14 Pierre Brandone + + stm-matcher: remove unreachable pattern + + * src/canon/stm-matcher.cc: Here. + +2022-05-14 Pierre Brandone + + exp-matcher: remove deprecated comment + + * src/canon/exp-matcher.hh: Here. + +2022-05-04 Etienne Renault + + Version 1.91.f for 2024-tc-5.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here. + +2022-05-03 Mael Cravero + + canon: use seq instead of stms where expected + + * src/canon/canon.cc, + * src/canon/canon.hh, + * src/canon/exp-matcher.cc, + * src/canon/exp-matcher.hh, + * src/canon/stm-matcher.cc: here. + +2022-05-03 Mael Cravero + + canon: do not use eseq for pair of exp and stm + + * src/canon/canon.cc, + * src/canon/canon.hh, + * src/canon/exp-matcher.cc, + * src/canon/exp-matcher.hh: here. + +2022-04-02 Serval Martinot-Lagarde + + shell-posix: remove not POSIX function keyword + + * dev/format.sh: Here. + * dev/format: Delete old version. + +2022-03-31 Etienne Renault + + Version 1.91.e for 2024-tc-L.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here. + +2022-03-21 Etienne Renault + + Version 1.91.d for 2024-tc-4.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here. + +2022-03-16 Clément Démoulins + + pre-commit: fix old protocol + + * .pre-commit-config.yaml: here. + +2022-03-10 Etienne Renault + + Version 1.91.c for 2024-tc-3.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here. + +2022-03-03 Etienne Renault + + Version 1.91.b for 2024-tc-2.0 + + * NEWS.txt, configure.ac: Here. + +2022-02-18 Etienne Renault + + Version 1.91.a for 2024-tc-1.0 + + * NEWS.txt, configure.ac, .last-cl-gen, + ChangeLog, Makefile.am: Here. + +2022-02-17 Serval Martinot-Lagarde + + dumper-dot: create the dev python generator and --dot-style + + * dev/stagize.py, + * dev/stagize_conf.yml, + * src/ast/ast.yml, + * src/ast/libast.cc, + * src/ast/libast.hh, + * src/ast/local.am, + * src/ast/op-exp.cc, + * src/ast/tasks.cc, + * src/ast/tasks.hh: Here. + * dev/ast-dumper-dot-gen.py: New. + * src/ast/dumper-dot.cc, + * src/ast/dumper-dot.hh, + * src/ast/dumper-dot.hxx: Generated. + +2022-02-17 Timothee Desveaux + + nix: fix add bootsrap to preConfigure phase + + * flake.nix: Here. + +2022-02-17 Timothee Desveaux + + nix: bump buildenv + + * flake.lock: Here. + +2022-02-17 Timothee Desveaux + + nix: format flake.nix with nixpkgs-fmt + + * flake.nix: Here. + +2022-02-17 Pierre-Olivier Rey + + nix: stagize and studentize + +2022-02-17 Pierre-Olivier Rey + + ci: add flake check + + * .gitlab-ci.yml: Here. + +2022-02-17 Pierre-Olivier Rey + + nix: fix buildsystem + + authors-gen.h shebang was not using env hence is not really + nix-compatible + + * /build-aux/bin/authors-gen.h: Here. + + Modifing order of recognation of clang to use flake defined clang instead + of system one. + + * configure.ac: Here. + + Removing useless/deprecated linker flag. 'filesystem' is + now part of stdlib and no more experiemental. + + * lib/misc/local.am: Here. + +2022-02-17 Pierre-Olivier Rey + + nix: flake for students + + A nix flake able to build TC and provide a dev environnement. + The flake is using buildenv flake to find nolimips and havm. + + * flake.lock, + * flake.nix: Here. + +2022-02-03 Pierre Brandone + + parsetiger: rephrase GLR and %expect explanations + + * src/parse/parsetiger.yy: Here. + +2022-02-02 Pierre Brandone + + CastVar: delete all occurences and references to CastVars + + * src/ast/cast-var.cc: Delete, + * src/ast/cast-var.hh: Delete, + * src/ast/cast-var.hxx: Delete, + * src/ast/README-student.txt, + * src/ast/README.txt, + * src/ast/all.hh, + * src/ast/ast-nodes.mk, + * src/ast/ast.gv, + * src/ast/ast.yml, + * src/ast/default-visitor.hh, + * src/ast/default-visitor.hxx, + * src/ast/dumper.cc, + * src/ast/dumper.hh, + * src/ast/fwd.hh, + * src/ast/pretty-printer.cc, + * src/ast/pretty-printer.hh, + * src/ast/visitor.hh, + * src/astclone/cloner.cc, + * src/astclone/cloner.hh, + * src/llvmtranslate/translator.cc, + * src/llvmtranslate/translator.hh, + * src/parse/tiger-driver.hh, + * src/parse/tiger-driver.hxx, + * src/translate/translator.cc, + * src/translate/translator.hh, + * src/type/type-checker.cc, + * src/type/type-checker.hh: Here. + +2022-02-02 Pierre-Olivier Rey + + tiger-parser: clarify student fixme + + * src/parse/tiger-parser.cc: Here. + +2022-02-01 Pierre Brandone + + parsetiger: ":=" does not require higher precedence than "then", "do"... + + * src/parse/parsetiger.yy: Here. + +2022-02-01 Pierre Brandone + + parsetiger: remove useless VAR precedence + + * src/parse/parsetiger.yy: Here. + +2022-02-01 Pierre Brandone + + parsetiger: replace %nonassoc with %precedence on non-operator tokens + + * src/parse/parsetiger.yy: Here. + +2022-01-21 Pierre Brandone + + Bison: enable more warnings + + * src/parse/local.am: Here. + +2022-01-17 victor.hognon + + driver: move ast tags for driver and fix mistake in a comment + + * src/parse/tiger-driver.hxx + * src/parse/tiger-parser.hh + +2022-01-12 Pierre Brandone + + Build: expect bison >= 3.8.2 + + We use glr2.cc, so we need this version at least. + + * configure.ac: Here. + +2022-01-12 Mael Cravero + + parsetiger: fix deprecated filename_type warning + + * src/parse/parsetiger.yy: here. + +2022-01-12 Mael Cravero + + parsetiger: use glr2 skeleton + + * src/parse/parsetiger.yy: here. + +2022-01-12 Pierre-Olivier Rey + + CI: Use tiger-sid by default + + * .gitlab-ci.yml: Here. + +2022-01-10 Pierre Brandone + + LLVM: silence warnings on header includes + + * src/llvmtranslate/libllvmtranslate.cc, + * src/llvmtranslate/tasks.cc, + * src/llvmtranslate/translator.cc, + * src/llvmtranslate/translator.hh: Here. + +2021-12-15 Aleksandar Radojicic + + gitlab-ci: remove distcheck on TC-0 + + * .gitlab-ci.yml: Here + +2021-12-15 Aleksandar Radojicic + + dev: allow letter as stage for stagize + + * Makefile.am: Here + +2021-12-15 Aleksandar Radojicic + + dev: use new stagize script in dist-hook + + * Makefile.am: Here + +2021-12-15 Aleksandar Radojicic + + dev: remove stagize.bash + + * dev/stagize.bash: Here + +2021-12-15 Aleksandar Radojicic + + dev: rewrite stagize script in python + + * dev/stagize.py: Here + +2021-12-14 Mael Cravero + + combine: use pure functions in libcombine.cc + + * src/combine/libcombine.cc, + * src/combine/libcombine.hh, + * src/combine/tasks.cc: here. + +2021-12-14 Pierre Brandone + + parsetiger: ship skeleton and justify GLR usage + + * src/parse/parsetiger.yy: Here. + +2021-12-14 Pierre-Olivier Rey + + parsetiger: ship grammar related to types + + We now ship few rules and comments to students to help them get into the project + without losing time on bison's syntax and details. + + * src/parse/parsetiger.yy: here. + +2021-12-13 Etienne Renault + + Changelog: regen + + * .last-cl-gen, ChangeLog: Here. + +2021-12-13 Etienne Renault + + ChangeLog: restore a working version + + * Makefile.am: Here. + +2021-12-13 Etienne Renault + + Remove ChangeLog nested imbrications + + * .last-cl-gen, ChangeLog: Here. + +2021-12-13 Etienne Renault + + Remove ChangeLog nested imbrications + + * .last-cl-gen, ChangeLog: Here. + +2021-12-13 Aleksandar Radojicic + + misc: improve FIXME comment about topological_sort + + * lib/misc/graph.hxx: Here. + +2021-12-13 Aleksandar Radojicic + + dev: update stagize to add missing FIXME in graph.* + + * dev/stagize.bash: Here. + +2021-12-13 Axel Ribon + + object: add unreachable call on unreachable code + + * src/type/class.cc: Here. + +2021-12-10 Serval Martinot-Lagarde + + gawk: remove warnings on regexp escape sequence '\#' and '\"' + + * src/llvmtranslate/local.am, + * src/parse/local.am, + * src/stc/local.am, + * src/target/arm/local.am, + * src/target/ia32/local.am, + * src/target/mips/local.am: Here. + +2021-12-09 Etienne Renault + + buildfarm: ensure that tc-ref does not exit + + * buildfarm/checkout-ref: Here. + +2021-11-03 Pierre Brandone + + misc: remove misc/pair + + * lib/misc/local.am, + * lib/misc/pair.hh: Delete, + * lib/misc/pair.hxx: Delete, + * lib/misc/separator.hh, + * lib/misc/separator.hxx, + * lib/misc/test-separator.cc, + * src/ast/dumper.cc, + * src/ast/pretty-printer.cc: Here. + +2021-10-28 Pierre-Olivier Rey + + configure: add nolimips check for tc-7 and later + + The macro was defined but not used. + stagize.bash needed to be modified to use the `target` flag to check + only on tc-7 and later. + + * ./configure.ac + * dev/stagize.bash + +2021-09-19 Mael Cravero + + symbol: always pass by copy + + * src/assem/fragment.hh, + * src/assem/fragment.hxx, + * src/bind/renamer.hxx, + * src/desugar/bounds-checking-visitor.cc, + * src/desugar/desugar-visitor.cc, + * src/inlining/pruner.cc, + * src/object/desugar-visitor.cc, + * src/object/desugar-visitor.hh, + * src/overload/over-table.hh, + * src/overload/over-table.hxx, + * src/parse/tiger-driver.hh, + * src/parse/tiger-driver.hxx, + * src/regalloc/test-regalloc.cc, + * src/temp/identifier.hh, + * src/temp/identifier.hxx, + * src/translate/level.cc, + * src/translate/level.hh, + * src/translate/translation.cc, + * src/translate/translation.hh, + * src/tree/fragment.cc, + * src/tree/fragment.hh, + * src/tree/fragment.hxx, + * src/type/README.txt, + * src/type/attribute.hh, + * src/type/attribute.hxx, + * src/type/class.cc, + * src/type/class.hh, + * src/type/class.hxx, + * src/type/field.cc, + * src/type/field.hh, + * src/type/field.hxx, + * src/type/method.cc, + * src/type/method.hh, + * src/type/method.hxx, + * src/type/named.cc, + * src/type/named.hh, + * src/type/named.hxx, + * src/type/record.cc, + * src/type/record.hh, + * src/type/record.hxx: here. + +2021-09-19 Mael Cravero + + ast: use misc::symbol as value type + + * src/ast/ast.yml, + * src/ast/call-exp.cc, + * src/ast/call-exp.hh, + * src/ast/call-exp.hxx, + * src/ast/dec.cc, + * src/ast/dec.hh, + * src/ast/dec.hxx, + * src/ast/field-init.cc, + * src/ast/field-init.hh, + * src/ast/field-init.hxx, + * src/ast/field-var.cc, + * src/ast/field-var.hh, + * src/ast/field-var.hxx, + * src/ast/field.cc, + * src/ast/field.hh, + * src/ast/field.hxx, + * src/ast/function-dec.cc, + * src/ast/function-dec.hh, + * src/ast/method-call-exp.cc, + * src/ast/method-call-exp.hh, + * src/ast/method-dec.cc, + * src/ast/method-dec.hh, + * src/ast/name-ty.cc, + * src/ast/name-ty.hh, + * src/ast/name-ty.hxx, + * src/ast/simple-var.cc, + * src/ast/simple-var.hh, + * src/ast/simple-var.hxx, + * src/ast/type-dec.cc, + * src/ast/type-dec.hh, + * src/ast/var-dec.cc, + * src/ast/var-dec.hh, + * src/astclone/cloner.cc: here. + +2021-06-07 Etienne Renault + + Version 1.90.h for 2023-tc-9.0 + + * NEWS.txt, configure.ac, .last-cl-gen, + ChangeLog: Here. + +2021-05-31 Etienne Renault + + Version 1.90.g for 2023-tc-8.0 + + * NEWS.txt, configure.ac, .last-cl-gen, + ChangeLog: Here. + +2021-05-21 Etienne Renault + + Version 1.90.f for 2023-tc-7.0 + + * NEWS.txt, configure.ac, .last-cl-gen, + ChangeLog: Here. + +2021-05-20 Aleksandar Radojicic + + regallocator: store newly created temps in a set + + This set is given to color and updated by rewrite_program during actual spills + + * src/regalloc/regallocator.cc + +2021-05-20 Aleksandar Radojicic + + color: add new already_spilled attribute in Color class + + Used to handle spill_selection properly and ensure an already spilled + temp will have a low spill priority + + * src/regalloc/color.cc + * src/regalloc/color.hh + +2021-05-19 Aleksandar Radojicic + + ia32: use new argument created_temps in rewrite_program + + * src/target/ia32/gas-codegen.cc + * src/target/ia32/gas-codegen.hh + +2021-05-19 Aleksandar Radojicic + + arm: use new argument created_temps in rewrite_program + + * src/target/arm/arm-codegen.cc + * src/target/arm/arm-codegen.hh + +2021-05-19 Aleksandar Radojicic + + mips: use new argument created_temps in rewrite_program + + * src/target/mips/spim-codegen.cc + * src/target/mips/spim-codegen.hh + +2021-05-19 Aleksandar Radojicic + + codegen: add created temps argument to rewrite_program + + This argument is used to store newly created temps during a spill + + * src/target/codegen.hh + +2021-05-17 Etienne Renault + + Version 1.90.e for 2023-tc-6.0 + + * NEWS.txt, configure.ac, .last-cl-gen, + ChangeLog: Here. + +2021-03-23 Etienne Renault + + Version 1.90.d for 2023-tc-5.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here + +2021-03-08 Etienne Renault + + Version 1.90.c for 2023-tc-4.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here + +2021-03-01 Etienne Renault + + Version 1.90.b for 2023-tc-3.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here + +2021-02-22 Etienne Renault + + Version 1.90.a for 2023-tc-2.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here + +2021-02-14 Helene Chelin + + buildfarm: add pip install for the requirements + + * buildfarm/build-assignment: Here. + +2021-02-13 Mael Cravero + + clang-format: ship in distribution + + This will allow students to use the LRDE coding style for TC. + + * Makefile.am: here. + +2021-02-13 Mael Cravero + + AUTHORS: add 2021 and 2022 maintainers + + * AUTHORS.txt: here. + +2021-02-12 Etienne Renault + + Version 1.90 for 2023-tc-1.0 + + * Makefile.am, NEWS.txt, configure.ac, + * src/version.cc.in, + * .last-cl-gen, ChangeLog: Here + +2021-02-10 Viviane Garese + + parse: remove useless dprec declaration in grammar + + * src/parse/parsetiger.yy: Here. + +2021-02-10 Mael Cravero + + combine: add shorthands for frequent tasks + + We now have -a for --c-all and -c for --combine-desugar. + This allows for calls such as tc -acH to generate HIR with all bonuses. + + * src/combine/tasks.hh: here. + +2021-02-10 Mael Cravero + + combine: Remove now obsolete overfun-* tasks + + * src/combine/tasks.cc + * src/combine/tasks.hh + +2021-02-10 Mael Cravero + + tc-check: Update commands for overfun + + * tc-check.in + +2021-02-10 Mael Cravero + + combine: keep prototypes around fixme marks + + * src/combine/libcombine.cc, + * src/combine/libcombine.hh, + * src/combine/tasks.cc: here. + +2021-02-10 Mael Cravero + + combine: Fix dispatch in binder and type-checker + + We add a visit on CallExp in order to properly compute function calls, + depending on whether we activated overloading. + + * src/combine/binder.cc + * src/combine/binder.hh + * src/combine/libcombine.cc + * src/combine/type-checker.cc + * src/combine/type-checker.hh + +2021-02-10 Mael Cravero + + combine: Fix tasks depencies + + * src/combine/tasks.hh + +2021-02-10 Mael Cravero + + src: Remove further mentions to Overfun* + + * src/object/binder.hh + * src/object/type-checker.hh + * src/overload/binder.hh + * src/overload/type-checker.hh + +2021-02-10 Mael Cravero + + overfun: Rename module to combine + + * dev/stagize.bash + * src/overfun/overfun-binder.cc -> src/combine/binder.cc + * src/overfun/overfun-binder.hh -> src/combine/binder.hh + * src/combine/libcombine.cc + * src/overfun/liboverfun.hh -> src/combine/libcombine.hh + * src/combine/local.am + * src/overfun/tasks.cc -> src/combine/tasks.cc + * src/overfun/tasks.hh -> src/combine/tasks.hh + * src/combine/type-checker.cc + * src/overfun/overfun-type-checker.hh -> src/combine/type-checker.hh + * src/local.am + * src/overfun/liboverfun.cc + * src/overfun/local.am + * src/overfun/overfun-type-checker.cc + +2021-02-10 Mael Cravero + + overfun: Check if overloading is enabled for binder dispatch + + * src/overfun/liboverfun.cc + * src/overfun/overfun-binder.cc + * src/overfun/overfun-binder.hh + +2021-02-10 Mael Cravero + + overfun: Add combine tasks + + They can be used to combine tasks with one another more easily. + + * src/overfun/tasks.cc + * src/overfun/tasks.hh + +2021-02-10 Mael Cravero + + overfun: Ship module at TC-4 + + Also remove now useless overload FIXME marks. + + * dev/stagize.bash + * src/overfun/liboverfun.cc + * src/overfun/liboverfun.hh + * src/overfun/tasks.cc + * src/overfun/tasks.hh + +2021-02-10 Mael Cravero + + desugar: Move overfun tasks to overfun module + + * src/desugar/tasks.cc + * src/desugar/tasks.hh + * src/overfun/tasks.cc + * src/overfun/tasks.hh + +2021-02-10 Mael Cravero + + inlining: Move overfun tasks to overfun module + + * src/inlining/tasks.cc + * src/inlining/tasks.hh + * src/overfun/tasks.cc + * src/overfun/tasks.hh + +2021-02-10 Mael Cravero + + overfun: Move to new subfolder + + * src/object/libobject.cc + * src/object/libobject.hh + * src/object/local.am + * src/object/tasks.cc + * src/object/tasks.hh + * src/overfun/liboverfun.cc + * src/overfun/liboverfun.hh + * src/overfun/local.am + * src/object/overfun-binder.cc -> src/overfun/overfun-binder.cc + * src/object/overfun-binder.hh -> src/overfun/overfun-binder.hh + * src/object/overfun-type-checker.cc -> src/overfun/overfun-type-checker.cc + * src/object/overfun-type-checker.hh -> src/overfun/overfun-type-checker.hh + * src/overfun/tasks.cc + * src/overfun/tasks.hh + +2021-02-10 Aleksandar Radojicic + + dev: update stagize.bash to delete singleton.hh before tc-4 + + * dev/stagize.bash + * lib/misc/local.am + +2021-02-06 Romain Foucher + + src: use Chunk iterators + + * src/ast/ast.yml + * src/ast/default-visitor.hxx + * src/ast/dumper.cc + * src/ast/function-dec.hh + * src/ast/object-visitor.hxx + * src/ast/pretty-printer.cc + * src/astclone/cloner.hxx + * src/bind/binder.hxx + * src/callgraph/call-graph-visitor.cc + * src/callgraph/parent-graph-visitor.cc + * src/desugar/bounds-checking-visitor.cc + * src/inlining/inliner.cc + * src/inlining/pruner-check.cc + * src/inlining/pruner.cc + * src/llvmtranslate/escapes-collector.cc + * src/llvmtranslate/translator.cc + * src/object/binder.cc + * src/object/desugar-visitor.cc + * src/object/desugar-visitor.hh + * src/object/renamer.cc + * src/object/type-checker.cc + * src/overload/binder.cc + * src/overload/type-checker.cc + * src/translate/translator.cc + * src/type/type-checker.cc: Here. + +2021-02-06 Romain Foucher + + ast: make Chunk iterable + + * src/ast/chunk.hh + * src/ast/chunk.hxx: Here. + +2021-02-06 Viviane Garese + + src: use ChunkList iterators + + * src/ast/default-visitor.hxx + * src/inlining/pruner-check.cc + * src/inlining/pruner.cc + * src/object/desugar-visitor.cc: Here. + +2021-02-06 Viviane Garese + + ast: make ChunkList iterable + + * src/ast/ast.yml, + * src/ast/chunk-list.hh, + * src/ast/chunk-list.cc: Here. + +2021-02-05 Mael Cravero + + stagize: do not ship tiger-driver at TC-1 + + * dev/stagize.bash: here + +2021-02-05 Victor Hognon + + driver: split driver into other header file + + * dev/stagize.bash + * src/parse/local.am + * src/parse/tiger-driver.hh + * src/parse/tiger-driver.hxx + * src/parse/parsetiger.yy + * src/parse/tiger-parser.hh + +2021-02-05 Rivee + + driver: add ast delimiter for compilation + + * src/parse/tiger-driver.hh + +2021-02-05 Rivee + + parse: add basic driver pattern for parser + + This is just a simple implementation. Miss a lot a feature like moving + the interface into the driver and refactoring the Bison's file. + + * src/parse/fwd.hh + * src/parse/parsetiger.yy + * src/parse/tiger-driver.hh + * src/parse/tiger-parser.hh + +2021-02-03 Mael Cravero + + misc: list: rename split_head to snoc + + snoc is a lisp convention for the opposite of cons. + + * lib/misc/list.hh, + * lib/misc/list.hxx, + * src/canon/canon.cc, + * src/canon/exp-matcher.cc: here + +2021-02-03 Mael Cravero + + src: Update use of tree->variant + + * src/canon/canon.cc + * src/target/matcher.cc + * src/target/arm/arm-codegen.cc + * src/target/arm/arm-matcher.cc + * src/target/ia32/gas-codegen.cc + * src/target/ia32/gas-matcher.cc + * src/target/mips/spim-codegen.cc + * src/target/mips/spim-matcher.cc + +2021-02-03 Mael Cravero + + tree: Add rStm/rExp attribute to variant + + use_count is not global to all shared_ptr. In order to have shared_ptrs + with the same use_count, one must construct them based on one another, + hence the added attribute to variant. + + * src/tree/binop.cc + * src/tree/binop.hh + * src/tree/call.cc + * src/tree/call.hh + * src/tree/cjump.cc + * src/tree/cjump.hh + * src/tree/const.cc + * src/tree/const.hh + * src/tree/eseq.cc + * src/tree/eseq.hh + * src/tree/exp.hh + * src/tree/jump.cc + * src/tree/jump.hh + * src/tree/label.cc + * src/tree/label.hh + * src/tree/mem.cc + * src/tree/mem.hh + * src/tree/move.cc + * src/tree/move.hh + * src/tree/name.cc + * src/tree/name.hh + * src/tree/seq.cc + * src/tree/seq.hh + * src/tree/stm.hh + * src/tree/sxp.cc + * src/tree/sxp.hh + * src/tree/temp.cc + * src/tree/temp.hh + +2021-02-03 Mael Cravero + + canon: Fix some prototypes + + * src/canon/canon.cc + * src/canon/canon.hh + +2021-02-03 Mael Cravero + + src: Replace make_variant by variant method + + * src/canon/canon.cc + * src/target/arm/arm-codegen.cc + * src/target/arm/arm-matcher.cc + * src/target/ia32/gas-codegen.cc + * src/target/ia32/gas-matcher.cc + * src/target/matcher.cc + * src/target/matcher.hh + * src/target/mips/spim-codegen.cc + * src/target/mips/spim-matcher.cc + +2021-02-03 Mael Cravero + + tree: Add virtual pure variant method + + This will be used to generate variants on tree using dynamic dispatch, + which allows us to create variants based on static type easily. + + * src/tree/binop.cc + * src/tree/binop.hh + * src/tree/call.cc + * src/tree/call.hh + * src/tree/cjump.cc + * src/tree/cjump.hh + * src/tree/const.cc + * src/tree/const.hh + * src/tree/eseq.cc + * src/tree/eseq.hh + * src/tree/jump.cc + * src/tree/jump.hh + * src/tree/label.cc + * src/tree/label.hh + * src/tree/mem.cc + * src/tree/mem.hh + * src/tree/move.cc + * src/tree/move.hh + * src/tree/name.cc + * src/tree/name.hh + * src/tree/seq.cc + * src/tree/seq.hh + * src/tree/sxp.cc + * src/tree/sxp.hh + * src/tree/temp.cc + * src/tree/temp.hh + * src/tree/tree-variants.hh + * src/tree/tree-variants.hxx + * src/tree/tree.hh + +2021-02-03 Mael Cravero + + canon: Add fixme markers for students + + * src/canon/exp-matcher.cc + * src/canon/stm-matcher.cc + +2021-02-03 Mael Cravero + + misc: Add comments about LambdaVisitors + + * lib/misc/lambda-visitor.hh + +2021-02-03 Mael Cravero + + target: Correctly process move_store/load for temp + + * src/target/arm/arm-matcher.cc + * src/target/ia32/gas-matcher.cc + * src/target/mips/spim-matcher.cc + +2021-02-03 Mael Cravero + + target: Add rule tracing to matchers + + * src/target/mips/arm-matcher.cc + * src/target/mips/gas-matcher.cc + * src/target/mips/spim-matcher.cc + +2021-02-03 Mael Cravero + + target: Add rule tracing methods to codegen + + * src/target/codegen.cc + * src/target/codegen.hh + * src/target/matcher.hh + +2021-02-03 Mael Cravero + + codegen: Clean up includes and file headers + + * src/target/arm/arm-codegen.cc + * src/target/arm/arm-codegen.hh + * src/target/ia32/gas-codegen.cc + * src/target/ia32/gas-codegen.hh + * src/target/mips/spim-codegen.cc + * src/target/mips/spim-codegen.hh + +2021-02-03 Mael Cravero + + codegen: Remove using namespace directives + + * src/target/arm/arm-codegen.cc + * src/target/arm/arm-codegen.hh + * src/target/arm/arm-matcher.cc + * src/target/ia32/gas-codegen.cc + * src/target/ia32/gas-codegen.hh + * src/target/ia32/gas-matcher.cc + * src/target/mips/spim-codegen.cc + * src/target/mips/spim-codegen.hh + * src/target/mips/spim-matcher.cc + +2021-02-03 Mael Cravero + + codegen: Remove obsolete global variable cg + + * src/target/arm/arm-codegen.cc + * src/target/arm/arm-codegen.hh + * src/target/ia32/gas-codegen.cc + * src/target/ia32/gas-codegen.hh + * src/target/mips/spim-codegen.cc + * src/target/mips/spim-codegen.hh + +2021-02-03 Mael Cravero + + ia32: Implement codegen matcher + + * src/target/ia32/gas-matcher.cc + * src/target/ia32/gas-matcher.hh + +2021-02-03 Mael Cravero + + arm: Implement codegen matcher + + * src/target/arm/arm-matcher.cc + * src/target/arm/arm-matcher.hh + +2021-02-03 Mael Cravero + + matcher: Check if tree is reducible in REDUCE macro + + * src/target/matcher.hh + +2021-02-03 Mael Cravero + + variants: Add template on visit method + + * lib/misc/concepts.hh + * lib/misc/variant.hh + * lib/misc/variant.hxx + +2021-02-03 Mael Cravero + + mips: Implement codegen matcher + + * src/target/mips/spim-matcher.cc + * src/target/mips/spim-matcher.hh + +2021-02-03 Mael Cravero + + target: Remove *-codegen.cc from BUILT_SOURCES + + * src/target/arm/local.am + * src/target/ia32/local.am + * src/target/mips/local.am + +2021-02-03 Mael Cravero + + target: Do not inline cpu_get + + * src/target/arm/arm-codegen.cc + * src/target/ia32/gas-codegen.cc + * src/target/mips/spim-codegen.cc + +2021-02-03 Mael Cravero + + target: Add codegen macros in target::Matcher + + * src/target/matcher.hh + +2021-02-03 Mael Cravero + + target: Add pointer to codegen in matchers + + * src/target/arm/arm-codegen.cc + * src/target/arm/arm-matcher.cc + * src/target/arm/arm-matcher.hh + * src/target/ia32/gas-codegen.cc + * src/target/ia32/gas-matcher.cc + * src/target/ia32/gas-matcher.hh + * src/target/mips/spim-codegen.cc + * src/target/mips/spim-matcher.cc + * src/target/mips/spim-matcher.hh + +2021-02-03 Mael Cravero + + misc: Add LambdaVisitor for visit pattern-matching + + * lib/misc/lambda-visitor.hh: here + * lib/misc/local.am: add to sources + +2021-02-03 Mael Cravero + + target: Add main pattern-matching skeleton + + * src/target/arm/arm-codegen.cc + * src/target/arm/arm-matcher.cc + * src/target/arm/arm-matcher.hh + * src/target/arm/local.am + * src/target/ia32/gas-codegen.cc + * src/target/ia32/gas-matcher.cc + * src/target/ia32/gas-matcher.hh + * src/target/ia32/local.am + * src/target/local.am + * src/target/matcher.cc + * src/target/matcher.hh + * src/target/mips/local.am + * src/target/mips/spim-codegen.cc + * src/target/mips/spim-matcher.cc + * src/target/mips/spim-matcher.hh + +2021-02-03 Mael Cravero + + target: Rename visitors to matchers + + * src/target/visitor.hh -> src/target/matcher.hh + * src/target/arm/arm-visitor.hh -> src/target/arm/arm-matcher.hh + * src/target/ia32/gas-visitor.hh -> src/target/ia32/gas-matcher.hh + * src/target/mips/spim-visitor.hh -> src/target/mips/spim-matcher.hh + * src/target/arm/arm-codegen.cc + * src/target/ia32/gas-codegen.cc + * src/target/mips/spim-codegen.cc + +2021-02-03 Mael Cravero + + canon: Rename visitors to ExpMatcher and StmMatcher + + * src/canon/canon.cc + * src/canon/canon.hh + * src/canon/exp-visitor.cc -> src/canon/exp-matcher.cc + * src/canon/exp-visitor.hh -> src/canon/exp-matcher.hh + * src/canon/local.am + * src/canon/stm-visitor.cc -> src/canon/stm-matcher.cc + * src/canon/stm-visitor.hh -> src/canon/stm-matcher.hh + +2021-02-03 Mael Cravero + + canon: Update methods privacy + + * src/canon/canon.hh + +2021-02-03 Mael Cravero + + canon: Split pattern-matching into cc and hh + + * src/canon/exp-visitor.cc + * src/canon/stm-visitor.cc + * src/canon/exp-visitor.hh + * src/canon/stm-visitor.hh + * src/canon/local.am + +2021-02-03 Mael Cravero + + canon: Refacto using misc::list + + * src/canon/canon.cc + * src/canon/exp-visitor.hh + * src/canon/stm-visitor.hh + +2021-02-03 Mael Cravero + + misc: Add misc::list functions + + These functions are a wrapper on misc::vector to provide useful syntax + for functional-style list manipulation. + + * lib/misc/list.hh + * lib/misc/list.hxx + * lib/misc/local.am: add list.hh/list.hxx to sources + +2021-02-03 Mael Cravero + + canon: Reorganize and document canon.cc and .hh + + * src/canon/canon.cc + * src/canon/canon.hh + +2021-02-03 Mael Cravero + + canon: Remove obsolete and dead code + + * src/canon/canon.cc + * src/canon/canon.hh + +2021-02-03 Mael Cravero + + canon: Use canon as main function + + Also remove operator() for Stm. + + * src/canon/canon.cc + * src/canon/canon.hh + * src/canon/libcanon.cc + * src/canon/traces.cc + +2021-02-03 Mael Cravero + + canon: Add linearize function + + This function is based on the previous operator() for Seq, with + recursion to completely linearize sequences. + + * src/canon/canon.cc + * src/canon/canon.hh + +2021-02-03 Mael Cravero + + canon: Update canon prototype + + * src/canon/canon.cc + * src/canon/canon.hh + +2021-02-03 Romain Foucher + + epilogue.cc: remove mentions of this file + + * src/target/arm/local.am + * src/target/ia32/local.am + * src/target/mips/local.am + +2021-02-03 Romain Foucher + + prologue.hh: remove mentions of this file + + * build-aux/bin/coverage + * doc/Doxyfile.in + * src/target/arm/local.am + * src/target/ia32/local.am + * src/target/mips/local.am: Here. + +2021-02-03 Mael Cravero + + canon: Handle call validity in call matching + + Contrary to Appel, constructing or pattern-matching nodes is not trivial + in our C++ implementation. It is then cleaner to check if a call is + valid while we're on it thant when we're on its parent. + + * src/canon/canon.cc + * src/canon/exp-visitor.hh + * src/canon/stm-visitor.hh + +2021-02-03 Mael Cravero + + canon: Use parent_get in valid_call + + * src/canon/canon.cc + * src/canon/canon.hh + +2021-02-03 Mael Cravero + + canon: Call canon on all stms + + * src/canon/canon.cc + +2021-02-03 Mael Cravero + + canon: Use Seq as first return of reorder + + The reorder method returns a pair containing a statement with all side + effects pulled out of a tree and the rewritten children of this tree. + + It makes more sense to have it return a sequence of statements as + opposed to a statement (which was a sequence most of the time anyway). + This also limits the number of nested sequences created, which would + have to be flatten at some point anyway. + + * src/canon/canon.cc + * src/canon/canon.hh + * src/canon/exp-visitor.hh + * src/canon/stm-visitor.hh + +2021-02-03 Romain Foucher + + build-aux: bin: coverage: remove mention to .brg files + + * build-aux/bin/coverage + +2021-02-03 Mael Cravero + + canon: Implement pattern-matching + + * src/canon/canon.cc + * src/canon/canon.hh + * src/canon/exp-visitor.hh + * src/canon/stm-visitor.hh + +2021-02-03 Mael Cravero + + tree: Add Call accessors + + * src/tree/call.hh: here + * src/tree/call.hxx: new file + * src/tree/local.am: add call.hxx to sources + +2021-02-03 Mael Cravero + + canon: Implement Appel-style canonization + +2021-02-03 Mael Cravero + + tree: Change tree_list_type to misc::vector + + * src/tree/fwd.hh + +2021-02-03 Mael Cravero + + tree: local.am: Add tree-variants to sources + + * src/tree/local.am + +2021-02-03 Mael Cravero + + tree: Add tree variants builder functions + + * src/tree/tree-variants.hh + * src/tree/tree-variants.hxx + +2021-02-03 Bruno BELANYI + + tree: remove kind_tree_type enumeration + + * src/tree/tree.hh: Remove the enum and associated abstract method + `kind_get`. + * src/tree/binop.cc, src/tree/binop.hh, + * src/tree/call.cc, src/tree/call.hh, + * src/tree/cjump.cc, src/tree/cjump.hh, + * src/tree/const.cc, src/tree/const.hh, + * src/tree/eseq.cc, src/tree/eseq.hh, + * src/tree/jump.cc, src/tree/jump.hh, + * src/tree/label.cc, src/tree/label.hh, + * src/tree/mem.cc, src/tree/mem.hh, + * src/tree/move.cc, src/tree/move.hh, + * src/tree/name.cc, src/tree/name.hh, + * src/tree/seq.cc, src/tree/seq.hh, + * src/tree/sxp.cc, src/tree/sxp.hh, + * src/tree/temp.cc, src/tree/temp.hh: Remove `kind_get` method. + +2021-02-03 Mael Cravero + + target: use std::visit in codegen + + * src/target/arm/arm-codegen.cc + * src/target/arm/arm-codegen.hh + * src/target/arm/arm-visitor.hh + * src/target/ia32/gas-codegen.cc + * src/target/ia32/gas-codegen.hh + * src/target/ia32/gas-visitor.hh + * src/target/mips/spim-codegen.cc + * src/target/mips/spim-codegen.hh + * src/target/mips/spim-visitor.hh + * src/target/visitor.hh + +2021-02-03 Mael Cravero + + misc: variant: Add visit method + + std::visit does not handle classes inheriting from std::variant, hence + the need to write a wrapper method in misc::variant. + + * lib/misc/variant.hh + * lib/misc/variant.hxx + +2021-02-03 Mael Cravero + + target: Delete monoburg code in codegen + + Also remove now-obsolete prologue and epilogue files. + + * src/target/arm/arm-codegen.cc + * src/target/arm/arm-codegen.hh + * src/target/arm/epilogue.cc + * src/target/arm/prologue.hh + * src/target/ia32/epilogue.cc + * src/target/ia32/gas-codegen.cc + * src/target/ia32/gas-codegen.hh + * src/target/ia32/prologue.hh + * src/target/mips/epilogue.cc + * src/target/mips/prologue.hh + * src/target/mips/spim-codegen.cc + * src/target/mips/spim-codegen.hh + +2021-02-03 Romain Foucher + + replace MBTREE_TYPE by tree_node_type + + * arm/arm-codegen.cc, arm/arm-codegen.hh + * arm/prologue.hh + * ia32/gas-codegen.cc, ia32/gas-codegen.hh + * ia32/prologue.hh + * mips/prologue.hh + * mips/spim-codegen.cc, mips/spim-codegen.hh: Here. + +2021-02-03 Romain Foucher + + src: target: use pragma once + + * src/target/arm/arm-codegen.hh + * src/target/ia32/gas-codegen.hh + * src/target/mips/spim-codegen.hh: Here. + +2021-02-03 Romain Foucher + + src: target: remove MBCGEN_TYPE + + This is a Monoburg left over. + + * src/target/arm/arm-codegen.cc, src/target/arm/arm-codegen.hh + * src/target/arm/epilogue.cc + * src/target/arm/prologue.hh + * src/target/ia32/epilogue.cc + * src/target/ia32/gas-codegen.cc, src/target/ia32/gas-codegen.hh + * src/target/ia32/prologue.hh + * src/target/mips/epilogue.cc + * src/target/mips/prologue.hh + * src/target/mips/spim-codegen.cc, src/target/mips/spim-codegen.hh: Here. + +2021-02-03 Romain Foucher + + src: target: remove monoburg generated unnecessary stuff + + * src/target/arm/arm-codegen.cc, src/target/arm/arm-codegen.hh + * src/target/ia32/gas-codegen.cc, src/target/ia32/gas-codegen.hh + * src/target/mips/spim-codegen.cc, src/target/mips/spim-codegen.hh: Here. + +2021-02-03 Romain Foucher + + monoburg: remove + + * build-aux/bin/monoburg++.in + * dev/install-monoburg + * src/target/arm/binop.brg + * src/target/arm/call.brg + * src/target/arm/cjump.brg + * src/target/arm/exp.brg + * src/target/arm/mem.brg + * src/target/arm/move.brg + * src/target/arm/move_load.brg + * src/target/arm/move_store.brg + * src/target/arm/stm.brg + * src/target/arm/temp.brg + * src/target/arm/tree.brg + * src/target/ia32/binop.brg + * src/target/ia32/call.brg + * src/target/ia32/cjump.brg + * src/target/ia32/exp.brg + * src/target/ia32/mem.brg + * src/target/ia32/move.brg + * src/target/ia32/move_load.brg + * src/target/ia32/move_store.brg + * src/target/ia32/stm.brg + * src/target/ia32/temp.brg + * src/target/ia32/tree.brg + * src/target/mips/binop.brg + * src/target/mips/call.brg + * src/target/mips/cjump.brg + * src/target/mips/exp.brg + * src/target/mips/mem.brg + * src/target/mips/move.brg + * src/target/mips/move_load.brg + * src/target/mips/move_store.brg + * src/target/mips/stm.brg + * src/target/mips/temp.brg + * src/target/mips/tree.brg: Deleted. + * .gitignore + * build-aux/local.am + * configure.ac + * dev/stagize + * dev/stats + * src/target/arm/arm-codegen.cc + * src/target/arm/arm-codegen.hh + * src/target/arm/epilogue.cc + * src/target/arm/local.am + * src/target/arm/prologue.hh + * src/target/ia32/epilogue.cc + * src/target/ia32/gas-codegen.cc + * src/target/ia32/gas-codegen.hh + * src/target/ia32/local.am + * src/target/ia32/prologue.hh + * src/target/local.am + * src/target/mips/epilogue.cc + * src/target/mips/local.am + * src/target/mips/prologue.hh + * src/target/mips/spim-codegen.cc + * src/target/mips/spim-codegen.hh: Here. + +2021-02-03 Romain Foucher + + src: tree: add Tree variants + + Store nodes inside `misc::variant`s which will track type information for us. + + * src/tree/tree-variants.hh: Here. + +2021-02-03 Mael Cravero + + canon: Make canon_default compile with new trees + + This is only there for compilation. The old canon algorithm cannot work + the new tree implementation and will have to be rewritten. + + * src/canon/canon.cc + * src/canon/traces.cc + +2021-02-03 Mael Cravero + + canon: Update to use new tree interface + + * src/canon/canon.cc + +2021-02-03 Mael Cravero + + translate: Update to use new tree interface + + * src/translate/exp.cc + * src/translate/translation.cc + +2021-02-03 Mael Cravero + + tree: Set children parents in node constructor + + This uses for_each_child for factorizing. + + * src/tree/binop.cc + * src/tree/call.cc + * src/tree/cjump.cc + * src/tree/eseq.cc + * src/tree/jump.cc + * src/tree/mem.cc + * src/tree/move.cc + * src/tree/seq.cc + * src/tree/sxp.cc + +2021-02-03 Mael Cravero + + tree: Add for_each_child method to iterate nodes + + This is used to factorize reducible_set. + + * src/tree/binop.cc + * src/tree/binop.hh + * src/tree/call.cc + * src/tree/call.hh + * src/tree/cjump.cc + * src/tree/cjump.hh + * src/tree/const.cc + * src/tree/const.hh + * src/tree/eseq.cc + * src/tree/eseq.hh + * src/tree/jump.cc + * src/tree/jump.hh + * src/tree/label.cc + * src/tree/label.hh + * src/tree/mem.cc + * src/tree/mem.hh + * src/tree/move.cc + * src/tree/move.hh + * src/tree/name.cc + * src/tree/name.hh + * src/tree/seq.cc + * src/tree/seq.hh + * src/tree/sxp.cc + * src/tree/sxp.hh + * src/tree/temp.cc + * src/tree/temp.hh + * src/tree/tree.hh + * src/tree/tree.hxx + +2021-02-03 Mael Cravero + + tree: Make dump method virtual pure + + This ensures that every class has a proper implementation of the method + now that there is no generic children attribute. + + * src/tree/binop.cc + * src/tree/binop.hh + * src/tree/cjump.cc + * src/tree/cjump.hh + * src/tree/const.cc + * src/tree/const.hh + * src/tree/jump.cc + * src/tree/jump.hh + * src/tree/label.cc + * src/tree/label.hh + * src/tree/mem.cc + * src/tree/mem.hh + * src/tree/move.cc + * src/tree/move.hh + * src/tree/name.cc + * src/tree/name.hh + * src/tree/sxp.cc + * src/tree/sxp.hh + * src/tree/temp.cc + * src/tree/temp.hh + * src/tree/tree.hh + +2021-02-03 Mael Cravero + + tree: Remove children_ attribute of tree class + + Use specific attributes for each tree node in order to make the tree + implementation cleaner. + Also remove unused replace_by method. + + * src/tree/binop.cc + * src/tree/binop.hh + * src/tree/binop.hxx + * src/tree/call.cc + * src/tree/call.hh + * src/tree/cjump.cc + * src/tree/cjump.hh + * src/tree/cjump.hxx + * src/tree/const.hxx + * src/tree/eseq.cc + * src/tree/eseq.hh + * src/tree/eseq.hxx + * src/tree/jump.cc + * src/tree/jump.hh + * src/tree/jump.hxx + * src/tree/mem.cc + * src/tree/mem.hh + * src/tree/mem.hxx + * src/tree/move.cc + * src/tree/move.hh + * src/tree/move.hxx + * src/tree/name.cc + * src/tree/seq.cc + * src/tree/seq.hh + * src/tree/seq.hxx + * src/tree/stm.hh + * src/tree/sxp.cc + * src/tree/sxp.hh + * src/tree/sxp.hxx + * src/tree/temp.cc + * src/tree/tree.cc + * src/tree/tree.hh + * src/tree/tree.hxx + +2021-02-02 Aleksandar Radojicic + + dev: add canon as kept-category + + * dev/stagize.bash + +2021-02-02 Aleksandar Radojicic + + misc: add marks to give students a concept to write + + * lib/misc/test-variant.cc + * lib/misc/variant.hh + * lib/misc/variant.hxx + +2021-01-31 Aleksandar Radojicic + + misc: add tests on variant's concepts + + * lib/misc/test-variant.cc + +2021-01-31 Aleksandar Radojicic + + misc: use of auto on some variables + + * lib/misc/algorithm.hxx + * lib/misc/endomap.hxx + * lib/misc/map.hxx + * lib/misc/set.hxx + +2021-01-31 Aleksandar Radojicic + + misc: add constraint unique_type to VariantTypes + + * lib/misc/variant.hh + +2021-01-31 Aleksandar Radojicic + + misc: use of concepts on misc::variant + + * lib/misc/variant.hh + * lib/misc/variant.hxx + +2021-01-31 Aleksandar Radojicic + + misc: create concepts for variants in variant.hh + + * lib/misc/variant.hh + +2021-01-25 Aleksandar Radojicic + + misc: use of concepts in misc::set + + Also rename the template parameters to use more explicit names. + + * lib/misc/set.hh + * lib/misc/set.hxx + +2021-01-25 Aleksandar Radojicic + + misc: new concept 'Iterator' in concepts.hh + + * lib/misc/concepts.hh + +2021-01-25 Aleksandar Radojicic + + misc: use new concepts in map + + * lib/misc/map.hh + * lib/misc/map.hxx + +2021-01-25 Aleksandar Radojicic + + misc: add new concepts for iterables + + * lib/misc/concepts.hh + +2021-01-25 Aleksandar Radojicic + + misc: use the concept 'Map' in algorithm + + * lib/misc/algorithm.hh + * lib/misc/algorithm.hxx + +2021-01-25 Aleksandar Radojicic + + misc: add new concept 'Map' in concepts.hh + + * lib/misc/concepts.hh + +2021-01-25 Aleksandar Radojicic + + misc: move concepts dedicated file concepts.hh + + * lib/misc/algorithm.hh + * lib/misc/concepts.hh + * lib/misc/local.am + +2021-01-25 Aleksandar Radojicic + + configure: update compiler version checks + + Use -dumpversion and -dumpfullversion to get the compiler version. + The old version with sed returned the last number in the message + returned by --version, which is the year in some cases. + + * configure.ac + +2021-01-25 Aleksandar Radojicic + + configure: update c++ version flag to c++20 + + Also remove the check on -fconcepts which is only available for gcc, and + not needed anymore with c++20. + + * configure.ac + +2021-01-25 Aleksandar Radojicic + + misc/fwd.hh: use snake_case for class names + + Move fwd classnames into lowercase to match real classnames in lib/misc/fwd.hh + and update the use of file_library's forward declaration to match the new name. + + * lib/misc/fwd.hh + * src/parse/tasks.hh + +2021-01-23 Romain Foucher + + ast: remove 'decs' mentions + + * dev/ast-cloner-gen.py + * dev/ast-fwd-gen.py + * dev/ast-visitor-gen.py + * src/astclone/cloner.hh + * src/bind/binder.hxx + * src/desugar/test-bounds-checking.cc + * src/inlining/libinlining.cc + * src/object/binder.cc + * src/object/libobject.cc + * src/parse/tasks.cc + * src/parse/tiger-parser.cc: Here. + +2021-01-23 Romain Foucher + + ast: rename DecsList to ChunkList + + * src/ast/decs-list.hh + * src/ast/decs-list.cc + * src/ast/decs-list.hxx: Delete. + + * src/ast/chunk-list.hh + * src/ast/chunk-list.cc + * src/ast/chunk-list.hxx: New. + + * configure.ac + * dev/tc.texi + * src/ast/README-student.txt + * src/ast/README.txt + * src/ast/all.hh + * src/ast/ast-nodes.mk + * src/ast/ast.gv + * src/ast/ast.yml + * src/ast/class-ty.cc + * src/ast/class-ty.hh + * src/ast/class-ty.hxx + * src/ast/default-visitor.hh + * src/ast/default-visitor.hxx + * src/ast/dumper.cc + * src/ast/dumper.hh + * src/ast/fwd.hh + * src/ast/let-exp.cc + * src/ast/let-exp.hh + * src/ast/let-exp.hxx + * src/ast/object-visitor.hxx + * src/ast/pretty-printer.cc + * src/ast/tasks.cc + * src/ast/tasks.hh + * src/ast/test-ast.cc + * src/ast/tiger_ast.i + * src/ast/visitor.hh + * src/astclone/cloner.cc + * src/astclone/cloner.hh + * src/astclone/tasks.cc + * src/bind/binder.cc + * src/bind/test-bind.cc + * src/desugar/libdesugar.cc + * src/desugar/test-bounds-checking.cc + * src/inlining/libinlining.cc + * src/inlining/pruner-check.cc + * src/inlining/pruner.cc + * src/object/binder.cc + * src/object/desugar-visitor.cc + * src/object/desugar-visitor.hh + * src/object/libobject.cc + * src/object/renamer.cc + * src/object/test-bind.cc + * src/object/test-desugar.cc + * src/object/test-parse.cc + * src/object/test-type.cc + * src/object/type-checker.cc + * src/parse/fwd.hh + * src/parse/libparse.cc + * src/parse/libparse.hh + * src/parse/parsetiger.yy + * src/parse/scantiger.ll + * src/parse/tasks.cc + * src/parse/test-tweast.cc + * src/parse/tiger-parser.cc + * src/parse/tiger-parser.hh + * src/parse/tiger_parse.i + * src/parse/tweast.cc + * src/parse/tweast.hh + * src/translate/translator.cc + * tests/import-syntax/import-exp.tc-err + * tests/import-syntax/import-exp.tig + * ti/ti.cc: Here. + +2021-01-23 Romain Foucher + + ast: rename decs_visit to chunk_visit + + * dev/ast-cloner-gen.py + * src/ast/default-visitor.hh + * src/ast/default-visitor.hxx + * src/astclone/cloner.cc + * src/astclone/cloner.hh + * src/astclone/cloner.hxx + * src/bind/binder.cc + * src/bind/binder.hh + * src/bind/binder.hxx + * src/object/binder.cc + * src/object/binder.hh + * src/type/type-checker.cc + * src/type/type-checker.hh: Here. + +2021-01-23 Romain Foucher + + ast: rename Decs to ChunkInterface + + * src/ast/decs.hh + * src/ast/decs.hxx: Delete. + * src/ast/chunk-interface.hh + * src/ast/chunk-interface.hxx: New file. + * src/ast/ast.yml + * src/ast/chunk.hh + * src/ast/chunk.hxx + * src/ast/decs-list.cc + * src/ast/decs-list.hh + * src/ast/default-visitor.hh + * src/ast/default-visitor.hxx + * src/ast/fwd.hh + * src/ast/tiger_ast.i + * src/astclone/cloner.hxx + * src/bind/binder.hxx + * src/inlining/pruner-check.cc + * src/inlining/pruner.cc + * src/object/desugar-visitor.cc + * src/object/desugar-visitor.hh + * src/parse/libparse.cc + * src/parse/libparse.hh + * src/type/type-checker.cc: Here. + +2021-01-23 Romain Foucher + + ast: rename VarDecs to VarChunk + + * dev/ast-cloner-gen.py + * dev/ast-fwd-gen.py + * dev/ast-visitor-gen.py + * dev/ast.py + * dev/stats.sh + * dev/tc.texi + * src/ast/README-student.txt + * src/ast/README.txt + * src/ast/ast.yml + * src/ast/default-visitor.hh + * src/ast/default-visitor.hxx + * src/ast/dumper.cc + * src/ast/dumper.hh + * src/ast/function-dec.cc + * src/ast/function-dec.hh + * src/ast/function-dec.hxx + * src/ast/fwd.hh + * src/ast/method-dec.cc + * src/ast/method-dec.hh + * src/ast/pretty-printer.cc + * src/ast/test-ast.cc + * src/ast/visitor.hh + * src/astclone/cloner.cc + * src/astclone/cloner.hh + * src/bind/binder.cc + * src/bind/binder.hh + * src/inlining/inliner.cc + * src/inlining/pruner.cc + * src/object/binder.hh + * src/object/desugar-visitor.cc + * src/object/desugar-visitor.hh + * src/parse/parsetiger.yy + * src/translate/translator.cc + * src/translate/translator.hh + * src/type/type-checker.cc + * src/type/type-checker.hh: Here. + +2021-01-23 Romain Foucher + + ast: rename MethodDecs to MethodChunk + + * dev/stats.sh + * src/ast/dumper.cc + * src/ast/dumper.hh + * src/ast/fwd.hh + * src/ast/non-object-visitor.hh + * src/ast/non-object-visitor.hxx + * src/ast/object-visitor.hh + * src/ast/object-visitor.hxx + * src/ast/visitor.hh + * src/astclone/cloner.cc + * src/astclone/cloner.hh + * src/object/binder.cc + * src/object/renamer.cc + * src/object/renamer.hh + * src/object/type-checker.cc + * src/object/type-checker.hh + * src/parse/parsetiger.yy: Here. + +2021-01-23 Romain Foucher + + ast: rename TypeDecs to TypeChunk + + * dev/stats.sh + * dev/tc.texi + * src/ast/default-visitor.hh + * src/ast/default-visitor.hxx + * src/ast/dumper.cc + * src/ast/dumper.hh + * src/ast/fwd.hh + * src/ast/visitor.hh + * src/astclone/cloner.cc + * src/astclone/cloner.hh + * src/bind/binder.cc + * src/bind/binder.hh + * src/desugar/bounds-checking-visitor.cc + * src/desugar/bounds-checking-visitor.hh + * src/object/desugar-visitor.cc + * src/object/desugar-visitor.hh + * src/object/type-checker.cc + * src/object/type-checker.hh + * src/parse/parsetiger.yy + * src/translate/translator.cc + * src/translate/translator.hh + * src/type/type-checker.cc + * src/type/type-checker.hh: Here. + +2021-01-23 Romain Foucher + + ast: rename FunctionDecs to FunctionChunk + + * dev/stats.sh + * dev/tc.texi + * src/ast/default-visitor.hh + * src/ast/default-visitor.hxx + * src/ast/dumper.cc + * src/ast/dumper.hh + * src/ast/fwd.hh + * src/ast/test-ast.cc + * src/ast/visitor.hh + * src/astclone/cloner.cc + * src/astclone/cloner.hh + * src/bind/binder.cc + * src/bind/binder.hh + * src/callgraph/call-graph-visitor.cc + * src/callgraph/call-graph-visitor.hh + * src/callgraph/parent-graph-visitor.cc + * src/callgraph/parent-graph-visitor.hh + * src/callgraph/static-link-visitor.hh + * src/inlining/pruner-check.cc + * src/inlining/pruner.cc + * src/inlining/pruner.hh + * src/llvmtranslate/escapes-collector.cc + * src/llvmtranslate/translator.cc + * src/llvmtranslate/translator.hh + * src/object/binder.cc + * src/object/binder.hh + * src/object/overfun-binder.cc + * src/object/overfun-binder.hh + * src/overload/binder.cc + * src/overload/binder.hh + * src/overload/type-checker.cc + * src/overload/type-checker.hh + * src/parse/parsetiger.yy + * src/translate/translator.cc + * src/translate/translator.hh + * src/type/type-checker.cc + * src/type/type-checker.hh: Here. + +2021-01-23 Romain Foucher + + ast: rename AnyDecs to Chunk + + * src/ast/any-decs.hxx + * src/ast/any-decs.hh: Delete. + * src/ast/chunk.hh: + * src/ast/chunk.hxx: New File. + * dev/ast-all-gen.py + * dev/ast-fwd-gen.py + * dev/stats.sh + * dev/tc.texi + * src/ast/all.hh + * src/ast/ast.yml + * src/ast/function-dec.hh + * src/ast/fwd.hh + * src/ast/local.am + * src/ast/tiger_ast.i + * src/bind/binder.hh + * src/bind/binder.hxx + * src/object/binder.cc + * src/object/binder.hh + * src/parse/parsetiger.hh + * src/parse/parsetiger.yy + * src/type/type-checker.cc + * src/type/type-checker.hh: Here. + +2021-01-23 Mael Cravero + + .pre-commit-config.yaml: disable shellcheck + + * .pre-commit-config.yaml + +2021-01-22 Romain Foucher + + .pre-commit-config.yaml: allow multiple documents + + * .pre-commit-config.yaml: Here. + +2021-01-22 Raphael Dias--Monteiro + + gitlab-ci: remove build-assignments outdated arguments + + * .gitlab-ci.yml, + * buildfarm/build-assignment: Here. + +2021-01-22 Mael Cravero + + type: Fix error message for wrong number of args in function + + * src/type/type-checker.cc + +2021-01-21 Mael Cravero + + gitlab-ci: add pre-commit stage + + Also remove trailing whitespaces. + + * gitlab-ci.yml + +2021-01-21 Mael Cravero + + pre-commit: add pre-commit hooks + + Add pre-commit checks for: + - clang-format + - python (black) + - shell check + - yaml check + - trailing whitespaces + - forbid binaries + + * .pre-commit-config.yaml + +2021-01-21 Romain Foucher + + src: add const reference for some misc::symbol lvalues + + * src/assem/fragment.hh + * src/bind/renamer.hxx + * src/desugar/bounds-checking-visitor.cc + * src/object/desugar-visitor.cc + * src/regalloc/test-regalloc.cc + * src/type/field.hh: Here. + +2021-01-21 Romain Foucher + + src: overload: over-table put and get take symbol as const reference + + * src/overload/over-table.hh + * src/overload/over-table.hxx: Here. + +2021-01-21 Laurent Zhu + + symbol: pass by const reference when possible + + * src/bind/renamer.hxx, + * src/type/README.txt, + * src/type/attribute.hh, + * src/type/attribute.hxx, + * src/type/field.cc, + * src/type/field.hh, + * src/type/field.hxx, + * src/type/method.hh, + * src/type/method.hxx, + * src/type/named.cc, + * src/type/named.hh, + * src/type/named.hxx, + * src/type/record.cc, + * src/type/record.hh, + * src/type/record.hxx: here. + +2021-01-04 Romain Foucher + + doc: schema.xmi: delete + + This is the only change as I could not find any mention of this file. + I suppose it cannot be generated anymore. + + * doc/schema.xmi: Delete. + +2020-12-16 Viviane Garese + + tests: bounds-checking: fix expected output of bounds checking tests containing a segfault + + * bounds-check/bounds-checks-alias-both.err, + * bounds-check/bounds-checks-alias-both.sta, + * bounds-check/bounds-checks-alias-init.err, + * bounds-check/bounds-checks-alias.err, + * bounds-check/bounds-checks-alias.sta, + * tc-check.in: Here. + +2020-12-04 Romain Foucher + + parse: remove parsetiger.cc and parsetiger.hh + + These files are generated and useless. + +2020-11-29 Bruno BELANYI + + translate: fix void comparison results + + The comparison of Void expressions resulted in 1, whether it was an + equality or inequality. This is now fixed and tested. + + * ../src/translate/translator.cc: Fixed here. + * good/compare-void-results.-e.ia32.s, + * good/compare-void-results.-e.mips.s, + * good/compare-void-results.-e.u.mips.s, + * good/compare-void-results.err, + * good/compare-void-results.hir, + * good/compare-void-results.hpr, + * good/compare-void-results.ia32.s, + * good/compare-void-results.lir, + * good/compare-void-results.lpr, + * good/compare-void-results.mips.s, + * good/compare-void-results.out, + * good/compare-void-results.sta, + * good/compare-void-results.tig, + * good/compare-void-results.u.mips.s: Add test here. + +2020-11-27 Romain Foucher + + tcsh: respect several PEP recommendations + + * tcsh/python/tc.py + * tcsh/python/test-compiler.py + * tcsh/python/test-front-end.py + * tcsh/python/ti.py: Here. + +2020-11-27 Romain Foucher + + dev: respect several PEP recommendations + + * dev/ast-cloner-gen.py + * dev/ast-default-visitor-gen.py + * dev/ast-fwd-gen.py + * dev/ast-graph-gen.py + * dev/ast-ignores-gen.py + * dev/ast-nodes-gen.py + * dev/ast-nodes-mk-gen.py + * dev/ast-pretty-printer-gen.py + * dev/ast-readme-gen.py + * dev/ast-visitor-gen.py + * dev/ast.py + * dev/tools.py: Here. + +2020-11-26 Romain Foucher + + src: parse: do not track bison generated files + + * src/location.hh + * src/position.hh: Deleted. + + * .gitignore: Here. + +2020-11-26 Maxime Joubert + + singleton: implement generic crtp singletons + + * lib/misc/local.am, + * lib/misc/singleton.hh, + * src/type/builtin-types.cc, + * src/type/builtin-types.hh: here. + +2020-11-26 Romain Foucher + + src: type: builtin-types: move order Int, String, Void. + + * src/type/builtin-types.cc + * src/type/builtin-types.hh: Here. + +2020-11-26 Romain Foucher + + tests: object-good: add test about retriving a varaible into a field + + This is the test: + let + var self : int := 4 + class A { + var self : int := self + method print_self() = + print_int(self.self) + } + var a := new A + in + a.print_self() + end + + * retrieve-outer-variable-named-self-to-field-named-self.-e.ia32.s + * retrieve-outer-variable-named-self-to-field-named-self.-e.mips.s + * retrieve-outer-variable-named-self-to-field-named-self.-e.u.mips.s + * retrieve-outer-variable-named-self-to-field-named-self.err + * retrieve-outer-variable-named-self-to-field-named-self.hir + * retrieve-outer-variable-named-self-to-field-named-self.hpr + * retrieve-outer-variable-named-self-to-field-named-self.ia32.s + * retrieve-outer-variable-named-self-to-field-named-self.lir + * retrieve-outer-variable-named-self-to-field-named-self.lpr + * retrieve-outer-variable-named-self-to-field-named-self.mips.s + * retrieve-outer-variable-named-self-to-field-named-self.out + * retrieve-outer-variable-named-self-to-field-named-self.pan + * retrieve-outer-variable-named-self-to-field-named-self.sta + * retrieve-outer-variable-named-self-to-field-named-self.tig + * retrieve-outer-variable-named-self-to-field-named-self.u.mips.s: Here. + +2020-11-26 Romain Foucher + + tests: object-good: add test about retrieving a variable named self + + This is the test: + let + var self : int := 4 + class A { + var i : int := self + method print_i() = + print_int(self.i) + } + var a := new A + in + a.print_i() + end + + * retrieve-outer-variable-named-self.-e.ia32.s + * retrieve-outer-variable-named-self.-e.mips.s + * retrieve-outer-variable-named-self.-e.u.mips.s + * retrieve-outer-variable-named-self.err + * retrieve-outer-variable-named-self.hir + * retrieve-outer-variable-named-self.hpr + * retrieve-outer-variable-named-self.ia32.s + * retrieve-outer-variable-named-self.lir + * retrieve-outer-variable-named-self.lpr + * retrieve-outer-variable-named-self.mips.s + * retrieve-outer-variable-named-self.out + * retrieve-outer-variable-named-self.pan + * retrieve-outer-variable-named-self.sta + * retrieve-outer-variable-named-self.tig + * retrieve-outer-variable-named-self.u.mips.s: Here. + +2020-11-26 Bruno BELANYI + + object-binder: reword binding of `self' + + To make it both easier to understand on the students' part, and to make + our implementation easier to read, I reworded both the explanation of + `self' binding and our reference implementation. + + * src/object/binder.cc: Here. + +2020-11-26 Erwan Auer + + object-binder: fixed issue with SimpleVars named self + + Due an error in a condition inside the object binder, when the + object binder extension was activated, variables and parameters + named `self' were not binded if they were not overriding the + `self' object. + + * src/object/binder.cc: here. + + * tests/object-good/function-with-self-parameter.-e.ia32.s: Add + * tests/object-good/function-with-self-parameter.-e.mips.s, + * tests/object-good/function-with-self-parameter.-e.u.mips.s, + * tests/object-good/function-with-self-parameter.err, + * tests/object-good/function-with-self-parameter.hir, + * tests/object-good/function-with-self-parameter.hpr, + * tests/object-good/function-with-self-parameter.ia32.s, + * tests/object-good/function-with-self-parameter.lir, + * tests/object-good/function-with-self-parameter.lpr, + * tests/object-good/function-with-self-parameter.mips.s, + * tests/object-good/function-with-self-parameter.out, + * tests/object-good/function-with-self-parameter.pan, + * tests/object-good/function-with-self-parameter.sta, + * tests/object-good/function-with-self-parameter.tig, + * tests/object-good/function-with-self-parameter.u.mips.s: here. + +2020-11-23 Viviane Garese + + tests: add good nested lvalue test + + This test caused the ref to segfault because of the way the lvalue rule + was written before the modifications resolving the conflicts. + + * tests/good/lvalue-nesting.-e.ia32.s, + * tests/good/lvalue-nesting.-e.mips.s, + * tests/good/lvalue-nesting.-e.u.mips.s, + * tests/good/lvalue-nesting.err, + * tests/good/lvalue-nesting.hir, + * tests/good/lvalue-nesting.hpr, + * tests/good/lvalue-nesting.ia32.s, + * tests/good/lvalue-nesting.lir, + * tests/good/lvalue-nesting.mips.s, + * tests/good/lvalue-nesting.out, + * tests/good/lvalue-nesting.sta, + * tests/good/lvalue-nesting.tig, + * tests/good/lvalue-nesting.u.mips.s: here. + +2020-11-23 Viviane Garese + + grammar: conflict: fix last remaining conflict + + * src/parse/parsetiger.hh + * src/parse/parsetiger.cc + * src/parse/parsetiger.yy: here. + +2020-11-23 Viviane Garese + + grammar: conflict: fix one of two expected conflicts + + * src/parse/parsetiger.yy + * src/parse/parsetgier.hh + * src/parse/parsetiger.cc: here. + +2020-09-16 Aleksandar Radojicic + + configure: update gcc version check to handle concepts + +2020-09-16 Aleksandar Radojicic + + misc: adapt concepts to make them compliant with gcc10 + +2020-09-16 Bruno BELANYI + + ti: fork: run file through clang-format + + * ti/fork.cc: Here. + +2020-09-16 Bruno BELANYI + + translate: run files through clang-format + + * src/translate/level.hh, + * src/translate/translation.cc, src/translate/translation.hh: Here. + +2020-09-16 Bruno BELANYI + + canon: trace: run file through clang-format + + * src/canon/traces.cc: Here. + +2020-09-16 Bruno BELANYI + + misc: symbol: run file through clang-format + + * lib/misc/symbol.cc: Here. + +2020-09-16 Bruno BELANYI + + misc: algorithm: run files through clang-format + + * lib/misc/algorithm.hh, lib/misc/algorithm.hxx: Here. + +2020-09-16 Bruno BELANYI + + parse: metavar: change lexical_cast to to_string + + * src/parse/metavar-map.hxx: Here. + +2020-09-16 Bruno BELANYI + + misc: symbol: change lexical_cast to to_string + + * lib/misc/symbol.cc: Here. + +2020-09-16 Raphael Dias--Monteiro + + misc: use if with init statement and rvalue reference + + * lib/misc/endomap.hxx, + * lib/misc/escape.cc, + * lib/misc/map.hxx: Here. + +2020-09-16 Louis Dufeu + + misc: add Iterable and ConstIterable concepts + + * lib/misc/algorithm.hh, + * lib/misc/algorithm.hh: here. + +2020-09-16 Foucher Romain + + src: target: codegen constructor is now explicit. + + * src/target/codegen.hh: here. + +2020-09-16 Foucher Romain + + src: target: assembly constructor is now explicit. + + * src/target/assembly.hh: Here. + +2020-09-16 Foucher Romain + + src: tree: Temp constructor is now explicit. + + * src/tree/temp.hh: Here. + +2020-09-16 Romain Foucher + + ast/any-decs: explicit constructor. Override destructor + +2020-09-16 Romain Foucher + + ast/decs: explicit constructor + +2020-09-16 Foucher Romain + + dev: if an AST constructor only has one argument, it is now declared explicit. + + * dev/ast-nodes-gen.py: Here. + + src: ast: add modified AST files + + * dev/ast-nodes-gen.py + * src/ast/ast.hh + * src/ast/break-exp.hh + * src/ast/escapable.hh + * src/ast/exp.hh + * src/ast/nil-exp.hh + * src/ast/ty.hh + * src/ast/var.hh: Here. + +2020-09-16 Foucher Romain + + dev: added ctor_args_list that returns the list of constructor arguments. Also fixed call to super class, now returns a list rather than the raw string. + + * dev/ast.py: Here. + +2020-09-16 Foucher Romain + + dev: generate ast node destructors with override instead of virtual + + * dev/ast-nodes-gen.py: Here. + + src: ast: add modified AST files + + * src/ast/array-exp.hh + * src/ast/array-ty.hh + * src/ast/assign-exp.hh + * src/ast/call-exp.hh + * src/ast/cast-exp.hh + * src/ast/cast-var.hh + * src/ast/class-ty.hh + * src/ast/decs-list.hh + * src/ast/field-init.hh + * src/ast/field-var.hh + * src/ast/field.hh + * src/ast/for-exp.hh + * src/ast/function-dec.hh + * src/ast/if-exp.hh + * src/ast/let-exp.hh + * src/ast/method-call-exp.hh + * src/ast/op-exp.hh + * src/ast/record-exp.hh + * src/ast/record-ty.hh + * src/ast/seq-exp.hh + * src/ast/subscript-var.hh + * src/ast/type-dec.hh + * src/ast/var-dec.hh + * src/ast/while-exp.hh: Here. + +2020-09-16 Romain Foucher + + astclone/cloner: explicit constructor and const ref + + * dev/ast-cloner-gen.py + * src/astclone/cloner.hh: Here. + +2020-09-16 Lombrix + + type/array: removed unused import. Constructor is now explicit + +2020-09-16 Lombrix + + type/attribute: constructor is now explicit + +2020-09-16 Lombrix + + type/builtin-types: deleted members should be public + +2020-09-16 Lombrix + + type/class: removed unused import. Constructor is now explicit + +2020-09-16 Lombrix + + type/function: destructor uses override instead of virtual + +2020-09-16 Lombrix + + type/named: Use of const ref + + As a result, non const type_set has been removed as type_ is const mutable. + +2020-09-16 Lombrix + + type/pretty-printer.hh: explicit constructor + +2020-09-16 Lombrix + + type/pretty-printer.cc: xalloc returns an int not a long int + +2020-09-16 Lombrix + + type/record: use of const refs instead of const copies + +2020-09-16 Lombrix + + type/type-checker.hxx: removed redundant static in anonymous namespace + +2020-09-16 Lombrix + + translate/translator: use of override instead of virtual + +2020-09-16 Lombrix + + translate/exp: explicit constructor + +2020-09-16 Lombrix + + translate/level: explicit constructor + +2020-09-16 Lombrix + + tranlate/translation: use of const ref whenever possible. + +2020-09-16 Bruno BELANYI + + target: mips: use if initializer in cpu + + The `const_iterator` define generated a warning on clang because it + wasn't used anywhere (now that we use `auto` for the type of `ires`). + + * src/target/mips/cpu.cc: Here. + +2020-09-16 Bruno BELANYI + + canon: basic-block: use if initializer + + * src/canon/basic-block.cc: Here. + +2020-09-16 Bruno BELANYI + + dev: scripts: add extension to filenames + + All the scripts in the `dev/` directory now have an extension in all + their filenames. This required renaming them in the build system too. + + * Makefile.am, + * bootstrap, + * dev/ast-all-gen, + * dev/ast-cloner-gen, + * dev/ast-default-visitor-gen, + * dev/ast-fwd-gen, + * dev/ast-gen.mk, + * dev/ast-graph-gen, + * dev/ast-ignores-gen, + * dev/ast-nodes-gen, + * dev/ast-nodes-mk-gen, + * dev/ast-pretty-printer-gen, + * dev/ast-pretty-printer-gen, + * dev/ast-readme-gen, + * dev/ast-visitor-gen, + * dev/count-fixme-lines, + * dev/cut-bison-actions, + * dev/diff-r, + * dev/gitlog-to-changelog, + * dev/install-bison, + * dev/install-generic, + * dev/install-ghc-osx, + * dev/install-havm, + * dev/install-monoburg, + * dev/install-nolimips, + * dev/make-git-tc-base, + * dev/reheader, + * dev/stagize, + * dev/stats, + * dev/studentize, + * dev/tc.texi, + * src/ast/local.am, + * src/astclone/local.am: Here. + +2020-09-16 Bruno BELANYI + + ti: fork: use auto + + * ti/fork.cc: Here. + +2020-09-16 Bruno BELANYI + + tree: tree: use auto + + * src/tree/tree.cc: Here. + +2020-09-16 Bruno BELANYI + + translate: translator: use auto + + * src/translate/translator.cc: Here. + +2020-09-16 Bruno BELANYI + + temp: temp-set: use auto + + * src/temp/temp-set.cc: Here. + +2020-09-16 Bruno BELANYI + + target: mips: use auto in cpu + + * src/target/mips/cpu.cc: Here. + +2020-09-16 Bruno BELANYI + + regalloc: color: use auto + + * src/regalloc/color.cc: Here. + +2020-09-16 Bruno BELANYI + + object: type-checker: use auto + + * src/object/type-checker.cc: Here. + +2020-09-16 Bruno BELANYI + + object: desugar-visitor: use auto + + * src/object/desugar-visitor.cc: Here. + +2020-09-16 Bruno BELANYI + + inlining: pruner: use auto + + * src/inlining/pruner.cc: Here. + +2020-09-16 Bruno BELANYI + + canon: traces: use auto + + * src/canon/traces.cc: Here. + +2020-09-16 Bruno BELANYI + + callgraph: call-graph-visitor: use auto + + * src/callgraph/call-graph-visitor.cc: Here. + +2020-09-16 Bruno BELANYI + + assem: layout: use auto + + * src/assem/layout.cc: Here. + +2020-09-16 Bruno BELANYI + + assem: instrs: use auto + + * src/assem/instrs.cc: Here. + +2020-09-16 Bruno BELANYI + + assem: instr: use auto + + * src/assem/instr.cc: Here. + +2020-09-16 Bruno BELANYI + + misc: error: use auto + + * lib/misc/error.cc: Here. + +2020-09-16 Bruno BELANYI + + translate: translator: use nullptr + + * src/translate/translator.cc: Here. + +2020-09-16 Bruno BELANYI + + canon: libcanon: use override + + * src/canon/libcanon.cc: Here. + +2020-09-16 Bruno BELANYI + + object: type-checker: use default member init + + * src/object/type-checker.cc: Here. + +2020-09-16 Bruno BELANYI + + parse: tiger-parser: use '= default' + + * src/parse/tiger-parser.cc: Here. + +2020-09-16 Bruno BELANYI + + misc: file-library: rename C header + + * lib/misc/file-library.cc: Here. + +2020-09-16 Bruno BELANYI + + target: mips: use make_unique in cpu + + * src/target/mips/cpu.cc: Here. + +2020-09-16 Louis Dufeu + + format: add sh extension + + * dev/format -> dev/format.sh + * Makefile.am: Here. + + Previous changes: step in gitlab CI + + * .gitlab-ci.yml, + * buildfarm/format-check, + * configure.ac: Here. + +2020-09-16 Louis Dufeu + + ast-gen: tweak fwd and visitor gen to match format style + + * dev/ast-fwd-gen + * dev/ast-visitor-gen: Here + + src: ast: add modified AST files + + * src/ast/ast.yml + * src/ast/fwd.hh + * src/ast/visitor.hh: Here. + +2020-06-15 Etienne Renault + + Version 1.89 for 2022-tc-9.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here + +2020-06-08 Etienne Renault + + Version 1.88 for 2022-tc-8.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here + +2020-06-02 Etienne Renault + + Version 1.87 for 2022-tc-7.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here + +2020-05-25 Etienne Renault + + Version 1.86 for 2022-tc-6.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here + +2020-04-20 Laurent Zhu + + dev: use yaml.safe_load_all + + Since PyYAML 5.1, the usage of load functions without specifying the + loader is deprecated. `safe_load_all` is a "sugar" method for using the + `load_all` function with the `SafeLoader` (see https://msg.pyyaml.org/load). + + * ../dev/ast.py: here. + +2020-04-11 Bruno BELANYI + + dev: stagize: do not distribute assistants chech + + * dev/stagize: Do not distribute src/inlining/*-check.{cc,hh}. + +2020-04-11 Bruno BELANYI + + transltate: do not distribute assistant extensions + + * src/translate/tasks.hh: Delimit `hit-with-desugar` with `<<-` and + `->>`. + +2020-04-11 Bruno BELANYI + + inlining: ensure that assistants' do not leak + + We do not want to distribute those extensions to students. + + * src/inlining/inliner-check.cc: Remove useless `<<-` and `->>` + delimiters, + * src/inlining/libinlining.cc, src/inlining/libinlining.hh: Delimit + `*-check` tasks with `<<-` and `->>`, + * src/inlining/local.am: Do not include the `*-check.{cc,hh}` files in + the build system. + +2020-04-11 Maxime Joubert + + assistant: pruner-check: check for recursive functions + + * src/inlining/pruner-check.cc, + * src/inlining/pruner-check.hh, + * tests/bounds-check/bounds-checks-alias.err, + * tests/bounds-check/bounds-checks-alias.sta, + * tests/escapes/formal-escapes.-e.ia32.s, + * tests/escapes/formal-escapes.ia32.s, + * tests/escapes/rhs-of-a-vardec.-e.ia32.s, + * tests/escapes/rhs-of-a-vardec.ia32.s, + * tests/good/array-subscript-assign.-e.ia32.s, + * tests/good/array-subscript-assign.-e.mips.s, + * tests/good/bempel_j.-e.ia32.s, + * tests/good/bempel_j.ia32.s, + * tests/good/commutation-2.-e.ia32.s, + * tests/good/concurrent-arguments.-e.ia32.s, + * tests/good/concurrent-arguments.ia32.s, + * tests/good/evalexp.-e.ia32.s, + * tests/good/evalexp.-e.mips.s, + * tests/good/for-in-let.-e.ia32.s, + * tests/good/fractions-underloaded.-e.ia32.s, + * tests/good/fractions-underloaded.-e.mips.s, + * tests/good/if-and-bool.-e.ia32.s, + * tests/good/if-and-bool.ia32.s, + * tests/good/int-var-ordering.-e.ia32.s, + * tests/good/int-var-ordering.ia32.s, + * tests/good/mini-morpho.-e.ia32.s, + * tests/good/mini-morpho.-e.mips.s, + * tests/good/rel.-e.ia32.s, + * tests/good/rel.ia32.s, + * tests/good/string-huge.-e.ia32.s, + * tests/good/substring-too-low-first.-e.ia32.s, + * tests/good/three-name-spaces.-e.ia32.s, + * tests/good/three-name-spaces.ia32.s, + * tests/good/three-name-spaces.mips.s, + * tests/inline/mutually-recursive-functions.-e.ia32.s, + * tests/inline/shadowing-functions.-e.ia32.s, + * tests/object-good/branching-class.sta, + * tests/object-good/function-returning-object.-e.ia32.s, + * tests/object-good/nil-as-object-arg.-e.ia32.s, + * tests/object-good/nil-as-object-arg.-e.mips.s, + * tests/object-good/nil-as-object-arg.ia32.s, + * tests/object-good/simple-dispatch.-e.ia32.s, + * tests/object-good/simple-dispatch.-e.mips.s, + * tests/object-good/simple-dispatch.ia32.s, + * tests/object-good/using-members-from-within-the-class.-e.ia32.s, + * tests/object-good/using-members-from-within-the-class.-e.mips.s, + * tests/object-good/using-members-from-within-the-class.-e.u.mips.s, + * tests/object-good/using-members-from-within-the-class.hir, + * tests/object-good/using-members-from-within-the-class.ia32.s, + * tests/object-good/using-members-from-within-the-class.lir, + * tests/object-good/using-members-from-within-the-class.mips.s, + * tests/overfun-object-good/overload-nil-diambiguated-using-members-from-within-the-class.hir, + * tests/overload-good/overload-nil-diambiguated.-e.ia32.s, + * tests/overload-good/overload-nil-diambiguated.-e.mips.s, + * tests/overload-good/overload-nil-diambiguated.ia32.s, + * tests/runtime/chr-out-of-range2.-e.ia32.s, + * tests/runtime/chr-out-of-range2.ia32.s: here. + +2020-04-11 Matthieu Simon + + inlining: add InlinerCheck and PrunerCheck classes + + * src/inlining/inliner-check.cc, + src/inlining/inliner-check.hh: Here. + * src/inlining/pruner-check.cc, + src/inlining/pruner-check.hh: Here. + +2020-04-11 Pierre DE ABREU + + hir: add an option to specify that no desugar should be needed + + * Add hir-without-desugar option to set a boolean. If this + boolean is set, then TC should abort during the translation + step everytime a desugar is needed (either on strings or for loop). + +2020-04-11 Pierre DE ABREU + + parse: add an option to allow extensions in direct parsing + + * Add enable-extensions option to allow extensions (_X id) + in TC direct input. It is used to re-parse students outputs + since bonuses like desugar use reserved-id. + +2020-04-11 Pierre DE ABREU + + escapes: exit on error if escapes-check-visitor fails + + * Use the misc::error returned by the libescapes's function + to exit_on_error() in task.cc + +2020-04-11 Bruno BELANYI + + bootstrap: use python3 interpreter This is in an on-going effort to move from Python 2 to Python 3. Because Debian's `python` executable is Python 2, we need to explicitly call `python3`. This is not a problem on Arch, which used Python 3. + +2020-04-11 Bruno BELANYI + + tcsh: use python3 interpreter + + This is in an on-going effort to move from Python 2 to Python 3. Because + Debian's `python` executable is Python 2, we need to explicitly call + `python3`. This is not a problem on Arch, which used Python 3. + + * tcsh/python/test-compiler.py, + * tcsh/python/test-front-end.py, + * tcsh/python/ti.py: Here. + +2020-04-11 Bruno BELANYI + + dev: use python3 interpreter + + This is in an on-going effort to move from Python 2 to Python 3. Because + Debian's `python` executable is Python 2, we need to explicitly call + `python3`. This is not a problem on Arch, which used Python 3. + + I removed the `from __future__ import print_function` which is now + redundant in Python3. + + * dev/ast-all-gen, + * dev/ast-cloner-gen, + * dev/ast-default-visitor-gen, + * dev/ast-fwd-gen, + * dev/ast-graph-gen, + * dev/ast-ignores-gen, + * dev/ast-nodes-gen, + * dev/ast-nodes-mk-gen, + * dev/ast-pretty-printer-gen, + * dev/ast-readme-gen, + * dev/ast-visitor-gen, + * dev/tools.py: Here. + +2020-04-11 Raphael Dias--Monteiro + + buildfarm: bump build-assignment gcc version + + * .gitlab-ci.yml: Here. + +2020-04-11 Etienne Renault + + Version 1.85 for 2022-tc-5.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here + +2020-04-09 Bruno BELANYI + + object: type-checker: refactor class_body handling + + To make the handling of arguments in methods more natural: only checking + if we are directly in a class' body instead of checking if we have an + init AND that we are in a class' body to add a `VarDec` to a class' + fields. We could instead just ensure that the predicate is set to false + both when visiting the header of a method and when visiting the body. + + This makes it so that when we visit a `VarDec`, if we the predicate is + true then we know for sure that we can add it to our class' fields. And + if it is false, we know for sure that we shouldn't. + + With this modification in mind, why should we unset/re-set the predicate + when visiting each method, both in its header and its body, when we can + just unset it globally when visiting a chunk of methods? This commit + does just that. + + * src/object/type-checker.cc: Here. + +2020-04-09 Bruno BELANYI + + object: type-checker: fix binding spurious members + + The initial, easy solution, was to set `current_` to `nullptr` when we + encounter a `VarDec`. + + However this breaks cases where we actually need to refer to self inside + a `VarDec`, such as when copying a member of the class to a local + variable in a method (see the issue !61 for a concrete example). + + The solution used was to have a `within_class_body_p_` predicate to + indicate whether or not we should bind a variable's declaration to a + class' fields. This made the previous `within_methoddec_body_p_` + redundant, it was thus removed. + + * src/object/type-checker.cc, src/object/type-checker.hh: Here. + +2020-04-09 Bruno BELANYI + + tests: object-type: add spurious members tests + + * tests/object-type/spurious-member-method.tc-err, + * tests/object-type/spurious-member-method.tc-sta, + * tests/object-type/spurious-member-method.tig, + * tests/object-type/spurious-member.tc-err, + * tests/object-type/spurious-member.tc-sta, + * tests/object-type/spurious-member.tig: Here. + +2020-03-25 Bruno BELANYI + + gitlab-ci: use Debian when compiling static-tc + +2020-03-25 Bruno BELANYI + + gitlab-ci: enable static llvm on static-tc build + + This uses the work of the previous commit to link `tc` fully statically. + + * .gitlab-ci.yml: Here. + +2020-03-25 Bruno BELANYI + + llvmtranslate: enable static linking + + * configure.ac: Add `--enable-static-llvm` option to enable static + linking of LLVM. + * src/llvmtranslate/local.am: Add `--link-static` flags when + `--enable-static-llvm` is given at configure time. + +2020-03-25 Bruno BELANYI + + build: remove `with-llvm` flag + + * configure.ac: Here. + * src/local.am: Make `llvmtranslate` include non-conditional. + +2020-03-23 Etienne Renault + + Version 1.84 for 2022-tc-4.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here + +2020-02-24 Etienne Renault + + Version 1.83 for 2022-tc-3.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here. + +2020-02-17 Etienne Renault + + Version 1.82 for 2022-tc-2.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, + configure.ac: Here. + +2020-02-09 Etienne Renault + + Version 1.81 for 2022-tc-1.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac, + * Makefile.am,src/version.cc.in: Here. + +2020-02-06 Raphaël Dias--Monteiro + + configure: use std=c++2a compilation flag + + * configure.ac: Here. + +2020-02-04 Clément Démoulins + + gitlab-ci: Use printf instead of echo + +2020-01-30 Bruno BELANYI + + gitlab-ci: fix path to artefact + + * .gitlab-ci.yml: Here. + +2020-01-30 Bruno BELANYI + + gitlab-ci: give static LDFLAGS to script args + + * .gitlab-ci.yml: Here. + +2020-01-30 Bruno BELANYI + + buildfarm: forward arguments from build script + + * buildfarm/build: Here. + +2020-01-29 Clément Démoulins + + gitlab-ci: push tc static on assistant registry + +2020-01-29 Bruno BELANYI + + gitlab-ci: pass static build LDFLAGS in the ENV + +2020-01-29 Bruno BELANYI + + gitlab-ci: fix path to static build output + +2020-01-29 Bruno BELANYI + + gitlab-ci: add missing LDFLAGS to static build + +2020-01-27 Clément Démoulins + + gitlab-ci: use buildfarm/build script instead of a direct call to make + + Use buildfarm/build script instead of a direct call to make. + +2020-01-23 Bruno BELANYI + + gitlab-ci: add static binary compilation stage + + This hook is only triggered when a new version tag is pushed, it builds + a statically linked version of TC (without LLVM, which does not have a + static version of its library packaged). + +2020-01-21 Bruno BELANYI + + build: add option to disable LLVM back-end + + * configure.ac: Add the `with-llvm` option to configure script, + * src/local.am: Check whether the LLVM module should be included. + + This enables us to statically build TC, because it seems like not a + single Linux distribution packages a statically built LLVM library. + +2019-10-20 Louis Dufeu + + format: check if colordiff exists before using it + + * dev/format: here. + +2019-10-20 Louis Dufeu + + format: add missing backslash for format-check makefile rule + + * Makefile.am: here + +2019-10-20 Louis Dufeu + + buildfarm: fix permissions of format-check script + + * buildfarm/format-check: here + +2019-10-19 Louis Dufeu + + format: added makefile rules and step in gitlab ci + + * .gitlab-ci.yml, + * Makefile.am, + * buildfarm/format-check, + * configure.ac, + * dev/format: here. + +2019-10-15 Louis Dufeu + + clang-format: add break curly brace after case label + +2019-10-06 Louis Dufeu + + ast-gen: tweak fwd and visitor gen to match format style + +2019-10-06 Louis Dufeu + + ast-gen: tweak nodes generation so that it matches with format style + +2019-10-05 Louis Dufeu + + includes: add some missing includes that prevented tc from compiling + +2019-10-05 Louis Dufeu + + format: reformat code and restore files that should stay the way they are + +2019-10-03 Louis Dufeu + + parse: add scantiger.hh to be ignored when formatting + +2019-10-01 Louis Dufeu + + format: add flex-lexer.hh as an exception + +2019-10-01 Louis Dufeu + + Makefile: add format rule that calls clang-format on c++ files + +2019-10-01 Louis Dufeu + + ast-cloner-gen: adjust position of blanks lines to match formatted result + +2019-10-01 Louis Dufeu + + ast-cloner-gen: put template declarations of recurse methods on the same line + +2019-10-01 Louis Dufeu + + ast-cloner-gen: fix closing comment of namespace declaration + +2019-09-30 Louis Dufeu + + clang-format: format every single c++ file + +2019-09-30 Louis Dufeu + + clang-format: update config file to match current style + +2019-09-30 Louis Dufeu + + uncrustify: remove config file + +2019-09-30 Maxime Joubert + + wip: uncrustify: add file + + Try to use uncrustify to resolve unfixable clang-format issues. + + * .uncrustify.cfg: Here. + +2019-09-30 Guillaume Marques + + wip: clang-format: update file + + * .clang-format: Here. + +2019-09-30 Sarasvati Moutoucomarapoulé + + wip: clang-format: add file + + * .clang-format: Here. + +2019-09-15 Maxime Joubert + + misc: silence gcc9 warnings about implicit ctor + + * ../lib/misc/ref.hh, + * ../lib/misc/symbol.hh, + * ../lib/misc/unique.hh: here. + +2019-06-24 Etienne Renault + + Version 1.80 for 2021-tc-9 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2019-06-03 Etienne Renault + + Version 1.79 for 2021-tc-8 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2019-05-27 Etienne Renault + + Version 1.78 for 2021-tc-7 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2019-05-06 Etienne Renault + + Version 1.77 for 2021-tc-6 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2019-05-01 Antoine Suel + + gitlab-ci: use arch image + + * .gitlab-ci.yml, + * tests/tc-check.in: here. + +2019-05-01 Antoine Suel + + CI: Separate each check in jobs + + * .gitlab-ci.yml: here. + +2019-04-29 Etienne Renault + + Version 1.76.1 for 2021-tc-5.1 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2019-04-24 Laurent Zhu + + tc-l: replace TypeBuilder usages + + TypeBuilder has been removed (see https://reviews.llvm.org/D56573). + + * src/llvmtranslate/llvm-type-visitor.cc, + * src/llvmtranslate/translator.cc: here. + +2019-04-19 Etienne Renault + + Version 1.76 for 2021-tc-5.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2019-03-22 Laurent Zhu + + configure: fix compiler version check and return an error + + - Require Clang's version to be >= 7.0 to support the filesystem library. + - Fix the sed command that gets the compiler's version that was + previously broken + - Use AC_MSG_ERROR instead of AC_MSG_WARN to make the configure script + stop instantly + + * configure.ac: here. + +2019-03-01 Etienne Renault + + Version 1.75 for 2021-tc-4.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2019-02-21 Antoine Suel + + build-assignment: Adding make latexpdf for assignments pdf + + * buildfarm/build-assignment: here. + +2019-02-20 Maxime Joubert + + rewrite_program: ia32: handle simultaneous use and def + + Sometimes, when we need to spill a temporary which is a use and a def of + the same instruction, the rewrite_program failed, because it used a + different temporary to handle the rewrite of the use and the def + temporary. + + This case of a temporary being a use and a def in the same instruction + appears only in an ia32 binop, which is why this commit modify the ia32 + rewrite_program only. + + Add a test which failed with escaping in ia32 with the former + rewrite_program implementation found by a student during the logomatig + rush. There was a segfault with the old rewrite_program line 35: + `table[i] := i + 4 - i / 1`. + + This commit fix the issue #125 + + * src/target/ia32/epilogue.cc, + * src/target/ia32/gas-codegen.cc, + * src/target/ia32/gas-codegen.hh, + * src/target/ia32/prologue.hh: here. + * tests/good/use-an-array.-e.ia32.s, + * tests/good/use-an-array.-e.mips.s, + * tests/good/use-an-array.-e.u.mips.s, + * tests/good/use-an-array.err, + * tests/good/use-an-array.hir, + * tests/good/use-an-array.hpr, + * tests/good/use-an-array.ia32.s, + * tests/good/use-an-array.lir, + * tests/good/use-an-array.lpr, + * tests/good/use-an-array.mips.s, + * tests/good/use-an-array.out, + * tests/good/use-an-array.sta, + * tests/good/use-an-array.tig, + * tests/good/use-an-array.u.mips.s: add. + +2019-02-15 Etienne Renault + + Version 1.74 for 2021-tc-3.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2019-02-09 Etienne Renault + + Version 1.73 for 2021-tc-2.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2019-02-04 Etienne Renault + + buildfarm: do not checkout specific branch + + * build-assignment: Here. + +2019-02-03 Etienne Renault + + update promo number + + * Makefile.am: here. + +2019-02-03 Etienne Renault + + Version 1.71 for 2021-tc-1.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2019-01-28 Laurent Zhu + + parse: replace `%name-prefix` by `%define api.prefix` + + * ../src/parse/parsetiger.yy: here. + +2019-01-28 Erwan Auer + + object: fix dispatched method call and upcasted return type + + When a method was overloaded in a subclass declared in a previous subscope, + it could not be called again, because it called the unreachable dispatch + function. + + When a function had as return type the superclass of a subclass internal to + the function and as body type the subclass, it called the upcast function, + which was not yet reachable. + + * src/object/desugar-visitor.cc, + * src/object/desugar-visitor.hh: here. + + * tests/object-good/function-returning-upcasted-internal-subclass.-e.ia32.s: Add + * tests/object-good/function-returning-upcasted-internal-subclass.-e.mips.s, + * tests/object-good/function-returning-upcasted-internal-subclass.-e.u.mips.s, + * tests/object-good/function-returning-upcasted-internal-subclass.err, + * tests/object-good/function-returning-upcasted-internal-subclass.hir, + * tests/object-good/function-returning-upcasted-internal-subclass.hpr, + * tests/object-good/function-returning-upcasted-internal-subclass.ia32.s, + * tests/object-good/function-returning-upcasted-internal-subclass.lir, + * tests/object-good/function-returning-upcasted-internal-subclass.lpr, + * tests/object-good/function-returning-upcasted-internal-subclass.mips.s, + * tests/object-good/function-returning-upcasted-internal-subclass.out, + * tests/object-good/function-returning-upcasted-internal-subclass.pan, + * tests/object-good/function-returning-upcasted-internal-subclass.sta, + * tests/object-good/function-returning-upcasted-internal-subclass.tig, + * tests/object-good/function-returning-upcasted-internal-subclass.u.mips.s: here. + + * tests/object-good/method-call-after-scope-with-subclass.-e.ia32.s: Add + * tests/object-good/method-call-after-scope-with-subclass.-e.mips.s, + * tests/object-good/method-call-after-scope-with-subclass.-e.u.mips.s, + * tests/object-good/method-call-after-scope-with-subclass.err, + * tests/object-good/method-call-after-scope-with-subclass.hir, + * tests/object-good/method-call-after-scope-with-subclass.hpr, + * tests/object-good/method-call-after-scope-with-subclass.ia32.s, + * tests/object-good/method-call-after-scope-with-subclass.lir, + * tests/object-good/method-call-after-scope-with-subclass.lpr, + * tests/object-good/method-call-after-scope-with-subclass.mips.s, + * tests/object-good/method-call-after-scope-with-subclass.out, + * tests/object-good/method-call-after-scope-with-subclass.pan, + * tests/object-good/method-call-after-scope-with-subclass.sta, + * tests/object-good/method-call-after-scope-with-subclass.tig, + * tests/object-good/method-call-after-scope-with-subclass.u.mips.s: here. + +2019-01-26 Antoine Suel + + llvm: configure.ac updated to follow llvm-7 and clang-7 update tc#138 + + * configure.ac: here. + +2019-01-24 Etienne Renault + + gitlab-ci: setup assignments build on triggers + + * .gitlab-ci.yml, buildfarm/build-assignment: Here. + +2019-01-11 Etienne Renault + + gitlab-ci: update security policies + + * .gitlab-ci.yml: Here. + +2019-01-08 Etienne Renault + + update clang and llvm for gitlab + + * .gitlab-ci.yml: Here. + +2018-12-18 Laurent Zhu + + style: nested namespaces and fix indentation in tasks + + Nested namespaces for ast and task. + Fixed indentation in tasks files. + Also fixed a typo (`parse::tasks` -> `escapes::tasks`) + + * ast/tasks.cc, + * ast/tasks.hh, + * astclone/tasks.cc, + * astclone/tasks.hh, + * bind/tasks.cc, + * bind/tasks.hh, + * callgraph/tasks.cc, + * callgraph/tasks.hh, + * escapes/tasks.hh, + * liveness/tasks.cc, + * llvmtranslate/tasks.cc, + * llvmtranslate/tasks.hh, + * object/tasks.cc, + * object/tasks.hh, + * overload/tasks.cc, + * regalloc/tasks.hh, + * task/tasks.cc, + * task/tasks.hh, + * type/tasks.cc: here. + +2018-11-23 Maxime Joubert + + bind: remove useless def_default method + + The only purpose of this method is to check if the definition site of + the node was not already set before setting it. However, with the + current binder implementation, we never visit a node twice, so this + check is useless. + + * src/bind/binder.cc, + * src/bind/binder.hh, + * src/bind/binder.hxx, + * src/object/binder.cc: here. + +2018-11-19 Nicolas Poitoux + + type: object: add meth_find method + + In order to be more consistent with attr_find. + + * src/type/class.cc, + * src/type/class.hh, + * src/type/class.hxx: here. + +2018-11-15 Nicolas Poitoux + + bootstrap: yaml: replace module imp by importlib + + The python module imp, used to check the presence of the yaml package is + deprecated in favour of importlib. + + * bootstrap: here. + +2018-11-03 Maxime Joubert + + boost: cleanup: remove legacy boost references + + Update comment in misc/variant.hh and remove now unused + boost/filesystem.hpp include. + + * lib/misc/variant.hh, + * src/parse/tiger-parser.hh: here. + +2018-09-27 Nicolas Poitoux + + c++17: fs: replace boost::filesystem by std::filesystem + + Replaces the usage of Boost filesystem library by the standard library + implementation introduced by C++17. + Raises the gcc required version to 8.1. + Even though it is now part of the standard library, it still requires + the addition of the `-lstdc++fs` flag to link properly. + + * configure.ac, + * lib/misc/file-library.cc, + * lib/misc/file-library.hh, + * lib/misc/local.am: Here. + +2018-09-26 Maxime Joubert + + anydecs: dtor: use misc::deep_clear + + * src/ast/any-decs.hxx: here. + +2018-09-26 Maxime Joubert + + ast: RuleDec: remove legacy class + + * src/ast/rule-dec.cc, + * src/ast/rule-dec.hh, + * src/ast/rule-dec.hxx: here. + +2018-09-26 Etienne Renault + + bison: no longer fuse the similar case clauses + + For some reason, the following pattern fools fuse-switch + that stops emitting code after the #define. + + switch (yycount) + { + #define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + default: // Avoid compiler warnings. + YYCASE_ (0, YY_("syntax error")); + YYCASE_ (1, YY_("syntax error, unexpected %s")); + YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); + #undef YYCASE_ + } + + I don't have time to fix this now. + + * build-aux/bin/fuse-switch: Die when you did wrong. + * build-aux/bin/bison++.in: Don't use fuse-switch. + +2018-09-26 Etienne Renault + + parse: regen parser + + * src/parse/location.hh, + * src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, + * src/parse/position.hh: here. + +2018-09-26 Etienne Renault + + parse: %error-verbose is obsolete + + * src/parse/parsetiger.yy: here. + +2018-07-27 Guillaume Marques + + color: use min_element and add heuristic hint for select_spill + + * src/regalloc/color.cc: Here. + +2018-07-27 Guillaume Marques + + vector: reserve size when known beforehand + + * lib/misc/graph.hxx, + * src/llvmtranslate/llvm-type-visitor.cc, + * src/llvmtranslate/translator.cc, + * src/translate/translation.cc, + * src/translate/translator.cc: Here. + +2018-07-27 Guillaume Marques + + style: use unordered_map when sorting is not necessary + + * lib/misc/escape.cc, + * src/ast/ast.yml, + * src/ast/op-exp.cc, + * src/ast/op-exp.hh, + * src/bind/binder.hh, + * src/task/task-register.hh, + * src/translate/translation.cc, + * src/translate/translator.cc, + * src/translate/translator.hh, + * src/tree/binop.cc, + * src/tree/cjump.cc, + * src/tree/cjump.hxx: here. + +2018-07-27 Guillaume Marques + + style: add static const qualifier to immutable maps + + * lib/misc/escape.cc, + * src/ast/ast.yml, + * src/ast/op-exp.cc, + * src/translate/translation.cc, + * src/tree/binop.cc, + * src/tree/cjump.cc, + * src/tree/cjump.hxx: Here. + +2018-07-27 Guillaume Marques + + style: remove useless virtual destructors + + The derived class' destructor is implicitly virtual if the base's + destructor is defined virtual. + + * dev/ast-nodes-gen, + * lib/misc/endomap.hh, + * lib/misc/flex-lexer.hh, + * lib/misc/graph.hh, + * lib/misc/graph.hxx, + * lib/misc/symbol.hh, + * src/ast/break-exp.hh, + * src/ast/dec.hh, + * src/ast/exp.hh, + * src/ast/int-exp.hh, + * src/ast/method-dec.hh, + * src/ast/name-ty.hh, + * src/ast/nil-exp.hh, + * src/ast/object-exp.hh, + * src/ast/simple-var.hh, + * src/ast/string-exp.hh, + * src/ast/ty.hh, + * src/ast/var.hh, + * src/callgraph/fundec-graph.hh, + * src/callgraph/parent-graph-visitor.hh, + * src/callgraph/static-link-visitor.hh, + * src/desugar/bounds-checking-visitor.hh, + * src/desugar/desugar-visitor.hh, + * src/liveness/interference-graph.hh, + * src/llvmtranslate/llvm-type-visitor.hh, + * src/object/desugar-visitor.hh, + * src/parse/tweast.hh, + * src/target/arm/arm-assembly.hh, + * src/target/arm/arm-codegen.hh, + * src/target/arm/prologue.hh, + * src/target/arm/target.hh, + * src/target/ia32/gas-assembly.hh, + * src/target/ia32/gas-codegen.hh, + * src/target/ia32/prologue.hh, + * src/target/mips/cpu.cc, + * src/target/mips/prologue.hh, + * src/target/mips/spim-codegen.hh, + * src/tree/exp.hh, + * src/type/attribute.hh, + * src/type/field.hh, + * src/type/method.hh: Here. + +2018-07-27 Guillaume Marques + + style: class: no virtual with override + + * src/type/class.hh: Here. + +2018-07-27 Guillaume Marques + + style: `*` should be next to the type + + * src/ast/pretty-printer.cc: Here. + +2018-07-27 Guillaume Marques + + style: add ref to const auto + + * src/llvmtranslate/escapes-collector.cc, + * src/llvmtranslate/translator.cc, + * src/type/default-visitor.hxx: Here. + +2018-07-25 Maxime Joubert + + bind: object: self: Handle self corner case + + The case of a variable named `self' declared before a class definition + is not clearly defined in the lrde tiger specifications. However, Andrew + Appel says in its book that `self' is a formal that is implicitly added + in the MethodDec signature, which seems to be the right way to do it. + + However, before this commit, if a variable named `self' was declared + before a class definition, all the occurences of `self' in the + MethodDecs of the following classes definitions were bind to the first + declared variable, which prevent access to the attributes or methods + inside the class due to a type-mismatch error. + + * src/object/binder.cc, + * src/object/binder.hh: here. + + * tests/object-good/self-redefinition-in-method.-e.ia32.s: Add + * tests/object-good/self-redefinition-in-method.-e.mips.s, + * tests/object-good/self-redefinition-in-method.-e.u.mips.s, + * tests/object-good/self-redefinition-in-method.err, + * tests/object-good/self-redefinition-in-method.hir, + * tests/object-good/self-redefinition-in-method.hpr, + * tests/object-good/self-redefinition-in-method.ia32.s, + * tests/object-good/self-redefinition-in-method.lir, + * tests/object-good/self-redefinition-in-method.lpr, + * tests/object-good/self-redefinition-in-method.mips.s, + * tests/object-good/self-redefinition-in-method.out, + * tests/object-good/self-redefinition-in-method.pan, + * tests/object-good/self-redefinition-in-method.sta, + * tests/object-good/self-redefinition-in-method.tig, + * tests/object-good/self-redefinition-in-method.u.mips.s: here. + + * tests/object-good/self-variable-definition-before-class.-e.ia32.s: Add + * tests/object-good/self-variable-definition-before-class.-e.mips.s, + * tests/object-good/self-variable-definition-before-class.-e.u.mips.s, + * tests/object-good/self-variable-definition-before-class.err, + * tests/object-good/self-variable-definition-before-class.hir, + * tests/object-good/self-variable-definition-before-class.hpr, + * tests/object-good/self-variable-definition-before-class.ia32.s, + * tests/object-good/self-variable-definition-before-class.lir, + * tests/object-good/self-variable-definition-before-class.lpr, + * tests/object-good/self-variable-definition-before-class.mips.s, + * tests/object-good/self-variable-definition-before-class.out, + * tests/object-good/self-variable-definition-before-class.pan, + * tests/object-good/self-variable-definition-before-class.sta, + * tests/object-good/self-variable-definition-before-class.tig, + * tests/object-good/self-variable-definition-before-class.u.mips.s: here. + +2018-07-24 Maxime Joubert + + _main: TODO: update TODO.txt + + * TODO.txt: here. + +2018-07-24 Maxime Joubert + + _main: test: remove maintainer mode + + * tests/Makefile.am: here. + * tests/overload-bind-maint/inner-_main-fundec.tig, + * tests/overload-bind-maint/nonexistent-_main.tig, + * tests/overload-type-maint/bad-_main-type.tig: delete. + * tests/tc-check.in: here. + +2018-07-24 Maxime Joubert + + overfun-object: add overfun-object in local.am for students + + Fix stagize to not remove overfun-binder and overfun-type-checker from + object/local.am for the students to avoid some nasty debug for students + who decide to do this bonus, since this is the only place in TC that a + given file is not present by default in the build system. + + I had to hide completly the two classes (but I kept the explanations in + the FIXME comment) for the given code to compile out of the box. + + * dev/stagize, + * src/object/overfun-binder.hh, + * src/object/overfun-type-checker.hh: here. + +2018-07-23 Francis Visoiu Mistrih + + tree: remove unused iterator class + + * src/tree/iterator.hh, + * src/tree/iterator.hxx: Remove. + * src/tree/all.hh, + * src/tree/local.am: Remove references. + +2018-07-20 Maxime Joubert + + llvm: escapes-collector: clarify comment + + Clarify comment and get rid of useless variable. + + * src/llvmtranslate/escapes-collector.cc: here. + +2018-07-20 Maxime Joubert + + color: comment: remove old comment + + This comment was non relevant since an implementation change in + f13cd8f5f658dfd6c400ce2646a9f251e2f8aba1 + + * src/regalloc/color.hh: here. + +2018-07-20 Maxime Joubert + + tc.cc: fix memory leak + + Replace useless exit which does not call destructors for locally scoped + objects with a return to fix memory leaks. + + * src/tc.cc: here. + +2018-07-19 Maxime Joubert + + style: catch: catch exceptions by const reference + + Also remove an old comment about the migration from boost to c++17. + + * lib/misc/test-variant.cc, + * src/object/test-desugar.cc, + * src/parse/scantiger.ll, + * src/parse/test-tweast.cc, + * src/parse/tiger-parser.cc, + * src/parse/tweast.hxx, + * src/stc/stc.cc, + * src/task/int-task.cc, + * src/task/task-register.cc, + * src/tc.cc, + * ti/ti.cc, + * ti/tiopts.cc: here. + +2018-07-19 Maxime Joubert + + style: INT_MAX: use std::numeric_limits::max() + + * src/parse/scantiger.ll, + * src/regalloc/color.cc: here. + +2018-07-19 Maxime Joubert + + style: nil type fix setter name + + * src/type/nil.cc, + * src/type/nil.hh, + * src/type/type-checker.cc: here. + +2018-07-18 Nicolas Poitoux + + configure: remove useless macro invocation + + These boost libraries are no longer used in the project, there is + therfore no reason to keep them in the configure + + * configure.ac: Here. + +2018-07-01 Maxime Joubert + + boost: visitor: remove legacy boost macro + + * dev/ast-visitor-gen, + * src/ast/visitor.hh: here. + +2018-06-25 Etienne Renault + + Version 1.71 for 2020-tc-9.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2018-06-22 Etienne Renault + + dev: fix broken student distribution for TC-9 + + From commit 1c131b7bd `make studir T=9` is broken + since it embeds tests in the directory and does not + prune anything. This is due to the removal of the + useless `transform` directory. + + Thanks to Maxime Joubert for pointing me where the problem + occurs. + + * dev/stagize: here. + +2018-06-21 Etienne Renault + + coverage: silent broken clean-coverage + + * Makefile.am: here. + +2018-06-21 Etienne Renault + + buildfarm: remove useless git fetch + + Since we have a copy of a fresh repository fetching + tags is useless. + + * buildfarm/checkout-ref: here. + +2018-06-21 Maxime Joubert + + Makefile: test: clean EXTRA_DIST + + Remove legacy ls_files and useless dist-hook using DISTDIRS directly in + EXTRA_DIST. + + * tests/Makefile.am: here. + +2018-06-21 Etienne Renault + + Fixes #126 + + Argument list to long is raised on some OS. Remediate + to this by enumerating directories where tests reside + rather than building the list of all tests. + + * tests/Makefile.am: here. + +2018-06-21 Etienne Renault + + tests: remove useless output + + * tests/tc-check.in: here. + +2018-06-21 Etienne Renault + + tests: modernize test + + Some very old shells didn't handle empty strings + properly, so writers of portable scripts adopted this + style of checking: it hasn't been necessary for decades. + + * tests/Makefile.am: here. + +2018-06-21 Etienne Renault + + add support for gitlab-ci + + * .gitlab-ci.yml, + * buildfarm/bootstrap, + * buildfarm/build, + * buildfarm/check, + * buildfarm/checkout-ref, + * buildfarm/common, + * buildfarm/configure, + * buildfarm/coverage, + * buildfarm/distcheck: here. + +2018-05-31 Etienne Renault + + Version 1.70 for 2020-tc-8.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2018-05-20 Etienne Renault + + Version 1.69 for 2020-tc-7.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2018-05-14 Etienne Renault + + Version 1.68 for 2020-tc-6.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2018-05-14 Maxime Joubert + + tc-6: style: fix typo and 80 columns + + * src/canon/canon.cc: here. + +2018-04-29 Maxime Joubert + + style: target: fix indents, comments style and trailing spaces + + * src/target/arm/arm-assembly.cc, + * src/target/ia32/gas-assembly.cc, + * src/target/mips/spim-assembly.cc, + * src/target/tasks.cc: here. + +2018-04-16 Etienne Renault + + Version 1.67 for 2020-tc-5.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2018-04-10 Maxime Joubert + + tc-5: boost: remove legacy boost:variant in comment + + * src/temp/identifier.hh: here. + +2018-03-09 Etienne Renault + + Version 1.66 for 2020-tc-4.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2018-02-15 Maxime Joubert + + object: desugar: remove useless misc::set + + * src/object/desugar-visitor.cc: Here. + + This set was added for the following reason: + + > Since every TypeDec which represent a class is desugared, + > any alias leaded to a function redefinition. Now use a set + > to know if we have to handle the class or if it's already + > been done. + + However, it seems that they were changes in the type checker. Now, + aliases are type::Named, not type::Class, which makes this check + useless. + +2018-02-12 Etienne Renault + + Version 1.65 for 2020-tc-3.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2018-02-01 Etienne Renault + + Version 1.64 for 2020-tc-2.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2018-02-01 Etienne Renault + + Bump version number + + * configure.ac: here. + +2018-01-26 Etienne Renault + + Version 1.63 for 2020-tc-1.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac, + * src/version.cc.in: here. + * Makefile.am: fix update-ChangeLog + +2018-01-26 Etienne Renault + + bindings: do not distribute broken bindings + + * bootstrap, tcsh/Makefile.am: here. + +2018-01-25 Etienne Renault + + update phone number + + * the-tiger.txt: here. + +2018-01-24 Maxime Joubert + + SFINAE: change SFINAE to if constexpr + + * lib/misc/scoped-map.hh, + * lib/misc/scoped-map.hxx: here. + +2018-01-23 Meven Courouble + + rewrite_program: add alternative algorithm + + This algorithm copy all the list to another one, adding store/loads + before of after instructions if necessary, avoiding usage of + position_append_and_move. Usage of this algorithm, of the previous one, + depends on the definion of macro ALTERNATIVE_REWRITE_PROGRAM + + * src/target/arm/arm-codegen.cc, + * src/target/arm/epilogue.cc, + * src/target/ia32/epilogue.cc, + * src/target/ia32/gas-codegen.cc, + * src/target/mips/epilogue.cc, + * src/target/mips/spim-codegen.cc: Here. + +2018-01-23 Loic Reyreaud + + common: task_error: fix indent + + * src/astclone/tasks.cc, + * src/bind/tasks.cc, + * src/object/tasks.cc: Here. + +2018-01-23 Loic Reyreaud + + common: task_error: change task_error to singleton + + Replace task_error global var with a singleton to avoid using it + in static function when not initialized. + + This commit fix #108. + + * src/astclone/tasks.cc, + * src/bind/tasks.cc, + * src/common.cc, + * src/common.hh, + * src/object/tasks.cc, + * src/overload/tasks.cc, + * src/parse/tasks.cc, + * src/stc/stc.cc, + * src/task/task-register.cc, + * src/tc.cc, + * src/type/tasks.cc: Here. + +2018-01-23 Etienne Renault + + configure: remove Makefile generation for broken bindings + + * configure.ac: here. + +2018-01-23 Maxime Joubert + + arm: use arm-linux-gnueabihf rather than arm-linux-gnueabi + + Since we will drop teamcity to use the new docker environment, we can + resolve compatibility problems with some linux distros that does not + have the arm-linux-gnueabi package (eg Archlinux). + + * configure.ac, + * tests/tc-check.in: Here. + +2018-01-23 Maxime Joubert + + Revert "configure.ac: add archlinux arm compiler" + + This reverts commit b702344b28941437f8a9b5d88859d4a625aaded3. + +2018-01-23 Maxime Joubert + + configure.ac: add archlinux arm compiler + + Also add experimental ARMLIB. + + * configure.ac, + * tests/tc-check.in: Here. + +2018-01-23 Etienne Renault + + configure.ac: fix for debian sid. + + * configure.ac, + * tests/tc-check.in: here + +2018-01-03 Nicolas Poitoux + + c++17: structured bindings + + Replaces mostly std::ties with structured bindings. + + * lib/misc/graph.hxx, + * lib/misc/test-graph.cc, + * src/callgraph/libcallgraph.cc, + * src/inlining/inliner.cc, + * src/liveness/flowgraph.hxx, + * src/liveness/interference-graph.cc, + * src/liveness/liveness.cc, + * src/regalloc/color.cc: Here. + +2018-01-03 Nicolas Poitoux + + c++17: std::variant + + Replacement of boost::variant by std::variant. + + * lib/misc/test-variant.cc, + * lib/misc/variant.hh, + * lib/misc/variant.hxx, + * src/desugar/bounds-checking-visitor.cc, + * src/desugar/desugar-visitor.cc, + * src/inlining/inliner.cc, + * src/parse/libparse.cc, + * src/parse/tiger-parser.cc, + * src/target/mips/cpu.cc, + * src/temp/identifier.hh, + * src/temp/identifier.hxx: Here. + + This squashed commit includes work of Loic Banet. + +2018-01-03 Loic Banet + + c++17: apply changes template argument deduction + + Class template argument deduction + + * lib/misc/pair.hh, + * lib/misc/pair.hxx, + * src/ast/pretty-printer.cc, + * src/object/libobject.cc, + * src/overload/binder.cc, + * src/overload/liboverload.cc, + * src/parse/libparse.cc: Here. + +2018-01-03 Loic Banet + + c++17: apply changes if(init; condition) + + * lib/misc/scoped-map.hxx, + * src/callgraph/libcallgraph.cc, + * src/canon/canon.cc, + * src/liveness/interference-graph.cc, + * src/llvmtranslate/escapes-collector.cc, + * src/llvmtranslate/translator.cc, + * src/object/desugar-visitor.cc, + * src/object/type-checker.cc, + * src/overload/type-checker.cc, + * src/type/type-checker.cc: Here. + +2018-01-03 Loic Banet + + configure: change requirements for c++17 + + * configure.ac: Here. + +2017-10-20 Etienne Renault + + target: arm backend was not declared + + Fixes #123 + + * src/target/fwd.hh: here. + +2017-10-19 Etienne Renault + + type: use nested namespaces + + * src/type/tasks.cc, + * src/type/tasks.hh: here. + +2017-10-19 Etienne Renault + + translate: use nested namespaces + + * src/translate/tasks.cc, + * src/translate/tasks.hh: + +2017-10-19 Etienne Renault + + temp: use nested namespaces + + * src/temp/tasks.cc, + * src/temp/tasks.hh: here. + +2017-10-19 Etienne Renault + + target: use nested namespaces + + * src/target/fwd.hh, + * src/target/tasks.cc, + * src/target/tasks.hh: here. + +2017-10-19 Etienne Renault + + regalloc: use nested namespaces + + * src/regalloc/tasks.cc, + * src/regalloc/tasks.hh: here. + +2017-10-19 Etienne Renault + + parse : use nested namespaces + + * src/parse/tasks.cc, + * src/parse/tasks.hh: here. + +2017-10-19 Etienne Renault + + overload: use nested namespaces + + * src/overload/tasks.cc, + * src/overload/tasks.hh: here. + +2017-10-19 Etienne Renault + + object: use nested namespaces + + * src/object/tasks.cc, + * src/object/tasks.hh: here. + +2017-10-19 Etienne Renault + + liveness: use nested namespace + + * src/liveness/libliveness.cc, + * src/liveness/tasks.cc, + * src/liveness/tasks.hh: here + +2017-10-19 Etienne Renault + + inlining: use nested namespaces + + * src/inlining/tasks.cc, + * src/inlining/tasks.hh: here. + +2017-10-19 Etienne Renault + + ecapes: use nested namespaces + + * src/escapes/tasks.cc, + * src/escapes/tasks.hh: here. + +2017-10-19 Etienne Renault + + desugar: use nested namespaces + + * src/desugar/tasks.cc, + * src/desugar/tasks.hh: here. + +2017-10-19 Etienne Renault + + canon: use nested namespaces + + * src/canon/tasks.cc, + * src/canon/tasks.hh: here. + +2017-10-19 Etienne Renault + + callgraph: use nested namespaces + + * src/callgraph/tasks.cc, + * src/callgraph/tasks.hh: here. + +2017-10-19 Etienne Renault + + bind: use nested namespaces + + * src/bind/tasks.cc, src/bind/tasks.hh: here. + +2017-10-18 Etienne Renault + + astclone: use nested namespaces + + * src/astclone/tasks.cc, src/astclone/tasks.hh: here. + +2017-10-18 Etienne Renault + + llvmtranslate: use nested namespaces + + * src/llvmtranslate/tasks.cc + * src/llvmtranslate/tasks.hh: here. + +2017-10-18 Etienne Renault + + ia32: use nested namespaces + + * src/target/ia32/cpu.cc, + * src/target/ia32/cpu.hh, + * src/target/ia32/epilogue.cc, + * src/target/ia32/fwd.hh, + * src/target/ia32/gas-assembly.cc, + * src/target/ia32/gas-assembly.hh, + * src/target/ia32/gas-codegen.cc, + * src/target/ia32/gas-codegen.hh, + * src/target/ia32/gas-layout.cc, + * src/target/ia32/gas-layout.hh, + * src/target/ia32/prologue.hh, + * src/target/ia32/target.cc, + * src/target/ia32/target.hh: here. + +2017-10-18 Etienne Renault + + arm: use nested namespaces + + * src/target/arm/arm-assembly.cc, + * src/target/arm/arm-assembly.hh, + * src/target/arm/arm-codegen.cc, + * src/target/arm/arm-codegen.hh, + * src/target/arm/arm-layout.cc, + * src/target/arm/arm-layout.hh, + * src/target/arm/cpu.cc, + * src/target/arm/cpu.hh, + * src/target/arm/epilogue.cc, + * src/target/arm/fwd.hh, + * src/target/arm/prologue.hh, + * src/target/arm/target.cc, + * src/target/arm/target.hh: here. + +2017-10-18 Etienne Renault + + mips: use nested namespaces + + * src/target/mips/cpu.cc, + * src/target/mips/cpu.hh, + * src/target/mips/epilogue.cc, + * src/target/mips/prologue.hh, + * src/target/mips/spim-assembly.cc, + * src/target/mips/spim-assembly.hh, + * src/target/mips/spim-codegen.cc, + * src/target/mips/spim-codegen.hh, + * src/target/mips/spim-layout.cc, + * src/target/mips/spim-layout.hh, + * src/target/mips/target.cc, + * src/target/mips/target.hh: here + +2017-10-18 Etienne Renault + + mips: use [[fallthrough]] attribute + +2017-10-18 Etienne Renault + + object: add variable initialisation + + * src/object/desugar-visitor.cc: here. + +2017-10-18 Etienne Renault + + misc: use enum class + + * lib/misc/error.cc, + * lib/misc/error.hh, + * lib/misc/test-error.cc, + * src/astclone/tasks.cc, + * src/bind/binder.cc, + * src/bind/binder.hxx, + * src/escapes/escapes-check-visitor.cc, + * src/object/test-desugar.cc, + * src/overload/type-checker.cc, + * src/parse/parsetiger.cc, + * src/parse/parsetiger.yy, + * src/parse/scantiger.ll, + * src/parse/test-tweast.cc, + * src/parse/tiger-parser.cc, + * src/stc/stc.cc, + * src/task/task-register.cc, + * src/tc.cc, + * src/type/type-checker.cc, + * src/type/type-checker.hxx, + * ti/ti.cc: here. + +2017-10-18 Etienne Renault + + Use attribute [[maybe_used]] + + * lib/misc/timer.hxx, src/translate/translation.cc: here. + +2017-10-18 Etienne Renault + + lib: use [[noreturn]] attribute + + * lib/misc/contract.hh, lib/misc/error.hh: here. + +2017-10-09 Maxime Joubert + + _main: bind: Refactor code to fix TC-4 students build + + * src/bind/binder.cc, + * src/bind/binder.hh, + * src/bind/binder.hxx, + * src/overload/binder.cc: Here. + +2017-10-03 Maxime Joubert + + _main: ast: edit ast.yml + + Edit the value of sl_needed and sl_escapes to prevent the search of the + static link when calling _main. + + Fix the extension of a binding test. + + * src/ast/ast.yml: Here. + * tests/bind/nonexistent-_main.err: Rename as ... + * tests/bind/nonexistent-_main.tc-err ... this. + * tests/bind/nonexistent-_main.sta: Rename as ... + * tests/bind/nonexistent-_main.tc-sta ... this. + +2017-10-02 Maxime Joubert + + _main: bind: store _main definition in the binder + + Store the definition of _main inside the binder, and use this to raise + redefinition error rather than get it from the scoped_map (generate a + segfault if the previous definition was in another scope). + + Add tests. + + * src/bind/binder.cc, + * src/bind/binder.hh, + * src/bind/binder.hxx, + * src/overload/binder.cc: Here. + * tests/bind/_main-inner-scope-and-redefinition.tc-err: Add + * tests/bind/_main-inner-scope-and-redefinition.tc-sta, + * tests/bind/_main-inner-scope-and-redefinition.tig, + * tests/bind/_main-redefinition.tc-err, + * tests/overload-bind/_main-inner-scope-and-redefinition.tc-err, + * tests/overload-bind/_main-inner-scope-and-redefinition.tc-sta, + * tests/overload-bind/_main-inner-scope-and-redefinition.tig: Here. + +2017-09-26 Maxime Joubert + + tests: generate good/call-_main.tig tests files + + * bind/inner-_main-fundec.err: Rename as ... + * bind/inner-_main-fundec.tc-err ... this. + * bind/inner-_main-fundec.sta: Rename as ... + * bind/inner-_main-fundec.tc-sta ... this + * good/call-_main.-e.ia32.s: Add + * good/call-_main.-e.mips.s, + * good/call-_main.-e.u.mips.s, + * good/call-_main.hir, + * good/call-_main.hpr, + * good/call-_main.ia32.s, + * good/call-_main.lir, + * good/call-_main.lpr, + * good/call-_main.mips.s, + * good/call-_main.u.mips.s: Here. + +2017-09-24 Maxime Joubert + + _main: handle _main errors + + Raise binding error on: + multiple definitions of _main as mentioned in #121 with overloading. + absence of _main + definition of _main in an inner scoped + Raise a type error if: + _main is declared with formals. + _main does not return a void value. + Fix tests/object-type/int-as-super-class test to add the _main() + function and to not raise a binding error. + Add tests. + + * src/bind/binder.cc, + * src/bind/binder.hh, + * src/bind/binder.hxx, + * src/overload/binder.cc, + * src/type/type-checker.cc: Here. + * tests/bind/_main-redefinition.sta: Rename as ... + * tests/bind/_main-redefinition.tc-sta ... this. + * tests/bind/_main-redefinition.err: Rename as... + * tests/bind/_main-redefinition.tc-err ... this. + * tests/bind/_main-defined-in-inner-scope.tc-err: Add test + * tests/bind/_main-defined-in-inner-scope.tc-sta, + * tests/bind/_main-defined-in-inner-scope.tig, + * tests/bind/inner-_main-fundec.err, + * tests/bind/inner-_main-fundec.sta, + * tests/bind/inner-_main-fundec.tig, + * tests/bind/nonexistent-_main.err, + * tests/bind/nonexistent-_main.sta, + * tests/bind/nonexistent-_main.tig, + * tests/object-type/int-as-super-class.tc-err, + * tests/object-type/int-as-super-class.tig, + * tests/overload-bind/_main-defined-in-inner-scope.tc-err, + * tests/overload-bind/_main-defined-in-inner-scope.tc-sta, + * tests/overload-bind/_main-defined-in-inner-scope.tig, + * tests/overload-bind/inner-_main-fundec.tc-err, + * tests/overload-bind/inner-_main-fundec.tc-sta, + * tests/overload-bind/inner-_main-fundec.tig, + * tests/overload-bind/nonexistent-_main.tc-err, + * tests/overload-bind/nonexistent-_main.tc-sta, + * tests/overload-bind/nonexistent-_main.tig, + * tests/overload-type/bad-_main-return-type.tc-err, + * tests/overload-type/bad-_main-return-type.tc-sta, + * tests/overload-type/bad-_main-return-type.tig, + * tests/overload-type/bad-_main-type-arguments.tc-err, + * tests/overload-type/bad-_main-type-arguments.tc-sta, + * tests/overload-type/bad-_main-type-arguments.tig, + * tests/type/bad-_main-return-type.tc-err, + * tests/type/bad-_main-return-type.tc-sta, + * tests/type/bad-_main-return-type.tig, + * tests/type/bad-_main-type-arguments.tc-err, + * tests/type/bad-_main-type-arguments.tc-sta, + * tests/type/bad-_main-type-arguments.tig: Here. + * tests/tc-check.in: Add category test. + +2017-09-21 Maxime Joubert + + _main: handle multiple definitions + + Raise binding error on multiple definitions of _main as mentioned in #121. + + * src/bind/binder.hxx, + * tests/bind/_main-redefinition.err, + * tests/bind/_main-redefinition.sta, + * tests/bind/_main-redefinition.tig: Here. + +2017-09-21 Maxime Joubert + + _main: fix segfault when calling _main() + + This commit fix the segfault mentioned in #121. + + * src/ast/function-dec.hh, + * src/llvmtranslate/translator.cc, + * tests/good/call-_main.err, + * tests/good/call-_main.in, + * tests/good/call-_main.out, + * tests/good/call-_main.sta, + * tests/good/call-_main.tig: Here. + +2017-07-30 Guillaume Marques + + regalloc: swap callee-save and caller-save order + + This commit resolves #113. + + * src/regalloc/color.cc, + * src/regalloc/color.hh: Here. + +2017-07-25 Guillaume Marques + + tests: type: add untested case + + * tests/type/invalid-field-init.tc-err, + * tests/type/invalid-field-init.tc-sta, + * tests/type/invalid-field-init.tig: Here. + +2017-07-25 Guillaume Marques + + tests: object: add untested case + + * tests/object-good/redefining-class.-e.ia32.s, + * tests/object-good/redefining-class.-e.mips.s, + * tests/object-good/redefining-class.-e.u.mips.s, + * tests/object-good/redefining-class.err, + * tests/object-good/redefining-class.hir, + * tests/object-good/redefining-class.hpr, + * tests/object-good/redefining-class.ia32.s, + * tests/object-good/redefining-class.lir, + * tests/object-good/redefining-class.mips.s, + * tests/object-good/redefining-class.out, + * tests/object-good/redefining-class.sta, + * tests/object-good/redefining-class.tig, + * tests/object-good/redefining-class.u.mips.s: Here. + +2017-07-25 Guillaume Marques + + authors: add 2018 maintainers + + * AUTHORS.txt: Here. + +2017-07-25 Guillaume Marques + + style: avoid using `std::endl' when not useful + + * lib/misc/contract.cc, + * lib/misc/test-error.cc, + * lib/misc/test-graph.cc, + * lib/misc/test-unique.cc, + * lib/misc/test-xalloc.cc, + * lib/misc/timer.cc, + * src/assem/fragment.cc, + * src/assem/fragments.cc, + * src/assem/instrs.cc, + * src/assem/layout.cc, + * src/ast/test-ast.cc, + * src/astclone/test-cloner.cc, + * src/bind/binder.hxx, + * src/bind/test-bind.cc, + * src/canon/traces.cc, + * src/desugar/test-bounds-checking.cc, + * src/desugar/test-for-loops-desugar.cc, + * src/desugar/test-string-cmp-desugar.cc, + * src/liveness/liveness.cc, + * src/object/test-bind.cc, + * src/object/test-desugar.cc, + * src/object/test-parse.cc, + * src/object/test-type.cc, + * src/overload/type-checker.cc, + * src/parse/location.hh, + * src/parse/parsetiger.cc, + * src/parse/position.hh, + * src/parse/scantiger.ll, + * src/parse/tasks.cc, + * src/parse/test-parse.cc, + * src/parse/test-tweast.cc, + * src/parse/tiger-parser.cc, + * src/regalloc/color.cc, + * src/regalloc/regallocator.cc, + * src/regalloc/test-regalloc.cc, + * src/stc/stc.cc, + * src/target/arm/test-target.cc, + * src/target/cpu.cc, + * src/target/ia32/test-target.cc, + * src/target/libtarget.cc, + * src/target/mips/test-target.cc, + * src/task/int-task.cc, + * src/task/task-register.cc, + * src/task/task.cc, + * src/tc.cc, + * src/temp/tasks.cc, + * src/temp/test-temp.cc, + * src/translate/exp.cc, + * src/tree/fragment.cc, + * src/type/test-type.cc, + * ti/ti.cc, + * ti/tiopts.cc: Here. + +2017-07-19 Etienne Renault + + regen parser + + * src/parse/parsetiger.cc: here. + +2017-07-19 Guillaume Marques + + target: ia32: add edx/eax to `idivl' uses + + edx/eax are 64-bit sign extension for idivl operation in ia32. Not + having them as uses would cause, in very specific cases, to have invalid + assembly code generation. + + * src/target/ia32/gas-assembly.cc: Here. + +2017-07-19 Guillaume Marques + + target: fix typo on `cmp` instruction + + * src/target/arm/arm-assembly.cc, + * src/target/ia32/gas-assembly.cc: Here. + +2017-07-19 Guillaume Marques + + metavar: remove `MetavarExp` and `Metavariable` AST nodes + + This commit closes #115. + + * src/ast/metavar-exp.cc, + * src/ast/metavar-exp.hh, + * src/ast/metavar-exp.hxx, + * src/ast/metavariable.cc, + * src/ast/metavariable.hh, + * src/ast/metavariable.hxx: Here. + +2017-07-19 Guillaume Marques + + transform: remove last references to the `transform` module + + * .gitignore, + * src/ast/ast.yml: Here. + +2017-07-19 Guillaume Marques + + parse: parsetiger: fix indentations + + * src/parse/parsetiger.yy: Here. + +2017-07-19 Guillaume Marques + + style: interference: fix object private attribute suffix + + * src/liveness/interference-graph.cc, + * src/liveness/interference-graph.hh: Here. + +2017-07-19 Etienne Renault + + target: rework rewrite_programs + + * src/target/arm/arm-codegen.cc, + * src/target/arm/epilogue.cc, + * src/target/ia32/epilogue.cc, + * src/target/ia32/gas-codegen.cc, + * src/target/mips/epilogue.cc, + * src/target/mips/spim-codegen.cc: Here. + +2017-07-19 Guillaume Marques + + style: color: fix indentations + + * src/regalloc/color.cc: Here. + +2017-07-19 Guillaume Marques + + tests: add untested case + + Add test where the stack would overflow in case it is badly handled in + the `call.brg`. + + * tests/good/no-stack-overflow.-e.ia32.s, + * tests/good/no-stack-overflow.-e.mips.s, + * tests/good/no-stack-overflow.-e.u.mips.s, + * tests/good/no-stack-overflow.err, + * tests/good/no-stack-overflow.hir, + * tests/good/no-stack-overflow.hpr, + * tests/good/no-stack-overflow.ia32.s, + * tests/good/no-stack-overflow.lir, + * tests/good/no-stack-overflow.lpr, + * tests/good/no-stack-overflow.mips.s, + * tests/good/no-stack-overflow.out, + * tests/good/no-stack-overflow.sta, + * tests/good/no-stack-overflow.tig, + * tests/good/no-stack-overflow.u.mips.s: Here. + +2017-07-19 Guillaume Marques + + doc: liveness: add missing namespace indicator + + * src/liveness/libliveness.cc: Here. + +2017-07-19 Guillaume Marques + + liveness: remove useless alias + + * src/liveness/interference-graph.hh: Here. + +2017-07-19 Guillaume Marques + + style: liveness: fix indentation + + * src/liveness/interference-graph.cc: Here. + +2017-07-19 Guillaume Marques + + target: regen + + * src/target/arm/arm-codegen.cc, + * src/target/arm/arm-codegen.hh, + * src/target/ia32/gas-codegen.cc, + * src/target/ia32/gas-codegen.hh, + * src/target/mips/spim-codegen.cc, + * src/target/mips/spim-codegen.hh: Here. + +2017-07-19 Guillaume Marques + + assem: comment: remove useless `this' + + * src/assem/comment.hxx: Here. + +2017-07-19 Guillaume Marques + + assem: move: fix typo + + * src/assem/move.hh: Here. + +2017-07-19 Guillaume Marques + + style: assem: fix indentation + + * src/assem/fragment.hh, + * src/assem/fragment.hxx, + * src/assem/fragments.cc, + * src/assem/instr.hh, + * src/assem/instr.hxx, + * src/assem/label.hh, + * src/assem/label.hxx, + * src/assem/visitor.hxx: Here. + +2017-07-19 Guillaume Marques + + libassem: remove useless namespace + + * src/assem/libassem.hh: Here. + +2017-07-19 Guillaume Marques + + style: add missing namespace and fix file header + + * src/assem/fwd.hh: namespace. + + * src/assem/oper.hxx: header. + +2017-07-19 Guillaume Marques + + callgraph: fix indentations + + * src/callgraph/call-graph-visitor.cc, + * src/callgraph/fundec-graph.hh, + * src/callgraph/fundec-graph.hxx, + * src/callgraph/libcallgraph.cc: Here. + +2017-07-19 Guillaume Marques + + style: replace switch with map + + * lib/misc/escape.cc, + * src/ast/ast.yml, + * src/ast/op-exp.cc, + * src/ast/op-exp.hh, + * src/tree/binop.cc, + * src/tree/cjump.cc, + * src/tree/cjump.hxx: Here. + +2017-07-19 Guillaume Marques + + style: sort includes + + * dev/ast-cloner-gen: Here. + + * lib/misc/contract.cc, + * lib/misc/deref.hh, + * lib/misc/deref.hxx, + * lib/misc/endomap.hh, + * lib/misc/error.cc, + * lib/misc/escape.cc, + * lib/misc/escape.hxx, + * lib/misc/file-library.cc, + * lib/misc/file-library.hh, + * lib/misc/file-library.hxx, + * lib/misc/fwd.hh, + * lib/misc/graph.hh, + * lib/misc/graph.hxx, + * lib/misc/indent.cc, + * lib/misc/indent.hh, + * lib/misc/libmisc.hh, + * lib/misc/map.hh, + * lib/misc/map.hxx, + * lib/misc/pair.hxx, + * lib/misc/ref.hh, + * lib/misc/ref.hxx, + * lib/misc/scoped-map.hh, + * lib/misc/scoped-map.hxx, + * lib/misc/separator.hxx, + * lib/misc/set.hh, + * lib/misc/set.hxx, + * lib/misc/symbol.cc, + * lib/misc/symbol.hh, + * lib/misc/symbol.hxx, + * lib/misc/test-deref.cc, + * lib/misc/test-error.cc, + * lib/misc/test-escape.cc, + * lib/misc/test-indent.cc, + * lib/misc/test-scoped.cc, + * lib/misc/test-separator.cc, + * lib/misc/test-symbol.cc, + * lib/misc/test-timer.cc, + * lib/misc/test-variant.cc, + * lib/misc/test-xalloc.cc, + * lib/misc/timer.cc, + * lib/misc/timer.hh, + * lib/misc/timer.hxx, + * lib/misc/unique.hh, + * lib/misc/unique.hxx, + * lib/misc/variant.hh, + * lib/misc/variant.hxx, + * lib/misc/vector.hh, + * lib/misc/vector.hxx, + * lib/misc/xalloc.hh: Here. + + * src/assem/comment.hxx, + * src/assem/fragment.cc, + * src/assem/fragment.hh, + * src/assem/fragment.hxx, + * src/assem/fragments.cc, + * src/assem/fragments.hh, + * src/assem/fwd.hh, + * src/assem/instr.cc, + * src/assem/instrs.cc, + * src/assem/layout.cc, + * src/assem/layout.hh, + * src/assem/libassem.hh, + * src/assem/move.hh, + * src/assem/move.hxx, + * src/assem/oper.hxx, + * src/assem/visitor.hh, + * src/assem/visitor.hxx, + * src/astclone/cloner.cc, + * src/astclone/cloner.hxx, + * src/astclone/libastclone.hh, + * src/astclone/libastclone.hxx, + * src/astclone/tasks.cc, + * src/astclone/tasks.hh, + * src/astclone/test-cloner.cc, + * src/bind/binder.cc, + * src/bind/binder.hh, + * src/bind/libbind.cc, + * src/bind/libbind.hh, + * src/bind/renamer.cc, + * src/bind/renamer.hh, + * src/bind/renamer.hxx, + * src/bind/tasks.cc, + * src/bind/tasks.hh, + * src/bind/test-bind.cc, + * src/callgraph/call-graph-visitor.cc, + * src/callgraph/fundec-graph.hh, + * src/callgraph/libcallgraph.cc, + * src/callgraph/libcallgraph.hh, + * src/callgraph/parent-graph-visitor.cc, + * src/callgraph/static-link-visitor.cc, + * src/callgraph/tasks.cc, + * src/callgraph/tasks.hh, + * src/canon/basic-block.cc, + * src/canon/basic-block.hh, + * src/canon/canon.cc, + * src/canon/canon.hh, + * src/canon/libcanon.cc, + * src/canon/tasks.cc, + * src/canon/tasks.hh, + * src/common.hh, + * src/desugar/bounds-checking-visitor.cc, + * src/desugar/bounds-checking-visitor.hh, + * src/desugar/desugar-visitor.cc, + * src/desugar/desugar-visitor.hh, + * src/desugar/libdesugar.cc, + * src/desugar/tasks.cc, + * src/desugar/tasks.hh, + * src/desugar/test-bounds-checking.cc, + * src/desugar/test-for-loops-desugar.cc, + * src/desugar/test-string-cmp-desugar.cc, + * src/escapes/escapes-check-visitor.cc, + * src/escapes/escapes-check-visitor.hh, + * src/escapes/escapes-visitor.cc, + * src/escapes/escapes-visitor.hh, + * src/escapes/libescapes.cc, + * src/escapes/libescapes.hh, + * src/escapes/tasks.cc, + * src/frame/access.cc, + * src/frame/access.hh, + * src/frame/frame.cc, + * src/frame/frame.hh, + * src/frame/libframe.hh, + * src/inlining/inliner.cc, + * src/inlining/inliner.hh, + * src/inlining/libinlining.cc, + * src/inlining/pruner.cc, + * src/inlining/pruner.hh, + * src/inlining/tasks.cc, + * src/inlining/tasks.hh, + * src/liveness/flowgraph.hxx, + * src/liveness/interference-graph.cc, + * src/liveness/interference-graph.hh, + * src/liveness/libliveness.cc, + * src/liveness/libliveness.hh, + * src/liveness/liveness.cc, + * src/liveness/liveness.hh, + * src/liveness/tasks.cc, + * src/liveness/tasks.hh, + * src/llvmtranslate/fwd.hh, + * src/llvmtranslate/libllvmtranslate.cc, + * src/llvmtranslate/libllvmtranslate.hh, + * src/llvmtranslate/llvm-type-visitor.cc, + * src/llvmtranslate/llvm-type-visitor.hh, + * src/llvmtranslate/tasks.cc, + * src/llvmtranslate/tasks.hh, + * src/llvmtranslate/translator.cc, + * src/llvmtranslate/translator.hh, + * src/object/binder.hh, + * src/object/desugar-visitor.cc, + * src/object/desugar-visitor.hh, + * src/object/libobject.cc, + * src/object/libobject.hh, + * src/object/overfun-binder.hh, + * src/object/overfun-type-checker.hh, + * src/object/renamer.cc, + * src/object/renamer.hh, + * src/object/tasks.cc, + * src/object/tasks.hh, + * src/object/test-bind.cc, + * src/object/test-desugar.cc, + * src/object/test-parse.cc, + * src/object/test-type.cc, + * src/object/type-checker.cc, + * src/object/type-checker.hh, + * src/overload/binder.hh, + * src/overload/liboverload.cc, + * src/overload/liboverload.hh, + * src/overload/over-table.hxx, + * src/overload/tasks.cc, + * src/overload/tasks.hh, + * src/overload/type-checker.cc, + * src/overload/type-checker.hh, + * src/parse/fwd.hh, + * src/parse/libparse.cc, + * src/parse/libparse.hh, + * src/parse/metavar-map.hh, + * src/parse/metavar-map.hxx, + * src/parse/scantiger.ll, + * src/parse/tasks.cc, + * src/parse/tasks.hh, + * src/parse/test-parse.cc, + * src/parse/test-tweast.cc, + * src/parse/tiger-parser.cc, + * src/parse/tiger-parser.hh, + * src/parse/tweast.cc, + * src/parse/tweast.hh, + * src/parse/tweast.hxx, + * src/regalloc/color.cc, + * src/regalloc/color.hh, + * src/regalloc/libregalloc.cc, + * src/regalloc/libregalloc.hh, + * src/regalloc/regallocator.cc, + * src/regalloc/regallocator.hh, + * src/regalloc/tasks.cc, + * src/regalloc/tasks.hh, + * src/regalloc/test-regalloc.cc, + * src/target/arm/arm-assembly.cc, + * src/target/arm/arm-codegen.cc, + * src/target/arm/arm-codegen.hh, + * src/target/arm/arm-layout.cc, + * src/target/arm/arm-layout.hh, + * src/target/arm/cpu.cc, + * src/target/arm/cpu.hh, + * src/target/arm/epilogue.cc, + * src/target/arm/prologue.hh, + * src/target/arm/target.cc, + * src/target/arm/target.hh, + * src/target/arm/test-target.cc, + * src/target/assembly.cc, + * src/target/assembly.hh, + * src/target/codegen.cc, + * src/target/cpu.cc, + * src/target/fwd.hh, + * src/target/ia32/cpu.cc, + * src/target/ia32/cpu.hh, + * src/target/ia32/epilogue.cc, + * src/target/ia32/gas-assembly.cc, + * src/target/ia32/gas-codegen.cc, + * src/target/ia32/gas-codegen.hh, + * src/target/ia32/gas-layout.cc, + * src/target/ia32/gas-layout.hh, + * src/target/ia32/prologue.hh, + * src/target/ia32/target.cc, + * src/target/ia32/target.hh, + * src/target/ia32/test-target.cc, + * src/target/libtarget.cc, + * src/target/libtarget.hh, + * src/target/mips/cpu.cc, + * src/target/mips/cpu.hh, + * src/target/mips/epilogue.cc, + * src/target/mips/prologue.hh, + * src/target/mips/spim-assembly.cc, + * src/target/mips/spim-codegen.cc, + * src/target/mips/spim-codegen.hh, + * src/target/mips/spim-layout.cc, + * src/target/mips/spim-layout.hh, + * src/target/mips/target.cc, + * src/target/mips/target.hh, + * src/target/mips/test-target.cc, + * src/target/target.cc, + * src/target/target.hh, + * src/target/tasks.cc, + * src/target/tasks.hh, + * src/task/argument-task.cc, + * src/task/argument-task.hh, + * src/task/disjunctive-task.cc, + * src/task/libtask.hh, + * src/task/multiple-string-task.hh, + * src/task/simple-task.cc, + * src/task/simple-task.hh, + * src/task/string-task.cc, + * src/task/task-register.cc, + * src/task/task-register.hh, + * src/task/task.cc, + * src/task/task.hh, + * src/task/tasks.cc, + * src/task/tasks.hh, + * src/tc.cc, + * src/temp/fwd.hh, + * src/temp/identifier.hxx, + * src/temp/label.hh, + * src/temp/libtemp.hh, + * src/temp/tasks.cc, + * src/temp/tasks.hh, + * src/temp/temp-set.cc, + * src/temp/temp-set.hh, + * src/temp/temp.cc, + * src/temp/temp.hh, + * src/temp/test-temp.cc, + * src/translate/access.cc, + * src/translate/access.hxx, + * src/translate/exp.cc, + * src/translate/exp.hh, + * src/translate/exp.hxx, + * src/translate/fwd.hh, + * src/translate/level.cc, + * src/translate/level.hh, + * src/translate/libtranslate.cc, + * src/translate/libtranslate.hh, + * src/translate/tasks.cc, + * src/translate/tasks.hh, + * src/translate/translation.cc, + * src/translate/translation.hh, + * src/translate/translator.cc, + * src/translate/translator.hh, + * src/tree/all.hh, + * src/tree/binop.cc, + * src/tree/binop.hh, + * src/tree/binop.hxx, + * src/tree/call.hh, + * src/tree/cjump.cc, + * src/tree/cjump.hh, + * src/tree/cjump.hxx, + * src/tree/const.hh, + * src/tree/eseq.cc, + * src/tree/eseq.hh, + * src/tree/fragment.cc, + * src/tree/fragment.hh, + * src/tree/fragment.hxx, + * src/tree/fragments.hh, + * src/tree/fwd.hh, + * src/tree/iterator.hxx, + * src/tree/jump.cc, + * src/tree/jump.hh, + * src/tree/jump.hxx, + * src/tree/label.cc, + * src/tree/label.hh, + * src/tree/libtree.cc, + * src/tree/libtree.hh, + * src/tree/mem.hh, + * src/tree/move.hh, + * src/tree/name.hh, + * src/tree/seq.hh, + * src/tree/sxp.hh, + * src/tree/temp.cc, + * src/tree/temp.hh, + * src/tree/tree.cc, + * src/tree/tree.hh, + * src/tree/trees.hh, + * src/type/array.hh, + * src/type/array.hxx, + * src/type/attribute.hh, + * src/type/builtin-types.cc, + * src/type/builtin-types.hh, + * src/type/class.cc, + * src/type/class.hh, + * src/type/class.hxx, + * src/type/default-visitor.hxx, + * src/type/field.cc, + * src/type/field.hh, + * src/type/field.hxx, + * src/type/function.hh, + * src/type/function.hxx, + * src/type/libtype.hh, + * src/type/method.cc, + * src/type/method.hh, + * src/type/named.cc, + * src/type/named.hh, + * src/type/named.hxx, + * src/type/nil.cc, + * src/type/nil.hh, + * src/type/pretty-printer.cc, + * src/type/pretty-printer.hh, + * src/type/record.cc, + * src/type/record.hh, + * src/type/record.hxx, + * src/type/tasks.cc, + * src/type/tasks.hh, + * src/type/test-type.cc, + * src/type/type-checker.cc, + * src/type/type-checker.hh, + * src/type/type-checker.hxx, + * src/type/type.cc, + * src/type/type.hh, + * src/type/type.hxx, + * src/type/types.hh, + * src/type/visitor.hh, + * src/type/visitor.hxx: Here. + +2017-07-19 Guillaume Marques + + misc: xalloc: extend wrapper to any CopyConstructible type + + This patch was provided by a student: nicolas.douma. + + * lib/misc/xalloc.hh, + * lib/misc/xalloc.hxx: Here. + +2017-07-19 Guillaume Marques + + doc: suppress remaining warnings + + * src/temp/label.hh, + * src/temp/temp.hh: Here. + +2017-07-19 Guillaume Marques + + doc: update doxygen to version 1.8.11 + + * doc/Doxyfile.in: Here. + +2017-07-19 Guillaume Marques + + doc: increase `DOT_GRAPH_MAX_NODES` for contract.hh + + * doc/Doxyfile.in: Here. + +2017-07-19 Guillaume Marques + + style: temp: fix spaces on preprocessor + + * src/temp/label.hh: Here. + +2017-07-19 Guillaume Marques + + doc: add `arm/prologue.hh` as excluded file in doxygen + + * doc/Doxyfile.in: Here. + +2017-07-19 Guillaume Marques + + transform: remove module + + * dev/ast-gen.mk, + * dev/local.am, + * dev/stagize, + * dev/studentize_tc.conf, + * src/ast/README-student.txt, + * src/ast/README.txt, + * src/ast/all.hh, + * src/ast/ast-nodes.mk, + * src/ast/ast.gv, + * src/ast/ast.yml, + * src/ast/default-visitor.hh, + * src/ast/default-visitor.hxx, + * src/ast/dumper.cc, + * src/ast/dumper.hh, + * src/ast/fwd.hh, + * src/ast/pretty-printer.cc, + * src/ast/pretty-printer.hh, + * src/ast/visitor.hh, + * src/astclone/cloner.cc, + * src/astclone/cloner.hh, + * src/local.am, + * src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, + * src/parse/parsetiger.yy, + * src/parse/scantiger.ll: Remove transform references. + + * dev/transform-all-gen, + * dev/transform-matcher-gen, + * dev/transform-proxy-visitors-gen, + * src/transform/README.txt, + * src/transform/all.cc, + * src/transform/all.hh, + * src/transform/all.hxx, + * src/transform/bottom-up-rewriter.cc, + * src/transform/bottom-up-rewriter.hh, + * src/transform/bottom-up.cc, + * src/transform/bottom-up.hh, + * src/transform/concrete-syntax-rewriter.cc, + * src/transform/concrete-syntax-rewriter.hh, + * src/transform/find-exact.hh, + * src/transform/generic-rewriter.hh, + * src/transform/generic-rewriter.hxx, + * src/transform/generic-traversal.hh, + * src/transform/generic-traversal.hxx, + * src/transform/local.am, + * src/transform/macros.hh, + * src/transform/matcher.cc, + * src/transform/matcher.hh, + * src/transform/metavar-pool.cc, + * src/transform/metavar-pool.hh, + * src/transform/metavar-pool.hxx, + * src/transform/proxy-visitors.hh, + * src/transform/proxy-visitors.hxx, + * src/transform/rewriter.cc, + * src/transform/rewriter.hh, + * src/transform/sequence.hh, + * src/transform/sequence.hxx, + * src/transform/test-combinators.cc, + * src/transform/test-concrete.cc, + * src/transform/test-transform-tests.cc, + * src/transform/test-transform-tests.hh, + * src/transform/test-transform.cc, + * src/transform/test-voyager.cc, + * src/transform/visitor.hh, + * src/transform/visitor.hxx: Delete. + +2017-07-19 Guillaume Marques + + doc: fix few doxygen warnings + + * doc/Doxyfile.in, + * lib/misc/set.hh, + * lib/misc/symbol.cc, + * lib/misc/unique.hh, + * lib/misc/vector.hh, + * src/llvmtranslate/llvm-type-visitor.cc, + * src/llvmtranslate/llvm-type-visitor.hh, + * src/overload/liboverload.hh, + * src/parse/libparse.hh, + * src/target/arm/arm-layout.hh, + * src/target/ia32/gas-codegen.hh, + * src/target/mips/spim-codegen.hh, + * src/task/argument-task.cc, + * src/task/argument-task.hh, + * src/task/task-register.hh, + * src/task/task.hh, + * src/temp/identifier.hh, + * src/temp/label.hh, + * src/translate/exp.hh, + * src/translate/fwd.hh, + * src/translate/tasks.cc, + * src/translate/tasks.hh, + * src/translate/translation.hh, + * src/translate/translator.cc, + * src/translate/translator.hh, + * src/type/type-checker.hh: Here. + +2017-07-19 Guillaume Marques + + gitignore: add new rules + + * .gitignore: Here. + +2017-07-19 Guillaume Marques + + tests: good: add untested case + + * tests/good/assign-branching-record.-e.ia32.s, + * tests/good/assign-branching-record.-e.mips.s, + * tests/good/assign-branching-record.-e.u.mips.s, + * tests/good/assign-branching-record.err, + * tests/good/assign-branching-record.hir, + * tests/good/assign-branching-record.hpr, + * tests/good/assign-branching-record.ia32.s, + * tests/good/assign-branching-record.lir, + * tests/good/assign-branching-record.mips.s, + * tests/good/assign-branching-record.out, + * tests/good/assign-branching-record.sta, + * tests/good/assign-branching-record.tig, + * tests/good/assign-branching-record.u.mips.s: Here. + +2017-07-19 Guillaume Marques + + tree: README: update prototypes + + * src/tree/README.txt: Here. + +2017-07-19 Guillaume Marques + + tests: good: add untested case + + * tests/good/while-while-break.-e.ia32.s, + * tests/good/while-while-break.-e.mips.s, + * tests/good/while-while-break.-e.u.mips.s, + * tests/good/while-while-break.err, + * tests/good/while-while-break.hir, + * tests/good/while-while-break.hpr, + * tests/good/while-while-break.ia32.s, + * tests/good/while-while-break.lir, + * tests/good/while-while-break.mips.s, + * tests/good/while-while-break.out, + * tests/good/while-while-break.sta, + * tests/good/while-while-break.tig, + * tests/good/while-while-break.u.mips.s: Here. + +2017-07-19 Guillaume Marques + + style: use `= default` for constructors + + * lib/misc/endomap.hh, + * lib/misc/endomap.hxx: Here. + +2017-07-19 Guillaume Marques + + style: ref: remove useless destructor + + * lib/misc/ref.hh: Here. + +2017-07-19 Guillaume Marques + + style: fix spaces + + * data/prelude.tih, + * src/assem/fragment.hh, + * src/assem/instrs.cc, + * src/assem/instrs.hh, + * src/canon/traces.cc, + * src/frame/frame.cc, + * src/parse/tweast.hh: Here. + +2017-07-19 Guillaume Marques + + style: fix preprocessor directives spaces + + * src/translate/exp.hh, + * src/type/fwd.hh: Here. + +2017-07-19 Guillaume Marques + + object: rename: override typedec instead of typedecs + + * src/object/renamer.cc, + * src/object/renamer.hh: Here. + +2017-07-19 Guillaume Marques + + object: RecordExp added in desugar + + * src/object/desugar-visitor.cc, + * src/object/desugar-visitor.hh: Here. + + * tests/object-good/record-object-upcast.-e.ia32.s, + * tests/object-good/record-object-upcast.-e.mips.s, + * tests/object-good/record-object-upcast.-e.u.mips.s, + * tests/object-good/record-object-upcast.err, + * tests/object-good/record-object-upcast.hir, + * tests/object-good/record-object-upcast.hpr, + * tests/object-good/record-object-upcast.ia32.s, + * tests/object-good/record-object-upcast.lir, + * tests/object-good/record-object-upcast.mips.s, + * tests/object-good/record-object-upcast.out, + * tests/object-good/record-object-upcast.sta, + * tests/object-good/record-object-upcast.tig, + * tests/object-good/record-object-upcast.u.mips.s: Here. + +2017-07-19 Guillaume Marques + + tests: object-bind: fix error output of a test + + * tests/object-bind/self-within-function-within-method.tc-err: Here. + +2017-07-19 Guillaume Marques + + type: die if not implemented + + Students would get near 80% at this stage even if they hadn't + implemented it because they were always returning 0. Adding this has for + purpose to prevent it. + + * src/type/type.hxx: Here. + +2017-07-19 Guillaume Marques + + tests: object: add untested case + + * tests/object-type/invalid-return-type-on-self-redefinition.tc-err, + * tests/object-type/invalid-return-type-on-self-redefinition.tc-sta, + * tests/object-type/invalid-return-type-on-self-redefinition.tig: Here. + +2017-07-19 Moray Baruh + + ast: delete copy constructors and copy assignment operators + + The AST nodes owns pointers to its children and implement the + destructor. However, the copy constructors and copy assignment operators + are not implemented, which might cause invalid read/write issues when + used and does not respect the rule of three. This patch adds copy constructors + and copy assignment operators to AST nodes as delete to prevent using + them. + + * dev/ast-nodes-gen: Here. + * src/ast/array-exp.hh, + * src/ast/array-ty.hh, + * src/ast/assign-exp.hh, + * src/ast/ast.hh, + * src/ast/break-exp.hh, + * src/ast/call-exp.hh, + * src/ast/cast-exp.hh, + * src/ast/cast-var.hh, + * src/ast/class-ty.hh, + * src/ast/dec.hh, + * src/ast/decs-list.hh, + * src/ast/escapable.hh, + * src/ast/exp.hh, + * src/ast/field-init.hh, + * src/ast/field-var.hh, + * src/ast/field.hh, + * src/ast/for-exp.hh, + * src/ast/function-dec.hh, + * src/ast/if-exp.hh, + * src/ast/int-exp.hh, + * src/ast/let-exp.hh, + * src/ast/metavar-exp.hh, + * src/ast/metavariable.hh, + * src/ast/method-call-exp.hh, + * src/ast/method-dec.hh, + * src/ast/name-ty.hh, + * src/ast/nil-exp.hh, + * src/ast/object-exp.hh, + * src/ast/op-exp.hh, + * src/ast/record-exp.hh, + * src/ast/record-ty.hh, + * src/ast/rule-dec.hh, + * src/ast/seq-exp.hh, + * src/ast/simple-var.hh, + * src/ast/string-exp.hh, + * src/ast/subscript-var.hh, + * src/ast/ty.hh, + * src/ast/typable.hh, + * src/ast/type-constructor.hh, + * src/ast/type-dec.hh, + * src/ast/var-dec.hh, + * src/ast/var.hh, + * src/ast/while-exp.hh: Update AST nodes + +2017-07-19 Guillaume Marques + + object: ArrayExp added in desugar + + * src/object/desugar-visitor.cc, + * src/object/desugar-visitor.hh: Here. + + * tests/object-good/array-object-upcast.-e.ia32.s, + * tests/object-good/array-object-upcast.-e.mips.s, + * tests/object-good/array-object-upcast.-e.u.mips.s, + * tests/object-good/array-object-upcast.err, + * tests/object-good/array-object-upcast.hir, + * tests/object-good/array-object-upcast.hpr, + * tests/object-good/array-object-upcast.ia32.s, + * tests/object-good/array-object-upcast.lir, + * tests/object-good/array-object-upcast.mips.s, + * tests/object-good/array-object-upcast.out, + * tests/object-good/array-object-upcast.sta, + * tests/object-good/array-object-upcast.tig, + * tests/object-good/array-object-upcast.u.mips.s: Here. + +2017-07-19 Guillaume Marques + + doc: update doxygen header + + * src/object/overfun-binder.hh, + * src/object/overfun-type-checker.cc, + * src/object/overfun-type-checker.hh: Here. + +2017-07-19 Guillaume Marques + + style: fix typos + + * src/type/builtin-types.hh: Here. + +2017-07-19 Guillaume Marques + + object: desugar: clean code + + * src/object/desugar-visitor.cc: Here. + +2017-07-19 Guillaume Marques + + object: renamer: remove useless nodes override + + The overriding of these nodes was justified to avoid to rename + class attributes. However, to create a ForExp inside a class, we must + create it inside a method, where we already set the `within_class_ty_` + to false. + Same for the FunctionDec. + + * src/object/renamer.cc, + * src/object/renamer.hh: Here. + +2017-07-19 Guillaume Marques + + tests: good: add untested case + + * tests/good/redefine-object.-e.ia32.s, + * tests/good/redefine-object.-e.mips.s, + * tests/good/redefine-object.-e.u.mips.s, + * tests/good/redefine-object.err, + * tests/good/redefine-object.hir, + * tests/good/redefine-object.hpr, + * tests/good/redefine-object.ia32.s, + * tests/good/redefine-object.lir, + * tests/good/redefine-object.mips.s, + * tests/good/redefine-object.out, + * tests/good/redefine-object.sta, + * tests/good/redefine-object.tig, + * tests/good/redefine-object.u.mips.s: Here. + +2017-07-19 Guillaume Marques + + tests: object: add untested case + + * tests/bind/unknown-object-type.tc-err, + * tests/bind/unknown-object-type.tc-sta, + * tests/bind/unknown-object-type.tig: Here. + +2017-07-19 Guillaume Marques + + type: type-checker: change misleading parameter name + + * src/type/type-checker.cc, + * src/type/type-checker.hh, + * src/type/type-checker.hxx: Here. + +2017-07-19 Guillaume Marques + + inlining: remove legacy comment + + * src/inlining/libinlining.hh: Here. + +2017-07-19 Guillaume Marques + + style: fix typo + + * src/overload/tasks.cc: Here. + +2017-07-19 Guillaume Marques + + object: type: fix MethodCallExp type checking + + We used to not check the compatibility between methods args and + methods formals. + + Thanks Sara for noticing it! + + * src/object/type-checker.cc, + * tests/object-type/method-args-type-mismatch.tc-err, + * tests/object-type/method-args-type-mismatch.tc-sta, + * tests/object-type/method-args-type-mismatch.tig: Here. + +2017-07-19 Sarasvati Moutoucomarapoulé + + dist: parse: fix pattern in hook + + The old pattern did not accept spaces nor comments around the + `%glr-parser` directive. Thus, `make dist` failed for some students by + trying to ship the `stack.hh` file when the GLR was activated. + + * src/parse/local.am: Fix it. + +2017-07-19 Guillaume Marques + + object: desugar: clean code + + * src/object/desugar-visitor.cc, + * src/object/desugar-visitor.hh, + * src/type/class.hh: Here. + +2017-07-19 Guillaume Marques + + type: avoid useless function call + + * src/type/type-checker.cc, + * src/type/type-checker.hh, + * src/type/type-checker.hxx: Here. + +2017-07-19 Guillaume Marques + + type: object: show use case for OpExp and IfExp + + * src/object/type-checker.cc: Here. + +2017-07-19 Guillaume Marques + + type: update comment + + * src/type/type-checker.hh: Here. + +2017-07-19 Guillaume Marques + + type: update README + + * src/type/README.txt: Here. + +2017-07-19 Guillaume Marques + + object: type-checker: fix typos + + * src/object/type-checker.cc: Here. + +2017-07-19 Guillaume Marques + + object: renamer: fix typo + + * src/object/renamer.hh: Here. + +2017-07-19 Guillaume Marques + + object: desugar: clean code + + * src/object/desugar-visitor.cc: Here. + +2017-07-19 Guillaume Marques + + pruner: remove useless variable + + * src/inlining/pruner.cc, + * src/inlining/pruner.hh: Here. + +2017-07-19 Etienne Renault + + Use strongly-typed enumerations in the Tiger Interpreter. + + * ti/ti.cc, + * ti/tiopts.cc, + * ti/tiopts.hh: here. + +2017-07-19 Roland Levillain + + Use strongly-typed enumerations in the back end. + + * src/target/arm/arm-assembly.cc, + * src/target/arm/arm-codegen.cc, + * src/target/arm/arm-codegen.hh, + * src/target/arm/binop.brg, + * src/target/arm/epilogue.cc, + * src/target/arm/move_load.brg, + * src/target/arm/move_store.brg, + * src/target/arm/prologue.hh, + * src/target/ia32/epilogue.cc, + * src/target/ia32/gas-assembly.cc, + * src/target/ia32/gas-codegen.cc, + * src/target/ia32/gas-codegen.hh, + * src/target/ia32/move_load.brg, + * src/target/ia32/move_store.brg, + * src/target/ia32/prologue.hh, + * src/target/mips/epilogue.cc, + * src/target/mips/move_load.brg, + * src/target/mips/move_store.brg, + * src/target/mips/prologue.hh, + * src/target/mips/spim-assembly.cc, + * src/target/mips/spim-codegen.cc, + * src/target/mips/spim-codegen.hh, + * src/translate/exp.cc, + * src/translate/translation.cc, + * src/tree/binop.cc, + * src/tree/binop.hh, + * src/tree/call.cc, + * src/tree/cjump.cc, + * src/tree/cjump.hh, + * src/tree/cjump.hxx, + * src/tree/const.cc, + * src/tree/eseq.cc, + * src/tree/jump.cc, + * src/tree/label.cc, + * src/tree/mem.cc, + * src/tree/move.cc, + * src/tree/name.cc, + * src/tree/seq.cc, + * src/tree/sxp.cc, + * src/tree/temp.cc, + * src/tree/tree.hh: here. + +2017-07-19 Roland Levillain + + Use strongly-typed enumerations in the front end. + + * lib/misc/endomap.hxx, src/ast/ast.yml, + * src/ast/op-exp.cc, src/ast/op-exp.hh, + * src/ast/test-ast.cc, src/desugar/desugar-visitor.cc, + * src/frame/access.cc, src/object/type-checker.cc, + * src/parse/parsetiger.cc, src/parse/parsetiger.yy, + * src/target/ia32/gas-codegen.hh, src/transform/all.hh, + * src/translate/translation.cc, src/type/type-checker.cc, + * tests/object-type/builtin-object-vs-custom-object.tc-err, + * tests/object-type/forward-method-reference-1.tc-err, + * tests/object-type/forward-method-reference-2.tc-err, + * tests/object-type/invalid-forward-references-to-members.tc-err, + * tests/type/missing-arg.tc-err, + * tests/type/not-enough-args.tc-err, + * tests/type/too-many-args.tc-err: here. + +2017-07-19 Roland Levillain + + Introduce the use of strongly-typed enumerations (``enum class''). + + * lib/misc/endomap.hh (misc::endo_map::strictness_type): + Turn it into a strongly-typed enumeration. + * lib/misc/endomap.hxx: Adjust. + +2017-07-19 Guillaume Marques + + style: fix typos + + * src/desugar/bounds-checking-visitor.cc, + * src/inlining/inliner.cc: Here. + +2017-07-19 Guillaume Marques + + type: remove `static_cast` in `FunctionDec` + + * src/type/type-checker.cc: Here. + +2017-07-19 Guillaume Marques + + type: remove useless `accept()` call + + * src/type/type-checker.cc: Here. + +2017-07-19 Guillaume Marques + + style: fix space before reference + + * src/type/builtin-types.hh: Here. + +2017-07-19 Guillaume Marques + + type: object: change `meth_type` prototype + + In order to be more consistent with `attr_type`, `meth_type` + now returns a `Type*` + + * src/object/type-checker.cc, + * src/type/README.txt, + * src/type/class.cc, + * src/type/class.hh, + * src/type/method.hh, + * src/type/method.hxx: Here. + +2017-07-19 Guillaume Marques + + type: fix misleading FIXMEs + + * src/type/array.hxx, + * src/type/record.hh: Here. + +2017-07-19 Guillaume Marques + + object: bind: add unhandled object binding test case + + The Tiger manual is mentioning the test case described in the + test but it was never tested before. + + Thanks Francis for noticing it! + + * tests/object-bind/self-within-function-within-method.tc-err, + * tests/object-bind/self-within-function-within-method.tc-sta, + * tests/object-bind/self-within-function-within-method.tig: Here. + +2017-07-19 Guillaume Marques + + bind: object: fix ambiguous comment + + * src/object/binder.cc: Here. + +2017-07-19 Guillaume Marques + + bind: remove useless super_type call + + * src/bind/binder.cc: Here. + +2017-07-19 Guillaume Marques + + style: lib: use `= default' for constructors and destructors + + * lib/misc/graph.hh, + * lib/misc/graph.hxx, + * lib/misc/map.hh, + * lib/misc/map.hxx, + * lib/misc/ref.hh, + * lib/misc/ref.hxx, + * lib/misc/unique.hh, + * lib/misc/unique.hxx: Here. + +2017-07-19 Guillaume Marques + + unique: remove useless die + + There is already a FIXME indicating the code must be + changed. + + * lib/misc/unique.hxx: Here. + +2017-07-19 Guillaume Marques + + style: fix spaces before opening angles and parentheses + + * lib/misc/set.hxx, + * lib/misc/variant.hxx, + * src/assem/instrs.cc, + * src/ast/default-visitor.hh, + * src/ast/libast.cc, + * src/ast/pretty-printer.cc, + * src/ast/tasks.cc, + * src/ast/test-ast.cc, + * src/astclone/cloner.hxx, + * src/bind/binder.hh, + * src/desugar/bounds-checking-visitor.cc, + * src/desugar/test-string-cmp-desugar.cc, + * src/frame/access.hh, + * src/frame/frame.hh, + * src/object/desugar-visitor.cc, + * src/overload/over-table.hh, + * src/parse/libparse.hh, + * src/parse/location.hh, + * src/parse/parsetiger.yy, + * src/parse/stack.hh, + * src/parse/tiger-parser.hh, + * src/parse/tweast.hh, + * src/regalloc/color.cc, + * src/regalloc/color.hh, + * src/regalloc/test-regalloc.cc, + * src/stc/local.am, + * src/stc/stc.cc, + * src/target/mips/epilogue.cc, + * src/target/mips/spim-codegen.cc, + * src/task/function-task.hh, + * src/task/int-task.cc, + * src/task/libtask.hh, + * src/task/task-register.cc, + * src/temp/test-temp.cc, + * src/transform/all.hxx, + * src/transform/generic-rewriter.hh, + * src/transform/generic-traversal.hh, + * src/transform/generic-traversal.hxx, + * src/transform/matcher.hh, + * src/transform/rewriter.hh, + * src/translate/access.cc, + * src/translate/exp.cc, + * src/translate/exp.hh, + * src/translate/level.cc, + * src/translate/level.hh, + * src/translate/libtranslate.hh, + * src/translate/translation.cc, + * src/translate/translator.hh, + * src/type/README.txt, + * src/type/attribute.hh, + * src/type/builtin-types.hh, + * src/type/class.cc: Here. + +2017-07-18 Etienne Renault + + prefer pre-incrementation + + Post incrementation requires a copy and + may confuse the reader. + + * lib/misc/graph.hxx, src/assem/instr.cc, + * src/inlining/pruner.cc, src/target/arm/arm-codegen.cc, + * src/target/arm/epilogue.cc, src/target/ia32/gas-codegen.hh, + * src/target/mips/epilogue.cc, src/target/mips/spim-codegen.cc: here. + +2017-06-26 Etienne Renault + + Version 1.62 for 2019-tc-9.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2017-06-20 Guillaume Marques + + style: regalloc: fix typo + + * src/regalloc/color.hh: Here. + +2017-06-13 Etienne Renault + + bf: handle environment issues + + * buildfarm/bootstrap, buildfarm/build, + * buildfarm/check, buildfarm/common, + * buildfarm/configure, buildfarm/coverage, + * buildfarm/distcheck: here. + +2017-06-05 Etienne Renault + + Version 1.61 for 2019-tc-8.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2017-05-29 Etienne Renault + + Version 1.60 for 2019-tc-6.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2017-05-26 Guillaume Marques + + style: target: fix indentations + + * src/target/assembly.cc, + * src/target/codegen.cc, + * src/target/cpu.cc, + * src/target/fwd.hh, + * src/target/target.cc, + * src/target/target.hh, + * src/target/tasks.cc, + * src/target/tasks.hh: Here. + +2017-05-26 Guillaume Marques + + mips: regenerate + + * src/target/mips/spim-codegen.cc, + * src/target/mips/spim-codegen.hh: Here. + +2017-05-26 Guillaume Marques + + style: mips: fix indentations + + * src/target/mips/cpu.cc, + * src/target/mips/cpu.hh, + * src/target/mips/epilogue.cc, + * src/target/mips/prologue.hh, + * src/target/mips/spim-assembly.cc, + * src/target/mips/target.cc, + * src/target/mips/target.hh: Here. + +2017-05-26 Guillaume Marques + + ia32: regenerate + + * src/target/ia32/gas-codegen.cc, + * src/target/ia32/gas-codegen.hh: Here. + +2017-05-26 Guillaume Marques + + style: ia322: fix indentations + + * src/target/ia32/cpu.hh, + * src/target/ia32/epilogue.cc, + * src/target/ia32/exp.brg, + * src/target/ia32/gas-assembly.cc, + * src/target/ia32/gas-assembly.hh, + * src/target/ia32/gas-layout.cc, + * src/target/ia32/mem.brg, + * src/target/ia32/move.brg, + * src/target/ia32/move_store.brg, + * src/target/ia32/prologue.hh, + * src/target/ia32/target.cc, + * src/target/ia32/target.hh: Here. + +2017-05-26 Guillaume Marques + + ia32: call: simplify arguments storage loop + + * src/target/ia32/call.brg: Here. + +2017-05-26 Guillaume Marques + + arm: regenerate + + * src/target/arm/arm-codegen.cc, + * src/target/arm/arm-codegen.hh: Here. + +2017-05-26 Guillaume Marques + + arm: use unsigned int + + * src/target/arm/call.brg: Here. + +2017-05-26 Guillaume Marques + + style: arm: fix indentations + + * src/target/arm/arm-assembly.cc, + * src/target/arm/arm-layout.cc, + * src/target/arm/cjump.brg, + * src/target/arm/cpu.cc, + * src/target/arm/cpu.hh, + * src/target/arm/epilogue.cc, + * src/target/arm/exp.brg, + * src/target/arm/mem.brg, + * src/target/arm/move.brg, + * src/target/arm/move_load.brg, + * src/target/arm/move_store.brg, + * src/target/arm/prologue.hh, + * src/target/arm/target.cc, + * src/target/arm/target.hh: Here. + +2017-05-26 Guillaume Marques + + arm: remove useless default ctor + + * src/target/arm/arm-layout.hh: Here. + +2017-05-26 Guillaume Marques + + Revert "regalloc: swap callee-save and caller-save order" + + This reverts commit bd341c1620423f8d895a923edb58ba9cb6d4a4dd. + + This change caused big-exp.tig to fail. Investigate. + + * src/regalloc/color.cc, + * src/regalloc/color.hh: Here. + +2017-05-12 Etienne Renault + + Version 1.59 for 2019-tc-6.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2017-05-12 Guillaume Marques + + tests: remove duplicate tests + + * tests/object-good/instantiate-object.-e.ia32.s, + * tests/object-good/instantiate-object.-e.mips.s, + * tests/object-good/instantiate-object.-e.u.mips.s, + * tests/object-good/instantiate-object.err, + * tests/object-good/instantiate-object.hir, + * tests/object-good/instantiate-object.hpr, + * tests/object-good/instantiate-object.ia32.s, + * tests/object-good/instantiate-object.lir, + * tests/object-good/instantiate-object.lpr, + * tests/object-good/instantiate-object.mips.s, + * tests/object-good/instantiate-object.out, + * tests/object-good/instantiate-object.pan, + * tests/object-good/instantiate-object.sta, + * tests/object-good/instantiate-object.tig, + * tests/object-good/instantiate-object.u.mips.s, + * tests/overfun-object-bind/overfun-extends-different-chunk.tc-err: + * Here. + * tests/overfun-object-bind/overfun-extends-different-chunk.tc-sta: + * Here. + * tests/overfun-object-bind/overfun-extends-different-chunk.tig, + * tests/overfun-object-bind/overfun-initialize-attribute-with-self.tc-err, + * tests/overfun-object-bind/overfun-initialize-attribute-with-self.tc-sta, + * tests/overfun-object-bind/overfun-initialize-attribute-with-self.tig: + * Here. + * tests/overfun-object-bind/overfun-invalid-forward-reference-to-class.tc-err, + * tests/overfun-object-bind/overfun-invalid-forward-reference-to-class.tc-sta, + * tests/overfun-object-bind/overfun-invalid-forward-reference-to-class.tig, + * tests/overfun-object-bind/overfun-self-outside-class.tc-err, + * tests/overfun-object-bind/overfun-self-outside-class.tc-sta, + * tests/overfun-object-bind/overfun-self-outside-class.tig, + * tests/overfun-object-bind/overfun-undeclared-extends.tc-err, + * tests/overfun-object-bind/overfun-undeclared-extends.tc-sta, + * tests/overfun-object-bind/overfun-undeclared-extends.tig, + * tests/overfun-object-bind/overfun-undeclared-function.tc-err, + * tests/overfun-object-bind/overfun-undeclared-function.tc-sta, + * tests/overfun-object-bind/overfun-undeclared-function.tig, + * tests/overfun-object-bind/overfun-undeclared-variable.tc-err, + * tests/overfun-object-bind/overfun-undeclared-variable.tc-sta, + * tests/overfun-object-bind/overfun-undeclared-variable.tig, + * tests/overfun-object-bind/overfun-variable-defined-later.tc-err, + * tests/overfun-object-bind/overfun-variable-defined-later.tc-sta, + * tests/overfun-object-bind/overfun-variable-defined-later.tig, + * tests/overfun-object-good/overload-builtin-instantiate-object.err: + * Here. + * tests/overfun-object-good/overload-builtin-instantiate-object.hir: + * Here. + * tests/overfun-object-good/overload-builtin-instantiate-object.hpr: + * Here. + * tests/overfun-object-good/overload-builtin-instantiate-object.out: + * Here. + * tests/overfun-object-good/overload-builtin-instantiate-object.sta: + * Here. + * tests/overfun-object-good/overload-builtin-instantiate-object.tig: + * Here. + * tests/overfun-object-good/overload-function-instantiate-object.err: + * Here. + * tests/overfun-object-good/overload-function-instantiate-object.hir: + * Here. + * tests/overfun-object-good/overload-function-instantiate-object.hpr: + * Here. + * tests/overfun-object-good/overload-function-instantiate-object.out: + * Here. + * tests/overfun-object-good/overload-function-instantiate-object.sta: + * Here. + * tests/overfun-object-good/overload-function-instantiate-object.tig: + * Here. + * tests/overfun-object-good/overload-function-record-arg-instantiate-object.err, + * tests/overfun-object-good/overload-function-record-arg-instantiate-object.hir, + * tests/overfun-object-good/overload-function-record-arg-instantiate-object.hpr, + * tests/overfun-object-good/overload-function-record-arg-instantiate-object.out, + * tests/overfun-object-good/overload-function-record-arg-instantiate-object.sta, + * tests/overfun-object-good/overload-function-record-arg-instantiate-object.tig, + * tests/overfun-object-good/overload-nil-diambiguated-instantiate-object.err, + * tests/overfun-object-good/overload-nil-diambiguated-instantiate-object.hir, + * tests/overfun-object-good/overload-nil-diambiguated-instantiate-object.hpr, + * tests/overfun-object-good/overload-nil-diambiguated-instantiate-object.out, + * tests/overfun-object-good/overload-nil-diambiguated-instantiate-object.sta, + * tests/overfun-object-good/overload-nil-diambiguated-instantiate-object.tig, + * tests/overfun-object-good/overload-var-type-inference-instantiate-object.err, + * tests/overfun-object-good/overload-var-type-inference-instantiate-object.hir, + * tests/overfun-object-good/overload-var-type-inference-instantiate-object.hpr, + * tests/overfun-object-good/overload-var-type-inference-instantiate-object.out, + * tests/overfun-object-good/overload-var-type-inference-instantiate-object.sta, + * tests/overfun-object-good/overload-var-type-inference-instantiate-object.tig, + * tests/overfun-object-type/overfun-assign-self.tc-err, + * tests/overfun-object-type/overfun-assign-self.tc-sta, + * tests/overfun-object-type/overfun-assign-self.tig, + * tests/overfun-object-type/overfun-attribute-redefined.tc-err, + * tests/overfun-object-type/overfun-attribute-redefined.tc-sta, + * tests/overfun-object-type/overfun-attribute-redefined.tig, + * tests/overfun-object-type/overfun-builtin-object-vs-custom-object.tc-err, + * tests/overfun-object-type/overfun-builtin-object-vs-custom-object.tc-sta, + * tests/overfun-object-type/overfun-builtin-object-vs-custom-object.tig: + * Here. + * tests/overfun-object-type/overfun-calling-son-method.tc-err, + * tests/overfun-object-type/overfun-calling-son-method.tc-sta, + * tests/overfun-object-type/overfun-calling-son-method.tig, + * tests/overfun-object-type/overfun-class-extends-itself.tc-err, + * tests/overfun-object-type/overfun-class-extends-itself.tc-sta, + * tests/overfun-object-type/overfun-class-extends-itself.tig, + * tests/overfun-object-type/overfun-contravariant-method.tc-err, + * tests/overfun-object-type/overfun-contravariant-method.tc-sta, + * tests/overfun-object-type/overfun-contravariant-method.tig, + * tests/overfun-object-type/overfun-contravariant-return-type.tc-err: + * Here. + * tests/overfun-object-type/overfun-contravariant-return-type.tc-sta: + * Here. + * tests/overfun-object-type/overfun-contravariant-return-type.tig, + * tests/overfun-object-type/overfun-covariant-method.tc-err, + * tests/overfun-object-type/overfun-covariant-method.tc-sta, + * tests/overfun-object-type/overfun-covariant-method.tig, + * tests/overfun-object-type/overfun-covariant-return-type.tc-err, + * tests/overfun-object-type/overfun-covariant-return-type.tc-sta, + * tests/overfun-object-type/overfun-covariant-return-type.tig, + * tests/overfun-object-type/overfun-downcast.tc-err, + * tests/overfun-object-type/overfun-downcast.tc-sta, + * tests/overfun-object-type/overfun-downcast.tig, + * tests/overfun-object-type/overfun-duplicate-members.tc-err, + * tests/overfun-object-type/overfun-duplicate-members.tc-sta, + * tests/overfun-object-type/overfun-duplicate-members.tig, + * tests/overfun-object-type/overfun-forward-method-reference-1.tc-err: + * Here. + * tests/overfun-object-type/overfun-forward-method-reference-1.tc-sta: + * Here. + * tests/overfun-object-type/overfun-forward-method-reference-1.tig: + * Here. + * tests/overfun-object-type/overfun-forward-method-reference-2.tc-err: + * Here. + * tests/overfun-object-type/overfun-forward-method-reference-2.tc-sta: + * Here. + * tests/overfun-object-type/overfun-forward-method-reference-2.tig: + * Here. + * tests/overfun-object-type/overfun-function-returning-son.tc-err, + * tests/overfun-object-type/overfun-function-returning-son.tc-sta, + * tests/overfun-object-type/overfun-function-returning-son.tig, + * tests/overfun-object-type/overfun-illegal-redefinition-of-object-1.tc-err, + * tests/overfun-object-type/overfun-illegal-redefinition-of-object-1.tc-sta, + * tests/overfun-object-type/overfun-illegal-redefinition-of-object-1.tig: + * Here. + * tests/overfun-object-type/overfun-illegal-redefinition-of-object-2.tc-err, + * tests/overfun-object-type/overfun-illegal-redefinition-of-object-2.tc-sta, + * tests/overfun-object-type/overfun-illegal-redefinition-of-object-2.tig: + * Here. + * tests/overfun-object-type/overfun-instantiate-a-string-as-a-class.tc-err, + * tests/overfun-object-type/overfun-instantiate-a-string-as-a-class.tc-sta, + * tests/overfun-object-type/overfun-instantiate-a-string-as-a-class.tig: + * Here. + * tests/overfun-object-type/overfun-int-as-super-class.tc-err, + * tests/overfun-object-type/overfun-int-as-super-class.tc-sta, + * tests/overfun-object-type/overfun-int-as-super-class.tig, + * tests/overfun-object-type/overfun-invalid-forward-references-to-members.tc-err, + * tests/overfun-object-type/overfun-invalid-forward-references-to-members.tc-sta, + * tests/overfun-object-type/overfun-invalid-forward-references-to-members.tig, + * tests/overfun-object-type/overfun-method-redefinition-with-different-signature.tc-err, + * tests/overfun-object-type/overfun-method-redefinition-with-different-signature.tc-sta, + * tests/overfun-object-type/overfun-method-redefinition-with-different-signature.tig, + * tests/overfun-object-type/overfun-naive-redef.tc-err, + * tests/overfun-object-type/overfun-naive-redef.tc-sta, + * tests/overfun-object-type/overfun-naive-redef.tig, + * tests/overfun-object-type/overfun-nil-ambiguity.tc-err, + * tests/overfun-object-type/overfun-nil-ambiguity.tc-sta, + * tests/overfun-object-type/overfun-nil-ambiguity.tig, + * tests/overfun-object-type/overfun-order-nil-with-object.tc-err, + * tests/overfun-object-type/overfun-order-nil-with-object.tc-sta, + * tests/overfun-object-type/overfun-order-nil-with-object.tig, + * tests/overfun-object-type/overfun-order-object-with-nil.tc-err, + * tests/overfun-object-type/overfun-order-object-with-nil.tc-sta, + * tests/overfun-object-type/overfun-order-object-with-nil.tig, + * tests/overfun-object-type/overfun-redef.tc-err, + * tests/overfun-object-type/overfun-redef.tc-sta, + * tests/overfun-object-type/overfun-redef.tig, + * tests/overfun-object-type/overfun-unknown-attribute.tc-err, + * tests/overfun-object-type/overfun-unknown-attribute.tc-sta, + * tests/overfun-object-type/overfun-unknown-attribute.tig, + * tests/overfun-object-type/overfun-unknown-method.tc-err, + * tests/overfun-object-type/overfun-unknown-method.tc-sta, + * tests/overfun-object-type/overfun-unknown-method.tig: Here. + +2017-05-11 Guillaume Marques + + traces: fix typos + + * src/canon/traces.cc: Here. + +2017-05-11 Guillaume Marques + + canon: fix typos + + * src/canon/canon.cc, + * src/canon/canon.hh: Here. + +2017-04-29 Guillaume Marques + + regalloc: swap callee-save and caller-save order + + * src/regalloc/color.cc, + * src/regalloc/color.hh: Here. + +2017-04-17 Guillaume Marques + + target: ia32: fix function call conventions + + This closes issue #56. + + * src/target/ia32/cpu.cc: Here. + +2017-04-17 Guillaume Marques + + regalloc: color: generalize registers to multiple targets + + * src/regalloc/color.cc, + * src/regalloc/color.hh: Here. + +2017-04-16 Guillaume Marques + + style: liveness: clean code + + * src/liveness/liveness.cc: Here. + +2017-04-12 Etienne Renault + + Version 1.58 for 2019-tc-5.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2017-04-11 Moray Baruh + + style: translate: clean record exp translation + + * translate/translation.cc: Here. + +2017-04-11 Moray Baruh + + style: translation: clean string op exp translation + + * translation.cc: Here. + +2017-04-11 Moray Baruh + + style: translation: remove extra spaces before parenthesis + + * translation.cc: Here. + +2017-04-11 Moray Baruh + + style: translation: clean up op exp translation + + Remove big switch and goto statements in op exp translation. + + * src/translate/translation.cc: Here. + +2017-04-11 Guillaume Marques + + style: translate: no space before function parameters + + * src/translate/exp.cc: Here. + * src/translate/exp.hh: Here. + * src/translate/translation.cc: Here. + * src/translate/translator.cc: Here. + * src/translate/translator.hh: Here. + * src/tree/fragment.cc: Here. + +2017-04-11 Guillaume Marques + + style: temp: no space before function call + + * src/temp/test-temp.cc: Here. + +2017-04-11 Guillaume Marques + + style: fix typos + + * src/translate/exp.hh: Here. + +2017-04-11 Guillaume Marques + + style: tree: constructors should be in .cc + + * src/tree/binop.cc, + * src/tree/binop.hxx, + * src/tree/cjump.cc, + * src/tree/cjump.hxx, + * src/tree/const.cc, + * src/tree/const.hxx, + * src/tree/eseq.cc, + * src/tree/eseq.hxx, + * src/tree/fragment.cc, + * src/tree/fragment.hxx, + * src/tree/jump.cc, + * src/tree/jump.hxx, + * src/tree/label.cc, + * src/tree/label.hxx, + * src/tree/mem.cc, + * src/tree/mem.hxx, + * src/tree/move.cc, + * src/tree/move.hxx, + * src/tree/name.cc, + * src/tree/name.hxx, + * src/tree/seq.cc, + * src/tree/seq.hxx, + * src/tree/sxp.cc, + * src/tree/sxp.hxx, + * src/tree/temp.cc, + * src/tree/temp.hxx, + * src/tree/tree.cc, + * src/tree/tree.hxx: Here. + +2017-04-09 Guillaume Marques + + style: llvmtranslate: put empty braces on same line + + * src/llvmtranslate/escapes-collector.cc, + * src/llvmtranslate/llvm-type-visitor.cc: Here. + +2017-04-09 Guillaume Marques + + style: llvmtranslate: use empty() method + + * src/llvmtranslate/translator.cc: Here. + +2017-04-09 Guillaume Marques + + style: llvmtranslate: fix typo + + * src/llvmtranslate/escapes-collector.hh: Here. + +2017-04-07 Guillaume Marques + + configure: remove unnecessary llc prerequisite + + As of d39026aa we no longer use it. + + * configure.ac: Here. + +2017-03-03 Etienne Renault + + Bump version number + + * configure.ac: here. + +2017-03-03 Etienne Renault + + Version 1.57 for 2019-tc-4.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2017-02-13 Etienne Renault + + Bump version number + + * configure.ac: here. + +2017-02-13 Etienne Renault + + Version 1.56 for 2019-tc-3.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2017-02-02 Etienne Renault + + Bump version number + + * configure.ac: here. + * NEWS.txt: fix typo. + +2017-02-02 Etienne Renault + + Version 1.55 for 2019-tc-2.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: here. + +2017-02-02 Guillaume Marques + + object: desugar: remove unnecessary FIXME + + * src/object/desugar-visitor.cc: Here. + +2017-02-02 Guillaume Marques + + object: desugar: remove deprecated FIXMEs + + Applying these FIXMEs would required too much work for these + to be worth it. In fact, everytime we check the type between + two elements (VarDec, MethodCallExp, ...), we need to check + if the static type is different from the dynamic type, in + which case, a cast function would be needed. + + * src/object/desugar-visitor.cc: Here. + +2017-02-02 Guillaume Marques + + style: object: fix spaces + + * src/type/class.cc: Here. + +2017-02-02 Guillaume Marques + + object: desugar: remove deprecated FIXMEs + + * src/object/desugar-visitor.cc: Here. + +2017-02-02 Guillaume Marques + + object: desugar: clean code + + * src/object/desugar-visitor.cc, + * src/object/desugar-visitor.hh, + * src/type/class.hh: Here. + +2017-02-02 Guillaume Marques + + object: desugar: remove legacy code + + * src/object/desugar-visitor.cc, + * src/object/desugar-visitor.hh: Here. + +2017-02-02 Guillaume Marques + + style: scoped-map: fix braces + + * lib/misc/scoped-map.hxx: Here. + +2017-02-02 Guillaume Marques + + gitignore: add flex++ + + * .gitignore: Here. + +2017-02-02 Guillaume Marques + + style: use `= default' for constructors and destructors + + * src/callgraph/fundec-graph.hh, + * src/callgraph/fundec-graph.hxx, + * src/target/ia32/target.hh, + * src/target/mips/spim-assembly.hh, + * src/target/mips/target.hh, + * src/transform/generic-rewriter.hh, + * src/transform/generic-rewriter.hxx, + * src/transform/sequence.hh, + * src/transform/sequence.hxx, + * src/transform/test-voyager.cc, + * src/transform/visitor.hh, + * src/transform/visitor.hxx, + * src/translate/exp.hh, + * src/tree/visitor.hh, + * src/tree/visitor.hxx: Here. + +2017-01-28 Guillaume Marques + + ast: pretty-printer: enclose binding work into binding tags + + * src/ast/pretty-printer.cc, + * src/ast/pretty-printer.hh: Here. + +2017-01-25 Etienne Renault + + Bump version number + + * Makefile.am, configure.ac: here. + +2017-01-25 Etienne Renault + + Version 1.54 for 2019-tc-1.0 + + * NEWS.txt, configure.ac, src/version.cc.in: here. + * .last-cl-gen, ChangeLog, AUTHORS.txt: update. + +2017-01-25 Sebastien Piat + + llvmtranslate: llvm warning fixed in gcc 6.0 + + This reverts commit 63511f84b1cb184a715967d5c561851fa7639503. + +2017-01-25 Sebastien Piat + + arm: avoid forcing the reference to arm-linux-gnuabi + + This reverts commit ce9c0e1f51cb9ad663e0cc15f4441657c104abb2. + +2017-01-25 Guillaume Marques + + parse: local: fix hook + + The hook wasn't creating the `stack.hh' in the correct + directory nor the correct name. + + Thanks moutou_s. + + * src/parse/local.am: Here. + +2017-01-25 Guillaume Marques + + configure: fix make doc rule in build_dir + + This commit fixes Issue #99. + + * configure.ac: Here. + +2017-01-25 Guillaume Marques + + configure: llc is no longer needed + + It is possible to compile llvm using directly clang. + + * configure.ac, + * tests/tc-check.in: Here. + +2017-01-25 Guillaume Marques + + ast: change the_program from raw pointer to unique_ptr + + * src/ast/tasks.cc, + * src/ast/tasks.hh, + * src/astclone/libastclone.hh, + * src/astclone/libastclone.hxx, + * src/astclone/tasks.cc, + * src/astclone/tasks.hh, + * src/desugar/tasks.cc, + * src/object/tasks.cc, + * src/parse/tasks.cc, + * tests/tc-check.in: Here. + +2017-01-25 Guillaume Marques + + style: set: remove useless implementations + + The default dtor can be deleted because it is not virtual. + The default ctor's implementation can be removed and defaulted + in the header file. + + * lib/misc/set.hh, + * lib/misc/set.hxx: Here. + +2017-01-25 Loic Banet + + syntax: replace if with predecl + + * src/object/desugar-visitor.cc, + * src/object/type-checker.cc, + + * src/regalloc/regallocator.cc, + * src/type/type-checker.cc: Here. + +2017-01-25 Loic Banet + + c++1z: if(init; condition): replace pre decl + + * lib/misc/scoped-map.hxx, + * src/callgraph/libcallgraph.cc, + * src/canon/canon.cc, + * src/liveness/interference-graph.cc, + * src/llvmtranslate/escapes-collector.cc, + * src/llvmtranslate/translator.cc, + * src/object/desugar-visitor.cc, + * src/object/type-checker.cc, + * src/overload/type-checker.cc, + * src/type/type-checker.cc: here. + +2017-01-25 Loic Banet + + c++1z: if constexpr: replace sfinae + + * lib/misc/scoped-map.hxx: here. + +2017-01-25 Loic Banet + + c++1z: template argument deduction for constructor + + * lib/misc/pair.hh, + * lib/misc/pair.hxx, + * src/ast/pretty-printer.cc, + * src/object/libobject.cc, + * src/overload/binder.cc, + * src/overload/liboverload.cc, + * src/parse/libparse.cc: here. + +2017-01-25 Loic Banet + + c++1z: std::variant: replace variant & get + + * lib/misc/variant.hh, + * lib/misc/variant.hxx, + * src/desugar/bounds-checking-visitor.cc, + * src/desugar/desugar-visitor.cc, + * src/inlining/inliner.cc, + * src/parse/libparse.cc, + * src/parse/tiger-parser.cc, + * src/target/mips/cpu.cc, + * src/temp/identifier.hh: here. + +2017-01-25 Guillaume Marques + + map: remove unnecessary virtual + + * lib/misc/map.hh: Here. + +2017-01-25 Guillaume Marques + + liveness: factorize dump functions + + * src/liveness/libliveness.cc: Here. + +2017-01-25 Guillaume Marques + + task: remove deprecated FIXME + + * src/task/task-register.cc: Here. + +2017-01-25 Guillaume Marques + + style: fix typos + + * bistromatig/bigint.tih, + * src/assem/instrs.hh, + * src/type/class.cc: Here. + +2017-01-25 Guillaume Marques + + astclone: generalize apply function + + * src/astclone/libastclone.hh, + * src/astclone/libastclone.hxx, + * src/desugar/libdesugar.cc, + * src/desugar/tasks.cc, + * src/object/tasks.cc: Here. + +2017-01-13 Guillaume Marques + + ast: DecsList is now an std::list again + + Because of the amount of head insertions on DecsLists, it is + worthier for ast::DecsList to be an std::list rather than an + std::vector. + + This commit reverts some changes from a30c2a15. + + * src/ast/ast.yml, + * src/ast/decs-list.cc, + * src/ast/decs-list.hh, + * src/ast/fwd.hh, + * src/object/desugar-visitor.cc, + * src/parse/libparse.cc: Here. + +2017-01-13 Guillaume Marques + + misc: list: no longer used + + * lib/misc/list.hh, + * lib/misc/list.hxx, + * lib/misc/local.am: Here. + +2017-01-13 Guillaume Marques + + frame: replace lists with vectors + + * src/frame/fwd.hh: Here. + +2017-01-13 Guillaume Marques + + task: replace lists with vectors + + * src/task/task-register.hh, + * src/task/task.hh: Here. + +2017-01-13 Guillaume Marques + + target: replace lists with vectors + + * src/assem/instrs.hh, + * src/target/arm/arm-assembly.cc, + * src/target/arm/arm-codegen.cc, + * src/target/arm/epilogue.cc, + * src/target/assembly.hh, + * src/target/codegen.hh, + * src/target/codegen.hxx, + * src/target/ia32/epilogue.cc, + * src/target/ia32/gas-assembly.cc, + * src/target/ia32/gas-codegen.cc, + * src/target/mips/epilogue.cc, + * src/target/mips/spim-codegen.cc: Here. + +2017-01-13 Guillaume Marques + + tree: replace lists with vectors + + * lib/misc/map.hh, + * lib/misc/map.hxx, + * lib/misc/set.hh, + * lib/misc/set.hxx, + * src/canon/canon.cc, + * src/canon/traces.cc, + * src/regalloc/color.cc, + * src/regalloc/color.hh, + * src/temp/fwd.hh, + * src/temp/label.cc, + * src/temp/label.hh, + * src/temp/temp.cc, + * src/temp/temp.hh, + * src/temp/test-temp.cc, + * src/tree/README.txt, + * src/tree/fragments.hh, + * src/tree/fwd.hh, + * src/tree/iterator.hh, + * src/tree/iterator.hxx: Here. + +2017-01-13 Guillaume Marques + + misc: assem: replace lists with vectors + + * src/assem/fragments.hh, + * src/assem/move.hh: Here. + +2017-01-13 Guillaume Marques + + misc: graph: replace lists with vectors + + * lib/misc/graph.hh, + * lib/misc/graph.hxx: Here. + + * src/liveness/liveness.cc: Update sort's type. + +2017-01-13 Guillaume Marques + + misc: file-library: replace lists with vectors + + * lib/misc/file-library.cc, + * lib/misc/file-library.hh: Here. + +2017-01-13 Guillaume Marques + + misc: vector: misc/vector replaces misc/list + + Create new class to greatly simplify the use of + vectors in src/temp. The move funtions are outside + of the class because it does not need them. + + * lib/misc/local.am: Add dependency. + + * lib/misc/vector.hh, + * lib/misc/vector.hxx: Here. + + * src/ast/ast.yml, + * src/ast/decs-list.cc, + * src/object/desugar-visitor.cc, + * src/object/desugar-visitor.hh, + * src/parse/parsetiger.yy, + * src/translate/fwd.hh, + * src/translate/translator.cc: Here. + +2016-12-20 Guillaume Marques + + tests: rename some tests + + As stated in the Issue #100, some tests have a name longer + than 99 chars which prevent them from being included in the + generated directory from the dist rule. + + * tests/overfun-object-good/*: Here. + +2016-12-20 Guillaume Marques + + target: add FIXMEs for streq and strcmp for ia32 and arm + + * src/target/arm/runtime.s, + * src/target/ia32/runtime-gnu-linux.s: Here. + +2016-12-20 Guillaume Marques + + object: opexp added in type-checker + + Issue #46 noticed an error in the comparison of compatible + objects with different static type when it comes to the desugarer. + + * tests/object-type/eq-objects-different-static-type.tc-err, + * tests/object-type/eq-objects-different-static-type.tc-sta, + * tests/object-type/eq-objects-different-static-type.tig, + * src/object/type-checker.cc, + * src/object/type-checker.hh: Here. + +2016-12-13 Guillaume Marques + + dev: add script to change FIXME comments to FIXME warnings + + This script replaces comments to warnings to files that are not + parsetiger.yy nor scantiger.ll because doing so would require to + open scope for the preprocessor directive to be correctly + interpreted. + + * dev/comment-to-warning.sh: Here. + +2016-12-13 Guillaume Marques + + ast: pretty-printer: remove useless FIXME + + Two FIXMEs were generated instead of one. + + * src/ast/pretty-printer.cc, + * src/ast/pretty-printer.hh: Here. + +2016-12-13 Sebastien Piat + + object: type-checker: avoid invalid read with invalid ifs + + if 1 then new A else () would segfault because of a failed dynamic_cast. + + * src/object/type-checker.cc: Here. + * tests/object-type/if-void-and-class.tig: Here. + +2016-12-13 Etienne Renault + + Don't repeat (uselessly) the same access qualifier + + For the sake of clarity, remove the useless qualifier + since (1) it confuses the reader and (2) it a waste of + space. + + * dev/ast-nodes-gen, + * src/ast/array-exp.hh, + * src/ast/array-ty.hh, + * src/ast/assign-exp.hh, + * src/ast/ast.hh, + * src/ast/break-exp.hh, + * src/ast/call-exp.hh, + * src/ast/cast-exp.hh, + * src/ast/cast-var.hh, + * src/ast/class-ty.hh, + * src/ast/dec.hh, + * src/ast/decs-list.hh, + * src/ast/escapable.hh, + * src/ast/exp.hh, + * src/ast/field-init.hh, + * src/ast/field-var.hh, + * src/ast/field.hh, + * src/ast/for-exp.hh, + * src/ast/function-dec.hh, + * src/ast/if-exp.hh, + * src/ast/int-exp.hh, + * src/ast/let-exp.hh, + * src/ast/metavar-exp.hh, + * src/ast/metavariable.hh, + * src/ast/method-call-exp.hh, + * src/ast/method-dec.hh, + * src/ast/name-ty.hh, + * src/ast/nil-exp.hh, + * src/ast/object-exp.hh, + * src/ast/op-exp.hh, + * src/ast/record-exp.hh, + * src/ast/record-ty.hh, + * src/ast/rule-dec.hh, + * src/ast/seq-exp.hh, + * src/ast/simple-var.hh, + * src/ast/string-exp.hh, + * src/ast/subscript-var.hh, + * src/ast/ty.hh, + * src/ast/typable.hh, + * src/ast/type-constructor.hh, + * src/ast/type-dec.hh, + * src/ast/var-dec.hh , + * src/ast/var.hh, + * src/ast/while-exp.hh, + * src/bind/binder.hh, + * src/bind/renamer.hh, + * src/callgraph/call-graph-visitor.hh, + * src/callgraph/fundec-graph.hh, + * src/callgraph/parent-graph-visitor.hh, + * src/callgraph/static-link-visitor.hh, + * src/desugar/bounds-checking-visitor.hh, + * src/desugar/desugar-visitor.hh, + * src/escapes/escapes-visitor.hh, + * src/frame/frame.hh, + * src/inlining/inliner.hh, + * src/inlining/pruner.hh, + * src/liveness/flowgraph.hh, + * src/liveness/interference-graph.hh, + * src/liveness/liveness.hh, + * src/object/desugar-visitor.hh, + * src/object/overfun-binder.hh, + * src/object/renamer.hh, + * src/object/type-checker.hh, + * src/overload/binder.hh, + * src/overload/over-table.hh, + * src/overload/type-checker.hh, + * src/regalloc/color.hh, + * src/regalloc/regallocator.hh, + * src/target/arm/arm-assembly.hh, + * src/target/arm/arm-codegen.hh, + * src/target/arm/arm-layout.hh, + * src/target/arm/cpu.hh, + * src/target/arm/prologue.hh, + * src/target/arm/target.hh, + * src/target/ia32/cpu.hh, + * src/target/ia32/gas-assembly.hh, + * src/target/ia32/gas-codegen.hh, + * src/target/ia32/gas-layout.hh, + * src/target/ia32/target.hh, + * src/target/mips/cpu.hh, + * src/target/mips/prologue.hh, + * src/target/mips/spim-assembly.hh, + * src/target/mips/spim-codegen.hh, + * src/target/mips/spim-layout.hh, + * src/target/mips/target.hh, + * src/target/target.hh, + * src/task/boolean-task.hh, + * src/task/disjunctive-task.hh, + * src/task/int-task.hh, + * src/task/string-task.hh, + * src/task/task-register.hh, + * src/temp/identifier.hh, + * src/transform/all.hh, + * src/transform/bottom-up-rewriter.hh, + * src/transform/bottom-up.hh, + * src/transform/concrete-syntax-rewriter.hh, + * src/transform/generic-rewriter.hh, + * src/transform/generic-traversal.hh, + * src/transform/rewriter.hh, + * src/transform/sequence.hh, + * src/transform/test-combinators.cc, + * src/transform/visitor.hh, + * src/translate/access.hh, + * src/translate/level.hh, + * src/tree/tree.hh, + * src/tree/visitor.hh, + * src/type/array.hh, + * src/type/builtin-types.hh, + * src/type/class.hh, + * src/type/field.hh, + * src/type/function.hh, + * src/type/method.hh, + * src/type/named.hh, + * src/type/nil.hh, + * src/type/record.hh, + * src/type/type-checker.hh, + * src/type/type.hh: here. + +2016-12-13 Etienne Renault + + translation: remove useless breaks + + * src/translate/translation.cc: here. + +2016-12-13 Etienne Renault + + monoburg: regen files + + * src/target/arm/arm-codegen.cc, + * src/target/arm/arm-codegen.hh, + * src/target/ia32/gas-codegen.cc, + * src/target/ia32/gas-codegen.hh, + * src/target/mips/spim-codegen.cc, + * src/target/mips/spim-codegen.hh: + +2016-12-13 Etienne Renault + + Get rid of gcc unused function warning + + * src/object/test-bind.cc, + * src/object/test-type.cc: here. + +2016-12-13 Etienne Renault + + llvmtranslate: silent llvm's library warnings + + * src/llvmtranslate/local.am: here. + +2016-12-13 Etienne Renault + + map: please gcc warnings + + * lib/misc/map.hh: here. + +2016-12-13 Etienne Renault + + arm: avoid static reference for tools + + * configure.ac, tests/tc-check.in: here. + +2016-12-13 Etienne Renault + + containers: prefer emplace_back to push_back + + * lib/misc/file-library.cc, + * lib/misc/list.hxx, + * lib/misc/map.hxx, + * src/ast/any-decs.hh, + * src/ast/any-decs.hxx, + * src/ast/decs-list.cc, + * src/ast/decs-list.hh, + * src/ast/function-dec.hh, + * src/ast/test-ast.cc, + * src/astclone/cloner.hxx, + * src/bind/binder.hxx, + * src/callgraph/static-link-visitor.cc, + * src/canon/basic-block.hh, + * src/canon/basic-block.hxx, + * src/canon/canon.cc, + * src/canon/traces.cc, + * src/frame/frame.cc, + * src/inlining/pruner.cc, + * src/liveness/liveness.cc, + * src/llvmtranslate/llvm-type-visitor.cc, + * src/llvmtranslate/translator.cc, + * src/object/binder.cc, + * src/object/desugar-visitor.cc, + * src/overload/over-table.hxx, + * src/overload/type-checker.cc, + * src/parse/location.hh, + * src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, + * src/parse/position.hh, + * src/target/arm/arm-assembly.cc, + * src/target/arm/arm-codegen.cc, + * src/target/arm/epilogue.cc, + * src/target/codegen.hxx, + * src/target/cpu.cc, + * src/target/ia32/epilogue.cc, + * src/target/ia32/gas-assembly.cc, + * src/target/ia32/gas-codegen.cc, + * src/target/libtarget.cc, + * src/target/mips/epilogue.cc, + * src/target/mips/spim-codegen.cc, + * src/task/task-register.cc, + * src/task/task.cc, + * src/transform/all.hxx, + * src/translate/exp.cc, + * src/translate/level.cc, + * src/translate/translation.cc, + * src/translate/translator.cc, + * src/tree/binop.hxx, + * src/tree/call.cc, + * src/tree/cjump.hxx, + * src/tree/eseq.hxx, + * src/tree/jump.hxx, + * src/tree/mem.hxx, + * src/tree/move.hxx, + * src/tree/seq.hh, + * src/tree/seq.hxx, + * src/tree/sxp.hxx, + * src/tree/tree.hh, + * src/tree/tree.hxx, + * src/type/class.hxx, + * src/type/record.hxx, + * ti/ti.cc, + * src/ast/ast.yml, + * src/parse/parsetiger.yy, + * src/target/arm/arm-codegen.cc, + * src/target/arm/binop.brg, + * src/target/arm/call.brg, + * src/target/ia32/call.brg, + * src/target/ia32/gas-codegen.cc, + * src/target/mips/call.brg, + * src/target/mips/spim-codegen.cc: here. + +2016-12-13 Etienne Renault + + configure: portability + + * configure.ac: here. + +2016-12-13 Etienne Renault + + silent gcc warning due to the use of macro + + * src/llvmtranslate/tasks.cc: here. + +2016-12-13 Guillaume Marques + + style: use `= default' when possible + + Use `= default' for ctors and dtors in the header files + instead of explicitly defining them in the implementation files. + + Adapt the ast-gen scripts for the ast nodes and the astcloner. + + * dev/ast-cloner-gen, + * dev/ast-nodes-gen: Update auto-generated files. + + * lib/misc/local.am, + * src/ast/local.am: Remove deleted files. + + * lib/misc/error.cc, + * lib/misc/error.hh, + * lib/misc/symbol.cc, + * lib/misc/symbol.hh, + * lib/misc/xalloc.cc, + * lib/misc/xalloc.hh, + * src/assem/fragment.cc, + * src/assem/fragment.hh, + * src/assem/fragment.hxx, + * src/assem/instr.cc, + * src/assem/instr.hh, + * src/assem/layout.cc, + * src/assem/layout.hh, + * src/assem/visitor.hh, + * src/assem/visitor.hxx, + * src/ast/ast.cc, + * src/ast/ast.hh, + * src/ast/break-exp.cc, + * src/ast/break-exp.hh, + * src/ast/dec.cc, + * src/ast/dec.hh, + * src/ast/decs.cc, + * src/ast/decs.hh, + * src/ast/escapable.cc, + * src/ast/escapable.hh, + * src/ast/exp.cc, + * src/ast/exp.hh, + * src/ast/int-exp.cc, + * src/ast/int-exp.hh, + * src/ast/metavar-exp.cc, + * src/ast/metavar-exp.hh, + * src/ast/metavariable.cc, + * src/ast/metavariable.hh, + * src/ast/method-dec.cc, + * src/ast/method-dec.hh, + * src/ast/name-ty.cc, + * src/ast/name-ty.hh, + * src/ast/nil-exp.cc, + * src/ast/nil-exp.hh, + * src/ast/object-exp.cc, + * src/ast/object-exp.hh, + * src/ast/simple-var.cc, + * src/ast/simple-var.hh, + * src/ast/string-exp.cc, + * src/ast/string-exp.hh, + * src/ast/ty.cc, + * src/ast/ty.hh, + * src/ast/typable.cc, + * src/ast/typable.hh, + * src/ast/type-constructor.cc, + * src/ast/type-constructor.hh, + * src/ast/var.cc, + * src/ast/var.hh, + * src/astclone/cloner.cc, + * src/astclone/cloner.hh, + * src/callgraph/call-graph-visitor.cc, + * src/callgraph/call-graph-visitor.hh, + * src/callgraph/parent-graph-visitor.cc, + * src/callgraph/parent-graph-visitor.hh, + * src/callgraph/static-link-visitor.cc, + * src/callgraph/static-link-visitor.hh, + * src/desugar/bounds-checking-visitor.cc, + * src/desugar/bounds-checking-visitor.hh, + * src/desugar/desugar-visitor.cc, + * src/desugar/desugar-visitor.hh, + * src/frame/access.cc, + * src/frame/access.hh, + * src/liveness/interference-graph.cc, + * src/liveness/interference-graph.hh, + * src/llvmtranslate/llvm-type-visitor.cc, + * src/llvmtranslate/llvm-type-visitor.hh, + * src/object/desugar-visitor.cc, + * src/object/desugar-visitor.hh, + * src/overload/type-checker.cc, + * src/overload/type-checker.hh, + * src/parse/tweast.cc, + * src/parse/tweast.hh, + * src/target/assembly.cc, + * src/target/assembly.hh, + * src/target/codegen.cc, + * src/target/codegen.hh, + * src/target/cpu.cc, + * src/target/cpu.hh, + * src/target/ia32/target.cc, + * src/target/ia32/target.hh, + * src/target/target.cc, + * src/target/target.hh, + * src/transform/concrete-syntax-rewriter.cc, + * src/transform/concrete-syntax-rewriter.hh, + * src/transform/rewriter.cc, + * src/transform/rewriter.hh, + * src/transform/test-combinators.cc, + * src/tree/fragment.cc, + * src/tree/fragment.hh, + * src/type/attribute.cc, + * src/type/attribute.hh, + * src/type/field.cc, + * src/type/field.hh, + * src/type/method.cc, + * src/type/method.hh, + * src/type/type.cc, + * src/type/type.hh: Here. + +2016-12-13 Guillaume Marques + + style: Akim hates typedef + + * lib/misc/error.hh, + * src/ast/dumper.hh, + * src/ast/dumper.hxx, + * src/parse/stack.hh: Here. + +2016-12-13 Guillaume Marques + + style: mips: no virtual with override + + * src/target/mips/cpu.cc: Here. + +2016-12-13 Guillaume Marques + + style: ast: use explicit override + + * src/ast/dumper.hh, + * src/ast/pretty-printer.hh: Here. + +2016-12-13 Guillaume Marques + + assem: comment: rename `print` as `dump` + + This is an oversight from the commit b5087e6. + Now that the member function's name matches its base class', + replace `virtual` with `override`. + + * src/assem/comment.hh, + * src/assem/comment.hxx: Here. + +2016-12-13 Guillaume Marques + + style: no virtual with override + + * src/type/record.hh: Here. + +2016-12-13 Guillaume Marques + + style: prefer nullptr to NULL + + * src/object/desugar-visitor.hh: Here. + +2016-12-13 Guillaume Marques + + style: use helper type for type_traits + + * lib/misc/scoped-map.hh, + * lib/misc/scoped-map.hxx: Here. + +2016-12-13 Guillaume Marques + + regalloc: fix typos + + * src/regalloc/color.hh: Here. + +2016-12-13 Guillaume Marques + + ast: fix typos + + * src/ast/default-visitor.hh: Here. + +2016-12-13 Guillaume Marques + + misc: fix typos + + * lib/misc/unique.hxx: Here. + +2016-12-13 Sébastien Piat + + type: do not rely on type evaluation for sound + + FIXME: Test case. + + * src/type/named.cc: Here. + +2016-12-13 Pierre-Louis Dagues + + pruner: prune recursive functions and functions whose call was pruned + + FIXME: Test case. + + Former pruner did not prune non-called recursive functions or function called + only in a pruned function. To prune these functions, a counter on the calls + made on a function keeps track of wether the function needs to be pruned or + not. A map associating the calls made in a function body is used to decrement + the counter, and pruning the associated function if necessary. + + * src/inlining/pruner.cc, + * src/inlining/pruner.hh: Keep track of function calls to prune if necessary. + * src/inlining/tasks.hh: Add dependency on rename to compare symbols. + +2016-12-13 Francis Visoiu Mistrih + + llvm: fix compatibility issues with LLVM 3.9 + + * src/llvmtranslate/tasks.cc: https://reviews.llvm.org/rL272978. The + patch adds an extra argument to the `run` function, which is useless for us. + + Compatibility has been preserved for older versions. + + Keep in mind that `llc` 3.8 is unable to compile `llvm ir` 3.9, since + the textual form is not retro-compatible. + +2016-12-13 Sebastien Piat + + canon: use iterator next + + * src/canon/canon.cc: Here. + +2016-12-13 Guillaume Marques + + style: add namespace indication at the end of scope + + * lib/misc/algorithm.hh: Here. + * lib/misc/algorithm.hxx: Here. + * lib/misc/deref.cc: Here. + * lib/misc/deref.hh: Here. + * lib/misc/deref.hxx: Here. + * lib/misc/endomap.hh: Here. + * lib/misc/endomap.hxx: Here. + * lib/misc/escape.cc: Here. + * lib/misc/escape.hh: Here. + * lib/misc/escape.hxx: Here. + * lib/misc/file-library.cc: Here. + * lib/misc/file-library.hh: Here. + * lib/misc/file-library.hxx: Here. + * lib/misc/indent.cc: Here. + * lib/misc/indent.hh: Here. + * lib/misc/libmisc.hh: Here. + * lib/misc/list.hh: Here. + * lib/misc/map.hh: Here. + * lib/misc/map.hxx: Here. + * lib/misc/pair.hh: Here. + * lib/misc/pair.hxx: Here. + * lib/misc/ref.hh: Here. + * lib/misc/ref.hxx: Here. + * lib/misc/separator.hh: Here. + * lib/misc/separator.hxx: Here. + * lib/misc/unique.hh: Here. + * lib/misc/unique.hxx: Here. + * lib/misc/xalloc.hh: Here. + * lib/misc/xalloc.hxx: Here. + * src/canon/basic-block.cc: Here. + * src/canon/basic-block.hh: Here. + * src/canon/basic-block.hxx: Here. + * src/canon/canon.cc: Here. + * src/canon/canon.hh: Here. + * src/canon/traces.cc: Here. + * src/canon/traces.hh: Here. + * src/escapes/escapes-check-visitor.cc: Here. + * src/escapes/escapes-check-visitor.hh: Here. + * src/escapes/escapes-visitor.cc: Here. + * src/escapes/escapes-visitor.hh: Here. + * src/frame/access.cc: Here. + * src/frame/access.hh: Here. + * src/frame/access.hxx: Here. + * src/frame/fwd.hh: Here. + * src/frame/libframe.hh: Here. + * src/llvmtranslate/fwd.hh: Here. + * src/llvmtranslate/libllvmtranslate.cc: Here. + * src/llvmtranslate/libllvmtranslate.hh: Here. + * src/llvmtranslate/tasks.cc: Here. + * src/llvmtranslate/tasks.hh: Here. + * src/llvmtranslate/translator.cc: Here. + * src/llvmtranslate/translator.hh: Here. + * src/llvmtranslate/translator.hxx: Here. + * src/overload/type-checker.hh: Here. + * src/parse/fwd.hh: Here. + * src/parse/libparse.hh: Here. + * src/parse/metavar-map.hh: Here. + * src/parse/tiger-parser.cc: Here. + * src/parse/tweast.cc: Here. + * src/parse/tweast.hh: Here. + * src/parse/tweast.hxx: Here. + * src/target/arm/fwd.hh: Here. + * src/target/fwd.hh: Here. + * src/target/ia32/fwd.hh: Here. + * src/task/fwd.hh: Here. + * src/task/libtask.hh: Here. + * src/task/tasks.cc: Here. + * src/temp/fwd.hh: Here. + * src/temp/label.hh: Here. + * src/temp/libtemp.hh: Here. + * src/temp/temp.hh: Here. + * src/transform/metavar-pool.cc: Here. + * src/transform/metavar-pool.hh: Here. + * src/transform/metavar-pool.hxx: Here. + * src/translate/access.cc: Here. + * src/translate/access.hxx: Here. + * src/translate/exp.cc: Here. + * src/translate/exp.hh: Here. + * src/translate/exp.hxx: Here. + * src/translate/fwd.hh: Here. + * src/translate/level.cc: Here. + * src/translate/level.hh: Here. + * src/translate/level.hxx: Here. + * src/translate/libtranslate.cc: Here. + * src/translate/libtranslate.hh: Here. + * src/translate/tasks.cc: Here. + * src/translate/tasks.hh: Here. + * src/translate/translation.cc: Here. + * src/translate/translation.hh: Here. + * src/translate/translator.cc: Here. + * src/translate/translator.hh: Here. + * src/tree/binop.cc: Here. + * src/tree/binop.hh: Here. + * src/tree/binop.hxx: Here. + * src/tree/call.cc: Here. + * src/tree/call.hh: Here. + * src/tree/cjump.cc: Here. + * src/tree/cjump.hh: Here. + * src/tree/cjump.hxx: Here. + * src/tree/const.cc: Here. + * src/tree/const.hh: Here. + * src/tree/const.hxx: Here. + * src/tree/eseq.cc: Here. + * src/tree/eseq.hh: Here. + * src/tree/eseq.hxx: Here. + * src/tree/fragment.hxx: Here. + * src/tree/fwd.hh: Here. + * src/tree/iterator.hh: Here. + * src/tree/iterator.hxx: Here. + * src/tree/jump.cc: Here. + * src/tree/jump.hh: Here. + * src/tree/jump.hxx: Here. + * src/tree/label.cc: Here. + * src/tree/label.hh: Here. + * src/tree/label.hxx: Here. + * src/tree/libtree.cc: Here. + * src/tree/libtree.hh: Here. + * src/tree/mem.cc: Here. + * src/tree/mem.hh: Here. + * src/tree/mem.hxx: Here. + * src/tree/move.cc: Here. + * src/tree/move.hh: Here. + * src/tree/move.hxx: Here. + * src/tree/name.cc: Here. + * src/tree/name.hh: Here. + * src/tree/name.hxx: Here. + * src/tree/seq.cc: Here. + * src/tree/seq.hh: Here. + * src/tree/seq.hxx: Here. + * src/tree/stm.hh: Here. + * src/tree/sxp.cc: Here. + * src/tree/sxp.hh: Here. + * src/tree/sxp.hxx: Here. + * src/tree/temp.cc: Here. + * src/tree/temp.hh: Here. + * src/tree/temp.hxx: Here. + * src/tree/tree.cc: Here. + * src/tree/tree.hh: Here. + * src/tree/tree.hxx: Here. + * src/tree/trees.cc: Here. + * src/tree/trees.hh: Here. + * src/type/method.hxx: Here. + * src/type/type-checker.cc: Here. + * src/type/type-checker.hh: Here. + * src/type/type-checker.hxx: Here. + +2016-12-13 Guillaume Marques + + style: ast: no virtual with override + + * src/ast/dumper.hh: Here. + +2016-12-13 Guillaume Marques + + style: object: no virtual with override + + * src/object/type-checker.hh: Here. + +2016-12-13 Guillaume Marques + + regalloc: improve clarity of comments + + * src/regalloc/color.hh: Fix of some grammatical mistakes. + * src/regalloc/color.cc: Update the registers's pick order. + +2016-12-13 Guillaume Marques + + liveness: improve precision of comments for liveness + + * src/liveness/liveness.hh: Here. + +2016-12-13 Francis Visoiu Mistrih + + tc-l: typo: lambda shfting -> lambda lifting + + Thanks `moutou_s` for noticing this aberration. + + * src/llvmtranslate/translator.hh: Here. + +2016-12-13 Francis Visoiu Mistrih + + arm: fix streq runtime function + + Thanks to marque_o, we found a bug in the ARM backend. + + * src/target/arm/runtime.s: The `tc_streq` function didn't handle the + case of strings with equal lengths correctly. + * tests/good/streq-eq.-e.ia32.s, + * tests/good/streq-eq.-e.mips.s, + * tests/good/streq-eq.-e.u.mips.s, + * tests/good/streq-eq.err, + * tests/good/streq-eq.hir, + * tests/good/streq-eq.ia32.s, + * tests/good/streq-eq.lir, + * tests/good/streq-eq.mips.s, + * tests/good/streq-eq.out, + * tests/good/streq-eq.sta, + * tests/good/streq-eq.tig, + * tests/good/streq-eq.u.mips.s: Add testcase. + +2016-12-13 Francis Visoiu Mistrih + + canon: style: use more STL algorithms + + * src/canon/canon.cc: Use std::all_of instead of a raw loop. + +2016-12-13 Francis Visoiu Mistrih + + traces: use unique_ptr instead of manual memory management + + * traces.cc, + * traces.hh: Use std::unique_ptr instead of raw pointers. + This avoids some explicit deletes. + +2016-12-13 Francis Visoiu Mistrih + + llvm: remove useless return values + + * src/llvmtranslate/translator.cc: Remove return values when the + ast node is not returning anything. + +2016-12-13 Francis Visoiu Mistrih + + llvm: use llvm's dynamic cast for llvm types + + * src/llvmtranslate/translator.cc: LLVM's types don't support RTTI, so + `dynamic_cast` is not available either. They provide their own way of + casting pointers, through `cast<>, isa<>, dyn_cast<>`. Here, we're using + `cast<>`, since it asserts that the cast is correct, like a `dynamic_cast` + with a reference type would do. + +2016-12-13 Francis Visoiu Mistrih + + llvm: provide more explicit explanations about the translator + + * src/llvmtranslate/translator.cc: Here. + +2016-12-13 Francis Visoiu Mistrih + + style: use the correct case for Access classes + + * dev/ampersand_test.yml, + * doc/schema.xmi, + * src/frame/access.cc, + * src/frame/access.hh, + * src/frame/access.hxx, + * src/frame/frame.cc, + * src/frame/frame.hh, + * src/frame/fwd.hh, + * src/target/arm/arm-codegen.cc, + * src/target/arm/arm-codegen.hh, + * src/target/arm/epilogue.cc, + * src/target/arm/prologue.hh, + * src/target/ia32/epilogue.cc, + * src/target/ia32/gas-codegen.cc, + * src/target/ia32/gas-codegen.hh, + * src/target/ia32/prologue.hh, + * src/target/mips/epilogue.cc, + * src/target/mips/prologue.hh, + * src/target/mips/spim-codegen.cc, + * src/target/mips/spim-codegen.hh: Here. + +2016-12-13 Francis Visoiu Mistrih + + llvm: use native types with llvm::TypeBuilder + + * src/llvmtranslate/translator.cc: Here. + +2016-12-13 Francis Visoiu Mistrih + + llvm: don't include the runtime in the distribution + + * src/llvmtranslate/local.am: Remove runtime.ll from the dist list. + +2016-12-13 Francis Visoiu Mistrih + + identifier: use type alias in return type + + * src/temp/identifier.hxx: Allows students to use misc::variant easily. + +2016-12-13 Sebastien Piat + + tests: test for void operations + + * tests/type/void-op.tc-err: Here. + * tests/type/void-op.tc-sta: Here. + * tests/type/void-op.tig: Here. + +2016-11-18 Francis Visoiu Mistrih + + scoped-map: use `std::vector` instead of `std::list` + + * lib/misc/scoped-map.hh, + * lib/misc/scoped-map.hxx: Here. Push back instead of push front. Use + reverse iterators to walk the maps. + +2016-11-18 Sebastien Piat + + canon: fix typos + + * src/canon/traces.cc: Here. + +2016-11-18 Sebastien Piat + + object: binder: self in functions is not usable + + Override decs_visit in the object/binder. + + * src/object/binder.cc: Here. + * src/object/binder.hh: Here. + +2016-11-18 Sebastien Piat + + object: desugar: fix unclear comment + + * src/object/desugar-visitor.cc: Here. + +2016-11-18 Sebastien Piat + + inline: unsure return type is respected + + * src/inlining/inliner.cc: Here. + * tests/inline/function-returning-nil.tig: Here. + +2016-11-18 Sebastien Piat + + AUTHORS: add 2017 maintainers + + * AUTHORS.txt: Here. + +2016-11-18 Sebastien Piat + + type: fix typos + + * src/type/function.hh: Here. + * src/type/method.hh: Here. + * src/type/type.hh: Here. + +2016-11-18 Sebastien Piat + + translate: fix typos + + * src/translate/exp.hh: Here. + * src/translate/level.hh: Here. + * src/translate/translator.hh: Here. + +2016-11-18 Sebastien Piat + + temp: fix typos + + * src/temp/identifier.hh: Here. + +2016-11-18 Sebastien Piat + + task: fix typos + + * src/task/argument-task.hh: Here. + * src/task/disjunctive-task.hh: Here. + * src/task/task-register.cc: Here. + * src/task/task-register.hh: Here. + * src/task/task.hh: Here. + +2016-11-18 Sebastien Piat + + parse: fix typos and unclear statement + + * src/parse/libparse.hh: Here. + * src/parse/parsetiger.yy: Here. + * src/parse/tweast.hh: Here. + +2016-11-18 Sebastien Piat + + overload: fix typos + + * src/overload/binder.hh: Here. + * src/overload/over-table.hh: Here. + * src/overload/type-checker.hh: Here. + +2016-11-18 Sebastien Piat + + object: fix typos + + * src/object/binder.cc: Here. + * src/object/binder.hh: Here. + * src/object/desugar-visitor.cc: Here. + * src/object/desugar-visitor.hh: Here. + * src/object/type-checker.cc: Here. + * src/object/type-checker.hh: Here. + +2016-11-18 Sebastien Piat + + llvmtranslate: fix typos + + * src/llvmtranslate/escapes-collector.cc: Here. + * src/llvmtranslate/translator.cc: Here. + +2016-11-18 Sebastien Piat + + escapes: fix typos + + * src/escapes/escapes-visitor.hh: Here. + +2016-11-18 Sebastien Piat + + callgraph: fix typos + + * src/callgraph/fundec-graph.hh: Here. + +2016-11-18 Sebastien Piat + + bind: fix typos + + * src/bind/binder.hh: Here. + * src/bind/binder.hxx: Here. + * src/bind/renamer.hh: Here. + +2016-11-18 Sebastien Piat + + named: destructor could be default + + * src/type/named.cc: Here. + * src/type/named.hh: Here. + +2016-11-18 Sebastien Piat + + llvm: type: do not construct type when no record is set + + * src/llvmtranslate/llvm-type-visitor.cc: Here. + +2016-11-18 Sebastien Piat + + named: be more precise about having to code the destructor + + * src/type/named.cc: Here. + +2016-11-18 Sebastien Piat + + attribute: constructors should be inthe .cc file + + * src/type/attribute.cc: Here. + * src/type/attribute.hxx: Here. + +2016-11-18 Sebastien Piat + + field: constructors should be in the .cc file + + * src/type/field.cc: Here. + * src/type/field.hxx: Here. + +2016-11-18 Sebastien Piat + + function: constructors and destructors should be in the .cc file + + * src/type/function.cc: Here. + * src/type/function.hxx: Here. + +2016-11-18 Sebastien Piat + + named: constructors should be in the .cc file + + * src/type/named.cc: Here. + * src/type/named.hxx: Here. + +2016-11-18 Sébastien Piat + + llvm: escapes-collector: modify loop checks + + * src/llvmtranslate/escapes-collector.cc: Here. + +2016-11-18 Sébastien Piat + + object-desugar: fix type aliases and test it + + * src/object/desugar-visitor.cc: Here. + * src/object/type-checker.cc: Here. + * tests/object-good/object-type-alias.tig: Here. + * tests/object-good/type-aliases.tig: Here. + +2016-11-18 Sébastien Piat + + callgraph: add explanations on what is to be done + + * src/callgraph/call-graph-visitor.cc: Here. + +2016-11-18 Sébastien Piat + + function-dec: be more precise about escapes-get + + * src/ast/ast.yml: Here. + * src/ast/function-dec.hh: Here. + +2016-11-18 Sébastien Piat + + callgraph: comment: visitation is a rather inaccurate word + + Noted by guervi_t. + + * src/callgraph/call-graph-visitor.cc: Here. + +2016-11-18 Sébastien Piat + + overload: add fixme for combined options + + * src/desugar/tasks.cc: Here. + * src/desugar/tasks.hh: Here. + * src/inlining/tasks.cc: Here. + * src/inlining/tasks.hh: Here. + +2016-11-18 Francis Visoiu Mistrih + + overload: refactor and modernize tc-a + + * src/object/libobject.cc, + * src/object/libobject.hh, + * src/object/overfun-type-checker.cc, + * src/object/overfun-type-checker.hh, + * src/overload/liboverload.cc, + * src/overload/liboverload.hh, + * src/overload/tasks.cc, + * src/object/tasks.cc: Make use of `std::move` instead of pointers. + * src/overload/over-table.hh, + * src/overload/over-table.hxx, + * src/overload/binder.hh, + * src/overload/binder.cc: Use a `std::multimap` instead of a map of + lists. + * src/overload/type-checker.cc, + * src/overload/type-checker.hh: Propagate the modifications. + +2016-11-18 Sébastien Piat + + inlining: simplify + + The scoped map verification for function parameter names where + completely useless as a single `let` would create a new scope where + the parameter names would overwrite those of the previous scope. + + * src/inlining/inliner.cc: Here. + * src/inlining/inliner.hh: Here. + +2016-10-12 Etienne Renault + + configure: require boost 1.61 + + * configure.ac: here. + +2016-10-12 Etienne Renault + + configure: add useful warnings + + * configure.ac: here. + +2016-10-09 Francis Visoiu Mistrih + + for_each: use range-for loop + + * lib/misc/algorithm.hxx: Here. + +2016-10-07 Sébastien Piat + + object: desugar: move misleading comment + + * src/object/desugar-visitor.cc: Here. + +2016-10-07 Sébastien Piat + + type-checker: be clearer about function type_set + + * src/type/type-checker.hxx: Here. + +2016-10-07 Sébastien Piat + + type: update readme + + * src/type/README.txt: Here. + +2016-10-07 Sébastien Piat + + type-checker: record-exp: simplify + + * src/type/type-checker.cc: Here. + +2016-10-07 Remi Billon + + identifier: fix useless checkings + + * src/temp/identifier.hxx: Here. + +2016-10-07 Sebastien Piat + + AUTHORS: add 2018 maintainers + + * AUTHORS.txt: Here. + +2016-10-07 Sébastien Piat + + desugar: string: fix comment + + * src/desugar/test-string-cmp-desugar.cc: Here. + +2016-08-07 Akim Demaille + + style: bind: no virtual with override + +2016-08-07 Akim Demaille + + style: astclone: no virtual with override + +2016-08-07 Akim Demaille + + style: ast: no virtual with override + +2016-08-07 Akim Demaille + + style: type: no virtual with override + +2016-08-07 Akim Demaille + + style: ast: regen + +2016-08-07 Akim Demaille + + style: dev: no virtual with override + + * dev/ast-cloner-gen, dev/ast-default-visitor-gen, + * dev/ast-pretty-printer-gen, dev/transform-all-gen, + * dev/transform-proxy-visitors-gen: here. + +2016-08-07 Sebastien Piat + + tc-3: remove typ{able,econstructor} files until tc-4 + + The typable and typeconstructor files where given to students even before + the stage 4 and would make students think they had to code something in + it. + + * dev/stagize: Here. + +2016-08-07 Francis Visoiu Mistrih + + style: add a few missing 'override' + + * src/ast/dumper.hh, + * src/object/type-checker.hh, + * src/target/mips/cpu.cc: Here. + +2016-08-07 Francis Visoiu Mistrih + + style: ast: add missing pragma once + + * lib/misc/deref.cc, + * src/ast/any-decs.hh, + * src/ast/any-decs.hxx, + * src/ast/ast.hh, + * src/ast/ast.yml, + * src/ast/decs.hh, + * src/ast/decs.hxx, + * src/ast/default-visitor.hh, + * src/ast/default-visitor.hxx, + * src/ast/dumper.hh, + * src/ast/dumper.hxx, + * src/ast/escapable.hh, + * src/ast/function-dec.hh, + * src/ast/fwd.hh, + * src/ast/if-exp.hh, + * src/ast/let-exp.hh, + * src/ast/libast.hh, + * src/ast/location.hh, + * src/ast/non-object-visitor.hh, + * src/ast/non-object-visitor.hxx, + * src/ast/object-visitor.hh, + * src/ast/object-visitor.hxx, + * src/ast/pretty-printer.hh, + * src/ast/tasks.hh, + * src/ast/typable.hh, + * src/ast/type-constructor.hh, + * src/ast/type-constructor.hxx, + * src/ast/visitor.hh, + * src/ast/visitor.hxx, + * src/parse/libparse.hh, + * ti/fork.hh, + * ti/fork.hxx, + * ti/tiopts.hh, + * ti/tiopts.hxx: Add pragma once and remove spaces between `#` and + `includes`. + +2016-08-07 Sebastien Piat + + object: binder: be more precise about where self is defined + + * src/object/binder.cc: Here. + +2016-08-07 Sebastien Piat + + object: binder: fix binding in vardecs in classty + + Binding was not done in class attributes as the within_class_ty boolean + was not unset in the declaration. + + * src/object/binder.cc: Here. + * tests/object-good/bind-vardec-in-class.tig: Test it here, + * tests/object-good/bind-vardec-in-class.err: with this stderr, + * tests/object-good/bind-vardec-in-class.out: and this stdout, + * tests/object-good/bind-vardec-in-class.sta: and this output code. + +2016-08-01 Sebastien Piat + + bind: fix display of fixme in binder + + * src/bind/binder.cc: Here. + * src/bind/binder.hxx: Here. + +2016-06-24 Etienne Renault + + Version 1.53 for 2018-tc-9.0 + + * NEWS.txt, configure.ac: Here. + +2016-06-06 Etienne Renault + + Version 1.52 for 2018-tc-8.0 + + *NEWS.txt, configure.ac: Here. + +2016-05-30 Etienne Renault + + Version 1.51 for 2018-tc-7.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: Here. + +2016-05-28 Francis Visoiu Mistrih + + target: use {} instead of explicit calls to Ts and Ls + + * src/target/arm/arm-assembly.cc, + * src/target/ia32/gas-assembly.cc, + * src/target/mips/spim-assembly.cc: Here. + +2016-05-19 Etienne Renault + + Version 1.50 for 2018-tc-6.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: Here. + +2016-05-16 Francis Visoiu Mistrih + + llvm: don't use -isystem for STL headers + + * src/llvmtranslate/local.am: We were using `-isystem /usr/include` in + order to avoid warnings coming from LLVM's headers. It looks like this + is no longer allowed in `gcc-6.1.1`, since it includes the STL using the + same CPP flags. + We should probably find a better solution to hide LLVM's warnings. + More info here: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129 + +2016-05-16 Sebastien Piat + + tests: inline: unsure parameter types are respected + + * tests/inline/argument-nil.err: Here. + * tests/inline/argument-nil.out: Here. + * tests/inline/argument-nil.sta: Here. + * tests/inline/argument-nil.tig: Here. + +2016-05-16 Sebastien Piat + + tests: test for void operations + + * tests/type/void-op.tc-err: Here. + * tests/type/void-op.tc-sta: Here. + * tests/type/void-op.tig: Here. + +2016-05-13 Sebastien Piat + + tests: add mutual example from assignments + + * tests/good/mutuals.err: Here. + * tests/good/mutuals.hir: Here. + * tests/good/mutuals.out: Here. + * tests/good/mutuals.sta: Here. + * tests/good/mutuals.tig: Here. + +2016-05-13 Sebastien Piat + + type: check for invalid conditions in while and ifs + + * tests/type/invalid-cond-if.tig: Here. + * tests/type/invalid-cond-while.tig: Here. + +2016-05-09 Remi Billon + + type: class: update compatible_with + + Now, instead of browsing all the super classes of the `other` type, + we simply search the class `other` in our vector of subclasses. + + * src/type/class.cc: Here. + +2016-05-09 Sebastien Piat + + type-checker: this code is not given do not hide it + + * src/type/type-checker.cc: Here. + +2016-05-09 Sebastien Piat + + llvm: escape-collector: do not call default-visitor on simplevars + + * src/llvmtranslate/escapes-collector.cc: Here. + +2016-05-09 Sebastien Piat + + array: constructors should be in the .cc file + + * src/type/array.cc: Here. + * src/type/array.hxx: Here. + +2016-05-09 Sebastien Piat + + llvm: translator: do not hide code in already hidden block + + * src/llvmtranslate/translator.cc: Here. + +2016-05-09 Sebastien Piat + + tc-check: fix indentation + + * ../../tests/tc-check.in: Here. + +2016-05-09 Sébastien Piat + + tests: bound-check: tests for aliases + + * tests/bounds-check/test30.*: Here. + +2016-05-09 Sébastien Piat + + identifier: respect coding style and avoid double checking + + * src/temp/identifier.hxx: Here. + +2016-05-09 Sébastien Piat + + identifier: rely on misc::symbol constructor + + * src/temp/identifier.hxx: Here. + +2016-05-09 Sebastien Piat + + tests: type: check for actual soundness + + * tests/type/sound.tig: Here. + * tests/object-type/sound-object.tig: Here. + +2016-05-09 Sébastien Piat + + type-checker: if-exp: use variables and avoid multiple actuals + + * src/object/type-checker.cc: Here. + +2016-05-09 Sébastien Piat + + type: class: fix sound + + * src/type/class.cc: Here. + +2016-05-09 Sébastien Piat + + type-checker: class-ty: do not use pointer + + * src/object/type-checker.cc: Here. + +2016-05-09 Sébastien Piat + + type-checker: use created variables + + * src/type/type-checker.cc: Here. + +2016-05-09 Sébastien Piat + + type-checker: call-exp: simplify + + * src/type/type-checker.cc: Here. + +2016-05-09 Sébastien Piat + + type: if-exp: check for classes compared to nil + + ``` + let + class A {} + in + if (1) then + nil + else + new A + end + ``` + Should have type A. + + * src/type/type-checker.cc: Here. + +2016-05-09 Sébastien Piat + + type: function: simplify compatible_with + + * src/type/function.cc: Here. + +2016-05-04 Etienne Renault + + Version 1.49 for 2018-tc-5.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: Here. + +2016-05-03 Francis Visoiu Mistrih + + llvm: type-visitor: make a better usage of the TypeBuilder + + * src/llvmtranslate/llvm-type-visitor.cc: Use the TypeBuilder for + int/string/void, by allowing non-cross-compilable types. + +2016-05-03 Francis Visoiu Mistrih + + llvm: escapes: remove ambigous fixme + + * src/llvmtranslate/escapes-collector.cc: The member is already + initialized in the member declaration. It introduces an useless FIXME. + +2016-05-03 Francis Visoiu Mistrih + + llvm: use more move semantics + + * src/llvmtranslate/escapes-collector.cc, + * src/llvmtranslate/llvm-type-visitor.cc: Here. + +2016-05-03 Francis Visoiu Mistrih + + llvm: escapes are no longer needed + + Lambda shifting doesn't need the computation of escapings. It's done in + a different way, by walking the AST and gathering the escapes for every + function. By doing this, the escaping annotations are useless to TC-L. + + * src/llvmtranslate/escapes-collector.cc: Remove usage of escaping. + * src/llvmtranslate/tasks.hh: Remove dependency. + +2016-05-03 Francis Visoiu Mistrih + + llvm: remove usage of `getGlobalContext` + + Starting with LLVM 3.8.1, `getGlobalContext` is removed. We now manage + our own global context that lives with the module. + + * src/llvmtranslate/fwd.hh: Forward reference to LLVMContext. + * src/llvmtranslate/libllvmtranslate.cc, + * src/llvmtranslate/libllvmtranslate.hh, + * src/llvmtranslate/tasks.cc, + * src/llvmtranslate/tasks.hh: Create the context in llvm-compute then move + it around in the global state of the tasks. + * src/llvmtranslate/llvm-type-visitor.cc, + * src/llvmtranslate/llvm-type-visitor.hh: Store the context here as + well. + * src/llvmtranslate/translator.cc, + * src/llvmtranslate/translator.hh: Store a reference to the context, and + pass it around when creating types and basic blocks. + +2016-05-03 Francis Visoiu Mistrih + + llvm: move comments to stagize directives + + * src/llvmtranslate/translator.cc: Here. + +2016-05-02 Francis Visoiu Mistrih + + llvm: runtime: avoid copying the runtime code in `runtime_string` + + * src/llvmtranslate/libllvmtranslate.hh, + * src/llvmtranslate/local.am: Return a `const char*` instead of a + `std::string`. LLVM's `parseAssemblyString` takes a `llvm::StringRef` as + an argument for the string to be parsed. This means that we can actually + avoid a copy by passing a `const char*` to that function. Ideally, we + would need a `std::string_view`, but we have to wait for C++17 for that. + +2016-04-20 Pierre DE ABREU + + llvm: insert else and end block on creation for IfExp + + * Inserting else and end block directly when they are + created during IfExp nodes translation. It allows us to be + consistent with what is done for WhileExp node. + + * src/llvmtranslate/translator.cc: Here. + +2016-04-18 Etienne Renault + + Version 1.48 for 2018-tc-4.0 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: Here. + +2016-04-18 Sebastien Piat + + type: class: use vectors + + * src/type/class.hh: Here. + * src/type/class.hxx: Here. + +2016-04-18 Sebastien Piat + + tc-4: overfun-object: hide tasks + + * src/object/tasks.cc: Here. + +2016-04-18 Sebastien Piat + + object-desugar: fresh-id should be given + + * src/type/class.cc: Here. + +2016-04-18 Sebastien Piat + + type-checker: remove useless namespace specifier + + * src/type/type-checker.cc: Here. + +2016-04-18 Sebastien Piat + + type: record: use vector instead of list + + * src/type/record.hh: Here. + +2016-04-18 Sebastien Piat + + builtin-types: Nil is no longer a builtin-type + + * src/type/builtin-types.hh: Here. + +2016-04-17 Francis Visoiu Mistrih + + tc-4: use more auto declarations + + * src/type/pretty-printer.cc, + * src/type/type-checker.cc: Here. + +2016-04-16 Francis Visoiu Mistrih + + tc-4: remove nested stagize annotations + + * src/type/type-checker.cc, + * src/type/type-checker.hxx: FIXMEs are not displayed if there are + nested annotations. + +2016-04-16 Francis Visoiu Mistrih + + tc-4: refactor check_type function + + * type-checker.cc, + * type-checker.hh, + * type-checker.hxx: Use a template function instead of two similar + functions. + +2016-04-16 Francis Visoiu Mistrih + + tc-4: use more auto declarations + + * src/object/type-checker.cc, + * src/object/type-checker.hh, + * src/type/type-checker.cc: Here. + +2016-04-16 Francis Visoiu Mistrih + + tc-4: remove useless includes + + * src/type/builtin-types.cc: Remove leftovers from Nil. + +2016-04-16 Francis Visoiu Mistrih + + tc-4: add missing FIXME directive + + * src/object/type-checker.cc, + * src/type/attribute.hxx: The FIXME directive was not displayed, since + the wrong annotation was used. + +2016-04-15 Akim Demaille + + tests: try to understand why sometimes we are killed + + On occasion the BF shows some tests that fail with signal 9, which is + expected to be related to the timeout mechanism. However, there is no + trace in the logs from the timeout mechanism, although there should be + some. + + So something is wrong here. Try to make things more explicit to help + understanding the problem when it happens. + + Maybe we should find a means to limit the resources given to the child + process instead, including time. + + * tests/tc-check.in (run): Use higher-res clocks. + +2016-04-15 Akim Demaille + + tests: fix the testing of some prerequisites + + It's not always easy to install all the requirements on a given + machine (e.g., the ARM tool chain). So rather than dying when they + are missing, just warn about them. + + Also, stop checking for requirements that are not defined... + + * configure.ac: More prereqs. + * tests/tc-check.in: Use them. + +2016-04-14 Akim Demaille + + style: frame: no virtual with override + +2016-04-14 Akim Demaille + + style: translate: no virtual with override + +2016-04-14 Akim Demaille + + style: lib: no virtual with override + +2016-04-14 Akim Demaille + + style: overload: no virtual with override + +2016-04-14 Akim Demaille + + style: object: no virtual with override + +2016-04-14 Akim Demaille + + style: escapes: no virtual with override + +2016-04-14 Akim Demaille + + style: liveness: no virtual with override + +2016-04-14 Akim Demaille + + style: regalloc: no virtual with override + +2016-04-14 Akim Demaille + + style: desugar: no virtual with override + +2016-04-14 Akim Demaille + + style: callgraph: no virtual with override + +2016-04-14 Akim Demaille + + style: transform: no virtual with override + +2016-04-14 Akim Demaille + + style: llvmtranslate: no virtual with override + +2016-04-14 Akim Demaille + + style: assem: no virtual with override + +2016-04-14 Akim Demaille + + style: target: no virtual with override + +2016-04-14 Akim Demaille + + style: task: no virtual with override + +2016-04-14 Akim Demaille + + style: inlining: no virtual with override + +2016-04-14 Akim Demaille + + style: tree: no virtual with override + +2016-04-13 Akim Demaille + + type: minor clean up + + * src/type/named.hh: Don't add virtual to override. + * src/type/named.cc (indent): Remove dead code. + (sound): I _hate_ variable definitions without an initial value. + And `auto` is nice. + +2016-04-13 Akim Demaille + + build: LLVMCONFIG -> LLVM_CONFIG, and factor requirements + + * build-aux/m4/tc-prog.m4: Accept non-literal version requirements. + * configure.ac: Factor the version requirements. + (LLVMCONFIG): Rename as... + (LLVM_CONFIG): this. + Remove redundant comments. + * src/llvmtranslate/local.am: Adjust. + +2016-04-13 Akim Demaille + + build: point to pyyaml via pip + + * bootstrap: here. + +2016-04-11 Etienne Renault + + readme: update description + + * src/tree/README.txt: Here. + +2016-04-08 Etienne Renault + + Version 1.47 + + * .last-cl-gen, ChangeLog, NEWS.txt, configure.ac: Here. + +2016-04-04 Etienne Renault + + coverage: ignore runtime. + + * build-aux/bin/coverage: Here. + +2016-03-30 Etienne Renault + + tests: prefer user-defined macros + + * tests/tc-check.in: Here. + +2016-03-29 Etienne Renault + + Force clang-3.8 + + * configure.ac: Here. + +2016-03-29 Etienne Renault + + clang: do not redefine CLANG variable + + src/llvmtranslate/local.am: Here. + +2016-03-29 Etienne Renault + + llvm-config: prefer macro for portability + + * src/llvmtranslate/local.am: Here. + +2016-03-27 Francis Visoiu Mistrih + + llvm: include llvm headers as system headers + + * src/llvmtranslate/local.am: `llvm-config --cppflags` returns flags + like: `-I/usr/include`, which are the include paths for the LLVM + headers. Since LLVM doesn't use the exact compilation flags we do, some + warnings might fire for us, and we don't want the compilation output to + be dirty. Including them as system headers, using `-isystem` instead of + `-I` hides the warnings coming from LLVM's headers (except #warning + directives). + +2016-03-27 Francis Visoiu Mistrih + + llvm: require llvm 3.8 + + * configure.ac: Here. + +2016-03-27 Pierre-Louis Dagues + + llvm: remove explicit names from store instructions + + * src/llvmtranslate/translator.cc: Stores do not have a name in the IR. + The name passed as an argument was taken as boolean which added the volatile + attribute and removed possible optimisations. + +2016-03-27 Francis Visoiu Mistrih + + llvm: remove support for llvm 3.6 + + * ../configure.ac: Update `llc` and `llvm-config`'s version. + * ../src/llvmtranslate/translator.cc: Remove macros. + +2016-03-27 Francis Visoiu Mistrih + + llvm: runtime: document the runtime specialized for LLVM + + * src/llvmtranslate/tiger-runtime.c: Add doxygen directives for + builtins. + +2016-03-27 Francis Visoiu Mistrih + + llvm: add llvm checks to tc-check + + * tests/tc-check.in: Add llvm_check[_one] that calls the following: + `tc --llvm-runtime-display --llvm-display` to generate the LLVM IR, + `llc` to generate the assembly from the LLVM IR and `gcc` to link. + +2016-03-27 Francis Visoiu Mistrih + + llvm: add the llvmtranslate module + + * src/llvmtranslate/fwd.hh: llvm forward declarations. + * src/llvmtranslate/libllvmtranslate.cc, + * src/llvmtranslate/libllvmtranslate.hh: FrameBuilder, EscapeCollector + and the whole llvm translate pure interface. + * src/llvmtranslate/local.am: `runtime.cc` generation and llvm flags. + * src/llvmtranslate/tasks.cc, + * src/llvmtranslate/tasks.hh: `--llvm-compute`, `--llvm-display`, + `--llvm-runtime-display`. + * src/llvmtranslate/tiger-runtime.c: The LLVM-adapted tiger runtime. + * src/llvmtranslate/llvm-type-visitor.cc, + * src/llvmtranslate/llvm-type-visitor.hh: The type translator. + * src/llvmtranslate/translator.cc, + * src/llvmtranslate/translator.hh, + * src/llvmtranslate/translator.hxx: The translator visitor. + * src/local.am: Include `llvmtranslate/local.am` + +2016-03-25 Francis Visoiu Mistrih + + llvm: add dependencies to the build system + + * configure.ac: Add Clang, llc and llvm-config, + * dev/stagize, + * dev/studentize_tc.conf: Add the llvmtranslate module. + +2016-03-25 Francis Visoiu Mistrih + + type: replace the `dump` method with a type visitor + + * src/type/README.txt, + * src/type/array.cc, + * src/type/array.hh, + * src/type/attribute.cc, + * src/type/attribute.hh, + * src/type/attribute.hxx, + * src/type/builtin-types.cc, + * src/type/builtin-types.hh, + * src/type/class.cc, + * src/type/class.hh, + * src/type/field.cc, + * src/type/field.hh, + * src/type/field.hxx, + * src/type/function.cc, + * src/type/function.hh, + * src/type/named.cc, + * src/type/named.hh, + * src/type/nil.cc, + * src/type/nil.hh, + * src/type/record.cc, + * src/type/record.hh, + * src/type/type.hh, + * src/type/type.hxx: Remove dump. + * src/type/pretty-printer.cc, + * src/type/pretty-printer.hh: The type visitor that prints the nodes. + * src/type/type-checker.cc, + * src/type/type-checker.hxx: Include the PrettyPrinter. + * src/type/local.am: Add pretty-printer.cc/hh. + +2016-03-25 Francis Visoiu Mistrih + + type: add a `record_type_` to the `Nil` type + + Sometimes, visitors need to know the real type the `Nil` type is + actually representing (like the LLVM translator, since it needs to have + typed null pointers). + In order to do this, the type-checker has been updated to check for nil + types wherever they can appear, and set the expected `type::Record` as a + `record_type_` of a `type::Nil`. This implies that `type::Nil` is not a + sigleton anymore. + + * src/ast/ast.yml: Add TypeConstructor to `NilExp`. + * src/ast/nil-exp.cc, + * src/ast/nil-exp.hh, + * src/ast/README-student.txt, + * src/ast/README.txt, + * src/ast/ast.gv: Regen. + * src/type/test-type.cc, + * src/object/desugar-visitor.cc, + * src/type/type-checker.hxx + * src/overload/type-checker.cc: Remove usage of `Nil::instance()`. + * src/type/builtin-types.cc, + * src/type/builtin-types.hh: Remove the Nil singleton. + * src/type/nil.cc, + * src/type/nil.hh: Add the Nil type. + * src/type/local.am: Add nil.cc and nil.hh. + * src/type/types.hh, + * src/type/record.cc: Include nil.hh. + * src/type/type-checker.cc: Add the `record_type_` binding. + +2016-03-25 Francis Visoiu Mistrih + + type: add a visitor on `type::Type`s + + * src/type/visitor.hh, + * src/type/visitor.hxx: The generic `type::Type` visitor. + * src/type/default-visitor.hh, + * src/type/default-visitor.hxx: The default `type::Type` visitor. + * src/type/array.cc, + * src/type/array.hh, + * src/type/builtin-types.cc, + * src/type/builtin-types.hh, + * src/type/class.cc, + * src/type/class.hh, + * src/type/function.cc, + * src/type/function.hh, + * src/type/method.cc, + * src/type/method.hh, + * src/type/named.cc, + * src/type/named.hh, + * src/type/record.cc, + * src/type/record.hh, + * src/type/type.hh: Add the accept methods. + * src/type/fwd.hh: Add forward declarations to the visitors. + * src/type/local.am: Add the visitor files. + * src/type/README.txt: Update documentation. + +2016-03-25 Sébastien Piat + + tests: arm: add arm dependencies to required programs + + * tests/tc-check.in: Here. + +2016-03-25 Sébastien Piat + + tests: arm: use correct cross compiler and library + + * tests/tc-check.in: Here. + +2016-03-07 Etienne Renault + + Version 1.46, for 2018-tc-3.0 + + * NEWS.txt, configure.ac: Here. + +2016-03-07 Sebastien Piat + + scoped-map: fixmes displayed at tc-3, remove scoped-map before + + * dev/stagize: Remove them here. + * lib/misc/local.am: Here. + * lib/misc/scoped-map.hh: Here. + * lib/misc/scoped-map.hxx: Here. + * lib/misc/test-scoped.cc: Here. + +2016-03-07 Etienne Renault + + Version 1.45, for 2018-tc-2.0 + + * .last-cl-gen, ChangeLog, + * NEWS.txt, configure.ac: Here. + + NEWS.txt, Makefile.am, configure.ac: here. + +2016-03-07 Etienne Renault + + dev/install-generic: ask for local install + + * dev/install-generic: Here. + +2016-03-07 Etienne Renault + + Update URL for new versions + + * dev/install-bison, + * dev/install-havm, + * dev/install-monoburg, + * dev/install-nolimips: Here. + +2016-03-07 Etienne Renault + + make check: use unique directories in /tmp + + Multiple runs of make check can overlap and share the + same directory. This is obviously not something we want + (especilly from the buildfarm point of view). + + * tests/tc-check.in: here. + +2016-02-12 Etienne Renault + + Update havm and monoburg versions + + * configure.ac: here. + +2016-02-12 Sebastien Piat + + tc-1: give parse_input + + * src/parse/tiger-parser.cc: Here. + +2016-02-11 Sebastien Piat + + tc-1: test-symbol does not require scoped map + + Fix make check for tc-base-1. + + * lib/misc/test-symbol.cc: Here. + +2016-02-10 Sebastien Piat + + overfun-object: add FIXMEs and remove files until tc-4 + + * dev/stagize: Remove files here. + * src/object/overfun-binder.cc: FIXMEs here, + * src/object/overfun-binder.hh: here + * src/object/overfun-type-checker.cc: here, + * src/object/overfun-type-checker.hh: here. + +2016-02-10 Sebastien Piat + + tc-2: remove useless FIXMEs + + escapable, typable and type-constructor should not be added until + tc-3. + + * dev/stagize: Here. + +2016-02-10 Sebastien Piat + + default-visitor: fix fixme in callexp and functiondec + + * src/ast/default-visitor.hxx: Here. + +2016-02-10 Sebastien Piat + + parse: object parsing should be possible since tc-1 + + * dev/stagize: Here. + +2016-02-10 Sebastien Piat + + tc-1: hide fixme of other stages + + * lib/misc/graph.hh: Here. + * lib/misc/graph.hxx: Here. + * lib/misc/scoped-map.hh: Here. + * lib/misc/scoped-map.hxx: Here. + * src/parse/tasks.cc: Here. + +2016-02-05 Etienne Renault + + Version 1.44, for 2018-tc-1.0 + + * NEWS.txt, Makefile.am, configure.ac: here. + +2016-01-25 Sebastien Piat + + tests: overfun-object: fix tc-err files + + * tests/overfun-object-bind/*.tc-err: Here. + * tests/overfun-object-type/*.tc-err: Here. + +2016-01-25 Sebastien Piat + + tests: add generated .hir and .hpr files + + * tests/bounds-check/*.hir: Here. + * tests/bounds-check/*.hpr: Here. + * tests/object-good/*.hir: Here. + * tests/object-good/*.hpr: Here. + * tests/overfun-object-good/*.hir: Here. + * tests/overfun-object-good/*.hpr: Here. + +2016-01-25 Francis Visoiu Mistrih + + build: update the C++ standard to C++14 + + * tests/tc-check.in, + * configure.ac: Update the flags and the compiler requirements. + GCC supports C++14 starting with gcc 5.0 + Clang supports C++14 starting with clang 3.4 + +2016-01-25 Sebastien Piat + + scan: add address at end of id to avoid ice with object desugar + + WIP: We should probably find a better way of solving this. + + `let type A /* 0x42 */ = int in end` + would be renamed as + `let type A /* 0x42 */_17 = int in end` + hence would fail if parsed again like it is done in the object desugar. + The first line now corresponds to: + `let type A__0x42 = int in end` + + * src/parse/scantiger.ll: Here. + * tests/good/address.*: Test it. + +2016-01-15 Sebastien Piat + + bind: only display class member binding after type checking + + Do not display class member binding when the type checker wasn't passed + before to avoid errors when type checking a file which only went through + the binder. + + * src/ast/pretty-printer.cc: Here. + * src/ast/pretty-printer.hh: Here. + +2016-01-15 Sebastien Piat + + scoped-map: avoid return 0 for pointers with enable if + + If the get method fails to find the element, it has 2 different + behaviors depending on whether the element is a pointer or not. + If it's a pointer the function returns a nullptr, otherwise it + raises an error. + Dispatch these errors in function defined with enable if to + avoid having to return 0 to fit the type of the function. + + * lib/misc/scoped-map.hh: Here. + * lib/misc/scoped-map.hxx: Here. + +2016-01-03 Sebastien Piat + + overfun-object: add tests for incorrect binding/type-checking + + * tests/tc-check.in: Here. + * tests/overfun-object-bind/*: Binding. + * tests/overfun-object-type/*: Type checking. + +2016-01-03 Sébastien Piat + + overfun-object: add tests in overfun-object-good + + Change ARM test number to 115 to allowtest suite to pass with ARM + failing. + + * tests/tc-check.in: Add test category. + * Makefile.am: Adjust options for generated tests. + * tests/overfun-object-good/*.err: Here. + * tests/overfun-object-good/*.out: Here. + * tests/overfun-object-good/*.sta: Here. + * tests/overfun-object-good/*.tig: Here. + +2016-01-03 Sébastien Piat + + style: tests: stop using tabs + + * tests/tc-check.in: Here. + +2016-01-02 Axel Manuel + + tests: add tests for pruning of used functions in decs + + * tests/inline/use-in-chunk.*: Add tests and generated files. + +2016-01-02 Axel Manuel + + pruner: fix pruning of used functions + + * src/inlining/pruner.*: here + +2015-12-23 Sébastien Piat + + overfun-object: add desugar and renamer + + Add support for renaming program with overload and object. + Usable through new task 'overfun-object-rename'. + Add support for desugaring program with overload and object. + Usable through new task 'overfun-object-desugar'. + (Closes #71) + + * src/object/tasks.cc: Here. + * src/object/tasks.hh: Here. + +2015-12-23 Sébastien Piat + + overfun-object: add type checker + + Add support for type checking program with overload and object. + Usable through new task 'overfun-object-types-compute'. + + * src/object/overfun-type-checker.hh: Here, + * src/object/overfun-type-checker.cc: here. + * src/object/type-checker.hh: Virtual inheritence here, + * src/overload/type-checker.hh: and here. + * src/object/tasks.hh: Add to tasks here, + * src/object/tasks.cc: here. + * src/object/libobject.hh: Add to lib here, + * src/object/libobject.cc: here. + +2015-12-23 Sébastien Piat + + overfun-object: add binder + + Add support for binding program with overload and object. + Usable through new task 'overfun-object-bindings-compute'. + + * src/object/overfun-binder.hh: Here, + * src/object/overfun-binder.cc: here. + * src/object/binder.hh: Virtual inheritence here, + * src/overload/binder.hh: and here. + * src/object/tasks.hh: Add to tasks here, + * src/object/tasks.cc: here, + * src/object/libobject.hh: Add to lib here, + * src/object/libobject.cc: here. + +2015-12-23 Sébastien Piat + + overload: remove useless extern declaration + + * src/overload/tasks.hh: Here. + +2015-12-23 Sébastien Piat + + style: fix typo and blank spaces + + * build-aux/m4/boost.m4: Here. + * src/object/desugar-visitor.cc: Here. + +2015-12-14 Sébastien Piat + + codegen: add generated files + + We want to be able to detect differences in generated files easily. + Adding them to the repository will make sure of this. + + * src/target/arm/arm-codegen.cc: Here. + * src/target/arm/arm-codegen.hh: Here. + * src/target/ia32/gas-codegen.cc: Here. + * src/target/ia32/gas-codegen.hh: Here. + * src/target/mips/spim-codegen.cc: Here. + * src/target/mips/spim-codegen.hh: Here. + +2015-12-14 Sébastien Piat + + build: adjust to Flex 2.6 + + The new version of Flex made incompatible changes with the previous + version. Deal with it. + + * build-aux/m4/flex-version.m4 (FLEX_VERSION): Define the version of flex. + * configure.ac (config.h): Call FLEX_VERSION. + * lib/misc/flex-lexer.hh: Depend on the Flex version. + Add support for references. + +2015-12-14 Francis Visoiu Mistrih + + arm: add default case to `cjump_inst` + + * src/target/arm/arm-assembly.cc: Add a default case in order to supress + a compiler warning. + +2015-12-14 Francis Visoiu Mistrih + + type: add missing `virtual` and `override` + + * src/type/method.hh: Supress compiler warnings. + +2015-11-06 Sébastien Piat + + symbol: fix generated file call to name_get + + * dev/transform-matcher-gen: Here. + +2015-11-05 Sébastien Piat + + symbol: object_get -> get in unique and remove symbol equivalents + + * lib/misc/symbol.cc: Here. + * lib/misc/symbol.hh: Here. + * lib/misc/symbol.hxx: Here. + * lib/misc/test-symbol.cc: Here. + * lib/misc/unique.hh: Here. + * lib/misc/unique.hxx: Here. + * src/assem/fragment.cc: Here. + * src/desugar/bounds-checking-visitor.cc: Here. + * src/object/desugar-visitor.cc: Here. + * src/object/type-checker.cc: Here. + * src/parse/tiger-parser.cc: Here. + * src/transform/matcher.cc: Here. + * src/type/type-checker.cc: Here. + +2015-11-05 Sébastien Piat + + unique: remove virtual for non-virtual member functions + + * lib/misc/symbol.hh: Here. + * lib/misc/unique.hh: Fix typo here. + +2015-11-05 Sébastien Piat + + gcc-ice: comment on destructor file change avoiding ice + + The internal compiler error has been reported here : + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68220 + + * src/tree/fragment.cc: Here. + +2015-11-05 Sébastien Piat + + variant: remove bad get tests made useless by boost 1.58 + + * lib/misc/test-variant.cc: Here. + +2015-11-05 Sébastien Piat + + gcc-5: do not inline ProcFrag destructor causing gcc-5 to ice + + * src/tree/fragment.hxx: From here... + * src/tree/fragment.cc: to here. + +2015-11-03 Francis Visoiu Mistrih + + style: use `unique_ptr` instead of `auto_ptr` + + * src/target/arm/test-target.cc, + * src/target/ia32/test-target.cc, + * src/target/mips/test-target.cc: + `auto_ptr` is deprecated and really dangerous. C++11 brought + `unique_ptr` and move semantics to do the job right. + +2015-11-02 Francis Visoiu Mistrih + + style: use pragma once + + * src/ast/*.hh, + * src/ast/*.hxx: Regen. + * lib/misc/*.hh, + * lib/misc/*.hxx, + * src/*/*.hh, + * src/*/*.hxx, + * src/common.hxx, + * src/version.hxx: + Here. + * dev/ast-all-gen, + * dev/ast-cloner-gen, + * dev/ast-default-visitor-gen, + * dev/ast-fwd-gen, + * dev/ast-nodes-gen, + * dev/ast-pretty-printer-gen, + * dev/ast-visitor-gen, + * dev/reheader, + * dev/tools.py, + * dev/transform-all-gen, + * dev/transform-proxy-visitors-gen: + Update the scripts to generate pragma once. + +2015-11-02 Francis Visoiu Mistrih + + style: visitor: use type alias template in all the visitors + + * src/assem/visitor.hh, + * src/assem/visitor.hxx, + * src/ast/default-visitor.hh, + * src/ast/default-visitor.hxx, + * src/ast/non-object-visitor.hh, + * src/ast/non-object-visitor.hxx, + * src/ast/object-visitor.hh, + * src/ast/object-visitor.hxx, + * src/tree/visitor.hh, + * src/tree/visitor.hx: + * src/ast/visitor.hxx, + Here. + +2015-08-11 Akim Demaille + + build: add more "unreachable" annotations + + * lib/misc/contract.hh: Use pragma once. + Fix TitleCase for macro argument names. + (unreached): Rename as... + (unreachable): this. + + * src/assem/instr.cc, src/ast/non-object-visitor.hxx, + * src/bind/binder.cc, src/canon/traces.cc, + * src/desugar/desugar-visitor.cc, src/object/type-checker.cc, + * src/target/arm/tree.brg, src/target/ia32/tree.brg, + * src/target/mips/tree.brg, src/translate/exp.cc, + * src/translate/translation.cc, src/translate/translator.cc, + * src/tree/call.cc, src/tree/eseq.cc, src/tree/seq.cc, + * src/type/type-checker.cc: + Adjust. + + * src/target/ia32/gas-assembly.cc, src/target/mips/spim-assembly.cc: + Use unreachable to avoid GCC warnings about return type. + +2015-08-11 Akim Demaille + + style: use pragma once + + * src/temp/identifier.hh, src/temp/temp.hh: here. + +2015-08-11 Akim Demaille + + build: avoid warnings about override + + * src/ast/default-visitor.hh, + * dev/transform-proxy-visitors-gen, + * src/transform/proxy-visitors.hh, + * src/liveness/interference-graph.hh: here. + +2015-08-11 Akim Demaille + + build: fix compatibility with Boost 1.58 + + Currently it dies with a missing definition. + See https://groups.google.com/forum/#!topic/boost-devel-archive/EYlnhQKB-3M. + Reported by Pierre De Abreu. + + * src/target/mips/cpu.cc: Don't include boost/variant/get.hpp, + temp/temp.hh does it for us actually. + +2015-06-26 Etienne Renault + + Version 1.43, for 2017-tc-9.0 + + * NEWS.txt, configure.ac: here. + +2015-06-24 Axel Manuel + + tests: Add tests for IfExp with record or class + + * tests/object-good/branching-class.tig: here + * tests/object-good/function-returning-parent.tig: here + * tests/object-type/calling-son-method.tig: here + * tests/object-type/function-returning-son.tig: here + * tests/type/different-record-nil.tig: here + +2015-06-24 Axel Manuel + + object: ifexp added in type-checker and desugar + + * src/object/type-checker.*: here + * src/object/desugar-visitor.*: here + * src/type/class.*: here + +2015-06-24 Axel Manuel + + type: protect invalid record equality + + * src/type/type-checker.cc: here + +2015-06-10 Pierre DE ABREU + + misc: change some tc8 and tc9 comments to fit with our implementation + + * Some comments were not that correct. For example, TC8 and liveness + graph comments state that we follow the algorithm 17.6 of Modern + Compiler Implementation in JAVA. But in our implementation, in + and out sets are switched. + + * In TC9, some comments may be confusing. For exemple in tempmap_get(), + it was said that we should use precolored and already colored node, but + we actually use coalesced and already colored nodes. It could be + confusing for students since we already have a precolored nodes set. + +2015-06-05 Etienne Renault + + Version 1.42, for 2017-tc-8.0 + + * NEWS.txt, configure.ac: here. + +2015-06-05 Axel Manuel + + tests: inline generated files Add generated files. + + * tests/inline/call.*: added. + * tests/inline/multi-chunks.*: added. + * tests/inline/mutually-recursive-functions.*: added. + * tests/inline/partial-unused.*: added. + * tests/inline/prune-chunk.*: added. + * tests/inline/recursive-function.*: added. + * tests/inline/scope-functions.*: added. + * tests/inline/shadowing-functions.*: added. + * tests/inline/unused-function.*: added. + +2015-06-05 Axel Manuel + + tests: inline + + Add a directory to grade TC-D only on specific files. + + * tests/Makefile.am: add category inline for gen-all-outputs. + * tests/tc-check.in: launch testing on inline directory. + * tests/good/call.tig: move to tests/inline/call.tig. + * tests/inline/multi-chunks.tig: added. + * tests/inline/mutually-recursive-functions.tig: added. + * tests/inline/partial-unused.tig: added. + * tests/inline/prune-chunk.tig: added. + * tests/inline/recursive-function.tig: added. + * tests/inline/scope-functions.tig: added. + * tests/inline/shadowing-functions.tig: added. + * tests/inline/unused-function.tig: added. + +2015-06-05 Axel Manuel + + pruning: fix pruning of unused functiondecs + + * src/inline/pruner.cc: here. + +2015-06-02 Pierre DE ABREU + + bounds-check: add tests for alias boxing/unboxing + + * These tests checks : alias as a 'return type', in an ArrayExp, + and both combined. + + * This patch includes a new test directory : bounds-check. We needed + a new directory since the new tests are neither `good' or + bad files. They compile, but fail at runtime. + + * Add section `nolimips_with_bounds_check' in `tc-check.in'. The + previous section (`nolimips_check') was not enough, since it was + used on `good', `escapes' and `runtime' directories. We had to + create a new category, as well as a new directory, since these + directories are sometimes used without the bounds checking option. + We could have used them for our tests, but the result should have + been something that does not fail at runtime. It could have worked + if we wanted only to check if the desugar was really working, + but without checking those tests really failed at runtime. + +2015-06-02 Pierre DE ABREU + + bounds-check: bypass aliases for boxes names + + * Uses of aliases broke this visitor. Boxes names + where computed from the alias name, not from the + actual type. + + * Now compute boxes name using the boxed array map + and the actual type. + +2015-06-02 Pierre DE ABREU + + object-desugar: add test checking desugar with alias + + * This new test checks that the object-desugar works with + an alias on a class, since last versions didn't work with + any aliases (function redefinition). + + * Add object-desugar tests in tc-check.in, in the desugar + category (105). I don't understand why there was nothing + checking it... + +2015-06-02 Pierre DE ABREU + + object: bypass alias during object-desugar. + + * Since every TypeDec which represent a class is desugared, + any alias leaded to a function redefinition. Now use a set + to know if we have to handle the class or if it's already + been done. + +2015-05-28 Etienne Renault + + Version 1.41, for 2017-tc-7.0 + + * NEWS.txt, configure.ac: here. + +2015-05-25 Matthieu Simon + + arm/call.brg: Replace a bad old comment + + ARM backend uses argument registers when making + a call instruction. + +2015-05-25 Matthieu Simon + + Hide Arm backend sources for student + + The hidden part are the same than the IA32 backend. + +2015-05-25 Etienne Renault + + Version 1.40, for 2017-tc-6.0 + + * NEWS.txt, configure.ac: here. + +2015-04-30 Etienne Renault + + Version 1.39, for 2017-tc-5.0 + + * NEWS.txt, configure.ac: here. + +2015-03-25 Akim Demaille + + style: visitor: use a type alias template to shorten type names + + I'd like to do that in the other visitors too, but maybe it will be a + problem for students in their own code. So to avoid conflicts, do it + only here for the time being. + + * dev/ast-visitor-gen: Introduce an alias template and use it. + * src/ast/visitor.hh: Regen. + +2015-03-22 Akim Demaille + + style: add a few missing 'override' + + * lib/misc/endomap.hh, src/type/named.hh: here. + +2015-03-22 Akim Demaille + + regalloc: fix marks for studistcheck T=9 + + * src/regalloc/color.cc: Here. + Fix style issues. + * src/regalloc/color.hh: Ditto. + +2015-03-20 Akim Demaille + + build: fix distcheck + + * Makefile.am (dist_TESTS): New. + * ti/local.am: Be sure to ship ti/fact.tig. + +2015-03-19 Etienne Renault + + Version 1.38, for 2017-tc-4.0 + + * NEWS.txt, configure.ac: here. + +2015-03-17 Pierre DE ABREU + + pretty-printer: print object attribute bindings + + Since attributes bindings were not printed we could not do: + + tc --object-types-compute -BA file.tig > tmp.tig + tc --object-types-compute tmp.tig. + + For every fieldvar, if typing has been done, we check if the current + var is an object. If so, we try to print the correct binding of the + attribute. + +2015-03-17 Akim Demaille + + regen + +2015-03-17 Akim Demaille + + python: compatibility with Python 3 + + Many changes: + - use print_function + - use ', '.join(args) + - use open() instead of file() + - use '...'.lower() + - be sure to sort the includes + - fix the comparison functions for sort() + +2015-02-26 Etienne Renault + + Version 1.37, for 2017-tc-3.0 + + * NEWS.txt, configure.ac: here. + +2015-02-17 Matthieu Simon + + mips: clean target files + + * src/target/mips/binop.brg, + * src/target/mips/call.brg, + * src/target/mips/cjump.brg, + * src/target/mips/exp.brg + * src/target/mips/move.brg, + * src/target/mips/move_load.brg, + * src/target/mips/move_store.brg, + * src/target/mips/stm.brg, + * src/target/mips/temp.brg: + Use `auto'. + + * src/target/mips/mem.brg: + Refractor Move construction. + + * src/target/mips/codegen.cc, + * src/target/mips/codegen.hh: Delete. + + * src/target/mips/cpu.cc, + * src/target/mips/spim-assembly.cc, + * src/target/mips/spim-assembly.hh: + Replace boost::lexical_cast + by std::to_string. + + * src/target/mips/prologue.hh, + * src/target/mips/epilogue.cc, + * src/target/mips/local.am, + * src/target/mips/target.cc, + * src/target/mips/target.hh, + * src/regalloc/test-regalloc.cc: + Add `Spim' prefix to Codegen class. + + * src/target/mips/spim-layout.cc: + Use '\n' instead of std::endl. + +2015-02-17 Matthieu Simon + + target: add list_initializer in Cpu class + + * src/target/arm/cpu.cc, + * src/target/cpu.cc, + * src/target/cpu.hh, + * src/target/ia32/cpu.cc, + * src/target/mips/cpu.cc: + + Allow to use `argument_reg', `caller_save_reg', + `calle_save_reg' and `special_reg' with list_initializer. + +2015-02-17 Matthieu Simon + + ia32: clean target files + + * src/target/ia32/binop.brg, + * src/target/ia32/call.brg, + * src/target/ia32/cjump.brg, + * src/target/ia32/exp.brg, + * src/target/ia32/stm.brg, + * src/target/ia32/move_load.brg, + * src/target/ia32/move_store.brg, + * src/target/ia32/temp.brg: + Use `auto'. + + * src/target/ia32/mem.brg: + Refractor construction of Move. + + * src/target/ia32/codegen.cc, + * src/target/ia32/codegen.hh: Delete. + + * src/target/ia32/prologue.hh, + * src/target/ia32/epilogue.cc, + * src/target/ia32/local.am, + * src/target/ia32/target.cc, + * src/target/ia32/target.hh: + Add `Gas' prefix to `Codegen' class. + + * src/target/ia32/gas-assembly.cc, + * src/target/ia32/gas-assembly.hh, + * src/target/ia32/gas-layout.cc: + Use '\n' instead of std::endl. + +2015-02-17 Matthieu Simon + + Add arm backend files + + * src/target/arm/arm-assembly.cc, + * src/target/arm/arm-assembly.hh, + * src/target/arm/arm-layout.cc, + * src/target/arm/arm-layout.hh, + * src/target/arm/binop.brg, + * src/target/arm/call.brg, + * src/target/arm/cjump.brg, + * src/target/arm/cpu.cc, + * src/target/arm/cpu.hh, + * src/target/arm/epilogue.cc, + * src/target/arm/exp.brg, + * src/target/arm/fwd.hh, + * src/target/arm/local.am, + * src/target/arm/mem.brg, + * src/target/arm/move.brg, + * src/target/arm/move_load.brg, + * src/target/arm/move_store.brg, + * src/target/arm/prologue.hh, + * src/target/arm/runtime.s, + * src/target/arm/stm.brg, + * src/target/arm/target.cc, + * src/target/arm/target.hh, + * src/target/arm/temp.brg, + * src/target/arm/test-target.cc, + * src/target/arm/tree.brg: New. + + * src/target/local.am: + Add 'arm' folder build rules. + + * src/target/tasks.cc, + * src/target/tasks.hh, + * src/target/tiger_target.i: + Update to provide "--target-arm" option. + + * tests/tc-check.in: + Add Arm backend's tests. + +2015-02-17 Akim Demaille + + tests: make the sigalarm more verbose + + On the BF we have some failures that are hard to interpret. Let's try + to see if something does not work properly in our sigalarm set up. + + * tests/tc-check.in: here. + +2015-02-12 Akim Demaille + + Version 1.35, for 2017-tc-2.0 + + * NEWS.txt, configure.ac: here. + +2015-02-12 Akim Demaille + + style: comment changes + + * src/ast/pretty-printer.cc: here. + +2015-02-10 Akim Demaille + + build: put stc into its own directory + + * src/stc.cc: Rename as... + * src/stc/stc.cc: this. + * src/stc/local.am: New. + * src/local.am, dev/stagize: Adjust. + +2015-02-10 Pierre DE ABREU + + misc: get rid of misc::basedir and misc::basename + + * Use boost::filesystem parent_path instead and + filename instead. + +2015-02-10 Akim Demaille + + tests: address warnings + + * lib/misc/contract.hh, lib/misc/contract.cc (__FailedCondition): + Always compile it. It's not big, and some components might style + require it even if globally NDEBUG is set. + * lib/misc/test-graph.cc, src/type/test-type.cc: here. + +2015-02-10 Akim Demaille + + bistromatig: improve tests + + * bistromatig/bistromatig-check: Be sure to propagate failures to the + exit status. + * bistromatig/local.am: Style change. + +2015-02-10 Akim Demaille + + build: students don't need to check for TC + + * configure.ac: here. + +2015-02-05 Akim Demaille + + tests: regen + + * tests/type/test22.tc-err: here. + +2015-02-05 Akim Demaille + + bind: don't fail to recognize bindings when 0 is displayed 0x0 + + Bind addresses should have two or more digits. That's in order to + avoid '0x0' being recognized as part of the name, because in that + case, the built-in type "int" will be rendered as "int /* 0x0 */", as + of course not recognized as such (and likewise for "string"). + + Funnily enough it was not a problem with listdc++, because it + prints the address 0 as "0", which is therefore not recognized by + the following definition of"bind_addr", and is just discarded as + plain comment. Libc++ on the other hand prints 0 as "0x0", which + triggered the aforementionned problem. + + The fix is simple: we want at least two xdigits. */ + + * src/parse/scantiger.ll: here. + While at it, use [:xdigit:]. + +2015-02-05 Léo Ercolanelli + + tasks: fix boolean switch callbacks + + Callbacks for options without arguments were call independently of + whether the option had been set or not. This is no longer the case, + callbacks only have effect is the option is specified on the command + line. + + * ti/tiopts.cc, src/task/task-register.cc: Here. + +2015-02-04 Akim Demaille + + parser: use yyo + + * src/parse/parsetiger.yy (%printer): here. + +2015-02-04 Akim Demaille + + 1.35a + + * configure.ac: here. + +2015-02-04 Etienne Renault + + Target new branch for 2017. + + * Makefile.am: here. + +2015-02-04 Akim Demaille + + Version 1.35, for 2017-tc-1.0 + + * configure.ac, src/bind/local.am, src/local.am: here. + +2015-02-04 Akim Demaille + + style: std::unary_function and std::binary_function are obsolete + + * dev/ast-visitor-gen, lib/misc/xalloc.hh, src/ast/visitor.hh, + * src/canon/canon.cc, src/canon/canon.hh, src/canon/traces.cc, + * src/canon/traces.hh, src/regalloc/regallocator.cc: + Don't use them. + Don't use std::bind2nd (or bind1st) at all. + Prefer std::bind, or better yet, a lambda. + +2015-02-04 Akim Demaille + + style: avoid std::endl + + git s '"\s*<<\s*std::endl' '\\n"' + +2015-02-04 Akim Demaille + + build: fix the relative path to the parser + + * src/parse/local.am: Here. + * src/parse/location.hh, src/parse/parsetiger.cc, + * src/parse/position.hh: Regen. + +2015-02-04 Léo Ercolanelli + + tasks: improve verbosity of command line errors + + The missing/invalid options are now explicitly mentioned in the error + message. + + * ti/tiopts.cc, src/task/task-register.cc: Here. + +2015-02-04 Léo Ercolanelli + + ti: fix memory leak + + Fix memory leak if early exiting while parsing `help', `version', or + `usage' from the command line. + + * ti/tiopts.cc, ti/ti.cc: Here. + +2015-02-04 Akim Demaille + + build: update boost.m4 + + * build-aux/m4/boost.m4: here. + +2015-02-04 Akim Demaille + + tc-check: longer timeout + + Go from 4s to 5s. We have occasional kill -9 on the BF. + Unfortunately, it is not clear if we fired it ourselves, as I don't + see the "sigalarm" message in the log. + + * tests/tc-check.in: here. + +2015-02-04 Akim Demaille + + dev: start updating the doc + + * dev/tc.texi: here. + +2015-02-04 Akim Demaille + + build: get rid of dev/Makefile + + * dev/Makefile.am: Replace by... + * dev/local.am: this. + +2015-02-04 Akim Demaille + + style: ti: fix indentation + + * ti/ti.cc: here. + +2015-02-04 Léo Ercolanelli + + tasks: fix memory leak + + Fix the memory leak which occurred when exiting early while parsing + `--help', `--usage' or `--version'.` + + * src/stc.cc, + * src/task/task-register.cc + * src/tc.cc: Here. + +2015-02-04 Léo Ercolanelli + + tasks: remove argp + + * lib/argp: Here. + + * .gitignore, Makefile.am, bootstrap, configure.ac, + * dev/make-git-tc-base, src/local.am: + Remove references to argp. + +2015-02-04 Léo Ercolanelli + + tasks: replace argp by boost.program_options + + Boost.program_options is supposed to be integrated as vanilla C++ in an + upcoming C++ standard, that's the opportunity to break the dependency + for argp, and removing the last bits of C. + + * src/task/task.cc, + * src/task/task.hxx, + * src/task/task.hh: + Remove the `arg' and `argname' members and their corresponding + accessors. Replace the `key' member by the `fullname' one. Easier to + use with boost. Remove the `check' virtual method, now handled by boost + itself. Let the compiler generate the destructor. The constructor no + longer register the task, to differentiate tasks with or without + arguments. + + * src/task/{boolean,int,string,...}-task.cc, + * src/task/{boolean,int,string,...}-task.hh: + Make those classes inherits from `task::ArgumentTask' or + `task::SimpleTask' whether they expect arguments or not. + + * src/task/simple-task.hh, + * src/task/simple-task.cc, + * src/task/argument-task.hh, + * src/task/argument-task.hxx: New. + + * src/task/task-register.hh: + Add an overloaded version of `register_task' to register `ArgumentTasks' + . The common code is factorized in the `register_task_' private method. + Replace the `argp' back-end by `boost.program_options'. + + * ti/tiopts.hh, + * ti/tiopts.hxx, + * ti/tiopts.cc: Replace the `argp' back-end by `boost.program_options'. + + * src/task/fwd.hh + Add a forward declaration of `ArgumentTask' and `SimpleTask' for + `TaskRegister' to use. + + * ti/Makefile.am, + * src/task/local.mk: + Add compilation and link flags for `boost.program_options'. + + * tests/tc-check.in: + Replace `--prelude=' by `--no-prelude'; the first is not supported + anymore. + + * configure.ac: + Add checks and substitutions for `boost.program_options'. + +2015-02-04 Akim Demaille + + build: get rid of dead targets + + * Makefile.am (doc, html): No need to bounce to doc/, where there is + anyway no Makefiles. + +2015-02-04 Akim Demaille + + build: get rid of bistromatig/Makefile + + * bistromatig/Makefile.am: Replace with... + * bistromatig/local.am: this. + +2015-02-04 Akim Demaille + + tests: fixes + + * Makefile.am: Be sure to run the check_PROGRAMS tests + * src/bind/test-bind.cc: Be sure to do something, even with NDEBUG. + +2015-02-04 Akim Demaille + + bf: enhance check step + + * buildfarm/check: Subsume the "distcheck" part. + The goal is to get rid of the buildfarm/distcheck, check should suffice. + It will also be used for studistcheck. + +2015-02-04 Akim Demaille + + studistcheck: do not try to run make check/distcleancheck + + Of course the tests will not work when there are gaps, there are no + reason to compile and run the tests. And distcleancheck is performed + by regular distcheck, we don't need it here. + + * Makefile.am: here. + +2015-02-03 Akim Demaille + + monoburg++: fix --help + + * build-aux/bin/monoburg++.in: Add -r. + +2015-02-03 Akim Demaille + + misc: clean up integration of boost::filesystem::path + + * src/parse/local.am: Move the lib from here... + * lib/misc/local.am: to where it belongs. + * src/parse/tiger-parser.hh (operator+): Remove: useless (and should not + be here anyway). + (open_files_): Store paths. + * src/parse/tiger-parser.cc: Adjust. + Use misc::path instead of the longer boost::filesystem::path. + * src/parse/libparse.cc: Likewise. + +2015-02-03 Pierre DE ABREU + + misc: replace hand-made path by boost::filesystem::path + + * lib/misc/path.cc, lib/misc/path.hh, lib/misc/path.hxx, + * lib/misc/test-path.cc: Remove. + Use boost::filesystem::path instead. + + * configure.ac: Look for it. + +2015-02-03 Akim Demaille + + astdumper: style fixes + + * src/ast/dumper.cc, src/ast/dumper.hh, src/ast/dumper.hxx: here. + +2015-02-03 Roland Levillain + + ast: fix dumping of RecordExp nodes. + + * src/ast/dumper.cc (ast::Dumper::operator() (const RecordExp&)): + Display attribute `type_name'. + +2015-02-03 Roland Levillain + + ast: control TikZ-style output in AST dumping using misc::xalloc. + + * src/ast/tasks.hh, src/ast/tasks.cc + (tikz-style): New task. + (ast-tikz-dump): Remove task. + * src/ast/libast.hh, src/ast/libast.cc + (ast::tikz_style): New misc::xalloc slot. + (ast::dump): Remove last argument (tikz_p). + * src/ast/dumper.hh, src/ast/dumper.hxx, src/ast/dumper.cc + (ast::Dumper::tikz_p_): Remove member. + (ast::Dumper::Dumper): Adjust. + (ast::Dumper::dump, ast::Dumper::node_): Use tikz_style (ostr_) + instead of tikz_p_. + Update documentation. + +2015-02-03 Roland Levillain + + ast: add a TikZ-style output to the AST dumper. + + * src/ast/dumper.hh, src/ast/dumper.hxx, src/ast/dumper.cc + (ast::Dumper::tikz_p_): New Boolean controlling the activation of + the TikZ-style output. + (ast::Dumper::Dumper): Adjust ctor. + (ast::Dumper::node_): New internal methods, printing nodes à la + TikZ if requested. + Use them... + (ast::Dumper::operator()): + ...in these methods. + (ast::Dumper::dump): Print nodes à la TikZ if requested. + * src/ast/libast.hh, src/ast/libast.cc (ast::dump): + Add an additional argument to control the activation of the + TikZ-style output. + * src/ast/tasks.hh, src/ast/tasks.cc (ast-tikz-dump): New task. + +2015-02-03 Roland Levillain + + ast: factor a bit the AST dumper. + + * src/ast/dumper.hh, src/ast/dumper.hxx + (ast::Dumper::dump (const T*)): New method. + Use it... + * src/ast/dumper.cc + (ast::Dumper::operator() (const FunctionDec&, const std::string&)) + (ast::Dumper::operator() (const VarDec& e)): + ...here, to factor the traversals of optional nodes. + +2015-02-03 Roland Levillain + + ast: add an AST dumper, printing a program using the abstract syntax. + + * src/ast/dumper.hh, src/ast/dumper.hxx, src/ast/dumper.cc: New. + * src/ast/libast.hh, src/ast/libast.cc (ast::dump): New function. + * src/ast/tasks.hh, src/ast/tasks.cc (ast-dump): New task. + * src/ast/local.mk (ast_libast_la_SOURCES): + Add src/ast/dumper.hh, src/ast/dumper.hxx and src/ast/dumper.cc. + * dev/stagize: Don't ship the AST dumper in student tarballs. + +2015-02-02 Akim Demaille + + news: update + +2015-02-02 Akim Demaille + + bistromatig: use some sugar for concat + + * bistromatig/bigint.tih: here. + +2015-02-02 Akim Demaille + + build: get rid of debian/Makefile + + * debian/Makefile.am: Replace with... + * debian/local.am: this. + * Makefile.am, configure.ac: Adjust. + +2015-02-02 Akim Demaille + + build: remove duplicate "recheck" + + * Makefile.am: This is handled by Automake. + +2015-02-02 Akim Demaille + + build: rename all the local.mk into local.am + + This is for consistency: these files are Automake files, not + Makefiles. + +2015-02-02 Akim Demaille + + build: get rid of ti/Makefile.am + + * ti/Makefile.am: Rename as... + * ti/local.am: this. + + * Makefile.am, configure.ac, lib/misc/local.mk, src/ast/local.mk, + * src/astclone/local.mk, src/bind/local.mk, src/desugar/local.mk, + * src/liveness/local.mk, src/object/local.mk, src/parse/local.mk, + * src/regalloc/local.mk, src/target/ia32/local.mk, + * src/target/mips/local.mk, src/temp/local.mk, src/transform/local.mk, + * src/type/local.mk, tcsh/python/Makefile.am: + Adjust. + In particular, use check_PROGRAMS for binaries tests, instead of + TESTS, so that we can also have TESTS contain things like *.tig + files. + +2015-02-02 Akim Demaille + + build: get rid of lib/Makefile.am + + * lib/Makefile.am: Replace with... + * lib/local.am: this. + * Makefile.am, configure.ac, lib/misc/local.mk: Adjust. + +2015-02-02 Akim Demaille + + build: put argp under the responsibility of the top-level Makefile + + * lib/Makefile.am (SUBDIRS): Move to... + * Makefile.am: here. + +2015-02-02 Akim Demaille + + build: get rid of doc/Makefile.am + + * doc/Makefile.am: Rename as... + * doc/local.am: this. + * Makefile.am, configure.ac: Adjust. + +2015-02-02 Akim Demaille + + build: turn src/Makefile.am into src/local.am + + I aim at having a single Makefile, which is far simpler to deal with. + + * src/Makefile.am: Rename as... + * src/local.am: this. + * Makefile.am: Adjust. + + * dev/stagize, + * dev/transform-all-gen, + * dev/transform-proxy-visitors-gen, + * src/assem/local.mk, + * src/ast/ast-nodes.mk, + * src/ast/ast.yml, + * src/ast/local.mk, + * src/astclone/local.mk, + * src/bind/local.mk, + * src/callgraph/local.mk, + * src/canon/local.mk, + * src/desugar/local.mk, + * src/escapes/local.mk, + * src/frame/local.mk, + * src/inlining/local.mk, + * src/liveness/local.mk, + * src/object/local.mk, + * src/overload/local.mk, + * src/parse/local.mk, + * src/regalloc/local.mk, + * src/target/ia32/local.mk, + * src/target/local.mk, + * src/target/mips/local.mk, + * src/task/local.mk, + * src/temp/local.mk, + * src/transform/local.mk, + * src/translate/local.mk, + * src/tree/local.mk, + * src/type/local.mk, + * tcsh/README.txt: + Adjust, i.e., mostly prepend src where needed. + +2015-02-02 Akim Demaille + + build: flex++: support --root + + * build-aux/bin/flex++.in: Implement support. + * src/parse/local.mk: Use it. + +2015-02-02 Etienne Renault + + studentize: make all TC-* compilable. + + * AUTHORS.txt, dev/ast-cloner-gen, src/ast/object-visitor.hxx, + * src/ast/pretty-printer.cc, src/ast/pretty-printer.hh, + * src/astclone/cloner.cc, src/bind/binder.cc, + * src/bind/renamer.hxx, src/callgraph/call-graph-visitor.cc, + * src/canon/canon.cc, + * src/desugar/desugar-visitor.cc, src/desugar/libdesugar.cc, + * src/inlining/pruner.cc, src/object/desugar-visitor.cc, + * src/object/renamer.cc, src/object/type-checker.cc, + * src/overload/binder.cc, src/temp/identifier.hxx, + * src/translate/translator.cc, src/type/attribute.hxx, + * src/type/class.cc: here. + +2015-01-31 Akim Demaille + + style: ast: s/{\s+}/{}/ + + * dev/ast-nodes-gen: here. + * src/ast: Regen. + +2015-01-31 Akim Demaille + + tests: regen + + * tests/object-good/simple-dispatch.-e.ia32.s, + * tests/object-good/simple-dispatch.ia32.s: here. + +2015-01-31 Akim Demaille + + dev: run 2to3 + + * dev/ast-all-gen, dev/ast-cloner-gen, dev/ast-default-visitor-gen, + * dev/ast-fwd-gen, dev/ast-graph-gen, dev/ast-ignores-gen, + * dev/ast-nodes-gen, dev/ast-nodes-mk-gen, dev/ast-pretty-printer-gen, + * dev/ast-readme-gen, dev/ast-visitor-gen, dev/ast.py, dev/tools.py: + Here. + And use print_function for Python 2. + +2015-01-31 Akim Demaille + + style: s/{\s+}/{} + + If it's empty, just write it empty. + +2015-01-31 Akim Demaille + + style: s/bound checking/bounds checking/ + + That's the proper name (e.g., see Wikipedia). + + That's trac ticket #106. + + * src/ast/ast.yml, src/ast/cast-exp.hh, src/ast/cast-var.hh, + * src/desugar/libdesugar.cc, src/desugar/libdesugar.hh, src/desugar/local.mk, + * src/desugar/tasks.cc, src/desugar/tasks.hh, src/parse/libparse.hh, + * tests/good/mini-morpho.tig, tests/tc-check.in: + here. + + * src/desugar/bound-checking-visitor.cc, + * src/desugar/bound-checking-visitor.hh, + * src/desugar/test-bound-checking.cc: + Rename as... + * src/desugar/bounds-checking-visitor.hh, + *src/desugar/bounds-checking-visitor.cc, + * src/desugar/test-bounds-checking.cc: + these. + +2015-01-30 Akim Demaille + + build: get rid of all the module libraries + + We build one library per module. This is a nice and elegant idea, but + it's also too expensive, both in maintenance and build time (and + linking _is_ slow). + + Let's get rid of this and build libtc directly. + + * src/assem/local.mk, src/ast/local.mk, src/astclone/local.mk, + * src/bind/local.mk, src/callgraph/local.mk, src/canon/local.mk, + * src/desugar/local.mk, src/escapes/local.mk, src/frame/local.mk, + * src/inlining/local.mk, src/liveness/local.mk, src/object/local.mk, + * src/overload/local.mk, src/parse/local.mk, src/regalloc/local.mk, + * src/target/ia32/local.mk, src/target/local.mk, + * src/target/mips/local.mk, src/task/local.mk, src/temp/local.mk, + * src/transform/local.mk, src/translate/local.mk, src/tree/local.mk, + * src/type/local.mk: + Massive rewrite to use libtc, and %D%/%C% where applicable. + + * src/Makefile.am: Simplify. + +2015-01-30 Akim Demaille + + ast: fix distcheck on TC-2 + + * src/ast/ast.yml: here. + +2015-01-30 Akim Demaille + + build: ti: link against libtc instead of individual components + + I don't know why we were not doing that before. The only difference + I see is the "version.cc" file. + + * ti/Makefile.am: here. + +2015-01-30 Akim Demaille + + students: ast: provide a better stub + + * src/ast/function-dec.hh: here. + +2015-01-30 Akim Demaille + + style: avoid useless inclusion of misc/xalloc.h + + * src/ast/ast.yml: Remove it from here. + * src/bind/tasks.cc, src/escapes/tasks.cc: Adjust. + +2015-01-30 Akim Demaille + + style: ast: no + + * src/ast/any-decs.hh, src/ast/decs.hh, src/ast/test-ast.cc: here. + +2015-01-30 Akim Demaille + + ast: get rid of function-decs.hh and the like + + It was nice to have them for consistency: every member of ast:: has + its own header to declare it. However, it became way too large, there + are too many files, for no serious gain. Let's simplify all this. + + These guys are already declared in ast/fwd.hh, that should suffice. + + Was trac ticket #52. + + * src/ast/function-decs.hh: Remove. + * src/ast/method-decs.hh: Remove. + * src/ast/rule-decs.hh: Remove. + * src/ast/type-decs.hh: Remove. + * src/ast/var-decs.hh: Remove. + + * src/ast/ast.yml, src/ast/local.mk, dev/ast-all-gen, src/ast/all.hh, + * src/parse/parsetiger.yy: + Adjust. + +2015-01-30 Akim Demaille + + style: s/endo_map/endomap/ + + There is no good reason for this underscore. Besides, the file name + was wrong. Fix trac issue #49. + + * lib/misc/endomap.hh, lib/misc/endomap.hxx: Do it. + Adjust dependencies. + +2015-01-29 Etienne Renault + + tests: move tests not related to TC-1. + + * object-syntax/new-in-non-object-program-with-unknown-type.tc-err, + * object-syntax/new-in-non-object-program-with-unknown-type.tc-sta, + * object-syntax/new-in-non-object-program-with-unknown-type.tig, + * object-syntax/object-constructs-in-non-object-program.tc-err, + * object-syntax/object-constructs-in-non-object-program.tc-sta, + * object-syntax/object-constructs-in-non-object-program.tig: here. + +2015-01-29 Akim Demaille + + bf: coverage: ignore Burg files + + * build-aux/bin/coverage: here. + * Makefile.am (clean-coverage): New, to please distcheck. + +2015-01-29 Akim Demaille + + parser: regen with Bison 3.0.4.19-fbaf + +2015-01-29 Etienne Renault + + ast: prefer std::vector to std::list + + * lib/misc/vector.hh: New file that simulates splice on vectors. + * lib/misc/local.mk: Add new file. + + * src/ast/any-decs.hh, src/ast/any-decs.hxx, src/ast/ast.yml, + * src/ast/decs-list.cc, src/ast/decs-list.hh, src/ast/fwd.hh, + * src/object/desugar-visitor.cc, src/parse/libparse.cc, + * src/target/ia32/test-target.cc, src/target/mips/test-target.cc, + * src/translate/translation.cc, src/translate/translation.hh, + * src/translate/translator.cc, src/translate/translator.hh, + * src/tree/call.cc, src/tree/call.hh: + Apply changes. + +2015-01-12 Akim Demaille + + tc-check: simplify: drop support for tarball checking + + The assistants now have their own tools to support tarball checking, + which is better suited to their needs (concurrency, log format, etc.). + Yet it is not nice for us, since it would require C# etc. + + So let's keep tc-check for the reference compiler, but simplify it by + throwing away all the junk for tarball-checking. + + In particular we can _finally_ stop running "make" etc. from tc-check. + We are back to a more regular make/make check model. + + * tests/tc-check.in: Cut pieces about tarball checking. + * tests/Makefile.am: Simplify the invocation. + +2015-01-12 Akim Demaille + + object: desugar: kill useless local variables + + * src/object/desugar-visitor.cc: There are too many variables in + there. For one-time uses, this is a nuisance. + +2015-01-12 Akim Demaille + + object: desugar: split a monster function + + * src/object/desugar-visitor.hh, src/object/desugar-visitor.cc + (pair_class_method, dispatch_list_type): Scope then in the class. + (handle_class): New, to simplify the monster operator() for TypeDecs. + This function, handle_class, is still too large, and should be simplified. + +2015-01-12 Akim Demaille + + object: desugar: style changes + + * src/object/desugar-visitor.cc: Formatting changes. + Prefer range-for loops. + Avoid verbose ctors. + +2015-01-12 Pierre DE ABREU + + object: desugar: add tests for methods dispatching + + These tests exercise the previous commit. + + * tests/object-good/method-dispatch-full.tig, + * tests/object-good/method-dispatch-using-function.tig, + * tests/object-good/method-dispatch.tig, + * tests/object-good/simple-dispatch.tig: + New files. + Add the other generated files too. + +2015-01-12 Pierre DE ABREU + + object: desugar: resolve method dispatching issues + + The old dispatching system had some issues. For example, if classes + B and C inherited from class A, and only classes A and B implemented + a method m, the dispatch was : + + If self.exact_type = exact_type(A) then + A.m() + else + B.m(). + + Note that an object C calling m actually calls B.m() instead of A.m(). + + Moreover, if a subclass of A (called D), declared in a later chunk, + had implemented m, a scope problem appeared since A's dispatch function + was trying to call D.m() which was declared in this later chunk. + + * src/object/desugar-visitor.hh, src/object/desugar-visitor.cc: + Change the order of the exact-type checking to ensure a correct + dispatching. + Add a sub_dispatch function for every chunk if a class overrides a + method, to avoid scope and chunk issues. + Each sub_dispatch function call the upper one if the exact-type hasn't + matched anything. We know which sub-dispatch function to call using a + map (Method -> Integer). + +2015-01-07 Akim Demaille + + bf: skip the parser + + Something is wrong about the stored location of the file, and genhtml + cannot find it. This should be addressed for real, instead of + ignoring the file. + + * build-aux/bin/coverage: here. + +2015-01-07 Akim Demaille + + tests: regen + + Regen the IA32 expect outputs. + +2015-01-07 Akim Demaille + + ia32: use a more conventional indentation for .globl + + * src/target/ia32/gas-layout.cc: here. + +2015-01-06 Akim Demaille + + style: move away from list, prefer vector + + This is only the first stab, we should get rid of list. + + * src/ast/ast.yml, src/ast/function-dec.hh: Use a vector. + It turns out it's even a vector of bools... + * src/frame/fwd.hh: Adjust. + +2015-01-06 Akim Demaille + + style: variant: address some stylistic issues + + * lib/misc/variant.hh, lib/misc/variant.hxx: Remove useless comment. + Use static_assert at the class level. + Use less cryptic and more traditional names for formal parameters. + Let the compiler generate the default ctor. + Fix Doxygenation. + +2015-01-06 Léo Ercolanelli + + lib: replace binary variant by generic variant + + Instead of using a binary wrapper around boost::variant, we now use a + generic wrapper which accepts an arbitrary number of types. + + The former implementation of generic variant was using + Boost.Preprocessor, which is really tricky to read, so it was provided + only "for information". Now that we assume C++11, the implementation + with variadic templates is much more natural, and shall replace both + the binary case, and the generic-via-macro case. + + * lib/misc/generic-variant.hh, lib/misc/generic-variant.hxx: Rename as... + * lib/misc/variant.hh, lib/misc/variant.hxx: these. + Use a variadic template implementation. + A failed compilation in case of non-default-constructible type in + `variant' constructor is now due to a `static_assert'. Easier than + looking through the code to find the comment explaining the failure. + + Adjust the test cases. + +2014-12-31 Akim Demaille + + stagize: rename variables for consistency + + * dev/stagize: kept_stages -> kept_categories. + +2014-12-31 Akim Demaille + + stagize: it does compile at stage=4, now fix linking issues + + * lib/misc/symbol.hxx, lib/misc/unique.hxx, lib/misc/variant.hxx, + * src/parse/tiger-parser.cc, src/type/record.cc, src/type/type.hxx: + Be consistent between hidden declarations and definitions. + +2014-12-31 Akim Demaille + + style: simplify ctor/dtor from TigerParser + + * src/parse/tiger-parser.cc, src/parse/tiger-parser.hh: + Why would the dtor be virtual? + Don't spend time on uninteresting members. + Give away the ctor. + +2014-12-31 Akim Demaille + + stagize: more consistency fixes + + Be consistent between hidden declarations and definitions: don't + hide one but not the other. + + * src/ast/ast.yml, src/bind/binder.hh, src/bind/binder.hxx, + * src/type/record.hh, src/type/type-checker.cc: here. + +2014-12-31 Akim Demaille + + style: studentize: use more consistent names + + What is called a stage in stagize is the *number* of a TC delivery (2 + for tc-2, 5 for tc-5, etc.). In studentize the "stage" is an + identifier for a given feature (ast, type, etc.). + + This is confusing. Let's rename studentize's "stage" as "category". + + * dev/studentize (--stage): Rename as... + (--keep): this. + s/stages/categories/g + s/stage/category/g + * dev/stagize: Adjust. + +2014-12-31 Akim Demaille + + stagize: enforce consistency in type + + * src/type/array.cc: Comment out definitions of routines whose declarations + are commented. + +2014-12-31 Akim Demaille + + stagize: --prune is always right + + * dev/stagize: Even if the stage suggests something different. + +2014-12-31 Akim Demaille + + stagize: propagate more changes for "functions" + + * dev/stagize, src/bind/libbind.cc, src/bind/libbind.hh, + * src/bind/local.mk, src/parse/parsetiger.yy, src/type/fwd.hh, + * src/type/type-checker.hh: here. + +2014-12-31 Akim Demaille + + stagize: handle "functions" in type and bind + + * dev/stagize, src/ast/pretty-printer.cc, src/bind/binder.cc, + * src/type/local.mk, src/type/type-checker.hh, src/type/types.hh: + Mark what's related to the "functions" limitation. + +2014-12-31 Akim Demaille + + stagize: default-visitor: don't use undefined members + + Currently the default visitor provide some kind of help: it lists + the names of the expected attributes. While this can provide some + help, it also means that the project cannot compile. + + * src/ast/default-visitor.hxx: Studentize the handling on hidden AST nodes. + +2014-12-31 Akim Demaille + + stagize: remove OO stuff when "functions" is pruned + + * dev/stagize, src/ast/default-visitor.hxx, src/ast/local.mk: here. + +2014-12-31 Akim Demaille + + ast: regen: studentize marks are now inside class definitions, not around + + * src/ast/array-exp.hh, src/ast/assign-exp.hh, src/ast/break-exp.hh, + * src/ast/call-exp.hh, src/ast/escapable.hh, src/ast/field-var.hh, + * src/ast/if-exp.hh, src/ast/let-exp.hh, src/ast/method-call-exp.hh, + * src/ast/object-exp.hh, src/ast/record-exp.hh, + * src/ast/record-ty.hh, src/ast/seq-exp.hh, src/ast/string-exp.hh, + * src/ast/typable.hh, src/ast/type-constructor.hh, src/ast/var.cc, + * src/ast/var.hh: here. + +2014-12-31 Akim Demaille + + stagize: don't hide class definitions, hide their content + + Still in order to help students bootstrap the project, let's + provide at least the definition of the classes, so that when, + for instance, we compile "IntExp", it does not fail because "Exp" + is not defined at all. + + It is debatable whether we should hide inheritance. I did not + in this patch, but that would make sense. + + * dev/ast-nodes-gen: Comment out the *content* of the class, not + its name. + +2014-12-31 Akim Demaille + + stagize: don't hide Var + + * src/ast/ast.yml: here. + Var is really a very small class, and because other classes derive + from it, the pruned project fails to compile. + It is not worth the trouble. + +2014-12-31 Akim Demaille + + stagize: "functions" marks for the default visitor + + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx: here, + consistently with ast.yml. + +2014-12-31 Akim Demaille + + stagize: get ready to get rid of function support + + * dev/studentize: Accept comments in the conf file. + * dev/studentize_tc.conf (functions): New. + * src/ast/ast.yml: Use it. + +2014-12-31 Akim Demaille + + style: clearer paragraphs + + * src/ast/ast.yml: Add empty lines to emphasize the different parts. + +2014-12-31 Akim Demaille + + stagize: accept --prune=tcsh + + * Makefile.am, configure.ac: Put tcsh support under stagize control. + * dev/studentize_tc.conf (tcsh): New module. + * dev/stagize: Handle it. + * bootstrap: Beware that tcsh/ might not exist. + +2014-12-31 Akim Demaille + + stagize: be ready for modules that are not below src/ + + * dev/stagize (module_directory): New. + Use it. + +2014-12-31 Akim Demaille + + bf: use distcheck instead of check to run distchecks + + The "distcheck" script restores the rights, which is needed because + Teamcity fails to remove the files when the rights are not sufficient. + + * buildfarm/package: Rename as... + * buildfarm/distcheck: this. + Use the command line arguments. + +2014-12-30 Akim Demaille + + style: I hate typedef + +2014-12-30 Akim Demaille + + regen: parser + +2014-12-30 Akim Demaille + + parser: provide a better starting point + + * src/parse/parsetiger.yy: Also give an initial definition of decs. + +2014-12-30 Akim Demaille + + bf: allow to use "check" for more types of targets + + * buildfarm/bootstrap: Handle the symlink issue here. + * buildfarm/check: Pass the command line arguments to make. + +2014-12-30 Akim Demaille + + build: add support for studistcheck + + "make studistcheck T=2" allows to check TC-2. + + * Makefile.am: here. + +2014-12-30 Akim Demaille + + stagize: leave a stub for AUTHORS.txt + + * dev/stagize: here. + Otherwise the initial tarball does not "make". + +2014-12-30 Akim Demaille + + style: avoid cascades of "if"s, group conditions + + * dev/ast-nodes-gen: here. + +2014-12-30 Akim Demaille + + regen + + * src/target/ia32/codegen.cc, src/target/ia32/codegen.hh, + * src/target/mips/codegen.cc, src/target/mips/codegen.hh: Regen. + +2014-12-30 Akim Demaille + + monoburg: simplify the wrapper + + I don't know exactly what was the point of monoburg++ initially, but + the result is that the #line are wrecked, which is really bad (can't + use Emacs' compilation-mode simply). Clearly monoburg++ was designed + after bison++, but the latter has a more complex role, as it does not + know what files are generated. Here, we know. + + * build-aux/bin/monoburg++.in: Stop messing around with the input and output + files. + * src/target/ia32/local.mk, src/target/mips/local.mk: Simplify accordingly. + +2014-12-30 Akim Demaille + + regen: parser + + * src/parse/parsetiger.cc, src/parse/parsetiger.hh: regen. + +2014-12-30 Akim Demaille + + style: parser: provide a better starting point + + * src/parse/parsetiger.yy: Provide the support for integers as + starting point. + +2014-12-30 Akim Demaille + + style: parser: group exp/dec sections + + * src/parse/parsetiger.yy: For some reason, the exp is split. + Move decs where it belongs (IMHO). + +2014-12-30 Akim Demaille + + parser: fix student marks + +2014-12-30 Akim Demaille + + style: studentize: untabify + + * dev/studentize: here. + +2014-12-30 Akim Demaille + + studentize: don't mess with my git repo!!! + + A stupid studentize call messed with my git repo... + + * dev/studentize: Better use of File::Find. + +2014-12-30 Akim Demaille + + bison++: remove stray debug trace + + * build-aux/bin/bison++.in: here. + +2014-12-30 Akim Demaille + + regen: parser + + * src/parse/location.hh, src/parse/parsetiger.hh, + * src/parse/position.hh: Neutralize root in CPP guards. + +2014-12-30 Akim Demaille + + bison++: neutralize the root in the cpp guards + + * build-aux/bin/bison++.in: here. + +2014-12-30 Akim Demaille + + regen: parser + + * src/parse/location.hh, src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, src/parse/position.hh: Regen. + +2014-12-30 Akim Demaille + + bison++: neutralize the #line dependencies + + Currently we have #lines that looks like: + + #line 352 "../../src/parse/parsetiger.yy" + + or even + + #line 352 "/Users/akim/src/lrde/tc/src/parse/parsetiger.yy" + + which is a pain in the neck, as it depends on how the project was + configured. Introduce -r/--root to specify the root for relative + paths. + + * build-aux/bin/bison++.in: Here. + Use it. + +2014-12-30 Akim Demaille + + parser: use %empty + + * src/parse/parsetiger.yy: here. + And consistently put it first. + +2014-12-30 Akim Demaille + + parser: provide a simpler initial parser/scanner + + * src/parse/scantiger.ll: Don't use useless static variables. + Sure, it is more costly at runtime to create it each time, but that's + not the point of tc. Besides, in that case, make it an instance + variable of the scanner object. + (int): Give part of it as an initial help for students. + Put Flex options first. + * src/parse/parsetiger.yy: Likewise: support "int". + +2014-12-30 Akim Demaille + + style: space issues in the parser + + * src/parse/parsetiger.yy: here. + +2014-12-30 Akim Demaille + + style: no useless typedef + + As a matter of fact/style, there should be no typedef at all, only + using. + + * src/tree/tree.hh: here. + +2014-12-29 Akim Demaille + + style: sort when the order is irrelevant + + * dev/studentize_tc.conf: here. + +2014-12-29 Akim Demaille + + build: let stagize support genuine options + + * dev/stagize (getopt): New. + * Makefile.am: Adjust to use it. + +2014-12-29 Akim Demaille + + build: catch more macro expansion failures + + * configure.ac: Catch Automake and Libtool macros. + +2014-12-29 Akim Demaille + + parser: enforce exception safety and code simplicity thanks to shared_ptr + + * src/parse/tiger-parser.cc: Fix space issues. + Use a shared_ptr to ensure that the istream is always closed and deleted. + +2014-12-29 Akim Demaille + + style: use default value and avoid longuish initializations in ctors + + * src/parse/tiger-parser.cc, src/parse/tiger-parser.hh: here. + +2014-12-29 Akim Demaille + + bf: add coverage support + + * build-aux/bin/coverage: New. + * Makefile.am, build-aux/local.mk: Adjust. + +2014-12-29 Akim Demaille + + bf: work around Teamcity not supporting synlimks on server-side checkout + + See https://youtrack.jetbrains.com/issue/TW-12684 + + * buildfarm/check: Restore the broken file. + +2014-12-29 Akim Demaille + + _main: stop checking for overloads + + See commit 21296aee933ba029918f47a8e1f4db0c5c0c603b. + + * tests/Makefile.am: here. + * TODO.txt: Update. + +2014-12-29 Léo Ercolanelli + + test: fix an ignored test + + * lib/misc/test-generic-variant.cc: here + + An early call to ``exit'' caused the program to ignore the third test. + +2014-12-29 Léo Ercolanelli + + doc: update doxygen comments + + * lib/mic/generic-variant.hh: here + + The comments now match the new implementation. All references to boost + preprocessor has been removed. + +2014-12-29 Léo Ercolanelli + + lib: rewrite misc::generic_variant with c++11 + + The previous implementation (using boost preprocessor) caused + compilation failures on 'lib/misc/test-generic-variant.cc'. Indeed the + code was interesting, but hard to fix; that's why it is now based on + variadic templates and not on boost macros anymore. + + * lib/misc/generic_variant.hh: here + * lib/misc/generic_variant.hxx: here + +2014-12-29 Akim Demaille + + argp: avoid useless warning + + At some point, we should move away from argp. See what Boost + provides for instance, as it might be the choice for C++17. + + * lib/argp/argp-help.c: here. + +2014-12-29 Akim Demaille + + flex++: update + + Address compatibility issues with Flex. + + * build-aux/bin/flex++.in: Update from vcsn. + +2014-12-29 Akim Demaille + + style: use std::tie instead of boost::tie + + Some unqualified uses of tie are not satisfied. Use std instead of + boost. + + * lib/misc/graph.hxx, lib/misc/test-graph.cc, + * src/callgraph/libcallgraph.cc, src/inlining/inliner.cc, + * src/liveness/flowgraph.hxx, src/liveness/interference-graph.cc, + * src/liveness/liveness.cc, src/regalloc/color.cc: here. + +2014-12-29 Akim Demaille + + graph: avoid std::endl + + There's no need to flush at each end of line! + + * lib/misc/graph.hxx: here. + +2014-12-29 Akim Demaille + + tests: be able to run _without_ Valgrind + + * tests/Makefile.am, tests/tc-check.in: here. + Be sure to die soon enough if valgrind is not found. + +2014-12-02 Akim Demaille + + tests: take valgrind into account for the time out + + This is really hard on the build farm. + + * tests/tc-check.in (run): Cut it some slack when running Valgrind. + +2014-10-30 Akim Demaille + + tests: try to simplify tc-check + + tc-check is too complex, we need to simplify it. + + * tests/tc-check.in (--srcdir): New option. + * tests/Makefile.am: Use it. + It should be noted that it seems that --srcdir duplicates the explicit + argument which is given. + What is wrong is that tc-check seems to expect being run from the src + tree, and I think it should be run from the builddir. + +2014-10-30 Akim Demaille + + lib: fix a new dependency from Boost.Graph + + * lib/misc/graph.hh: here. + +2014-10-30 Akim Demaille + + buildfarm: tools for automated checks + + These are taken from vcsn. + + * buildfarm/bootstrap: New. + * buildfarm/build: New. + * buildfarm/check: New. + * buildfarm/common: New. + * buildfarm/configure: New. + * buildfarm/coverage: New. + * buildfarm/package: New. + +2014-10-29 Akim Demaille + + todo: one more test case + + * TODO.txt: here. + +2014-10-29 Akim Demaille + + style: fix indentation + + * src/parse/scantiger.ll: here. + +2014-07-21 Roland Levillain + + Simplify the implementation of tree::Exp and tree::Stm. + + * src/tree/exp.hh (Exp::Exp()): Remove explicit default ctor. + (Exp::~Exp): Define dtor as explicitly defaulted. + * src/tree/stm.hh (Stm::Stm(), Stm::~Stm): + Define as explicitly defaulted. + * src/tree/exp.cc, + * src/tree/stm.cc: + Remove. + * src/tree/local.mk (tree_libtree_la_SOURCES): Adjust. + +2014-07-21 Roland Levillain + + Adjust hidden code. + + * src/inlining/inliner.hh, + * src/inlining/pruner.cc: + Here. + +2014-07-21 Roland Levillain + + Fix instructions for students. + + * src/ast/object-visitor.hxx: Here. + +2014-07-03 Roland Levillain + + Regen ChangeLog. + +2014-07-03 Roland Levillain + + Update AX_CHECK_COMPILE_FLAG. + + * m4/ax_check_compile_flag.m4: Here, from + http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html. + +2014-06-25 Akim Demaille + + diff-r: be more robust to paths + + * dev/diff-r: Use filter-diff to nuke files with a path: diff -x + does not support this. + +2014-06-16 Roland Levillain + + Regen ChangeLog. + +2014-06-10 Roland Levillain + + Remove useless option ``--asm-flowgraphs''. + + * src/regalloc/tasks.hh (regalloc::tasks): Here. + Addresses Trac ticket #44 (https://trac.lrde.epita.fr/tc/ticket/44). + +2014-06-09 Roland Levillain + + Update ChangeLog. + +2014-06-09 Roland Levillain + + Run the register allocator on the first example of test-regalloc. + + * src/regalloc/test-regalloc.cc (example_1): Here. + (MyCpu, MyTarget): New classes. + +2014-06-09 Roland Levillain + + Re-enable regalloc/test-regalloc. + + * src/regalloc/test-regalloc.cc: Revamp test. + * src/regalloc/local.mk (TESTS): Add regalloc/test-regalloc. + (regalloc_test_regalloc_LDADD): Reenable variable. + +2014-06-09 Roland Levillain + + Add construction of misc::list from an initializer list. + + * lib/misc/list.hh, lib/misc/list.hxx + (misc::list::list(std::initializer_list)): New ctor. + +2014-06-09 Roland Levillain + + Fix space before parentheses in src/tree. + + * src/tree/binop.hh, + * src/tree/call.cc, + * src/tree/call.hh, + * src/tree/const.hh, + * src/tree/eseq.hh, + * src/tree/fragment.hh, + * src/tree/fragments.hh, + * src/tree/jump.hh, + * src/tree/label.hh, + * src/tree/mem.hh, + * src/tree/move.hh, + * src/tree/name.hh, + * src/tree/seq.hh, + * src/tree/seq.hxx, + * src/tree/sxp.hh, + * src/tree/temp.hh, + * src/tree/tiger_tree.i, + * src/tree/tree.cc, + * src/tree/tree.hxx, + * src/tree/trees.hh: + Here. + +2014-06-09 Roland Levillain + + Regen code generators. + + * src/target/ia32/codegen.cc, + * src/target/ia32/codegen.hh, + * src/target/mips/codegen.cc, + * src/target/mips/codegen.hh: + Regen. + +2014-06-09 Roland Levillain + + Fix space before parentheses in src/target. + + * src/target/cpu.hh, + * src/target/ia32/cpu.hh, + * src/target/ia32/epilogue.cc, + * src/target/ia32/gas-assembly.hh, + * src/target/ia32/gas-layout.cc, + * src/target/ia32/gas-layout.hh, + * src/target/ia32/local.mk, + * src/target/ia32/move_load.brg, + * src/target/ia32/prologue.hh, + * src/target/ia32/target.hh, + * src/target/ia32/tree.brg, + * src/target/mips/cpu.hh, + * src/target/mips/epilogue.cc, + * src/target/mips/local.mk, + * src/target/mips/prologue.hh, + * src/target/mips/spim-assembly.hh, + * src/target/mips/spim-layout.cc, + * src/target/mips/spim-layout.hh, + * src/target/mips/target.hh, + * src/target/mips/tree.brg, + * src/target/target.cc, + * src/target/target.hh, + * src/target/tasks.cc, + * src/target/tiger-runtime.c: + Here. + +2014-06-06 Roland Levillain + + Remove a useless empty file. + + * src/target/monoburg.mk: Remove. + +2014-05-27 Roland Levillain + + Remove dead code in Makefiles. + + * src/canon/local.mk: Here. + +2014-05-27 Roland Levillain + + lib/argp: Please Automake 1.14. + + * lib/argp/configure.ac: Invoke AM_PROG_AR. + * lib/argp/Makefile.am (AUTOMAKE_OPTIONS): Add subdir-objects, + as this will be the default behavior in future versions of + Automake. + +2014-05-23 Roland Levillain + + Regen ChangeLog. + +2014-05-20 Roland Levillain + + Regen the FreeBSD IA-32 Tiger runtime. + + * src/target/ia32/runtime-freebsd.s: Here, using the following + command on a FreeBSD x86-64 host: + + gcc -m32 -S -o src/target/ia32/runtime-freebsd.s \ + src/target/tiger-runtime.c + + Provided by Aurélien Baud . + +2014-05-20 Roland Levillain + + Aesthetic changes. + + * lib/misc/algorithm.hxx, + * src/target/mips/spim-assembly.cc: + Here. + +2014-05-20 Roland Levillain + + Have tc-check require TC 1.34. + + * configure.ac (TC_PREREQ): Set to 1.34. + +2014-05-20 Roland Levillain + + Typos in ChangeLog. + +2014-05-20 Roland Levillain + + Update the list of contributors. + + * AUTHORS.txt: Here. + +2014-05-20 Roland Levillain + + Remove a test, broken for a long time. + + * src/target/mips/test-rw_prg.cc: Remove. + Addresses Trac ticket #12 (https://trac.lrde.epita.fr/tc/ticket/12). + * src/target/mips/local.mk: Remove dead code. + +2014-05-20 Roland Levillain + + Record IA-32 tests output. + + * tests/escapes/for-lower.-e.ia32.s, + * tests/escapes/for-lower.ia32.s, + * tests/escapes/for-scope.-e.ia32.s, + * tests/escapes/for-scope.ia32.s, + * tests/escapes/for-upper.-e.ia32.s, + * tests/escapes/for-upper.ia32.s, + * tests/escapes/formal-escapes.-e.ia32.s, + * tests/escapes/formal-escapes.ia32.s, + * tests/escapes/local-escapes.-e.ia32.s, + * tests/escapes/local-escapes.ia32.s, + * tests/escapes/no-functiondec-at-all.-e.ia32.s, + * tests/escapes/no-functiondec-at-all.ia32.s, + * tests/escapes/record-escapes.-e.ia32.s, + * tests/escapes/record-escapes.ia32.s, + * tests/escapes/recursion.-e.ia32.s, + * tests/escapes/recursion.ia32.s, + * tests/escapes/redeclaration.-e.ia32.s, + * tests/escapes/redeclaration.ia32.s, + * tests/escapes/rhs-of-a-vardec.-e.ia32.s, + * tests/escapes/rhs-of-a-vardec.ia32.s, + * tests/escapes/scopes.-e.ia32.s, + * tests/escapes/scopes.ia32.s, + * tests/escapes/sl-propagation-1.-e.ia32.s, + * tests/escapes/sl-propagation-1.ia32.s, + * tests/escapes/sl-propagation-2.-e.ia32.s, + * tests/escapes/sl-propagation-2.ia32.s, + * tests/escapes/variable-escapes.-e.ia32.s, + * tests/escapes/variable-escapes.ia32.s, + * tests/escapes/variable-inside-for-body.-e.ia32.s, + * tests/escapes/variable-inside-for-body.ia32.s, + * tests/escapes/variant-escapes.-e.ia32.s, + * tests/escapes/variant-escapes.ia32.s, + * tests/good/all-binop.-e.ia32.s, + * tests/good/all-binop.ia32.s, + * tests/good/array-of-alias.-e.ia32.s, + * tests/good/array-of-alias.ia32.s, + * tests/good/array-subscript-assign.-e.ia32.s, + * tests/good/array-subscript-assign.ia32.s, + * tests/good/array.-e.ia32.s, + * tests/good/array.ia32.s, + * tests/good/assign-and-array-instantiation.-e.ia32.s, + * tests/good/assign-and-array-instantiation.ia32.s, + * tests/good/assign-void.-e.ia32.s, + * tests/good/assign-void.ia32.s, + * tests/good/assign-vs-boolean.-e.ia32.s, + * tests/good/assign-vs-boolean.ia32.s, + * tests/good/assign-vs-rel.-e.ia32.s, + * tests/good/assign-vs-rel.ia32.s, + * tests/good/basic-import.-e.ia32.s, + * tests/good/basic-import.ia32.s, + * tests/good/bempel_j.-e.ia32.s, + * tests/good/bempel_j.ia32.s, + * tests/good/big-exp.-e.ia32.s, + * tests/good/big-exp.ia32.s, + * tests/good/big-lvalue.-e.ia32.s, + * tests/good/big-lvalue.ia32.s, + * tests/good/boolean-1.-e.ia32.s, + * tests/good/boolean-1.ia32.s, + * tests/good/boolean-2.-e.ia32.s, + * tests/good/boolean-2.ia32.s, + * tests/good/break-in-for.-e.ia32.s, + * tests/good/break-in-for.ia32.s, + * tests/good/break-in-while.-e.ia32.s, + * tests/good/break-in-while.ia32.s, + * tests/good/builtins.-e.ia32.s, + * tests/good/builtins.ia32.s, + * tests/good/call.-e.ia32.s, + * tests/good/call.ia32.s, + * tests/good/chr-256.-e.ia32.s, + * tests/good/chr-256.ia32.s, + * tests/good/chr-minus-1.-e.ia32.s, + * tests/good/chr-minus-1.ia32.s, + * tests/good/chr.-e.ia32.s, + * tests/good/chr.ia32.s, + * tests/good/comments-javalike-nested.-e.ia32.s, + * tests/good/comments-javalike-nested.ia32.s, + * tests/good/comments-nested.-e.ia32.s, + * tests/good/comments-nested.ia32.s, + * tests/good/comments-with-comment-chars.-e.ia32.s, + * tests/good/comments-with-comment-chars.ia32.s, + * tests/good/comments-with-parens.-e.ia32.s, + * tests/good/comments-with-parens.ia32.s, + * tests/good/comments-with-quotes.-e.ia32.s, + * tests/good/comments-with-quotes.ia32.s, + * tests/good/commutation-1.-e.ia32.s, + * tests/good/commutation-1.ia32.s, + * tests/good/commutation-2.-e.ia32.s, + * tests/good/commutation-2.ia32.s, + * tests/good/compare-nil-and-record.-e.ia32.s, + * tests/good/compare-nil-and-record.ia32.s, + * tests/good/compare-record-and-nil.-e.ia32.s, + * tests/good/compare-record-and-nil.ia32.s, + * tests/good/compare-record-and-record.-e.ia32.s, + * tests/good/compare-record-and-record.ia32.s, + * tests/good/compare-void.-e.ia32.s, + * tests/good/compare-void.ia32.s, + * tests/good/complex-import.-e.ia32.s, + * tests/good/complex-import.ia32.s, + * tests/good/concat.-e.ia32.s, + * tests/good/concat.ia32.s, + * tests/good/concurrent-arguments.-e.ia32.s, + * tests/good/concurrent-arguments.ia32.s, + * tests/good/division-with-negative-operands.-e.ia32.s, + * tests/good/division-with-negative-operands.ia32.s, + * tests/good/donald.-e.ia32.s, + * tests/good/donald.ia32.s, + * tests/good/empty-let-body.-e.ia32.s, + * tests/good/empty-let-body.ia32.s, + * tests/good/empty-parens.-e.ia32.s, + * tests/good/empty-parens.ia32.s, + * tests/good/empty-record-type.-e.ia32.s, + * tests/good/empty-record-type.ia32.s, + * tests/good/escaping-record.-e.ia32.s, + * tests/good/escaping-record.ia32.s, + * tests/good/evalexp.-e.ia32.s, + * tests/good/evalexp.ia32.s, + * tests/good/exit-51.-e.ia32.s, + * tests/good/exit-51.ia32.s, + * tests/good/explicit-record-type.-e.ia32.s, + * tests/good/explicit-record-type.ia32.s, + * tests/good/fact.-e.ia32.s, + * tests/good/fact.ia32.s, + * tests/good/field-of-field.-e.ia32.s, + * tests/good/field-of-field.ia32.s, + * tests/good/for-high-computed-once.-e.ia32.s, + * tests/good/for-high-computed-once.ia32.s, + * tests/good/for-high-same-name-as-index.-e.ia32.s, + * tests/good/for-high-same-name-as-index.ia32.s, + * tests/good/for-in-let.-e.ia32.s, + * tests/good/for-in-let.ia32.s, + * tests/good/for-in-while.-e.ia32.s, + * tests/good/for-in-while.ia32.s, + * tests/good/for-scope.-e.ia32.s, + * tests/good/for-scope.ia32.s, + * tests/good/for-up-to-32bits.-e.ia32.s, + * tests/good/for-up-to-32bits.ia32.s, + * tests/good/for.-e.ia32.s, + * tests/good/for.ia32.s, + * tests/good/forward-fun-and-type-decl.-e.ia32.s, + * tests/good/forward-fun-and-type-decl.ia32.s, + * tests/good/four-hex-backslash.-e.ia32.s, + * tests/good/four-hex-backslash.ia32.s, + * tests/good/fractions-underloaded.-e.ia32.s, + * tests/good/fractions-underloaded.ia32.s, + * tests/good/fun-vs-var.-e.ia32.s, + * tests/good/fun-vs-var.ia32.s, + * tests/good/functions.-e.ia32.s, + * tests/good/functions.ia32.s, + * tests/good/getchar-no-static-string.-e.ia32.s, + * tests/good/getchar-no-static-string.ia32.s, + * tests/good/getchar.-e.ia32.s, + * tests/good/getchar.ia32.s, + * tests/good/if-and-bool.-e.ia32.s, + * tests/good/if-and-bool.ia32.s, + * tests/good/if-and-if.-e.ia32.s, + * tests/good/if-and-if.ia32.s, + * tests/good/if-and-rel.-e.ia32.s, + * tests/good/if-and-rel.ia32.s, + * tests/good/if-void-body.-e.ia32.s, + * tests/good/if-void-body.ia32.s, + * tests/good/if.-e.ia32.s, + * tests/good/if.ia32.s, + * tests/good/init-array.-e.ia32.s, + * tests/good/init-array.ia32.s, + * tests/good/initialize-to-nil.-e.ia32.s, + * tests/good/initialize-to-nil.ia32.s, + * tests/good/int-comparison.-e.ia32.s, + * tests/good/int-comparison.ia32.s, + * tests/good/int-var-ordering.-e.ia32.s, + * tests/good/int-var-ordering.ia32.s, + * tests/good/invisible-valid-types.-e.ia32.s, + * tests/good/invisible-valid-types.ia32.s, + * tests/good/just-a-simple-for-1.-e.ia32.s, + * tests/good/just-a-simple-for-1.ia32.s, + * tests/good/just-a-simple-for-2.-e.ia32.s, + * tests/good/just-a-simple-for-2.ia32.s, + * tests/good/large-ints.-e.ia32.s, + * tests/good/large-ints.ia32.s, + * tests/good/let-in-for-init.-e.ia32.s, + * tests/good/let-in-for-init.ia32.s, + * tests/good/let-scope-for-functions.-e.ia32.s, + * tests/good/let-scope-for-functions.ia32.s, + * tests/good/let-scope-for-types.-e.ia32.s, + * tests/good/let-scope-for-types.ia32.s, + * tests/good/letexp-eseq.-e.ia32.s, + * tests/good/letexp-eseq.ia32.s, + * tests/good/local-vs-global-type.-e.ia32.s, + * tests/good/local-vs-global-type.ia32.s, + * tests/good/many-args.-e.ia32.s, + * tests/good/many-args.ia32.s, + * tests/good/many-bool-ops.-e.ia32.s, + * tests/good/many-bool-ops.ia32.s, + * tests/good/many-functions.-e.ia32.s, + * tests/good/many-functions.ia32.s, + * tests/good/many-vars.-e.ia32.s, + * tests/good/many-vars.ia32.s, + * tests/good/merge.-e.ia32.s, + * tests/good/merge.ia32.s, + * tests/good/mini-morpho.-e.ia32.s, + * tests/good/mini-morpho.ia32.s, + * tests/good/mutually-recursive-functions.-e.ia32.s, + * tests/good/mutually-recursive-functions.ia32.s, + * tests/good/mutually-recursive-procedures.-e.ia32.s, + * tests/good/mutually-recursive-procedures.ia32.s, + * tests/good/nil-as-arg.-e.ia32.s, + * tests/good/nil-as-arg.ia32.s, + * tests/good/nil-as-return-value.-e.ia32.s, + * tests/good/nil-as-return-value.ia32.s, + * tests/good/nine.-e.ia32.s, + * tests/good/nine.ia32.s, + * tests/good/non-commutative-move-mem-expr.-e.ia32.s, + * tests/good/non-commutative-move-mem-expr.ia32.s, + * tests/good/nul-character.-e.ia32.s, + * tests/good/nul-character.ia32.s, + * tests/good/of-precedence.-e.ia32.s, + * tests/good/of-precedence.ia32.s, + * tests/good/order-strings.-e.ia32.s, + * tests/good/order-strings.ia32.s, + * tests/good/precedence.-e.ia32.s, + * tests/good/precedence.ia32.s, + * tests/good/preincrement.-e.ia32.s, + * tests/good/preincrement.ia32.s, + * tests/good/print-chr-ord.-e.ia32.s, + * tests/good/print-chr-ord.ia32.s, + * tests/good/print-tree.-e.ia32.s, + * tests/good/print-tree.ia32.s, + * tests/good/queens.-e.ia32.s, + * tests/good/queens.ia32.s, + * tests/good/record.-e.ia32.s, + * tests/good/record.ia32.s, + * tests/good/recursive-type.-e.ia32.s, + * tests/good/recursive-type.ia32.s, + * tests/good/recursive-types-mutual.-e.ia32.s, + * tests/good/recursive-types-mutual.ia32.s, + * tests/good/recursive-types.-e.ia32.s, + * tests/good/recursive-types.ia32.s, + * tests/good/redefine-int.-e.ia32.s, + * tests/good/redefine-int.ia32.s, + * tests/good/redefine-print.-e.ia32.s, + * tests/good/redefine-print.ia32.s, + * tests/good/rel.-e.ia32.s, + * tests/good/rel.ia32.s, + * tests/good/scopes-protect-types.-e.ia32.s, + * tests/good/scopes-protect-types.ia32.s, + * tests/good/scopes-protect-vars.-e.ia32.s, + * tests/good/scopes-protect-vars.ia32.s, + * tests/good/seqexp-arithmetics.-e.ia32.s, + * tests/good/seqexp-arithmetics.ia32.s, + * tests/good/shadowed-streq.-e.ia32.s, + * tests/good/shadowed-streq.ia32.s, + * tests/good/shadowing-functions.-e.ia32.s, + * tests/good/shadowing-functions.ia32.s, + * tests/good/shadowing-types-separate.-e.ia32.s, + * tests/good/shadowing-types-separate.ia32.s, + * tests/good/side-effects-in-init.-e.ia32.s, + * tests/good/side-effects-in-init.ia32.s, + * tests/good/side-effects-in-sxp.-e.ia32.s, + * tests/good/side-effects-in-sxp.ia32.s, + * tests/good/side-effects.-e.ia32.s, + * tests/good/side-effects.ia32.s, + * tests/good/single-variable.-e.ia32.s, + * tests/good/single-variable.ia32.s, + * tests/good/so-many-args-in-rec-func.-e.ia32.s, + * tests/good/so-many-args-in-rec-func.ia32.s, + * tests/good/strcmp.-e.ia32.s, + * tests/good/strcmp.ia32.s, + * tests/good/string-backslash-char.-e.ia32.s, + * tests/good/string-backslash-char.ia32.s, + * tests/good/string-backslash-octal.-e.ia32.s, + * tests/good/string-backslash-octal.ia32.s, + * tests/good/string-backslash-tortured.-e.ia32.s, + * tests/good/string-backslash-tortured.ia32.s, + * tests/good/string-huge.-e.ia32.s, + * tests/good/string-huge.ia32.s, + * tests/good/string-int-not-keywords.-e.ia32.s, + * tests/good/string-int-not-keywords.ia32.s, + * tests/good/string-simple-quotes.-e.ia32.s, + * tests/good/string-simple-quotes.ia32.s, + * tests/good/string-var-comparing.-e.ia32.s, + * tests/good/string-var-comparing.ia32.s, + * tests/good/string-var-ordering.-e.ia32.s, + * tests/good/string-var-ordering.ia32.s, + * tests/good/stupid-array-type.-e.ia32.s, + * tests/good/stupid-array-type.ia32.s, + * tests/good/substring-copy-all.-e.ia32.s, + * tests/good/substring-copy-all.ia32.s, + * tests/good/substring-copy-nothing.-e.ia32.s, + * tests/good/substring-copy-nothing.ia32.s, + * tests/good/substring-too-high-sum.-e.ia32.s, + * tests/good/substring-too-high-sum.ia32.s, + * tests/good/substring-too-low-first.-e.ia32.s, + * tests/good/substring-too-low-first.ia32.s, + * tests/good/substring-too-low-length.-e.ia32.s, + * tests/good/substring-too-low-length.ia32.s, + * tests/good/substring.-e.ia32.s, + * tests/good/substring.ia32.s, + * tests/good/test27.-e.ia32.s, + * tests/good/test27.ia32.s, + * tests/good/test30.-e.ia32.s, + * tests/good/test30.ia32.s, + * tests/good/test37.-e.ia32.s, + * tests/good/test37.ia32.s, + * tests/good/test42.-e.ia32.s, + * tests/good/test42.ia32.s, + * tests/good/test44.-e.ia32.s, + * tests/good/test44.ia32.s, + * tests/good/three-name-spaces.-e.ia32.s, + * tests/good/three-name-spaces.ia32.s, + * tests/good/types-aliases.-e.ia32.s, + * tests/good/types-aliases.ia32.s, + * tests/good/var-bob-is-another-bob.-e.ia32.s, + * tests/good/var-bob-is-another-bob.ia32.s, + * tests/good/var-override.-e.ia32.s, + * tests/good/var-override.ia32.s, + * tests/good/while-in-while.-e.ia32.s, + * tests/good/while-in-while.ia32.s, + * tests/object-good/attribute-modification.-e.ia32.s, + * tests/object-good/attribute-modification.ia32.s, + * tests/object-good/compare-nil-and-object.-e.ia32.s, + * tests/object-good/compare-nil-and-object.ia32.s, + * tests/object-good/compare-object-and-nil.-e.ia32.s, + * tests/object-good/compare-object-and-nil.ia32.s, + * tests/object-good/explicit-class-type.-e.ia32.s, + * tests/object-good/explicit-class-type.ia32.s, + * tests/object-good/five-name-spaces.-e.ia32.s, + * tests/object-good/five-name-spaces.ia32.s, + * tests/object-good/function-call-in-method.-e.ia32.s, + * tests/object-good/function-call-in-method.ia32.s, + * tests/object-good/function-returning-an-object.-e.ia32.s, + * tests/object-good/function-returning-an-object.ia32.s, + * tests/object-good/function-returning-object.-e.ia32.s, + * tests/object-good/function-returning-object.ia32.s, + * tests/object-good/function-taking-an-object-as-argument.-e.ia32.s, + * tests/object-good/function-taking-an-object-as-argument.ia32.s, + * tests/object-good/function-taking-object-as-argument.-e.ia32.s, + * tests/object-good/function-taking-object-as-argument.ia32.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.-e.ia32.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.ia32.s, + * tests/object-good/initialize-object-to-nil.-e.ia32.s, + * tests/object-good/initialize-object-to-nil.ia32.s, + * tests/object-good/inner-class-with-same-member-names.-e.ia32.s, + * tests/object-good/inner-class-with-same-member-names.ia32.s, + * tests/object-good/instantiate-object.-e.ia32.s, + * tests/object-good/instantiate-object.ia32.s, + * tests/object-good/method-call.-e.ia32.s, + * tests/object-good/method-call.ia32.s, + * tests/object-good/method-using-self-as-argument.-e.ia32.s, + * tests/object-good/method-using-self-as-argument.ia32.s, + * tests/object-good/new-object.-e.ia32.s, + * tests/object-good/new-object.ia32.s, + * tests/object-good/nil-as-object-arg.-e.ia32.s, + * tests/object-good/nil-as-object-arg.ia32.s, + * tests/object-good/nil-as-object-return-value.-e.ia32.s, + * tests/object-good/nil-as-object-return-value.ia32.s, + * tests/object-good/redefining-object.-e.ia32.s, + * tests/object-good/redefining-object.ia32.s, + * tests/object-good/redefining-self.-e.ia32.s, + * tests/object-good/redefining-self.ia32.s, + * tests/object-good/simple-class.-e.ia32.s, + * tests/object-good/simple-class.ia32.s, + * tests/object-good/simple-extends.-e.ia32.s, + * tests/object-good/simple-extends.ia32.s, + * tests/object-good/simple-instantiation.-e.ia32.s, + * tests/object-good/simple-instantiation.ia32.s, + * tests/object-good/trivial-class.-e.ia32.s, + * tests/object-good/trivial-class.ia32.s, + * tests/object-good/type-simple-class.-e.ia32.s, + * tests/object-good/type-simple-class.ia32.s, + * tests/object-good/type-simple-extends.-e.ia32.s, + * tests/object-good/type-simple-extends.ia32.s, + * tests/object-good/upcast.-e.ia32.s, + * tests/object-good/upcast.ia32.s, + * tests/object-good/using-members-from-within-the-class.-e.ia32.s, + * tests/object-good/using-members-from-within-the-class.ia32.s, + * tests/object-good/valid-forward-reference-to-class.-e.ia32.s, + * tests/object-good/valid-forward-reference-to-class.ia32.s, + * tests/object-good/variable-modification.-e.ia32.s, + * tests/object-good/variable-modification.ia32.s, + * tests/object-good/variable-of-type-object.-e.ia32.s, + * tests/object-good/variable-of-type-object.ia32.s, + * tests/object-good/vehicle.-e.ia32.s, + * tests/object-good/vehicle.ia32.s, + * tests/object-good/visitor.-e.ia32.s, + * tests/object-good/visitor.ia32.s, + * tests/overload-good/overload-builtin.-e.ia32.s, + * tests/overload-good/overload-builtin.ia32.s, + * tests/overload-good/overload-function-record-arg.-e.ia32.s, + * tests/overload-good/overload-function-record-arg.ia32.s, + * tests/overload-good/overload-function.-e.ia32.s, + * tests/overload-good/overload-function.ia32.s, + * tests/overload-good/overload-nil-diambiguated.-e.ia32.s, + * tests/overload-good/overload-nil-diambiguated.ia32.s, + * tests/overload-good/overload-var-type-inference.-e.ia32.s, + * tests/overload-good/overload-var-type-inference.ia32.s, + * tests/runtime/chr-out-of-range1.-e.ia32.s, + * tests/runtime/chr-out-of-range1.ia32.s, + * tests/runtime/chr-out-of-range2.-e.ia32.s, + * tests/runtime/chr-out-of-range2.ia32.s, + * tests/runtime/substring-out-of-bounds1.-e.ia32.s, + * tests/runtime/substring-out-of-bounds1.ia32.s, + * tests/runtime/substring-out-of-bounds2.-e.ia32.s, + * tests/runtime/substring-out-of-bounds2.ia32.s, + * tests/runtime/substring-out-of-bounds3.-e.ia32.s, + * tests/runtime/substring-out-of-bounds3.ia32.s: + New files. + Addresses Trac ticket #73 (https://trac.lrde.epita.fr/tc/ticket/73). + +2014-05-20 Roland Levillain + + Add rules to generate IA-32 tests outputs. + + * tests/Makefile.am (TIG2IA32, TIG2IA32_ESCAPE): New. + ($(srcdir)/%.ia32.s, $(srcdir)/%.-e.ia32.s): New (precious) + targets. + (good_prog_exts): Add ia32.s and -e.ia32.s. + +2014-05-20 Roland Levillain + + Adjust rules producing MIPS tests outputs. + + * tests/Makefile.am: s/\.s$/.mips.s/. + (good_prog_exts): Adjust. + (TIG2ASM, TIG2ASM_ESCAPE, TIG2UASM, TIG2UASM_ESCAPE): + Rename as... + (TIG2MIPS, TIG2MIPS_ESCAPE, TIG2UMIPS, TIG2UMIPS_ESCAPE): + ...these. + Add option --target-mips. + +2014-05-20 Roland Levillain + + Rename MIPS tests outputs. + + * tests/escapes/for-lower.-e.s, + * tests/escapes/for-lower.-e.u.s, + * tests/escapes/for-lower.s, + * tests/escapes/for-lower.u.s, + * tests/escapes/for-scope.-e.s, + * tests/escapes/for-scope.-e.u.s, + * tests/escapes/for-scope.s, + * tests/escapes/for-scope.u.s, + * tests/escapes/for-upper.-e.s, + * tests/escapes/for-upper.-e.u.s, + * tests/escapes/for-upper.s, + * tests/escapes/for-upper.u.s, + * tests/escapes/formal-escapes.-e.s, + * tests/escapes/formal-escapes.-e.u.s, + * tests/escapes/formal-escapes.s, + * tests/escapes/formal-escapes.u.s, + * tests/escapes/local-escapes.-e.s, + * tests/escapes/local-escapes.-e.u.s, + * tests/escapes/local-escapes.s, + * tests/escapes/local-escapes.u.s, + * tests/escapes/no-functiondec-at-all.-e.s, + * tests/escapes/no-functiondec-at-all.-e.u.s, + * tests/escapes/no-functiondec-at-all.s, + * tests/escapes/no-functiondec-at-all.u.s, + * tests/escapes/record-escapes.-e.s, + * tests/escapes/record-escapes.-e.u.s, + * tests/escapes/record-escapes.s, + * tests/escapes/record-escapes.u.s, + * tests/escapes/recursion.-e.s, + * tests/escapes/recursion.-e.u.s, + * tests/escapes/recursion.s, + * tests/escapes/recursion.u.s, + * tests/escapes/redeclaration.-e.s, + * tests/escapes/redeclaration.-e.u.s, + * tests/escapes/redeclaration.s, + * tests/escapes/redeclaration.u.s, + * tests/escapes/rhs-of-a-vardec.-e.s, + * tests/escapes/rhs-of-a-vardec.-e.u.s, + * tests/escapes/rhs-of-a-vardec.s, + * tests/escapes/rhs-of-a-vardec.u.s, + * tests/escapes/scopes.-e.s, + * tests/escapes/scopes.-e.u.s, + * tests/escapes/scopes.s, + * tests/escapes/scopes.u.s, + * tests/escapes/sl-propagation-1.-e.s, + * tests/escapes/sl-propagation-1.-e.u.s, + * tests/escapes/sl-propagation-1.s, + * tests/escapes/sl-propagation-1.u.s, + * tests/escapes/sl-propagation-2.-e.s, + * tests/escapes/sl-propagation-2.-e.u.s, + * tests/escapes/sl-propagation-2.s, + * tests/escapes/sl-propagation-2.u.s, + * tests/escapes/variable-escapes.-e.s, + * tests/escapes/variable-escapes.-e.u.s, + * tests/escapes/variable-escapes.s, + * tests/escapes/variable-escapes.u.s, + * tests/escapes/variable-inside-for-body.-e.s, + * tests/escapes/variable-inside-for-body.-e.u.s, + * tests/escapes/variable-inside-for-body.s, + * tests/escapes/variable-inside-for-body.u.s, + * tests/escapes/variant-escapes.-e.s, + * tests/escapes/variant-escapes.-e.u.s, + * tests/escapes/variant-escapes.s, + * tests/escapes/variant-escapes.u.s, + * tests/good/all-binop.-e.s, + * tests/good/all-binop.-e.u.s, + * tests/good/all-binop.s, + * tests/good/all-binop.u.s, + * tests/good/array-of-alias.-e.s, + * tests/good/array-of-alias.-e.u.s, + * tests/good/array-of-alias.s, + * tests/good/array-of-alias.u.s, + * tests/good/array-subscript-assign.-e.s, + * tests/good/array-subscript-assign.-e.u.s, + * tests/good/array-subscript-assign.s, + * tests/good/array-subscript-assign.u.s, + * tests/good/array.-e.s, + * tests/good/array.-e.u.s, + * tests/good/array.s, + * tests/good/array.u.s, + * tests/good/assign-and-array-instantiation.-e.s, + * tests/good/assign-and-array-instantiation.-e.u.s, + * tests/good/assign-and-array-instantiation.s, + * tests/good/assign-and-array-instantiation.u.s, + * tests/good/assign-void.-e.s, + * tests/good/assign-void.-e.u.s, + * tests/good/assign-void.s, + * tests/good/assign-void.u.s, + * tests/good/assign-vs-boolean.-e.s, + * tests/good/assign-vs-boolean.-e.u.s, + * tests/good/assign-vs-boolean.s, + * tests/good/assign-vs-boolean.u.s, + * tests/good/assign-vs-rel.-e.s, + * tests/good/assign-vs-rel.-e.u.s, + * tests/good/assign-vs-rel.s, + * tests/good/assign-vs-rel.u.s, + * tests/good/basic-import.-e.s, + * tests/good/basic-import.-e.u.s, + * tests/good/basic-import.s, + * tests/good/basic-import.u.s, + * tests/good/bempel_j.-e.s, + * tests/good/bempel_j.-e.u.s, + * tests/good/bempel_j.s, + * tests/good/bempel_j.u.s, + * tests/good/big-exp.-e.s, + * tests/good/big-exp.-e.u.s, + * tests/good/big-exp.s, + * tests/good/big-exp.u.s, + * tests/good/big-lvalue.-e.s, + * tests/good/big-lvalue.-e.u.s, + * tests/good/big-lvalue.s, + * tests/good/big-lvalue.u.s, + * tests/good/boolean-1.-e.s, + * tests/good/boolean-1.-e.u.s, + * tests/good/boolean-1.s, + * tests/good/boolean-1.u.s, + * tests/good/boolean-2.-e.s, + * tests/good/boolean-2.-e.u.s, + * tests/good/boolean-2.s, + * tests/good/boolean-2.u.s, + * tests/good/break-in-for.-e.s, + * tests/good/break-in-for.-e.u.s, + * tests/good/break-in-for.s, + * tests/good/break-in-for.u.s, + * tests/good/break-in-while.-e.s, + * tests/good/break-in-while.-e.u.s, + * tests/good/break-in-while.s, + * tests/good/break-in-while.u.s, + * tests/good/builtins.-e.s, + * tests/good/builtins.-e.u.s, + * tests/good/builtins.s, + * tests/good/builtins.u.s, + * tests/good/call.-e.s, + * tests/good/call.-e.u.s, + * tests/good/call.s, + * tests/good/call.u.s, + * tests/good/chr-256.-e.s, + * tests/good/chr-256.-e.u.s, + * tests/good/chr-256.s, + * tests/good/chr-256.u.s, + * tests/good/chr-minus-1.-e.s, + * tests/good/chr-minus-1.-e.u.s, + * tests/good/chr-minus-1.s, + * tests/good/chr-minus-1.u.s, + * tests/good/chr.-e.s, + * tests/good/chr.-e.u.s, + * tests/good/chr.s, + * tests/good/chr.u.s, + * tests/good/comments-javalike-nested.-e.s, + * tests/good/comments-javalike-nested.-e.u.s, + * tests/good/comments-javalike-nested.s, + * tests/good/comments-javalike-nested.u.s, + * tests/good/comments-nested.-e.s, + * tests/good/comments-nested.-e.u.s, + * tests/good/comments-nested.s, + * tests/good/comments-nested.u.s, + * tests/good/comments-with-comment-chars.-e.s, + * tests/good/comments-with-comment-chars.-e.u.s, + * tests/good/comments-with-comment-chars.s, + * tests/good/comments-with-comment-chars.u.s, + * tests/good/comments-with-parens.-e.s, + * tests/good/comments-with-parens.-e.u.s, + * tests/good/comments-with-parens.s, + * tests/good/comments-with-parens.u.s, + * tests/good/comments-with-quotes.-e.s, + * tests/good/comments-with-quotes.-e.u.s, + * tests/good/comments-with-quotes.s, + * tests/good/comments-with-quotes.u.s, + * tests/good/commutation-1.-e.s, + * tests/good/commutation-1.-e.u.s, + * tests/good/commutation-1.s, + * tests/good/commutation-1.u.s, + * tests/good/commutation-2.-e.s, + * tests/good/commutation-2.-e.u.s, + * tests/good/commutation-2.s, + * tests/good/commutation-2.u.s, + * tests/good/compare-nil-and-record.-e.s, + * tests/good/compare-nil-and-record.-e.u.s, + * tests/good/compare-nil-and-record.s, + * tests/good/compare-nil-and-record.u.s, + * tests/good/compare-record-and-nil.-e.s, + * tests/good/compare-record-and-nil.-e.u.s, + * tests/good/compare-record-and-nil.s, + * tests/good/compare-record-and-nil.u.s, + * tests/good/compare-record-and-record.-e.s, + * tests/good/compare-record-and-record.-e.u.s, + * tests/good/compare-record-and-record.s, + * tests/good/compare-record-and-record.u.s, + * tests/good/compare-void.-e.s, + * tests/good/compare-void.-e.u.s, + * tests/good/compare-void.s, + * tests/good/compare-void.u.s, + * tests/good/complex-import.-e.s, + * tests/good/complex-import.-e.u.s, + * tests/good/complex-import.s, + * tests/good/complex-import.u.s, + * tests/good/concat.-e.s, + * tests/good/concat.-e.u.s, + * tests/good/concat.s, + * tests/good/concat.u.s, + * tests/good/concurrent-arguments.-e.s, + * tests/good/concurrent-arguments.-e.u.s, + * tests/good/concurrent-arguments.s, + * tests/good/concurrent-arguments.u.s, + * tests/good/division-with-negative-operands.-e.s, + * tests/good/division-with-negative-operands.-e.u.s, + * tests/good/division-with-negative-operands.s, + * tests/good/division-with-negative-operands.u.s, + * tests/good/donald.-e.s, + * tests/good/donald.-e.u.s, + * tests/good/donald.s, + * tests/good/donald.u.s, + * tests/good/empty-let-body.-e.s, + * tests/good/empty-let-body.-e.u.s, + * tests/good/empty-let-body.s, + * tests/good/empty-let-body.u.s, + * tests/good/empty-parens.-e.s, + * tests/good/empty-parens.-e.u.s, + * tests/good/empty-parens.s, + * tests/good/empty-parens.u.s, + * tests/good/empty-record-type.-e.s, + * tests/good/empty-record-type.-e.u.s, + * tests/good/empty-record-type.s, + * tests/good/empty-record-type.u.s, + * tests/good/escaping-record.-e.s, + * tests/good/escaping-record.-e.u.s, + * tests/good/escaping-record.s, + * tests/good/escaping-record.u.s, + * tests/good/evalexp.-e.s, + * tests/good/evalexp.-e.u.s, + * tests/good/evalexp.s, + * tests/good/evalexp.u.s, + * tests/good/exit-51.-e.s, + * tests/good/exit-51.-e.u.s, + * tests/good/exit-51.s, + * tests/good/exit-51.u.s, + * tests/good/explicit-record-type.-e.s, + * tests/good/explicit-record-type.-e.u.s, + * tests/good/explicit-record-type.s, + * tests/good/explicit-record-type.u.s, + * tests/good/fact.-e.s, + * tests/good/fact.-e.u.s, + * tests/good/fact.s, + * tests/good/fact.u.s, + * tests/good/field-of-field.-e.s, + * tests/good/field-of-field.-e.u.s, + * tests/good/field-of-field.s, + * tests/good/field-of-field.u.s, + * tests/good/for-high-computed-once.-e.s, + * tests/good/for-high-computed-once.-e.u.s, + * tests/good/for-high-computed-once.s, + * tests/good/for-high-computed-once.u.s, + * tests/good/for-high-same-name-as-index.-e.s, + * tests/good/for-high-same-name-as-index.-e.u.s, + * tests/good/for-high-same-name-as-index.s, + * tests/good/for-high-same-name-as-index.u.s, + * tests/good/for-in-let.-e.s, + * tests/good/for-in-let.-e.u.s, + * tests/good/for-in-let.s, + * tests/good/for-in-let.u.s, + * tests/good/for-in-while.-e.s, + * tests/good/for-in-while.-e.u.s, + * tests/good/for-in-while.s, + * tests/good/for-in-while.u.s, + * tests/good/for-scope.-e.s, + * tests/good/for-scope.-e.u.s, + * tests/good/for-scope.s, + * tests/good/for-scope.u.s, + * tests/good/for-up-to-32bits.-e.s, + * tests/good/for-up-to-32bits.-e.u.s, + * tests/good/for-up-to-32bits.s, + * tests/good/for-up-to-32bits.u.s, + * tests/good/for.-e.s, + * tests/good/for.-e.u.s, + * tests/good/for.s, + * tests/good/for.u.s, + * tests/good/forward-fun-and-type-decl.-e.s, + * tests/good/forward-fun-and-type-decl.-e.u.s, + * tests/good/forward-fun-and-type-decl.s, + * tests/good/forward-fun-and-type-decl.u.s, + * tests/good/four-hex-backslash.-e.s, + * tests/good/four-hex-backslash.-e.u.s, + * tests/good/four-hex-backslash.s, + * tests/good/four-hex-backslash.u.s, + * tests/good/fractions-underloaded.-e.s, + * tests/good/fractions-underloaded.-e.u.s, + * tests/good/fractions-underloaded.s, + * tests/good/fractions-underloaded.u.s, + * tests/good/fun-vs-var.-e.s, + * tests/good/fun-vs-var.-e.u.s, + * tests/good/fun-vs-var.s, + * tests/good/fun-vs-var.u.s, + * tests/good/functions.-e.s, + * tests/good/functions.-e.u.s, + * tests/good/functions.s, + * tests/good/functions.u.s, + * tests/good/getchar-no-static-string.-e.s, + * tests/good/getchar-no-static-string.-e.u.s, + * tests/good/getchar-no-static-string.s, + * tests/good/getchar-no-static-string.u.s, + * tests/good/getchar.-e.s, + * tests/good/getchar.-e.u.s, + * tests/good/getchar.s, + * tests/good/getchar.u.s, + * tests/good/if-and-bool.-e.s, + * tests/good/if-and-bool.-e.u.s, + * tests/good/if-and-bool.s, + * tests/good/if-and-bool.u.s, + * tests/good/if-and-if.-e.s, + * tests/good/if-and-if.-e.u.s, + * tests/good/if-and-if.s, + * tests/good/if-and-if.u.s, + * tests/good/if-and-rel.-e.s, + * tests/good/if-and-rel.-e.u.s, + * tests/good/if-and-rel.s, + * tests/good/if-and-rel.u.s, + * tests/good/if-void-body.-e.s, + * tests/good/if-void-body.-e.u.s, + * tests/good/if-void-body.s, + * tests/good/if-void-body.u.s, + * tests/good/if.-e.s, + * tests/good/if.-e.u.s, + * tests/good/if.s, + * tests/good/if.u.s, + * tests/good/init-array.-e.s, + * tests/good/init-array.-e.u.s, + * tests/good/init-array.s, + * tests/good/init-array.u.s, + * tests/good/initialize-to-nil.-e.s, + * tests/good/initialize-to-nil.-e.u.s, + * tests/good/initialize-to-nil.s, + * tests/good/initialize-to-nil.u.s, + * tests/good/int-comparison.-e.s, + * tests/good/int-comparison.-e.u.s, + * tests/good/int-comparison.s, + * tests/good/int-comparison.u.s, + * tests/good/int-var-ordering.-e.s, + * tests/good/int-var-ordering.-e.u.s, + * tests/good/int-var-ordering.s, + * tests/good/int-var-ordering.u.s, + * tests/good/invisible-valid-types.-e.s, + * tests/good/invisible-valid-types.-e.u.s, + * tests/good/invisible-valid-types.s, + * tests/good/invisible-valid-types.u.s, + * tests/good/just-a-simple-for-1.-e.s, + * tests/good/just-a-simple-for-1.-e.u.s, + * tests/good/just-a-simple-for-1.s, + * tests/good/just-a-simple-for-1.u.s, + * tests/good/just-a-simple-for-2.-e.s, + * tests/good/just-a-simple-for-2.-e.u.s, + * tests/good/just-a-simple-for-2.s, + * tests/good/just-a-simple-for-2.u.s, + * tests/good/large-ints.-e.s, + * tests/good/large-ints.-e.u.s, + * tests/good/large-ints.s, + * tests/good/large-ints.u.s, + * tests/good/let-in-for-init.-e.s, + * tests/good/let-in-for-init.-e.u.s, + * tests/good/let-in-for-init.s, + * tests/good/let-in-for-init.u.s, + * tests/good/let-scope-for-functions.-e.s, + * tests/good/let-scope-for-functions.-e.u.s, + * tests/good/let-scope-for-functions.s, + * tests/good/let-scope-for-functions.u.s, + * tests/good/let-scope-for-types.-e.s, + * tests/good/let-scope-for-types.-e.u.s, + * tests/good/let-scope-for-types.s, + * tests/good/let-scope-for-types.u.s, + * tests/good/letexp-eseq.-e.s, + * tests/good/letexp-eseq.-e.u.s, + * tests/good/letexp-eseq.s, + * tests/good/letexp-eseq.u.s, + * tests/good/local-vs-global-type.-e.s, + * tests/good/local-vs-global-type.-e.u.s, + * tests/good/local-vs-global-type.s, + * tests/good/local-vs-global-type.u.s, + * tests/good/many-args.-e.s, + * tests/good/many-args.-e.u.s, + * tests/good/many-args.s, + * tests/good/many-args.u.s, + * tests/good/many-bool-ops.-e.s, + * tests/good/many-bool-ops.-e.u.s, + * tests/good/many-bool-ops.s, + * tests/good/many-bool-ops.u.s, + * tests/good/many-functions.-e.s, + * tests/good/many-functions.-e.u.s, + * tests/good/many-functions.s, + * tests/good/many-functions.u.s, + * tests/good/many-vars.-e.s, + * tests/good/many-vars.-e.u.s, + * tests/good/many-vars.s, + * tests/good/many-vars.u.s, + * tests/good/merge.-e.s, + * tests/good/merge.-e.u.s, + * tests/good/merge.s, + * tests/good/merge.u.s, + * tests/good/mini-morpho.-e.s, + * tests/good/mini-morpho.-e.u.s, + * tests/good/mini-morpho.s, + * tests/good/mini-morpho.u.s, + * tests/good/mutually-recursive-functions.-e.s, + * tests/good/mutually-recursive-functions.-e.u.s, + * tests/good/mutually-recursive-functions.s, + * tests/good/mutually-recursive-functions.u.s, + * tests/good/mutually-recursive-procedures.-e.s, + * tests/good/mutually-recursive-procedures.-e.u.s, + * tests/good/mutually-recursive-procedures.s, + * tests/good/mutually-recursive-procedures.u.s, + * tests/good/nil-as-arg.-e.s, + * tests/good/nil-as-arg.-e.u.s, + * tests/good/nil-as-arg.s, + * tests/good/nil-as-arg.u.s, + * tests/good/nil-as-return-value.-e.s, + * tests/good/nil-as-return-value.-e.u.s, + * tests/good/nil-as-return-value.s, + * tests/good/nil-as-return-value.u.s, + * tests/good/nine.-e.s, + * tests/good/nine.-e.u.s, + * tests/good/nine.s, + * tests/good/nine.u.s, + * tests/good/non-commutative-move-mem-expr.-e.s, + * tests/good/non-commutative-move-mem-expr.-e.u.s, + * tests/good/non-commutative-move-mem-expr.s, + * tests/good/non-commutative-move-mem-expr.u.s, + * tests/good/nul-character.-e.s, + * tests/good/nul-character.-e.u.s, + * tests/good/nul-character.s, + * tests/good/nul-character.u.s, + * tests/good/of-precedence.-e.s, + * tests/good/of-precedence.-e.u.s, + * tests/good/of-precedence.s, + * tests/good/of-precedence.u.s, + * tests/good/order-strings.-e.s, + * tests/good/order-strings.-e.u.s, + * tests/good/order-strings.s, + * tests/good/order-strings.u.s, + * tests/good/precedence.-e.s, + * tests/good/precedence.-e.u.s, + * tests/good/precedence.s, + * tests/good/precedence.u.s, + * tests/good/preincrement.-e.s, + * tests/good/preincrement.-e.u.s, + * tests/good/preincrement.s, + * tests/good/preincrement.u.s, + * tests/good/print-chr-ord.-e.s, + * tests/good/print-chr-ord.-e.u.s, + * tests/good/print-chr-ord.s, + * tests/good/print-chr-ord.u.s, + * tests/good/print-tree.-e.s, + * tests/good/print-tree.-e.u.s, + * tests/good/print-tree.s, + * tests/good/print-tree.u.s, + * tests/good/queens.-e.s, + * tests/good/queens.-e.u.s, + * tests/good/queens.s, + * tests/good/queens.u.s, + * tests/good/record.-e.s, + * tests/good/record.-e.u.s, + * tests/good/record.s, + * tests/good/record.u.s, + * tests/good/recursive-type.-e.s, + * tests/good/recursive-type.-e.u.s, + * tests/good/recursive-type.s, + * tests/good/recursive-type.u.s, + * tests/good/recursive-types-mutual.-e.s, + * tests/good/recursive-types-mutual.-e.u.s, + * tests/good/recursive-types-mutual.s, + * tests/good/recursive-types-mutual.u.s, + * tests/good/recursive-types.-e.s, + * tests/good/recursive-types.-e.u.s, + * tests/good/recursive-types.s, + * tests/good/recursive-types.u.s, + * tests/good/redefine-int.-e.s, + * tests/good/redefine-int.-e.u.s, + * tests/good/redefine-int.s, + * tests/good/redefine-int.u.s, + * tests/good/redefine-print.-e.s, + * tests/good/redefine-print.-e.u.s, + * tests/good/redefine-print.s, + * tests/good/redefine-print.u.s, + * tests/good/rel.-e.s, + * tests/good/rel.-e.u.s, + * tests/good/rel.s, + * tests/good/rel.u.s, + * tests/good/scopes-protect-types.-e.s, + * tests/good/scopes-protect-types.-e.u.s, + * tests/good/scopes-protect-types.s, + * tests/good/scopes-protect-types.u.s, + * tests/good/scopes-protect-vars.-e.s, + * tests/good/scopes-protect-vars.-e.u.s, + * tests/good/scopes-protect-vars.s, + * tests/good/scopes-protect-vars.u.s, + * tests/good/seqexp-arithmetics.-e.s, + * tests/good/seqexp-arithmetics.-e.u.s, + * tests/good/seqexp-arithmetics.s, + * tests/good/seqexp-arithmetics.u.s, + * tests/good/shadowed-streq.-e.s, + * tests/good/shadowed-streq.-e.u.s, + * tests/good/shadowed-streq.s, + * tests/good/shadowed-streq.u.s, + * tests/good/shadowing-functions.-e.s, + * tests/good/shadowing-functions.-e.u.s, + * tests/good/shadowing-functions.s, + * tests/good/shadowing-functions.u.s, + * tests/good/shadowing-types-separate.-e.s, + * tests/good/shadowing-types-separate.-e.u.s, + * tests/good/shadowing-types-separate.s, + * tests/good/shadowing-types-separate.u.s, + * tests/good/side-effects-in-init.-e.s, + * tests/good/side-effects-in-init.-e.u.s, + * tests/good/side-effects-in-init.s, + * tests/good/side-effects-in-init.u.s, + * tests/good/side-effects-in-sxp.-e.s, + * tests/good/side-effects-in-sxp.-e.u.s, + * tests/good/side-effects-in-sxp.s, + * tests/good/side-effects-in-sxp.u.s, + * tests/good/side-effects.-e.s, + * tests/good/side-effects.-e.u.s, + * tests/good/side-effects.s, + * tests/good/side-effects.u.s, + * tests/good/single-variable.-e.s, + * tests/good/single-variable.-e.u.s, + * tests/good/single-variable.s, + * tests/good/single-variable.u.s, + * tests/good/so-many-args-in-rec-func.-e.s, + * tests/good/so-many-args-in-rec-func.-e.u.s, + * tests/good/so-many-args-in-rec-func.s, + * tests/good/so-many-args-in-rec-func.u.s, + * tests/good/strcmp.-e.s, + * tests/good/strcmp.-e.u.s, + * tests/good/strcmp.s, + * tests/good/strcmp.u.s, + * tests/good/string-backslash-char.-e.s, + * tests/good/string-backslash-char.-e.u.s, + * tests/good/string-backslash-char.s, + * tests/good/string-backslash-char.u.s, + * tests/good/string-backslash-octal.-e.s, + * tests/good/string-backslash-octal.-e.u.s, + * tests/good/string-backslash-octal.s, + * tests/good/string-backslash-octal.u.s, + * tests/good/string-backslash-tortured.-e.s, + * tests/good/string-backslash-tortured.-e.u.s, + * tests/good/string-backslash-tortured.s, + * tests/good/string-backslash-tortured.u.s, + * tests/good/string-huge.-e.s, + * tests/good/string-huge.-e.u.s, + * tests/good/string-huge.s, + * tests/good/string-huge.u.s, + * tests/good/string-int-not-keywords.-e.s, + * tests/good/string-int-not-keywords.-e.u.s, + * tests/good/string-int-not-keywords.s, + * tests/good/string-int-not-keywords.u.s, + * tests/good/string-simple-quotes.-e.s, + * tests/good/string-simple-quotes.-e.u.s, + * tests/good/string-simple-quotes.s, + * tests/good/string-simple-quotes.u.s, + * tests/good/string-var-comparing.-e.s, + * tests/good/string-var-comparing.-e.u.s, + * tests/good/string-var-comparing.s, + * tests/good/string-var-comparing.u.s, + * tests/good/string-var-ordering.-e.s, + * tests/good/string-var-ordering.-e.u.s, + * tests/good/string-var-ordering.s, + * tests/good/string-var-ordering.u.s, + * tests/good/stupid-array-type.-e.s, + * tests/good/stupid-array-type.-e.u.s, + * tests/good/stupid-array-type.s, + * tests/good/stupid-array-type.u.s, + * tests/good/substring-copy-all.-e.s, + * tests/good/substring-copy-all.-e.u.s, + * tests/good/substring-copy-all.s, + * tests/good/substring-copy-all.u.s, + * tests/good/substring-copy-nothing.-e.s, + * tests/good/substring-copy-nothing.-e.u.s, + * tests/good/substring-copy-nothing.s, + * tests/good/substring-copy-nothing.u.s, + * tests/good/substring-too-high-sum.-e.s, + * tests/good/substring-too-high-sum.-e.u.s, + * tests/good/substring-too-high-sum.s, + * tests/good/substring-too-high-sum.u.s, + * tests/good/substring-too-low-first.-e.s, + * tests/good/substring-too-low-first.-e.u.s, + * tests/good/substring-too-low-first.s, + * tests/good/substring-too-low-first.u.s, + * tests/good/substring-too-low-length.-e.s, + * tests/good/substring-too-low-length.-e.u.s, + * tests/good/substring-too-low-length.s, + * tests/good/substring-too-low-length.u.s, + * tests/good/substring.-e.s, + * tests/good/substring.-e.u.s, + * tests/good/substring.s, + * tests/good/substring.u.s, + * tests/good/test27.-e.s, + * tests/good/test27.-e.u.s, + * tests/good/test27.s, + * tests/good/test27.u.s, + * tests/good/test30.-e.s, + * tests/good/test30.-e.u.s, + * tests/good/test30.s, + * tests/good/test30.u.s, + * tests/good/test37.-e.s, + * tests/good/test37.-e.u.s, + * tests/good/test37.s, + * tests/good/test37.u.s, + * tests/good/test42.-e.s, + * tests/good/test42.-e.u.s, + * tests/good/test42.s, + * tests/good/test42.u.s, + * tests/good/test44.-e.s, + * tests/good/test44.-e.u.s, + * tests/good/test44.s, + * tests/good/test44.u.s, + * tests/good/three-name-spaces.-e.s, + * tests/good/three-name-spaces.-e.u.s, + * tests/good/three-name-spaces.s, + * tests/good/three-name-spaces.u.s, + * tests/good/types-aliases.-e.s, + * tests/good/types-aliases.-e.u.s, + * tests/good/types-aliases.s, + * tests/good/types-aliases.u.s, + * tests/good/var-bob-is-another-bob.-e.s, + * tests/good/var-bob-is-another-bob.-e.u.s, + * tests/good/var-bob-is-another-bob.s, + * tests/good/var-bob-is-another-bob.u.s, + * tests/good/var-override.-e.s, + * tests/good/var-override.-e.u.s, + * tests/good/var-override.s, + * tests/good/var-override.u.s, + * tests/good/while-in-while.-e.s, + * tests/good/while-in-while.-e.u.s, + * tests/good/while-in-while.s, + * tests/good/while-in-while.u.s, + * tests/object-good/attribute-modification.-e.s, + * tests/object-good/attribute-modification.-e.u.s, + * tests/object-good/attribute-modification.s, + * tests/object-good/attribute-modification.u.s, + * tests/object-good/compare-nil-and-object.-e.s, + * tests/object-good/compare-nil-and-object.-e.u.s, + * tests/object-good/compare-nil-and-object.s, + * tests/object-good/compare-nil-and-object.u.s, + * tests/object-good/compare-object-and-nil.-e.s, + * tests/object-good/compare-object-and-nil.-e.u.s, + * tests/object-good/compare-object-and-nil.s, + * tests/object-good/compare-object-and-nil.u.s, + * tests/object-good/explicit-class-type.-e.s, + * tests/object-good/explicit-class-type.-e.u.s, + * tests/object-good/explicit-class-type.s, + * tests/object-good/explicit-class-type.u.s, + * tests/object-good/five-name-spaces.-e.s, + * tests/object-good/five-name-spaces.-e.u.s, + * tests/object-good/five-name-spaces.s, + * tests/object-good/five-name-spaces.u.s, + * tests/object-good/function-call-in-method.-e.s, + * tests/object-good/function-call-in-method.-e.u.s, + * tests/object-good/function-call-in-method.s, + * tests/object-good/function-call-in-method.u.s, + * tests/object-good/function-returning-an-object.-e.s, + * tests/object-good/function-returning-an-object.-e.u.s, + * tests/object-good/function-returning-an-object.s, + * tests/object-good/function-returning-an-object.u.s, + * tests/object-good/function-returning-object.-e.s, + * tests/object-good/function-returning-object.-e.u.s, + * tests/object-good/function-returning-object.s, + * tests/object-good/function-returning-object.u.s, + * tests/object-good/function-taking-an-object-as-argument.-e.s, + * tests/object-good/function-taking-an-object-as-argument.-e.u.s, + * tests/object-good/function-taking-an-object-as-argument.s, + * tests/object-good/function-taking-an-object-as-argument.u.s, + * tests/object-good/function-taking-object-as-argument.-e.s, + * tests/object-good/function-taking-object-as-argument.-e.u.s, + * tests/object-good/function-taking-object-as-argument.s, + * tests/object-good/function-taking-object-as-argument.u.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.-e.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.-e.u.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.u.s, + * tests/object-good/initialize-object-to-nil.-e.s, + * tests/object-good/initialize-object-to-nil.-e.u.s, + * tests/object-good/initialize-object-to-nil.s, + * tests/object-good/initialize-object-to-nil.u.s, + * tests/object-good/inner-class-with-same-member-names.-e.s, + * tests/object-good/inner-class-with-same-member-names.-e.u.s, + * tests/object-good/inner-class-with-same-member-names.s, + * tests/object-good/inner-class-with-same-member-names.u.s, + * tests/object-good/instantiate-object.-e.s, + * tests/object-good/instantiate-object.-e.u.s, + * tests/object-good/instantiate-object.s, + * tests/object-good/instantiate-object.u.s, + * tests/object-good/method-call.-e.s, + * tests/object-good/method-call.-e.u.s, + * tests/object-good/method-call.s, + * tests/object-good/method-call.u.s, + * tests/object-good/method-using-self-as-argument.-e.s, + * tests/object-good/method-using-self-as-argument.-e.u.s, + * tests/object-good/method-using-self-as-argument.s, + * tests/object-good/method-using-self-as-argument.u.s, + * tests/object-good/new-object.-e.s, + * tests/object-good/new-object.-e.u.s, + * tests/object-good/new-object.s, + * tests/object-good/new-object.u.s, + * tests/object-good/nil-as-object-arg.-e.s, + * tests/object-good/nil-as-object-arg.-e.u.s, + * tests/object-good/nil-as-object-arg.s, + * tests/object-good/nil-as-object-arg.u.s, + * tests/object-good/nil-as-object-return-value.-e.s, + * tests/object-good/nil-as-object-return-value.-e.u.s, + * tests/object-good/nil-as-object-return-value.s, + * tests/object-good/nil-as-object-return-value.u.s, + * tests/object-good/redefining-object.-e.s, + * tests/object-good/redefining-object.-e.u.s, + * tests/object-good/redefining-object.s, + * tests/object-good/redefining-object.u.s, + * tests/object-good/redefining-self.-e.s, + * tests/object-good/redefining-self.-e.u.s, + * tests/object-good/redefining-self.s, + * tests/object-good/redefining-self.u.s, + * tests/object-good/simple-class.-e.s, + * tests/object-good/simple-class.-e.u.s, + * tests/object-good/simple-class.s, + * tests/object-good/simple-class.u.s, + * tests/object-good/simple-extends.-e.s, + * tests/object-good/simple-extends.-e.u.s, + * tests/object-good/simple-extends.s, + * tests/object-good/simple-extends.u.s, + * tests/object-good/simple-instantiation.-e.s, + * tests/object-good/simple-instantiation.-e.u.s, + * tests/object-good/simple-instantiation.s, + * tests/object-good/simple-instantiation.u.s, + * tests/object-good/trivial-class.-e.s, + * tests/object-good/trivial-class.-e.u.s, + * tests/object-good/trivial-class.s, + * tests/object-good/trivial-class.u.s, + * tests/object-good/type-simple-class.-e.s, + * tests/object-good/type-simple-class.-e.u.s, + * tests/object-good/type-simple-class.s, + * tests/object-good/type-simple-class.u.s, + * tests/object-good/type-simple-extends.-e.s, + * tests/object-good/type-simple-extends.-e.u.s, + * tests/object-good/type-simple-extends.s, + * tests/object-good/type-simple-extends.u.s, + * tests/object-good/upcast.-e.s, + * tests/object-good/upcast.-e.u.s, + * tests/object-good/upcast.s, + * tests/object-good/upcast.u.s, + * tests/object-good/using-members-from-within-the-class.-e.s, + * tests/object-good/using-members-from-within-the-class.-e.u.s, + * tests/object-good/using-members-from-within-the-class.s, + * tests/object-good/using-members-from-within-the-class.u.s, + * tests/object-good/valid-forward-reference-to-class.-e.s, + * tests/object-good/valid-forward-reference-to-class.-e.u.s, + * tests/object-good/valid-forward-reference-to-class.s, + * tests/object-good/valid-forward-reference-to-class.u.s, + * tests/object-good/variable-modification.-e.s, + * tests/object-good/variable-modification.-e.u.s, + * tests/object-good/variable-modification.s, + * tests/object-good/variable-modification.u.s, + * tests/object-good/variable-of-type-object.-e.s, + * tests/object-good/variable-of-type-object.-e.u.s, + * tests/object-good/variable-of-type-object.s, + * tests/object-good/variable-of-type-object.u.s, + * tests/object-good/vehicle.-e.s, + * tests/object-good/vehicle.-e.u.s, + * tests/object-good/vehicle.s, + * tests/object-good/vehicle.u.s, + * tests/object-good/visitor.-e.s, + * tests/object-good/visitor.-e.u.s, + * tests/object-good/visitor.s, + * tests/object-good/visitor.u.s, + * tests/overload-good/overload-builtin.-e.s, + * tests/overload-good/overload-builtin.-e.u.s, + * tests/overload-good/overload-builtin.s, + * tests/overload-good/overload-builtin.u.s, + * tests/overload-good/overload-function-record-arg.-e.s, + * tests/overload-good/overload-function-record-arg.-e.u.s, + * tests/overload-good/overload-function-record-arg.s, + * tests/overload-good/overload-function-record-arg.u.s, + * tests/overload-good/overload-function.-e.s, + * tests/overload-good/overload-function.-e.u.s, + * tests/overload-good/overload-function.s, + * tests/overload-good/overload-function.u.s, + * tests/overload-good/overload-nil-diambiguated.-e.s, + * tests/overload-good/overload-nil-diambiguated.-e.u.s, + * tests/overload-good/overload-nil-diambiguated.s, + * tests/overload-good/overload-nil-diambiguated.u.s, + * tests/overload-good/overload-var-type-inference.-e.s, + * tests/overload-good/overload-var-type-inference.-e.u.s, + * tests/overload-good/overload-var-type-inference.s, + * tests/overload-good/overload-var-type-inference.u.s, + * tests/runtime/chr-out-of-range1.-e.s, + * tests/runtime/chr-out-of-range1.-e.u.s, + * tests/runtime/chr-out-of-range1.s, + * tests/runtime/chr-out-of-range1.u.s, + * tests/runtime/chr-out-of-range2.-e.s, + * tests/runtime/chr-out-of-range2.-e.u.s, + * tests/runtime/chr-out-of-range2.s, + * tests/runtime/chr-out-of-range2.u.s, + * tests/runtime/substring-out-of-bounds1.-e.s, + * tests/runtime/substring-out-of-bounds1.-e.u.s, + * tests/runtime/substring-out-of-bounds1.s, + * tests/runtime/substring-out-of-bounds1.u.s, + * tests/runtime/substring-out-of-bounds2.-e.s, + * tests/runtime/substring-out-of-bounds2.-e.u.s, + * tests/runtime/substring-out-of-bounds2.s, + * tests/runtime/substring-out-of-bounds2.u.s, + * tests/runtime/substring-out-of-bounds3.-e.s, + * tests/runtime/substring-out-of-bounds3.-e.u.s, + * tests/runtime/substring-out-of-bounds3.s, + * tests/runtime/substring-out-of-bounds3.u.s: + Rename as... + * tests/escapes/for-lower.-e.mips.s, + * tests/escapes/for-lower.-e.u.mips.s, + * tests/escapes/for-lower.mips.s, + * tests/escapes/for-lower.u.mips.s, + * tests/escapes/for-scope.-e.mips.s, + * tests/escapes/for-scope.-e.u.mips.s, + * tests/escapes/for-scope.mips.s, + * tests/escapes/for-scope.u.mips.s, + * tests/escapes/for-upper.-e.mips.s, + * tests/escapes/for-upper.-e.u.mips.s, + * tests/escapes/for-upper.mips.s, + * tests/escapes/for-upper.u.mips.s, + * tests/escapes/formal-escapes.-e.mips.s, + * tests/escapes/formal-escapes.-e.u.mips.s, + * tests/escapes/formal-escapes.mips.s, + * tests/escapes/formal-escapes.u.mips.s, + * tests/escapes/local-escapes.-e.mips.s, + * tests/escapes/local-escapes.-e.u.mips.s, + * tests/escapes/local-escapes.mips.s, + * tests/escapes/local-escapes.u.mips.s, + * tests/escapes/no-functiondec-at-all.-e.mips.s, + * tests/escapes/no-functiondec-at-all.-e.u.mips.s, + * tests/escapes/no-functiondec-at-all.mips.s, + * tests/escapes/no-functiondec-at-all.u.mips.s, + * tests/escapes/record-escapes.-e.mips.s, + * tests/escapes/record-escapes.-e.u.mips.s, + * tests/escapes/record-escapes.mips.s, + * tests/escapes/record-escapes.u.mips.s, + * tests/escapes/recursion.-e.mips.s, + * tests/escapes/recursion.-e.u.mips.s, + * tests/escapes/recursion.mips.s, + * tests/escapes/recursion.u.mips.s, + * tests/escapes/redeclaration.-e.mips.s, + * tests/escapes/redeclaration.-e.u.mips.s, + * tests/escapes/redeclaration.mips.s, + * tests/escapes/redeclaration.u.mips.s, + * tests/escapes/rhs-of-a-vardec.-e.mips.s, + * tests/escapes/rhs-of-a-vardec.-e.u.mips.s, + * tests/escapes/rhs-of-a-vardec.mips.s, + * tests/escapes/rhs-of-a-vardec.u.mips.s, + * tests/escapes/scopes.-e.mips.s, + * tests/escapes/scopes.-e.u.mips.s, + * tests/escapes/scopes.mips.s, + * tests/escapes/scopes.u.mips.s, + * tests/escapes/sl-propagation-1.-e.mips.s, + * tests/escapes/sl-propagation-1.-e.u.mips.s, + * tests/escapes/sl-propagation-1.mips.s, + * tests/escapes/sl-propagation-1.u.mips.s, + * tests/escapes/sl-propagation-2.-e.mips.s, + * tests/escapes/sl-propagation-2.-e.u.mips.s, + * tests/escapes/sl-propagation-2.mips.s, + * tests/escapes/sl-propagation-2.u.mips.s, + * tests/escapes/variable-escapes.-e.mips.s, + * tests/escapes/variable-escapes.-e.u.mips.s, + * tests/escapes/variable-escapes.mips.s, + * tests/escapes/variable-escapes.u.mips.s, + * tests/escapes/variable-inside-for-body.-e.mips.s, + * tests/escapes/variable-inside-for-body.-e.u.mips.s, + * tests/escapes/variable-inside-for-body.mips.s, + * tests/escapes/variable-inside-for-body.u.mips.s, + * tests/escapes/variant-escapes.-e.mips.s, + * tests/escapes/variant-escapes.-e.u.mips.s, + * tests/escapes/variant-escapes.mips.s, + * tests/escapes/variant-escapes.u.mips.s, + * tests/good/all-binop.-e.mips.s, + * tests/good/all-binop.-e.u.mips.s, + * tests/good/all-binop.mips.s, + * tests/good/all-binop.u.mips.s, + * tests/good/array-of-alias.-e.mips.s, + * tests/good/array-of-alias.-e.u.mips.s, + * tests/good/array-of-alias.mips.s, + * tests/good/array-of-alias.u.mips.s, + * tests/good/array-subscript-assign.-e.mips.s, + * tests/good/array-subscript-assign.-e.u.mips.s, + * tests/good/array-subscript-assign.mips.s, + * tests/good/array-subscript-assign.u.mips.s, + * tests/good/array.-e.mips.s, + * tests/good/array.-e.u.mips.s, + * tests/good/array.mips.s, + * tests/good/array.u.mips.s, + * tests/good/assign-and-array-instantiation.-e.mips.s, + * tests/good/assign-and-array-instantiation.-e.u.mips.s, + * tests/good/assign-and-array-instantiation.mips.s, + * tests/good/assign-and-array-instantiation.u.mips.s, + * tests/good/assign-void.-e.mips.s, + * tests/good/assign-void.-e.u.mips.s, + * tests/good/assign-void.mips.s, + * tests/good/assign-void.u.mips.s, + * tests/good/assign-vs-boolean.-e.mips.s, + * tests/good/assign-vs-boolean.-e.u.mips.s, + * tests/good/assign-vs-boolean.mips.s, + * tests/good/assign-vs-boolean.u.mips.s, + * tests/good/assign-vs-rel.-e.mips.s, + * tests/good/assign-vs-rel.-e.u.mips.s, + * tests/good/assign-vs-rel.mips.s, + * tests/good/assign-vs-rel.u.mips.s, + * tests/good/basic-import.-e.mips.s, + * tests/good/basic-import.-e.u.mips.s, + * tests/good/basic-import.mips.s, + * tests/good/basic-import.u.mips.s, + * tests/good/bempel_j.-e.mips.s, + * tests/good/bempel_j.-e.u.mips.s, + * tests/good/bempel_j.mips.s, + * tests/good/bempel_j.u.mips.s, + * tests/good/big-exp.-e.mips.s, + * tests/good/big-exp.-e.u.mips.s, + * tests/good/big-exp.mips.s, + * tests/good/big-exp.u.mips.s, + * tests/good/big-lvalue.-e.mips.s, + * tests/good/big-lvalue.-e.u.mips.s, + * tests/good/big-lvalue.mips.s, + * tests/good/big-lvalue.u.mips.s, + * tests/good/boolean-1.-e.mips.s, + * tests/good/boolean-1.-e.u.mips.s, + * tests/good/boolean-1.mips.s, + * tests/good/boolean-1.u.mips.s, + * tests/good/boolean-2.-e.mips.s, + * tests/good/boolean-2.-e.u.mips.s, + * tests/good/boolean-2.mips.s, + * tests/good/boolean-2.u.mips.s, + * tests/good/break-in-for.-e.mips.s, + * tests/good/break-in-for.-e.u.mips.s, + * tests/good/break-in-for.mips.s, + * tests/good/break-in-for.u.mips.s, + * tests/good/break-in-while.-e.mips.s, + * tests/good/break-in-while.-e.u.mips.s, + * tests/good/break-in-while.mips.s, + * tests/good/break-in-while.u.mips.s, + * tests/good/builtins.-e.mips.s, + * tests/good/builtins.-e.u.mips.s, + * tests/good/builtins.mips.s, + * tests/good/builtins.u.mips.s, + * tests/good/call.-e.mips.s, + * tests/good/call.-e.u.mips.s, + * tests/good/call.mips.s, + * tests/good/call.u.mips.s, + * tests/good/chr-256.-e.mips.s, + * tests/good/chr-256.-e.u.mips.s, + * tests/good/chr-256.mips.s, + * tests/good/chr-256.u.mips.s, + * tests/good/chr-minus-1.-e.mips.s, + * tests/good/chr-minus-1.-e.u.mips.s, + * tests/good/chr-minus-1.mips.s, + * tests/good/chr-minus-1.u.mips.s, + * tests/good/chr.-e.mips.s, + * tests/good/chr.-e.u.mips.s, + * tests/good/chr.mips.s, + * tests/good/chr.u.mips.s, + * tests/good/comments-javalike-nested.-e.mips.s, + * tests/good/comments-javalike-nested.-e.u.mips.s, + * tests/good/comments-javalike-nested.mips.s, + * tests/good/comments-javalike-nested.u.mips.s, + * tests/good/comments-nested.-e.mips.s, + * tests/good/comments-nested.-e.u.mips.s, + * tests/good/comments-nested.mips.s, + * tests/good/comments-nested.u.mips.s, + * tests/good/comments-with-comment-chars.-e.mips.s, + * tests/good/comments-with-comment-chars.-e.u.mips.s, + * tests/good/comments-with-comment-chars.mips.s, + * tests/good/comments-with-comment-chars.u.mips.s, + * tests/good/comments-with-parens.-e.mips.s, + * tests/good/comments-with-parens.-e.u.mips.s, + * tests/good/comments-with-parens.mips.s, + * tests/good/comments-with-parens.u.mips.s, + * tests/good/comments-with-quotes.-e.mips.s, + * tests/good/comments-with-quotes.-e.u.mips.s, + * tests/good/comments-with-quotes.mips.s, + * tests/good/comments-with-quotes.u.mips.s, + * tests/good/commutation-1.-e.mips.s, + * tests/good/commutation-1.-e.u.mips.s, + * tests/good/commutation-1.mips.s, + * tests/good/commutation-1.u.mips.s, + * tests/good/commutation-2.-e.mips.s, + * tests/good/commutation-2.-e.u.mips.s, + * tests/good/commutation-2.mips.s, + * tests/good/commutation-2.u.mips.s, + * tests/good/compare-nil-and-record.-e.mips.s, + * tests/good/compare-nil-and-record.-e.u.mips.s, + * tests/good/compare-nil-and-record.mips.s, + * tests/good/compare-nil-and-record.u.mips.s, + * tests/good/compare-record-and-nil.-e.mips.s, + * tests/good/compare-record-and-nil.-e.u.mips.s, + * tests/good/compare-record-and-nil.mips.s, + * tests/good/compare-record-and-nil.u.mips.s, + * tests/good/compare-record-and-record.-e.mips.s, + * tests/good/compare-record-and-record.-e.u.mips.s, + * tests/good/compare-record-and-record.mips.s, + * tests/good/compare-record-and-record.u.mips.s, + * tests/good/compare-void.-e.mips.s, + * tests/good/compare-void.-e.u.mips.s, + * tests/good/compare-void.mips.s, + * tests/good/compare-void.u.mips.s, + * tests/good/complex-import.-e.mips.s, + * tests/good/complex-import.-e.u.mips.s, + * tests/good/complex-import.mips.s, + * tests/good/complex-import.u.mips.s, + * tests/good/concat.-e.mips.s, + * tests/good/concat.-e.u.mips.s, + * tests/good/concat.mips.s, + * tests/good/concat.u.mips.s, + * tests/good/concurrent-arguments.-e.mips.s, + * tests/good/concurrent-arguments.-e.u.mips.s, + * tests/good/concurrent-arguments.mips.s, + * tests/good/concurrent-arguments.u.mips.s, + * tests/good/division-with-negative-operands.-e.mips.s, + * tests/good/division-with-negative-operands.-e.u.mips.s, + * tests/good/division-with-negative-operands.mips.s, + * tests/good/division-with-negative-operands.u.mips.s, + * tests/good/donald.-e.mips.s, + * tests/good/donald.-e.u.mips.s, + * tests/good/donald.mips.s, + * tests/good/donald.u.mips.s, + * tests/good/empty-let-body.-e.mips.s, + * tests/good/empty-let-body.-e.u.mips.s, + * tests/good/empty-let-body.mips.s, + * tests/good/empty-let-body.u.mips.s, + * tests/good/empty-parens.-e.mips.s, + * tests/good/empty-parens.-e.u.mips.s, + * tests/good/empty-parens.mips.s, + * tests/good/empty-parens.u.mips.s, + * tests/good/empty-record-type.-e.mips.s, + * tests/good/empty-record-type.-e.u.mips.s, + * tests/good/empty-record-type.mips.s, + * tests/good/empty-record-type.u.mips.s, + * tests/good/escaping-record.-e.mips.s, + * tests/good/escaping-record.-e.u.mips.s, + * tests/good/escaping-record.mips.s, + * tests/good/escaping-record.u.mips.s, + * tests/good/evalexp.-e.mips.s, + * tests/good/evalexp.-e.u.mips.s, + * tests/good/evalexp.mips.s, + * tests/good/evalexp.u.mips.s, + * tests/good/exit-51.-e.mips.s, + * tests/good/exit-51.-e.u.mips.s, + * tests/good/exit-51.mips.s, + * tests/good/exit-51.u.mips.s, + * tests/good/explicit-record-type.-e.mips.s, + * tests/good/explicit-record-type.-e.u.mips.s, + * tests/good/explicit-record-type.mips.s, + * tests/good/explicit-record-type.u.mips.s, + * tests/good/fact.-e.mips.s, + * tests/good/fact.-e.u.mips.s, + * tests/good/fact.mips.s, + * tests/good/fact.u.mips.s, + * tests/good/field-of-field.-e.mips.s, + * tests/good/field-of-field.-e.u.mips.s, + * tests/good/field-of-field.mips.s, + * tests/good/field-of-field.u.mips.s, + * tests/good/for-high-computed-once.-e.mips.s, + * tests/good/for-high-computed-once.-e.u.mips.s, + * tests/good/for-high-computed-once.mips.s, + * tests/good/for-high-computed-once.u.mips.s, + * tests/good/for-high-same-name-as-index.-e.mips.s, + * tests/good/for-high-same-name-as-index.-e.u.mips.s, + * tests/good/for-high-same-name-as-index.mips.s, + * tests/good/for-high-same-name-as-index.u.mips.s, + * tests/good/for-in-let.-e.mips.s, + * tests/good/for-in-let.-e.u.mips.s, + * tests/good/for-in-let.mips.s, + * tests/good/for-in-let.u.mips.s, + * tests/good/for-in-while.-e.mips.s, + * tests/good/for-in-while.-e.u.mips.s, + * tests/good/for-in-while.mips.s, + * tests/good/for-in-while.u.mips.s, + * tests/good/for-scope.-e.mips.s, + * tests/good/for-scope.-e.u.mips.s, + * tests/good/for-scope.mips.s, + * tests/good/for-scope.u.mips.s, + * tests/good/for-up-to-32bits.-e.mips.s, + * tests/good/for-up-to-32bits.-e.u.mips.s, + * tests/good/for-up-to-32bits.mips.s, + * tests/good/for-up-to-32bits.u.mips.s, + * tests/good/for.-e.mips.s, + * tests/good/for.-e.u.mips.s, + * tests/good/for.mips.s, + * tests/good/for.u.mips.s, + * tests/good/forward-fun-and-type-decl.-e.mips.s, + * tests/good/forward-fun-and-type-decl.-e.u.mips.s, + * tests/good/forward-fun-and-type-decl.mips.s, + * tests/good/forward-fun-and-type-decl.u.mips.s, + * tests/good/four-hex-backslash.-e.mips.s, + * tests/good/four-hex-backslash.-e.u.mips.s, + * tests/good/four-hex-backslash.mips.s, + * tests/good/four-hex-backslash.u.mips.s, + * tests/good/fractions-underloaded.-e.mips.s, + * tests/good/fractions-underloaded.-e.u.mips.s, + * tests/good/fractions-underloaded.mips.s, + * tests/good/fractions-underloaded.u.mips.s, + * tests/good/fun-vs-var.-e.mips.s, + * tests/good/fun-vs-var.-e.u.mips.s, + * tests/good/fun-vs-var.mips.s, + * tests/good/fun-vs-var.u.mips.s, + * tests/good/functions.-e.mips.s, + * tests/good/functions.-e.u.mips.s, + * tests/good/functions.mips.s, + * tests/good/functions.u.mips.s, + * tests/good/getchar-no-static-string.-e.mips.s, + * tests/good/getchar-no-static-string.-e.u.mips.s, + * tests/good/getchar-no-static-string.mips.s, + * tests/good/getchar-no-static-string.u.mips.s, + * tests/good/getchar.-e.mips.s, + * tests/good/getchar.-e.u.mips.s, + * tests/good/getchar.mips.s, + * tests/good/getchar.u.mips.s, + * tests/good/if-and-bool.-e.mips.s, + * tests/good/if-and-bool.-e.u.mips.s, + * tests/good/if-and-bool.mips.s, + * tests/good/if-and-bool.u.mips.s, + * tests/good/if-and-if.-e.mips.s, + * tests/good/if-and-if.-e.u.mips.s, + * tests/good/if-and-if.mips.s, + * tests/good/if-and-if.u.mips.s, + * tests/good/if-and-rel.-e.mips.s, + * tests/good/if-and-rel.-e.u.mips.s, + * tests/good/if-and-rel.mips.s, + * tests/good/if-and-rel.u.mips.s, + * tests/good/if-void-body.-e.mips.s, + * tests/good/if-void-body.-e.u.mips.s, + * tests/good/if-void-body.mips.s, + * tests/good/if-void-body.u.mips.s, + * tests/good/if.-e.mips.s, + * tests/good/if.-e.u.mips.s, + * tests/good/if.mips.s, + * tests/good/if.u.mips.s, + * tests/good/init-array.-e.mips.s, + * tests/good/init-array.-e.u.mips.s, + * tests/good/init-array.mips.s, + * tests/good/init-array.u.mips.s, + * tests/good/initialize-to-nil.-e.mips.s, + * tests/good/initialize-to-nil.-e.u.mips.s, + * tests/good/initialize-to-nil.mips.s, + * tests/good/initialize-to-nil.u.mips.s, + * tests/good/int-comparison.-e.mips.s, + * tests/good/int-comparison.-e.u.mips.s, + * tests/good/int-comparison.mips.s, + * tests/good/int-comparison.u.mips.s, + * tests/good/int-var-ordering.-e.mips.s, + * tests/good/int-var-ordering.-e.u.mips.s, + * tests/good/int-var-ordering.mips.s, + * tests/good/int-var-ordering.u.mips.s, + * tests/good/invisible-valid-types.-e.mips.s, + * tests/good/invisible-valid-types.-e.u.mips.s, + * tests/good/invisible-valid-types.mips.s, + * tests/good/invisible-valid-types.u.mips.s, + * tests/good/just-a-simple-for-1.-e.mips.s, + * tests/good/just-a-simple-for-1.-e.u.mips.s, + * tests/good/just-a-simple-for-1.mips.s, + * tests/good/just-a-simple-for-1.u.mips.s, + * tests/good/just-a-simple-for-2.-e.mips.s, + * tests/good/just-a-simple-for-2.-e.u.mips.s, + * tests/good/just-a-simple-for-2.mips.s, + * tests/good/just-a-simple-for-2.u.mips.s, + * tests/good/large-ints.-e.mips.s, + * tests/good/large-ints.-e.u.mips.s, + * tests/good/large-ints.mips.s, + * tests/good/large-ints.u.mips.s, + * tests/good/let-in-for-init.-e.mips.s, + * tests/good/let-in-for-init.-e.u.mips.s, + * tests/good/let-in-for-init.mips.s, + * tests/good/let-in-for-init.u.mips.s, + * tests/good/let-scope-for-functions.-e.mips.s, + * tests/good/let-scope-for-functions.-e.u.mips.s, + * tests/good/let-scope-for-functions.mips.s, + * tests/good/let-scope-for-functions.u.mips.s, + * tests/good/let-scope-for-types.-e.mips.s, + * tests/good/let-scope-for-types.-e.u.mips.s, + * tests/good/let-scope-for-types.mips.s, + * tests/good/let-scope-for-types.u.mips.s, + * tests/good/letexp-eseq.-e.mips.s, + * tests/good/letexp-eseq.-e.u.mips.s, + * tests/good/letexp-eseq.mips.s, + * tests/good/letexp-eseq.u.mips.s, + * tests/good/local-vs-global-type.-e.mips.s, + * tests/good/local-vs-global-type.-e.u.mips.s, + * tests/good/local-vs-global-type.mips.s, + * tests/good/local-vs-global-type.u.mips.s, + * tests/good/many-args.-e.mips.s, + * tests/good/many-args.-e.u.mips.s, + * tests/good/many-args.mips.s, + * tests/good/many-args.u.mips.s, + * tests/good/many-bool-ops.-e.mips.s, + * tests/good/many-bool-ops.-e.u.mips.s, + * tests/good/many-bool-ops.mips.s, + * tests/good/many-bool-ops.u.mips.s, + * tests/good/many-functions.-e.mips.s, + * tests/good/many-functions.-e.u.mips.s, + * tests/good/many-functions.mips.s, + * tests/good/many-functions.u.mips.s, + * tests/good/many-vars.-e.mips.s, + * tests/good/many-vars.-e.u.mips.s, + * tests/good/many-vars.mips.s, + * tests/good/many-vars.u.mips.s, + * tests/good/merge.-e.mips.s, + * tests/good/merge.-e.u.mips.s, + * tests/good/merge.mips.s, + * tests/good/merge.u.mips.s, + * tests/good/mini-morpho.-e.mips.s, + * tests/good/mini-morpho.-e.u.mips.s, + * tests/good/mini-morpho.mips.s, + * tests/good/mini-morpho.u.mips.s, + * tests/good/mutually-recursive-functions.-e.mips.s, + * tests/good/mutually-recursive-functions.-e.u.mips.s, + * tests/good/mutually-recursive-functions.mips.s, + * tests/good/mutually-recursive-functions.u.mips.s, + * tests/good/mutually-recursive-procedures.-e.mips.s, + * tests/good/mutually-recursive-procedures.-e.u.mips.s, + * tests/good/mutually-recursive-procedures.mips.s, + * tests/good/mutually-recursive-procedures.u.mips.s, + * tests/good/nil-as-arg.-e.mips.s, + * tests/good/nil-as-arg.-e.u.mips.s, + * tests/good/nil-as-arg.mips.s, + * tests/good/nil-as-arg.u.mips.s, + * tests/good/nil-as-return-value.-e.mips.s, + * tests/good/nil-as-return-value.-e.u.mips.s, + * tests/good/nil-as-return-value.mips.s, + * tests/good/nil-as-return-value.u.mips.s, + * tests/good/nine.-e.mips.s, + * tests/good/nine.-e.u.mips.s, + * tests/good/nine.mips.s, + * tests/good/nine.u.mips.s, + * tests/good/non-commutative-move-mem-expr.-e.mips.s, + * tests/good/non-commutative-move-mem-expr.-e.u.mips.s, + * tests/good/non-commutative-move-mem-expr.mips.s, + * tests/good/non-commutative-move-mem-expr.u.mips.s, + * tests/good/nul-character.-e.mips.s, + * tests/good/nul-character.-e.u.mips.s, + * tests/good/nul-character.mips.s, + * tests/good/nul-character.u.mips.s, + * tests/good/of-precedence.-e.mips.s, + * tests/good/of-precedence.-e.u.mips.s, + * tests/good/of-precedence.mips.s, + * tests/good/of-precedence.u.mips.s, + * tests/good/order-strings.-e.mips.s, + * tests/good/order-strings.-e.u.mips.s, + * tests/good/order-strings.mips.s, + * tests/good/order-strings.u.mips.s, + * tests/good/precedence.-e.mips.s, + * tests/good/precedence.-e.u.mips.s, + * tests/good/precedence.mips.s, + * tests/good/precedence.u.mips.s, + * tests/good/preincrement.-e.mips.s, + * tests/good/preincrement.-e.u.mips.s, + * tests/good/preincrement.mips.s, + * tests/good/preincrement.u.mips.s, + * tests/good/print-chr-ord.-e.mips.s, + * tests/good/print-chr-ord.-e.u.mips.s, + * tests/good/print-chr-ord.mips.s, + * tests/good/print-chr-ord.u.mips.s, + * tests/good/print-tree.-e.mips.s, + * tests/good/print-tree.-e.u.mips.s, + * tests/good/print-tree.mips.s, + * tests/good/print-tree.u.mips.s, + * tests/good/queens.-e.mips.s, + * tests/good/queens.-e.u.mips.s, + * tests/good/queens.mips.s, + * tests/good/queens.u.mips.s, + * tests/good/record.-e.mips.s, + * tests/good/record.-e.u.mips.s, + * tests/good/record.mips.s, + * tests/good/record.u.mips.s, + * tests/good/recursive-type.-e.mips.s, + * tests/good/recursive-type.-e.u.mips.s, + * tests/good/recursive-type.mips.s, + * tests/good/recursive-type.u.mips.s, + * tests/good/recursive-types-mutual.-e.mips.s, + * tests/good/recursive-types-mutual.-e.u.mips.s, + * tests/good/recursive-types-mutual.mips.s, + * tests/good/recursive-types-mutual.u.mips.s, + * tests/good/recursive-types.-e.mips.s, + * tests/good/recursive-types.-e.u.mips.s, + * tests/good/recursive-types.mips.s, + * tests/good/recursive-types.u.mips.s, + * tests/good/redefine-int.-e.mips.s, + * tests/good/redefine-int.-e.u.mips.s, + * tests/good/redefine-int.mips.s, + * tests/good/redefine-int.u.mips.s, + * tests/good/redefine-print.-e.mips.s, + * tests/good/redefine-print.-e.u.mips.s, + * tests/good/redefine-print.mips.s, + * tests/good/redefine-print.u.mips.s, + * tests/good/rel.-e.mips.s, + * tests/good/rel.-e.u.mips.s, + * tests/good/rel.mips.s, + * tests/good/rel.u.mips.s, + * tests/good/scopes-protect-types.-e.mips.s, + * tests/good/scopes-protect-types.-e.u.mips.s, + * tests/good/scopes-protect-types.mips.s, + * tests/good/scopes-protect-types.u.mips.s, + * tests/good/scopes-protect-vars.-e.mips.s, + * tests/good/scopes-protect-vars.-e.u.mips.s, + * tests/good/scopes-protect-vars.mips.s, + * tests/good/scopes-protect-vars.u.mips.s, + * tests/good/seqexp-arithmetics.-e.mips.s, + * tests/good/seqexp-arithmetics.-e.u.mips.s, + * tests/good/seqexp-arithmetics.mips.s, + * tests/good/seqexp-arithmetics.u.mips.s, + * tests/good/shadowed-streq.-e.mips.s, + * tests/good/shadowed-streq.-e.u.mips.s, + * tests/good/shadowed-streq.mips.s, + * tests/good/shadowed-streq.u.mips.s, + * tests/good/shadowing-functions.-e.mips.s, + * tests/good/shadowing-functions.-e.u.mips.s, + * tests/good/shadowing-functions.mips.s, + * tests/good/shadowing-functions.u.mips.s, + * tests/good/shadowing-types-separate.-e.mips.s, + * tests/good/shadowing-types-separate.-e.u.mips.s, + * tests/good/shadowing-types-separate.mips.s, + * tests/good/shadowing-types-separate.u.mips.s, + * tests/good/side-effects-in-init.-e.mips.s, + * tests/good/side-effects-in-init.-e.u.mips.s, + * tests/good/side-effects-in-init.mips.s, + * tests/good/side-effects-in-init.u.mips.s, + * tests/good/side-effects-in-sxp.-e.mips.s, + * tests/good/side-effects-in-sxp.-e.u.mips.s, + * tests/good/side-effects-in-sxp.mips.s, + * tests/good/side-effects-in-sxp.u.mips.s, + * tests/good/side-effects.-e.mips.s, + * tests/good/side-effects.-e.u.mips.s, + * tests/good/side-effects.mips.s, + * tests/good/side-effects.u.mips.s, + * tests/good/single-variable.-e.mips.s, + * tests/good/single-variable.-e.u.mips.s, + * tests/good/single-variable.mips.s, + * tests/good/single-variable.u.mips.s, + * tests/good/so-many-args-in-rec-func.-e.mips.s, + * tests/good/so-many-args-in-rec-func.-e.u.mips.s, + * tests/good/so-many-args-in-rec-func.mips.s, + * tests/good/so-many-args-in-rec-func.u.mips.s, + * tests/good/strcmp.-e.mips.s, + * tests/good/strcmp.-e.u.mips.s, + * tests/good/strcmp.mips.s, + * tests/good/strcmp.u.mips.s, + * tests/good/string-backslash-char.-e.mips.s, + * tests/good/string-backslash-char.-e.u.mips.s, + * tests/good/string-backslash-char.mips.s, + * tests/good/string-backslash-char.u.mips.s, + * tests/good/string-backslash-octal.-e.mips.s, + * tests/good/string-backslash-octal.-e.u.mips.s, + * tests/good/string-backslash-octal.mips.s, + * tests/good/string-backslash-octal.u.mips.s, + * tests/good/string-backslash-tortured.-e.mips.s, + * tests/good/string-backslash-tortured.-e.u.mips.s, + * tests/good/string-backslash-tortured.mips.s, + * tests/good/string-backslash-tortured.u.mips.s, + * tests/good/string-huge.-e.mips.s, + * tests/good/string-huge.-e.u.mips.s, + * tests/good/string-huge.mips.s, + * tests/good/string-huge.u.mips.s, + * tests/good/string-int-not-keywords.-e.mips.s, + * tests/good/string-int-not-keywords.-e.u.mips.s, + * tests/good/string-int-not-keywords.mips.s, + * tests/good/string-int-not-keywords.u.mips.s, + * tests/good/string-simple-quotes.-e.mips.s, + * tests/good/string-simple-quotes.-e.u.mips.s, + * tests/good/string-simple-quotes.mips.s, + * tests/good/string-simple-quotes.u.mips.s, + * tests/good/string-var-comparing.-e.mips.s, + * tests/good/string-var-comparing.-e.u.mips.s, + * tests/good/string-var-comparing.mips.s, + * tests/good/string-var-comparing.u.mips.s, + * tests/good/string-var-ordering.-e.mips.s, + * tests/good/string-var-ordering.-e.u.mips.s, + * tests/good/string-var-ordering.mips.s, + * tests/good/string-var-ordering.u.mips.s, + * tests/good/stupid-array-type.-e.mips.s, + * tests/good/stupid-array-type.-e.u.mips.s, + * tests/good/stupid-array-type.mips.s, + * tests/good/stupid-array-type.u.mips.s, + * tests/good/substring-copy-all.-e.mips.s, + * tests/good/substring-copy-all.-e.u.mips.s, + * tests/good/substring-copy-all.mips.s, + * tests/good/substring-copy-all.u.mips.s, + * tests/good/substring-copy-nothing.-e.mips.s, + * tests/good/substring-copy-nothing.-e.u.mips.s, + * tests/good/substring-copy-nothing.mips.s, + * tests/good/substring-copy-nothing.u.mips.s, + * tests/good/substring-too-high-sum.-e.mips.s, + * tests/good/substring-too-high-sum.-e.u.mips.s, + * tests/good/substring-too-high-sum.mips.s, + * tests/good/substring-too-high-sum.u.mips.s, + * tests/good/substring-too-low-first.-e.mips.s, + * tests/good/substring-too-low-first.-e.u.mips.s, + * tests/good/substring-too-low-first.mips.s, + * tests/good/substring-too-low-first.u.mips.s, + * tests/good/substring-too-low-length.-e.mips.s, + * tests/good/substring-too-low-length.-e.u.mips.s, + * tests/good/substring-too-low-length.mips.s, + * tests/good/substring-too-low-length.u.mips.s, + * tests/good/substring.-e.mips.s, + * tests/good/substring.-e.u.mips.s, + * tests/good/substring.mips.s, + * tests/good/substring.u.mips.s, + * tests/good/test27.-e.mips.s, + * tests/good/test27.-e.u.mips.s, + * tests/good/test27.mips.s, + * tests/good/test27.u.mips.s, + * tests/good/test30.-e.mips.s, + * tests/good/test30.-e.u.mips.s, + * tests/good/test30.mips.s, + * tests/good/test30.u.mips.s, + * tests/good/test37.-e.mips.s, + * tests/good/test37.-e.u.mips.s, + * tests/good/test37.mips.s, + * tests/good/test37.u.mips.s, + * tests/good/test42.-e.mips.s, + * tests/good/test42.-e.u.mips.s, + * tests/good/test42.mips.s, + * tests/good/test42.u.mips.s, + * tests/good/test44.-e.mips.s, + * tests/good/test44.-e.u.mips.s, + * tests/good/test44.mips.s, + * tests/good/test44.u.mips.s, + * tests/good/three-name-spaces.-e.mips.s, + * tests/good/three-name-spaces.-e.u.mips.s, + * tests/good/three-name-spaces.mips.s, + * tests/good/three-name-spaces.u.mips.s, + * tests/good/types-aliases.-e.mips.s, + * tests/good/types-aliases.-e.u.mips.s, + * tests/good/types-aliases.mips.s, + * tests/good/types-aliases.u.mips.s, + * tests/good/var-bob-is-another-bob.-e.mips.s, + * tests/good/var-bob-is-another-bob.-e.u.mips.s, + * tests/good/var-bob-is-another-bob.mips.s, + * tests/good/var-bob-is-another-bob.u.mips.s, + * tests/good/var-override.-e.mips.s, + * tests/good/var-override.-e.u.mips.s, + * tests/good/var-override.mips.s, + * tests/good/var-override.u.mips.s, + * tests/good/while-in-while.-e.mips.s, + * tests/good/while-in-while.-e.u.mips.s, + * tests/good/while-in-while.mips.s, + * tests/good/while-in-while.u.mips.s, + * tests/object-good/attribute-modification.-e.mips.s, + * tests/object-good/attribute-modification.-e.u.mips.s, + * tests/object-good/attribute-modification.mips.s, + * tests/object-good/attribute-modification.u.mips.s, + * tests/object-good/compare-nil-and-object.-e.mips.s, + * tests/object-good/compare-nil-and-object.-e.u.mips.s, + * tests/object-good/compare-nil-and-object.mips.s, + * tests/object-good/compare-nil-and-object.u.mips.s, + * tests/object-good/compare-object-and-nil.-e.mips.s, + * tests/object-good/compare-object-and-nil.-e.u.mips.s, + * tests/object-good/compare-object-and-nil.mips.s, + * tests/object-good/compare-object-and-nil.u.mips.s, + * tests/object-good/explicit-class-type.-e.mips.s, + * tests/object-good/explicit-class-type.-e.u.mips.s, + * tests/object-good/explicit-class-type.mips.s, + * tests/object-good/explicit-class-type.u.mips.s, + * tests/object-good/five-name-spaces.-e.mips.s, + * tests/object-good/five-name-spaces.-e.u.mips.s, + * tests/object-good/five-name-spaces.mips.s, + * tests/object-good/five-name-spaces.u.mips.s, + * tests/object-good/function-call-in-method.-e.mips.s, + * tests/object-good/function-call-in-method.-e.u.mips.s, + * tests/object-good/function-call-in-method.mips.s, + * tests/object-good/function-call-in-method.u.mips.s, + * tests/object-good/function-returning-an-object.-e.mips.s, + * tests/object-good/function-returning-an-object.-e.u.mips.s, + * tests/object-good/function-returning-an-object.mips.s, + * tests/object-good/function-returning-an-object.u.mips.s, + * tests/object-good/function-returning-object.-e.mips.s, + * tests/object-good/function-returning-object.-e.u.mips.s, + * tests/object-good/function-returning-object.mips.s, + * tests/object-good/function-returning-object.u.mips.s, + * tests/object-good/function-taking-an-object-as-argument.-e.mips.s, + * tests/object-good/function-taking-an-object-as-argument.-e.u.mips.s, + * tests/object-good/function-taking-an-object-as-argument.mips.s, + * tests/object-good/function-taking-an-object-as-argument.u.mips.s, + * tests/object-good/function-taking-object-as-argument.-e.mips.s, + * tests/object-good/function-taking-object-as-argument.-e.u.mips.s, + * tests/object-good/function-taking-object-as-argument.mips.s, + * tests/object-good/function-taking-object-as-argument.u.mips.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.-e.mips.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.-e.u.mips.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.mips.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.u.mips.s, + * tests/object-good/initialize-object-to-nil.-e.mips.s, + * tests/object-good/initialize-object-to-nil.-e.u.mips.s, + * tests/object-good/initialize-object-to-nil.mips.s, + * tests/object-good/initialize-object-to-nil.u.mips.s, + * tests/object-good/inner-class-with-same-member-names.-e.mips.s, + * tests/object-good/inner-class-with-same-member-names.-e.u.mips.s, + * tests/object-good/inner-class-with-same-member-names.mips.s, + * tests/object-good/inner-class-with-same-member-names.u.mips.s, + * tests/object-good/instantiate-object.-e.mips.s, + * tests/object-good/instantiate-object.-e.u.mips.s, + * tests/object-good/instantiate-object.mips.s, + * tests/object-good/instantiate-object.u.mips.s, + * tests/object-good/method-call.-e.mips.s, + * tests/object-good/method-call.-e.u.mips.s, + * tests/object-good/method-call.mips.s, + * tests/object-good/method-call.u.mips.s, + * tests/object-good/method-using-self-as-argument.-e.mips.s, + * tests/object-good/method-using-self-as-argument.-e.u.mips.s, + * tests/object-good/method-using-self-as-argument.mips.s, + * tests/object-good/method-using-self-as-argument.u.mips.s, + * tests/object-good/new-object.-e.mips.s, + * tests/object-good/new-object.-e.u.mips.s, + * tests/object-good/new-object.mips.s, + * tests/object-good/new-object.u.mips.s, + * tests/object-good/nil-as-object-arg.-e.mips.s, + * tests/object-good/nil-as-object-arg.-e.u.mips.s, + * tests/object-good/nil-as-object-arg.mips.s, + * tests/object-good/nil-as-object-arg.u.mips.s, + * tests/object-good/nil-as-object-return-value.-e.mips.s, + * tests/object-good/nil-as-object-return-value.-e.u.mips.s, + * tests/object-good/nil-as-object-return-value.mips.s, + * tests/object-good/nil-as-object-return-value.u.mips.s, + * tests/object-good/redefining-object.-e.mips.s, + * tests/object-good/redefining-object.-e.u.mips.s, + * tests/object-good/redefining-object.mips.s, + * tests/object-good/redefining-object.u.mips.s, + * tests/object-good/redefining-self.-e.mips.s, + * tests/object-good/redefining-self.-e.u.mips.s, + * tests/object-good/redefining-self.mips.s, + * tests/object-good/redefining-self.u.mips.s, + * tests/object-good/simple-class.-e.mips.s, + * tests/object-good/simple-class.-e.u.mips.s, + * tests/object-good/simple-class.mips.s, + * tests/object-good/simple-class.u.mips.s, + * tests/object-good/simple-extends.-e.mips.s, + * tests/object-good/simple-extends.-e.u.mips.s, + * tests/object-good/simple-extends.mips.s, + * tests/object-good/simple-extends.u.mips.s, + * tests/object-good/simple-instantiation.-e.mips.s, + * tests/object-good/simple-instantiation.-e.u.mips.s, + * tests/object-good/simple-instantiation.mips.s, + * tests/object-good/simple-instantiation.u.mips.s, + * tests/object-good/trivial-class.-e.mips.s, + * tests/object-good/trivial-class.-e.u.mips.s, + * tests/object-good/trivial-class.mips.s, + * tests/object-good/trivial-class.u.mips.s, + * tests/object-good/type-simple-class.-e.mips.s, + * tests/object-good/type-simple-class.-e.u.mips.s, + * tests/object-good/type-simple-class.mips.s, + * tests/object-good/type-simple-class.u.mips.s, + * tests/object-good/type-simple-extends.-e.mips.s, + * tests/object-good/type-simple-extends.-e.u.mips.s, + * tests/object-good/type-simple-extends.mips.s, + * tests/object-good/type-simple-extends.u.mips.s, + * tests/object-good/upcast.-e.mips.s, + * tests/object-good/upcast.-e.u.mips.s, + * tests/object-good/upcast.mips.s, + * tests/object-good/upcast.u.mips.s, + * tests/object-good/using-members-from-within-the-class.-e.mips.s, + * tests/object-good/using-members-from-within-the-class.-e.u.mips.s, + * tests/object-good/using-members-from-within-the-class.mips.s, + * tests/object-good/using-members-from-within-the-class.u.mips.s, + * tests/object-good/valid-forward-reference-to-class.-e.mips.s, + * tests/object-good/valid-forward-reference-to-class.-e.u.mips.s, + * tests/object-good/valid-forward-reference-to-class.mips.s, + * tests/object-good/valid-forward-reference-to-class.u.mips.s, + * tests/object-good/variable-modification.-e.mips.s, + * tests/object-good/variable-modification.-e.u.mips.s, + * tests/object-good/variable-modification.mips.s, + * tests/object-good/variable-modification.u.mips.s, + * tests/object-good/variable-of-type-object.-e.mips.s, + * tests/object-good/variable-of-type-object.-e.u.mips.s, + * tests/object-good/variable-of-type-object.mips.s, + * tests/object-good/variable-of-type-object.u.mips.s, + * tests/object-good/vehicle.-e.mips.s, + * tests/object-good/vehicle.-e.u.mips.s, + * tests/object-good/vehicle.mips.s, + * tests/object-good/vehicle.u.mips.s, + * tests/object-good/visitor.-e.mips.s, + * tests/object-good/visitor.-e.u.mips.s, + * tests/object-good/visitor.mips.s, + * tests/object-good/visitor.u.mips.s, + * tests/overload-good/overload-builtin.-e.mips.s, + * tests/overload-good/overload-builtin.-e.u.mips.s, + * tests/overload-good/overload-builtin.mips.s, + * tests/overload-good/overload-builtin.u.mips.s, + * tests/overload-good/overload-function-record-arg.-e.mips.s, + * tests/overload-good/overload-function-record-arg.-e.u.mips.s, + * tests/overload-good/overload-function-record-arg.mips.s, + * tests/overload-good/overload-function-record-arg.u.mips.s, + * tests/overload-good/overload-function.-e.mips.s, + * tests/overload-good/overload-function.-e.u.mips.s, + * tests/overload-good/overload-function.mips.s, + * tests/overload-good/overload-function.u.mips.s, + * tests/overload-good/overload-nil-diambiguated.-e.mips.s, + * tests/overload-good/overload-nil-diambiguated.-e.u.mips.s, + * tests/overload-good/overload-nil-diambiguated.mips.s, + * tests/overload-good/overload-nil-diambiguated.u.mips.s, + * tests/overload-good/overload-var-type-inference.-e.mips.s, + * tests/overload-good/overload-var-type-inference.-e.u.mips.s, + * tests/overload-good/overload-var-type-inference.mips.s, + * tests/overload-good/overload-var-type-inference.u.mips.s, + * tests/runtime/chr-out-of-range1.-e.mips.s, + * tests/runtime/chr-out-of-range1.-e.u.mips.s, + * tests/runtime/chr-out-of-range1.mips.s, + * tests/runtime/chr-out-of-range1.u.mips.s, + * tests/runtime/chr-out-of-range2.-e.mips.s, + * tests/runtime/chr-out-of-range2.-e.u.mips.s, + * tests/runtime/chr-out-of-range2.mips.s, + * tests/runtime/chr-out-of-range2.u.mips.s, + * tests/runtime/substring-out-of-bounds1.-e.mips.s, + * tests/runtime/substring-out-of-bounds1.-e.u.mips.s, + * tests/runtime/substring-out-of-bounds1.mips.s, + * tests/runtime/substring-out-of-bounds1.u.mips.s, + * tests/runtime/substring-out-of-bounds2.-e.mips.s, + * tests/runtime/substring-out-of-bounds2.-e.u.mips.s, + * tests/runtime/substring-out-of-bounds2.mips.s, + * tests/runtime/substring-out-of-bounds2.u.mips.s, + * tests/runtime/substring-out-of-bounds3.-e.mips.s, + * tests/runtime/substring-out-of-bounds3.-e.u.mips.s, + * tests/runtime/substring-out-of-bounds3.mips.s, + * tests/runtime/substring-out-of-bounds3.u.mips.s, + ...these. + +2014-05-14 Roland Levillain + + Regen the GNU/Linux IA-32 Tiger runtime. + + * src/target/ia32/runtime-gnu-linux.s: Here, using the following + command: + + gcc -m32 -S -o src/target/ia32/runtime-gnu-linux.s \ + src/target/tiger-runtime.c + +2014-05-14 Roland Levillain + + Handle malloc failures in the generic Tiger runtime. + + * src/target/tiger-runtime.c (tc_malloc): Here, to address Trac + ticket #13 (https://trac.lrde.epita.fr/tc/ticket/13). + +2014-05-14 Roland Levillain + + Require HAVM 0.26. + + * configure.ac: Here. + +2014-05-14 Roland Levillain + + Regen ChangeLog. + +2014-05-14 Roland Levillain + + Show more code to help students. + + * src/translate/level.cc (translate::Level::fp) + * src/translate/translation.cc (translate::static_link): + Here. + +2014-05-05 Roland Levillain + + Fix the generation of timestamps in src/transform/. + + * src/transform/local.mk: Fix the name of *.stamp files. + * dev/stagize: Likewise. + +2014-05-05 Roland Levillain + + Improve the documentation of bind::Renamer. + + * src/bind/renamer.hh: Here. + +2014-05-05 Roland Levillain + + Regen ChangeLog. + +2014-03-18 Roland Levillain + + Improve the documentation of type::Class. + + * src/type/class.hh + (type::Class::attr_type, type::Class::meth_type): Here. + Reported by Pierre De Abreu . + (type::Class::attr_find): Typo in comment. + +2014-03-11 Roland Levillain + + Regen ChangeLog. + +2014-03-07 Roland Levillain + + Remove a SWIG workaround. + + * src/escapes/escapes-visitor.hh (escapes::EscapesVisitor): Here. + * src/parse/tiger-parser.hh: Update a comment about SWIG. + +2014-03-07 Roland Levillain + + Fix and re-enable tests/good/getchar.tig. + + * tests/good/getchar.tig: Here, as this test is now fully + supported. Read the input from the stdin using getchar(), so that + the implementation matches the description of the test. + * tests/good/getchar.-e.s, + * tests/good/getchar.-e.u.s, + * tests/good/getchar.hir, + * tests/good/getchar.hpr, + * tests/good/getchar.lir, + * tests/good/getchar.lpr, + * tests/good/getchar.out, + * tests/good/getchar.s, + * tests/good/getchar.u.s: + Regen. + +2014-03-06 Roland Levillain + + Fix the distribution in src/transform/. + + * src/transform/local.mk: Fix timestamps' names. + +2014-03-05 Roland Levillain + + Generate Doxygen documentation for members of namespace `misc'. + + * doc/Doxyfile.in (INPUT, STRIP_FROM_PATH): Add @top_srcdir@/lib. + +2014-03-05 Roland Levillain + + Do not generate Doxygen documentation for tests. + + * doc/Doxyfile.in (EXCLUDE_PATTERNS): Add test*.cc. + +2014-03-03 Roland Levillain + + Regen ChangeLog. + +2014-03-03 Roland Levillain + + Regen tests outputs. + + * tests/lexical/object-constructs-in-non-object-program.tc-err: + Regen (was initially generated in the wrong directory). + +2014-03-03 Roland Levillain + + Forbid the use of `self' outside method definitions. + + * src/object/binder.hh, src/object/binder.cc + (object::Binder::under_class_ty_): Remove attribute. + (object::Binder::within_method_dec_): New attribute. + (object::Binder::operator()(ast::SimpleVar& e)) + (object::Binder::operator()(ast::ClassTy& e)) + (object::Binder::operator()(ast::MethodDec& e)) + (object::Binder::visit_dec_body): + Adjust. + * tests/object-bind/initialize-attribute-with-self.tig: + New test, exercising this case. + * tests/object-bind/initialize-attribute-with-self.tc-err, + * tests/object-bind/initialize-attribute-with-self.tc-sta: + New test outputs. + +2014-02-28 Roland Levillain + + Generate more contents of ast/fwd.hh and thus really hide RuleDecs. + + * dev/ast-fwd-gen: Generate typedefs for *Decs classes and remove + them... + * src/ast/ast.yml (fwd_hh_epilogue): ...from this. + * src/ast/fwd.hh: Regen. + +2014-02-27 Roland Levillain + + Update TODO.txt. + + * TODO.txt (bison++ and monoburg++): Remove item, as these scripts + now differ much more. + (TC-1: select-const): Remove item, as the Generic Programming + lecture from the TYLA course covers this topic now (see + https://trac.lrde.epita.fr/tc/ticket/20). + (TC-6: Boost::lambda): Remove item, as C++11 lambda expressions do + a better job now. + +2014-02-27 Roland Levillain + + Make tc-check logs uniform w.r.t. spacing. + + * tests/tc-check.in (interface_check): Here. + Reported by Arnaud Farbos . + +2014-02-19 Roland Levillain + + Regen ChangeLog. + +2014-02-19 Roland Levillain + + Work around Apple Flex not using the same interface as stock Flex. + + * build-aux/bin/flex++.in: Here. + +2014-02-18 Roland Levillain + + Adjust hidden code. + + * src/ast/object-visitor.hxx: Here. + (operator()(typename Const::type&)): Remove dead code. + +2014-02-18 Roland Levillain + + configure.ac, NEWS.txt: Version 1.34a. + +2014-02-17 Roland Levillain + + Regen ChangeLog for version 1.34. + +2014-02-17 Roland Levillain + + Version 1.34, for 2016-tc-1.0. + + * configure.ac, NEWS.txt: Here. + * src/version.cc.in: Update copyright years. + +2014-02-17 Roland Levillain + + NEWS.txt: Update. + +2014-02-17 Laurent Gourvénec + + Remove uses of strdupa, not present in FreeBSD 9's libc. + + * src/stc.cc: Replace pointers to strings allocated with strdupa + with char arrays. + +2014-02-17 Laurent Gourvénec + + Support amd64-freebsd in conditionals IA32_FREEBSD and SUPPORTED_IA32. + + * configure.ac (IA32_FREEBSD, SUPPORTED_IA32): Here. + +2014-02-11 Roland Levillain + + Process method declarations in a single-pass when binding names. + + * src/object/binder.hh, src/object/binder.cc + (object::Binder::operator()(ast::MethodDecs&)): + Remove method. + (object::Binder::visitDecHeader(ast::MethodDec&)): + Remove method specialization. + (object::Binder::visitDecBody(ast::MethodDec&)): + Likewise, and move its contents... + (object::Binder::operator()(ast::MethodDec&)): + ...here. + * src/object/type-checker.cc + (object::TypeChecker::operator()(ast::MethodDecs&)): + Remove an outdated comment. + +2014-02-11 Roland Levillain + + Factor a method among AST visitors. + + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx, + * src/ast/object-visitor.hh, src/ast/object-visitor.hxx + (operator()(E*)): Move and factor this method... + * dev/ast-visitor-gen, + * src/ast/visitor.hxx: + ...here. + * src/ast/visitor.hh: Regen. + * src/ast/default-visitor.hh: Help ast::GenDefaultVisitor find + operator()(E*). + * src/object/renamer.cc, + * src/object/type-checker.cc: Fix linking issues (I wonder why + they are only kicking in now). + +2014-02-11 Roland Levillain + + Move a remaining object-related method out of ast::GenDefaultVisitor. + + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx + (operator()(typename Const::type&)): + Move method... + * src/ast/object-visitor.hh, src/ast/object-visitor.hxx + (operator()(typename Const::type&)) + * src/object/renamer.hh, src/object/renamer.cc + (object::Renamer::operator()(ast::MethodDecs&)): + ...here (new method). + * src/ast/non-object-visitor.hh, src/ast/non-object-visitor.hxx + (operator()(typename Const::type&)): + New (aborting) method. + * src/ast/pretty-printer.hh (ast::PrettyPrinter): Adjust, by + inheriting from ast::ObjectConstVisitor as well. + * src/bind/binder.hh, src/bind/binder.cc + (bind::Binder::operator()(ast::MethodDecs&)): + Remove method. + +2014-02-11 Roland Levillain + + Factor code in object::Binder using base classes. + + * src/object/binder.hh, src/object/binder.hh + (object::Binder::operator()(ast::ObjectExp&)) + (object::Binder::operator()(ast::MethodCallExp&)): + Remove methods and rely on ast::ObjectVisitor's. + (object::Binder::visitDecBody(ast::MethodDec&)): + Delegate the traversal of children nodes to ast::DefaultVisitor. + +2014-02-11 Roland Levillain + + Allow the binding of non-object ASTs containing object constructs. + + So far, a non empty AST whose generation caused a scan and/or + parse errors did not stop the compiler from binding the names of + this tree (if asked so), so that more errors would be reported to + the user; the compiler would eventually stop after the `bind' + stage and exit with a scan or parse error code. However, this + wouldn't not work when the error was triggered by an invalid use + of an object-related keyword, as the non-object Binder would abort + as soon as it found an object construct. To fix this behavior, + turn bind::Binder into an ast::ObjectVisitor, instead of an + ast::NonObjectVisitor. (Other non-object visitors have been left + untouched.) + + * src/bind/binder.hh (bind::Binder): Inherit from + ast::ObjectVisitor instead of ast::NonObjectVisitor, to allow the + traversal of object-related nodes. + (bind::Binder::operator()(ast::MethodDecs&)): + Recurse through children nodes instead of aborting. + * src/ast/object-visitor.hh, + * src/ast/non-object-visitor.hh: + Adjust documentation. + * tests/lexical/new-in-non-object-program-with-unknown-type.tig, + * tests/lexical/object-constructs-in-non-object-program.tig: + New tests, exercising this case. + * tests/lexical/new-in-non-object-program-with-unknown-type.tc-err, + * tests/lexical/new-in-non-object-program-with-unknown-type.tc-sta, + * tests/lexical/object-constructs-in-non-object-program.tc-err, + * tests/lexical/object-constructs-in-non-object-program.tc-sta: + New test outputs. + +2014-02-11 Roland Levillain + + Introduce a visitor performing default traversal of object nodes. + + * src/ast/object-visitor.hh, src/ast/object-visitor.hxx: New. + * src/ast/local.mk (ast_libast_la_SOURCES): + Add ast/object-visitor.hh and ast/object-visitor.hxx. + +2014-02-11 Roland Levillain + + Update boost.m4 from upstream. + + * build-aux/m4/boost.m4: Here. + +2014-02-11 Roland Levillain + + Update the location and the upstream URL of boost.m4. + + * build-aux/local.mk (boost-m4-up): Here. + +2014-02-11 Roland Levillain + + Remove SWIG workarounds regarding C++ exception handling. + + * lib/misc/tiger_misc.i: Here. + * tcsh/python/ti.py: Adjust. + +2014-02-11 Roland Levillain + + Remove exception specifications, deprecated in C++ 2011. + + * lib/misc/endomap.hh, + * lib/misc/endomap.hxx, + * lib/misc/map.hh, + * lib/misc/map.hxx, + * lib/misc/tiger_misc.i, + * src/parse/metavar-map.hh, + * src/parse/metavar-map.hxx, + * src/parse/tiger_parse.i, + * src/parse/tweast.hh, + * src/parse/tweast.hxx, + * src/target/mips/cpu.cc, + * src/transform/metavar-pool.hh, + * src/transform/metavar-pool.hxx: + Here. + +2014-02-11 Roland Levillain + + Rename leopard.el as tiger.el. + + * build-aux/leopard.el: Rename as... + * build-aux/tiger.el: ...this. + Adjust. + * build-aux/local.mk (dist_lisp_DATA): Rename build-aux/leopard.el + as build-aux/tiger.el. + +2014-02-11 Roland Levillain + + Rename tiger.el as panther.el. + + * build-aux/tiger.el: Rename as... + * build-aux/panther.el: ...this. + Adjust. + * build-aux/local.mk (dist_lisp_DATA): Rename build-aux/tiger.el + as build-aux/panther.el. + +2014-02-11 Roland Levillain + + Change Panther (object-less Tiger) file extension to `.pan'. + + * tests/Makefile.am (nodist_exts, good_obj_prog_exts): + s/desugared/pan/. + ($(srcdir)/%.desugared): Turn target into... + ($(srcdir)/%.pan): ...this. + * tests/object-good/attribute-modification.desugared, + * tests/object-good/compare-nil-and-object.desugared, + * tests/object-good/compare-object-and-nil.desugared, + * tests/object-good/explicit-class-type.desugared, + * tests/object-good/five-name-spaces.desugared, + * tests/object-good/function-call-in-method.desugared, + * tests/object-good/function-returning-an-object.desugared, + * tests/object-good/function-returning-object.desugared, + * tests/object-good/function-taking-an-object-as-argument.desugared, + * tests/object-good/function-taking-object-as-argument.desugared, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.desugared, + * tests/object-good/initialize-object-to-nil.desugared, + * tests/object-good/inner-class-with-same-member-names.desugared, + * tests/object-good/instantiate-object.desugared, + * tests/object-good/method-call.desugared, + * tests/object-good/method-using-self-as-argument.desugared, + * tests/object-good/new-object.desugared, + * tests/object-good/nil-as-object-arg.desugared, + * tests/object-good/nil-as-object-return-value.desugared, + * tests/object-good/redefining-object.desugared, + * tests/object-good/redefining-self.desugared, + * tests/object-good/simple-class.desugared, + * tests/object-good/simple-extends.desugared, + * tests/object-good/simple-instantiation.desugared, + * tests/object-good/trivial-class.desugared, + * tests/object-good/type-simple-class.desugared, + * tests/object-good/type-simple-extends.desugared, + * tests/object-good/upcast.desugared, + * tests/object-good/using-members-from-within-the-class.desugared, + * tests/object-good/valid-forward-reference-to-class.desugared, + * tests/object-good/variable-modification.desugared, + * tests/object-good/variable-of-type-object.desugared, + * tests/object-good/vehicle.desugared, + * tests/object-good/visitor.desugared: + Rename as... + * tests/object-good/attribute-modification.pan, + * tests/object-good/compare-nil-and-object.pan, + * tests/object-good/compare-object-and-nil.pan, + * tests/object-good/explicit-class-type.pan, + * tests/object-good/five-name-spaces.pan, + * tests/object-good/function-call-in-method.pan, + * tests/object-good/function-returning-an-object.pan, + * tests/object-good/function-returning-object.pan, + * tests/object-good/function-taking-an-object-as-argument.pan, + * tests/object-good/function-taking-object-as-argument.pan, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.pan, + * tests/object-good/initialize-object-to-nil.pan, + * tests/object-good/inner-class-with-same-member-names.pan, + * tests/object-good/instantiate-object.pan, + * tests/object-good/method-call.pan, + * tests/object-good/method-using-self-as-argument.pan, + * tests/object-good/new-object.pan, + * tests/object-good/nil-as-object-arg.pan, + * tests/object-good/nil-as-object-return-value.pan, + * tests/object-good/redefining-object.pan, + * tests/object-good/redefining-self.pan, + * tests/object-good/simple-class.pan, + * tests/object-good/simple-extends.pan, + * tests/object-good/simple-instantiation.pan, + * tests/object-good/trivial-class.pan, + * tests/object-good/type-simple-class.pan, + * tests/object-good/type-simple-extends.pan, + * tests/object-good/upcast.pan, + * tests/object-good/using-members-from-within-the-class.pan, + * tests/object-good/valid-forward-reference-to-class.pan, + * tests/object-good/variable-modification.pan, + * tests/object-good/variable-of-type-object.pan, + * tests/object-good/vehicle.pan, + * tests/object-good/visitor.pan: + ...these. + +2014-02-11 Roland Levillain + + Aesthetic changes in ti/. + + * ti/tiopts.hh, ti/tiopts.cc: Here. + +2014-02-11 Roland Levillain + + Small improvements in ast::PrettyPrinter. + + * src/ast/pretty-printer.cc + (ast::PrettyPrinter::operator()(const MethodDec&)): + Ensure the visited method has a body. + (ast::PrettyPrinter::operator()(const ObjectExp&)) + (ast::PrettyPrinter::operator()(const VarDec&, bool)): + Shorten code. + +2014-02-11 Roland Levillain + + Typos in comments. + + * src/ast/default-visitor.hh, + * src/bind/binder.hxx: + Here. + +2014-02-11 Roland Levillain + + Remove camelCase method names. + + * doc/schema.xmi, + * src/bind/binder.cc, + * src/bind/binder.hh, + * src/bind/binder.hxx, + * src/object/binder.cc, + * src/object/binder.hh, + * src/object/type-checker.cc, + * src/object/type-checker.hh, + * src/overload/binder.cc, + * src/overload/binder.hh, + * src/overload/type-checker.cc, + * src/overload/type-checker.hh, + * src/translate/exp.cc, + * src/translate/exp.hh, + * src/translate/translation.cc, + * src/translate/translation.hh, + * src/translate/translator.cc, + * src/translate/translator.hh, + * src/type/named.hh, + * src/type/type-checker.cc, + * src/type/type-checker.hh, + * src/type/type-checker.hxx: + Here, using: + `git ls-files doc src | xargs sed -i -e \ + "s/\barrayExp\b/array_exp/g;\ + s/\bassignExp\b/assign_exp/g;\ + s/\bbreakExp\b/break_exp/g;\ + s/\bcallExp\b/call_exp/g;\ + s/\beseqExp\b/eseq_exp/g;\ + s/\bfieldVar\b/field_var/g;\ + s/\bforExp\b/for_exp/g;\ + s/\bfunctionDec\b/function_dec/g;\ + s/\bifExpNonVoid\b/if_exp_non_void/g;\ + s/\bifExpVoid\b/if_exp_void/g;\ + s/\bifExp\b/if_exp/g;\ + s/\bintExp\b/int_exp/g;\ + s/\bnilExp\b/nil_exp/g;\ + s/\bopExp\b/op_exp/g;\ + s/\bprocedureDec\b/procedure_dec/g;\ + s/\brecordExp\b/record_exp/g;\ + s/\bseqExp\b/seq_exp/g;\ + s/\bsimpleVar\b/simple_var/g;\ + s/\bstaticLink\b/static_link/g;\ + s/\bstringExp\b/string_exp/g;\ + s/\bstringOpExp\b/string_op_exp/g;\ + s/\bsubscriptVar\b/subscript_var/g;\ + s/\bunCx\b/un_cx/g;\ + s/\bunEx\b/un_ex/g;\ + s/\bunNx\b/un_nx/g;\ + s/\bunXx\b/un_xx/g;\ + s/\bvisitDecBody\b/visit_dec_body/g;\ + s/\bvisitDecHeader\b/visit_dec_header/g;\ + s/\bvisitDecMembers\b/visit_dec_members/g;\ + s/\bvisitFunctionDecBody\b/visit_function_dec_body/g;\ + s/\bvisitFunctionDecHeader\b/visit_function_dec_header/g;\ + s/\bvisitFunctionDecHeader\b/visit_function_dec_header/g;\ + s/\bvisitRoutineBody\b/visit_routine_body/g;\ + s/\bwhileExp\b/while_exp/g"'. + +2014-02-11 Roland Levillain + + Remove a comment about a bug in Doxygen. + + * src/bind/binder.hxx + (bind::Binder::visitDecHeader(ast::FunctionDec&)): + Here, as recent versions of Doxygen (1.8.1.2) no longer exhibit + this issue. + +2014-02-11 Roland Levillain + + Remove compiler workarounds. + + * src/object/binder.hh, + * src/object/renamer.hh, + * src/tree/trees.cc: + Here. + +2014-02-11 Roland Levillain + + Clarify the descriptions of a couple of disjunctive tasks. + + * src/bind/tasks.hh (bound) + * src/type/tasks.hh (typed): + Here. + +2014-02-11 Roland Levillain + + .gitignore: Properly ignore ltmain.sh. + +2014-02-10 Roland Levillain + + Typos in ChangeLog. + +2014-02-10 Roland Levillain + + Regen the code generators. + + * src/target/ia32/codegen.cc, + * src/target/mips/codegen.cc: + Regen. + +2014-02-07 Roland Levillain + + Fix even more space before parentheses. + + * lib/misc/algorithm.hxx, + * lib/misc/endomap.hxx, + * lib/misc/error.hh, lib/misc/error.hxx, lib/misc/error.cc, + * lib/misc/escape.cc, + * lib/misc/flex-lexer.hh, + * lib/misc/graph.hh, lib/misc/graph.hxx, + * lib/misc/list.hh, lib/misc/list.hxx, + * lib/misc/map.hh, lib/misc/map.hxx, + * lib/misc/path.hh, lib/misc/path.cc, + * lib/misc/ref.hh, lib/misc/ref.hxx, + * lib/misc/scoped-map.hxx, lib/misc/separator.hh, + * lib/misc/set.hh, lib/misc/set.hxx, + * lib/misc/symbol.hh, + * lib/misc/tiger_misc.i, + * lib/misc/timer.hh, lib/misc/timer.hxx, lib/misc/timer.cc, + * lib/misc/unique.hh, lib/misc/unique.hxx, + * lib/misc/variant.hh, lib/misc/variant.hxx, + * src/bind/binder.cc, + * src/bind/renamer.hxx, + * src/canon/canon.cc, + * src/canon/traces.cc, + * src/desugar/desugar-visitor.cc, + * src/desugar/libdesugar.cc, + * src/liveness/liveness.cc, + * src/object/binder.cc, + * src/parse/libparse.cc, + * src/parse/test-tweast.cc, + * src/parse/tiger-parser.cc, + * src/parse/tweast.cc, + * src/target/ia32/binop.brg, + * src/target/ia32/call.brg, + * src/target/ia32/cjump.brg, + * src/target/ia32/epilogue.cc, + * src/target/ia32/exp.brg, + * src/target/ia32/gas-assembly.cc, + * src/target/ia32/mem.brg, + * src/target/ia32/move.brg, + * src/target/ia32/move_load.brg, + * src/target/ia32/move_store.brg, + * src/target/ia32/stm.brg, + * src/target/ia32/temp.brg, + * src/target/mips/binop.brg, + * src/target/mips/call.brg, + * src/target/mips/cjump.brg, + * src/target/mips/exp.brg, + * src/target/mips/mem.brg, + * src/target/mips/move.brg, + * src/target/mips/move_load.brg, + * src/target/mips/move_store.brg, + * src/target/mips/spim-assembly.cc, + * src/target/mips/stm.brg, + * src/target/mips/temp.brg, + * src/transform/concrete-syntax-rewriter.cc, + * src/transform/test-combinators.cc, + * src/translate/libtranslate.cc, + * src/translate/translator.cc, + * src/tree/cjump.hh, + * src/tree/jump.hxx, + * src/tree/tree.hh, + * src/type/type-checker.hh, src/type/type-checker.cc: + Here. + +2014-02-07 Roland Levillain + + Record new tests' outputs. + + * tests/object-good/new-object.-e.s, + * tests/object-good/new-object.-e.u.s, + * tests/object-good/new-object.desugared, + * tests/object-good/new-object.err, + * tests/object-good/new-object.hir, + * tests/object-good/new-object.hpr, + * tests/object-good/new-object.lir, + * tests/object-good/new-object.lpr, + * tests/object-good/new-object.out, + * tests/object-good/new-object.s, + * tests/object-good/new-object.sta, + * tests/object-good/new-object.u.s, + * tests/object-good/redefining-self.-e.s, + * tests/object-good/redefining-self.-e.u.s, + * tests/object-good/redefining-self.desugared, + * tests/object-good/redefining-self.err, + * tests/object-good/redefining-self.hir, + * tests/object-good/redefining-self.hpr, + * tests/object-good/redefining-self.lir, + * tests/object-good/redefining-self.lpr, + * tests/object-good/redefining-self.out, + * tests/object-good/redefining-self.s, + * tests/object-good/redefining-self.sta, + * tests/object-good/redefining-self.u.s, + * tests/object-syntax/class-declaration-in-class-declaration.tc-err, + * tests/object-syntax/class-declaration-in-class-declaration.tc-sta, + * tests/object-syntax/function-declaration-in-class.tc-err, + * tests/object-syntax/function-declaration-in-class.tc-sta, + * tests/object-syntax/missing-class-body.tc-err, + * tests/object-syntax/missing-class-body.tc-sta, + * tests/object-syntax/semi-colon-after-class-declaration.tc-err, + * tests/object-syntax/semi-colon-after-class-declaration.tc-sta, + * tests/object-syntax/type-declaration-in-class.tc-err, + * tests/object-syntax/type-declaration-in-class.tc-sta, + * tests/object-type/class-extends-itself.tc-err, + * tests/object-type/class-extends-itself.tc-sta, + * tests/object-type/instantiate-a-string-as-a-class.tc-err, + * tests/object-type/instantiate-a-string-as-a-class.tc-sta, + * tests/object-type/unknown-attribute.tc-err, + * tests/object-type/unknown-attribute.tc-sta, + * tests/object-type/unknown-method.tc-err, + * tests/object-type/unknown-method.tc-sta: + New. + +2014-02-07 Roland Levillain + + Add more object-related tests. + + * tests/object-good/new-object.tig, + * tests/object-good/redefining-self.tig, + * tests/object-syntax/class-declaration-in-class-declaration.tig, + * tests/object-syntax/function-declaration-in-class.tig, + * tests/object-syntax/missing-class-body.tig, + * tests/object-syntax/semi-colon-after-class-declaration.tig, + * tests/object-syntax/type-declaration-in-class.tig, + * tests/object-type/class-extends-itself.tig, + * tests/object-type/instantiate-a-string-as-a-class.tig, + * tests/object-type/unknown-attribute.tig, + * tests/object-type/unknown-method.tig: + New. + +2014-02-07 Roland Levillain + + Forbid assignments to `self'. + + * src/object/type-checker.cc (object::TypeChecker::TypeChecker): + Here. + * tests/object-type/assign-self.tig: + New test, exercising this case. + * tests/object-type/assign-self.tc-err, + * tests/object-type/assign-self.tc-sta: + New test outputs. + +2014-02-07 Roland Levillain + + Forbid the use of `self' outside class definitions. + + * src/object/binder.hh, src/object/binder.cc + (object::Binder::under_class_ty_): New attribute. + Set it... + (object::Binder::operator()(ast::ClassTy& e)): + ...here, and use it... + (object::Binder::operator()(ast::SimpleVar& e)): + ...here, to ensure that we forbid the use of `self' outside class + definitions. + * tests/object-bind/self-outside-class.tig: + New test, exercising this case. + * tests/object-bind/self-outside-class.tc-err, + * tests/object-bind/self-outside-class.tc-sta: + New test outputs. + +2014-02-07 Roland Levillain + + Aesthetic changes in ChangeLog. + +2014-02-06 Roland Levillain + + Regen ChangeLog. + +2014-02-06 Xavier Grand + + style: minor correction of style for TC-1. + + * src/parse/test-tweast.cc: Here. + +2014-02-06 Roland Levillain + + Refresh generated C++ code. + + * src/target/mips/codegen.cc, + * src/transform/matcher.cc: + Regen. + +2014-02-06 Roland Levillain + + Do not issue trailing whitespace in src/astclone/cloner.cc. + + * dev/ast-cloner-gen: Here. + +2014-02-06 Roland Levillain + + Add a uniform means to issue statements referencing metavariables. + + * src/parse/metavar-map.hh, src/parse/metavar-map.hxx + (parse::MetavarMap::show): New method. + Use it... + * src/parse/metavar-map.hxx (parse::MetavarMap::append_) + * src/parse/tweast.hxx (parse::Tweast::move_metavars_) + * src/parse/tweast.cc (parse::Tweast::flatten): + ...here, to factor redundant code, as well as to prevent + formatting errors. + +2014-02-06 Roland Levillain + + style: use C++ casts instead of C ones. + + * lib/misc/test-path.cc, + * ti/tiopts.cc: + Here. + +2014-02-06 Roland Levillain + + style: various aesthetic changes. + + * lib/misc/error.hh, + * lib/misc/indent.cc, + * lib/misc/symbol.cc, + * src/assem/fragment.cc, + * src/ast/decs.hh, + * src/callgraph/libcallgraph.cc, + * src/desugar/bound-checking-visitor.cc, + * src/desugar/test-bound-checking.cc, + * ti/fork.cc, + * ti/ti.cc: + Here. + +2014-02-06 Roland Levillain + + style: fix more space before opening parentheses src/transform/. + + * dev/transform-proxy-visitors-gen: Here. + * src/transform/proxy-visitors.hxx: Regen. + +2014-02-06 Theophile Ranquet + + style: fix more space before opening parentheses in Tiger code. + + * src/astclone/test-cloner.cc, + * src/bind/test-bind.cc, + * src/desugar/bound-checking-visitor.cc, + * src/desugar/test-bound-checking.cc, + * src/desugar/test-string-cmp-desugar.cc, + * src/inlining/inliner.cc, + * src/object/test-bind.cc, + * src/object/test-desugar.cc, + * src/object/test-parse.cc, + * src/object/test-type.cc, + * src/parse/libparse.cc, + * src/parse/metavar-map.hxx, + * src/parse/test-parse.cc, + * src/parse/tweast.hxx, src/parse/tweast.cc, + * src/transform/test-transform-tests.cc: + Here. + +2014-02-06 Roland Levillain + + style: fix more space before opening parentheses in ti/. + + * ti/fork.cc, + * ti/ti.cc, + * ti/tiopts.cc, + * ti/tiopts.hh: + Here. + +2014-02-06 Theophile Ranquet + + style: start to fix space before opening parentheses in ti/. + + * ti/fork.cc, + * ti/fork.hh, + * ti/fork.hxx, + * ti/tiopts.hh, + * ti/tiopts.hxx: + Here. + +2014-02-05 Theophile Ranquet + + style: fix more space before opening parentheses in C++ code. + + * src/assem/fragment.hxx, + * src/assem/fragments.hh, + * src/assem/fwd.hh, + * src/assem/instr.hh, src/assem/instr.hxx, + * src/ast/default-visitor.hxx, + * src/ast/libast.hh, src/ast/libast.cc, + * src/ast/non-object-visitor.hxx, + * src/bind/binder.hxx, + * src/canon/basic-block.hh, src/canon/basic-block.hxx, + * src/canon/basic-block.cc, + * src/desugar/bound-checking-visitor.cc, + * src/desugar/tasks.hh, + * src/escapes/escapes-check-visitor.cc, + * src/frame/access.cc, src/frame/access.hxx, + * src/inlining/inliner.cc, + * src/liveness/flowgraph.hxx, + * src/object/type-checker.cc, + * src/overload/tasks.cc, + * src/parse/libparse.cc, + * src/parse/tasks.cc, + * src/parse/tweast.hxx, + * src/regalloc/test-regalloc.cc, + * src/target/cpu.cc, + * src/target/ia32/cpu.cc, + * src/target/ia32/target.cc, + * src/target/mips/cpu.cc, + * src/target/mips/epilogue.cc, + * src/target/mips/target.cc, + * src/target/mips/test-rw_prg.cc, + * src/task/function-task.cc, + * src/task/int-task.cc, + * src/task/libtask.hh, + * src/task/task-register.hh, src/task/task-register.cc, + * src/task/task.hh, src/task/task.cc, + * src/tc.cc, + * src/temp/identifier.hh, src/temp/identifier.hxx, + * src/temp/label.hh, + * src/temp/temp-set.hh, src/temp/temp-set.cc, + * src/temp/temp.hh, + * src/transform/bottom-up-rewriter.cc, + * src/transform/concrete-syntax-rewriter.hh, + * src/transform/generic-rewriter.hxx, + * src/transform/metavar-pool.cc, + * src/transform/rewriter.cc, + * src/transform/test-concrete.cc, + * src/translate/access.hh, src/translate/access.cc, + * src/translate/exp.hxx, + * src/translate/level.hh, src/translate/level.hxx, + * src/tree/binop.cc, src/tree/binop.hxx, + * src/tree/cjump.cc, src/tree/cjump.hxx, + * src/tree/const.cc, src/tree/const.hxx, + * src/tree/eseq.cc, src/tree/eseq.hxx, + * src/tree/exp.hh, src/tree/exp.cc, + * src/tree/fragment.cc, src/tree/fragment.hxx, + * src/tree/fragments.cc, + * src/tree/fwd.hh, + * src/tree/iterator.hh, src/tree/iterator.hxx, + * src/tree/jump.cc, + * src/tree/label.cc, src/tree/label.hxx, + * src/tree/libtree.hh, src/tree/libtree.cc, + * src/tree/mem.cc, src/tree/mem.hxx, + * src/tree/move.cc, src/tree/move.hxx, + * src/tree/name.cc, src/tree/name.hxx, + * src/tree/seq.cc, + * src/tree/stm.hh, src/tree/stm.cc, + * src/tree/sxp.cc, src/tree/sxp.hxx, + * src/tree/temp.cc, src/tree/temp.hxx, + * src/tree/trees.cc, + * src/tree/visitor.hh, src/tree/visitor.hxx, + * src/type/attribute.hh, src/type/attribute.hxx, + * src/type/field.hh, src/type/field.hxx, + * src/type/function.cc, + * src/type/test-type.cc, + * src/type/type.hh, src/type/type.hxx: + Here. + +2014-02-04 Roland Levillain + + style: fix space before opening parentheses in lib/. + + * lib/misc/contract.hh, + * lib/misc/deref.hh, + * lib/misc/deref.hxx, + * lib/misc/error.cc, + * lib/misc/error.hh, + * lib/misc/error.hxx, + * lib/misc/escape.hh, + * lib/misc/escape.hxx, + * lib/misc/file-library.hh, + * lib/misc/file-library.hxx, + * lib/misc/generic-variant.hh, + * lib/misc/generic-variant.hxx, + * lib/misc/list.hh, + * lib/misc/list.hxx, + * lib/misc/pair.hh, + * lib/misc/pair.hxx, + * lib/misc/path.hxx, + * lib/misc/scoped-map.hh, + * lib/misc/separator.hh, + * lib/misc/separator.hxx, + * lib/misc/set.hh, + * lib/misc/set.hxx, + * lib/misc/symbol.cc, + * lib/misc/symbol.hh, + * lib/misc/symbol.hxx, + * lib/misc/test-path.cc, + * lib/misc/timer.hh, + * lib/misc/unique.hh, + * lib/misc/unique.hxx, + * lib/misc/variant.hxx: + Here. + +2014-02-04 Roland Levillain + + Convert the Reference Tiger Compiler Developer Guide to UTF-8. + + * dev/tc.texi: Here, so that OS X sed does not complain about + encodings. + +2014-02-02 Akim Demaille + + build: keep m4 files together + + * Makefile.am, configure.ac: Put m4 macros in build-aux/m4 + + * build-aux/ax-config-scripts.m4: Rename as... + * build-aux/m4/ax-config-scripts.m4: this. + * build-aux/ax_check_compile_flag.m4: Rename as... + * build-aux/m4/ax_check_compile_flag.m4: this. + * build-aux/boost.m4: Rename as... + * build-aux/m4/boost.m4: this. + * build-aux/make.m4: Rename as... + * build-aux/m4/make.m4: this. + * build-aux/pypath.m4: Rename as... + * build-aux/m4/pypath.m4: this. + * build-aux/swig.m4: Rename as... + * build-aux/m4/swig.m4: this. + * build-aux/tc-prog.m4: Rename as... + * build-aux/m4/tc-prog.m4: this. + * build-aux/warning.m4: Rename as... + * build-aux/m4/warning.m4: this. + * build-aux/with-tcsh.m4: Rename as... + * build-aux/m4/with-tcsh.m4: this. + +2014-02-02 Akim Demaille + + build: factor the generation of scripts + + * build-aux/ax-config-scripts.m4: New, based on Urbi's version. + * configure.ac: Use it. + +2014-02-02 Akim Demaille + + build: check compiler version early in configure + + * configure.ac: There's no point is delaying the version check + on the compiler. + Keep alphabetical order. + Remove useless call to "eval". + +2014-02-02 Akim Demaille + + style: quote properly in configure.ac + + * configure.ac: here. + +2014-02-02 Akim Demaille + + build: avoid spurious output during configure + + * configure.ac: Fix a few AM_CONDITIONAL to avoid spurious output. + Grep -q is certainly not portable, but enought portable for us + (if it works on OS X, it certainly does on current archs). + +2014-02-02 Akim Demaille + + build: update dependency on Boost. + + * configure.ac: Common current requirement is 1.49. + +2014-01-31 Roland Levillain + + Regen the parser. + + * src/parse/parsetiger.hh, + * src/parse/parsetiger.cc: + Regen. + +2014-01-31 Roland Levillain + + Regen tests' outputs. + + * tests/bind/break-in-function-in-while.tc-err, + * tests/bind/duplicate-formal.tc-err, + * tests/bind/invalid-function-redefinition-1.tc-err, + * tests/bind/invalid-function-redefinition-2.tc-err, + * tests/bind/primitive-and-function-same-chunk.tc-err, + * tests/bind/print-tree-static.tc-err, + * tests/bind/test17.tc-err, + * tests/bind/unknown-return-type.tc-err, + * tests/good/mini-morpho.-e.s, + * tests/good/mini-morpho.-e.u.s, + * tests/good/mini-morpho.hir, + * tests/good/mini-morpho.lir, + * tests/good/mini-morpho.s, + * tests/good/mini-morpho.u.s, + * tests/good/substring.-e.s, + * tests/good/substring.-e.u.s, + * tests/good/substring.hir, + * tests/good/substring.lir, + * tests/good/substring.out, + * tests/good/substring.s, + * tests/good/substring.u.s, + * tests/object-bind/undeclared-function.tc-err, + * tests/object-good/attribute-modification.desugared, + * tests/object-good/compare-nil-and-object.desugared, + * tests/object-good/compare-object-and-nil.desugared, + * tests/object-good/explicit-class-type.desugared, + * tests/object-good/five-name-spaces.desugared, + * tests/object-good/function-call-in-method.desugared, + * tests/object-good/function-returning-an-object.desugared, + * tests/object-good/function-returning-object.desugared, + * tests/object-good/function-taking-an-object-as-argument.desugared, + * tests/object-good/function-taking-object-as-argument.desugared, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.desugared, + * tests/object-good/initialize-object-to-nil.desugared, + * tests/object-good/inner-class-with-same-member-names.desugared, + * tests/object-good/instantiate-object.desugared, + * tests/object-good/method-call.desugared, + * tests/object-good/method-using-self-as-argument.desugared, + * tests/object-good/nil-as-object-arg.desugared, + * tests/object-good/nil-as-object-return-value.desugared, + * tests/object-good/redefining-object.desugared, + * tests/object-good/simple-class.desugared, + * tests/object-good/simple-extends.desugared, + * tests/object-good/simple-instantiation.desugared, + * tests/object-good/trivial-class.desugared, + * tests/object-good/type-simple-class.desugared, + * tests/object-good/type-simple-extends.desugared, + * tests/object-good/upcast.desugared, + * tests/object-good/using-members-from-within-the-class.desugared, + * tests/object-good/valid-forward-reference-to-class.desugared, + * tests/object-good/variable-modification.desugared, + * tests/object-good/variable-of-type-object.desugared, + * tests/object-good/vehicle.desugared, + * tests/object-good/visitor.desugared, + * tests/object-syntax/method-call-used-as-lvalue.tc-err, + * tests/object-type/builtin-object-vs-custom-object.tc-err, + * tests/object-type/contravariant-method.tc-err, + * tests/object-type/contravariant-return-type.tc-err, + * tests/object-type/covariant-method.tc-err, + * tests/object-type/covariant-return-type.tc-err, + * tests/object-type/duplicate-members.tc-err, + * tests/object-type/forward-method-reference-1.tc-err, + * tests/object-type/forward-method-reference-2.tc-err, + * tests/object-type/invalid-forward-references-to-members.tc-err, + * tests/object-type/method-redefinition-with-different-signature.tc-err, + * tests/overload-type/overfun-naive-redef.tc-err, + * tests/overload-type/overfun-nil-ambiguity.tc-err, + * tests/overload-type/overfun-redef.tc-err, + * tests/syntax/call-separator-1.tc-err, + * tests/syntax/call-separator-2.tc-err, + * tests/type/funarg-type-mismatch.tc-err, + * tests/type/missing-arg.tc-err, + * tests/type/not-enough-args.tc-err, + * tests/type/primitive-arg.tc-err, + * tests/type/primitive-result.tc-err, + * tests/type/test21.tc-err, + * tests/type/test40.tc-err, + * tests/type/too-many-args.tc-err, + * tests/type/unconstrained-nil.tc-err: + Here. + +2014-01-31 Roland Levillain + + Misc. changes regarding spaces in tests. + +2014-01-31 Roland Levillain + + Fix space before parentheses in tests/type. + + * tests/type/funarg-type-mismatch.tig, + * tests/type/missing-arg.tig, + * tests/type/not-enough-args.tig, + * tests/type/primitive-arg.tig, + * tests/type/primitive-result.tig, + * tests/type/test11.tig, + * tests/type/test21.tig, + * tests/type/test40.tig, + * tests/type/too-many-args.tig: + Here. + +2014-01-31 Roland Levillain + + Fix space before parentheses in tests/syntax. + + * tests/syntax/call-separator-1.tig, + * tests/syntax/call-separator-2.tig, + * tests/syntax/multi-functions.tig, + * tests/syntax/nil-keyword.tig: + Here. + +2014-01-31 Roland Levillain + + Fix space before parentheses in tests/runtime. + + * tests/runtime/chr-out-of-range1.tig, + * tests/runtime/chr-out-of-range2.tig, + * tests/runtime/substring-out-of-bounds1.tig, + * tests/runtime/substring-out-of-bounds2.tig, + * tests/runtime/substring-out-of-bounds3.tig: + Here. + +2014-01-31 Roland Levillain + + Fix space before parentheses in tests/overload-*. + + * tests/overload-bind-maint/inner-_main-fundec.tig, + * tests/overload-bind-maint/nonexistent-_main.tig, + * tests/overload-good/overload-builtin.tig, + * tests/overload-good/overload-function-record-arg.tig, + * tests/overload-good/overload-function.tig, + * tests/overload-good/overload-nil-diambiguated.tig, + * tests/overload-good/overload-var-type-inference.tig, + * tests/overload-type-maint/bad-_main-type.tig, + * tests/overload-type/overfun-naive-redef.tig, + * tests/overload-type/overfun-nil-ambiguity.tig, + * tests/overload-type/overfun-redef.tig: + Here. + +2014-01-31 Roland Levillain + + Fix space before parentheses in tests/object-*. + + * tests/object-bind/undeclared-function.tig, + * tests/object-bind/undeclared-variable.tig, + * tests/object-good/five-name-spaces.tig, + * tests/object-good/function-call-in-method.tig, + * tests/object-good/function-returning-an-object.tig, + * tests/object-good/function-returning-object.tig, + * tests/object-good/function-taking-an-object-as-argument.tig, + * tests/object-good/function-taking-object-as-argument.tig, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.tig, + * tests/object-good/inner-class-with-same-member-names.tig, + * tests/object-good/method-call.tig, + * tests/object-good/method-using-self-as-argument.tig, + * tests/object-good/nil-as-object-arg.tig, + * tests/object-good/nil-as-object-return-value.tig, + * tests/object-good/simple-class.tig, + * tests/object-good/simple-instantiation.tig, + * tests/object-good/using-members-from-within-the-class.tig, + * tests/object-good/variable-modification.tig, + * tests/object-good/vehicle.tig, + * tests/object-good/visitor.tig, + * tests/object-syntax/method-call-used-as-lvalue.tig, + * tests/object-type/builtin-object-vs-custom-object.tig, + * tests/object-type/contravariant-method.tig, + * tests/object-type/contravariant-return-type.tig, + * tests/object-type/covariant-method.tig, + * tests/object-type/covariant-return-type.tig, + * tests/object-type/duplicate-members.tig, + * tests/object-type/forward-method-reference-1.tig, + * tests/object-type/forward-method-reference-2.tig, + * tests/object-type/invalid-forward-references-to-members.tig, + * tests/object-type/method-redefinition-with-different-signature.tig: + Here. + +2014-01-31 Roland Levillain + + Fix space before parentheses in tests/good. + + * tests/good/all-binop.tig, + * tests/good/array-subscript-assign.tig, + * tests/good/assign-and-array-instantiation.tig, + * tests/good/assign-void.tig, + * tests/good/builtins.tig, + * tests/good/call.tig, + * tests/good/chr-256.tig, + * tests/good/chr-minus-1.tig, + * tests/good/chr.tig, + * tests/good/commutation-1.tig, + * tests/good/commutation-2.tig, + * tests/good/concat.tig, + * tests/good/concurrent-arguments.tig, + * tests/good/division-with-negative-operands.tig, + * tests/good/donald.tig, + * tests/good/escaping-record.tig, + * tests/good/evalexp.tig, + * tests/good/exit-51.tig, + * tests/good/fact.tig, + * tests/good/for-high-computed-once.tig, + * tests/good/for-high-same-name-as-index.tig, + * tests/good/for-up-to-32bits.tig, + * tests/good/four-hex-backslash.tig, + * tests/good/fun-vs-var.tig, + * tests/good/functions.tig, + * tests/good/getchar-no-static-string.tig, + * tests/good/getchar.tig, + * tests/good/int-comparison.tig, + * tests/good/large-ints.tig, + * tests/good/let-in-for-init.tig, + * tests/good/let-scope-for-functions.tig, + * tests/good/let-scope-for-types.tig, + * tests/good/many-args.tig, + * tests/good/many-bool-ops.tig, + * tests/good/many-functions.tig, + * tests/good/many-vars.tig, + * tests/good/merge.tig, + * tests/good/mini-morpho.tig, + * tests/good/mutually-recursive-functions.tig, + * tests/good/mutually-recursive-procedures.tig, + * tests/good/nil-as-arg.tig, + * tests/good/nil-as-return-value.tig, + * tests/good/nine.tig, + * tests/good/non-commutative-move-mem-expr.tig, + * tests/good/print-chr-ord.tig, + * tests/good/print-tree.tig, + * tests/good/queens.tig, + * tests/good/redefine-int.tig, + * tests/good/redefine-print.tig, + * tests/good/scopes-protect-types.tig, + * tests/good/shadowed-streq.tig, + * tests/good/shadowing-functions.tig, + * tests/good/side-effects-in-init.tig, + * tests/good/side-effects-in-sxp.tig, + * tests/good/side-effects.tig, + * tests/good/so-many-args-in-rec-func.tig, + * tests/good/strcmp.tig, + * tests/good/string-backslash-char.tig, + * tests/good/string-backslash-octal.tig, + * tests/good/string-backslash-tortured.tig, + * tests/good/string-int-not-keywords.tig, + * tests/good/stupid-array-type.tig, + * tests/good/substring-copy-all.tig, + * tests/good/substring.tig, + * tests/good/test27.tig, + * tests/good/three-name-spaces.tig, + * tests/good/var-bob-is-another-bob.tig: + Here. + +2014-01-31 Roland Levillain + + Fix space before parentheses in tests/escapes. + + * tests/escapes/for-lower.tig, + * tests/escapes/for-scope.tig, + * tests/escapes/for-upper.tig, + * tests/escapes/formal-escapes.tig, + * tests/escapes/local-escapes.tig, + * tests/escapes/record-escapes.tig, + * tests/escapes/recursion.tig, + * tests/escapes/redeclaration.tig, + * tests/escapes/rhs-of-a-vardec.tig, + * tests/escapes/scopes.tig, + * tests/escapes/sl-propagation-1.tig, + * tests/escapes/sl-propagation-2.tig, + * tests/escapes/variable-escapes.tig, + * tests/escapes/variable-inside-for-body.tig, + * tests/escapes/variant-escapes.tig: + Here. + +2014-01-31 Roland Levillain + + Fix space before parentheses in tests/bind/. + + * tests/bind/break-in-function-in-while.tig, + * tests/bind/duplicate-formal.tig, + * tests/bind/invalid-function-redefinition-1.tig, + * tests/bind/invalid-function-redefinition-2.tig, + * tests/bind/primitive-and-function-same-chunk.tig, + * tests/bind/print-tree-static.tig, + * tests/bind/test18.tig, + * tests/bind/test19.tig, + * tests/bind/unknown-return-type.tig: + Here. + +2014-01-31 Roland Levillain + + Do not pretty-print spaces after function names. + + * src/ast/pretty-printer.cc + (PrettyPrinter::operator()(const FunctionDec&, const std::string&)) + (PrettyPrinter::operator()(const CallExp& e)): + Here. + (PrettyPrinter::operator()(const CastExp& e)) + (PrettyPrinter::operator()(const CastVar& e)): + Likewise for casts. + +2014-01-31 Akim Demaille + + style: remove useless namespace qualifications + + * src/parse/scantiger.ll: We _are_ in the parse:: namespace. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/type + + * src/type/array.cc, src/type/array.hh, src/type/array.hxx, + * src/type/attribute.cc, src/type/attribute.hh, + * src/type/attribute.hxx, src/type/builtin-types.cc, + * src/type/builtin-types.hh, src/type/class.cc, src/type/class.hh, + * src/type/class.hxx, src/type/field.cc, src/type/field.hh, + * src/type/field.hxx, src/type/function.cc, src/type/function.hh, + * src/type/function.hxx, src/type/libtype.cc, src/type/libtype.hh, + * src/type/method.cc, src/type/method.hh, src/type/method.hxx, + * src/type/named.cc, src/type/named.hh, src/type/named.hxx, + * src/type/record.cc, src/type/record.hh, src/type/record.hxx, + * src/type/tasks.cc, src/type/tasks.hh, src/type/test-type.cc, + * src/type/type-checker.cc, src/type/type-checker.hh, + * src/type/type-checker.hxx, src/type/type.cc, src/type/type.hh, + * src/type/type.hxx: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/translate + + * src/translate/access.cc, src/translate/access.hh, + * src/translate/access.hxx, src/translate/exp.cc, + * src/translate/exp.hh, src/translate/exp.hxx, src/translate/level.cc, + * src/translate/level.hh, src/translate/level.hxx, + * src/translate/libtranslate.cc, src/translate/tasks.cc, + * src/translate/tasks.hh, src/translate/translation.cc, + * src/translate/translation.hh, src/translate/translator.cc, + * src/translate/translator.hh: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/transform + + * src/transform/all.hxx, src/transform/bottom-up-rewriter.cc, + * src/transform/bottom-up-rewriter.hh, src/transform/bottom-up.cc, + * src/transform/bottom-up.hh, + * src/transform/concrete-syntax-rewriter.cc, + * src/transform/concrete-syntax-rewriter.hh, + * src/transform/generic-rewriter.hh, + * src/transform/generic-rewriter.hxx, + * src/transform/generic-traversal.hh, + * src/transform/generic-traversal.hxx, src/transform/matcher.cc, + * src/transform/matcher.hh, src/transform/metavar-pool.cc, + * src/transform/metavar-pool.hh, src/transform/metavar-pool.hxx, + * src/transform/proxy-visitors.hh, src/transform/proxy-visitors.hxx, + * src/transform/rewriter.cc, src/transform/rewriter.hh, + * src/transform/sequence.hh, src/transform/sequence.hxx, + * src/transform/test-combinators.cc, src/transform/test-concrete.cc, + * src/transform/test-transform-tests.cc, + * src/transform/test-transform-tests.hh, + * src/transform/test-transform.cc, src/transform/test-voyager.cc, + * src/transform/visitor.hh, src/transform/visitor.hxx: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/temp + + * src/temp/identifier.hh, src/temp/identifier.hxx, + * src/temp/libtemp.cc, src/temp/libtemp.hh, src/temp/tasks.cc, + * src/temp/tasks.hh, src/temp/temp-set.cc, src/temp/temp.hh, + * src/temp/test-temp.cc: + Here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/task + + * src/task/boolean-task.cc, src/task/boolean-task.hh, + * src/task/disjunctive-task.cc, src/task/disjunctive-task.hh, + * src/task/function-task.cc, src/task/function-task.hh, + * src/task/int-task.cc, src/task/int-task.hh, + * src/task/multiple-string-task.cc, src/task/multiple-string-task.hh, + * src/task/string-task.cc, src/task/string-task.hh, + * src/task/task-register.cc, src/task/task-register.hh, + * src/task/task-register.hxx, src/task/task.cc, src/task/task.hh, + * src/task/task.hxx, src/task/tasks.cc, src/task/tasks.hh: + here + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/target + + $ astyle --style=gnu --indent=spaces=2 --indent-namespaces \ + --indent-col1-comments --pad-header --unpad-paren --convert-tabs \ + --close-templates src/target/*.{cc,hh,hxx} + + * src/target/assembly.cc, src/target/assembly.hh, + * src/target/codegen.cc, src/target/codegen.hh, + * src/target/codegen.hxx, src/target/cpu.cc, src/target/cpu.hh, + * src/target/libtarget.cc, src/target/libtarget.hh, + * src/target/target.cc, src/target/target.hh, src/target/tasks.cc, + * src/target/tasks.hh: + Here. + +2014-01-31 Akim Demaille + + style: prefer false to 0 in conditions + + * src/parse/scantiger.ll: here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in scanner and parser + + * src/parse/parsetiger.yy, src/parse/scantiger.ll: Remove space + before paren. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/parse + + astyle --style=gnu --indent=spaces=2 --indent-namespaces \ + --indent-col1-comments --pad-header --unpad-paren src/parse/*.{cc,hh,hxx} + + * src/parse/metavar-map.hh, src/parse/metavar-map.hxx, + * src/parse/tasks.cc, src/parse/tasks.hh, src/parse/test-parse.cc, + * src/parse/test-tweast.cc, src/parse/tiger-parser.cc, + * src/parse/tiger-parser.hh, src/parse/tweast.cc, src/parse/tweast.hh, + * src/parse/tweast.hxx: + Here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/regalloc + + * src/regalloc/color.cc, src/regalloc/color.hh, + * src/regalloc/libregalloc.cc, src/regalloc/libregalloc.hh, + * src/regalloc/regallocator.cc, src/regalloc/regallocator.hh, + * src/regalloc/tasks.cc, src/regalloc/tasks.hh, + * src/regalloc/test-regalloc.cc: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/overload + + * src/overload/binder.cc, src/overload/binder.hh, + * src/overload/liboverload.cc, src/overload/liboverload.hh, + * src/overload/over-table.hh, src/overload/tasks.cc, + * src/overload/tasks.hh, src/overload/type-checker.cc, + * src/overload/type-checker.hh: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/object + + $ astyle --style=gnu --indent=spaces=2 --indent-namespaces \ + --indent-col1-comments --pad-header --unpad-paren --convert-tabs \ + --close-templates src/object/*.{cc,hh} + + * src/object/binder.cc, src/object/binder.hh, + * src/object/desugar-visitor.cc, src/object/desugar-visitor.hh, + * src/object/libobject.cc, src/object/libobject.hh, + * src/object/renamer.cc, src/object/renamer.hh, src/object/tasks.cc, + * src/object/tasks.hh, src/object/test-bind.cc, + * src/object/test-desugar.cc, src/object/test-parse.cc, + * src/object/test-type.cc, src/object/type-checker.cc, + * src/object/type-checker.hh: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/liveness + + * src/liveness/flowgraph.hh, src/liveness/flowgraph.hxx, + * src/liveness/interference-graph.cc, + * src/liveness/interference-graph.hh, + * src/liveness/interference-graph.hxx, src/liveness/libliveness.cc, + * src/liveness/libliveness.hh, src/liveness/liveness.cc, + * src/liveness/liveness.hh, src/liveness/tasks.cc, + * src/liveness/tasks.hh, src/liveness/test-flowgraph.cc: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/inlining + + * src/inlining/inliner.cc, src/inlining/inliner.hh, + * src/inlining/libinlining.cc, src/inlining/libinlining.hh, + * src/inlining/pruner.cc, src/inlining/pruner.hh, + * src/inlining/tasks.cc, src/inlining/tasks.hh: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/frame + + * src/frame/access.cc, src/frame/access.hh, src/frame/frame.cc, + * src/frame/frame.hh: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/escapes + + * src/escapes/escapes-check-visitor.cc, + * src/escapes/escapes-check-visitor.hh, + * src/escapes/escapes-visitor.cc, src/escapes/escapes-visitor.hh, + * src/escapes/libescapes.cc, src/escapes/libescapes.hh, + * src/escapes/tasks.cc, src/escapes/tasks.hh: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/desugar + + * src/desugar/bound-checking-visitor.cc, + * src/desugar/bound-checking-visitor.hh, + * src/desugar/desugar-visitor.cc, src/desugar/desugar-visitor.hh, + * src/desugar/libdesugar.cc, src/desugar/libdesugar.hh, + * src/desugar/tasks.cc, src/desugar/tasks.hh, + * src/desugar/test-bound-checking.cc, + * src/desugar/test-for-loops-desugar.cc, + * src/desugar/test-string-cmp-desugar.cc: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/canon + + * src/canon/basic-block.cc, src/canon/basic-block.hh, + * src/canon/basic-block.hxx, src/canon/canon.cc, src/canon/canon.hh, + * src/canon/libcanon.cc, src/canon/libcanon.hh, src/canon/tasks.cc, + * src/canon/tasks.hh, src/canon/traces.cc, src/canon/traces.hh: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/callgraph + + * src/callgraph/call-graph-visitor.cc, + * src/callgraph/call-graph-visitor.hh, src/callgraph/fundec-graph.hh, + * src/callgraph/fundec-graph.hxx, src/callgraph/libcallgraph.cc, + * src/callgraph/libcallgraph.hh, + * src/callgraph/parent-graph-visitor.cc, + * src/callgraph/parent-graph-visitor.hh, + * src/callgraph/static-link-visitor.cc, + * src/callgraph/static-link-visitor.hh, src/callgraph/tasks.cc, + * src/callgraph/tasks.hh: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/bind + + * src/bind/binder.cc, src/bind/binder.hh, src/bind/binder.hxx, + * src/bind/libbind.cc, src/bind/libbind.hh, src/bind/renamer.cc, + * src/bind/renamer.hh, src/bind/renamer.hxx, src/bind/tasks.cc, + * src/bind/tasks.hh, src/bind/test-bind.cc: + Here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/astclone + + * src/astclone/cloner.cc, src/astclone/cloner.hxx, + * src/astclone/libastclone.hh, src/astclone/libastclone.hxx, + * src/astclone/tasks.cc, src/astclone/tasks.hh, + * src/astclone/test-cloner.cc: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/ast + + * src/ast/any-decs.hh, src/ast/any-decs.hxx, src/ast/decs.cc, + * src/ast/decs.hh, src/ast/decs.hxx, src/ast/default-visitor.hh, + * src/ast/default-visitor.hxx, src/ast/libast.cc, + * src/ast/non-object-visitor.hh, src/ast/non-object-visitor.hxx, + * src/ast/pretty-printer.cc, src/ast/pretty-printer.hh, + * src/ast/tasks.cc, src/ast/tasks.hh, src/ast/test-ast.cc, + * src/ast/visitor.hxx: here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in src/assem + + * src/assem/comment.hh, src/assem/comment.hxx, src/assem/fragment.cc, + * src/assem/fragment.hh, src/assem/fragment.hxx, + * src/assem/fragments.cc, src/assem/fragments.hh, src/assem/instr.cc, + * src/assem/instr.hh, src/assem/instr.hxx, src/assem/instrs.cc, + * src/assem/instrs.hh, src/assem/label.hh, src/assem/label.hxx, + * src/assem/layout.cc, src/assem/layout.hh, src/assem/layout.hxx, + * src/assem/move.hh, src/assem/move.hxx, src/assem/oper.hh, + * src/assem/oper.hxx, src/assem/visitor.hh, src/assem/visitor.hxx: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in lib/misc + + * lib/misc/algorithm.hh, lib/misc/contract.hh, lib/misc/deref.hh, + * lib/misc/endomap.hh, lib/misc/error.hh, lib/misc/escape.hh, + * lib/misc/file-library.hh, lib/misc/flex-lexer.hh, + * lib/misc/generic-variant.hh, lib/misc/graph.hh, lib/misc/indent.hh, + * lib/misc/list.hh, lib/misc/map.hh, lib/misc/pair.hh, + * lib/misc/path.hh, lib/misc/ref.hh, lib/misc/scoped-map.hh, + * lib/misc/separator.hh, lib/misc/set.hh, lib/misc/symbol.hh, + * lib/misc/timer.hh, lib/misc/unique.hh, lib/misc/variant.hh: + here. + +2014-01-31 Akim Demaille + + style: indentation and space issues in lib/**/*.cc + + astyle --style=gnu --indent=spaces=2 --indent-namespaces \ + --indent-col1-comments --pad-header --unpad-paren lib/misc/**/*.cc + + * lib/misc/contract.cc, lib/misc/deref.cc, lib/misc/error.cc, + * lib/misc/escape.cc, lib/misc/file-library.cc, lib/misc/indent.cc, + * lib/misc/path.cc, lib/misc/symbol.cc, lib/misc/test-deref.cc, + * lib/misc/test-error.cc, lib/misc/test-escape.cc, + * lib/misc/test-generic-variant.cc, lib/misc/test-graph.cc, + * lib/misc/test-indent.cc, lib/misc/test-path.cc, + * lib/misc/test-scoped.cc, lib/misc/test-separator.cc, + * lib/misc/test-symbol.cc, lib/misc/test-timer.cc, + * lib/misc/test-unique.cc, lib/misc/test-variant.cc, + * lib/misc/test-xalloc.cc, lib/misc/timer.cc: + Fix indentation/space before paren issues. + +2014-01-30 Roland Levillain + + Record new tests' outputs. + + * tests/object-good/compare-nil-and-object.-e.s, + * tests/object-good/compare-nil-and-object.-e.u.s, + * tests/object-good/compare-nil-and-object.desugared, + * tests/object-good/compare-nil-and-object.err, + * tests/object-good/compare-nil-and-object.hir, + * tests/object-good/compare-nil-and-object.hpr, + * tests/object-good/compare-nil-and-object.lir, + * tests/object-good/compare-nil-and-object.lpr, + * tests/object-good/compare-nil-and-object.out, + * tests/object-good/compare-nil-and-object.s, + * tests/object-good/compare-nil-and-object.sta, + * tests/object-good/compare-nil-and-object.u.s, + * tests/object-good/compare-object-and-nil.-e.s, + * tests/object-good/compare-object-and-nil.-e.u.s, + * tests/object-good/compare-object-and-nil.desugared, + * tests/object-good/compare-object-and-nil.err, + * tests/object-good/compare-object-and-nil.hir, + * tests/object-good/compare-object-and-nil.hpr, + * tests/object-good/compare-object-and-nil.lir, + * tests/object-good/compare-object-and-nil.lpr, + * tests/object-good/compare-object-and-nil.out, + * tests/object-good/compare-object-and-nil.s, + * tests/object-good/compare-object-and-nil.sta, + * tests/object-good/compare-object-and-nil.u.s, + * tests/object-good/explicit-class-type.-e.s, + * tests/object-good/explicit-class-type.-e.u.s, + * tests/object-good/explicit-class-type.desugared, + * tests/object-good/explicit-class-type.err, + * tests/object-good/explicit-class-type.hir, + * tests/object-good/explicit-class-type.hpr, + * tests/object-good/explicit-class-type.lir, + * tests/object-good/explicit-class-type.lpr, + * tests/object-good/explicit-class-type.out, + * tests/object-good/explicit-class-type.s, + * tests/object-good/explicit-class-type.sta, + * tests/object-good/explicit-class-type.u.s, + * tests/object-good/initialize-object-to-nil.-e.s, + * tests/object-good/initialize-object-to-nil.-e.u.s, + * tests/object-good/initialize-object-to-nil.desugared, + * tests/object-good/initialize-object-to-nil.err, + * tests/object-good/initialize-object-to-nil.hir, + * tests/object-good/initialize-object-to-nil.hpr, + * tests/object-good/initialize-object-to-nil.lir, + * tests/object-good/initialize-object-to-nil.lpr, + * tests/object-good/initialize-object-to-nil.out, + * tests/object-good/initialize-object-to-nil.s, + * tests/object-good/initialize-object-to-nil.sta, + * tests/object-good/initialize-object-to-nil.u.s, + * tests/object-good/nil-as-object-arg.-e.s, + * tests/object-good/nil-as-object-arg.-e.u.s, + * tests/object-good/nil-as-object-arg.desugared, + * tests/object-good/nil-as-object-arg.err, + * tests/object-good/nil-as-object-arg.hir, + * tests/object-good/nil-as-object-arg.hpr, + * tests/object-good/nil-as-object-arg.lir, + * tests/object-good/nil-as-object-arg.lpr, + * tests/object-good/nil-as-object-arg.out, + * tests/object-good/nil-as-object-arg.s, + * tests/object-good/nil-as-object-arg.sta, + * tests/object-good/nil-as-object-arg.u.s, + * tests/object-good/nil-as-object-return-value.-e.s, + * tests/object-good/nil-as-object-return-value.-e.u.s, + * tests/object-good/nil-as-object-return-value.desugared, + * tests/object-good/nil-as-object-return-value.err, + * tests/object-good/nil-as-object-return-value.hir, + * tests/object-good/nil-as-object-return-value.hpr, + * tests/object-good/nil-as-object-return-value.lir, + * tests/object-good/nil-as-object-return-value.lpr, + * tests/object-good/nil-as-object-return-value.out, + * tests/object-good/nil-as-object-return-value.s, + * tests/object-good/nil-as-object-return-value.sta, + * tests/object-good/nil-as-object-return-value.u.s, + * tests/object-type/order-nil-with-object.tc-err, + * tests/object-type/order-nil-with-object.tc-sta, + * tests/object-type/order-object-with-nil.tc-err, + * tests/object-type/order-object-with-nil.tc-sta: + New. + +2014-01-30 Roland Levillain + + Exercise the compatibility between `nil' and objects. + + * tests/object-good/compare-nil-and-object.tig, + * tests/object-good/compare-object-and-nil.tig, + * tests/object-good/explicit-class-type.tig, + * tests/object-good/initialize-object-to-nil.tig, + * tests/object-good/nil-as-object-arg.tig, + * tests/object-good/nil-as-object-return-value.tig, + * tests/object-type/order-nil-with-object.tig, + * tests/object-type/order-object-with-nil.tig: + New tests. + +2014-01-30 Roland Levillain + + Allow `nil' as valid value for objects + + * src/type/builtin-types.cc (Nil::compatible_with): Make the `nil' + type compatible with class types... + * src/type/class.cc (Class::compatible_with): ...and vice versa. + * src/type/type-checker.cc + (TypeChecker::operator() (ast::VarDec&): Adjust error messages. + * src/object/desugar-visitor.cc + (object::DesugarVisitor::operator() (const ast::VarDec&)): + Allow `nil' in object (variable) declarations. + (DesugarVisitor::operator() (const ast::AssignExp& e)): + Allow `nil' in object assignments. + (DesugarVisitor::recurse_args): + Allow `nil' as actual argument in a function call. + +2014-01-30 Roland Levillain + + Remove unnecessary `class' keywords. + + * src/type/builtin-types.cc (type::Nil::compatible_with) + * src/type/record.cc (type::Record::compatible_with): + Here. + +2014-01-30 Roland Levillain + + Regen ChangeLog. + +2014-01-30 Roland Levillain + + Regenerate the scanner and parser from src/ at distribution time. + + * dev/stagize: Here, so as to minimize the differences with the + scanner and parser generated in the build dir. + +2014-01-30 Roland Levillain + + Update stagize w.r.t. the generation of the scanner. + + * dev/stagize: Here. + +2014-01-28 Roland Levillain + + Regen tests' outputs. + + * tests/lexical/unterminated-comment.tc-err, + * tests/lexical/unterminated-string.tc-err: + Regen. + +2014-01-17 Roland Levillain + + Fix various Doxygen comments. + + * src/ast/default-visitor.hh, + * src/bind/renamer.hh, + * src/callgraph/fundec-graph.hh, + * src/desugar/bound-checking-visitor.hh, + * src/desugar/desugar-visitor.hh, + * src/inlining/inliner.hh, + * src/inlining/pruner.hh, + * src/object/desugar-visitor.cc, + * src/object/desugar-visitor.hh, + * src/object/renamer.hh, + * src/parse/tweast.hh, + * src/regalloc/color.hh, + * src/transform/generic-rewriter.hh, + * src/transform/generic-traversal.hh, + * src/transform/generic-traversal.hxx, + * src/transform/matcher.hh, + * src/transform/rewriter.hh, + * src/transform/test-combinators.cc + * src/translate/translator.hh: + Here. + +2014-01-17 Roland Levillain + + Factor src/transform/local.mk. + + * src/transform/local.mk: Here, thanks to dev/ast-gen.mk and + src/ast/local.mk. + (BUILT_SOURCES): List only generated .hh and .hxx files. + +2014-01-16 Roland Levillain + + Have src/ast/all.hh actually contain all headers from ast/. + + * dev/ast-all-gen: Generate #include statements for ast/*decs.hh + files. + * src/ast/all.hh: Regen. + +2014-01-16 Roland Levillain + + Ensure src/ast/all.hh gets regenerated with `make all'. + + * src/ast/local.mk (BUILT_SOURCES): Add ast/all.hh. + +2014-01-16 Roland Levillain + + Fix the distribution. + + * src/ast/local.mk (ast_libast_la_SOURCES): Add ast/rule-decs.hh, + but only when the transform distribution is available. + * dev/stagize: Adjust pruning. + * src/parse/parsetiger.yy: Do not include ast/rule-decs.hh when + the `transform' module is not available. + * src/parse/parsetiger.hh, + * src/parse/parsetiger.cc: + Regen. + +2014-01-09 Roland Levillain + + Typos. + + * src/object/desugar-visitor.cc: Here. + +2014-01-09 Roland Levillain + + Pacify OS X's `paste'. + + * tests/Makefile.am (gen-all-outputs): Explicitly pass `-' as + argument to read from the standard input. + +2014-01-08 Roland Levillain + + Add 2014 to the list of years in the copyright notice. + + * AUTHORS.txt: Here. + +2014-01-08 Roland Levillain + + Repair TCSH, by hiding C++11 constructs from SWIG. + + * src/ast/any-decs.hh (ast::AnyDecs::decs_) [!SWIG]: + Hide initializer. + * src/ast/tiger_ast.i, + * src/target/tiger_target.i (override): + Define this macro as empty to hide `override' attributes. + +2014-01-07 Roland Levillain + + Aesthetic changes. + + * src/translate/translator.hh: + Close a Doxygen comment. + * src/assem/fragment.hh, + * src/tree/fragment.hh, + * src/target/ia32/gas-layout.hh, + * src/target/ia32/gas-layout.cc: + Typos in Doxygen comments. + +2014-01-07 Roland Levillain + + Remove useless dtors. + + * src/bind/binder.hh, src/bind/binder.cc, + * src/object/binder.hh, src/object/binder.cc, + * src/overload/binder.hh, src/overload/binder.cc, + * src/target/ia32/gas-layout.hh, + * src/target/mips/spim-layout.hh: + +2014-01-07 Roland Levillain + + Remove useless pairs of parentheses. + + * src/assem/layout.cc, + * src/target/ia32/gas-layout.cc, + * src/target/mips/spim-layout.cc: + Here. + +2014-01-07 Roland Levillain + + Use more explicitly defaulted ctors. + + * src/target/ia32/gas-layout.hh (GasLayout::GasLayout) + * src/target/mips/spim-layout.hh (SpimLayout::SpimLayout): + Here. + +2014-01-07 Roland Levillain + + Do not define (static) function members within class declarations. + + * src/target/ia32/gas-layout.hh (GasLayout::instance) + * src/target/mips/spim-layout.hh (SpimLayout::instance): + Move definitions of these static function members... + * src/target/ia32/gas-layout.cc, + * src/target/mips/spim-layout.cc: + ...here. + +2014-01-07 Roland Levillain + + Remove a useless empty ctor. + + * src/target/target.hh, src/target/target.cc + (target::Target::Target): Remove. + +2014-01-07 Roland Levillain + + Another conversion to range-based `for' loops in libmisc. + + * lib/misc/escape.cc (misc::escaped::escape_): Here. + +2014-01-07 Roland Levillain + + Regen tests' outputs. + + * tests/good/big-lvalue.hir, + * tests/good/big-lvalue.hpr, + * tests/good/big-lvalue.lir, + * tests/good/big-lvalue.lpr, + * tests/good/big-lvalue.s, + * tests/good/big-lvalue.u.s, + * tests/good/compare-nil-and-record.hir, + * tests/good/compare-nil-and-record.hpr, + * tests/good/compare-nil-and-record.lir, + * tests/good/compare-nil-and-record.lpr, + * tests/good/compare-record-and-nil.hir, + * tests/good/compare-record-and-nil.hpr, + * tests/good/compare-record-and-nil.lir, + * tests/good/compare-record-and-nil.lpr, + * tests/good/compare-record-and-record.hir, + * tests/good/compare-record-and-record.hpr, + * tests/good/compare-record-and-record.lir, + * tests/good/compare-record-and-record.lpr, + * tests/good/escaping-record.hir, + * tests/good/escaping-record.hpr, + * tests/good/escaping-record.lir, + * tests/good/escaping-record.lpr, + * tests/good/evalexp.-e.s, + * tests/good/evalexp.-e.u.s, + * tests/good/evalexp.hir, + * tests/good/evalexp.hpr, + * tests/good/evalexp.lir, + * tests/good/evalexp.lpr, + * tests/good/evalexp.s, + * tests/good/evalexp.u.s, + * tests/good/explicit-record-type.hir, + * tests/good/explicit-record-type.hpr, + * tests/good/explicit-record-type.lir, + * tests/good/explicit-record-type.lpr, + * tests/good/field-of-field.-e.s, + * tests/good/field-of-field.-e.u.s, + * tests/good/field-of-field.hir, + * tests/good/field-of-field.hpr, + * tests/good/field-of-field.lir, + * tests/good/field-of-field.lpr, + * tests/good/field-of-field.s, + * tests/good/field-of-field.u.s, + * tests/good/forward-fun-and-type-decl.hir, + * tests/good/forward-fun-and-type-decl.hpr, + * tests/good/forward-fun-and-type-decl.lir, + * tests/good/forward-fun-and-type-decl.lpr, + * tests/good/fractions-underloaded.-e.s, + * tests/good/fractions-underloaded.-e.u.s, + * tests/good/fractions-underloaded.hir, + * tests/good/fractions-underloaded.hpr, + * tests/good/fractions-underloaded.lir, + * tests/good/fractions-underloaded.lpr, + * tests/good/fractions-underloaded.s, + * tests/good/fractions-underloaded.u.s, + * tests/good/merge.-e.s, + * tests/good/merge.-e.u.s, + * tests/good/merge.hir, + * tests/good/merge.hpr, + * tests/good/merge.lir, + * tests/good/merge.lpr, + * tests/good/merge.s, + * tests/good/merge.u.s, + * tests/good/mini-morpho.hir, + * tests/good/mini-morpho.hpr, + * tests/good/mini-morpho.lir, + * tests/good/mini-morpho.lpr, + * tests/good/mini-morpho.s, + * tests/good/mini-morpho.u.s, + * tests/good/print-tree.hir, + * tests/good/print-tree.hpr, + * tests/good/print-tree.lir, + * tests/good/print-tree.lpr, + * tests/good/record.hir, + * tests/good/record.hpr, + * tests/good/record.lir, + * tests/good/record.lpr, + * tests/good/recursive-type.hir, + * tests/good/recursive-type.hpr, + * tests/good/recursive-type.lir, + * tests/good/recursive-type.lpr, + * tests/good/recursive-types-mutual.hir, + * tests/good/recursive-types-mutual.hpr, + * tests/good/recursive-types-mutual.lir, + * tests/good/recursive-types-mutual.lpr, + * tests/good/recursive-types-mutual.s, + * tests/good/recursive-types-mutual.u.s, + * tests/good/recursive-types.hir, + * tests/good/recursive-types.hpr, + * tests/good/recursive-types.lir, + * tests/good/recursive-types.lpr, + * tests/good/redefine-int.hir, + * tests/good/redefine-int.hpr, + * tests/good/redefine-int.lir, + * tests/good/redefine-int.lpr, + * tests/good/scopes-protect-types.hir, + * tests/good/scopes-protect-types.hpr, + * tests/good/scopes-protect-types.lir, + * tests/good/scopes-protect-types.lpr, + * tests/good/scopes-protect-types.s, + * tests/good/scopes-protect-types.u.s, + * tests/good/string-int-not-keywords.hir, + * tests/good/string-int-not-keywords.hpr, + * tests/good/string-int-not-keywords.lir, + * tests/good/string-int-not-keywords.lpr, + * tests/good/test42.hir, + * tests/good/test42.hpr, + * tests/good/test42.lir, + * tests/good/test42.lpr, + * tests/good/three-name-spaces.-e.s, + * tests/good/three-name-spaces.-e.u.s, + * tests/good/three-name-spaces.hir, + * tests/good/three-name-spaces.hpr, + * tests/good/three-name-spaces.lir, + * tests/good/three-name-spaces.lpr, + * tests/good/three-name-spaces.s, + * tests/good/three-name-spaces.u.s, + * tests/good/types-aliases.hir, + * tests/good/types-aliases.hpr, + * tests/good/types-aliases.lir, + * tests/good/types-aliases.lpr, + * tests/object-good/attribute-modification.-e.s, + * tests/object-good/attribute-modification.-e.u.s, + * tests/object-good/attribute-modification.hir, + * tests/object-good/attribute-modification.hpr, + * tests/object-good/attribute-modification.lir, + * tests/object-good/attribute-modification.lpr, + * tests/object-good/attribute-modification.s, + * tests/object-good/attribute-modification.u.s, + * tests/object-good/five-name-spaces.-e.s, + * tests/object-good/five-name-spaces.-e.u.s, + * tests/object-good/five-name-spaces.hir, + * tests/object-good/five-name-spaces.hpr, + * tests/object-good/five-name-spaces.lir, + * tests/object-good/five-name-spaces.lpr, + * tests/object-good/five-name-spaces.s, + * tests/object-good/five-name-spaces.u.s, + * tests/object-good/function-call-in-method.-e.s, + * tests/object-good/function-call-in-method.-e.u.s, + * tests/object-good/function-call-in-method.hir, + * tests/object-good/function-call-in-method.lir, + * tests/object-good/function-call-in-method.s, + * tests/object-good/function-call-in-method.u.s, + * tests/object-good/function-returning-an-object.-e.s, + * tests/object-good/function-returning-an-object.-e.u.s, + * tests/object-good/function-returning-an-object.hir, + * tests/object-good/function-returning-an-object.hpr, + * tests/object-good/function-returning-an-object.lir, + * tests/object-good/function-returning-an-object.lpr, + * tests/object-good/function-returning-an-object.s, + * tests/object-good/function-returning-an-object.u.s, + * tests/object-good/function-returning-object.-e.s, + * tests/object-good/function-returning-object.-e.u.s, + * tests/object-good/function-returning-object.hir, + * tests/object-good/function-returning-object.hpr, + * tests/object-good/function-returning-object.lir, + * tests/object-good/function-returning-object.lpr, + * tests/object-good/function-returning-object.s, + * tests/object-good/function-returning-object.u.s, + * tests/object-good/function-taking-an-object-as-argument.-e.s, + * tests/object-good/function-taking-an-object-as-argument.-e.u.s, + * tests/object-good/function-taking-an-object-as-argument.hir, + * tests/object-good/function-taking-an-object-as-argument.hpr, + * tests/object-good/function-taking-an-object-as-argument.lir, + * tests/object-good/function-taking-an-object-as-argument.lpr, + * tests/object-good/function-taking-an-object-as-argument.s, + * tests/object-good/function-taking-an-object-as-argument.u.s, + * tests/object-good/function-taking-object-as-argument.-e.s, + * tests/object-good/function-taking-object-as-argument.-e.u.s, + * tests/object-good/function-taking-object-as-argument.hir, + * tests/object-good/function-taking-object-as-argument.hpr, + * tests/object-good/function-taking-object-as-argument.lir, + * tests/object-good/function-taking-object-as-argument.lpr, + * tests/object-good/function-taking-object-as-argument.s, + * tests/object-good/function-taking-object-as-argument.u.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.-e.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.-e.u.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.hir, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.lir, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.u.s, + * tests/object-good/inner-class-with-same-member-names.-e.s, + * tests/object-good/inner-class-with-same-member-names.-e.u.s, + * tests/object-good/inner-class-with-same-member-names.hir, + * tests/object-good/inner-class-with-same-member-names.lir, + * tests/object-good/inner-class-with-same-member-names.s, + * tests/object-good/inner-class-with-same-member-names.u.s, + * tests/object-good/instantiate-object.-e.s, + * tests/object-good/instantiate-object.-e.u.s, + * tests/object-good/instantiate-object.hir, + * tests/object-good/instantiate-object.hpr, + * tests/object-good/instantiate-object.lir, + * tests/object-good/instantiate-object.lpr, + * tests/object-good/instantiate-object.s, + * tests/object-good/instantiate-object.u.s, + * tests/object-good/method-call.-e.s, + * tests/object-good/method-call.-e.u.s, + * tests/object-good/method-call.hir, + * tests/object-good/method-call.hpr, + * tests/object-good/method-call.lir, + * tests/object-good/method-call.lpr, + * tests/object-good/method-call.s, + * tests/object-good/method-call.u.s, + * tests/object-good/method-using-self-as-argument.-e.s, + * tests/object-good/method-using-self-as-argument.-e.u.s, + * tests/object-good/method-using-self-as-argument.hir, + * tests/object-good/method-using-self-as-argument.hpr, + * tests/object-good/method-using-self-as-argument.lir, + * tests/object-good/method-using-self-as-argument.lpr, + * tests/object-good/method-using-self-as-argument.s, + * tests/object-good/method-using-self-as-argument.u.s, + * tests/object-good/redefining-object.-e.s, + * tests/object-good/redefining-object.-e.u.s, + * tests/object-good/redefining-object.hir, + * tests/object-good/redefining-object.lir, + * tests/object-good/redefining-object.s, + * tests/object-good/redefining-object.u.s, + * tests/object-good/simple-class.-e.s, + * tests/object-good/simple-class.-e.u.s, + * tests/object-good/simple-class.hir, + * tests/object-good/simple-class.lir, + * tests/object-good/simple-class.s, + * tests/object-good/simple-class.u.s, + * tests/object-good/simple-extends.-e.s, + * tests/object-good/simple-extends.-e.u.s, + * tests/object-good/simple-extends.hir, + * tests/object-good/simple-extends.hpr, + * tests/object-good/simple-extends.lir, + * tests/object-good/simple-extends.lpr, + * tests/object-good/simple-extends.s, + * tests/object-good/simple-extends.u.s, + * tests/object-good/simple-instantiation.-e.s, + * tests/object-good/simple-instantiation.-e.u.s, + * tests/object-good/simple-instantiation.hir, + * tests/object-good/simple-instantiation.hpr, + * tests/object-good/simple-instantiation.lir, + * tests/object-good/simple-instantiation.lpr, + * tests/object-good/simple-instantiation.s, + * tests/object-good/simple-instantiation.u.s, + * tests/object-good/trivial-class.-e.s, + * tests/object-good/trivial-class.-e.u.s, + * tests/object-good/trivial-class.hir, + * tests/object-good/trivial-class.lir, + * tests/object-good/trivial-class.s, + * tests/object-good/trivial-class.u.s, + * tests/object-good/type-simple-class.-e.s, + * tests/object-good/type-simple-class.-e.u.s, + * tests/object-good/type-simple-class.hir, + * tests/object-good/type-simple-class.lir, + * tests/object-good/type-simple-class.s, + * tests/object-good/type-simple-class.u.s, + * tests/object-good/type-simple-extends.-e.s, + * tests/object-good/type-simple-extends.-e.u.s, + * tests/object-good/type-simple-extends.hir, + * tests/object-good/type-simple-extends.lir, + * tests/object-good/type-simple-extends.s, + * tests/object-good/type-simple-extends.u.s, + * tests/object-good/upcast.-e.s, + * tests/object-good/upcast.-e.u.s, + * tests/object-good/upcast.hir, + * tests/object-good/upcast.hpr, + * tests/object-good/upcast.lir, + * tests/object-good/upcast.lpr, + * tests/object-good/upcast.s, + * tests/object-good/upcast.u.s, + * tests/object-good/using-members-from-within-the-class.-e.s, + * tests/object-good/using-members-from-within-the-class.-e.u.s, + * tests/object-good/using-members-from-within-the-class.hir, + * tests/object-good/using-members-from-within-the-class.hpr, + * tests/object-good/using-members-from-within-the-class.lir, + * tests/object-good/using-members-from-within-the-class.lpr, + * tests/object-good/using-members-from-within-the-class.s, + * tests/object-good/using-members-from-within-the-class.u.s, + * tests/object-good/valid-forward-reference-to-class.-e.s, + * tests/object-good/valid-forward-reference-to-class.-e.u.s, + * tests/object-good/valid-forward-reference-to-class.hir, + * tests/object-good/valid-forward-reference-to-class.lir, + * tests/object-good/valid-forward-reference-to-class.s, + * tests/object-good/valid-forward-reference-to-class.u.s, + * tests/object-good/variable-modification.-e.s, + * tests/object-good/variable-modification.-e.u.s, + * tests/object-good/variable-modification.hir, + * tests/object-good/variable-modification.lir, + * tests/object-good/variable-modification.s, + * tests/object-good/variable-modification.u.s, + * tests/object-good/variable-of-type-object.-e.s, + * tests/object-good/variable-of-type-object.-e.u.s, + * tests/object-good/variable-of-type-object.hir, + * tests/object-good/variable-of-type-object.hpr, + * tests/object-good/variable-of-type-object.lir, + * tests/object-good/variable-of-type-object.lpr, + * tests/object-good/variable-of-type-object.s, + * tests/object-good/variable-of-type-object.u.s, + * tests/object-good/vehicle.-e.s, + * tests/object-good/vehicle.-e.u.s, + * tests/object-good/vehicle.hir, + * tests/object-good/vehicle.hpr, + * tests/object-good/vehicle.lir, + * tests/object-good/vehicle.lpr, + * tests/object-good/vehicle.s, + * tests/object-good/vehicle.u.s, + * tests/object-good/visitor.-e.s, + * tests/object-good/visitor.-e.u.s, + * tests/object-good/visitor.hir, + * tests/object-good/visitor.hpr, + * tests/object-good/visitor.lir, + * tests/object-good/visitor.lpr, + * tests/object-good/visitor.s, + * tests/object-good/visitor.u.s, + * tests/overload-good/overload-function-record-arg.hir, + * tests/overload-good/overload-function-record-arg.hpr, + * tests/overload-good/overload-function-record-arg.lir, + * tests/overload-good/overload-function-record-arg.lpr, + * tests/overload-good/overload-nil-diambiguated.hir, + * tests/overload-good/overload-nil-diambiguated.hpr, + * tests/overload-good/overload-nil-diambiguated.lir, + * tests/overload-good/overload-nil-diambiguated.lpr: + Here. + +2014-01-07 Roland Levillain + + Optimize the translation of records' first field accesses. + + * src/translate/translation.cc + (translate::fieldVar, translate::recordExp): + Replace `binop add const 0' with `'. + +2014-01-07 Roland Levillain + + Initialize variables when declaring them. + + * src/translate/translation.cc + (translate::fieldVar, translate::subscriptVar): Here. + +2014-01-07 Roland Levillain + + Use extension `gv' for GraphViz files instead of `dot'. + + * TODO.txt, + * build-aux/bin/bison++.in, + * dev/ast-gen.mk, + * dev/ast-graph-gen, + * dev/stagize, + * lib/misc/graph.hxx, + * src/ast/local.mk, + * src/liveness/libliveness.cc, + * src/liveness/local.mk, + * tests/Makefile.am, + * tests/tc-check.in: + Here. + * src/ast/ast.dot: Rename as... + * src/ast/ast.gv: ...this. + +2014-01-07 Roland Levillain + + Pacify g++ 4.8. + + * src/parse/parsetiger.yy: Include the required class declarations + to have `delete' statements within %destructor clauses work + properly. + * src/parse/parsetiger.hh, src/parse/parsetiger.cc: Regen. + +2014-01-07 Roland Levillain + + Regen the parser (with Bison 3.0.2.13-5e63). + + * src/parse/parsetiger.hh, + * src/parse/parsetiger.cc: + Regen. + +2014-01-07 Roland Levillain + + Generate and use a Flex C++ scanner. + + * build-aux/bin/flex++.in, + * lib/misc/flex-lexer.hh: + New. Borrowed from Akim's work in Vaucanson 2. + * lib/misc/local.mk (misc_libmisc_la_SOURCES): + Add misc/flex-lexer.hh. + * src/parse/scantiger.ll: Enable option `c++' and disable option + `noyywrap'. + Use YY_FLEX_NAMESPACE_BEGIN and YY_FLEX_NAMESPACE_END to enclose + the implementation of the generated scanner in the namespace + `parse'. + (yylex_destroy, TigerParser::scan_open, TigerParser::scan_close): + Remove funtion definitions. + (yyFlexLexer::scan_open_, yyFlexLexer::scan_close_): + New member function definitions. + (yyFlexLexer::yywrap): New dummy member function definition. + * src/parse/scantiger.hh: New. + * src/parse/parsetiger.yy (YY_DECL_, YY_DECL): New macros. + (parselex): New function. + * src/parse/tiger-parser.hh (YYLEX_SIGNATURE, YY_DECL): + Remove macros. Use parsetiger.yy's YY_DECL_ instead. + (TigerParser::scanner_): New member. + (TigerParser::states_): Remove member. + (TigerParser::scan_open, TigerParser::scan_close): + Remove member functions. Replaced by yyFlexLexer::scan_open_ and + yyFlexLexer::scan_close_. + * src/parse/tiger-parser.cc + (TigerParser::TigerParser): Initialize scanner_. + (TigerParser::parse_): Prepare the scanner's input and adjust the + implementation to its new interface. + * src/parse/fwd.hh: Adjust. + * src/parse/local.mk (FLEXXX, FLEXXX_IN): New variables. + ($(FLEXXX), parse/scantiger.cc): New targets + (MAINTAINERCLEANFILES): Add parse/scantiger.cc. + (EXTRA_DIST): Add parse/scantiger.ll + (parse_libparsetiger_la_SOURCES): Remove parse/scantiger.ll. + Add parse/scantiger.hh and parse/scantiger.cc. + * configure.ac: Require Flex 2.5.35 at least. + No longer rely on AM_PROG_LEX, as we now use the flex++ wrapper to + generate the scanner. + +2014-01-02 Roland Levillain + + Do not distribute src/parse/stack.hh when generating a GLR parser. + + * src/parse/local.mk (SOURCES_PARSETIGER_YY_OTHER): Remove + parse/stack.hh. + (dist-hook): New hook, distributing src/parse/stack.hh only with + non-GLR parsers. + +2013-12-31 Roland Levillain + + Teach Git to ignore more files. + +2013-12-30 Roland Levillain + + Regen ChangeLog. + +2013-12-18 Roland Levillain + + Regen the parser with Bison 3.0.2.13-5e63. + + * src/parse/parsetiger.hh, + * src/parse/parsetiger.cc, + * src/parse/location.hh, + * src/parse/position.hh: + Regen. + +2013-12-11 Roland Levillain + + Revert to the previous behavior of misc::path. + + * lib/misc/path.cc (misc::path::path ()): Build an empty path + instead of "/". + +2013-12-11 Roland Levillain + + Require Bison 3.0. + + * configure.ac: Here. + +2013-12-10 Akim Demaille + + parse: regen + + * src/parse/location.hh, src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, src/parse/position.hh: Regen. + +2013-12-10 Akim Demaille + + build: fix a compiler warning + + * lib/misc/timer.hxx: When NDEBUG is set, task_name is not used, + hence a warning. + +2013-12-10 Akim Demaille + + path: use delegating constructors + + * lib/misc/path.hh, lib/misc/path.cc (init): Fuse into... + (path(std::string)): here. + (path(const char*)): Use the latter. + +2013-12-10 Akim Demaille + + parse: update to Bison 3.0 + + * src/parse/parsetiger.yy: Require 3.0. + (filename_type): Adjust definition syntax. + +2013-12-10 Akim Demaille + + style: formatting changes in codegen + + * src/target/ia32/codegen.cc, src/target/ia32/codegen.hh, + * src/target/mips/codegen.cc, src/target/mips/codegen.hh: + Regen with newest monoburg. + Space changes only (spaces instead of tabulations). + +2013-12-09 Roland Levillain + + Update URLs to point to the new Web location. + + * build-aux/leopard.el, + * dev/install-bison, + * dev/install-havm, + * dev/install-monoburg, + * dev/install-nolimips, + * dev/tc.texi, + * src/doc.hh: + Here. + +2013-12-09 Roland Levillain + + Do not hide a `%code requires' section to students. + + * src/parse/parsetiger.yy: Here. + * src/parse/parsetiger.hh, + * src/parse/parsetiger.cc: + Regen. + +2013-12-06 Roland Levillain + + Update remote doc installation settings to target the new location. + + * Makefile.am + (install_doc_user, install_doc_host, install_doc_dir): Here. + (install-doc): Remove this rule, as it no longer works. + (install-doc-remote): Call bootstrap instead of autoreconf to + properly generate all the files required by configure and make. + +2013-10-31 Roland Levillain + + Regen ChangeLog. + +2013-10-30 Roland Levillain + + Require Libtool 2.2.6. + + * bootstrap: Here. + +2013-10-16 Roland Levillain + + Regen ChangeLog. + +2013-10-15 Roland Levillain + + Teach Git to ignore build-aux/compile. + +2013-10-15 Roland Levillain + + Provide AX_CHECK_COMPILE_FLAG. + + * build-aux/ax_check_compile_flag.m4: New. + Imported from + http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html. + * configure.ac: Ensure AX_* macros are expanded. + +2013-10-10 Roland Levillain + + Regen ChangeLog. + +2013-10-10 Roland Levillain + + Add a target to generate tc-base updates. + + * Makefile.am (20%.git): New target. + (TC_BASE_URL, TC_BASE_BRANCH): New variables. + +2013-09-20 Roland Levillain + + Correct two mistakes in lib/misc/test-graph. + + * lib/misc/test-graph.cc (consistency): Ensure the vertex to + remove is valid. + Remove all edges to and from a vertex prior to removing the vertex + itself. + +2013-09-19 Roland Levillain + + Work around a link problem regarding code generated by clang++ 3.3. + + * src/assem/instrs.hh + (assem::Instrs::operator=(const Instrs&)) + (assem::Instrs::operator=(Instrs&&)): Remove `virtual' qualifiers, + as the code generated by clang++ 3.3 produces the following error + at link time while linking ti/ti (at least with Mac OS X's Mach-O + linker): + + Undefined symbols for architecture x86_64: + "___cxa_deleted_virtual", referenced from: + vtable for assem::Instrs in libassem.a(instrs.o) + ld: symbol(s) not found for architecture x86_64 + +2013-09-19 Roland Levillain + + Work around a clang++ 3.3 ICE. + + * src/liveness/liveness.cc (liveness::Liveness::Liveness) + * src/object/desugar-visitor.cc + (object::DesugarVisitor::type_symbol) + (object::DesugarVisitor::variant_exp) + * src/transform/metavar-pool.hxx (transform::MetavarPool::get): + Use the syntax `x.operator() (y)' instead of `x (y)' to please + MacPorts' clang++ 3.3. + +2013-09-19 Roland Levillain + + Use fully qualified names for routines of the standard library. + + * lib/misc/timer.cc (misc::timer::timeinfo, misc::timer::dump): + s/setiosflags/std::setiosflags/. + s/resetiosflags/std::resetiosflags/. + Reported by clang++ 3.3. + +2013-09-19 Roland Levillain + + Improve support for OS X w.r.t clang++ and C++ 2011. + + * configure.ac: Here. + +2013-09-19 Roland Levillain + + Use AX_CHECK_COMPILE_FLAG to check compiler flag support. + + * configure.ac: Here. + +2013-09-16 Roland Levillain + + Warn if the C++ compiler is neither g++ 4.8 nor clang++ 3.3. + + * configure.ac: here. + Reported by Arnaud Farbos . + +2013-08-02 Roland Levillain + + Give move semantics to assem::Instrs to prevent multiple deletions. + + * src/assem/instrs.hh (assem::Instrs (const Instrs&)) + (assem::operator=(const Instrs&)): + Defined these functions members as explicitly deleted. + (assem::Instrs (Instrs&&))) + (assem::operator=(Instrs&&)): + Defined these functions members as explicitly defaulted. + * src/assem/instrs.hxx (assem::Instrs::~Instrs): Explain why a + deep destruction of the list's elements is now safe. + +2013-08-02 Roland Levillain + + Provide a more accurate documentation for misc::map's insert(). + + * lib/misc/map.hh (misc::map::insert): Here, to avoid + confusion with std::list's splice() behavior. + +2013-08-02 Roland Levillain + + Use emplace() and friends to save copies (and shorten code). + + * lib/misc/algorithm.hxx (misc::put) + * lib/misc/endomap.hxx (misc::endo_map::operator[]) + * lib/misc/scoped-map.hxx + (misc::scoped_map::scoped_map) + (misc::scoped_map::scope_begin) + * src/bind/renamer.hxx (bind::Renamer::new_name) + * src/overload/over-table.hxx (overload::OverTable::OverTable) + * src/liveness/interference-graph.cc + (liveness::InterferenceGraph::compute_liveness) + * src/translate/translator.cc + (translate::Translator::operator() (const ast::WhileExp&)) + (translate::Translator::operator() (const ast::ForExp&)) + * src/type/class.hxx + (type::Class::attr_add (const ast::VarDec*)) + * src/type/record.hxx + (type::Record::field_add (const misc::symbol, const Type&)): + Here. + Suggested by Akim Demaille . + * lib/misc/map.hh, lib/misc/map.hxx + (misc::map::emplace): New method. + +2013-08-01 Roland Levillain + + Make GCC 4.8 the official C/C++ compiler. + + * configure.ac (GCC_PREREQ): Set to 4.6. + * tests/tc-check.in: Require gcc-4.6 and g++-4.6. + +2013-08-01 Roland Levillain + + Announce recently added C++11-related changes. + + * NEWS: Here. + +2013-08-01 Roland Levillain + + Regen the parser. + + * src/parse/parsetiger.cc: Regen. + +2013-08-01 Roland Levillain + + Introduce the use of inherited constructors. + + * src/tree/fragments.hh, src/tree/fragments.cc + (tree::Fragments): Here. + +2013-08-01 Roland Levillain + + Introduce the use of non-static data member initializers. + + * src/ast/any-decs.hh, src/ast/any-decs.hxx, + * src/bind/binder.hh, src/bind/binder.cc, + * src/object/binder.hh, src/object/binder.cc, + * src/overload/binder.hh, src/overload/binder.cc, + * src/callgraph/call-graph-visitor.hh, + * src/callgraph/call-graph-visitor.cc, + * src/callgraph/parent-graph-visitor.hh, + * src/callgraph/parent-graph-visitor.cc, + * src/callgraph/static-link-visitor.hh, + * src/callgraph/static-link-visitor.cc, + * src/frame/frame.hh, src/frame/frame.cc, + * src/target/cpu-limits.hh, + * src/tree/tree.hh, src/tree/tree.hxx: + Here. Remove useless ctors. + * src/target/cpu-limits.cc: Remove. + * src/target/local.mk (target_libtarget_la_SOURCES): + Remove target/cpu-limits.cc. + + * dev/ast-nodes-gen (print_attributes): Generate non-static data + member initializers where available and... + * dev/ast.py (Attribute.ctor_init, Node.ctor_init): ...disable the + corresponding in-ctor initializations. + * src/ast/break-exp.hh, src/ast/break-exp.cc, + * src/ast/call-exp.hh, src/ast/call-exp.cc, + * src/ast/escapable.hh, src/ast/escapable.cc, + * src/ast/field-var.hh, src/ast/field-var.cc, + * src/ast/function-dec.hh, src/ast/function-dec.cc, + * src/ast/method-call-exp.hh, src/ast/method-call-exp.cc, + * src/ast/name-ty.hh, src/ast/name-ty.cc, + * src/ast/simple-var.hh, src/ast/simple-var.cc, + * src/ast/typable.hh, src/ast/typable.cc, + * src/ast/type-constructor.hh, src/ast/type-constructor.cc: + Regen. + +2013-08-01 Roland Levillain + + Introduce the use of delegating constructors. + + * src/parse/tweast.cc (parse::Tweast::Tweast()): + Delegate construction to... + (parse::Tweast::Tweast (const std::string&)): + ...this ctor. + +2013-07-31 Roland Levillain + + Use new function declarator syntax. + + * src/astclone/libastclone.hh (applicable): Here. + Suggested by Akim Demaille . + * src/astclone/libastclone.hxx (apply): Use function pointer's + implicit dereference syntax. + +2013-07-31 Roland Levillain + + Start to use template aliases. + + * src/astclone/libastclone.hh, src/astclone/libastclone.hxx + (applicable): Turn this (traits) class template into a template + alias. + (apply): Adjust. + +2013-07-31 Roland Levillain + + Use explicit overrides. + + * dev/ast-cloner-gen, + * dev/ast-default-visitor-gen, + * dev/ast-nodes-gen, + * dev/ast-pretty-printer-gen, + * dev/transform-all-gen, + * dev/transform-proxy-visitors-gen, + * lib/misc/endomap.hh, + * lib/misc/graph.hh, + * lib/misc/xalloc.hh, + * src/assem/fragment.hh, + * src/assem/layout.hh, + * src/assem/move.hh, + * src/assem/oper.hh, + * src/ast/any-decs.hh, + * src/ast/default-visitor.hh, + * src/ast/non-object-visitor.hh, + * src/bind/binder.hh, + * src/bind/renamer.hh, + * src/callgraph/call-graph-visitor.hh, + * src/callgraph/fundec-graph.hh, + * src/callgraph/parent-graph-visitor.hh, + * src/callgraph/static-link-visitor.hh, + * src/desugar/bound-checking-visitor.hh, + * src/desugar/desugar-visitor.hh, + * src/escapes/escapes-check-visitor.hh, + * src/escapes/escapes-visitor.hh, + * src/frame/access.hh, + * src/inlining/inliner.hh, + * src/inlining/pruner.hh, + * src/liveness/interference-graph.hh, + * src/liveness/libliveness.cc, + * src/object/binder.hh, + * src/object/desugar-visitor.hh, + * src/object/renamer.hh, + * src/overload/binder.hh, + * src/overload/type-checker.hh, + * src/regalloc/regallocator.hh, + * src/target/libtarget.cc, + * src/target/ia32/cpu.hh, + * src/target/ia32/gas-assembly.hh, + * src/target/ia32/gas-layout.hh, + * src/target/ia32/prologue.hh, + * src/target/ia32/target.hh, + * src/target/mips/cpu.hh, + * src/target/mips/prologue.hh, + * src/target/mips/spim-assembly.hh, + * src/target/mips/spim-layout.hh, + * src/target/mips/target.hh, + * src/task/boolean-task.hh, + * src/task/disjunctive-task.hh, + * src/task/function-task.hh, + * src/task/int-task.hh, + * src/task/multiple-string-task.hh, + * src/task/string-task.hh, + * src/transform/generic-rewriter.hh, + * src/transform/generic-traversal.hh, + * src/transform/rewriter.hh, + * src/translate/exp.hh, + * src/translate/translator.hh, + * src/tree/binop.hh, + * src/tree/call.hh, + * src/tree/cjump.hh, + * src/tree/const.hh, + * src/tree/eseq.hh, + * src/tree/fragment.hh, + * src/tree/jump.hh, + * src/tree/label.hh, + * src/tree/mem.hh, + * src/tree/move.hh, + * src/tree/name.hh, + * src/tree/seq.hh, + * src/tree/sxp.hh, + * src/tree/temp.hh, + * src/type/array.hh, + * src/type/builtin-types.hh, + * src/type/class.hh, + * src/type/function.hh, + * src/type/named.hh, + * src/type/record.hh, + * src/type/type-checker.hh: + Here. + * src/ast/array-exp.hh, + * src/ast/array-ty.hh, + * src/ast/assign-exp.hh, + * src/ast/break-exp.hh, + * src/ast/call-exp.hh, + * src/ast/cast-exp.hh, + * src/ast/cast-var.hh, + * src/ast/class-ty.hh, + * src/ast/dec.hh, + * src/ast/decs-list.hh, + * src/ast/exp.hh, + * src/ast/field-init.hh, + * src/ast/field-var.hh, + * src/ast/field.hh, + * src/ast/for-exp.hh, + * src/ast/function-dec.hh, + * src/ast/if-exp.hh, + * src/ast/int-exp.hh, + * src/ast/let-exp.hh, + * src/ast/metavar-exp.hh, + * src/ast/method-call-exp.hh, + * src/ast/method-dec.hh, + * src/ast/name-ty.hh, + * src/ast/nil-exp.hh, + * src/ast/object-exp.hh, + * src/ast/op-exp.hh, + * src/ast/record-exp.hh, + * src/ast/record-ty.hh, + * src/ast/rule-dec.hh, + * src/ast/seq-exp.hh, + * src/ast/simple-var.hh, + * src/ast/string-exp.hh, + * src/ast/subscript-var.hh, + * src/ast/ty.hh, + * src/ast/type-dec.hh, + * src/ast/var-dec.hh, + * src/ast/while-exp.hh, + * src/astclone/cloner.hh, + * src/target/ia32/codegen.hh, + * src/target/mips/codegen.hh, + * src/transform/all.hh, + * src/transform/proxy-visitors.hh: + Regen. + +2013-07-31 Roland Levillain + + No longer require the Boost Lambda Library. + + * configure.ac: Here. + +2013-07-31 Roland Levillain + + Use lambda expressions. + + * src/canon/traces.cc + (canon::block_frontier_p) + (canon::label_p): + Remove functors, and replace their uses (resp.)... + (canon::Traces::make_basic_blocks) + (canon::Traces::useless_jump_p): + ...by lambda expressions, here (resp.). + * src/assem/instrs.cc (assem::same_label_p): Remove functor, and + replace its use... + (assem::Instrs::splice): ...by a lambda expression, here. + +2013-07-31 Roland Levillain + + Use more initializer lists. + + * src/tree/fragments.hh, src/tree/fragments.cc + (Fragments (std::initializer_list)): New ctor. + * src/target/ia32/test-target.cc, + * src/target/mips/test-target.cc: + Here. + +2013-07-31 Roland Levillain + + Use range-based for-loops with initializer lists. + + * tree/seq.hxx (Seq::Seq (std::initializer_list)): Here. + +2013-07-31 Roland Levillain + + Use initializer lists in module tree. + + * src/tree/jump.hxx (tree::Jump::label_get): Here. + +2013-07-31 Roland Levillain + + Get rid of a const_cast in assem::Instrs. + + * src/assem/instrs.hh, src/assem/instrs.cc + (assem::Instrs::splice): Remove this method, as we now rely on... + (std::list::splice (const_iterator, list&&)): + ...this (inherited) method, required by the C++ 2011 standard. + +2013-07-31 Roland Levillain + + Use new and more uniform shortcuts for labels and temps in assemblies. + + * src/target/ia32/gas-assembly.cc (target::ia32::L) + * src/target/mips/spim-assembly.cc (target::mips::L): + Rename typedefs as... + * src/target/ia32/gas-assembly.cc (target::ia32::Ts) + * src/target/mips/spim-assembly.cc (target::mips::Ts): + ...these. + * src/target/ia32/gas-assembly.cc (target::ia32::Ls) + * src/target/mips/spim-assembly.cc (target::mips::Ls): + New typedefs, used to replace temp::label_list_type. + +2013-07-31 Roland Levillain + + Introduce the use of general-purpose initializer lists. + + * src/assem/instrs.hh, src/assem/instrs.cc + (assem::Instrs::Instrs ()): New explicitely defaulted ctor. + (assem::Instrs::Instrs (std::initializer_list)): New ctor. + * src/tree/seq.hh, src/tree/seq.hxx + (tree::Seq::Seq (std::initializer_list)): New ctor. + * src/ast/test-ast.cc, + * src/liveness/test-flowgraph.cc, + * src/parse/parsetiger.yy, + * src/target/ia32/gas-assembly.cc, + * src/target/mips/spim-assembly.cc, + * src/temp/test-temp.cc, + * src/translate/exp.cc, + * src/translate/translation.cc, + * src/translate/translator.cc, + * ti/ti.cc: + Simplify some constructions using initializer lists. + +2013-07-31 Roland Levillain + + Use std::shared_ptr instead boost::shared_ptr. + + * lib/misc/ref.hh: Here. + * lib/misc/ref.hxx: Fix headers inclusions. + s/boost::dynamic_pointer_cast/std::dynamic_pointer_cast/. + +2013-07-31 Roland Levillain + + Use std::unique_ptr instead std::auto_ptr. + + * src/callgraph/tasks.cc, + * src/desugar/libdesugar.cc, + * src/inlining/libinlining.cc, + * src/object/libobject.cc, + * src/object/tasks.cc, + * src/target/cpu.hh, + * src/target/tasks.cc, + * src/target/tasks.hh, + * src/temp/tasks.cc, + * src/temp/tasks.hh, + * src/translate/libtranslate.cc, + * src/translate/libtranslate.hh, + * src/translate/tasks.cc, + * src/translate/tasks.hh, + * ti/ti.cc: + Here. + +2013-07-25 Roland Levillain + + Fix a comment about the binding of method calls. + + * src/object/binder.cc (Binder::operator() (ast::MethodCallExp&)): + Here. + +2013-07-25 Roland Levillain + + Address warnings about conversions from string constants to char*. + + * src/stc.cc (main): Here. + +2013-07-25 Roland Levillain + + Aesthetic changes. + + * src/target/fwd.hh, + * src/target/ia32/epilogue.cc, + * src/target/tasks.hh, + * tcsh/python/ti.py: + Here. + * src/target/ia32/codegen.cc: Regen. + +2013-07-25 Roland Levillain + + Change IA32 into IA-32 (in relevant places). + + * src/target/ia32/call.brg, + * src/target/ia32/cpu.hh, + * src/target/ia32/epilogue.cc, + * src/target/ia32/gas-assembly.hh, + * src/target/ia32/gas-layout.cc, + * src/target/ia32/gas-layout.hh, + * src/target/ia32/prologue.hh, + * src/target/ia32/target.hh, + * src/target/tasks.cc, + * src/target/tasks.hh, + * tcsh/python/ti.py, + * tests/tc-check.in: + Here. + * src/target/ia32/codegen.hh, + * src/target/ia32/codegen.cc: + Regen. + +2013-07-25 Roland Levillain + + Small improvements in the Tiger Interpreter. + + * ti/tiopts.cc (TiOpts::parse): Provide a better description of + the command line options. + * ti/ti.cc: Aesthetic changes. + +2013-07-25 Roland Levillain + + Fix the IA-32 back end of the Tiger Interpreter. + + * ti/ti.cc (backend_gcc): Pass option -m32 to gcc. + (backend_asm): Catch up with target::runtime_dump's signature. + +2013-07-23 Roland Levillain + + Prevent Emacs from using tabs in C++ files. + +2013-07-23 Roland Levillain + + Add the Tiger Project's URL to package information. + + * configure.ac (AC_INIT): Here. + +2013-07-23 Roland Levillain + + Overhaul warnings.m4. + + * build-aux/warning.m4 (TC_CXX_FLAGS): Get rid of obsolete code. + +2013-07-12 Roland Levillain + + Regen ChangeLog. + +2013-07-12 Roland Levillain + + Try to avoid parsetiger.hh's strict-aliasing related warnings. + + * configure.ac: Set NO_STRICT_ALIASING_CXXFLAGS to + -Wno-strict-aliasing if the compiler supports it. + * src/parse/local.mk + (SOURCES_PARSETIGER_YY_PARSER) + (SOURCES_PARSETIGER_YY_OTHER): + New variables. + Use them... + (SOURCES_PARSETIGER_YY): ...here. + (parse_libparse_la_SOURCES): Move sources related to + parse/parsetiger.hh... + (parse_libparsetiger_la_SOURCES): ...here, so that they are + separately compiled as a convenience library using... + (parse_libparsetiger_la_CXXFLAGS): ...these flags, containing + $(NO_STRICT_ALIASING_CXXFLAGS). + (nodist_parse_libparser_la_SOURCES): Rename as... + (nodist_parse_libparsetiger_la_SOURCES): ...this. + (noinst_LTLIBRARIES): Add parse/libparsetiger.la. + (parse_libparse_la_LIBADD): New. Add parse/libparsetiger.la. + * src/inlining/pruner.cc: Do not include parse/tiger-parser.hh as + it is not required, thus saving us many warnings regarding strict + aliasing. + +2013-07-12 Roland Levillain + + Add an M4 macro to record supported compiler flags in a variable. + + * build-aux/warning.m4 (TC_CXX_FLAGS): New macro. + Use it to rewrite... + (TC_CXX_WARNINGS): ...this macro. + +2013-06-27 Roland Levillain + + Regen ChangeLog. + +2013-06-05 Roland Levillain + + Retain compatibility with Clang 3.0. + + * target/ia32/test-target.cc, + * target/mips/test-target.cc: + Do not use initializer lists at all. + +2013-06-04 Roland Levillain + + Aesthetic change in libmisc. + + * lib/misc/escape.hh: Here. + +2013-06-03 Roland Levillain + + Regen ChangeLog. + +2013-06-03 Roland Levillain + + Update the documention of Tree's Jump instruction. + + * src/tree/README.txt, + * src/tree/jump.hh: + Here. + +2013-06-03 Roland Levillain + + Improve ChangeLog regeneration. + + * Makefile.am (update-ChangeLog): Here. + +2013-06-03 Roland Levillain + + Typo in a Doxygen header. + + * src/tree/jump.hxx: Here. + +2013-05-20 Roland Levillain + + Regen ChangeLog. + +2013-05-20 Roland Levillain + + More silent rules. + + * src/Makefile.am (stc-runtime.cc): Here. + +2013-05-20 Roland Levillain + + AUTHORS.txt: Typos. + +2013-05-03 Roland Levillain + + Fix the name of an argument. + + * src/translate/exp.hh, src/translate/exp.cc + (translate::Ix::unCx): Rename argument `outer_type' (which was + wrongly renamed during a batch processing from `outer_t') to + `t_outer'. Do not use `outer_t' again, as suffix `_t' should be + reserved for the C language and POSIX. Symmetrically, rename + argument `outer_f' to `f_outer'. + +2013-04-22 Roland Levillain + + Regen ChangeLog. + +2013-04-16 Roland Levillain + + Use `nullptr' in the parser. + + * src/parse/parsetiger.yy: Here. + * src/parse/parsetiger.cc: Regen. + +2013-04-16 Roland Levillain + + Get rid of `ltihooks' in TCSH. + + * tcsh/python/ltihooks.py: Remove. + * tcsh/python/Makefile.am (python_PYTHON) + * dev/stats (PYTHON_TCSH_SOURCES): + Remove ltihooks.py. + * tcsh/python/tc.py: No longer import `ltihooks'. + * tcsh/run.in: Help Python find actual dynamic modules in directory + `.libs', as suggested by Alexandre Duret-Lutz in + http://stackoverflow.com/a/5125879/1551751. + Convert to UTF-8. + +2013-04-16 Roland Levillain + + Typo in ChangeLog. + +2013-04-12 Akim Demaille + + style: fix xalloc style + + * lib/misc/xalloc.hh, lib/misc/xalloc.hxx, lib/misc/xalloc.cc: + Remove space before parens. + Fix ctor style. + +2013-03-27 Roland Levillain + + Rephrase some comments. + + * src/type/class.hh, + * src/type/named.hh: + Here. + +2013-03-27 Roland Levillain + + Hide ast::RuleDecs. + + * src/ast/ast.yml (fwd_hh_epilogue): Here. + Remove a duplicate forward declaraction. + * src/ast/fwd.hh: Regen. + +2013-03-24 Robin WILS + + fixed duplicated error message in functions overloading + + When a function was undeclared, the error message was duplicated, + error recovery was not done for this kind of error + + * src/overload/type-checker.cc + +2013-03-15 Roland Levillain + + Regen tests' outputs. + + * tests/good/mutually-recursive-functions.-e.s, + * tests/good/mutually-recursive-functions.-e.u.s, + * tests/good/mutually-recursive-functions.hir, + * tests/good/mutually-recursive-functions.hpr, + * tests/good/mutually-recursive-functions.lir, + * tests/good/mutually-recursive-functions.lpr, + * tests/good/mutually-recursive-functions.s, + * tests/good/mutually-recursive-functions.u.s, + * tests/good/mutually-recursive-procedures.-e.s, + * tests/good/mutually-recursive-procedures.-e.u.s, + * tests/good/mutually-recursive-procedures.hir, + * tests/good/mutually-recursive-procedures.hpr, + * tests/good/mutually-recursive-procedures.lir, + * tests/good/mutually-recursive-procedures.lpr, + * tests/good/mutually-recursive-procedures.s, + * tests/good/mutually-recursive-procedures.u.s, + * tests/type/field-in-not-record.tc-err: + Regen. + +2013-03-15 Roland Levillain + + Aesthetic changes in tests. + + * tests/good/array.tig, + * tests/good/for-in-let.tig, + * tests/good/shadowing-functions.tig, + * tests/type/field-in-not-record.tig, + * tests/type/types-endless-recursion.tig: + Here. + * tests/good/mutually-recursive-functions.tig: + Rename this test as... + * tests/good/mutually-recursive-procedures.tig: + ...this, and vice versa. + +2013-03-15 Roland Levillain + + Remove tests/type/test52.tig, which duplicates tests/type/test43.tig. + +2013-03-14 Roland Levillain + + Remove test mandelbrot.tig. + + * tests/good/mandelbrot.tig: Remove this test, as it produces + different outputs with HAVM and Nolimips. + * tests/good/mandelbrot.-e.s, + * tests/good/mandelbrot.-e.u.s, + * tests/good/mandelbrot.err, + * tests/good/mandelbrot.hir, + * tests/good/mandelbrot.hpr, + * tests/good/mandelbrot.lir, + * tests/good/mandelbrot.lpr, + * tests/good/mandelbrot.out, + * tests/good/mandelbrot.s, + * tests/good/mandelbrot.sta, + * tests/good/mandelbrot.u.s: + Remove outputs. + +2013-03-14 Roland Levillain + + More silent rules. + + * tcsh/generate-swig-mk: Emit silent rules. + +2013-03-14 Roland Levillain + + configure.ac: Remove the MODULES variable, no longer used. + +2013-03-13 Roland Levillain + + Fix the signature of type::Function's ctor in the documentation. + + * src/type/README.txt: Here. + Reported by Alexandre Rinville . + +2013-03-11 Roland Levillain + + Regen ChangeLog. + +2013-03-11 Roland Levillain + + Fix the distribution w.r.t. the AST matcher generator. + + * dev/stagize: Regen the AST matcher and refresh its timestamp if + needed. + * dev/Makefile.am (dist_noinst_SCRIPTS): Add transform-matcher-gen. + * src/transform/local.mk (BUILT_SOURCES): Add transform/matcher.hh + and transform/matcher.cc. + +2013-03-11 Roland Levillain + + Typo in comment. + + * src/object/binder.cc: Here. + +2013-03-07 Roland Levillain + + Regen tests' outputs. + + * tests/import-syntax/import-exp.tc-err: Regen. + +2013-03-07 Roland Levillain + + Remove old Vcs helpers. + + * vcs/tiger.rb, + * lib/argp/vcs/local.rb: + Remove. + +2013-03-07 Roland Levillain + + Use uniform shebangs. + + * build-aux/bin/move-if-change, + * debian/rules, + * dev/ampersand.rb, + * dev/ast-all-gen, + * dev/ast-fwd-gen, + * dev/ast-ignores-gen, + * dev/ast-pretty-printer-gen, + * dev/ast-visitor-gen, + * dev/transform-proxy-visitors-gen, + * tcsh/generate-swig-mk, + * tcsh/run.in, + * tools/tiger-interpretor.pl: + Here. + +2013-03-07 Roland Levillain + + Remove trailing whitespaces. + + * bistromatig/Makefile.am, + * bistromatig/bistromatig-r10.tig, + * bistromatig/bistromatig.tig, + * bistromatig/mp-add.tig, + * bistromatig/mp-div.tig, + * bistromatig/mp-mul.tig, + * bistromatig/mp-r10-add.tig, + * bistromatig/mp-sub.tig, + * bistromatig/sugar.tih, + * build-aux/leopard.el, + * build-aux/pypath.m4, + * build-aux/tiger.el, + * dev/stats, + * dev/tc.texi, + * src/astclone/libastclone.hh, + * src/object/binder.hh, + * src/target/ia32/runtime-gnu-linux.s, + * src/target/mips/runtime.s, + * src/target/tiger-runtime.c, + * src/translate/translator.hh, + * tcsh/python/Makefile.am, + * tcsh/python/ti.py, + * tcsh/ruby/ltrequire.rb, + * tests/good/concurrent-arguments.tig, + * tests/good/getchar-no-static-string.tig, + * tests/good/mandelbrot.tig, + * tests/good/mini-morpho.tig, + * tests/good/side-effects.tig, + * tests/object-good/five-name-spaces.tig, + * tests/object-good/visitor.tig, + * tests/object-type/invalid-forward-references-to-members.tig, + * tools/toc.php: + Here. + +2013-03-07 Roland Levillain + + Replace more tab characters. + + * configure.ac, + * bistromatig/bigint.tih, + * bistromatig/bistromatig.tih, + * bistromatig/sugar.tih, + * dev/ast-all-gen, + * dev/ast-default-visitor-gen, + * dev/ast-fwd-gen, + * dev/ast-nodes-mk-gen, + * dev/ast-pretty-printer-gen, + * dev/ast-visitor-gen, + * dev/ast.py, + * dev/tc.css, + * lib/misc/tiger_misc.i, + * src/liveness/tiger_liveness.i, + * src/parse/tiger-parser.cc, + * src/parse/tiger_parse.i, + * src/target/ia32/test-target.cc, + * src/target/mips/test-target.cc, + * src/target/tiger-runtime.c, + * src/tiger_common.i, + * tests/good/mandelbrot.tig: + Here. + * src/ast/visitor.hh: Regen. + +2013-03-07 Roland Levillain + + Help Doxygen generate valid URLs. + + * src/doc.hh: Here, by removing a trailing full spot. + +2013-03-07 Roland Levillain + + Typos in comment. + + * src/parse/libparse.hh, + * src/parse/tiger-parser.cc: + Here. + +2013-03-07 Roland Levillain + + Remove `\n' in Doxygen comments. + + * src/ast/default-visitor.hh, + * src/bind/binder.hh, + * src/escapes/escapes-visitor.hh, + * src/parse/libparse.hh, + * src/regalloc/color.hh: + Here. + +2013-03-07 Roland Levillain + + Remove useless #include directive. + + * src/escapes/escapes-visitor.hh: Here. + +2013-03-04 Roland Levillain + + Regen ChangeLog. + +2013-02-26 Roland Levillain + + Fix a memory issue in tree::Fragment. + + * src/tree/fragment.hh (DataFrag::data_): Make this string a copy + of the original passed to the ctor, as tree::Fragment does not + have ownership of the original string (which is likely to be owned + by ast::StringExp). + +2013-02-26 Roland Levillain + + Add tests exercising the code generators. + + * src/target/ia32/test-target.cc: New. + * src/target/ia32/local.mk (TESTS): Add target/ia32/test-target. + (target_ia32_test_target_LDADD): New. + * src/target/mips/test-target.cc: New. + * src/target/mips/local.mk (TESTS): Add target/mips/test-target. + (target_mips_test_target_LDADD): New. + * src/tc.mk (libtarget): Add $(libassem) as a dependency. + +2013-02-26 Roland Levillain + + Stylistic changes in src/tree. + + * src/tree/call.hh, src/tree/call.cc (Call::Call): Get the list + of argument as a const reference. + * src/tree/tree.cc (Tree::~Tree): Do not check whether Tree::temp_ + is null before deleting it, as operator `delete' already takes + care of this. + * src/tree/tree.hh, src/tree/tree.hxx, + * src/tree/trees.hh: + Fix header guards. + +2013-02-26 Roland Levillain + + Make option `--rule-trace' actually work. + + * src/target/tasks.cc (target_mips, target_ia32): Pass + rule_trace_p to target objects. + +2013-02-19 Roland Levillain + + Regen the parser. + + * src/parse/location.hh, + * src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, + * src/parse/position.hh: + Regen. + +2013-02-19 Roland Levillain + + Fix a memory leak related to a DecsList metavar not freed after use. + + * src/parse/parsetiger.yy (decs): After a DecsList metavariable + has been extracted from the Tweast being parsed and its contents + spliced (i.e. moved) to the current DecsList, make sure to remove + the old DecsList (now an empty shell). + +2013-02-19 Roland Levillain + + Fix a memory leak related to symbols (mis)used in locations. + + * src/parse/parsetiger.yy: Do not use a pointer to misc::symbol to + implement the filename of a location, as it requires an uneasy + manual deallocation. Use a pointer to a constant std::string + instead, but still use the misc::symbol to ``allocate'' it: it + will be freed along with other symbol-related strings. + * src/parse/tiger-parser.cc (parse::TigerParser::parse_): Adjust: + allocate the misc::symbol object containing the filename on the + stack, so that the corresponding string is still created and + preserved until the end of the program (and then properly freed), + but without the need to handle the deallocation of the + misc::symbol itself. + * src/parse/tiger_parse.i: Adjust. + +2013-02-19 Roland Levillain + + Integrate tests/good/mandelbrot.tig into the test suite. + + * tests/Makefile.am (HAVMFLAGS): Increase the maximum stack size + of the GHC runtime. + * tests/good/mandelbrot.tig: Reduce the size of the output image + to shorten computation times. + * tests/good/mandelbrot.-e.s, + * tests/good/mandelbrot.-e.u.s, + * tests/good/mandelbrot.err, + * tests/good/mandelbrot.hir, + * tests/good/mandelbrot.hpr, + * tests/good/mandelbrot.lir, + * tests/good/mandelbrot.lpr, + * tests/good/mandelbrot.out, + * tests/good/mandelbrot.s, + * tests/good/mandelbrot.sta, + * tests/good/mandelbrot.u.s: + New (generated). + * AUTHORS.txt: Update. + +2013-02-19 Pablo Oliveira + + New test: Mandelbrot set plotting. + + * tests/good/mandelbrot.tig: New. + +2013-02-19 Roland Levillain + + Regen tests outputs, including some new ones. + + * tests/import-syntax/import-exp.tc-err, + * tests/import-syntax/import-exp.tc-sta, + * tests/import/import-non-existent-file.tc-err, + * tests/import/import-non-existent-file.tc-sta, + * tests/import/import-recursive1.tc-err, + * tests/import/import-recursive1.tc-sta, + * tests/import/import-recursive2.tc-err, + * tests/import/import-recursive2.tc-sta, + * tests/object-bind/extends-different-chunk.tc-err, + * tests/object-bind/extends-different-chunk.tc-sta, + * tests/object-bind/invalid-forward-reference-to-class.tc-err, + * tests/object-bind/invalid-forward-reference-to-class.tc-sta, + * tests/object-bind/undeclared-extends.tc-err, + * tests/object-bind/undeclared-extends.tc-sta, + * tests/object-bind/undeclared-function.tc-err, + * tests/object-bind/undeclared-function.tc-sta, + * tests/object-bind/undeclared-variable.tc-err, + * tests/object-bind/undeclared-variable.tc-sta, + * tests/object-bind/variable-defined-later.tc-err, + * tests/object-bind/variable-defined-later.tc-sta, + * tests/object-syntax/method-call-used-as-lvalue.tc-err, + * tests/object-syntax/method-call-used-as-lvalue.tc-sta, + * tests/object-type/attribute-redefined.tc-err, + * tests/object-type/attribute-redefined.tc-sta, + * tests/object-type/builtin-object-vs-custom-object.tc-err, + * tests/object-type/builtin-object-vs-custom-object.tc-sta, + * tests/object-type/contravariant-method.tc-err, + * tests/object-type/contravariant-method.tc-sta, + * tests/object-type/contravariant-return-type.tc-err, + * tests/object-type/contravariant-return-type.tc-sta, + * tests/object-type/covariant-method.tc-err, + * tests/object-type/covariant-method.tc-sta, + * tests/object-type/covariant-return-type.tc-err, + * tests/object-type/covariant-return-type.tc-sta, + * tests/object-type/downcast.tc-err, + * tests/object-type/downcast.tc-sta, + * tests/object-type/duplicate-members.tc-err, + * tests/object-type/duplicate-members.tc-sta, + * tests/object-type/forward-method-reference-1.tc-err, + * tests/object-type/forward-method-reference-1.tc-sta, + * tests/object-type/forward-method-reference-2.tc-err, + * tests/object-type/forward-method-reference-2.tc-sta, + * tests/object-type/illegal-redefinition-of-object-1.tc-err, + * tests/object-type/illegal-redefinition-of-object-1.tc-sta, + * tests/object-type/illegal-redefinition-of-object-2.tc-err, + * tests/object-type/illegal-redefinition-of-object-2.tc-sta, + * tests/object-type/int-as-super-class.tc-err, + * tests/object-type/int-as-super-class.tc-sta, + * tests/object-type/invalid-forward-references-to-members.tc-err, + * tests/object-type/invalid-forward-references-to-members.tc-sta, + * tests/object-type/method-redefinition-with-different-signature.tc-err, + * tests/object-type/method-redefinition-with-different-signature.tc-sta, + * tests/overload-type/overfun-naive-redef.tc-err, + * tests/overload-type/overfun-naive-redef.tc-sta, + * tests/overload-type/overfun-nil-ambiguity.tc-err, + * tests/overload-type/overfun-nil-ambiguity.tc-sta, + * tests/overload-type/overfun-redef.tc-err, + * tests/overload-type/overfun-redef.tc-sta: + New (generated). + +2013-02-19 Roland Levillain + + Add rules to generate outputs for more test cases. + + * tests/Makefile.am (gen-outputs): Here. + (AM_TCFLAGS): Cover all object-* and overload-* directories + instead of just object-good and overload-good. + ($(srcdir)/%.tc-sta $(srcdir)/%.tc-err): Erase more traces of the + srcdir. + (gen-all-outputs): New (shortcut) target. + +2013-02-19 Roland Levillain + + Fix the generation of temporary test outputs. + + * tests/Makefile.am ($(srcdir)/%.tc-sta $(srcdir)/%.tc-err) + ($(srcdir)/%.out $(srcdir)/%.err $(srcdir)/%.sta $(srcdir)/%.hpr): + Generate temporary files in (subdirectories of) the source dir, as + the build dir no longer contains subdirectories. + +2013-02-14 Roland Levillain + + Regen ChangeLog. + +2013-02-14 Roland Levillain + + Misc changes for 2015-tc-2.0. + + * src/ast/pretty-printer.hh, + * src/ast/pretty-printer.cc: + Show code that students are not expected to write. + Reorder a few methods. + (PrettyPrinter::operator() (const CastExp&)): Fix the output of + this operator. + * src/ast/test-ast.cc, + * src/parse/test-tweast.cc: + Remove uses of `auto', as we prefer not to show students too much + C++ 2011 features at this stage of the project. + * lib/misc/variant.hh: Typo. + +2013-02-11 Roland Levillain + + configure.ac, NEWS.txt: Version 1.33a. + +2013-02-11 Roland Levillain + + Regen (and clean up) ChangeLog. + +2013-02-11 Roland Levillain + + Version 1.33, for 2015-tc-1.0. + + * configure.ac, NEWS.txt: Here. + * src/version.cc.in: Update copyright years. + +2013-02-08 Roland Levillain + + Have monoburg++ remove its work directory (again). + + * build-aux/bin/monoburg++.in: Here. + +2013-02-08 Roland Levillain + + Regen the parser and the code generators. + + * src/parse/location.hh, + * src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, + * src/parse/position.hh, + * src/target/ia32/codegen.cc, + * src/target/ia32/codegen.hh, + * src/target/mips/codegen.cc, + * src/target/mips/codegen.hh: + Regen. + +2013-02-08 Roland Levillain + + Regen mini-morpho's outputs. + + * tests/good/mini-morpho.-e.s, + * tests/good/mini-morpho.-e.u.s, + * tests/good/mini-morpho.hir, + * tests/good/mini-morpho.lir, + * tests/good/mini-morpho.s, + * tests/good/mini-morpho.u.s: + Regen. + +2013-02-08 Pablo Oliveira + + Fix test mini-morpho.tig. + + * tests/good/mini-morpho.tig: Properly handle rows and columns, + so that non-square images can be processed. + +2013-01-21 Akim Demaille + + style: regen codegen without tabulations + + * src/target/ia32/codegen.cc, src/target/ia32/codegen.hh, + * src/target/mips/codegen.cc, src/target/mips/codegen.hh: + Use the latest monoburg to get rid of tabs. + +2013-01-21 Akim Demaille + + style: avoid tabulations in MonoBurg files + + * src/target/ia32/binop.brg, src/target/ia32/call.brg, + * src/target/ia32/cjump.brg, src/target/ia32/exp.brg, + * src/target/ia32/mem.brg, src/target/ia32/move.brg, + * src/target/ia32/move_load.brg, src/target/ia32/move_store.brg, + * src/target/ia32/stm.brg, src/target/ia32/temp.brg, + * src/target/ia32/tree.brg, src/target/mips/binop.brg, + * src/target/mips/call.brg, src/target/mips/cjump.brg, + * src/target/mips/exp.brg, src/target/mips/mem.brg, + * src/target/mips/move.brg, src/target/mips/move_load.brg, + * src/target/mips/move_store.brg, src/target/mips/stm.brg, + * src/target/mips/temp.brg, src/target/mips/tree.brg: + Untabify. + +2013-01-21 Akim Demaille + + monoburg++: avoid collisions + + When we have two builds in parallel, they might use colliding + temporary directories if they have the same basename (but different + dirnames). + + * build-aux/bin/monoburg++.in ($tmp): Use the full path of the output, + instead of just the basename. + +2013-01-11 Akim Demaille + + maint: upgrade use of obsolete macros + + This is required by Automake 1.13. + + * lib/argp/configure.ac: AM_CONFIG_HEADER and AM_PROG_CC_STDC are obsolete, + upgrade. + +2013-01-10 Roland Levillain + + Regen AST classes and visitors. + + * src/ast/array-exp.cc, src/ast/array-ty.cc, + * src/ast/assign-exp.cc, src/ast/break-exp.cc, + * src/ast/call-exp.cc, src/ast/cast-exp.cc, + * src/ast/cast-var.cc, src/ast/class-ty.cc, src/ast/dec.cc, + * src/ast/decs-list.cc, src/ast/decs-list.hh, src/ast/exp.cc, + * src/ast/field-init.cc, src/ast/field-var.cc, + * src/ast/field.cc, src/ast/for-exp.cc, + * src/ast/function-dec.cc, src/ast/function-dec.hh, + * src/ast/if-exp.cc, src/ast/if-exp.hh, src/ast/int-exp.cc, + * src/ast/let-exp.cc, src/ast/metavar-exp.cc, + * src/ast/method-call-exp.cc, src/ast/method-dec.cc, + * src/ast/name-ty.cc, src/ast/nil-exp.cc, + * src/ast/object-exp.cc, src/ast/op-exp.cc, src/ast/op-exp.hh, + * src/ast/record-exp.cc, src/ast/record-ty.cc, + * src/ast/rule-dec.cc, src/ast/seq-exp.cc, + * src/ast/simple-var.cc, src/ast/string-exp.cc, + * src/ast/subscript-var.cc, src/ast/ty.cc, + * src/ast/type-dec.cc, src/ast/var-dec.cc, src/ast/var.cc, + * src/ast/visitor.hh, src/ast/while-exp.cc, + * src/transform/all.cc, src/transform/all.hh, + * src/transform/matcher.cc: + Regen. + +2013-01-10 Roland Levillain + + More before-parenthesis space removals in AST generators. + + * dev/ast-default-visitor-gen, + * dev/ast-nodes-gen, + * dev/ast-pretty-printer-gen, + * dev/ast-visitor-gen, + * dev/ast.py, + * dev/transform-all-gen, + * dev/transform-matcher-gen, + * src/ast/ast.yml: + Here. + +2013-01-09 Akim Demaille + + ast: regen + +2013-01-09 Akim Demaille + + style: untabify in dev + + * dev/ast-cloner-gen, dev/ast-nodes-gen, dev/transform-all-gen, + * dev/transform-matcher-gen: Untabify. + +2013-01-09 Akim Demaille + + ast: regen + + Remove spaces before parens. + +2013-01-09 Akim Demaille + + style: remove space before parens in AST generators + + * dev/ast-cloner-gen, dev/ast-nodes-gen, dev/ast.py, + * dev/transform-all-gen, dev/transform-matcher-gen: Remove spaces + before parens. + +2013-01-04 Roland Levillain + + Require HAVM 0.25. + + * configure.ac: Here. + +2013-01-04 Roland Levillain + + Catch up with Bison's new interface. + + * src/parse/parsetiger.yy: Use api.value.type. + * configure.ac: Require Bison 2.7. + +2013-01-04 Akim Demaille + + parse: regen + + * src/parse/parsetiger.cc: Regen. + +2013-01-04 Akim Demaille + + parser: require Bison 2.7+ + + * src/parse/parsetiger.yy: here. + +2013-01-04 Akim Demaille + + style: untabify + + * src/parse/parsetiger.yy, src/parse/scantiger.ll: Untabify. + +2013-01-04 Akim Demaille + + parse: regen + + * src/parse/location.hh, src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, src/parse/position.hh: + Regenerate. + +2013-01-04 Akim Demaille + + transform: remove useless type + + * src/transform/metavar-pool.hxx (append): here. + +2013-01-03 Roland Levillain + + More changes in the same spirit as the ones suggested by Cppcheck. + + * dev/ast-cloner-gen: Emit a constructor initializing the sole + member result_. + * src/astclone/cloner.hh, src/astclone/cloner.cc: Regen. + * lib/misc/timer.hh, lib/misc/timer.hxx, lib/misc/timer.cc + (timer::push, timer::name): + Pass std::string arguments by reference instead of value. + (timer::pop): Remove `const' before argument passed by value. + * src/frame/frame.cc (Frame::Frame): Do not explicitly initialize + the default-constructed member `formals_'. + +2013-01-03 Roland Levillain + + Address some warnings reported by Cppcheck. + + * lib/misc/timer.hh, lib/misc/timer.hxx (timer::pop): + Pass std::string argument by reference instead of value. + * callgraph/call-graph-visitor.cc (CallGraphVisitor::caller) + * callgraph/parent-graph-visitor.cc (ParentGraphVisitor::parent) + * callgraph/static-link-visitor.cc (StaticLinkVisitor::depth_) + * frame/frame.cc (Frame::locals_) + * translate/translator.cc (Translator::hir_naive_p_): + * target/ia32/epilogue.cc (Codegen::cpu_, Codegen::assembly_) + * target/mips/epilogue.cc (Codegen::cpu_, Codegen::assembly_) + Initialize these members in their respective ctor. + * target/ia32/codegen.cc, + * target/mips/codegen.cc: + Regen. + * escapes/escapes-visitor.hh, escapes/escapes-visitor.cc + (EscapesVisitor::EscapesVisitor): New ctor, initializing + EscapesVisitor::depth_. + * tree/iterator.hxx (Iterator::is_ok): Check std::list non-emptiness + using empty() instead of size(). + (Iterator::tree_get, Iterator::next): Rely on is_ok() to ensure + list non-emptiness. + +2012-12-18 Roland Levillain + + Have tests bear relevant names. + + * tests/syntax/multi-functions.tig: Change this test to have it + match its name. + Move the original contents... + * tests/syntax/function-without-argument-list.tig: + ...here (new file). + * tests/syntax/multi-functions.tc-err: Regen. + * tests/syntax/function-without-argument-list.tc-err, + * tests/syntax/function-without-argument-list.tc-sta: + New (generated). + +2012-12-18 Roland Levillain + + Fix Makefile pattern rules generating several tests outputs. + + * tests/Makefile.am + ($(srcdir)/%.tc-sta $(srcdir)/%.tc-err) + ($(srcdir)/%.out $(srcdir)/%.err $(srcdir)/%.sta $(srcdir)/%.hpr): + Do not use `$@' in action to represent the first output, as `$@' + may stand for any target of the rule; intead, rely on an explicit + pattern based on `$*'. + +2012-12-13 Akim Demaille + + formatting changes: untabify + + git grep -l ' ' | + grep -Ee '\.(hxx|hh|cc|hcc|txt|tig|m4)$' | + while read f + do + test -f $f -a -w $f || continue + gexpand $f >$f.t + perl -pe 's/ +$//' $f.t > $f + rm $f.t + done + + * best-of.txt, bistromatig/evalexp++.tig, + * bistromatig/tests/README.txt, lib/misc/algorithm.hxx, + * lib/misc/contract.cc, lib/misc/contract.hh, lib/misc/endomap.hh, + * lib/misc/endomap.hxx, lib/misc/error.hh, lib/misc/escape.cc, + * lib/misc/file-library.cc, lib/misc/file-library.hh + * lib/misc/generic-variant.hh, lib/misc/generic-variant.hxx + * lib/misc/graph.hh, lib/misc/graph.hxx, lib/misc/indent.cc + * lib/misc/list.hh, lib/misc/list.hxx, lib/misc/map.hxx, + * lib/misc/path.cc lib/misc/scoped-map.hxx, lib/misc/separator.hxx, + * lib/misc/set.hh lib/misc/set.hxx, lib/misc/test-generic-variant.cc + * lib/misc/test-graph.cc, lib/misc/test-path.cc + * lib/misc/test-variant.cc, lib/misc/timer.cc, lib/misc/unique.hh + * src/assem/comment.hxx, src/assem/fragment.cc, src/assem/fragment.hh + * src/assem/fragment.hxx, src/assem/fragments.cc, src/assem/instr.cc + * src/assem/instr.hh, src/assem/instr.hxx, src/assem/instrs.cc + * src/assem/label.hh, src/assem/label.hxx, src/assem/layout.cc + * src/assem/move.hh, src/assem/move.hxx, src/assem/oper.hh + * src/assem/oper.hxx, src/ast/pretty-printer.cc, src/ast/tasks.cc + * src/ast/tasks.hh, src/ast/test-ast.cc, src/astclone/cloner.hxx + * src/astclone/tasks.cc, src/bind/binder.cc, src/bind/binder.hxx + * src/bind/renamer.hxx, src/bind/tasks.cc, src/bind/tasks.hh + * src/bind/test-bind.cc, src/callgraph/fundec-graph.hxx + * src/callgraph/libcallgraph.cc, src/callgraph/libcallgraph.hh + * src/callgraph/parent-graph-visitor.cc, + * src/callgraph/static-link-visitor.cc, src/callgraph/tasks.cc, + * src/callgraph/tasks.hh, src/canon/basic-block.cc, + * src/canon/basic-block.hxx, src/canon/canon.cc, src/canon/canon.hh, + * src/canon/libcanon.cc, src/canon/libcanon.hh, src/canon/tasks.cc, + * src/canon/tasks.hh, src/canon/traces.cc, src/canon/traces.hh, + * src/desugar/bound-checking-visitor.cc, + * src/desugar/desugar-visitor.cc src/desugar/desugar-visitor.hh, + * src/desugar/libdesugar.cc src/desugar/libdesugar.hh, + * src/desugar/tasks.cc, src/desugar/tasks.hh, + * src/desugar/test-bound-checking.cc, + * src/desugar/test-for-loops-desugar.cc, + * src/desugar/test-string-cmp-desugar.cc, + * src/escapes/escapes-check-visitor.cc, + * src/escapes/escapes-visitor.cc, src/escapes/libescapes.cc, + * src/escapes/libescapes.hh, src/escapes/tasks.hh, + * src/frame/access.cc, src/frame/access.hh, src/frame/frame.cc, + * src/inlining/inliner.cc, src/inlining/libinlining.hh, + * src/inlining/pruner.cc, src/inlining/tasks.hh, + * src/liveness/flowgraph.hh, src/liveness/flowgraph.hxx, + * src/liveness/interference-graph.cc, + * src/liveness/interference-graph.hh, src/liveness/libliveness.cc, + * src/liveness/libliveness.hh, src/liveness/liveness.cc, + * src/liveness/liveness.hh, src/liveness/tasks.cc, + * src/liveness/tasks.hh src/object/binder.cc, + * src/object/desugar-visitor.cc src/object/desugar-visitor.hh, + * src/object/libobject.cc src/object/libobject.hh, + * src/object/renamer.cc, src/object/tasks.cc src/object/tasks.hh, + * src/object/test-bind.cc src/object/test-desugar.cc, + * src/object/test-parse.cc src/object/test-type.cc, + * src/object/type-checker.cc src/object/type-checker.hh, + * src/overload/binder.hh src/overload/liboverload.cc, + * src/overload/liboverload.hh src/overload/over-table.hh, + * src/overload/over-table.hxx src/overload/tasks.cc, + * src/overload/tasks.hh src/overload/type-checker.cc, + * src/parse/libparse.cc src/parse/libparse.hh, + * src/parse/parsetiger.cc, src/parse/stack.hh src/parse/tasks.cc, + * src/parse/tasks.hh, src/parse/test-parse.cc, + * src/parse/test-tweast.cc, src/parse/tiger-parser.cc, + * src/parse/tiger-parser.hh, src/parse/tweast.cc, + * src/parse/tweast.hxx, src/regalloc/color.cc, src/regalloc/color.hh, + * src/regalloc/libregalloc.cc, src/regalloc/libregalloc.hh, + * src/regalloc/regallocator.cc, src/regalloc/regallocator.hh, + * src/regalloc/tasks.cc, src/regalloc/tasks.hh, + * src/regalloc/test-regalloc.cc, src/stc.cc, src/target/cpu.cc, + * src/target/ia32/epilogue.cc, src/target/ia32/gas-assembly.cc, + * src/target/ia32/gas-assembly.hh, src/target/ia32/gas-layout.cc, + * src/target/ia32/gas-layout.hh, src/target/ia32/prologue.hh, + * src/target/libtarget.cc, src/target/libtarget.hh, + * src/target/mips/cpu.cc, src/target/mips/epilogue.cc, + * src/target/mips/prologue.hh, src/target/mips/spim-assembly.cc, + * src/target/mips/spim-assembly.hh, src/target/mips/spim-layout.cc, + * src/target/mips/spim-layout.hh, src/target/mips/test-rw_prg.cc, + * src/target/tasks.cc, src/target/tasks.hh, src/task/boolean-task.cc, + * src/task/boolean-task.hh, src/task/disjunctive-task.cc, + * src/task/disjunctive-task.hh, src/task/function-task.cc, + * src/task/function-task.hh, src/task/int-task.cc, + * src/task/int-task.hh src/task/libtask.hh, + * src/task/multiple-string-task.cc src/task/multiple-string-task.hh, + * src/task/string-task.cc src/task/string-task.hh, + * src/task/task-register.cc, src/task/task.cc src/task/task.hh, + * src/task/tasks.hh, src/tc.cc, src/temp/identifier.hxx, + * src/temp/label.hh, src/temp/tasks.cc, src/temp/tasks.hh, + * src/temp/temp-set.cc, src/temp/temp.hh, src/temp/test-temp.cc, + * src/transform/README.txt, src/transform/all.hxx, + * src/transform/bottom-up-rewriter.cc, + * src/transform/bottom-up-rewriter.hh, + * src/transform/generic-rewriter.hh, + * src/transform/generic-rewriter.hxx, + * src/transform/generic-traversal.hh, + * src/transform/generic-traversal.hxx, src/transform/macros.hh, + * src/transform/matcher.hh, src/transform/rewriter.cc, + * src/transform/rewriter.hh, src/transform/sequence.hh, + * src/transform/sequence.hxx, src/transform/test-concrete.cc, + * src/transform/test-transform-tests.cc, + * src/transform/test-transform.cc, src/translate/access.cc, + * src/translate/access.hxx, src/translate/exp.cc, + * src/translate/exp.hh, src/translate/exp.hxx, src/translate/level.cc, + * src/translate/level.hh src/translate/libtranslate.cc, + * src/translate/libtranslate.hh src/translate/tasks.cc, + * src/translate/tasks.hh src/translate/translation.cc, + * src/translate/translation.hh src/translate/translator.cc, + * src/tree/README.txt, src/tree/binop.hh src/tree/call.cc, + * src/tree/call.hh, src/tree/cjump.cc src/tree/cjump.hh, + * src/tree/cjump.hxx, src/tree/eseq.cc src/tree/eseq.hh, + * src/tree/fragment.cc, src/tree/fragment.hh src/tree/fragment.hxx, + * src/tree/fwd.hh, src/tree/iterator.hxx src/tree/mem.hh, + * src/tree/move.hh, src/tree/seq.cc, src/tree/tree.cc, + * src/tree/tree.hh, src/type/class.cc, src/type/class.hxx, + * src/type/function.cc, src/type/method.cc, src/type/method.hh, + * src/type/named.cc, src/type/record.cc, src/type/tasks.cc, + * src/type/tasks.hh, src/type/test-type.cc, src/type/type-checker.cc, + * src/type/type-checker.hh, src/type/type-checker.hxx, tcsh/DOC.txt, + * tcsh/README-deps.txt, tests/bind/fractions-overloaded.tig, + * tests/bind/print-tree-static.tig, tests/bind/test18.tig, + * tests/bind/test19.tig, tests/bind/unknown-record.tig, + * tests/escapes/for-lower.tig, tests/escapes/for-upper.tig, + * tests/escapes/local-escapes.tig, tests/escapes/recursion.tig, + * tests/escapes/redeclaration.tig, tests/escapes/rhs-of-a-vardec.tig, + * tests/good/array-of-alias.tig, tests/good/donald.tig, + * tests/good/evalexp.tig, tests/good/for-in-let.tig, + * tests/good/fractions-underloaded.tig, tests/good/if-and-if.tig, + * tests/good/let-in-for-init.tig, tests/good/letexp-eseq.tig, + * tests/good/local-vs-global-type.tig, tests/good/many-args.tig, + * tests/good/many-vars.tig, tests/good/merge.tig, + * tests/good/mini-morpho.tig, + * tests/good/mutually-recursive-functions.tig, + * tests/good/mutually-recursive-procedures.tig, + * tests/good/print-tree.tig, tests/good/queens.tig, + * tests/good/shadowing-functions.tig, + * tests/good/so-many-args-in-rec-func.tig, tests/good/test27.tig, + * tests/good/test37.tig, tests/good/test42.tig, tests/good/test44.tig, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.tig, + * tests/object-good/inner-class-with-same-member-names.tig, + * tests/object-good/vehicle.tig, + * tests/overload-good/overload-nil-diambiguated.tig, + * tests/syntax/multi-functions.tig, tests/syntax/multi-types.tig, + * tests/syntax/multi-vars.tig, tests/syntax/typeid.tig, + * tests/type/field-in-not-record.tig, + * tests/type/funarg-type-mismatch.tig, tests/type/missing-arg.tig, + * tests/type/not-enough-args.tig, tests/type/test14.tig, + * tests/type/test21.tig, tests/type/test22.tig, tests/type/test23.tig, + * tests/type/test24.tig, tests/type/test28.tig, tests/type/test29.tig, + * tests/type/test31.tig, tests/type/test32.tig, tests/type/test40.tig, + * tests/type/test43.tig, tests/type/test52.tig, + * tests/type/too-many-args.tig, ti/fork.cc, ti/fork.hh, ti/ti.cc, + * ti/tiopts.cc, build-aux/bin/authors.h-gen, build-aux/bin/bison++.in, + * build-aux/bin/logeval-to-csv, build-aux/bin/ls-files, + * build-aux/bin/monoburg++.in, build-aux/tc-prog.m4, + * build-aux/warning.m4, build-aux/with-tcsh.m4: here. + +2012-12-05 Roland Levillain + + Regen the parser with Bison 2.6.5.1035-843c. + + * src/parse/location.hh, + * src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, + * src/parse/position.hh: + Regen. + +2012-12-05 Roland Levillain + + Use Bison 2.6.5.1035-843c. + + * configure.ac: Require Bison 2.6. + * src/parse/parsetiger.yy: + Rename lex_symbol as api.token.constructor + and api.tokens.prefix as api.token.prefix. + +2012-12-05 Roland Levillain + + Require SWIG 2.0. + + * build-aux/with-tcsh.m4: Here. + * lib/misc/tiger_misc.i: Do not wrap misc::error::operator<<'s. + +2012-12-05 Roland Levillain + + Teach Git to ignore build-aux/ar-lib. + +2012-11-30 Akim Demaille + + build: please Automake 1.12 + + * configure.ac: here. + +2012-11-30 Akim Demaille + + authors.h: fix generation + + On our AUTHORS.txt, this patch generates the following diff. + + --- /tmp/authors.h 2012-11-30 16:49:52.000000000 +0100 + +++ _build/48-debug/authors.h 2012-11-30 16:51:18.000000000 +0100 + @@ -35,7 +35,7 @@ + " - Portability of tc-check to NetBSD.\n" \ + "\n" \ + "* Arnaud Fabre fabre_a@epita.fr\n" \ + - " - "import" support.\n" \ + + " - \"import\" support.\n" \ + " - Disjunctive tasks.\n" \ + "\n" \ + "* Benoßt Perrot benoit@lrde.epita.fr\n" \ + @@ -89,7 +89,7 @@ + " - Unify dev/ with Gostai's version.\n" \ + "\n" \ + "* Julien Roussel spip@lrde.epita.fr\n" \ + - " - "let" desugaring.\n" \ + + " - \"let\" desugaring.\n" \ + " - A lot of memory leak hunting.\n" \ + "\n" \ + "* Julien Grall julien.grall@gmail.com\n" \ + + * build-aux/bin/authors.h-gen (stringify): Beware of special characters. + +2012-11-26 Roland Levillain + + Improve ChangeLog generation using gitlog-to-changelog's new options. + + * Makefile.am (update-ChangeLog): Invoke gitlog-to-changelog with + options ``--no-cluster'' and ``--strip-cherry-pick''. + +2012-11-26 Roland Levillain + + Update gitlog-to-changelog from upstream. + + * dev/gitlog-to-changelog: Here. + +2012-11-26 Roland Levillain + + Fix a Makefile action. + + * src/target/mips/local.mk: Here. + +2012-10-26 Roland Levillain + + More silent rules. + + * dev/ast-gen.mk, + * src/Makefile.am, + * src/ast/local.mk, + * src/astclone/local.mk, + * src/parse/local.mk, + * src/target/ia32/local.mk, + * src/target/mips/local.mk, + * src/transform/local.mk, + * tcsh/python/Makefile.am, + * tcsh/ruby/Makefile.am: + Here. + +2012-10-26 Roland Levillain + + Regen READMEs. + + * src/ast/README.txt, + * src/ast/README-student.txt: + Regen. + +2012-10-26 Roland Levillain + + Generate READMEs located in src/ast/ in the source tree. + + * src/ast/local.mk + ($(ast_basedir)README.txt, $(ast_basedir)README-student.txt): + Replace these target with... + ($(ast_srcdir)/README.txt, $(ast_srcdir)/README-student.txt): + ...these. + +2012-10-26 Roland Levillain + + Teach Git to ignore build-aux/test-driver. + +2012-10-26 Roland Levillain + + Minor changes following the previous changes in src/transform/. + + * dev/tools.py (indef_article, plural, wrap_after_char, wrap_line) + (wrap_proto, wrap_assignment_of_and_list, banner): + Convert function documention written in comments to Python + docstrings. + * src/ast/ast.yml: Typos. + +2012-10-26 Roland Levillain + + Merge branch 'transform' + +2012-10-26 Roland Levillain + + Work around a compilation bug in Boost 1.50. + + * src/liveness/liveness.cc: Include boost/utility/enable_if.hpp, + required by boost/graph/reverse_graph.hpp. + +2012-10-26 Roland Levillain + + Help configure find ruby.h when using Ruby 1.9. + + * build-aux/with-tcsh.m4 (_TC_WITH_SWIG): Here. + +2012-10-26 Akim Demaille + + build-aux: update tools + + Import from Vaucanson. + + * build-aux/bin/bison++.in: No longer "cd", this produces + more accurate error message locations, which is nice when + compiling under Emacs. + * build-aux/bin/move-if-change: Beware that colordiff + might now hang on stdin. + +2012-10-26 Roland Levillain + + Regen tests' outputs. + + * tests/escapes/for-lower.-e.u.s, + * tests/escapes/for-lower.hir, + * tests/escapes/for-lower.lir, + * tests/escapes/for-scope.-e.u.s, + * tests/escapes/for-scope.hir, + * tests/escapes/for-scope.lir, + * tests/escapes/for-upper.-e.u.s, + * tests/escapes/for-upper.hir, + * tests/escapes/for-upper.lir, + * tests/escapes/variable-inside-for-body.-e.u.s, + * tests/escapes/variable-inside-for-body.hir, + * tests/escapes/variable-inside-for-body.lir, + * tests/good/break-in-for.-e.u.s, + * tests/good/break-in-for.hir, + * tests/good/break-in-for.lir, + * tests/good/chr.-e.s, + * tests/good/chr.-e.u.s, + * tests/good/chr.hir, + * tests/good/chr.lir, + * tests/good/chr.s, + * tests/good/chr.u.s, + * tests/good/for-high-computed-once.-e.u.s, + * tests/good/for-high-computed-once.hir, + * tests/good/for-high-computed-once.lir, + * tests/good/for-high-same-name-as-index.-e.u.s, + * tests/good/for-high-same-name-as-index.hir, + * tests/good/for-high-same-name-as-index.lir, + * tests/good/for-in-let.-e.u.s, + * tests/good/for-in-let.hir, + * tests/good/for-in-let.lir, + * tests/good/for-in-while.-e.u.s, + * tests/good/for-in-while.hir, + * tests/good/for-in-while.lir, + * tests/good/for-scope.-e.u.s, + * tests/good/for-scope.hir, + * tests/good/for-scope.lir, + * tests/good/for-up-to-32bits.-e.u.s, + * tests/good/for-up-to-32bits.hir, + * tests/good/for-up-to-32bits.lir, + * tests/good/for.-e.u.s, + * tests/good/for.hir, + * tests/good/for.lir, + * tests/good/just-a-simple-for-1.-e.u.s, + * tests/good/just-a-simple-for-1.hir, + * tests/good/just-a-simple-for-1.lir, + * tests/good/just-a-simple-for-2.-e.u.s, + * tests/good/just-a-simple-for-2.hir, + * tests/good/just-a-simple-for-2.lir, + * tests/good/let-in-for-init.-e.u.s, + * tests/good/let-in-for-init.hir, + * tests/good/let-in-for-init.lir, + * tests/good/let-in-for-init.s, + * tests/good/let-in-for-init.u.s, + * tests/good/mini-morpho.-e.u.s, + * tests/good/mini-morpho.hir, + * tests/good/mini-morpho.lir, + * tests/good/print-tree.-e.u.s, + * tests/good/print-tree.hir, + * tests/good/print-tree.lir, + * tests/good/queens.-e.u.s, + * tests/good/queens.hir, + * tests/good/queens.lir, + * tests/good/substring.-e.u.s, + * tests/good/substring.hir, + * tests/good/substring.lir: + Here. + +2012-10-26 Roland Levillain + + Simplify the translation of `for' loops. + + * src/translate/translator.cc + (translate::Translator::operator() (const ast::ForExp&)): + No longer translate the upper bound first, as the binder already + ensures that the index will not capture an outer variable bearing + the same name. + Shorten code. + +2012-10-26 Roland Levillain + + Factor explicit template instantiations. + + * src/temp/label.hh, + * src/temp/temp.hh + (MAYBE_EXTERN) [!MAYBE_EXTERN]: + Define as `extern'. + s/extern/MAYBE_EXTERN/. + * src/temp/label.cc, + * src/temp/temp.cc: + Remove explicit template instantiation definitions. + Define MAYBE_EXTERN (as an empty macro) before including the + previous explicit template instantiation declarations, so as to + turn them into definitions. + Suggested by Akim Demaille . + +2012-10-26 Roland Levillain + + Get rid of *.hcc files. + + * src/temp/identifier.hcc: Rename as... + * src/temp/identifier.hxx: ...this. + Adjust. + * src/temp/identifier.hh: Include src/temp/identifier.hxx. + * src/temp/temp.cc, + * src/temp/label.cc: + Do not include temp/identifier.hcc. + Reorganize. + * src/temp/local.mk (temp_libtemp_la_SOURCES): + Adjust paths. + * doc/Doxyfile.in (FILE_PATTERNS): Remove *.hcc. + +2012-10-26 Roland Levillain + + Introduce explicit template instantiation declarations. + + * lib/misc/endomap.hcc, + * lib/misc/list.hcc: + Rename as... + * lib/misc/endomap.hxx, + * lib/misc/list.hxx: + ...this. + Adjust. + * src/temp/label.cc, + * src/temp/temp.cc: + Adjust paths. + Improve comments. + * lib/misc/endomap.hh: Include lib/misc/endomap.hxx. + * lib/misc/list.hh: Include lib/misc/list.hxx. + * lib/misc/local.mk (misc_libmisc_la_SOURCES): Update paths. + * src/temp/label.hh, + * src/temp/temp.hh: + Add explicit template instantiation declarations (`extern + template' statements) for each explicit template instantiation + definition in src/temp/label.cc and src/temp/temp.cc. + (temp::Identifier::count_) + (temp::Identifier::count_): + Declare these static member specializations ahead of the + explicit template instantiation declarations, so that the compiler + is aware of them at the time it processes the aforementioned + explicit template specializations. + * src/temp/libtemp.hh: Include temp/temp.hh. + +2012-10-26 Roland Levillain + + Remove useless #include directives. + + * lib/misc/list.hh, + * src/assem/instr.hh, + * src/assem/move.hxx, + * src/canon/basic-block.cc, + * src/canon/traces.cc, + * src/target/cpu-limits.hh, + * src/target/cpu.cc, + * src/target/cpu.hh, + * src/target/ia32/gas-assembly.cc, + * src/target/mips/spim-assembly.cc, + * src/temp/fwd.hh, + * src/tree/cjump.hh, + * src/tree/jump.hh: + Here. + +2012-10-19 Roland Levillain + + Document the different types of files contained in tests/*/. + + * tests/README.txt: Here. + +2012-10-19 Roland Levillain + + Document the organization of the test suite. + + * tests/README.txt: New. + * tests/Makefile.am (EXTRA_DIST): Add README.txt. + +2012-09-17 Roland Levillain + + Reintroduce `auto' in dynamic_casts of const references. + + * src/type/type-checker.cc, + * src/type/type-checker.hxx: + Here. + Suggested by Akim Demaille . + +2012-09-14 Roland Levillain + + Turn dynamically-cast-then-checked pointers into references. + + * src/type/type-checker.cc + (type::TypeChecker::operator() (ast::CallExp&)) + (type::TypeChecker::visitDecBody (ast::TypeDec&)) + * src/type/type-checker.hxx (type::TypeChecker::visitRoutineBody): + Here. + Suggested by Akim Demaille . + +2012-09-05 Roland Levillain + + Fix typos. + + * src/regalloc/tasks.hh, + * src/target/tasks.hh, + * src/tree/tree.hh: + Here. + +2012-09-05 Roland Levillain + + Improve the style and the documentation of misc::timer. + + * lib/misc/timer.hh, + * lib/misc/timer.hxx, + * lib/misc/timer.cc: + Here. + +2012-08-28 Roland Levillain + + Convert ChangeLog to UTF-8. + +2012-08-28 Roland Levillain + + Convert more files to UTF-8. + + * NEWS.txt, + * the-tiger.txt: + Here. + +2012-08-28 Roland Levillain + + Avoid gratuitous uses of extended ASCII characters. + + * src/temp/identifier.hh, + * src/desugar/tasks.hh, + * src/desugar/test-for-loops-desugar.cc: + Here. + * src/desugar/test-string-cmp-desugar.cc: Likewise. + Fix comments. + +2012-07-26 Roland Levillain + + Properly update locations w.r.t. multibyte newlines. + + * src/parse/scantiger.ll: Process newlines one by one to keep an + accurate record of the number of lines seen so far, at the expense + of the scanner's speed. + Reported by Akim Demaille . + +2012-05-21 Roland Levillain + + Regen ChangeLog. + +2012-05-16 Roland Levillain + + Remove traces of previously used SCMs. + +2012-05-15 Roland Levillain + + Have TCSH/Python be robust w.r.t. Bison 2.5's new C++ API. + + * src/parse/tiger_parse.i: Do not wrap parse::position::initialize + nor parse::location::initialize. + +2012-05-14 Roland Levillain + + Regen tests outputs with no encoding (as unibyte chars), as previously. + + * tests/good/string-backslash-octal.out, + * tests/good/string-backslash-tortured.out: + Here. + +2012-04-23 Roland Levillain + + Require Nolimips 0.9. + + * configure.ac: Here. + +2012-04-23 Roland Levillain + + Require MonoBURG 1.0.6. + + * configure.ac: Here. + +2012-04-12 Akim Demaille + + headers: fix some guards. + + * src/assem/instrs.hh, src/callgraph/static-link-visitor.hh: here. + Comment changes only. + +2012-04-12 Akim Demaille + + reheader: clean up and complete. + + * dev/reheader: Remove comment code. + Use "local" when using $_. + Insert the CPP guards when they are not part of the file. + +2012-03-12 Roland Levillain + + Require HAVM 0.24. + + * configure.ac: Here. + +2012-03-05 Roland Levillain + + Regen ChangeLog. + +2012-03-05 Roland Levillain + + Prepare 2014-tc-5.0. + + * src/tree/README.txt, + * src/tree/tree.hh: + Update documentation. + * src/tree/fragment.hxx: Include tree/fwd.hh instead of tree/all.hh. + * src/tree/fragment.cc: Adjust headers inclusions. + Aesthetic changes. + * src/frame/access.cc: Likewise. + * src/frame/access.hh (frame::Access::exp (const tree::rExp&)): + Change the documentation. + * src/translate/level.cc (translate::Level::fp): Hide some code. + * src/translate/translator.hh + (translate::Translator (Translator&)): Remove ctor. + (translate::Translator (const Translator&)) + (translate::Translator& operator= (const Translator&)): + New explicitly deleted methods. + +2012-03-05 Roland Levillain + + Kill a warning in the Tiger Interpreter. + + * ti/ti.cc (main): Remove a useless local declaration of + program_name. + +2012-02-22 Roland Levillain + + Factor code in tc-check. + + * tests/tc-check.in (load_tests): Merge object-related + type-checking test cases into the main TC-4 test suite. + +2012-02-22 Roland Levillain + + Relax tc-check interface constraints w.r.t. TC-3. + + * tests/tc-check.in (load_tests): Do not require option + `--object-bindings-compute' to execute TC-3 tests. + +2012-02-22 Roland Levillain + + Distribute build-aux/bin/fuse-switch. + + * build-aux/local.mk (dist_noinst_SCRIPTS): + Add build-aux/bin/fuse-switch. + Reported by Victor Tram . + +2012-02-20 Roland Levillain + + Fix the instructions at the end of make-git-tc-base. + + * dev/make-git-tc-base: Here. + +2012-02-20 Roland Levillain + + Regen ChangeLog. + +2012-02-20 Roland Levillain + + Add a script to initialize a public TC repository. + + * dev/make-git-tc-base: New. + +2012-02-20 Roland Levillain + + Remove more generated files from student tarballs. + + * dev/stagize: Here. + +2012-02-20 Roland Levillain + + Reorganize .gitignore files. + +2012-02-20 Roland Levillain + + Use plain diff instead of diff-r to produce faithful patches. + + * Makefile.am (%.diff): Here. + +2012-02-20 Roland Levillain + + Update stagize to catch up with the new interface of bison++. + + * dev/stagize: Here. + +2012-02-20 Roland Levillain + + build-aux/bin/bison++.in: Remove `set -x'. + +2012-02-20 Akim Demaille + + regen. + + Something is fishy here: this is basically reverting commit + 3bc335a8b119681d210cd88cf6c6e66a0b03d9ac which is also regenerating + using this very same version of Bison. Something is broken somewhere. + + * src/parse/parsetiger.hh, src/parse/parsetiger.cc: Regen. + +2012-02-20 Akim Demaille + + maint: upgrade bison++. + + * build-aux/bin/fuse-switch: New. + * build-aux/bin/bison++.in: Upgrade: use fuse-switch (does not + make any difference in the case of tc), support more options, + support verbosity levels. + * src/parse/local.mk: Fix the bison++ regeneration. + (BISONXXFLAGS, AM_BISONFLAGS): New. + (FROM_PARSETIGER_YY): Rename as... + (SOURCES_PARSETIGER_YY): this, for clarity. + Use silent-rules. + +2012-02-17 Akim Demaille + + move-if-change: in colors (no 3d available). + + * build-aux/bin/move-if-change: Sync with Urbi. + +2012-02-17 Roland Levillain + + Tighten type checking in escapes::EscapesVisitor. + + * src/escapes/escapes-visitor.hh + (escapes::EscapesVisitor::escapes_): Change the key type from + `const ast::Ast*' to `const ast::VarDec*'. + +2012-02-17 Roland Levillain + + dev/diff-r: Do not exclude pattern ``testsuite''. + +2012-02-10 Roland Levillain + + Update ChangeLog. + +2012-02-08 Roland Levillain + + Remove `bound's dependency on `overfun-types-compute' before TC-3. + + * src/bind/tasks.hh: Here. + * dev/stagize: Adjust. + +2012-02-08 Roland Levillain + + Generate outputs of tests/good/empty-parens.tig. + + * tests/good/empty-parens.-e.s, + * tests/good/empty-parens.-e.u.s, + * tests/good/empty-parens.err, + * tests/good/empty-parens.hir, + * tests/good/empty-parens.hpr, + * tests/good/empty-parens.lir, + * tests/good/empty-parens.lpr, + * tests/good/empty-parens.out, + * tests/good/empty-parens.s, + * tests/good/empty-parens.sta, + * tests/good/empty-parens.u.s: + New. Generated using + ``make gen-outputs INPUTS=/good/empty-parens.tig''. + +2012-02-08 Roland Levillain + + Add a target to explicitly generate/update a test's outputs. + + * tests/Makefile.am (gen-outputs): New target. + (good_prog_exts, good_obj_prog_exts, bad_prog_exts): New. + +2012-02-08 Roland Levillain + + Exercise empty sequences of expressions. + + * tests/good/empty-parens.tig: New. + Suggested by Akim Demaille . + +2012-02-08 Roland Levillain + + Remove a superfluous attribute and its accessor in transform::All. + + * dev/transform-all-gen: Here. + * src/transform/all.hh, src/transform/all.cc: Regen. + +2012-02-08 Roland Levillain + + Clean up ChangeLog. + +2012-02-08 Roland Levillain + + Fix Argp's build system. + + * configure.ac: No longer configure testsuite/Makefile. + +2012-02-02 Akim Demaille + + argp: upgrade test suite. + + * lib/argp/configure.ac: Request parallel test suite. + * lib/argp/testsuite/Makefile.am: Rename as... + * lib/argp/testsuite/local.mk: this. + Adjust. + * lib/argp/testsuite/ex1-test, lib/argp/testsuite/permute-test, + * lib/argp/Makefile.am: . + Adjust. + +2012-02-01 Roland Levillain + + Update and clean up ChangeLog. + +2012-02-01 Roland Levillain + + Misc changes. + + * configure.ac, NEWS.txt: Version 1.32a. + * AUTHORS.txt, src/version.cc.in: Update copyright years. + * src/parse/parsetiger.yy: Do not show TC-2 related FIXMEs before + TC-2. + +2012-01-27 Roland Levillain + + Version 1.32. + + * configure.ac, NEWS.txt: Here. + * AUTHORS.txt: Update. + +2012-01-27 Roland Levillain + + Make GCC 4.6 the official C/C++ compiler. + + * configure.ac (GCC_PREREQ): Set to 4.6. + * tests/tc-check.in: Require gcc-4.6 and g++-4.6. + +2012-01-27 Roland Levillain + + Use range-based for-loops instead of iterator-based for-loops. + + * lib/misc/file-library.cc, + * lib/misc/map.hxx, + * lib/misc/path.cc, + * lib/misc/scoped-map.hxx, + * lib/misc/set.hxx, + * lib/misc/timer.cc, + * src/ast/ast.yml, + * src/canon/canon.cc, + * src/overload/type-checker.cc, + * src/target/ia32/stm.brg, + * src/target/mips/stm.brg: + Here. + * src/ast/function-dec.hh, + * src/target/ia32/codegen.cc, + * src/target/mips/codegen.cc: + Regen. + +2012-01-27 Roland Levillain + + No longer require BOOST_FOREACH. + + * configure.ac: Here. + +2012-01-27 Roland Levillain + + Use range-based for-loops instead of std::for_each. + + * lib/misc/algorithm.hxx (misc::deep_clear): Here. + (misc::Delete): Remove functor. + +2012-01-27 Roland Levillain + + Use range-based for-loops instead of BOOST_FOREACH. + + * src/assem/fragments.cc, + * src/assem/instrs.cc, + * src/astclone/cloner.hxx, + * src/bind/binder.hxx, + * src/callgraph/call-graph-visitor.cc, + * src/callgraph/parent-graph-visitor.cc, + * src/canon/traces.cc, + * src/desugar/bound-checking-visitor.cc, + * src/frame/frame.cc, + * src/inlining/inliner.cc, + * src/inlining/pruner.cc, + * src/liveness/flowgraph.hxx, + * src/liveness/interference-graph.cc, + * src/object/binder.cc, + * src/object/desugar-visitor.cc, + * src/object/renamer.cc, + * src/object/type-checker.cc, + * src/overload/binder.cc, + * src/overload/over-table.hxx, + * src/overload/type-checker.cc, + * src/parse/tweast.cc, + * src/parse/tweast.hxx, + * src/regalloc/color.cc, + * src/target/cpu.cc, + * src/target/ia32/epilogue.cc, + * src/target/mips/epilogue.cc, + * src/task/task-register.cc, + * src/task/task.cc, + * src/transform/all.hxx, + * src/transform/concrete-syntax-rewriter.cc, + * src/translate/level.cc, + * src/translate/translation.cc, + * src/translate/translator.cc, + * src/tree/call.cc, + * src/tree/fragment.cc, + * src/tree/tree.hxx, + * src/type/class.cc, + * src/type/class.hxx, + * src/type/record.cc, + * src/type/type-checker.cc, + * ti/ti.cc: + Here. + * src/target/ia32/prologue.hh, + * src/target/mips/prologue.hh: + Include header `cstring' for memset(). + * src/target/ia32/codegen.cc, + * src/target/ia32/codegen.hh, + * src/target/mips/codegen.cc, + * src/target/mips/codegen.hh: + Regen. + * lib/misc/foreach.hh: Remove. + * lib/misc/local.mk (misc_libmisc_la_SOURCES): + Remove misc/foreach.hh. + +2012-01-27 Roland Levillain + + Use `nullptr' instead of `NULL'. + + * src/assem/fragments.cc, + * src/liveness/interference-graph.cc, + * src/liveness/liveness.cc, + * src/parse/tasks.cc, + * src/stc.cc, + * src/target/ia32/epilogue.cc, + * src/target/ia32/prologue.hh, + * src/target/mips/epilogue.cc, + * src/target/mips/prologue.hh, + * src/translate/level.cc, + * ti/fork.cc: + Here. + * src/target/ia32/codegen.cc, + * src/target/ia32/codegen.hh, + * src/target/mips/codegen.cc, + * src/target/mips/codegen.hh: + Regen. + * lib/misc/ref.hh: Adjust documentation. + +2012-01-27 Roland Levillain + + Use `nullptr' instead of literal `0' where applicable. + + * lib/misc/file-library.cc, + * lib/misc/ref.hh, + * lib/misc/scoped-map.hh, + * lib/misc/timer.cc, + * src/assem/layout.hxx, + * src/ast/ast.yml, + * src/ast/break-exp.cc, + * src/ast/call-exp.cc, + * src/ast/function-dec.cc, + * src/ast/method-call-exp.cc, + * src/ast/name-ty.cc, + * src/ast/pretty-printer.cc, + * src/ast/simple-var.cc, + * src/ast/tasks.cc, + * src/ast/test-ast.cc, + * src/ast/typable.cc, + * src/ast/type-constructor.cc, + * src/astclone/cloner.hxx, + * src/bind/binder.cc, + * src/callgraph/call-graph-visitor.cc, + * src/callgraph/parent-graph-visitor.cc, + * src/callgraph/static-link-visitor.cc, + * src/desugar/test-bound-checking.cc, + * src/desugar/test-for-loops-desugar.cc, + * src/desugar/test-string-cmp-desugar.cc, + * src/object/desugar-visitor.cc, + * src/object/test-desugar.cc, + * src/object/type-checker.cc, + * src/parse/libparse.cc, + * src/parse/libparse.hh, + * src/parse/tiger-parser.cc, + * src/parse/tiger_parse.i, + * src/parse/tweast.hxx, + * src/regalloc/test-regalloc.cc, + * src/target/codegen.hxx, + * src/target/ia32/codegen.cc, + * src/target/ia32/epilogue.cc, + * src/target/mips/codegen.cc, + * src/target/mips/epilogue.cc, + * src/target/mips/test-rw_prg.cc, + * src/target/tasks.cc, + * src/task/int-task.cc, + * src/task/task-register.cc, + * src/task/task-register.hh, + * src/task/task.cc, + * src/transform/all.hxx, + * src/translate/level.hh, + * src/translate/translation.hh, + * src/translate/translator.cc, + * src/tree/tree.cc, + * src/tree/tree.hxx, + * src/type/class.cc, + * src/type/class.hh, + * src/type/class.hxx, + * src/type/named.hxx, + * src/type/record.cc, + * ti/tiopts.cc: + Here. + +2012-01-27 Roland Levillain + + Use std::is_pointer instead of misc::is_pointer. + + * lib/misc/scoped-map.hxx (misc::scoped_map::get): + Here. + * lib/misc/traits.hh, lib/misc/traits.hxx: Remove. + * lib/misc/local.mk (misc_libmisc_la_SOURCES): + Remove misc/traits.hh and misc/traits.hxx. + +2012-01-27 Roland Levillain + + Use auto-typed variables when the initializer includes the type's name. + + * dev/ast-cloner-gen, + * dev/transform-all-gen, + * src/assem/instrs.cc, + * src/ast/test-ast.cc, + * src/astclone/cloner.hxx, + * src/canon/traces.cc, + * src/desugar/bound-checking-visitor.cc, + * src/inlining/pruner.cc, + * src/liveness/flowgraph.hxx, + * src/liveness/interference-graph.cc, + * src/object/desugar-visitor.cc, + * src/object/renamer.cc, + * src/object/type-checker.cc, + * src/overload/type-checker.cc, + * src/parse/test-tweast.cc, + * src/regalloc/regallocator.cc, + * src/target/ia32/epilogue.cc, + * src/target/libtarget.cc, + * src/target/mips/epilogue.cc, + * src/transform/all.hxx, + * src/type/class.cc, + * src/type/function.cc, + * src/type/method.cc, + * src/type/type-checker.cc, + * src/type/type-checker.hxx: + Here, where the initializers are `new ...' or `dynamic_cast<...>'. + * src/astclone/cloner.cc, + * src/transform/all.cc, + * src/target/ia32/codegen.cc, + * src/target/mips/codegen.cc: + Regen. + +2012-01-27 Roland Levillain + + Allow consecutive right angle brackets. + + * lib/misc/set.hh, + * lib/misc/unique.hh, + * src/liveness/flowgraph.hxx, + * src/liveness/liveness.hh, + * src/overload/binder.hh, + * src/translate/translator.hh: + Here. + +2012-01-27 Roland Levillain + + Use explicitly deleted functions to make singleton classes non-copyable. + + * src/task/task-register.hh + (task::TaskRegister::TaskRegister (const TaskRegister&)) + (task::TaskRegister::operator= (const TaskRegister&)) + * src/type/builtin-types.hh + (type::Nil::Nil (const Nil&)) + (type::Nil::operator= (const Nil&)) + (type::Void::Void (const Void&)) + (type::Void::operator= (const Void&)) + (type::Int::Int (const Int&)) + (type::Int::operator= (const Int&)) + (type::String::String (const String&)) + (type::String::operator= (const String&)): + New explicitely deleted methods. + +2012-01-27 Roland Levillain + + Introduce explicitly defaulted functions. + + * src/task/task-register.hh, src/task/task-register.cc + (task::TaskRegister::TaskRegister ()) + * src/tree/seq.hh, src/tree/seq.hxx + (tree::Seq::Seq ()) + * src/type/builtin-types.hh, src/type/builtin-types.cc + (type::Nil::Nil ()) + (type::Void::Void ()) + (type::Int::Int ()) + (type::String::String ()): + Replace ctor definitions by defaulted versions. + +2012-01-27 Roland Levillain + + Have configure add `-std=c++0x' to CXXFLAGS when g++ is used. + + * configure.ac: Here. + +2012-01-27 Roland Levillain + + Remove old, Subversion-related instructions. + + * README-Subversion.txt: Remove. + +2012-01-27 Roland Levillain + + Remove an irrelevant test in src/translate. + + * src/translate/test-exp.cc: Remove. + * src/translate/local.mk (TESTS): Remove translate/test-exp. + (translate_test_exp_LDADD): Remove. + Aesthetic changes. + +2012-01-27 Roland Levillain + + Regen the parser. + + * src/parse/parsetiger.cc, + * src/parse/parsetiger.hh: + Regen with Bison 2.4.570-7a582. + +2012-01-27 Roland Levillain + + Clang compatibility. + + * lib/misc/escape.cc (misc::escaped::escape_): Use octal escapes, + as clang does not support hexadecimal escapes. + * lib/misc/test-escape.cc: Adjust. + * tests/good/nul-character.-e.s, + * tests/good/nul-character.-e.u.s, + * tests/good/nul-character.hir, + * tests/good/nul-character.lir, + * tests/good/nul-character.s, + * tests/good/nul-character.u.s, + * tests/good/string-backslash-octal.-e.s, + * tests/good/string-backslash-octal.-e.u.s, + * tests/good/string-backslash-octal.hir, + * tests/good/string-backslash-octal.lir, + * tests/good/string-backslash-octal.out, + * tests/good/string-backslash-octal.s, + * tests/good/string-backslash-octal.u.s, + * tests/good/string-backslash-tortured.-e.s, + * tests/good/string-backslash-tortured.-e.u.s, + * tests/good/string-backslash-tortured.hir, + * tests/good/string-backslash-tortured.lir, + * tests/good/string-backslash-tortured.out, + * tests/good/string-backslash-tortured.s, + * tests/good/string-backslash-tortured.u.s, + * tests/lexical/invalid-character.tc-err: + Regen. + +2012-01-24 Roland Levillain + + Aesthetic changes. + + * configure.ac, + * src/callgraph/tasks.cc, + * src/parse/parsetiger.yy: + Here. + * src/target/mips/cpu.hh, src/target/ia32/cpu.hh: Fix a comment. + * src/transform/bottom-up-rewriter.cc (BottomUpRewriter::visit): + Make a call to a base class method more legible. + * src/ast/libast.hh (operator<< (std::ostream&, const Ast&)): + Match arguments' name of the declaration with the ones of the + definition. + * src/object/type-checker.cc + (TypeChecker::operator() (ast::FieldVar&)): Simplify. + * src/target/mips/test-rw_prg.cc: Wrap a long line. + Typo. + * src/tree/tiger_tree.i: Clean up dead code. + * dev/ast-default-visitor-gen: Space change. + + * dev/ast-readme-gen: Typo in output. + Reported by Akim Demaille . + +2012-01-24 Roland Levillain + + Hide more AST code in the parser shipped at TC-1. + + * src/parse/parsetiger.yy: Here. + +2012-01-20 Grall Julien + + Patch tc-check to support TC-0 + + * tests/tc-check.in + Thanks to Yann Grandmaitre for the + first version of this tc-check improvement. + +2012-01-09 Roland Levillain + + Get rid of the X86_64_GNU_LINUX conditional. + + * configure.ac (IA32_GNU_LINUX): Enable conditional also for + X86-64 hosts. + (X86_64_GNU_LINUX): Remove conditional. + * src/Makefile.am: Adjust. + * bistromatig/Makefile.am (%-ia32) + * tcsh/python/ti.py: + Pass option `-m32' to the assembler. + Suggested by Akim Demaille . + +2012-01-09 Roland Levillain + + Fix the install-doc targets. + + * Makefile.am (install-doc, install-doc-remote): Generate the + documentation in doc/ only. + Reported by Akim Demaille . + +2012-01-09 Roland Levillain + + Mention the Doxygen documentation for students in the developer guide. + + * dev/tc.texi (Doxygen documentation): New section. + (Top): Update table of contents. + (Test): Typo. + +2012-01-09 Roland Levillain + + Enable the DHTML search engine in the Doxygen documentation. + + * doc/Doxyfile.in (SEARCHENGINE): Here. + +2012-01-09 Roland Levillain + + Use rsync to install the Doxygen documentation for students. + + * Makefile.am (RSYNC, RSYNCFLAGS) + (install_doc_dir, install_doc_user, install_doc_host): + New variables. + Use them... + (install-doc, install-doc-remote): ...here. + Shorten commands. + (install-doc-remote): Use rsync instead of ssh and scp to update + the documentation files. + +2012-01-06 Roland Levillain + + Update dev/cut-bison-actions to handle parsetiger.yy properly. + + * dev/cut-bison-actions: Do no match braces preceded by + `%printer ', using (? + + Aesthetic changes in src/tree/. + + * src/tree/binop.cc (tree::Binop::tag_print) + * src/tree/cjump.cc (tree::symmetrize): + Here. + +2011-12-06 Roland Levillain + + Fix translate::Cx::dump. + + * src/tree/cjump.hh, src/tree/cjump.cc + (tree::operator<< (std::ostream& ostr, const Cjump::Relop& r)): + New operator, printing a meaningful values for tree::Cjump's + relops. + Also use it to factor... + (tree::Cjump::tag_print): ...this method. + * src/translate/test-exp.cc: New test. + * src/translate/local.mk (TESTS): Add translate/test-exp. + (translate_test_exp_LDADD): New. + +2011-12-06 Roland Levillain + + Fix tree::Cjump's pretty-printer. + + * src/tree/cjump.cc (tree::Cjump::tag_print): + Properly print the `ult' relop. + +2011-12-06 Roland Levillain + + Misc. changes. + + * configure.ac: Aesthetic change. + * src/tree/fragment.hh: s/semant::/translate/::. + * src/regalloc/color.cc: Develop a FIXME. + +2011-12-06 Roland Levillain + + Ensure identifiers of different kinds cannot be compared. + + * src/temp/identifier.hcc + (IdentifierCompareVisitor::operator() (const T&, const U&)): + Abort. + +2011-12-06 Roland Levillain + + Address compiler warnings. + + * src/target/mips/local.mk (target/mips/runtime.cc): + Do not name the (unused) argument of SpimAssembly::runtime(). + * src/temp/test-temp.cc (bar): Remove unused function. + +2011-12-06 Roland Levillain + + Have stc work on x86-64 architectures too. + + * configure.ac (X86_64_GNU_LINUX): New conditional. + (SUPPORTED_IA32): Enable this conditional for x86-64 hosts too. + * src/Makefile.am (STC_RUNTIME) [X86_64_GNU_LINUX]: + Set to $(srcdir)/target/ia32/runtime-gnu-linux.s. + * src/stc.cc: Force gcc to assemble 32-bit code. + +2011-12-03 Roland Levillain + + Small improvements in the Tiger Interpreter. + + * ti/ti.cc (backend_havm, backend_nolimips, backend_gcc, backend_asm) + Use more `const' qualifiers. + Use less std::auto_ptr's. + (main): Adjust. + (backend_asm): s/lir_fragments/assem_fragments/. + Use an std::auto_ptr to store the Assem fragments. + +2011-12-02 Roland Levillain + + Use the enum value `misc::error::success' instead of 0. + + * lib/misc/error.cc (misc::error::operator bool), + * lib/misc/tiger_misc.i (misc::exit_on_error): + Here. + +2011-12-02 Roland Levillain + + Remove `return 0;' statements at the end of main() functions. + + * lib/misc/test-deref.cc, + * lib/misc/test-error.cc, + * lib/misc/test-indent.cc, + * lib/misc/test-path.cc, + * lib/misc/test-separator.cc, + * lib/misc/test-timer.cc, + * lib/misc/test-xalloc.cc, + * src/ast/test-ast.cc, + * src/astclone/test-cloner.cc, + * src/liveness/test-flowgraph.cc, + * src/regalloc/color.cc, + * src/regalloc/test-regalloc.cc, + * src/target/mips/test-rw_prg.cc, + * src/temp/test-temp.cc: + Here. + * AUTHORS.txt, + * src/version.cc.in: + Update copyright years. + +2011-11-22 Roland Levillain + + Revert "Have TCSH catch up with the interface of the parser." + + This reverts commit 2c3c0f69cbfe038f6c6aba42f92ea8bbbb6e8217. + +2011-10-31 Roland Levillain + + Have tc-check's IA-32 tests work on AMD64/Intel 64. + + * tests/tc-check.in (ia32_check_one): Pass option `-m32' to the C + compiler (actually, the assembler and linker). + +2011-10-31 Roland Levillain + + Make GCC 4.4 the official C/C++ compiler. + + * configure.ac (GCC_PREREQ): Set to 4.4. + * tests/tc-check.in: Require gcc-4.4 and g++-4.4. + +2011-06-06 Roland Levillain + + 2013-tc-9.0. + +2011-06-06 Roland Levillain + + Prepare 2013-tc-9.0. + + * src/transform/test-concrete.cc, + * src/transform/test-transform-tests.cc, + * src/transform/test-transform.cc: + Help the compiler find some headers. + * dev/stagize: Force the use of Bash so that non-standard + features (such as brace expansion) continue to work. + Bash called as `/bin/sh' is becoming stricter and stricter. + * dev/diff-r (untar): Do not use the `function' keyword to please + Bash called as `/bin/sh'. + +2011-05-06 Akim Demaille + + Formatting changes. + +2011-04-26 Akim Demaille + + minor style changes. + + * src/canon/libcanon.cc, src/canon/local.mk, src/canon/traces.cc: + here. + +2011-02-17 Akim Demaille + + stagize: chmod +w ast files. + + * dev/stagize: here. + +2011-02-17 Akim Demaille + + build: safety check on make 2013-tc-3.0.tar.bz. + + * Makefile.am: here. + +2011-02-17 Akim Demaille + + diff-r --color. + + * dev/diff-r: Support --color. + +2011-02-15 Akim Demaille + + ChangeLog: update. + + * .last-cl-gen, ChangeLog: Update. + +2011-02-15 Akim Demaille + + locations: help the transition. + + * src/parse/tiger-parser.cc: Provide the initialization code to + the students. + * NEWS.txt: Explain. + +2011-02-15 Akim Demaille + + *.txt: fixes. + + * dev/stagize, dev/tc.texi, tests/tc-check.in: Adjust to *.txt + changes. + +2011-02-08 Akim Demaille + + check: make runs silent. + + * tests/Makefile.am (%.lpr, %.hpr): here. + +2011-02-08 Akim Demaille + + Use *.txt for text files. + + * AUTHORS: Rename as... + * AUTHORS.txt: this. + * NEWS: Rename as... + * NEWS.txt: this. + * README-Subversion: Rename as... + * README-Subversion.txt: this. + * README: Rename as... + * README.txt: this. + * THANKS: Rename as... + * THANKS.txt: this. + * TODO: Rename as... + * TODO.txt: this. + * best-of: Rename as... + * best-of.txt: this. + * bistromatig/Makefile.am: . + * bistromatig/tests/README: Rename as... + * bistromatig/tests/README.txt: this. + * src/assem/README: Rename as... + * src/assem/README.txt: this. + * src/ast/README.student: Rename as... + * src/ast/README-student.txt: this. + * src/ast/README: Rename as... + * src/ast/README.txt: this. + * src/task/README: Rename as... + * src/task/README.txt: this. + * src/transform/README: Rename as... + * src/transform/README.txt: this. + * src/tree/README: Rename as... + * src/tree/README.txt: this. + * src/type/README: Rename as... + * src/type/README.txt: this. + * tcsh/DOC: Rename as... + * tcsh/DOC.txt: this. + * tcsh/README.deps: Rename as... + * tcsh/README-deps.txt: this. + * tcsh/README: Rename as... + * tcsh/README.txt: this. + + * Import_readme, NOTES: Remove. + + * Makefile.am, configure.ac, dev/stagize, + * dev/tc.texi, src/ast/local.mk, src/tree/local.mk, + * tcsh/Makefile.am, src/type/local.mk, src/task/local.mk, + * src/transform/local.mk: + Adjust. + +2011-02-08 Akim Demaille + + clang: fixes. + + * src/assem/fragment.cc: here. + * src/temp/label.cc: and there. + * src/temp/temp.cc, src/tree/visitor.hxx: and there too. + +2011-02-08 Akim Demaille + + TODO: update. + +2011-02-08 Akim Demaille + + scanner: use (?i:...). + + * src/parse/scantiger.ll: here. + The resulting scanner _is_ different, I have no idea why. + +2011-02-08 Akim Demaille + + formatting changes. + + * src/parse/parsetiger.cc, src/parse/parsetiger.yy: here. + +2011-02-08 Akim Demaille + + tests: register tc's status and error messages. + + This is intended to check the reference compiler, as the messages may + vary bw implementations. Yet, when we change something, we should + check that "make recheck" changes nothing to these files. Nothing + unexpected. + + * tests/Makefile.am: Also generate *.tc-sta and *.tc-err. + + * tests/bind/break-alone.tc-err: New. + * tests/bind/break-alone.tc-sta: New. + * tests/bind/break-in-for-high.tc-err: New. + * tests/bind/break-in-for-high.tc-sta: New. + * tests/bind/break-in-for-init.tc-err: New. + * tests/bind/break-in-for-init.tc-sta: New. + * tests/bind/break-in-function-in-while.tc-err: New. + * tests/bind/break-in-function-in-while.tc-sta: New. + * tests/bind/break-in-vardec-in-while.tc-err: New. + * tests/bind/break-in-vardec-in-while.tc-sta: New. + * tests/bind/break-in-while-cond.tc-err: New. + * tests/bind/break-in-while-cond.tc-sta: New. + * tests/bind/break-outside-loop.tc-err: New. + * tests/bind/break-outside-loop.tc-sta: New. + * tests/bind/duplicate-formal.tc-err: New. + * tests/bind/duplicate-formal.tc-sta: New. + * tests/bind/for-index-in-higher-bound.tc-err: New. + * tests/bind/for-index-in-higher-bound.tc-sta: New. + * tests/bind/fractions-overloaded.tc-err: New. + * tests/bind/fractions-overloaded.tc-sta: New. + * tests/bind/invalid-function-redefinition-1.tc-err: New. + * tests/bind/invalid-function-redefinition-1.tc-sta: New. + * tests/bind/invalid-function-redefinition-2.tc-err: New. + * tests/bind/invalid-function-redefinition-2.tc-sta: New. + * tests/bind/invalid-type-redefinition.tc-err: New. + * tests/bind/invalid-type-redefinition.tc-sta: New. + * tests/bind/nonexistent-vardec-type.tc-err: New. + * tests/bind/nonexistent-vardec-type.tc-sta: New. + * tests/bind/nonexistent-vardecrec-type.tc-err: New. + * tests/bind/nonexistent-vardecrec-type.tc-sta: New. + * tests/bind/overload-function-redefinition.tc-err: New. + * tests/bind/overload-function-redefinition.tc-sta: New. + * tests/bind/overload-nil-ambiguity.tc-err: New. + * tests/bind/overload-nil-ambiguity.tc-sta: New. + * tests/bind/primitive-and-function-same-chunk.tc-err: New. + * tests/bind/primitive-and-function-same-chunk.tc-sta: New. + * tests/bind/print-tree-static.tc-err: New. + * tests/bind/print-tree-static.tc-sta: New. + * tests/bind/test17.tc-err: New. + * tests/bind/test17.tc-sta: New. + * tests/bind/test18.tc-err: New. + * tests/bind/test18.tc-sta: New. + * tests/bind/test19.tc-err: New. + * tests/bind/test19.tc-sta: New. + * tests/bind/undeclared-variable.tc-err: New. + * tests/bind/undeclared-variable.tc-sta: New. + * tests/bind/unknown-array-base-type.tc-err: New. + * tests/bind/unknown-array-base-type.tc-sta: New. + * tests/bind/unknown-array-type-1.tc-err: New. + * tests/bind/unknown-array-type-1.tc-sta: New. + * tests/bind/unknown-array-type-2.tc-err: New. + * tests/bind/unknown-array-type-2.tc-sta: New. + * tests/bind/unknown-record.tc-err: New. + * tests/bind/unknown-record.tc-sta: New. + * tests/bind/unknown-return-type.tc-err: New. + * tests/bind/unknown-return-type.tc-sta: New. + * tests/bind/void-does-not-exist.tc-err: New. + * tests/bind/void-does-not-exist.tc-sta: New. + * tests/lexical/backslash-n-not-in-string.tc-err: New. + * tests/lexical/backslash-n-not-in-string.tc-sta: New. + * tests/lexical/backslash-oct-not-in-string.tc-err: New. + * tests/lexical/backslash-oct-not-in-string.tc-sta: New. + * tests/lexical/invalid-character.tc-err: New. + * tests/lexical/invalid-character.tc-sta: New. + * tests/lexical/string-comma-escape.tc-err: New. + * tests/lexical/string-comma-escape.tc-sta: New. + * tests/lexical/string-octal-escape.tc-err: New. + * tests/lexical/string-octal-escape.tc-sta: New. + * tests/lexical/too-large-ints.tc-err: New. + * tests/lexical/too-large-ints.tc-sta: New. + * tests/lexical/unterminated-comment.tc-err: New. + * tests/lexical/unterminated-comment.tc-sta: New. + * tests/lexical/unterminated-string.tc-err: New. + * tests/lexical/unterminated-string.tc-sta: New. + * tests/lexical/var-named-underscore.tc-err: New. + * tests/lexical/var-named-underscore.tc-sta: New. + * tests/syntax/call-separator-1.tc-err: New. + * tests/syntax/call-separator-1.tc-sta: New. + * tests/syntax/call-separator-2.tc-err: New. + * tests/syntax/call-separator-2.tc-sta: New. + * tests/syntax/less-than-non-assoc-with-uminus.tc-err: New. + * tests/syntax/less-than-non-assoc-with-uminus.tc-sta: New. + * tests/syntax/less-than-non-assoc.tc-err: New. + * tests/syntax/less-than-non-assoc.tc-sta: New. + * tests/syntax/multi-functions.tc-err: New. + * tests/syntax/multi-functions.tc-sta: New. + * tests/syntax/multi-types.tc-err: New. + * tests/syntax/multi-types.tc-sta: New. + * tests/syntax/multi-vars.tc-err: New. + * tests/syntax/multi-vars.tc-sta: New. + * tests/syntax/nil-keyword.tc-err: New. + * tests/syntax/nil-keyword.tc-sta: New. + * tests/syntax/record-exp-1.tc-err: New. + * tests/syntax/record-exp-1.tc-sta: New. + * tests/syntax/record-exp-2.tc-err: New. + * tests/syntax/record-exp-2.tc-sta: New. + * tests/syntax/seqexp-1.tc-err: New. + * tests/syntax/seqexp-1.tc-sta: New. + * tests/syntax/seqexp-2.tc-err: New. + * tests/syntax/seqexp-2.tc-sta: New. + * tests/syntax/seqexp-3.tc-err: New. + * tests/syntax/seqexp-3.tc-sta: New. + * tests/syntax/seqexp-4.tc-err: New. + * tests/syntax/seqexp-4.tc-sta: New. + * tests/syntax/several-exps.tc-err: New. + * tests/syntax/several-exps.tc-sta: New. + * tests/syntax/syntax-vs-type-1.tc-err: New. + * tests/syntax/syntax-vs-type-1.tc-sta: New. + * tests/syntax/type-nil.tc-err: New. + * tests/syntax/type-nil.tc-sta: New. + * tests/syntax/typeid.tc-err: New. + * tests/syntax/typeid.tc-sta: New. + * tests/type/assign-loop-var.tc-err: New. + * tests/type/assign-loop-var.tc-sta: New. + * tests/type/assign-non-assoc.tc-err: New. + * tests/type/assign-non-assoc.tc-sta: New. + * tests/type/dangling-else.tc-err: New. + * tests/type/dangling-else.tc-sta: New. + * tests/type/duplicate-field.tc-err: New. + * tests/type/duplicate-field.tc-sta: New. + * tests/type/empty-decs-type.tc-err: New. + * tests/type/empty-decs-type.tc-sta: New. + * tests/type/empty-let-type.tc-err: New. + * tests/type/empty-let-type.tc-sta: New. + * tests/type/field-in-not-record.tc-err: New. + * tests/type/field-in-not-record.tc-sta: New. + * tests/type/for-body-non-void.tc-err: New. + * tests/type/for-body-non-void.tc-sta: New. + * tests/type/for-var-string.tc-err: New. + * tests/type/for-var-string.tc-sta: New. + * tests/type/funarg-type-mismatch.tc-err: New. + * tests/type/funarg-type-mismatch.tc-sta: New. + * tests/type/incompatible-record-comparison.tc-err: New. + * tests/type/incompatible-record-comparison.tc-sta: New. + * tests/type/invalid-array-base-type.tc-err: New. + * tests/type/invalid-array-base-type.tc-sta: New. + * tests/type/missing-arg.tc-err: New. + * tests/type/missing-arg.tc-sta: New. + * tests/type/multiple-instances-types-2.tc-err: New. + * tests/type/multiple-instances-types-2.tc-sta: New. + * tests/type/multiple-instances-types.tc-err: New. + * tests/type/multiple-instances-types.tc-sta: New. + * tests/type/nil-arithmetics.tc-err: New. + * tests/type/nil-arithmetics.tc-sta: New. + * tests/type/nil-equal-nil.tc-err: New. + * tests/type/nil-equal-nil.tc-sta: New. + * tests/type/not-enough-args.tc-err: New. + * tests/type/not-enough-args.tc-sta: New. + * tests/type/not-enough-fields.tc-err: New. + * tests/type/not-enough-fields.tc-sta: New. + * tests/type/order-arrays.tc-err: New. + * tests/type/order-arrays.tc-sta: New. + * tests/type/order-nil-with-record.tc-err: New. + * tests/type/order-nil-with-record.tc-sta: New. + * tests/type/order-record-with-nil.tc-err: New. + * tests/type/order-record-with-nil.tc-sta: New. + * tests/type/order-records.tc-err: New. + * tests/type/order-records.tc-sta: New. + * tests/type/primitive-arg.tc-err: New. + * tests/type/primitive-arg.tc-sta: New. + * tests/type/primitive-result.tc-err: New. + * tests/type/primitive-result.tc-sta: New. + * tests/type/recursive-type.tc-err: New. + * tests/type/recursive-type.tc-sta: New. + * tests/type/string-arithmetics.tc-err: New. + * tests/type/string-arithmetics.tc-sta: New. + * tests/type/test09.tc-err: New. + * tests/type/test09.tc-sta: New. + * tests/type/test10.tc-err: New. + * tests/type/test10.tc-sta: New. + * tests/type/test11.tc-err: New. + * tests/type/test11.tc-sta: New. + * tests/type/test13.tc-err: New. + * tests/type/test13.tc-sta: New. + * tests/type/test14.tc-err: New. + * tests/type/test14.tc-sta: New. + * tests/type/test15.tc-err: New. + * tests/type/test15.tc-sta: New. + * tests/type/test21.tc-err: New. + * tests/type/test21.tc-sta: New. + * tests/type/test22.tc-err: New. + * tests/type/test22.tc-sta: New. + * tests/type/test23.tc-err: New. + * tests/type/test23.tc-sta: New. + * tests/type/test24.tc-err: New. + * tests/type/test24.tc-sta: New. + * tests/type/test26.tc-err: New. + * tests/type/test26.tc-sta: New. + * tests/type/test28.tc-err: New. + * tests/type/test28.tc-sta: New. + * tests/type/test29.tc-err: New. + * tests/type/test29.tc-sta: New. + * tests/type/test31.tc-err: New. + * tests/type/test31.tc-sta: New. + * tests/type/test32.tc-err: New. + * tests/type/test32.tc-sta: New. + * tests/type/test40.tc-err: New. + * tests/type/test40.tc-sta: New. + * tests/type/test43.tc-err: New. + * tests/type/test43.tc-sta: New. + * tests/type/test52.tc-err: New. + * tests/type/test52.tc-sta: New. + * tests/type/too-many-args.tc-err: New. + * tests/type/too-many-args.tc-sta: New. + * tests/type/too-many-fields.tc-err: New. + * tests/type/too-many-fields.tc-sta: New. + * tests/type/types-endless-recursion.tc-err: New. + * tests/type/types-endless-recursion.tc-sta: New. + * tests/type/unconstrained-nil.tc-err: New. + * tests/type/unconstrained-nil.tc-sta: New. + * tests/type/unsound-types-uses.tc-err: New. + * tests/type/unsound-types-uses.tc-sta: New. + * tests/type/void.tc-err: New. + * tests/type/void.tc-sta: New. + +2011-02-08 Akim Demaille + + Regen. + +2011-02-08 Akim Demaille + + Parser: change the handling of the current location. + + The new scheme (make_SYMBOL) actually also cut the transmission of the + parser current location to the scanner (via yylloc). Therefore, since + the make_SYMBOL change, we actually two current locations: the + scanner's and the parser's. Only the latter was properly initialized + (with the current file name). "Fortunately" the standard default + constructor also make the scanner's location work properly wrt lines + and columns, but, of course, had an empty file name. + + It turns out that the TigerParser features a useless location_ member. + Use it to exchange the current location bw the parser and the scanner. + Maybe Bison should provide other ways to exchange them (e.g., as an + input argument to yylex). + + * src/parse/tiger-parser.cc (parse_): Maintain the current location_. + (parse_import): Save and restore the current location. + * src/parse/parsetiger.yy: Don't initialize @$. + * src/parse/scantiger.ll (loc): Remove. + Use TigerParser.location_ instead. + +2011-02-08 Akim Demaille + + Formatting changes. + +2011-02-08 Akim Demaille + + Misc.Path: empty. + + * lib/misc/path.hh, lib/misc/path.hxx (empty): New. + * lib/misc/test-path.cc: Check it. + * src/parse/tiger-parser.cc: Use it. + +2011-02-08 Akim Demaille + + tc-check: be kind about missing file names in locations. + + * tests/tc-check.in (check): Here. + +2011-02-01 Akim Demaille + + ast: the README is not for students. + + * src/ast/local.mk: here. + Reported by Julien Grall. + +2011-01-31 Akim Demaille + + build: recognize options that clang does not support. + + * build-aux/warning.m4: Here. + +2011-01-31 Akim Demaille + + diff-r: don't include .last-cl-gen. + + * dev/diff-r: Skip it. + Reported by Julien Grall. + +2011-01-31 Akim Demaille + + build: don't ex[ect GNU sed. + + * build-aux/bin/diff-dirs: New. + * Makefile.am (diff_re1, diff_re2): Remove. + (%.diff): Use diff-dirs. + +2011-01-31 Akim Demaille + + Regen. + +2011-01-31 Akim Demaille + + tc 1.31a. + + * NEWS, configure.ac: here. + +2011-01-30 Akim Demaille + + tc 1.31. + + For 2013-tc-2.0. + + * NEWS, configure.ac: Version 1.31. + +2011-01-30 Akim Demaille + + boost.m4: update. + + * build-aux/boost.m4: From upstream. + +2011-01-30 Akim Demaille + + include style changes. + + git grep -l '# *include *"' tcsh | + xargs perl -pi -e 's/(#\s*include\s+)"(.*?)"/$1<$2>/g' + + * dev/ast-default-visitor-gen, dev/ast-nodes-gen, + * dev/ast-visitor-gen, dev/transform-proxy-visitors-gen, + * lib/misc/algorithm.hh, lib/misc/algorithm.hxx, + * lib/misc/deref.cc, lib/misc/deref.hh, + * lib/misc/deref.hxx, lib/misc/endomap.hh, + * lib/misc/error.hh, lib/misc/error.hxx, + * lib/misc/escape.hh, lib/misc/escape.hxx, + * lib/misc/file-library.hh, lib/misc/file-library.hxx, + * lib/misc/generic-variant.hh, lib/misc/generic-variant.hxx, + * lib/misc/graph.hh, lib/misc/graph.hxx, + * lib/misc/list.hcc, lib/misc/map.hh, + * lib/misc/map.hxx, lib/misc/pair.hh, + * lib/misc/pair.hxx, lib/misc/path.hh, + * lib/misc/path.hxx, lib/misc/ref.hh, + * lib/misc/ref.hxx, lib/misc/scoped-map.hh, + * lib/misc/scoped-map.hxx, lib/misc/separator.hh, + * lib/misc/separator.hxx, lib/misc/set.hh, + * lib/misc/set.hxx, lib/misc/symbol.hh, + * lib/misc/symbol.hxx, lib/misc/timer.hh, + * lib/misc/timer.hxx, lib/misc/traits.hh, + * lib/misc/unique.hh, lib/misc/unique.hxx, + * lib/misc/variant.hh, lib/misc/variant.hxx, + * lib/misc/xalloc.hh, lib/misc/xalloc.hxx, + * src/assem/comment.hh, src/assem/comment.hxx, + * src/assem/fragment.hh, src/assem/fragment.hxx, + * src/assem/fragments.hh, src/assem/fwd.hh, + * src/assem/instr.hh, src/assem/instr.hxx, + * src/assem/instrs.hh, src/assem/label.hh, + * src/assem/label.hxx, src/assem/layout.hh, + * src/assem/layout.hxx, src/assem/libassem.hh, + * src/assem/move.hh, src/assem/move.hxx, + * src/assem/oper.hh, src/assem/oper.hxx, + * src/assem/visitor.hh, src/assem/visitor.hxx, + * src/ast/any-decs.hh, src/ast/any-decs.hxx, + * src/ast/array-exp.hh, src/ast/array-ty.hh, + * src/ast/assign-exp.hh, src/ast/ast.yml, + * src/ast/break-exp.hh, src/ast/call-exp.hh, + * src/ast/cast-exp.hh, src/ast/cast-var.hh, + * src/ast/class-ty.hh, src/ast/dec.hh, + * src/ast/decs-list.hh, src/ast/decs.hh, + * src/ast/decs.hxx, src/ast/default-visitor.hh, + * src/ast/default-visitor.hxx, src/ast/exp.hh, + * src/ast/field-init.hh, src/ast/field-var.hh, + * src/ast/field.hh, src/ast/for-exp.hh, + * src/ast/function-dec.hh, src/ast/function-decs.hh, + * src/ast/if-exp.hh, src/ast/int-exp.hh, + * src/ast/let-exp.hh, src/ast/libast.hh, + * src/ast/location.hh, src/ast/metavar-exp.hh, + * src/ast/method-call-exp.hh, src/ast/method-dec.hh, + * src/ast/method-decs.hh, src/ast/name-ty.hh, + * src/ast/nil-exp.hh, src/ast/non-object-visitor.hh, + * src/ast/non-object-visitor.hxx, src/ast/object-exp.hh, + * src/ast/op-exp.hh, src/ast/pretty-printer.hh, + * src/ast/record-exp.hh, src/ast/record-ty.hh, + * src/ast/rule-dec.hh, src/ast/rule-decs.hh, + * src/ast/seq-exp.hh, src/ast/simple-var.hh, + * src/ast/string-exp.hh, src/ast/subscript-var.hh, + * src/ast/tasks.hh, src/ast/tiger_ast.i, + * src/ast/ty.hh, src/ast/typable.hh, + * src/ast/type-constructor.hh, src/ast/type-dec.hh, + * src/ast/type-decs.hh, src/ast/var-dec.hh, + * src/ast/var-decs.hh, src/ast/var.hh, + * src/ast/visitor.hh, src/ast/visitor.hxx, + * src/ast/while-exp.hh, src/astclone/cloner.hxx, + * src/astclone/libastclone.hh, src/astclone/tasks.hh, + * src/bind/binder.hh, src/bind/binder.hxx, + * src/bind/libbind.hh, src/bind/renamer.hh, + * src/bind/renamer.hxx, src/bind/tasks.hh, + * src/callgraph/call-graph-visitor.hh, src/callgraph/fundec-graph.hh, + * src/callgraph/fundec-graph.hxx, src/callgraph/libcallgraph.hh, + * src/callgraph/parent-graph-visitor.hh, src/callgraph/static-link-visitor.hh, + * src/callgraph/tasks.hh, src/canon/basic-block.hh, + * src/canon/basic-block.hxx, src/canon/libcanon.hh, + * src/canon/tasks.hh, src/canon/traces.hh, + * src/common.hh, src/desugar/bound-checking-visitor.hh, + * src/desugar/desugar-visitor.hh, src/desugar/libdesugar.hh, + * src/desugar/tasks.hh, src/escapes/escapes-check-visitor.hh, + * src/escapes/escapes-visitor.hh, src/escapes/libescapes.hh, + * src/escapes/tasks.hh, src/frame/access.hh, + * src/frame/access.hxx, src/frame/frame.hh, + * src/inlining/inliner.hh, src/inlining/libinlining.hh, + * src/inlining/pruner.hh, src/inlining/tasks.hh, + * src/liveness/flowgraph.hh, src/liveness/flowgraph.hxx, + * src/liveness/libliveness.hh, src/liveness/liveness.hh, + * src/liveness/tasks.hh, src/object/binder.hh, + * src/object/desugar-visitor.hh, src/object/libobject.hh, + * src/object/renamer.hh, src/object/tasks.hh, + * src/object/type-checker.hh, src/overload/binder.hh, + * src/overload/liboverload.hh, src/overload/over-table.hh, + * src/overload/over-table.hxx, src/overload/tasks.hh, + * src/overload/type-checker.hh, src/parse/fwd.hh, + * src/parse/libparse.hh, src/parse/location.hh, + * src/parse/metavar-map.hh, src/parse/metavar-map.hxx, + * src/parse/parsetiger.cc, src/parse/parsetiger.hh, + * src/parse/scantiger.ll, src/parse/tasks.hh, + * src/parse/tiger-parser.hh, src/parse/tiger_parse.i, + * src/parse/tweast.hh, src/parse/tweast.hxx, + * src/regalloc/color.hh, src/regalloc/libregalloc.hh, + * src/regalloc/regallocator.hh, src/regalloc/tasks.hh, + * src/target/assembly.hh, src/target/codegen.hh, + * src/target/codegen.hxx, src/target/cpu-limits.hh, + * src/target/cpu.hh, src/target/ia32/codegen.cc, + * src/target/ia32/cpu.hh, src/target/ia32/gas-assembly.hh, + * src/target/ia32/gas-layout.hh, src/target/ia32/target.hh, + * src/target/libtarget.hh, src/target/mips/codegen.cc, + * src/target/mips/cpu.hh, src/target/mips/spim-assembly.hh, + * src/target/mips/spim-layout.hh, src/target/mips/target.hh, + * src/target/target.hh, src/target/tasks.hh, + * src/target/tiger_target.i, src/task/boolean-task.hh, + * src/task/disjunctive-task.hh, src/task/function-task.hh, + * src/task/int-task.hh, src/task/multiple-string-task.hh, + * src/task/string-task.hh, src/task/task-register.hh, + * src/task/task-register.hxx, src/task/task.hh, + * src/task/task.hxx, src/task/tasks.hh, + * src/temp/fwd.hh, src/temp/identifier.hcc, + * src/temp/identifier.hh, src/temp/label.hh, + * src/temp/libtemp.hh, src/temp/tasks.hh, + * src/temp/temp-set.hh, src/temp/temp.hh, + * src/transform/all.hxx, src/transform/bottom-up-rewriter.hh, + * src/transform/bottom-up.hh, src/transform/concrete-syntax-rewriter.hh, + * src/transform/generic-rewriter.hh, src/transform/generic-rewriter.hxx, + * src/transform/generic-traversal.hh, src/transform/generic-traversal.hxx, + * src/transform/matcher.hh, src/transform/metavar-pool.hh, + * src/transform/metavar-pool.hxx, src/transform/proxy-visitors.hh, + * src/transform/proxy-visitors.hxx, src/transform/rewriter.hh, + * src/transform/visitor.hh, src/transform/visitor.hxx, + * src/translate/access.hh, src/translate/access.hxx, + * src/translate/exp.hh, src/translate/exp.hxx, + * src/translate/fwd.hh, src/translate/level.hh, + * src/translate/level.hxx, src/translate/libtranslate.hh, + * src/translate/tasks.hh, src/translate/translation.hh, + * src/translate/translator.hh, src/tree/all.hh, + * src/tree/binop.hh, src/tree/binop.hxx, + * src/tree/call.hh, src/tree/cjump.hh, + * src/tree/cjump.hxx, src/tree/const.hh, + * src/tree/const.hxx, src/tree/eseq.hh, + * src/tree/eseq.hxx, src/tree/exp.hh, + * src/tree/fragment.hh, src/tree/fragment.hxx, + * src/tree/fragments.hh, src/tree/fwd.hh, + * src/tree/iterator.hh, src/tree/iterator.hxx, + * src/tree/jump.hh, src/tree/jump.hxx, + * src/tree/label.hh, src/tree/label.hxx, + * src/tree/libtree.hh, src/tree/mem.hh, + * src/tree/mem.hxx, src/tree/move.hh, + * src/tree/move.hxx, src/tree/name.hh, + * src/tree/name.hxx, src/tree/seq.hh, + * src/tree/seq.hxx, src/tree/stm.hh, + * src/tree/sxp.hh, src/tree/sxp.hxx, + * src/tree/temp.hh, src/tree/temp.hxx, + * src/tree/tiger_tree.i, src/tree/tree.hh, + * src/tree/tree.hxx, src/tree/trees.hh, + * src/tree/visitor.hh, src/tree/visitor.hxx, + * src/type/array.hh, src/type/array.hxx, + * src/type/attribute.hh, src/type/builtin-types.hh, + * src/type/class.hh, src/type/class.hxx, + * src/type/field.hh, src/type/field.hxx, + * src/type/function.hh, src/type/function.hxx, + * src/type/libtype.hh, src/type/method.hh, + * src/type/named.hh, src/type/named.hxx, + * src/type/record.hh, src/type/record.hxx, + * src/type/tasks.hh, src/type/type-checker.hh, + * src/type/type-checker.hxx, src/type/type.hh, + * src/type/type.hxx, src/type/types.hh, + * tcsh/README, ti/fork.cc, + * ti/fork.hh, ti/fork.hxx, + * ti/ti.cc, ti/tiopts.cc, + * ti/tiopts.hh, ti/tiopts.hxx: + Here. + +2011-01-30 Akim Demaille + + utf-8. + + * TODO: here. + +2011-01-29 Akim Demaille + + NEWS: update. + + * NEWS: here. + +2011-01-29 Akim Demaille + + style changes. + + We do not use relative paths for headers to headers. So use #include + <...> instead of #include "...". + + git grep -l '#include.*"' dev src | + xargs perl -pi -e 's/(#\s*include\s+)"(.*?)"/$1<$2>/g' + + * dev/ast-cloner-gen, dev/ast-nodes-gen, + * src/ast/array-exp.cc, src/ast/array-exp.hh, + * src/ast/array-exp.hxx, src/ast/array-ty.cc, + * src/ast/array-ty.hh, src/ast/array-ty.hxx, + * src/ast/assign-exp.cc, src/ast/assign-exp.hh, + * src/ast/assign-exp.hxx, src/ast/ast.cc, + * src/ast/ast.hh, src/ast/ast.hxx, + * src/ast/break-exp.cc, src/ast/break-exp.hh, + * src/ast/break-exp.hxx, src/ast/call-exp.cc, + * src/ast/call-exp.hh, src/ast/call-exp.hxx, + * src/ast/cast-exp.cc, src/ast/cast-exp.hh, + * src/ast/cast-exp.hxx, src/ast/cast-var.cc, + * src/ast/cast-var.hh, src/ast/cast-var.hxx, + * src/ast/class-ty.cc, src/ast/class-ty.hh, + * src/ast/class-ty.hxx, src/ast/dec.cc, + * src/ast/dec.hh, src/ast/dec.hxx, + * src/ast/decs-list.cc, src/ast/decs-list.hh, + * src/ast/decs-list.hxx, src/ast/escapable.cc, + * src/ast/escapable.hh, src/ast/escapable.hxx, + * src/ast/exp.cc, src/ast/exp.hh, + * src/ast/exp.hxx, src/ast/field-init.cc, + * src/ast/field-init.hh, src/ast/field-init.hxx, + * src/ast/field-var.cc, src/ast/field-var.hh, + * src/ast/field-var.hxx, src/ast/field.cc, + * src/ast/field.hh, src/ast/field.hxx, + * src/ast/for-exp.cc, src/ast/for-exp.hh, + * src/ast/for-exp.hxx, src/ast/function-dec.cc, + * src/ast/function-dec.hh, src/ast/function-dec.hxx, + * src/ast/if-exp.cc, src/ast/if-exp.hh, + * src/ast/if-exp.hxx, src/ast/int-exp.cc, + * src/ast/int-exp.hh, src/ast/int-exp.hxx, + * src/ast/let-exp.cc, src/ast/let-exp.hh, + * src/ast/let-exp.hxx, src/ast/metavar-exp.cc, + * src/ast/metavar-exp.hh, src/ast/metavar-exp.hxx, + * src/ast/metavariable.cc, src/ast/metavariable.hh, + * src/ast/metavariable.hxx, src/ast/method-call-exp.cc, + * src/ast/method-call-exp.hh, src/ast/method-call-exp.hxx, + * src/ast/method-dec.cc, src/ast/method-dec.hh, + * src/ast/method-dec.hxx, src/ast/name-ty.cc, + * src/ast/name-ty.hh, src/ast/name-ty.hxx, + * src/ast/nil-exp.cc, src/ast/nil-exp.hh, + * src/ast/nil-exp.hxx, src/ast/object-exp.cc, + * src/ast/object-exp.hh, src/ast/object-exp.hxx, + * src/ast/op-exp.cc, src/ast/op-exp.hh, + * src/ast/op-exp.hxx, src/ast/record-exp.cc, + * src/ast/record-exp.hh, src/ast/record-exp.hxx, + * src/ast/record-ty.cc, src/ast/record-ty.hh, + * src/ast/record-ty.hxx, src/ast/rule-dec.cc, + * src/ast/rule-dec.hh, src/ast/rule-dec.hxx, + * src/ast/seq-exp.cc, src/ast/seq-exp.hh, + * src/ast/seq-exp.hxx, src/ast/simple-var.cc, + * src/ast/simple-var.hh, src/ast/simple-var.hxx, + * src/ast/string-exp.cc, src/ast/string-exp.hh, + * src/ast/string-exp.hxx, src/ast/subscript-var.cc, + * src/ast/subscript-var.hh, src/ast/subscript-var.hxx, + * src/ast/ty.cc, src/ast/ty.hh, + * src/ast/ty.hxx, src/ast/typable.cc, + * src/ast/typable.hh, src/ast/typable.hxx, + * src/ast/type-constructor.cc, src/ast/type-constructor.hh, + * src/ast/type-constructor.hxx, src/ast/type-dec.cc, + * src/ast/type-dec.hh, src/ast/type-dec.hxx, + * src/ast/var-dec.cc, src/ast/var-dec.hh, + * src/ast/var-dec.hxx, src/ast/var.cc, + * src/ast/var.hh, src/ast/var.hxx, + * src/ast/while-exp.cc, src/ast/while-exp.hh, + * src/ast/while-exp.hxx, src/astclone/cloner.cc, + * src/astclone/cloner.hh, src/transform/all.cc, + * src/transform/all.hh: + Here. + +2011-01-29 Akim Demaille + + style changes. + + We do not use relative paths for headers to headers. So use #include + <...> instead of #include "...". + + git grep -l '#include.*"' dev | + xargs perl -pi -e 's/(#\s*include\s+)"(.*?)"/$1<$2>/g' + + * dev/ast-cloner-gen, dev/ast-pretty-printer-gen, + * dev/transform-all-gen: here. + +2011-01-29 Akim Demaille + + style changes. + + We do not use relative paths for headers to headers. So use #include + <...> instead of #include "...". + + git grep -l '#include.*"' src/ lib/misc/ | + xargs perl -pi -e 's/(#\s*include\s+)"(.*?)"/$1<$2>/g' + + * lib/misc/contract.cc, lib/misc/endomap.hcc, + * lib/misc/error.cc, lib/misc/escape.cc, + * lib/misc/file-library.cc, lib/misc/indent.cc, + * lib/misc/path.cc, lib/misc/symbol.cc, + * lib/misc/test-deref.cc, lib/misc/test-error.cc, + * lib/misc/test-escape.cc, lib/misc/test-generic-variant.cc, + * lib/misc/test-graph.cc, lib/misc/test-indent.cc, + * lib/misc/test-path.cc, lib/misc/test-scoped.cc, + * lib/misc/test-separator.cc, lib/misc/test-symbol.cc, + * lib/misc/test-timer.cc, lib/misc/test-unique.cc, + * lib/misc/test-variant.cc, lib/misc/test-xalloc.cc, + * lib/misc/tiger_misc.i, lib/misc/timer.cc, + * lib/misc/xalloc.cc, src/assem/fragment.cc, + * src/assem/fragments.cc, src/assem/instr.cc, + * src/assem/instrs.cc, src/assem/layout.cc, + * src/ast/ast.hh, src/ast/ast.yml, + * src/ast/decs-list.cc, src/ast/decs.cc, + * src/ast/escapable.hh, src/ast/fwd.hh, + * src/ast/if-exp.hh, src/ast/let-exp.hh, + * src/ast/libast.cc, src/ast/pretty-printer.cc, + * src/ast/tasks.cc, src/ast/test-ast.cc, + * src/ast/typable.hh, src/ast/type-constructor.hh, + * src/ast/type-constructor.hxx, src/ast/visitor.hh, + * src/astclone/libastclone.hxx, src/astclone/tasks.cc, + * src/astclone/test-cloner.cc, src/bind/binder.cc, + * src/bind/libbind.cc, src/bind/renamer.cc, + * src/bind/tasks.cc, src/bind/test-bind.cc, + * src/bind/tiger_bind.i, src/callgraph/call-graph-visitor.cc, + * src/callgraph/libcallgraph.cc, src/callgraph/parent-graph-visitor.cc, + * src/callgraph/static-link-visitor.cc, src/callgraph/tasks.cc, + * src/callgraph/tiger_callgraph.i, src/canon/basic-block.cc, + * src/canon/canon.cc, src/canon/canon.hh, + * src/canon/libcanon.cc, src/canon/tasks.cc, + * src/canon/tiger_canon.i, src/canon/traces.cc, + * src/common.cc, src/desugar/bound-checking-visitor.cc, + * src/desugar/desugar-visitor.cc, src/desugar/libdesugar.cc, + * src/desugar/tasks.cc, src/desugar/test-bound-checking.cc, + * src/desugar/test-for-loops-desugar.cc, src/desugar/test-string-cmp-desugar.cc, + * src/escapes/escapes-check-visitor.cc, src/escapes/escapes-visitor.cc, + * src/escapes/libescapes.cc, src/escapes/tasks.cc, + * src/escapes/tiger_escapes.i, src/frame/access.cc, + * src/frame/frame.cc, src/inlining/inliner.cc, + * src/inlining/libinlining.cc, src/inlining/pruner.cc, + * src/inlining/tasks.cc, src/liveness/interference-graph.cc, + * src/liveness/interference-graph.hh, src/liveness/libliveness.cc, + * src/liveness/liveness.cc, src/liveness/tasks.cc, + * src/liveness/test-flowgraph.cc, src/liveness/tiger_liveness.i, + * src/modules.cc, src/object/binder.cc, + * src/object/desugar-visitor.cc, src/object/libobject.cc, + * src/object/renamer.cc, src/object/tasks.cc, + * src/object/test-bind.cc, src/object/test-desugar.cc, + * src/object/test-parse.cc, src/object/test-type.cc, + * src/object/tiger_object.i, src/object/type-checker.cc, + * src/overload/binder.cc, src/overload/liboverload.cc, + * src/overload/tasks.cc, src/overload/tiger_overload.i, + * src/overload/type-checker.cc, src/parse/libparse.cc, + * src/parse/parsetiger.cc, src/parse/parsetiger.hh, + * src/parse/parsetiger.yy, src/parse/tasks.cc, + * src/parse/test-parse.cc, src/parse/test-tweast.cc, + * src/parse/tiger-parser.cc, src/parse/tweast.cc, + * src/regalloc/color.cc, src/regalloc/libregalloc.cc, + * src/regalloc/regallocator.cc, src/regalloc/tasks.cc, + * src/regalloc/test-regalloc.cc, src/regalloc/tiger_regalloc.i, + * src/stc.cc, src/target/assembly.cc, + * src/target/codegen.cc, src/target/cpu-limits.cc, + * src/target/cpu.cc, src/target/ia32/codegen.cc, + * src/target/ia32/codegen.hh, src/target/ia32/cpu.cc, + * src/target/ia32/epilogue.cc, src/target/ia32/gas-assembly.cc, + * src/target/ia32/gas-layout.cc, src/target/ia32/prologue.hh, + * src/target/ia32/target.cc, src/target/libtarget.cc, + * src/target/mips/codegen.cc, src/target/mips/codegen.hh, + * src/target/mips/cpu.cc, src/target/mips/epilogue.cc, + * src/target/mips/prologue.hh, src/target/mips/spim-assembly.cc, + * src/target/mips/spim-layout.cc, src/target/mips/target.cc, + * src/target/mips/test-rw_prg.cc, src/target/target.cc, + * src/target/tasks.cc, src/task/boolean-task.cc, + * src/task/disjunctive-task.cc, src/task/function-task.cc, + * src/task/int-task.cc, src/task/libtask.hh, + * src/task/multiple-string-task.cc, src/task/string-task.cc, + * src/task/task-register.cc, src/task/task.cc, + * src/task/tasks.cc, src/tc.cc, + * src/temp/label.cc, src/temp/libtemp.cc, + * src/temp/tasks.cc, src/temp/temp-set.cc, + * src/temp/temp.cc, src/temp/test-temp.cc, + * src/temp/tiger_temp.i, src/tiger_common.i, + * src/transform/bottom-up-rewriter.cc, src/transform/bottom-up.cc, + * src/transform/concrete-syntax-rewriter.cc, src/transform/metavar-pool.cc, + * src/transform/rewriter.cc, src/transform/sequence.hh, + * src/transform/sequence.hxx, src/transform/test-combinators.cc, + * src/transform/test-concrete.cc, src/transform/test-transform-tests.cc, + * src/transform/test-transform.cc, src/transform/test-voyager.cc, + * src/translate/access.cc, src/translate/exp.cc, + * src/translate/level.cc, src/translate/libtranslate.cc, + * src/translate/tasks.cc, src/translate/tiger_translate.i, + * src/translate/translation.cc, src/translate/translator.cc, + * src/tree/binop.cc, src/tree/call.cc, + * src/tree/cjump.cc, src/tree/const.cc, + * src/tree/eseq.cc, src/tree/exp.cc, + * src/tree/fragment.cc, src/tree/fragments.cc, + * src/tree/jump.cc, src/tree/label.cc, + * src/tree/libtree.cc, src/tree/mem.cc, + * src/tree/move.cc, src/tree/name.cc, + * src/tree/seq.cc, src/tree/stm.cc, + * src/tree/sxp.cc, src/tree/temp.cc, + * src/tree/tree.cc, src/tree/trees.cc, + * src/type/array.cc, src/type/attribute.cc, + * src/type/builtin-types.cc, src/type/class.cc, + * src/type/field.cc, src/type/function.cc, + * src/type/libtype.cc, src/type/method.cc, + * src/type/named.cc, src/type/record.cc, + * src/type/tasks.cc, src/type/test-type.cc, + * src/type/tiger_type.i, src/type/type-checker.cc, + * src/type/type.cc, src/version.cc.in: + Convert #include style. + +2011-01-29 Akim Demaille + + scanner: simplifications. + + * src/parse/scantiger.ll (IDENTIFIER, NEW_IDENTIFIER): Remove, + useless. + Style fixes. + +2011-01-29 Akim Demaille + + build-aux: build-aux/bin. + + * build-aux/authors.h-gen: Rename as... + * build-aux/bin/authors.h-gen: this. + * build-aux/bison++.in: Rename as... + * build-aux/bin/bison++.in: this. + * build-aux/logeval-to-csv: Rename as... + * build-aux/bin/logeval-to-csv: this. + * build-aux/monoburg++.in: Rename as... + * build-aux/bin/monoburg++.in: this. + * Makefile.am, bistromatig/Makefile.am, build-aux/local.mk, + * configure.ac, dev/stagize, dev/stats, src/Makefile.am, + * src/parse/local.mk, src/target/ia32/local.mk, + * src/target/local.mk, src/target/monoburg.mk: + Adjust. + +2011-01-29 Akim Demaille + + NEWS: update. + + * NEWS: here. + +2011-01-29 Akim Demaille + + stagize: fixes. + + Escapable and others are delivered too soon. + Reported by Julien Grall. + + * dev/stagize: Beware that ast-nodes.mk is no longer containing + array-exp.cc and so forth, but ast/array-exp.cc etc. So don't go into + src/ast, but in src, and pass ast as argument to the generators. + Likewise for the other cases. + * dev/studentize (--report): New option. + * dev/stagize: Use it for README, as we were now outputting into + stderr, the > redirection did not work. + +2011-01-27 Akim Demaille + + style changes. + + * dev/ast-nodes-gen, lib/misc/deref.cc, lib/misc/timer.cc, + * lib/misc/timer.hxx, lib/misc/xalloc.cc, src/assem/fragment.cc, + * src/assem/fragment.hxx, src/assem/instr.cc, src/assem/layout.cc, + * src/assem/layout.hxx, src/assem/visitor.hxx, src/ast/any-decs.hxx, + * src/ast/array-exp.cc, src/ast/array-ty.cc, src/ast/assign-exp.cc, + * src/ast/ast.cc, src/ast/break-exp.cc, src/ast/call-exp.cc, + * src/ast/cast-exp.cc, src/ast/cast-var.cc, src/ast/class-ty.cc, + * src/ast/dec.cc, src/ast/decs-list.cc, src/ast/decs.hxx, + * src/ast/escapable.cc, src/ast/exp.cc, src/ast/field-init.cc, + * src/ast/field-var.cc, src/ast/field.cc, src/ast/for-exp.cc, + * src/ast/function-dec.cc, src/ast/if-exp.cc, src/ast/int-exp.cc, + * src/ast/let-exp.cc, src/ast/metavar-exp.cc, src/ast/metavariable.cc, + * src/ast/method-call-exp.cc, src/ast/method-dec.cc, src/ast/name-ty.cc, + * src/ast/nil-exp.cc, src/ast/object-exp.cc, src/ast/op-exp.cc, + * src/ast/record-exp.cc, src/ast/record-ty.cc, src/ast/rule-dec.cc, + * src/ast/seq-exp.cc, src/ast/simple-var.cc, src/ast/string-exp.cc, + * src/ast/subscript-var.cc, src/ast/ty.cc, src/ast/typable.cc, + * src/ast/type-constructor.cc, src/ast/type-dec.cc, src/ast/var-dec.cc, + * src/ast/var.cc, src/ast/while-exp.cc, src/canon/basic-block.hxx, + * src/canon/libcanon.cc, src/escapes/escapes-check-visitor.cc, + * src/frame/access.cc, src/liveness/libliveness.cc, + * src/target/libtarget.cc, src/task/disjunctive-task.cc, + * src/task/task-register.cc, src/task/task.cc, + * src/translate/translator.cc, src/tree/const.hxx, src/tree/exp.cc, + * src/tree/exp.hh, src/tree/fragment.cc, src/tree/fragment.hxx, + * src/tree/iterator.hxx, src/tree/stm.cc, src/tree/stm.hh, + * src/tree/visitor.hxx, src/type/array.hxx, src/type/field.cc, + * src/type/type.cc: + s/{ }/{}/g. + +2011-01-27 Akim Demaille + + style changes. + + Change constructors (and class inheritance declaration) from + + Codegen::Codegen (bool rule_trace_p) + : frame_ (0), + rule_trace_p_ (rule_trace_p) + + to + + Codegen::Codegen (bool rule_trace_p) + : frame_ (0) + , rule_trace_p_ (rule_trace_p) + + * dev/transform-all-gen, + * src/assem/instr.hxx, + * src/assem/label.hxx, + * src/callgraph/call-graph-visitor.hh, + * src/callgraph/parent-graph-visitor.hh, + * src/callgraph/static-link-visitor.hh, + * src/escapes/escapes-check-visitor.cc, + * src/escapes/escapes-check-visitor.hh, + * src/escapes/escapes-visitor.hh, + * src/liveness/interference-graph.cc, + * src/object/desugar-visitor.cc, + * src/object/renamer.cc, + * src/object/type-checker.cc, + * src/overload/binder.cc, + * src/parse/tiger-parser.cc, + * src/parse/tweast.hh, + * src/regalloc/color.cc, + * src/regalloc/regallocator.cc, + * src/target/codegen.hxx, + * src/target/cpu-limits.cc, + * src/target/mips/target.cc, + * src/task/string-task.cc, + * src/temp/identifier.hcc, + * src/transform/all.cc, + * src/transform/bottom-up-rewriter.cc, + * src/transform/concrete-syntax-rewriter.cc, + * src/transform/matcher.cc, + * src/transform/metavar-pool.cc, + * src/transform/metavar-pool.hh, + * src/transform/sequence.hxx, + * src/translate/exp.hxx, + * src/translate/level.cc, + * src/translate/translator.cc, + * src/translate/translator.hh, + * src/tree/binop.hxx, + * src/tree/cjump.hxx, + * src/tree/fragment.hxx, + * src/tree/label.hxx, + * src/tree/name.hxx, + * src/tree/temp.hxx, + * src/tree/tree.hxx, + * src/type/field.hxx, + * src/type/method.cc, + * src/type/named.hxx, + * src/type/type-checker.cc: + here. + +2011-01-27 Akim Demaille + + stagize: also prune on # in Makefiles. + + * dev/stagize: here. + +2011-01-27 Akim Demaille + + Regen. + +2011-01-27 Akim Demaille + + parse: fix. + + * src/parse/parsetiger.yy: typeid.opt can be 0, so use a + printer that does not dereference in that case. + There is nothing to do for the destructor, as delete 0 is valid. + +2011-01-27 Akim Demaille + + 1.30a. + + * configure.ac: Bump to 1.30a. + * NEWS: Adjust. + +2011-01-13 Akim Demaille + + tc 1.30. + + * NEWS, configure.ac: Release 1.30. + +2011-01-13 Akim Demaille + + Regen. + +2011-01-13 Akim Demaille + + pretty-printer: avoid trailing spaces. + + * src/ast/pretty-printer.cc: Don't issue spaces before an incendl. + +2011-01-13 Akim Demaille + + Regen. + +2011-01-13 Akim Demaille + + NEWS: fixes. + + * NEWS: here. + +2011-01-13 Akim Demaille + + NEWS: Update. + + * NEWS: Document changes about Bison and Automake. + +2011-01-13 Akim Demaille + + Regen. + +2011-01-13 Akim Demaille + + parse: refactor. + + * src/parse/parsetiger.yy (typeid.opt): New. + Use it. + Use named references at random places. + +2011-01-13 Akim Demaille + + ast: fix. + + * src/ast/ast.yml: here. + * src/ast/if-exp.hh: regen. + +2011-01-13 Akim Demaille + + ChangeLog: regen. + + * .last-cl-gen, ChangeLog: run "make update-ChangeLog". + +2011-01-13 Akim Demaille + + style changes. + + * src/task/task.cc (Task::Task): Scope reduction. + +2011-01-13 Akim Demaille + + style changes. + + * lib/misc/separator.hxx, src/ast/ast.yml, + * src/parse/tweast.cc, src/task/boolean-task.cc, + * src/task/function-task.cc, src/task/int-task.cc, + * src/task/multiple-string-task.cc, src/task/task.cc: + Change constructor style. + +2011-01-13 Akim Demaille + + style changes. + + More from + + Foo::Foo(int a, int b) + : a(a), + b(b) + + to + + Foo::Foo(int a, int b) + : a(a) + , b(b) + + * dev/ast.py: Do it. + + * src/ast/array-exp.cc, src/ast/array-ty.cc, + * src/ast/assign-exp.cc, src/ast/break-exp.cc, + * src/ast/call-exp.cc, src/ast/cast-exp.cc, + * src/ast/cast-var.cc, src/ast/class-ty.cc, + * src/ast/dec.cc, src/ast/decs-list.cc, + * src/ast/escapable.cc, src/ast/exp.cc, + * src/ast/field-init.cc, src/ast/field-var.cc, + * src/ast/field.cc, src/ast/for-exp.cc, + * src/ast/function-dec.cc, src/ast/if-exp.cc, + * src/ast/int-exp.cc, src/ast/let-exp.cc, + * src/ast/metavar-exp.cc, src/ast/method-call-exp.cc, + * src/ast/name-ty.cc, src/ast/object-exp.cc, + * src/ast/op-exp.cc, src/ast/record-exp.cc, + * src/ast/record-ty.cc, src/ast/rule-dec.cc, + * src/ast/seq-exp.cc, src/ast/simple-var.cc, + * src/ast/string-exp.cc, src/ast/subscript-var.cc, + * src/ast/ty.cc, src/ast/type-dec.cc, + * src/ast/var-dec.cc, src/ast/while-exp.cc: + Regen. + +2011-01-12 Akim Demaille + + build: fixes. + + It turned out that it un-hid a comment that was removed by + accident: + + # + +# ../../../src/type/types.hxx(64): remark #522: + # function "type::Named::type_set(const type::Type *)" redeclared "inline" + + * configure.ac: Upgrade style. + Add a few comments. + Fix studentize marks. + * dev/stagize: Do not use 'sed -i -e' because Mac OS X's sed + understands this as 'sed -i-e', i.e., it leaves a backup with + "-e appended". Anyway, don't use sed, use perl. + Remove things that are handled by studentize anyway. + * src/object/binder.cc: Style change. + +2011-01-11 Akim Demaille + + build: fix distcheck. + + * lib/misc/local.mk, src/Makefile.am: Clean the test binaries. + +2011-01-11 Akim Demaille + + regen. + +2011-01-11 Akim Demaille + + Formatting changes. + +2011-01-11 Akim Demaille + + parser: improve Bison usage. + + * src/parse/parsetiger.yy: Specify the language, and use %param. + +2011-01-11 Roland Levillain + + Remove old parser code. + + * src/parse/parsetiger.yy (take): Remove function (now useless). + +2011-01-11 Akim Demaille + + Adjust to changes in glr.cc. + + * src/parse/parsetiger.yy (token.prefix): Rename as... + (api.tokens.prefix): this. + +2011-01-11 Akim Demaille + + Use Bison's variant and lex_symbol interfaces. + + This implementation is certainly incorrect with recursive + parsing (because of the static variable loc), but this will + be addressed later. + * src/parse/parsetiger.yy: Request Bison's variant, assert, + token.prefix and lex_symbol features. + Eliminate all uses of %union, rather associate the C++ type to + each symbol. + Use objects (instead of pointers to objects) for strings and symbols. + Adjust all uses. + The variant implementation does not implement $$ = $1 by default, + so add the missing actions where needed. + * src/parse/tiger-parser.hh (YYLEX_SIGNATURE): Thanks to + lex_symbol, we now return a symbol_type and need no argument. + * src/parse/scantiger.ll (TOKEN, TOKEN_VAL): New. + Use them to return values. + (grown_string, loc): New static variables. + The first one does not need to be static (but making it static + saves from zillions of useless default constructions). The second + needs to be, as it implements location tracking. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/make-symbol@2904 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2011-01-11 Akim Demaille + + Allow default construction of misc::symbol. + + This is needed in order to use Bison's variants. + * lib/misc/symbol.hh (symbol::symbol): Add a default argument + to provide a default ctor. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/make-symbol@2902 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2011-01-11 Akim Demaille + + Comment changes. + +2011-01-11 Akim Demaille + + tc-check: style changes. + + * tests/tc-check.in: Use Cwd::cwd. + Formatting changes. + +2011-01-11 Akim Demaille + + tc-check: refactor. + + * tests/tc-check.in (tarball_parse): Return the results in a more + natural order. + +2011-01-11 Akim Demaille + + tasks: remove useless mutable attribute. + + * src/task/boolean-task.hh, src/task/int-task.hh, + * src/task/string-task.hh: here. + Reported by clang++. + +2011-01-11 Akim Demaille + + tc: please clang. + + * lib/misc/endomap.hcc, lib/misc/list.hcc, lib/misc/set.hxx, + * src/ast/default-visitor.hxx, src/liveness/flowgraph.hxx: + Specify this-> where needed. + +2011-01-11 Akim Demaille + + argp: please clang. + + * lib/argp/argp-help.c, lib/argp/mempcpy.c, lib/argp/strchrnul.c: + Fixes. + * lib/argp/argp-fmtstream.h: Disable the __OPTIMIZE__ section, as it + creates symbols that conflict with the duplicate definition in + argp-fmtstream.c. + The proper fix is probably to use #ifndef __OPTIMIZE__ in + argp-fmtstream.c, but then linking fails because the + "optimized" versions from the headers occur in several compilation + unique, and cause duplicate symbols. + I don't feel like looking for something more elaborate. + +2011-01-11 Akim Demaille + + Style changes. + +2011-01-11 Akim Demaille + + build: ship AUTHORS. + + * Makefile.am: here. + +2010-12-19 Akim Demaille + + parser: regen. + + * src/parse/location.hh, src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, src/parse/position.hh: Regen. + +2010-12-19 Roland Levillain + + Catch up with Akim's studentize. + + * dev/studentize: Add missing entries in documentation. + +2010-12-19 Akim Demaille + + studentize: beware of flex. + + * dev/studentize: Indent the comment that we leave in the + output. + +2010-12-19 Akim Demaille + + studentize: allow to name the closing tags. + + * dev/studentize (&studentize): here. + +2010-12-19 Akim Demaille + + studentize: do not pollute stdout. + + * dev/studentize (report): New. + Use it to send verbose messages to stderr, since when fed on + stdin, we answer on stdout. + +2010-12-19 Akim Demaille + + studentize: --mark. + + * dev/studentize (--mark): New. + Provide its usage. + +2010-12-19 Akim Demaille + + studentize: improve error messages. + + * dev/studentize (&studentize): here. + +2010-12-19 Akim Demaille + + studentize: config_load. + + * dev/studentize (&config_load): New. + Use it. + Comment changes. + +2010-12-19 Akim Demaille + + lib: boost 1.45 compatibility. + + * lib/misc/graph.hxx (name_get): Please Boost 1.45. + * lib/misc/test-graph.cc: Excersize the name. + +2010-12-19 Akim Demaille + + parser: regen. + + * src/parse/location.hh, src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, src/parse/position.hh: Regen. + +2010-12-16 Roland Levillain + + Add a rule to update ChangeLog using Git commit messages. + + * dev/gitlog-to-changelog: New script. + Imported from Git GNU Coreutils. + * dev/Makefile.am (EXTRA_DIST): Add gitlog-to-changelog. + * .last-cl-gen: New. + * Makefile.am (update-ChangeLog): New (phony) target. + (EXTRA_DIST): Add .last-cl-gen. + +2010-12-16 Roland Levillain + + Exercise ti. + + * ti/fact.tig: New. + * ti/Makefile.am (TESTS, TEST_EXTENSIONS, TIG_LOG_COMPILER): New. + (EXTRA_DIST): New. + +2010-12-15 Roland Levillain + + Update copyright years. + + * AUTHORS, + * src/version.cc.in: + Here. + +2010-12-15 Roland Levillain + + s/T9/TC-9/. + + * dev/studentize, + * src/target/ia32/epilogue.cc, + * src/target/mips/epilogue.cc: + Here. + * src/target/ia32/codegen.cc, + * src/target/mips/codegen.cc: + Regen. + +2010-12-15 Roland Levillain + + Have TCSH catch up with the interface of the parser. + + * src/parse/tiger_parse.i: No longer provide replacements for + parse::position's ctors. + +2010-12-08 Roland Levillain + + Typo in src/ast/visitor.hh. + + * dev/ast-visitor-gen: Typo. + * src/ast/visitor.hh: Regen. + +2010-12-08 Roland Levillain + + Fix build issues. + + * src/callgraph/local.mk (callgraph_libcallgraph_la_LDFLAGS) + * src/inlining/local.mk (inlining_libinlining_la_LDFLAGS) + * src/liveness/local.mk (liveness_libliveness_la_LDFLAGS): + Set it back to $(BOOST_GRAPH_LDFLAGS). + * dev/transform-proxy-visitors-gen: Do not emit header guards + twice. + * src/transform/proxy-visitors.hh: Regen. + +2010-11-27 Akim Demaille + + autoconf 2.64. + + * bootstrap, configure.ac: here. + +2010-11-27 Roland Levillain + + Use modern M4sh idioms in warning.m4 (again). + + * build-aux/warning.m4 (TC_COMPILER_OPTION_IF): + Use AS_VAR_IF instead of AS_IF and AS_VAR_GET. + +2010-11-27 Akim Demaille + + tests: enable parallel tests. + + As a matter of fact, most of the tests were not run, because while + check_PROGRAMS were defined, TESTS was not. One fix was to define + TESTS as $(check_PROGRAMS), but, as reported in the documentation + of Automake, it is then better to use EXTRA_PROGRAMS, so that tests + can be compiled in parallel as other tests are run (check_PROGRAMS + are compiled before the first test is even started). + + * configure.ac: Here. + * src/ast/local.mk, src/astclone/local.mk, + * src/bind/local.mk, src/canon/local.mk, + * src/desugar/local.mk, src/liveness/local.mk, + * src/object/local.mk, src/parse/local.mk, + * src/regalloc/local.mk, src/target/mips/local.mk, + * src/temp/local.mk, src/transform/local.mk, + * src/type/local.mk: + (check_PROGRAMS): Rename as... + (TESTS): this. + * src/Makefile.am (EXTRA_PROGRAMS): Define to TESTS. + * lib/misc/local.mk: Ditto. + +2010-11-27 Akim Demaille + + regen. + +2010-11-27 Roland Levillain + + Shorten some actions in the parser. + + * src/parse/parsetiger.yy: Save us a call to std::list::push_back + to build a 1-element list when an std::list's ctor can be used + instead. + +2010-11-27 Akim Demaille + + remove stray files. + + * lib/misc/Makefile.am, src/task/Makefile.am: Remove. + +2010-11-19 Akim Demaille + + data: move to local.mk. + + * Makefile.am, configure.ac: Adjust. + * data/Makefile.am: Rename as... + * data/local.mk: New. + + * Makefile.am (EXTRA_DIST, dist_noinst_DATA): Initialize. + * build-aux/local.mk, data/local.mk: Adjust. + +2010-11-19 Akim Demaille + + Style changes. + +2010-11-19 Akim Demaille + + distcheck: fix. + + Remove traces of the defunct tests/tests.mk. + + * tests/Makefile.am: here. + * tests/mk-Makefile-am: Remove. + +2010-11-19 Akim Demaille + + build: silent-rules + + * src/Makefile.am (version.stamp): here. + +2010-11-19 Akim Demaille + + build: simplify silent-rules. + + $(AM_V_GEN) can be used just as $(AM_V_at), it does not need to be + alone. + + perl -0777 \ + -pi -e 's/(\$\(AM_V_GEN\))\n\t\$\(AM_V_at\)/$1/g' \ + **/{Makefile.am,*.mk} + + * Makefile.am, bistromatig/Makefile.am, src/parse/local.mk, + * src/target/ia32/local.mk, src/target/mips/local.mk, + * tests/Makefile.am: Merge $(AM_V_GEN) and its first $(AM_V_at). + +2010-11-19 Akim Demaille + + build: fix recheck. + + * tests/Makefile.am (BUILT_SOURCES): Help Make generating the + test files. + (AM_TCFLAGS): Pass --object-desugar and --overfun-types-compute + when appropriate. + (MAINTAINERCLEANFILES): Replace with... + (MAINTAINERCLEANEXTS): this. + (recheck): Adjust to use it. + +2010-11-19 Akim Demaille + + ignores: update. + + * .gitignore: here. + +2010-11-19 Akim Demaille + + build: simplify the Makefile support for tests. + + Instead of generating Makefile.ams with the list of files to ship, + use git ls-files. Actually, use a wrapper (build-aux/bin/ls-files) + that runs git ls-files when under git, otherwise uses find. + + This change is not enough: some of the sub-Makefiles defined specific + options (e.g., object-good/Makefile.am defined AM_TCFLAGS = --object-desugar). + + * build-aux/bin/ls-files: New. + * configure.ac: . + * tests/tests.mk: Merge into... + * tests/Makefile.am: here. + + * tests/bind/Makefile.am: Remove. + * tests/escapes/Makefile.am: Remove. + * tests/good/Makefile.am: Remove. + * tests/import-syntax/Makefile.am: Remove. + * tests/import/Makefile.am: Remove. + * tests/lexical/Makefile.am: Remove. + * tests/object-bind/Makefile.am: Remove. + * tests/object-good/Makefile.am: Remove. + * tests/object-syntax/Makefile.am: Remove. + * tests/object-type/Makefile.am: Remove. + * tests/overload-bind-maint/Makefile.am: Remove. + * tests/overload-good/Makefile.am: Remove. + * tests/overload-type-maint/Makefile.am: Remove. + * tests/overload-type/Makefile.am: Remove. + * tests/runtime/Makefile.am: Remove. + * tests/syntax/Makefile.am: Remove. + * tests/type/Makefile.am: Remove. + * tests/Makefile.am: Use ls_files instead of SUBDIRS. + +2010-11-19 Akim Demaille + + build: fix distcheck. + + * dev/ast-gen.mk, src/parse/local.mk: Be careful to help Make + understand when to apply VPATH search. + +2010-11-19 Akim Demaille + + build: silent-rules. + + * src/parse/local.mk: here. + +2010-11-19 Akim Demaille + + stagize: adjust to local.mk changes. + + * dev/stagize: here. + +2010-11-19 Akim Demaille + + stagize: refactor. + + * dev/stagize (stderr, fatal): New. + Use them. + +2010-11-19 Akim Demaille + + stagize: fail on failures. + + * dev/stagize: Avoid subshells, they hide failures, even with -e. + +2010-11-19 Akim Demaille + + stagize: refactor. + + * dev/stagize (seq): Issue several lines, like the real one. + +2010-11-19 Akim Demaille + + bootstrap: fix requirements. + + * bootstrap: here. + +2010-11-19 Akim Demaille + + build: style changes. + + * tcsh/python/Makefile.am, tcsh/ruby/Makefile.am: here. + +2010-11-19 Akim Demaille + + build-aux: use local.mk. + + * build-aux/Makefile.am: Rename as... + * build-aux/local.mk: this. + * Makefile.am, configure.ac: Adjust. + + * Makefile.am (CLEANFILES): Initialize. + +2010-11-11 Akim Demaille + + build: refactor. + + * Makefile.am (install-epita): Update configure invocation. + Use current versions of GCC. + Use $(distdir). + +2010-11-11 Akim Demaille + + leopard: remove. + + * Makefile.am, dev/stagize, dev/tc.texi: Remove remains of Leopard. + +2010-11-11 Akim Demaille + + build: fixes. + + * lib/misc/local.mk: Add missing misc/. + * src/astcloner: Fix invocation of generator. + * dev/ast-gen.mk: Disable generation in ast/. + * dev/ast-gen.mk, src/transform/local.mk: Fix differences + between Gostai and LRDE. + +2010-11-11 Akim Demaille + + tc-check: simplify. + + * tests/tc-check.in: GetOpt sets flags itself. + Avoid "return" when we can. + +2010-11-11 Akim Demaille + + argp: silent-rules. + + * lib/argp/configure.ac: here. + +2010-11-11 Akim Demaille + + Regen. + +2010-11-11 Akim Demaille + + parse: regen. + +2010-11-10 Akim Demaille + + build: convert lib/ to local.mk. + + * lib/misc/Makefile.am: Rename as... + * lib/misc/local.mk: this. + Adjust. + * configure.ac, lib/Makefile.am: Adjust. + +2010-11-10 Akim Demaille + + build: fix src vs. build issues. + + I really hate this part of Make... + + * src/parse/local.mk (FROM_PARSETIGER_YY_SRC): New. + Use it. + +2010-11-10 Akim Demaille + + build: fix transform/ generation. + + * src/transform/local.mk: here (adjust output dir). + * dev/transform-all-gen: Minor upgrade. + +2010-11-10 Akim Demaille + + dev: updates. + + * dev/ast-all-gen: Sync with Gostai. + * dev/ast-gen.mk: Ditto. + * src/ast/local.mk: Adjust. + +2010-11-10 Akim Demaille + + dev: update. + + * dev/tools.py: Catch up with Gostai. + * dev/ast-all-gen, dev/ast-cloner-gen, dev/ast-default-visitor-gen, + * dev/ast-fwd-gen, dev/ast-nodes-gen, dev/ast-pretty-printer-gen, + * dev/ast-visitor-gen, dev/transform-all-gen, + * dev/transform-proxy-visitors-gen: Adjust calls to banner. + * src/ast/ast.yml (file_prologue): New. + +2010-11-10 Akim Demaille + + build: fix authors.h. + + * AUTHORS, THANKS: Convert to UTF-8. + * build-aux/authors.h-gen: New. + * Makefile.am: Adjust to use it. + +2010-11-10 Akim Demaille + + build: simplify. + + * src/target/ia32/local.mk, src/target/mips/local.mk: Factor rm's. + +2010-11-10 Akim Demaille + + prereq: gcc 4.2. + + * configure.ac, tests/tc-check.in: Update requirements to GCC 4.2. + +2010-11-10 Akim Demaille + + build: silent-rules. + + * src/target/ia32/local.mk, src/target/mips/local.mk, + * bistromatig/Makefile.am: here. + +2010-11-10 Akim Demaille + + build: remove remains from Leopard. + + * configure.ac: here. + +2010-11-10 Akim Demaille + + tests: beware of interruptions in builds. + + * tests/tests.mk: Use mv $@.tmp $@. + +2010-11-10 Akim Demaille + + tests: revamp the Makefiles. + + * tests/Makefile.am, tests/tests.mk: Use silent-rules. + (HAVM): New. + (HAVM_FLAGS, TC_CHECK_FLAGS): Rename as... + (HAVMFLAGS, TC_CHECKFLAGS): these, for consistency with traditional + Make variables. + (TC_RUN): New. + Use it. + +2010-11-10 Akim Demaille + + build: various fixes. + + * build-aux/monoburg++.in, src/parse/local.mk: Adjust to the + Makefile.am -> local.mk changes. + +2010-09-15 Akim Demaille + + package: Fix handling of AM_DEFAULT_SOURCE_EXT. + + Automake prefers to see the definition in Makefile.am, so that it properly + uses the C++ linker for C++ programs. + + * configure.ac (AM_DEFAULT_SOURCE_EXT): Remove. + * lib/misc/Makefile.am, src/Makefile.am: Add. + +2010-09-15 Akim Demaille + + package: make handling of modules more modular. + + * src/Makefile.am (dist_tc_SOURCES): Move definitions to... + * src/assem/local.mk, src/ast/local.mk, src/astclone/local.mk, + * src/bind/local.mk, src/callgraph/local.mk, src/canon/local.mk, + * src/desugar/local.mk, src/escapes/local.mk, src/frame/local.mk, + * src/inlining/local.mk, src/liveness/local.mk, src/object/local.mk, + * src/overload/local.mk, src/parse/local.mk, src/regalloc/local.mk, + * src/target/local.mk, src/task/local.mk, src/temp/local.mk, + * src/transform/local.mk, src/translate/local.mk, src/tree/local.mk, + * src/type/local.mk (TASKS): + here. + +2010-09-15 Akim Demaille + + Regen. + +2010-09-15 Akim Demaille + + package: migrate the whole src tree to a single Makefile. + + For the record, amongst the various tricks that were used in src/: + + for i in **/local.mk + do + dir=$(dirname $i) + case $dir in + (ast|parse|task) continue;; + esac + perl -0777 -pi \ + -e 's{\b(test_\w+)}{'"$dir"'_$1}g;' \ + -e 's{(test-\w+)}{'"$dir"'/$1}g;' \ + -e 's{\b([-\w.]+\.\w+)\b}{'"$dir/"'$1}g;' \ + -e 's{(\w+_SOURCES)}{'"$dir"'_$1}g;' $i + done + + and tons of adjustments by hand. + +2010-09-15 Akim Demaille + + package: task/local.mk. + + * src/task/Makefile.am: Rename as... + * src/task/local.mk: this. + Adjust. + * configure.ac, src/Makefile.am: Ditto. + +2010-09-15 Akim Demaille + + canon: fix warning. + + * src/canon/libcanon.cc: Include libcanon.hh to avoid warnings + about undeclared non-static functions. + +2010-09-15 Akim Demaille + + package: make the declaration of test sources useless. + + * configure.ac: Define the AM_DEFAULT_SOURCE_EXT. + * lib/misc/Makefile.am, src/ast/local.mk, + * src/astclone/Makefile.am, src/bind/Makefile.am, + * src/canon/Makefile.am, src/desugar/Makefile.am, + * src/liveness/Makefile.am, src/object/Makefile.am, + * src/parse/local.mk, src/regalloc/Makefile.am, + * src/target/mips/Makefile.am, src/temp/Makefile.am, + * src/transform/Makefile.am, src/type/Makefile.am: + Simplify accordingly. + +2010-09-15 Akim Demaille + + package: ast/local.mk. + + * src/ast/Makefile.am: Rename as... + * src/ast/local.mk: this. + Adjust. + * src/Makefile.am, src/ast/ast-nodes.mk, src/ast/ast.yml, + Adjust to the ast/ prefix. + * src/parse/local.mk: Adjust to other Automake variables being + initialized. + +2010-09-15 Akim Demaille + + package: shush Automake. + + * bistromatig/Makefile.am: We feel entilted to use GNU Make. + +2010-09-15 Akim Demaille + + tweast: fix compilation. + + I cannot get this file to compile properly. Maybe a difference between + Boost versions? + + /opt/local/include/boost/lambda/detail/function_adaptors.hpp:264: error: invalid initialization of reference of type 'parse::Tweast*&' from expression of type 'parse::Tweast* const' + + * src/parse/tweast.cc: Don't use Boost.Lambda, use Boost.Foreach. + +2010-09-15 Akim Demaille + + package: use Automake's silent-rules. + + * configure.ac: here. + Require 1.11.1. + +2010-09-15 Akim Demaille + + package: src/parse/local.mk. + + * src/Makefile.am: Predeclare some relevant Automake variables. + * src/parse/Makefile.am: Rename as... + * src/parse/local.mk: this. + Adjust: prefix parse/ for sources, and parse_ for Automake + variables. + Make parse/prelude.cc cuter. + * configure.ac, src/Makefile.am: Adjust. + +2010-09-15 Akim Demaille + + package: update AUTHORS. + + * AUTHORS: Update a few emails. + +2010-09-15 Akim Demaille + + test-flowgraph: syntactic suggar. + + * src/liveness/test-flowgraph.cc (OPER, LABEL): New. + Use them. + +2010-09-15 Akim Demaille + + test-flowgraph: fix + + * src/liveness/test-flowgraph.cc (main): Fix the conditional + branching, that needs two destination labels. + The test code was correct, its intended semantics was not. + Reported by Alban Tilatti. + +2010-04-30 Roland Levillain + + Remove unnecessary inclusions of header `functional'. + + * src/parse/tweast.hxx, + * src/regalloc/libregalloc.cc, + * src/target/cpu.cc, + * src/temp/identifier.hh: + Here. + +2010-04-30 Roland Levillain + + Update the documentation w.r.t. casts and l-values. + + * src/parse/parsetiger.yy: Here. + +2010-04-30 Roland Levillain + + Move a comment to a more relevant location. + + * src/translate/translator.cc + (translate::Translator::operator() (const ast::FunctionDecs&)): + Here. + +2010-04-30 Roland Levillain + + Fix header inclusions. + + * src/translate/translator.hh: Include tree/fwd.hh. + +2010-04-30 Roland Levillain + + Add missing forward references to Tiger types' classes. + + * src/type/fwd.hh (type): Announce classes type::Function, + type::Method, type::Attribute and type::Class. + +2010-03-11 Akim Demaille + + ChangeLog: fix. + +2010-03-10 Akim Demaille + + build: simplify. + + * configure.ac: AC_SUBST does the m4_pattern_allow for us. + +2010-02-25 Roland Levillain + + Add a hint about method ast::FunctionDec::escapes_get at TC-5. + + * src/ast/ast.yml (FunctionDec): Here. + * src/ast/function-dec.hh: Regen. + +2010-02-25 Roland Levillain + + dev/stagize: Keep `translate' marks after TC-5. + +2010-02-25 Roland Levillain + + Remove all traces of escape_get attributes in student tarballs. + + * dev/ast-cloner-gen: Handle hidden attributes properly. + * src/astclone/cloner.cc: Regen. + * src/object/desugar-visitor.cc + (object::DesugarVisitor::operator() (const ast::VarDec& e)): Hide + references to escape_tag. + +2010-02-22 Roland Levillain + + Regen the AST nodes. + + * src/ast/break-exp.hxx: Regen. + +2010-02-22 Roland Levillain + + Add a hint about methods to be implemented at TC-3. + + * src/ast/ast.yml (BreakExp): Here. + +2010-02-22 Roland Levillain + + Improve the documentation of the AST description. + + * src/ast/ast.yml: Distinguish the effects of nodes' and + accessors' hide attributes. + Use a uniform layout. + Fix punctuation. + +2010-02-22 Roland Levillain + + Version 1.29a. + + * configure.ac, NEWS: Here. + +2010-02-22 Roland Levillain + + Prevent diff-r from removing gap hints (FIXMEs for students). + + * dev/diff-r: Do not prune comment lines. + +2010-02-22 Roland Levillain + + Use Perl in stagize to work around Darwin sed limitations. + + * dev/stagize: Here. + +2010-02-22 Roland Levillain + + Tell Git to ignore .DS_Store files. + +2010-01-15 Roland Levillain + + Version 1.29, for 2012-tc-1.1. + + * configure.ac, NEWS: Here. + +2010-01-15 Roland Levillain + + Fix a bug in unique objects' pretty-printer. + + * lib/misc/unique.hxx + (operator<<(std::ostream&, const unique&)): + Have the prototype of the implementation match the interface's. + s/obj_get/object_get/. + Reported by François Lamboley + * lib/misc/test-unique.cc: New test. + * lib/misc/Makefile.am (check_PROGRAMS): Add test-unique. + (test_unique_SOURCES): New. + +2010-01-15 Roland Levillain + + Add more developer documentation on the distribution process. + + * dev/tc.texi: Add copyright information. + Add my name as author. + (Releases): Document the 20%.tar.bz2 distribution target. + Document `make distcheck' for teacher tarball. + +2010-01-12 Roland Levillain + + Hide more code. + + * src/type/function.hh, src/type/function.cc, + * src/type/method.hh, src/type/method.cc: + Here. + +2010-01-11 Roland Levillain + + Version 1.28a. + + * configure.ac, NEWS: Here. + +2010-01-11 Roland Levillain + + Version 1.28, for 2012-tc-1.0. + + * configure.ac, NEWS: Update. + * Makefile.am (20%): Remove temporary files ending in ``~''. + Remove write permissions for the group and other users (maybe + wrongly set by studentize, but I am not sure). + (20%.tar.bz2): New target. + Shortcut to create student tarballs. + * dev/stagize (stages_opts): Simplify a test. + +2010-01-08 Roland Levillain + + Generate the AST matcher using dev/transform-matcher-gen. + + * src/transform/matcher.cc: Here. + +2010-01-08 Roland Levillain + + Have the build system generate the AST matcher. + + * src/transform/Makefile.am + ($(srcdir)/transform-matcher-gen.stamp): New target. + (EXTRA_DIST): Add transform-matcher-gen.stamp. + ($(srcdir)/matcher.cc): Depend on + $(srcdir)/transform-matcher-gen.stamp. + +2010-01-08 Roland Levillain + + Add an AST matcher generator. + + * dev/transform-matcher-gen: New. + +2010-01-08 Roland Levillain + + Equip the AST description to let us generate the AST matcher later. + + * src/ast/ast.yml (transformlib): New. + (non_matched_attrs): New. + +2010-01-08 Roland Levillain + + Add routine returning the plural of a noun. + + * dev/tools.py (plural): New function. + +2010-01-08 Roland Levillain + + Add more wrapping tools. + + * dev/tools.py (wrap_after_char): New function. + +2010-01-08 Roland Levillain + + Make the prototype line wrapper more general. + + * dev/tools.py (wrap_proto): Move most of the contents of this + routine... + (wrap_line): ...here (new routine). + Make this routine more general than the original wrap_proto, so + that it can be used to wrap more than just function prototypes. + (wrap_proto): Delegate to wrap_line. + (wrap_assignment_of_and_list): New routine. + Delegate to wrap_line. + +2010-01-08 Roland Levillain + + Aesthetic changes in the AST matcher. + + * src/transform/matcher.cc (Matcher::Matcher, Matcher::~Matcher): + Here. + (Matcher::visit_ (const FieldVar&, const FieldVar&)): + Rename equal_fields_p to equal_names_p to match the corresponding + children's name. + (Matcher::visit_ (const ForExp&, const ForExp&)) + (Matcher::visit_ (const FunctionDec&, const FunctionDec&)) + (Matcher::visit_ (const MethodCallExp&, const MethodCallExp&)) + (Matcher::visit_ (const MethodDec&, const MethodDec&)): + Wrap long lines. + +2010-01-08 Roland Levillain + + Avoid useless assignments in the AST matcher. + + * src/transform/matcher.cc + (Matcher::visit_ (const NameTy&, const NameTy&)) + (Matcher::visit_ (const SimpleVar&, const SimpleVar&)): + Directly recurse on the sole child of the node: result_ will + already hold the value to be returned. + +2010-01-08 Roland Levillain + + Fix buggy comparisons in the AST matcher. + + * src/transform/matcher.cc + (Matcher::visit_ (const FunctionDec&, const FunctionDec&)) + (Matcher::visit_ (const MethodDec&, const MethodDec&)): + Recurse on the body and the result value subtrees instead of + comparing their adresses, which is wrong. + +2010-01-08 Roland Levillain + + Sort methods of transform::Matcher using the lexical order. + + * src/transform/matcher.cc: Here. + +2010-01-08 Roland Levillain + + Handle $Id: 6fd14ea3cc00828ba50dd56d39eb9c62aca045ae $ using gitattributes. + +2010-01-08 Roland Levillain + + Pacify diff in tc-check. + + * tests/tc-check.in (ast_check_one): Use `diff -U 0' instead of + `diff -u0'. + +2010-01-08 Roland Levillain + + Regenerate the parser using Bison 2.4.426-827948. + + * src/parse/location.hh, + * src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, + * src/parse/position.hh: + Regen. + +2010-01-08 Roland Levillain + + Fix the TC-1 distribution. + + * src/parse/parsetiger.yy, + * src/parse/scantiger.ll, + * src/parse/tiger-parser.cc, + * src/object/Makefile.am, + * src/object/test-parse.cc: + Hide object-related constructs if the stage does not feature + object-parse. + +2009-12-15 Roland Levillain + + Require Bison 2.4. + + * configure.ac, + * src/parse/parsetiger.yy: + Here. + +2009-12-02 Roland Levillain + + Have `make dist' work on IA-32 hosts not in supported targets. + + * src/Makefile.am (dist_stc_SOURCES): Move stc-runtime.cc... + (nodist_stc_SOURCES): ...here. + +2009-12-02 Roland Levillain + + Clean up ChangeLog. + +2009-12-01 Roland Levillain + + Switch back to idioms compatible with Autoconf 2.61. + + * build-aux/warning.m4 (TC_COMPILER_OPTION_IF): + Use AS_IF and AS_VAR_GET instead of AS_VAR_IF. + +2009-11-24 Warren Seine + + Update bootstrap to check for PyYAML. + + * bootstrap: + Check for module "yaml" instead of "syck". + +2009-11-22 Roland Levillain + + Create lib/argp/build-aux if needed. + + * bootstrap: Here. + +2009-11-05 Roland Levillain + + Move from PySyck to PyYAML. + + * dev/ast.py: Import `yaml' instead of `syck'. + (Loader.load): Adjust. + Adjust documentation. + From Akim Demaille . + * src/ast/ast.yml (OpExp): Surround type with quotes to please + PyYAML. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2920 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-10-30 Roland Levillain + + Improve __str__ conversion methods in SWIG wrappers. + + * lib/misc/tiger_misc.i, + * src/ast/tiger_ast.i, + * src/parse/tiger_parse.i, + * src/tree/tiger_tree.i + (__str__): Make them const. + Use `$self' instead of `self', according to SWIG's manual. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2919 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-10-30 Roland Levillain + + Help SWIG generate a valid Python wrapper for parse::position's ctor. + + * src/parse/tiger_parse.i: Provide a ctor using `int' + literals (e.g. `1') as default values, instead of `unsigned int' + literals (e.g., `1u'), since Python does not understand the latter. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2918 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-10-19 Roland Levillain + + Get rid of some warnings in tests. + + * src/astclone/test-cloner.cc, + * src/bind/test-bind.cc, + * src/desugar/test-bound-checking.cc, + * src/desugar/test-string-cmp-desugar.cc, + * src/object/test-bind.cc, + * src/object/test-desugar.cc, + * src/object/test-type.cc, + * src/transform/test-concrete.cc, + * src/transform/test-transform-tests.cc, + * src/transform/test-voyager.cc: + Qualify internal functions as static. + * src/transform/test-transform-tests.hh: New. + Include this file... + * src/transform/test-concrete.cc, + * src/transform/test-transform.cc, + * src/transform/test-transform-tests.cc: + ...here. + Remove the now useless declarations. + * src/transform/Makefile.am (noinst_HEADERS): New. + Add test-transform-tests.hh. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2917 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-10-19 Roland Levillain + + Be compatible with Boost.Variant 1.40. + + * src/inlining/inliner.cc (inlining): Use misc::variant's + conversion operator instead of boost::get. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2916 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-10-19 Roland Levillain + + Give more documentation and hints about escapes::EscapesVisitor. + + * src/escapes/escapes-visitor.hh: Here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2915 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-10-19 Roland Levillain + + Get rid of a const_cast in escapes::EscapesVisitor. + + * src/ast/ast.yml (SimpleVar): Provide a non const def_get + accessor. + * src/ast/simple-var.hh, src/ast/simple-var.cc: Regen. + * src/escapes/escapes-visitor.cc (escapes): Use ast::SimpleVar's + non const def_get accessor to avoid the use of const_cast. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2914 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-10-19 Roland Levillain + + Use modern M4sh idioms in warning.m4. + + * build-aux/warning.m4 (TC_COMPILER_OPTION_IF): + Use AS_VAR_IF instead of AS_IF and AS_VAR_GET. + Use AS_VAR_POPDEF instead of AS_VAR_PUSHDEF. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2913 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-10-19 Roland Levillain + + Have TC_CXX_WARNINGS be compatible with recent versions of Autoconf. + + * build-aux/warning.m4 + (AC_COMPILE_STDERR_IFELSE, TC_CXX_WARNINGS): Prevent unwanted + concatenations creating dummy tokens with recent versions of + Autoconf. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2912 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-06-29 Roland Levillain + + Fix the distribution of the Tiger Interpreter in Python. + + * dev/stagize: Do not deliver tcsh/python/tip nor + tcsh/python/tip.in in student tarballs. + * tcsh/python/Makefile.am (dist_bin_SCRIPTS): Rename as... + (bin_SCRIPTS): ...this. + (CLEANFILES): Add $(bin_SCRIPTS). + Remove `tip' installcheck targets in student tarballs. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2911 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-06-29 Roland Levillain + + * dev/stagize, bistromatig/bigint.tih: Typos. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2910 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-06-29 Roland Levillain + + Resolve a name conflict between the Tiger Interpreters in C and Python. + + * tcsh/python/ti.in: Rename as... + * tcsh/python/tip.in: ...this. + Adjust. + * configure.ac: Adjust as well. + * tcsh/python/Makefile.am (dist_bin_SCRIPTS) + (MAYBE_INSTALLCHECK_IA32, installcheck-local): + s/ti/tip/. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2909 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-06-29 Roland Levillain + + Fix the distribution of the Bistromatig. + + * bistromatig/tests.mk: New file. + Include it... + * bistromatig/Makefile.am: Here. + (EXTRA_DIST): Add tests/README. + (dist_noinst_SCRIPT): Rename bogus variable as... + (dist_check_SCRIPTS): ...this. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2908 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-04-23 Roland Levillain + + Fix TCSH/Python w.r.t. the new interface of target::runtime_dump. + + * configure.ac, NEWS: Version 1.27a. + * tcsh/python/ti.py: Catch up with the new signature of + tc.target.runtime_dump. + * src/target/libtarget.hh (target::runtime_dump): Document the + arguments of this function. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2907 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-03-23 Benoßt Sigoure + + Don't forget to distribute bistromatig.tih. + + * bistromatig/Makefile.am (dist_noinst_DATA): Add bistromatig.tih. + Actually, re-use a few variables instead of manually re-listing the + files to distribute, which is error prone. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2906 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-03-01 Roland Levillain + + Regenerate the parser using Bison 2.4.266-4ff3b. + + * src/parse/parsetiger.hh, src/parse/parsetiger.cc, + * src/parse/location.hh, src/parse/position.hh: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2901 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-03-01 Roland Levillain + + Show some more of object::DesugarVisitor to students. + + * src/object/desugar-visitor.cc: Here. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2900 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-03-01 Roland Levillain + + * src/escapes/tasks.cc (escapes_tags_display): Hide from students. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2899 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-02-27 Roland Levillain + + Version 1.27, for 2011-tc-3.0. + + * configure.ac, NEWS: Version 1.27. + * AUTHORS: Update. + * dev/ast-gen.mk ($(ast_basedir)README) + ($(ast_basedir)README.student): + New targets. + * src/target/tasks.hh: Improve documentation. + * dev/stagize (prune): Remove escapes. + Deliver the escapes module (but the EscapesCheckVisitor) at TC-3. + Regen the READMEs in src/ast/. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2898 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-02-20 Roland Levillain + + Update documentation about overloaded operator() in AST visitors. + + * configure.ac: Set version to 1.26a. + * src/ast/default-visitor.hh + (operator() (typename Const::type&)): Update comment. + * src/ast/non-object-visitor.hh: Add a missing comment about + injected overloaded operator() methods from the base class. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2897 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-02-08 Yann Grandmaßtre + + Add garbage collection(use Bohem's GC) for IA-32 back-end. + + * src/target/assembly.hh, src/target/mips/Makefile.am, + * src/target/mips/spim-assembly.hh, src/target/ia32/gas-assembly.hh: + Add a boolean argument to runtime to enable garbage collection + if it is necessary. + * src/target/ia32/Makefile.am: (runtime-gnu-linux.cc) Add a runtime + which call to GC_malloc instead of malloc. + * src/target/libtarget.cc, src/target/libtarget.hh: Add a boolean + argument to runtime_dump to enable garbage collection if it is + necessary. + * src/target/tasks.cc, src/target/tasks.hh: Add the option + --garbage-collection to enable the garbage collection. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2893 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-02-03 Roland Levillain + + Add .gitignore files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2892 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2009-01-16 Roland Levillain + + Version 1.26, for 2011-tc-1.0. + + * Makefile.am: Disable `ti' and the Bistromatig when the compiler + is incomplete. + * src/Makefile.am: Disable `stc' when the compiler is incomplete. + * dev/stagize: Adjust accordingly. + * configure.ac: Likewise. + Version 1.26. + * NEWS: Likewise. + Update. + * AUTHORS, src/version.cc.in: Update copyright dates. + * TODO: Kill dead items and update. + * dev/stagize: Deliver parts labelled `object-parse' at TC-2. + * src/parse/tiger-parser.hh: Adjust studentize's marks. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2891 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-20 Roland Levillain + + Regen tests' outputs. + + * tests/object-good/visitor.-e.s, + * tests/object-good/visitor.-e.u.s, + * tests/object-good/visitor.desugared, + * tests/object-good/visitor.hir, + * tests/object-good/visitor.hpr, + * tests/object-good/visitor.lir, + * tests/object-good/visitor.lpr, + * tests/object-good/visitor.s, + * tests/object-good/visitor.u.s: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2890 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-20 Roland Levillain + + Generate outputs for the test added by the previous patch. + + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.-e.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.-e.u.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.desugared, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.err, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.hir, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.hpr, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.lir, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.lpr, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.out, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.s, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.sta, + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.u.s: + New. + * tests/object-good/Makefile.am: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2889 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-20 Roland Levillain + + Add a test to exercise the bug fix of the previous patch. + + * tests/object-good/homonym-local-variables-in-two-methods-of-the-same-class.tig: + New tests. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2888 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-20 Roland Levillain + + Fix a bug in the object type-checker where a method's local variable was considered as an attribute of the enclosing class. + + * src/object/type-checker.hh + (object::TypeChecker::within_methoddec_body_p_): New attribute. + * src/object/type-checker.cc (object::TypeChecker::TypeChecker): + Initialize within_methoddec_body_p_ to false. + (object::TypeChecker::visitDecBody): Ensure we are not already + within a method. + Set within_methoddec_body_p_ to true during the type-checking of + the body. + (object::TypeChecker::operator() (ast::VarDec&)): Don't record a + variable within a class scope as an attribute if it is defined + inside a method's body. + (object::TypeChecker::visitDecMembers): Save the value + within_methoddec_body_p_ and set it to false before visiting a + class' members, then set the saved value back. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2887 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-20 Roland Levillain + + Ensure valid inputs for the Bistromatig are terminated by an EOF. + + * bistromatig/bistromatig.tih (program): New function. + Expect and parse an `exp', then an `EOF'. + Use it... + * bistromatig/bistromatig.tih: ...here as entry point to the + parser, instead of `exp'. + * bistromatig/evalexp++.tig (program): Likewise. + * bistromatig/Makefile.am: Exercise evalexp++ a bit more. + * bistromatig/tests/README: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2886 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-16 Roland Levillain + + Adjust tests w.r.t. the new conventions on inputs set by the previous patch. + + * bistromatig/tests/bistromatig-r10/bistromatig-r10_long1.in, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_long2.in, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_medium1.in, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_medium2.in, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short1.in, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short10.in, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short2.in, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short3.in, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short4.in, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short5.in, + * bistromatig/tests/infinitematig/addmatig/addmatig_long1.in, + * bistromatig/tests/infinitematig/addmatig/addmatig_long2.in, + * bistromatig/tests/infinitematig/addmatig/addmatig_medium1.in, + * bistromatig/tests/infinitematig/addmatig/addmatig_medium2.in, + * bistromatig/tests/infinitematig/addmatig/addmatig_short1.in, + * bistromatig/tests/infinitematig/addmatig/addmatig_short2.in, + * bistromatig/tests/infinitematig/addmatig/addmatig_short3.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_long1.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_long2.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_medium1.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_medium2.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_short0.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_short1.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_short2.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_short3.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_short4.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_short5.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_short6.in, + * bistromatig/tests/infinitematig/mulmatig/mulmatig_long1.in, + * bistromatig/tests/infinitematig/mulmatig/mulmatig_long2.in, + * bistromatig/tests/infinitematig/mulmatig/mulmatig_medium1.in, + * bistromatig/tests/infinitematig/mulmatig/mulmatig_medium2.in, + * bistromatig/tests/infinitematig/mulmatig/mulmatig_short1.in, + * bistromatig/tests/infinitematig/mulmatig/mulmatig_short2.in, + * bistromatig/tests/infinitematig/mulmatig/mulmatig_short3.in, + * bistromatig/tests/infinitematig/mulmatig/mulmatig_short4.in, + * bistromatig/tests/infinitematig/submatig/submatig_long1.in, + * bistromatig/tests/infinitematig/submatig/submatig_long2.in, + * bistromatig/tests/infinitematig/submatig/submatig_medium1.in, + * bistromatig/tests/infinitematig/submatig/submatig_medium2.in, + * bistromatig/tests/infinitematig/submatig/submatig_short0.in, + * bistromatig/tests/infinitematig/submatig/submatig_short1.in, + * bistromatig/tests/infinitematig/submatig/submatig_short2.in, + * bistromatig/tests/infinitematig/submatig/submatig_short3.in, + * bistromatig/tests/mp-add/mp-add-short0.in, + * bistromatig/tests/mp-mul/mp-mul-short0.in: + Here. + * bistromatig/tests/README: New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2885 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-16 Roland Levillain + + Have nicer drivers (w.r.t. their inputs). + + * bistromatig/mp-r10-add.tig, + * bistromatig/mp-r10-div.tig, + * bistromatig/mp-r10-mul.tig, + * bistromatig/mp-r10-sub.tig: + Use the real operator's character as operands delimiter, not `\0'. + Allow newlines at end of input. + * bistromatig/mp-add.tig, + * bistromatig/mp-div.tig, + * bistromatig/mp-mul.tig, + * bistromatig/mp-sub.tig: + Likewise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2884 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-16 Nicolas Teck + + Fix signed arithmetics operators. + + * bistromatig/bigint.tih (bigint_add): Handle more case. + (bigint_sub, bigint_mul, bigint_div): Fix neg function. + * bistromatig/tests/bistromatig-r10/bistromatig-r10_long1.out: + Fix the result number. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2883 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-15 Roland Levillain + + Add more tests. + + * bistromatig/tests/infinitematig/divmatig/divmatig_short4.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_short4.out, + * bistromatig/tests/infinitematig/divmatig/divmatig_short5.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_short5.out, + * bistromatig/tests/infinitematig/divmatig/divmatig_short6.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_short6.out, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short5.in, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short5.out, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short10.in, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short10.out: + New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2882 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-15 Roland Levillain + + Fix the negation (unary minus) and the division. + + * bistromatig/bigint.tih (bigint_negate): Actually change the + sign. + (bigint_div_u): Rework and simplify algorithm. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2881 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-14 Roland Levillain + + Use bistromatig-check to perform (almost) all of the tests. + + * bistromatig/bistromatig-check (output): Remove useless echoes. + * bistromatig/Makefile.am (%-mips.s, %-ia32.s): Avoid useless + rebuilds. + (check): Reindent dependencies. + (check-mp-add, check-mp-r10-add, check-mp-sub, check-mp-r10-sub) + (check-mp-mul, check-mp-r10-mul, check-mp-div, check-mp-r10-div) + (check-bistromatig, check-bistromatig-r10): + Simplify actions using bistromatig-check. + * build-aux/move-if-change: Add a FIXME. + + * bistromatig/tests/mp-add, + * bistromatig/tests/mp-mul: + New directories. + * bistromatig/tests/mp-add/mp-add-short0.in, + * bistromatig/tests/mp-add/mp-add-short0.out, + * bistromatig/tests/mp-mul/mp-mul-short0.in, + * bistromatig/tests/mp-mul/mp-mul-short0.out, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short3.in, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short3.out, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short4.in, + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short4.out, + * bistromatig/tests/infinitematig/addmatig/addmatig_short3.in, + * bistromatig/tests/infinitematig/addmatig/addmatig_short3.out, + * bistromatig/tests/infinitematig/divmatig/divmatig_short3.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_short3.out, + * bistromatig/tests/infinitematig/mulmatig/mulmatig_short3.in, + * bistromatig/tests/infinitematig/mulmatig/mulmatig_short3.out, + * bistromatig/tests/infinitematig/mulmatig/mulmatig_short4.in, + * bistromatig/tests/infinitematig/mulmatig/mulmatig_short4.out, + * bistromatig/tests/infinitematig/submatig/submatig_short0.in, + * bistromatig/tests/infinitematig/submatig/submatig_short0.out, + * bistromatig/tests/infinitematig/submatig/submatig_short3.in, + * bistromatig/tests/infinitematig/submatig/submatig_short3.out: + New tests. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2880 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-14 Roland Levillain + + Factor the Bistromatig's test framework. + + * bistromatig/Makefile.am (check-mp-r10-div): Move test routine + into... + * bistromatig/bistromatig-check: ...this (new) script. + Use it... + * bistromatig/Makefile.am (check-mp-r10-div): ...here. + Have this target depend on bistromatig-check. + (dist_noinst_SCRIPT): New variable. + Add bistromatig-check. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2879 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-14 Roland Levillain + + Handle divisions with 1-digit divisors in the Bistromatig. + + * bistromatig/bigint.tih (bigint_div_u): Handle the ``n = 1'' case + by using a simpler, dedicated algorithm, as advised by D. Knuth. + * bistromatig/Makefile.am (check-mp-r10-div): Show more + information in case of failure. + Make this target a phony one. + Depend on $(check_mp_r10_div_dependencies). + (check): Depend on check-mp-r10-div. + * bistromatig/tests/infinitematig/divmatig/divmatig_short0.in, + * bistromatig/tests/infinitematig/divmatig/divmatig_short0.out: + New test data. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2878 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-14 Roland Levillain + + Start to automate tests on the Bistromatig. + + * bistromatig/Makefile.am (check-mp-r10-div-all-new): New target. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2877 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-14 Roland Levillain + + Don not accept single-digit divisors (for the moment) in Bistromatig. + + * bistromatig/bigint.tih (bigint_div_u): Ensure the divisor is at + least a 2-digit number. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2876 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-14 Roland Levillain + + * bistromatig/bigint.tih (bigint_is_null): Fix this function. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2875 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-14 Roland Levillain + + Fix the pretty-printer of bigints. + + * bistromatig/bigint.tih (bigint_print): Fix the case of 0. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2874 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-14 Roland Levillain + + Fix simple, radix-10 binaries of the Bistromatig. + + * bistromatig/mp-r10-sub.tig, + * bistromatig/mp-r10-mul.tig, + * bistromatig/mp-r10-div.tig: + Use unsigned-version of the operator. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2873 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-12 Nicolas Teck + + Add tests for the radix-10 Bistromatig. + + * bistromatig/tests/bistromatig-r10/bistromatig-r10_long1.in: New. + * bistromatig/tests/bistromatig-r10/bistromatig-r10_long1.out: New. + * bistromatig/tests/bistromatig-r10/bistromatig-r10_long2.in: New. + * bistromatig/tests/bistromatig-r10/bistromatig-r10_long2.out: New. + * bistromatig/tests/bistromatig-r10/bistromatig-r10_medium1.in: New. + * bistromatig/tests/bistromatig-r10/bistromatig-r10_medium1.out: New. + * bistromatig/tests/bistromatig-r10/bistromatig-r10_medium2.in: New. + * bistromatig/tests/bistromatig-r10/bistromatig-r10_medium2.out: New. + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short1.in: New. + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short1.out: New. + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short2.in: New. + * bistromatig/tests/bistromatig-r10/bistromatig-r10_short2.out: New. + * bistromatig/tests/bistromatig-r10: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2872 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-12 Nicolas Teck + + Add tests for the multiple-precision division in bistromatig. + + * bistromatig/tests/infinitematig/divmatig/divmatig_long1.in: New. + * bistromatig/tests/infinitematig/divmatig/divmatig_long1.out: New. + * bistromatig/tests/infinitematig/divmatig/divmatig_long2.in: New. + * bistromatig/tests/infinitematig/divmatig/divmatig_long2.out: New. + * bistromatig/tests/infinitematig/divmatig/divmatig_medium1.in: New. + * bistromatig/tests/infinitematig/divmatig/divmatig_medium1.out: New. + * bistromatig/tests/infinitematig/divmatig/divmatig_medium2.in: New. + * bistromatig/tests/infinitematig/divmatig/divmatig_medium2.out: New. + * bistromatig/tests/infinitematig/divmatig/divmatig_short1.in: New. + * bistromatig/tests/infinitematig/divmatig/divmatig_short1.out: New. + * bistromatig/tests/infinitematig/divmatig/divmatig_short2.in: New. + * bistromatig/tests/infinitematig/divmatig/divmatig_short2.out: New. + * bistromatig/tests/infinitematig/divmatig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2871 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-12 Nicolas Teck + + Add tests for the multiple-precision multiplication in bistromatig. + + * bistromatig/tests/infinitematig/mulmatig/mulmatig_long1.in: New. + * bistromatig/tests/infinitematig/mulmatig/mulmatig_long1.out: New. + * bistromatig/tests/infinitematig/mulmatig/mulmatig_long2.in: New. + * bistromatig/tests/infinitematig/mulmatig/mulmatig_long2.out: New. + * bistromatig/tests/infinitematig/mulmatig/mulmatig_medium1.in: New. + * bistromatig/tests/infinitematig/mulmatig/mulmatig_medium1.out: New. + * bistromatig/tests/infinitematig/mulmatig/mulmatig_medium2.in: New. + * bistromatig/tests/infinitematig/mulmatig/mulmatig_medium2.out: New. + * bistromatig/tests/infinitematig/mulmatig/mulmatig_short1.in: New. + * bistromatig/tests/infinitematig/mulmatig/mulmatig_short1.out: New. + * bistromatig/tests/infinitematig/mulmatig/mulmatig_short2.in: New. + * bistromatig/tests/infinitematig/mulmatig/mulmatig_short2.out: New. + * bistromatig/tests/infinitematig/mulmatig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2870 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-12 Nicolas Teck + + Add tests for the multiple-precision subtraction in bistromatig. + + * bistromatig/tests/infinitematig/submatig/submatig_long1.in: New. + * bistromatig/tests/infinitematig/submatig/submatig_long1.out: New. + * bistromatig/tests/infinitematig/submatig/submatig_long2.in: New. + * bistromatig/tests/infinitematig/submatig/submatig_long2.out: New. + * bistromatig/tests/infinitematig/submatig/submatig_medium1.in: New. + * bistromatig/tests/infinitematig/submatig/submatig_medium1.out: New. + * bistromatig/tests/infinitematig/submatig/submatig_medium2.in: New. + * bistromatig/tests/infinitematig/submatig/submatig_medium2.out: New. + * bistromatig/tests/infinitematig/submatig/submatig_short1.in: New. + * bistromatig/tests/infinitematig/submatig/submatig_short1.out: New. + * bistromatig/tests/infinitematig/submatig/submatig_short2.in: New. + * bistromatig/tests/infinitematig/submatig/submatig_short2.out: New. + * bistromatig/tests/infinitematig/submatig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2869 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-12 Roland Levillain + + Clean up ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2868 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-11 Nicolas Teck + + Add a driver for radix-10 multiple-precision multiplication and division. + + * bistromatig/Makefile.am: (drivers): Add mp-r10-mul.tig + and mp-r10-div.tig. + (mp_r10_mul_dependencies): New variable. + (mp_r10_div_dependencies): New variable. + (mp-r10-mul-mips.s, mp-r10-mul-ia32.s): Depend on + $(mp_r10_mul_dependencies). + (mp-r10-div-mips.s, mp-r10-div-ia32.s): Depend on + $(mp_r10_div_dependencies). + (mp_r10_mul): New variable. + (mp_r10_div): New variable. + * bistromatig/mp-r10-div.tig: New. + * bistromatig/mp-r10-mul.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2867 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-11 Roland Levillain + + Factor and clean up a bit bistromatig/Makefile.am. + + * bistromatig/Makefile.am (operator_dependencies): New variable. + Replace... + (mp_add_dependencies, mp_r10_add_dependencies) + (mp_sub_dependencies, mp_r10_sub_dependencies) + (mp_mul_dependencies, mp_div_dependencies): + ...these variables. + (bistromatig_dependencies): Factor using $(operator_dependencies). + Replace... + (bistromatig_r10_dependencies): this variable. + (check-bistromatig, check-bistromatig-r10): Fix error messages. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2866 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-11 Roland Levillain + + Add a radix-10 Bistromatig. + + * bistromatig/bistromatig-r10.tig: New. + * bistromatig/Makefile.am (drivers): Add bistromatig-r10.tig. + (bistromatig_r10_dependencies): New variable. + (bistromatig-r10-mips.s, bistromatig-r10-ia32.s): New targets. + Depend on $(bistromatig_r10_dependencies). + (bistromatig_r10, check_bistromatig_r10_dependencies): + New variables. + (check-bistromatig-r10): New (phony) target. + (check): Depend on check-bistromatig-r10. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2865 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-11 Roland Levillain + + Start to factor (future) shared code from the Bistromatig. + + * bistromatig/bistromatig.tig: Move almost all of the declarations + of the top-level let-in-end statement into... + * bistromatig/bistromatig.tih: ...this (new) file. + * bistromatig/Makefile.am (bistromatig_dependencies): + Add bistromatig.tih. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2864 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-11 Roland Levillain + + Complete the Bistromatig: handle signed bigints. + + * bistromatig/bigint.tih (bigint_abs): New function. + (bigint_add, bigint_sub, bigint_mul, bigint_div): New functions. + (bigint_add_u, bigint_div_u): Adjust comments. + * bistromatig/bistromatig.tig (Evaluator.visitBinaryExp): + s/bigint_add_u/bigint_add/. + s/bigint_sub_u/bigint_sub/. + s/bigint_mul_u/bigint_mul/. + s/bigint_div_u/bigint_div/. + * bistromatig/Makefile.am (check-bistromatig): Add another test. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2863 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-11 Nicolas Teck + + Remove extra spaces in bistromatig tests. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2862 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-11 Roland Levillain + + Rename unsigned arithmetic routines on bigints. + + * bistromatig/bigint.tih + (bigint_add, bigint_sub, bigint_mul, bigint_div): + Rename functions as... + (bigint_add_u, bigint_sub_u, bigint_mul_u, bigint_div_u): + ...these. + Adjust. + * bistromatig/mp-add.tig, + * bistromatig/mp-sub.tig, + * bistromatig/mp-div.tig, + * bistromatig/mp-mul.tig, + * bistromatig/mp-r10-add.tig, + * bistromatig/bistromatig.tig: + Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2861 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-11 Nicolas Teck + + Add a driver for radix-10 multiple-precision subtraction. + + * bistromatig/Makefile.am: (drivers): Add mp-r10-sub.tig. + (mp_r10_sub_dependencies): New variable. + (mp-r10-sub-mips.s, mp-r10-sub-ia32.s): Depend on + $(mp_r10_sub_dependencies). + (mp_r10_sub): New variable. + (check_mp_r10_sub_dependencies): New variable. + (check-mp-r10-sub): New target. + Depend on $(check_mp_r10_sub_dependencies). + (check): Depend on check-mp-r10-sub.. + * bistromatig/mp-r10-sub.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2860 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-11 Roland Levillain + + First version of the arbitrary-radix multiple-precision Bistromatig. + + * bistromatig/bistromatig.tig: New. + * bistromatig/bigint.tih (is_digit): New function. + * bistromatig/Makefile.am (drivers): Add bistromatig.tig. + (bistromatig_dependencies): New variable. + (bistromatig-mips.s, bistromatig-ia32.s:): New targets. + Depend on $(bistromatig_dependencies). + (bistromatig, check_bistromatig_dependencies): New variables. + (check-bistromatig): New target. + (check): Depend on check-bistromatig. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2859 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-10 Roland Levillain + + Add the division of nonnegative bigints. + + * bistromatig/bigint.tih + (bigint_make_from_digit, bigint_clone_trim): New functions. + (bigint_div): New function. + Implement multiple-precision integer division. + * bistromatig/mp-div.tig: New. + * bistromatig/Makefile.am (drivers): Add mp-div.tig. + (mp_div_dependencies): New. + (mp-div-mips.s, mp-div-ia32.s): Depend on $(mp_div_dependencies). + (mp_div, check_mp_div_dependencies): New variables. + (check-mp-div): New (phony) target. + (check): Depend on check-mp-div. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2858 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-10 Roland Levillain + + Clean up and add missing routines in bistromatig/. + + * bistromatig/bigint.tih (bigint_make): Document. + (bigint_zero): New function. + (bigint_padding): Rename as... + (bigint_clone_pad): ...this. + Instead of altering the argument, create a copy of it, possibly + add padding, and return it. + (bigint_ge, bigint_add, bigint_sub): Adjust clients. + (bigint_le, bigint_gt, bigint_lt): New functions. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2857 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-10 Nicolas Teck + + Add tests for the multiple-precision addition in bistromatig.. + + * bistromatig/tests/infinitematig/addmatig/addmatig_long1.in: New. + * bistromatig/tests/infinitematig/addmatig/addmatig_long1.out: New. + * bistromatig/tests/infinitematig/addmatig/addmatig_long2.in: New. + * bistromatig/tests/infinitematig/addmatig/addmatig_long2.out: New. + * bistromatig/tests/infinitematig/addmatig/addmatig_medium1.in: New. + * bistromatig/tests/infinitematig/addmatig/addmatig_medium1.out: New. + * bistromatig/tests/infinitematig/addmatig/addmatig_medium2.in: New. + * bistromatig/tests/infinitematig/addmatig/addmatig_medium2.out: New. + * bistromatig/tests/infinitematig/addmatig/addmatig_short1.in: New. + * bistromatig/tests/infinitematig/addmatig/addmatig_short1.out: New. + * bistromatig/tests/infinitematig/addmatig/addmatig_short2.in: New. + * bistromatig/tests/infinitematig/addmatig/addmatig_short2.out: New. + * bistromatig/tests/infinitematig/addmatig: New. + * bistromatig/tests/infinitematig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2856 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-10 Nicolas Teck + + Correct the bistromatig tests repository name according to the subject. + + * bistromatig/tests/simplemathic/add/add_simple_long.in: Remove. + * bistromatig/tests/simplemathic/add/add_simple_long.out: Remove. + * bistromatig/tests/simplemathic/add/add_simple_medium.in: Remove. + * bistromatig/tests/simplemathic/add/add_simple_medium.out: Remove. + * bistromatig/tests/simplemathic/add/add_simple_short.in: Remove. + * bistromatig/tests/simplemathic/add/add_simple_short.out: Remove. + * bistromatig/tests/simplemathic/add: Remove. + * bistromatig/tests/simplemathic/cplx/simple_cplx_long_1.in: Remove. + * bistromatig/tests/simplemathic/cplx/simple_cplx_long_1.out: Remove. + * bistromatig/tests/simplemathic/cplx/simple_cplx_long_2.in: Remove. + * bistromatig/tests/simplemathic/cplx/simple_cplx_long_2.out: Remove. + * bistromatig/tests/simplemathic/cplx/simple_cplx_medium_1.in: Remove. + * bistromatig/tests/simplemathic/cplx/simple_cplx_medium_1.out: Remove. + * bistromatig/tests/simplemathic/cplx/simple_cplx_medium_2.in: Remove. + * bistromatig/tests/simplemathic/cplx/simple_cplx_medium_2.out: Remove. + * bistromatig/tests/simplemathic/cplx/simple_cplx_short_1.in: Remove. + * bistromatig/tests/simplemathic/cplx/simple_cplx_short_1.out: Remove. + * bistromatig/tests/simplemathic/cplx/simple_cplx_short_2.in: Remove. + * bistromatig/tests/simplemathic/cplx/simple_cplx_short_2.out: Remove. + * bistromatig/tests/simplemathic/cplx: Remove. + * bistromatig/tests/simplemathic/div/div_simple_long.in: Remove. + * bistromatig/tests/simplemathic/div/div_simple_long.out: Remove. + * bistromatig/tests/simplemathic/div/div_simple_medium.in: Remove. + * bistromatig/tests/simplemathic/div/div_simple_medium.out: Remove. + * bistromatig/tests/simplemathic/div/div_simple_short.in: Remove. + * bistromatig/tests/simplemathic/div/div_simple_short.out: Remove. + * bistromatig/tests/simplemathic/div: Remove. + * bistromatig/tests/simplemathic/mul/mul_simple_long.in: Remove. + * bistromatig/tests/simplemathic/mul/mul_simple_long.out: Remove. + * bistromatig/tests/simplemathic/mul/mul_simple_medium.in: Remove. + * bistromatig/tests/simplemathic/mul/mul_simple_medium.out: Remove. + * bistromatig/tests/simplemathic/mul/mul_simple_short.in: Remove. + * bistromatig/tests/simplemathic/mul/mul_simple_short.out: Remove. + * bistromatig/tests/simplemathic/mul: Remove. + * bistromatig/tests/simplemathic/sub/sub_simple_long.in: Remove. + * bistromatig/tests/simplemathic/sub/sub_simple_long.out: Remove. + * bistromatig/tests/simplemathic/sub/sub_simple_medium.in: Remove. + * bistromatig/tests/simplemathic/sub/sub_simple_medium.out: Remove. + * bistromatig/tests/simplemathic/sub/sub_simple_short.in: Remove. + * bistromatig/tests/simplemathic/sub/sub_simple_short.out: Remove. + * bistromatig/tests/simplemathic/sub: Remove. + * bistromatig/tests/simplemathic: Remove. + * bistromatig/tests/simplematig/add/add_simple_long.in: New. + * bistromatig/tests/simplematig/add/add_simple_long.out: New. + * bistromatig/tests/simplematig/add/add_simple_medium.in: New. + * bistromatig/tests/simplematig/add/add_simple_medium.out: New. + * bistromatig/tests/simplematig/add/add_simple_short.in: New. + * bistromatig/tests/simplematig/add/add_simple_short.out: New. + * bistromatig/tests/simplematig/add: New. + * bistromatig/tests/simplematig/cplx/simple_cplx_long_1.in: New. + * bistromatig/tests/simplematig/cplx/simple_cplx_long_1.out: New. + * bistromatig/tests/simplematig/cplx/simple_cplx_long_2.in: New. + * bistromatig/tests/simplematig/cplx/simple_cplx_long_2.out: New. + * bistromatig/tests/simplematig/cplx/simple_cplx_medium_1.in: New. + * bistromatig/tests/simplematig/cplx/simple_cplx_medium_1.out: New. + * bistromatig/tests/simplematig/cplx/simple_cplx_medium_2.in: New. + * bistromatig/tests/simplematig/cplx/simple_cplx_medium_2.out: New. + * bistromatig/tests/simplematig/cplx/simple_cplx_short_1.in: New. + * bistromatig/tests/simplematig/cplx/simple_cplx_short_1.out: New. + * bistromatig/tests/simplematig/cplx/simple_cplx_short_2.in: New. + * bistromatig/tests/simplematig/cplx/simple_cplx_short_2.out: New. + * bistromatig/tests/simplematig/cplx: New. + * bistromatig/tests/simplematig/div/div_simple_long.in: New. + * bistromatig/tests/simplematig/div/div_simple_long.out: New. + * bistromatig/tests/simplematig/div/div_simple_medium.in: New. + * bistromatig/tests/simplematig/div/div_simple_medium.out: New. + * bistromatig/tests/simplematig/div/div_simple_short.in: New. + * bistromatig/tests/simplematig/div/div_simple_short.out: New. + * bistromatig/tests/simplematig/div: New. + * bistromatig/tests/simplematig/mul/mul_simple_long.in: New. + * bistromatig/tests/simplematig/mul/mul_simple_long.out: New. + * bistromatig/tests/simplematig/mul/mul_simple_medium.in: New. + * bistromatig/tests/simplematig/mul/mul_simple_medium.out: New. + * bistromatig/tests/simplematig/mul/mul_simple_short.in: New. + * bistromatig/tests/simplematig/mul/mul_simple_short.out: New. + * bistromatig/tests/simplematig/mul: New. + * bistromatig/tests/simplematig/sub/sub_simple_long.in: New. + * bistromatig/tests/simplematig/sub/sub_simple_long.out: New. + * bistromatig/tests/simplematig/sub/sub_simple_medium.in: New. + * bistromatig/tests/simplematig/sub/sub_simple_medium.out: New. + * bistromatig/tests/simplematig/sub/sub_simple_short.in: New. + * bistromatig/tests/simplematig/sub/sub_simple_short.out: New. + * bistromatig/tests/simplematig/sub: New. + * bistromatig/tests/simplematig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2855 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-09 Yann Grandmaßtre + + Fix compilation of ti on FreeBSD. + + * ti/Makefile.am: Add dependency with lib/argp/libargp. + * ti/fork.cc: Use strdup instead of strndup because strndup + is GNU extension. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2854 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-09 Roland Levillain + + Misc. corrections in ti/. + + * Makefile.am (SUBDIRS): Don't deliver ti/ to students. + * ti/ti.hh: Remove, and merge into... + * ti/ti.cc: ...this file. + Aesthetic changes w.r.t. indentation and line breaks. + (backend_havm, backend_asm): Add an extra argument to pass a + misc::error object. + Use this error object, instead of manipulating std::cerr and + exit() directly. + (main): Adjust calls to backend_havm and backend_asm. + Don't explicitly return 0, as C++ does it for us. + * ti/tiopts.hh: Add a Doxygen header. + Aesthetic changes. + Move implementation-only related headers inclusions... + * ti/tiopts.cc: ...here. + Add a Doxygen header. + * ti/tiopts.hxx: Add a Doxygen header. + Include "tiopts.hh". + * ti/fork.hh: Fix Doxygen header. + Move implementation-only related headers inclusions... + * ti/fork.cc: ...here. + Add a Doxygen header. + Use C++ headers instead of C ones. + * ti/fork.hxx: Add a Doxygen header. + Include "fork.hh". + (Fork::is_parent, Fork::is_child): Simplify return values. + * ti/Makefile.am: Adjust comments. + (AM_CPPFLAGS): Don't add $(BOOST_CPPFLAGS) twice. + (dist_ti_SOURCES): Remove ti.hh. + (ti_LDFLAGS): New. + Set to `-static'. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2853 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-09 Roland Levillain + + * src/stc.cc: Aesthetic changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2852 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-09 Roland Levillain + + Forbid spaces and non-terminal newlines in evalexp++ inputs. + + * bistromatig/evalexp++.tig (get_next_char): Move function... + * bistromatig/io.tih: ...here. + * bistromatig/evalexp++.tig (eat): Use getc() instead of + get_next_char(). + Handle "\n" properly. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2851 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-09 Yann Grandmaßtre + + Add front end ti C++. + + * Makefile.am (SUBDIRS): Add directory ti. + * configure.ac: Configure ti/Makefile. + * ti/Makefile.am: New. + * ti/fork.cc, ti/fork.hh, ti/fork.hxx: New. + Simple C++ wrapper for fork. + * ti/tiopts.cc, ti/tiopts.hh, ti/tiopts.hxx: New. + Getopts for ti which use libargp. + * ti, ti/ti.cc, ti/ti.hh: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2850 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-09 Nicolas Teck + + Remove extra spaces in bistromatig tests. + + * bistromatig/tests/simplemathic/add/add_simple_long.in, + * bistromatig/tests/simplemathic/add/add_simple_medium.in, + * bistromatig/tests/simplemathic/add/add_simple_short.in, + * bistromatig/tests/simplemathic/div/div_simple_long.in, + * bistromatig/tests/simplemathic/div/div_simple_medium.in, + * bistromatig/tests/simplemathic/div/div_simple_short.in, + * bistromatig/tests/simplemathic/mul/mul_simple_long.in, + * bistromatig/tests/simplemathic/mul/mul_simple_medium.in, + * bistromatig/tests/simplemathic/mul/mul_simple_short.in, + * bistromatig/tests/simplemathic/sub/sub_simple_long.in, + * bistromatig/tests/simplemathic/sub/sub_simple_medium.in, + * bistromatig/tests/simplemathic/sub/sub_simple_short.in: + Here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2849 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-08 Roland Levillain + + Speed up (a bit) the multiplication of bigints. + + * bistromatig/bigint.tih (bigint_mul): Remove a superfluous + assignment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2848 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-08 Roland Levillain + + Add the multiplication of nonnegative bigints. + + * bistromatig/bigint.tih: Credit D. Knuth. + (bigint_mul): New function. + * bistromatig/mp-mul.tig: New. + * bistromatig/Makefile.am (drivers): Add mp-mul.tig. + (mp_mul_dependencies): New variable. + (mp-mul-mips.s, mp-mul-ia32.s): New targets. + Depend on $(mp_mul_dependencies). + (mp_mul, check_mp_mul_dependencies): New variables. + (check-mp-mul): New (phony) target. + Depend on $(check_mp_mul_dependencies). + (check): Depend on check-mp-mul. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2847 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-08 Roland Levillain + + * bistromatig/bigint.tih (bigint_negate): Simplify. Suggested by Akim Demaille . + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2846 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-08 Roland Levillain + + Simplify the multiple-precision addition of the Bistromatig. + + * bistromatig/bigint.tih (bigint_add): Simplification the + computation of digits and carries. + Adjust comments. + (bigint_sub): Adjust comments as well. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2845 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-07 Roland Levillain + + Exercise the subtraction of bigints. + + * bistromatig/Makefile.am (drivers): Add mp-sub.tig. + (mp_sub_dependencies): New variables. + (mp-sub-mips.s, mp-sub-ia32.s): New targets. + Depend on $(mp_sub_dependencies). + (mp_sub, check_mp_sub_dependencies): New variables. + (check-mp-sub): New target. + (check): Depend on check-mp-sub. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2844 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-07 Roland Levillain + + Add the subtraction of nonnegative bigints. + + * bistromatig/bigint.tih (bigint_sub): New function. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2843 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-07 Roland Levillain + + Add a greater-or-equal comparison operation on bigints. + + * bistromatig/bigint.tih (bigint_ge): New function. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2842 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-07 Roland Levillain + + Add a negation operation on bigint. + + * bistromatig/bigint.tih (bigint_negate): New function. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2841 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-07 Roland Levillain + + Add a deep-copy operation on bigints. + + * bistromatig/bigint.tih (bigint_clone): New function. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2840 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-07 Roland Levillain + + Add operations on signs. + + * bistromatig/bigint.tih (internal_check_sign, bigint_is_null) + (bigint_is_nonnegative, bigint_is_nonpositive) + (bigint_is_positive, bigint_is_negative): + New functions. + (bigint_add): Use bigint_is_nonnegative(lhs) in preconditions. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2839 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-07 Roland Levillain + + Misc. fixes in bistromatig/bigint.tih. + + * bistromatig/bigint.tih (bigint_make): Reindent. + (bigint_print): Typo in comment. + (bigint_add): Update header comment. + Reindent. + Fix comment in invariant. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2838 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-07 Roland Levillain + + Have error management routines print their messages on stderr. + + * bistromatig/error.tih (error, internal_error): Print on the + standard error, not the standard ouput. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2837 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-07 Roland Levillain + + Add a driver for radix-10 multiple-precision additions. + + * bistromatig/mp-r10-add.tig: New. + * bistromatig/Makefile.am (drivers): Add mp-r10-add.tig. + (mp_r10_add_dependencies): New variable. + (mp-r10-add-mips.s, mp-r10-add-ia32.s): Depend on + $(mp_r10_add_dependencies). + (mp_r10_add): New variable. + (check_mp_r10_add_dependencies): New variable. + (check-mp-r10-add): New target. + Depend on $(check_mp_r10_add_dependencies). + (check): Depend on check-mp-r10-add. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2836 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-07 Roland Levillain + + Improve dependencies in bistromatig/Makefile.am's check targets. + + * bistromatig/Makefile.am + (check_evalexpxx_dependencies, check_mp_add_dependencies): + New variables. + (check-evalexpxx): Depend on $(check_evalexpxx_dependencies). + (check-mp-add): Depend on $(check_mp_add_dependencies). + * bistromatig/mp-add.tig: Typo in comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2835 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-07 Roland Levillain + + Make bistromatig/mp-add more modular and handle dependencies. + + * bistromatig/mp-add.tig Move bigint-related code... + * bistromatig/bigint.tih: ...here (new file). + * bistromatig/Makefile.am (drivers): New variable. + Use it instead of $(dist_noinst_DATA). + (dist_noinst_DATA): Adjust. + (evalexpxx_dependencies): New variable. + Populate bool.tih, error.tih, io.tih and sugar.tih. + (evalexp++-mips.s, evalexp++-ia32.s): Depend on + $(evalexpxx_dependencies). + (mp_add_dependencies): New variable. + Populate with bigint.tih, bool.tih, error.tih, io.tih and + math.tih. + (mp-add-mips.s, mp-add-ia32.s): Depend on $(mp_add_dependencies). + (dist_noinst_DATA): Add bigint.tih, bool.tih, error.tih, io.tih, + math.tih and sugar.tih. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2834 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-05 Roland Levillain + + Update copyright dates in version.cc.in. + + * src/version.cc.in (program_doc): Add 2008. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2833 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-05 Roland Levillain + + Fix (hopefully) the code generated by the IA-32 back-end for the division operation when operands are negative. + + * src/target/ia32/gas-assembly.cc (binop_build): Replace + instruction `xor %edx, %edx' by instruction `cltd' before + executing `idivl' in the case of a division. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2832 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-05 Roland Levillain + + Regen tests outputs. + + * tests/good/Makefile.am: Regen. + * tests/good/division-with-negative-operands.-e.s, + * tests/good/division-with-negative-operands.-e.u.s, + * tests/good/division-with-negative-operands.err, + * tests/good/division-with-negative-operands.hir, + * tests/good/division-with-negative-operands.hpr, + * tests/good/division-with-negative-operands.lir, + * tests/good/division-with-negative-operands.lpr, + * tests/good/division-with-negative-operands.out, + * tests/good/division-with-negative-operands.s, + * tests/good/division-with-negative-operands.sta, + * tests/good/division-with-negative-operands.u.s: + New (generated outputs). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2831 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-05 Roland Levillain + + Exercise the division of negative integers. + + * tests/good/division-with-negative-operands.tig: New test. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2830 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-05 Roland Levillain + + Credit Akim in ChangeLog for r2826. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2829 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-05 Roland Levillain + + Factor common code using imported declarations. + + * bistromatig/bool.tih, + * bistromatig/error.tih, + * bistromatig/io.tih, + * bistromatig/math.tih, + * bistromatig/sugar.tih: + New. + Use them... + * bistromatig/evalexp++.tig, bistromatig/mp-add.tig: + ...here, to factor shared code. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2828 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-05 Roland Levillain + + * bistromatig/Makefile.am (check-mp-add): Don't hide actions. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2827 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-05 Roland Levillain + + Introduce concat3, concat4, concat5 in bistromatig/. + + * bistromatig/evalexp++.tig (concat3, concat4, concat5): New + functions. + Use them... + (eat, factor): ...here, instead of multiple calls to concat. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2826 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-04 Roland Levillain + + Distribute the FreeBSD runtime. + + * src/target/ia32/Makefile.am (dist_noinst_DATA): + Add runtime-freebsd.s. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2825 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-04 Roland Levillain + + Polish evalexp++. + + * bistromatig/evalexp++.tig: Update header. + Aesthetic changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2824 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-04 Roland Levillain + + Some more simplifications in bistromatig/Makefile.am. + + * bistromatig/Makefile.am (nolimips): New variable. + Use it... + (evalexpxx, mp_add) [!IA32_GNU_LINUX]: + ...here, to simplify these variables. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2823 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-04 Roland Levillain + + Add a multiple-precision addition in bistromatig/. + + * bistromatig/mp-add.tig: New. + * bistromatig/Makefile.am (dist_noinst_DATA): Add mp-add.tig. + (mp_add): New variable. + [IA32_GNU_LINUX]: Set to `./mp-add-ia32'. + [!IA32_GNU_LINUX]: Set to `nolimips -l nolimips -Ne mp-add-mips.s'. + (check-mp-add): New (phony) target. + (check): Depend on check-mp-add. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2822 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-04 Roland Levillain + + Factor bistromatig/Makefile.am a bit. + + * bistromatig/Makefile.am (targets): Compute variable from + $(dist_noinst_DATA). + (CLEANFILES): Compute it from $(targets) and $(dist_noinst_DATA). + (debug): New (phony) target. + (evalexp++-mips.s, evalexp++-ia32.s, evalexp++-ia32): + Remove and replace these targets by... + (%-mips.s, %-ia32.s, %-ia32): ...these pattern rules. + (check): Rename target as... + (check-evalexpxx): ...this. + (check): New target, depending on check-evalexpxx. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2821 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-04 Nicolas Teck + + Add simple tests for evalexp++. + + * bistromatig/tests/simplemathic/add/add_simple_long.in: New. + * bistromatig/tests/simplemathic/add/add_simple_long.out: New. + * bistromatig/tests/simplemathic/add/add_simple_medium.in: New. + * bistromatig/tests/simplemathic/add/add_simple_medium.out: New. + * bistromatig/tests/simplemathic/add/add_simple_short.in: New. + * bistromatig/tests/simplemathic/add/add_simple_short.out: New. + * bistromatig/tests/simplemathic/add: New. + * bistromatig/tests/simplemathic/cplx/simple_cplx_long_1.in: New. + * bistromatig/tests/simplemathic/cplx/simple_cplx_long_1.out: New. + * bistromatig/tests/simplemathic/cplx/simple_cplx_long_2.in: New. + * bistromatig/tests/simplemathic/cplx/simple_cplx_long_2.out: New. + * bistromatig/tests/simplemathic/cplx/simple_cplx_medium_1.in: New. + * bistromatig/tests/simplemathic/cplx/simple_cplx_medium_1.out: New. + * bistromatig/tests/simplemathic/cplx/simple_cplx_medium_2.in: New. + * bistromatig/tests/simplemathic/cplx/simple_cplx_medium_2.out: New. + * bistromatig/tests/simplemathic/cplx/simple_cplx_short_1.in: New. + * bistromatig/tests/simplemathic/cplx/simple_cplx_short_1.out: New. + * bistromatig/tests/simplemathic/cplx/simple_cplx_short_2.in: New. + * bistromatig/tests/simplemathic/cplx/simple_cplx_short_2.out: New. + * bistromatig/tests/simplemathic/cplx: New. + * bistromatig/tests/simplemathic/div/div_simple_long.in: New. + * bistromatig/tests/simplemathic/div/div_simple_long.out: New. + * bistromatig/tests/simplemathic/div/div_simple_medium.in: New. + * bistromatig/tests/simplemathic/div/div_simple_medium.out: New. + * bistromatig/tests/simplemathic/div/div_simple_short.in: New. + * bistromatig/tests/simplemathic/div/div_simple_short.out: New. + * bistromatig/tests/simplemathic/div: New. + * bistromatig/tests/simplemathic/mul/mul_simple_long.in: New. + * bistromatig/tests/simplemathic/mul/mul_simple_long.out: New. + * bistromatig/tests/simplemathic/mul/mul_simple_medium.in: New. + * bistromatig/tests/simplemathic/mul/mul_simple_medium.out: New. + * bistromatig/tests/simplemathic/mul/mul_simple_short.in: New. + * bistromatig/tests/simplemathic/mul/mul_simple_short.out: New. + * bistromatig/tests/simplemathic/mul: New. + * bistromatig/tests/simplemathic/sub/sub_simple_long.in: New. + * bistromatig/tests/simplemathic/sub/sub_simple_long.out: New. + * bistromatig/tests/simplemathic/sub/sub_simple_medium.in: New. + * bistromatig/tests/simplemathic/sub/sub_simple_medium.out: New. + * bistromatig/tests/simplemathic/sub/sub_simple_short.in: New. + * bistromatig/tests/simplemathic/sub/sub_simple_short.out: New. + * bistromatig/tests/simplemathic/sub: New. + * bistromatig/tests/simplemathic: New. + * bistromatig/tests: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2820 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-04 Roland Levillain + + Improve error management in evalexp++. + + * bistromatig/evalexp++.tig (internal_error): New function. + Use it... + (Exp.accept) + (Visitor.visitIntExp) + (Visitor.visitUnaryMinus) + (Visitor.visitBinaryExp) + (Evaluator.visitBinaryExp): + ...here, instead of `error'. + (eat, factor): Output more explicit error messages. + (Evaluator.visitBinaryExp): Simplify the division-by-zero case. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2819 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-04 Nicolas Teck + + Handle divide by zero error in evalexp++.. + + * bistromatig/evalexp++.tig: Here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2818 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-03 Akim Demaille + + Comment changes. + + * bistromatig/Makefile.am: here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2817 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-03 Akim Demaille + + Fix nolimips interface. + + * bistromatig/Makefile.am: Don't use = for short options. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2816 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-03 Roland Levillain + + Rename bistroomatig as evalexp++. + + * bistromatig/bistroomatig.tig: Rename as... + * bistromatig/evalexp++.tig: ...this. + * bistromatig/Makefile.am: s/bistroomatig/evalexp++/g + Adjust. + (bistroomatig): Rename variable as... + (evalexpxx): ...this. + (evalexp++-mips.s, evalexp++-ia32.s): Rewrite actions. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2815 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-03 Roland Levillain + + * bistromatig/bistroomatig.tig: No longer pretty-print the AST. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2814 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-03 Roland Levillain + + Fix src/target/ia32/Makefile.am. + + * src/target/ia32/Makefile.am (runtime-gnu-linux.cc): Typo in the + generation of runtime-gnu-linux.cc.tmp. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2813 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-02 Roland Levillain + + FIX conditional SUPPORTED_IA32. + + * configure.ac (SUPPORTED_IA32): Use `\|' instead of `|' in plain + grep. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2812 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-02 Roland Levillain + + Complete the Simple Tiger Compiler. + + * src/stc.cc: Get the runtime, and concatenate it to the generated + instructions. + Pass the result to gcc, so as to assemble and link the code. + * configure.ac (IA32_FREEBSD, SUPPORTED_IA32): New conditionals. + Use them... + * src/Makefile.am: ...here. + (dist_stc_SOURCES): Add stc-runtime.cc. + (STC_RUNTIME): New variable. + (CLEANFILES): Add stc-runtime.cc. + (stc-runtime.cc): New target. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2811 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-02 Roland Levillain + + Rename the GNU/Linux (default) runtime. + + * src/target/ia32/runtime.s: Rename as... + * src/target/ia32/runtime-gnu-linux.s: ...this. + * src/target/ia32/Makefile.am + (runtime.cc): Rename target as... + (runtime-gnu-linux.cc): ...this. + Use implicit variables. + Adjust. + (dist_noinst_DATA, nodist_libtarget_ia32_la_SOURCES, CLEANFILES): + Likewise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2810 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-02 Roland Levillain + + * build-aux/monoburg++.in: Actually remove temporary files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2809 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-02 Roland Levillain + + Give better names to the Bistromatig's tokens. + + * bistromatig/bistroomatig.tig: + s/tok_times/tok_star/. + s/tok_div/tok_slash/. + Suggested by Akim Demaille . + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2808 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-02 Roland Levillain + + Start a Simple Tiger Compiler (stc) for the .tig rush. + + * src/stc.cc: New. + * src/Makefile.am (bin_PROGRAMS): Add stc. + (dist_stc_SOURCES, stc_LDADD, stc_LDFLAGS): New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2807 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-12-02 Roland Levillain + + Add a Tiger runtime for FreeBSD on IA-32. + + * src/target/ia32/runtime-freebsd.s: New. + Generated from src/target/tiger-runtime.c. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2806 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-11-30 Roland Levillain + + Add FIXMEs in dev/. + + * dev/ast-gen.mk, + * dev/Makefile.am: + Here. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2805 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-11-30 Roland Levillain + + Add some option management to `bootstrap'. + + * bootstrap: Here. + Handle option -h, --help and -m, --make. + Don't run `make' at the end of the script unless option -m, --make + is passed. + (usage): New function. + (run_make_p): New variable. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2804 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-11-30 Roland Levillain + + * configure.ac: Use AC_CONFIG_MACRO_DIR, as advised by libtoolize. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2803 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-11-30 Roland Levillain + + Remove a workaround for a bug in the object desugarer. + + * bistromatig/Makefile.am (bistroomatig1): Remove target + (bistroomatig-mips.s, bistroomatig-ia32.s): Adjust. + (CLEANUP): Likewise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2802 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-11-30 Roland Levillain + + Have the object renamer preserve type information. + + * src/type/named.hh, src/type/named.hxx (type::Named::name_set): + New accessor. + * src/object/renamer.cc (Renamer::operator() (ast::TypeDecs&)): + Update type::Named instances attached to ast::TypeDec nodes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2801 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-11-30 Roland Levillain + + New task: raw-object-desugar. + + * src/object/tasks.hh, src/object/tasks.cc (raw_object_desugar): + New task. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2800 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-11-27 Roland Levillain + + Rename the Automake conditional IA32 as IA32_GNU_LINUX. + + * configure.ac: Here. + Restrict the condition to IA32 hosts running GNU/Linux. + * bistromatig/Makefile.am, + * tcsh/python/Makefile.am: + Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2799 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-11-27 Roland Levillain + + Have the Bistromatig work on non GNU/Linux-IA32 hosts. + + * bistromatig/Makefile.am (targets): New. + Have... + (all): ...this target depend on it. + (bistroomatig-mips.s): New target. + (bistroomatig.s, bistroomatig): Rename targets as... + (bistroomatig-ia32.s, bistroomatig-ia32): ...these. + Disable them when the IA32 conditional is false. + (CLEANFILES): Adjust. + (bistroomatig): New variable. + Use it... + (check): ...here, to run the best (fastest) alternative. + Depend on $(targets). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2798 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-11-27 Roland Levillain + + Start a reference (OO) Bistromatig (``Bistromathic in Tiger''). + + * bistromatig/: New directory. + * bistromatig/bistroomatig.tig: New. + Largely inspired from tests/good/evalexp.tig and + tests/object-good/visitor.tig. + * bistromatig/Makefile.am: New. + * Makefile.am (SUBDIRS): Add bistromatig. + * configure.ac: Configure bistromatig/Makefile. + * dev/stagize: Don't give away the bistromatig/ directory. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2797 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-09-07 Roland Levillain + + Properly generate ast/visitor.hh w.r.t. lists of concrete declarations. + + * dev/ast-visitor-gen (dec_subclasses): Rename as... + (concrete_decs): ...this. + Populate this list by consulting node.concrete instead of + node.name. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2796 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-08-05 Roland Levillain + + Use a uniform naming scheme for tasks. + + * src/task/tasks.hh, src/task/tasks.cc: + s/tasks_order_list/tasks_selection/ + s/tasks_time_report/time_report/ + * src/parse/tasks.hh, src/parse/tasks.cc: + s/print_search_path/library_display/ + * src/bind/tasks.hh, src/bind/tasks.cc (bind): Rename this task + as... + (bindings-compute): ...this. + s/bind/bindings_compute/ + (bound): Adjust dependencies. + * src/callgraph/tasks.hh (callgraph-compute): Adjust dependencies. + * src/object/tasks.hh, src/object/tasks.cc (object-bind): Rename + this task as... + (object-bindings-compute): ...this. + s/object_bind/object_bindings_compute/ + s/object_types_check/object_types_compute/ + (object-types-compute): Adjust dependencies. + * src/type/tasks.hh (types-compute): Adjust dependencies. + * src/overload/tasks.hh, src/overload/tasks.cc (overfun-bind): + Rename this task as... + (overfun-bindings-compute): ...this. + s/overfun_bind/overfun_bindings_compute/ + s/overfun_types_check/overfun_types_compute/ + (overfun-types-compute): Adjust dependencies. + * src/canon/tasks.hh, src/canon/tasks.cc: + s/canonicalize/canon_compute/ + s/make_traces/traces_compute/ + s/trace_trace_p/traces_trace_p/ + * src/target/tasks.hh, src/target/tasks.cc: + s/instruction_selection/inst_compute/ + s/instructions_display/inst_display/ + s/instructions_debug_p/inst_debug_p/ + * src/regalloc/tasks.hh, src/regalloc/tasks.cc: + s/_coalesce_disable_p/asm_coalesce_disable_p/ + s/trace_p/asm_trace_p/ + s/asm_dummy/asm_display/ + + * tests/tc-check.in (bindings_check_one, bindings_check) + (renaming_check, load_tests): Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2795 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-07-31 Roland Levillain + + Update more CCMP URLs. + + * build-aux/leopard.el, dev/tc.texi, src/doc.hh: + s|~akim/compil|~akim/ccmp| + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2794 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-07-31 Roland Levillain + + Follow g++ 4.3 advice. + + * src/type/named.cc (type::Named::dump): Add braces around inner + `if' to avoid (visual) ambiguity w.r.t. a dangling `else'. + * src/regalloc/color.cc (regalloc::Color::coalesce): Likewise with + operators `&&' and `||'. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2793 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-07-31 Roland Levillain + + Add missing inclusions of standard headers. + + * src/tc.cc: Include `cstdlib' for `exit()'. + * src/task/task-register.cc: Add `cstring' for `memset()'. + * src/object/libobject.cc, src/object/tasks.cc, + * src/desugar/libdesugar.cc, src/inlining/libinlining.cc, + * src/target/cpu.hh: Include `memory' for std::auto_ptr. + * src/task/int-task.cc, src/parse/scantiger.ll, + * src/regalloc/color.cc: Include `climits' for `INT_MAX'. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2792 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-07-31 Roland Levillain + + Update installation URL for documentation. + + * configure.ac, NEWS: Version 1.25a. + * Makefile.am (install-doc, install-doc-remote): + s|www/compil|www/ccmp| + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2791 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-05-19 Roland Levillain + + Version 1.25, for 2010-tc-9.0. + + * configure, NEWS: Version 1.25. + * lib/misc/escape.cc (misc::escaped::escape_): Desugar `\a' + escapes in literal strings to their hexadecimal counterparts. + * lib/misc/test-escape.cc: Adjust. + * tests/good/mini-morpho.hpr, + * tests/good/mini-morpho.lpr, + * tests/good/string-backslash-octal.-e.s, + * tests/good/string-backslash-octal.-e.u.s, + * tests/good/string-backslash-octal.hir, + * tests/good/string-backslash-octal.lir, + * tests/good/string-backslash-octal.s, + * tests/good/string-backslash-octal.u.s, + * tests/good/string-backslash-tortured.-e.s, + * tests/good/string-backslash-tortured.-e.u.s, + * tests/good/string-backslash-tortured.hir, + * tests/good/string-backslash-tortured.lir, + * tests/good/string-backslash-tortured.s, + * tests/good/string-backslash-tortured.u.s: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2790 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-03-17 Nicolas Teck + + Update tc-check for Object Type Checking. * tests/tc-check.in: Move the object type checking to an optional stage (T114). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2789 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-03-10 Roland Levillain + + Version 1.24, for 2010-tc-4.0. + + * configure.ac, NEWS: Version 1.24. + * dev/stagize: Handle the distribution of the `transform' module. + * src/parse/Makefile.am: Add a FIXME. + * src/object/desugar-visitor.cc: Typo in comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2788 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-02-25 Roland Levillain + + Version 1.23, for 2010-tc-2.0. + + * configure.ac, NEWS: Version 1.23. + * src/ast/fwd.hh, + * src/parse/parsetiger.cc: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2787 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-02-25 Roland Levillain + + Last-minute changes before the release of 2010-tc-2.0. + + * src/parse/scantiger.ll: Use the stagize's `scan' tag to properly + hide the regexps. + * src/parse/parsetiger.yy: Hide ruledec-related things. + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx: Use the + proper tag kind. + * src/ast/ast.yml: Add a forward declaration of RuleDec to pacify + the compiler. + * tcsh/python/Makefile.am, tcsh/ruby/Makefile.am (AM_CPPFLAGS): + Append $(BOOST_CPPFLAGS). + * dev/ast-gen.mk: Aesthetic change. + * dev/stagize: Catch up with the new scheme of the Python-based + generators. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2786 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-02-14 Benoßt Sigoure + + Add a missing CPPFLAG to use Boost. + + * lib/misc/Makefile.am (AM_CPPFLAGS): Here. + Issue reported by Yann Grandmaitre. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2785 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-01-23 Benoßt Sigoure + + Use my Boost.m4. + + * Makefile.am, + * build-aux/Makefile.am (boost-m4-up): New. + * build-aux/boost.m4: Replace with my boost.m4. + * configure.ac: Invoke the proper macros to check for all the + Boost features we use. + * src/callgraph/Makefile.am (libcallgraph_la_LDFLAGS) + (libcallgraph_la_LIBADD): New. + * src/inlining/Makefile.am (libinlining_la_LDFLAGS) + (libinlining_la_LIBADD): New. + * src/liveness/Makefile.am (libliveness_la_LDFLAGS) + (libliveness_la_LIBADD): New. + * src/tc.mk (AM_CPPFLAGS): Add BOOST_CPPFLAGS. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2784 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-01-12 Benoßt Sigoure + + Don't fail if xsltproc is not installed. * build-aux/bison++.in: Fix a typo (missing `$') in `rm' and do not try to `mv' a file that couldn't be produced if xsltproc is not installed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2783 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-01-11 Akim Demaille + + Update cloner generation. + + * src/ast/ast.yml (clonerlib): New. + * dev/ast-cloner-gen: Use it. + * src/astclone/cloner.hh, src/astclone/cloner.cc: Regen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2782 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-01-11 Akim Demaille + + Simplify the installation of the needed programs. + + * dev/install-bison: New. + * dev/install-generic: New. + * dev/install-ghc-osx: New. + * dev/install-havm: New. + * dev/install-monoburg: New. + * dev/install-nolimips: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2781 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2008-01-11 Akim Demaille + + CPP guards fix. + + * src/astclone/cloner.hxx: here. + * src/type/record.cc: Space changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2780 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-22 Roland Levillain + + Address some warnings from Doxygen. + + * configure.ac, NEWS: Version 1.22a. + * src/transform/generic-rewriter.hxx, + * src/transform/generic-traversal.hxx: + Fix Doxygen file headers. + * src/transform/metavar-pool.hh (has, get) + * src/object/desugar-visitor.hh (variant_exp, dispatch_switch): + Fix Doxygen documentation. + * dev/ast-readme-gen (print_node_rec): Typo in comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2779 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-22 Roland Levillain + + Regen AST-related files. + + * src/ast/ast.dot, src/ast/ast-nodes.mk: + New (generated) files. + * src/ast/array-exp.cc, src/ast/array-exp.hh, + * src/ast/array-ty.cc, src/ast/array-ty.hh, + * src/ast/assign-exp.cc, src/ast/assign-exp.hh, + * src/ast/ast.hh, + * src/ast/break-exp.cc, src/ast/break-exp.hh, + * src/ast/call-exp.cc, src/ast/call-exp.hh, + * src/ast/cast-exp.cc, src/ast/cast-exp.hh, + * src/ast/cast-var.cc, src/ast/cast-var.hh, + * src/ast/class-ty.cc, src/ast/class-ty.hh, + * src/ast/dec.hh, + * src/ast/decs-list.cc, src/ast/decs-list.hh, + * src/ast/escapable.hh, + * src/ast/exp.hh, + * src/ast/field-init.cc, src/ast/field-init.hh, + * src/ast/field-var.cc, src/ast/field-var.hh, + * src/ast/field.cc, src/ast/field.hh, + * src/ast/for-exp.cc, src/ast/for-exp.hh, + * src/ast/function-dec.cc, src/ast/function-dec.hh, + * src/ast/if-exp.cc, src/ast/if-exp.hh, + * src/ast/int-exp.cc, src/ast/int-exp.hh, + * src/ast/let-exp.cc, src/ast/let-exp.hh, + * src/ast/metavar-exp.cc, src/ast/metavar-exp.hh, + * src/ast/metavariable.hh, + * src/ast/method-call-exp.cc, src/ast/method-call-exp.hh, + * src/ast/method-dec.cc, src/ast/method-dec.hh, + * src/ast/name-ty.cc, src/ast/name-ty.hh, + * src/ast/nil-exp.cc, src/ast/nil-exp.hh, + * src/ast/object-exp.cc, src/ast/object-exp.hh, + * src/ast/op-exp.cc, src/ast/op-exp.hh, + * src/ast/record-exp.cc, src/ast/record-exp.hh, + * src/ast/record-ty.cc, src/ast/record-ty.hh, + * src/ast/rule-dec.cc, src/ast/rule-dec.hh, + * src/ast/seq-exp.cc, src/ast/seq-exp.hh, + * src/ast/simple-var.cc, src/ast/simple-var.hh, + * src/ast/string-exp.cc, src/ast/string-exp.hh, + * src/ast/subscript-var.cc, src/ast/subscript-var.hh, + * src/ast/ty.hh, src/ast/typable.hh, + * src/ast/type-constructor.hh, src/ast/type-constructor.hxx, + * src/ast/type-dec.cc, src/ast/type-dec.hh, + * src/ast/var-dec.cc, src/ast/var-dec.hh, + * src/ast/while-exp.cc, src/ast/while-exp.hh: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2778 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-22 Roland Levillain + + Have AST nodes C++ files be regenerated automatically. + + * src/ast/Makefile.am (ast_nodes): New. + Set to $(AST_NODES). + Used... + * dev/ast-gen.mk: ...here. + More documentation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2777 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-22 Roland Levillain + + Fix uses of algorithm.hh. + + * src/ast/ast.yml (misc_algorithm): New parameter. + Set to misc/algorithm.hh. + Use it... + * dev/ast-nodes-gen (print_includes): ...here, to be generic + w.r.t. the location of algorithm.hh. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2776 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-20 Akim Demaille + + Update ignores, by hand. + + * dev/ast-gen.mk: Don't automatically update ignores. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2775 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-20 Akim Demaille + + Regen ast/all.hh. + + * src/ast/all.hh: + Regenerate it. + * src/ast/allty.hh, src/ast/allvar.hh, src/ast/alldec.hh, + * src/ast/allexp.hh: + Delete, useless. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2774 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-20 Akim Demaille + + Update graph generation. + + * dev/ast-graph-gen: Modernize. + * dev/ast-gen.mk: Update its invocation. + Comment out the generation of optional components. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2773 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-20 Akim Demaille + + Info out stderr. + + * dev/tools.py (lazy_overwrite): here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2772 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-20 Akim Demaille + + * src/ast/visitor.hh: Regen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2771 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-20 Akim Demaille + + Don't issue MSVC workarounds here. + + * src/ast/ast.yml (msvc): Set to false. + * dev/ast-visitor-gen: Use it to decide whether this code + is wanted. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2770 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-20 Akim Demaille + + Fix basedir problems. + + In Gostai we don't use an ast/Makefile.am, but ast/ast.mk, included + by the top-level Makefile.am to make it compile faster. Adjust. + * src/ast/Makefile.am (ast_basedir): New. + * dev/ast-gen.mk: Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2769 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-20 Akim Demaille + + Fix bootstrap. + + * bootstrap: Catch up with ast-nodes-mk-gen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2768 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-19 Akim Demaille + + Factor ast Makefile. + + * dev/ast-gen.mk: New. + * src/ast/Makefile.am: Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2767 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-19 Akim Demaille + + Update ignores. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2766 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-19 Akim Demaille + + Update dev/ tools. + + * dev/ast-fwd-gen, dev/ast-nodes-mk-gen: Update from Gostai. + * src/ast/ast.yml (auxlib, ast_basedir): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2765 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-18 Akim Demaille + + Update visitor generation. + + * dev/ast-visitor-gen, dev/ast.py: Update from Gostai. + * src/ast/ast.yml (visitor_hh_prologue): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2764 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-18 Akim Demaille + + PrettyPrinter generation. + + * dev/ast-pretty-printer-gen: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2763 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-18 Akim Demaille + + Upgrade ast-*. + + * dev/tools.py: output the diff when updating. + * dev/ast-nodes-gen: Output generated headers first. + Play less with stdout. + Use lazy_install. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2762 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-18 Akim Demaille + + Space/comment changes. + + * lib/misc/file-library.hh, src/ast/ast.yml, src/ast/decs-list.cc, + * src/parse/scantiger.ll: + here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2761 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-18 Akim Demaille + + More ast-*. + + * dev/ast-all-gen, dev/ast-default-visitor-gen, dev/ast-ignores-gen: + New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2760 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-17 Guillaume Duhamel + + Fix call for bison in bison++.in. + + * build-aux/bison++.in: Fix call for bison in html generation. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2759 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-12 Roland Levillain + + Fix 2010-tc-1.0. + + * lib/misc/unique.hh, lib/misc/unique.hxx (~unique): Add a virtual + dtor. + * lib/misc/symbol.hh, lib/misc/symbol.cc (~symbol): Likewise. + * lib/misc/unique.hxx, lib/misc/symbol.hxx: Restore stagize marks. + * dev/stagize: Fix the cleanup of src/parse/. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2758 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-10 Yann Grandmaßtre + + Add misc::unique, a generalization of misc::symbol. + + * lib/misc/Makefile.am: Add unique{hh,hxx} for libmisc. + * lib/misc/symbol.cc, lib/misc/symbol.hh, lib/misc/symbol.hxx: + misc::symbol inherit from misc::unique. + * lib/misc/unique.hh, lib/misc/unique.hxx: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2757 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-10 Roland Levillain + + Version 1.22, for 2010-tc-1.0. + + * configure.ac, NEWS: Version 1.22. + * TODO: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2756 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-10 Roland Levillain + + Fix the TC-1 distribution (cont.). + + * dev/stagize: Relauch Flex if needed. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2755 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-10 Roland Levillain + + Regenerate the parser. + + * src/parse/parsetiger.cc: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2754 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-10 Roland Levillain + + Fix the TC-1 distribution. + + * src/parse/libparse.hh, src/parse/libparse.cc, + * src/object/tasks.cc, + * src/object/libobject.hh: Add missing studentize marks. + * src/parse/parsetiger.yy: Likewise. + Use C-style comments for stage-specific pruning. + * dev/studentize_tc.conf: Add mark `scan'. + * src/parse/scantiger.ll: Use mark `scan' to properly prune this + file. + * dev/stagize: Ship module `transform' at TC-4. + Fix pruning of files for the TC-1 distribution. + Make a (more) portable use of mktemp. + * Makefile.am (studir): Turn off the `leopardization'' by default. + * src/tc.mk, + * src/type/libtype.hh, + * tcsh/generate-swig-mk: Escape literal backslashes in here-scripts. + * src/transform/test-transform-tests.cc: + Typos. + * src/Makefile.am: Reindent. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2753 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-08 Benoßt Sigoure + + Add a best-of entry. + + * best-of: Add a new definition for LR parsers. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2752 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-07 Roland Levillain + + Clean up ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2751 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-04 Yann Grandmaßtre + + Update generated files. + + * src/parse/location.hh, src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, src/parse/position.hh: Regenerate. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2750 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-02 Guillaume Duhamel + + Update of bison++.in for generation of parsetiger.xml and parsetiger.html. + + * build-aux/bison++.in: Update for generation of + parsetiger.xml and parsetiger.html adapted from Gostai version. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2749 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-12-01 Roland Levillain + + Improve src/transform/test-voyager on Mac OS X. + + * src/transform/test-voyager.cc (main): Don't use the `assert' + macro with boost::tribool objects, since they don't mix well on + Mac OS X. Use macro `assertion' from libmisc instead. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2748 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-11-22 Roland Levillain + + Add a test to ensure that method calls are not parsed as l-values. + + * tests/object-syntax/: New directory. + Contain tests for Object Tiger with syntax errors. + * tests/object-syntax/method-call-used-as-lvalue.tig: New test. + * tests/mk-Makefile-am (all_tests): Add object-syntax. + Reorder the list of directories for aesthetic purpose. + * tests/object-syntax/Makefile.am: New (generated). + Reported by Quentin Hocquet. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2747 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-11-20 Guillaume Duhamel + + Replace boost foreach into iterator to ast/any-decs.hxx. + + * src/ast/any-decs.hxx: Fix typo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2746 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-11-20 Guillaume Duhamel + + Replace boost foreach into iterator to ast/any-decs.hxx. + + * ast/any-decs.hxx: Apply standard C++ iterator loops. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2745 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-11-18 Yann Grandmaßtre + + Rename `print' methods as `dump'. + + * lib/misc/file-library.cc, lib/misc/file-library.hh, + * lib/misc/file-library.hxx, lib/misc/list.hcc, lib/misc/list.hh, + * lib/misc/path.cc, lib/misc/path.hh, lib/misc/path.hxx, + * lib/misc/scoped-map.hh, lib/misc/scoped-map.hxx, + * src/assem/fragment.cc, src/assem/fragment.hh, + * src/assem/fragment.hxx, src/assem/instr.cc, src/assem/instr.hh, + * src/assem/instr.hxx, src/assem/instrs.cc, src/assem/instrs.hh, + * src/assem/move.hh, src/assem/move.hxx, src/assem/oper.hh, + * src/assem/oper.hxx, src/canon/basic-block.cc, + * src/canon/basic-block.hh, src/canon/basic-block.hxx, + * src/frame/access.cc, src/frame/access.hh, src/parse/tweast.cc, + * src/parse/tweast.hh, src/regalloc/color.cc, + * src/regalloc/color.hh, src/target/cpu.cc, src/target/cpu.hh, + * src/target/target.cc, src/target/target.hh, + * src/temp/identifier.hcc, src/temp/identifier.hh, + * src/temp/libtemp.cc, src/temp/libtemp.hh, src/translate/exp.cc, + * src/translate/exp.hh, src/translate/exp.hxx, + * src/translate/level.cc, src/translate/level.hh, + * src/translate/level.hxx, src/tree/call.cc, src/tree/call.hh, + * src/tree/eseq.cc, src/tree/eseq.hh, src/tree/fragment.cc, + * src/tree/fragment.hh, src/tree/fragment.hxx, + * src/tree/libtree.cc, src/tree/libtree.hh, src/tree/seq.cc, + * src/tree/seq.hh, src/tree/tree.cc, src/tree/tree.hh, + * src/tree/tree.hxx, src/type/array.cc, src/type/array.hh, + * src/type/attribute.cc, src/type/attribute.hh, src/type/attribute.hxx, + * src/type/builtin-types.cc, src/type/builtin-types.hh, + * src/type/class.cc, src/type/class.hh, src/type/field.cc, + * src/type/field.hh, src/type/field.hxx, src/type/function.cc, + * src/type/function.hh, src/type/named.cc, src/type/named.hh, + * src/type/record.cc, src/type/record.hh, src/type/type.hh, + * src/type/type.hxx: Rename print as dump. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2744 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-11-17 Benoßt Sigoure + + Fix distcheck. + + * src/transform/Makefile.am (libtransform_la_SOURCES): Add missing + files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2743 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-11-04 Yann Grandmaßtre + + Fix make check and tc-check with -D_GLIBCXX_DEBUG. + + * lib/misc/scoped-map.hxx, src/inlining/inliner.cc: + Don't compare iterators from different sequences. + * src/inlining/pruner.cc: Don't increment the end iterator + and don't decrement the begin iterator. + * src/object/desugar-visitor.cc, src/translate/translator.cc: + Don't increment the end iterator. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2742 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-26 Roland Levillain + + Factor repetitive code in transform:: using transform/macros.hh. + + * src/transform/macros (TRANSFORM_AST_NODES_WITH_SYMBOLS): New + macro. + (TRANSFORM_APPLY_MACRO): Rename as... + (TRANSFORM_APPLY_MACRO_TO_ACTUAL_NODES): ...this. + Add RuleDecs and RuleDec to the processed names. + * src/transform/matcher.hh, + * src/transform/generic-rewriter.hh, + * src/transform/generic-rewriter.hxx, + * src/transform/rewriter.hh, + * src/transform/rewriter.cc, + * src/transform/generic-traversal.hh, + * src/transform/generic-traversal.hxx: + Use macros TRANSFORM_APPLY_MACRO, TRANSFORM_APPLY_MACRO_TO_ARRAY + and TRANSFORM_AST_NODES_WITH_SYMBOLS from src/transform/macros.hh + to factor repetitive code. + (VISITOR_VISIT_NODE_): Rename macro as... + (VISITOR_VISIT_NODE): ...this. + (VISITOR_VISIT_NODES): Remove macro definition. + Replace its use by TRANSFORM_APPLY_MACRO_TO_ACTUAL_NODES or + TRANSFORM_APPLY_MACRO_TO_ARRAY. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2741 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-26 Roland Levillain + + Centralize macro-based factoring efforts in module transform. + + * src/transform/macros.hh: New file. + Provide a TRANSFORM_APPLY_MACRO_TO_ARRAY macro taking a + ``functor-macro'' as argument and applying it to all AST + classes. + * src/transform/Makefile.am (libtransform_la_SOURCES): Add + macros.hh. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2740 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-26 Roland Levillain + + Rename ast-proxy-visitors-gen as transform-proxy-visitors-gen. + + * dev/ast-proxy-visitors-gen: Rename as... + * dev/transform-proxy-visitors-gen: ...this. + Remove FIXMEs. + * dev/Makefile.am (dist_noinst_SCRIPTS) + * src/transform/Makefile.am: + s/ast-proxy-visitors-gen/transform-proxy-visitors-gen/ + * src/transform/proxy-visitors.hh, + * src/transform/proxy-visitors.hxx: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2739 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-26 Roland Levillain + + Improve Matcher::recurse_collection. + + * src/transform/matcher.cc (recurse_collection): Revamp. + Suggested by Benoßt Sigoure. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2738 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-26 Roland Levillain + + Get rid of the dependency on Boost.Iostreams. + + * src/transform/test-concrete.cc (test_file): Rewrite this + function using standard C++ streams. + * src/transform/Makefile.am (test_concrete_LDADD): Remove + -lboost_iostreams. + * AUTHORS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2737 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-26 Roland Levillain + + Add products of tests/object-good/five-name-spaces.tig. + + * tests/object-good/five-name-spaces.-e.s, + * tests/object-good/five-name-spaces.-e.u.s, + * tests/object-good/five-name-spaces.desugared, + * tests/object-good/five-name-spaces.err, + * tests/object-good/five-name-spaces.hir, + * tests/object-good/five-name-spaces.hpr, + * tests/object-good/five-name-spaces.lir, + * tests/object-good/five-name-spaces.lpr, + * tests/object-good/five-name-spaces.out, + * tests/object-good/five-name-spaces.s, + * tests/object-good/five-name-spaces.sta, + * tests/object-good/five-name-spaces.u.s: + New files (generated). + * tests/object-good/Makefile.am: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2736 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-26 Roland Levillain + + Add a test checking the name spaces introduced for attributes and methods. + + * tests/object-good/five-name-spaces.tig: New test. + * src/bind/binder.hh: Mention the two name spaces introduced + by object constructs in the documentation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2735 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-20 Akim Demaille + + More catch up with Gostai. + + * dev/ast.py: Sort fields, and add new ones. + Cannot check because I don't have the right syck on my Mac, + but looks ok... + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2734 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-19 Roland Levillain + + Regen the interfaces of AST nodes. + + * src/ast/array-exp.hh, src/ast/array-ty.hh, + * src/ast/assign-exp.hh, src/ast/ast.hh, src/ast/break-exp.hh, + * src/ast/call-exp.hh, src/ast/cast-exp.hh, + * src/ast/cast-var.hh, src/ast/class-ty.hh, src/ast/dec.hh, + * src/ast/decs-list.hh, src/ast/escapable.hh, src/ast/exp.hh, + * src/ast/field-init.hh, src/ast/field-var.hh, + * src/ast/field.hh, src/ast/for-exp.hh, + * src/ast/function-dec.hh, src/ast/if-exp.hh, + * src/ast/int-exp.hh, src/ast/let-exp.hh, + * src/ast/metavar-exp.hh, src/ast/metavariable.hh, + * src/ast/method-call-exp.hh, src/ast/method-dec.hh, + * src/ast/name-ty.hh, src/ast/nil-exp.hh, + * src/ast/object-exp.hh, src/ast/op-exp.hh, + * src/ast/record-exp.hh, src/ast/record-ty.hh, + * src/ast/rule-dec.hh, src/ast/seq-exp.hh, + * src/ast/simple-var.hh, src/ast/string-exp.hh, + * src/ast/subscript-var.hh, src/ast/ty.hh, src/ast/typable.hh, + * src/ast/type-constructor.hh, src/ast/type-dec.hh, + * src/ast/var-dec.hh, src/ast/var.hh, src/ast/while-exp.hh: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2733 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-19 Roland Levillain + + * src/ast/fwd.hh: Regen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2732 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-19 Roland Levillain + + Have dev/ast-fwd-gen be closer to Gostai's version. + + * src/ast/ast.yml (fwd_hh_prologue, fwd_hh_epilogue): New. + * dev/ast-fwd-gen: Use them. + Rewrite a bit to catch up with Gostai's version. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2731 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-15 Guillaume Duhamel + + Update dev/ (first part). + + * ast.py: Little change of setting. + * tools.py: New features like banner and clean some lines. + + * ast-cloner-gen, + * ast-fwd-gen, + * ast-graph-gen, + * ast-nodes-gen, + * ast-nodes-mk-gen, + * ast-proxy-visitors-gen, + * ast-visitor-gen, + * transform-all-gen: Update the generator of files with update tools. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2730 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-14 Yann Grandmaßtre + + Rename lib/misc/containers.{hh,hxx} as lib/misc/algorithm.{hh,hxx}. + + * dev/ast-nodes-gen: Change need_misc_containers to + need_misc_algorithm. + * lib/misc/Makefile.am: Include algorithm.{hh,hxx} instead of + containers.{hh,hxx} for libmisc.la. + * lib/misc/containers.hh, lib/misc/containers.hxx: Rename as... + * lib/misc/algorithm.hh, lib/misc/algorithm.hxx: ...this. + * lib/misc/graph.hxx, lib/misc/scoped-map.hxx, + * src/assem/fragments.cc, src/assem/instrs.cc, + * src/assem/visitor.hxx, src/desugar/desugar-visitor.cc, + * src/frame/frame.cc, src/liveness/interference-graph.cc, + * src/parse/tweast.hxx, src/regalloc/color.cc, src/target/cpu.cc, + * src/task/task-register.cc, src/translate/level.cc, + * src/tree/fragment.cc, src/tree/tree.cc, src/tree/visitor.hxx, + * src/type/class.hxx, src/ast/default-visitor.hxx, + * src/parse/parsetiger.yy: Include misc/algorithm.hh + instead of misc/containers.hh + * src/ast/call-exp.cc, src/ast/decs-list.cc, + * src/ast/record-exp.cc, src/ast/record-ty.cc, + * src/ast/seq-exp.cc, src/parse/parsetiger.hh: Regenerate. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2729 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-14 Yann Grandmaßtre + + Update generated files. + + * src/parse/location.hh, src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, src/parse/position.hh: Regenerate. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2728 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-12 Benoßt Sigoure + + Fix a typo. + + * src/bind/binder.hh: s/namespaces/name spaces/. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2727 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-12 Benoßt Sigoure + + Implement a concrete syntax rewriter. + + * build-aux/boost.m4: Take the path to the prefix of Boost in + --with-boost instead of the path to the headers. Substitute + LDFLAGS so that we can link against Boost libs. + * lib/misc/scoped-map.hh: Adjust a couple of comments. + (scoped_map_get): New. + * lib/misc/scoped-map.hxx (scoped_map_get): Implement. + * src/transform/Makefile.am: Add the new files. + * src/transform/concrete-syntax-rewriter.hh: New. + * src/transform/concrete-syntax-rewriter.cc: New. Implementation + with debugging messages disabled. + * src/transform/generic-rewriter.hh, + * src/transform/generic-rewriter.hxx: Handle RuleDec/RuleDecs. + * src/transform/test-concrete.cc: New. + * src/transform/test-transform.cc: Factor some tests to ... + * src/transform/test-transform-tests.cc: ... here. New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2726 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-11 Roland Levillain + + * src/bind/binder.hh: Typo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2725 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-11 Roland Levillain + + * src/ast/pretty-printer.yy: Remove. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2724 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-11 Benoßt Sigoure + + Add a useful typedef. + + * lib/misc/scoped-map.hh (value_type): New type. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2723 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-11 Benoßt Sigoure + + Aesthetic changes. + + * lib/misc/scoped-map.hh, + * src/bind/binder.hh, + * src/transform/bottom-up-rewriter.hh: Improve Doxygen comments and + fix a couple of minor nits. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2722 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-11 Benoßt Sigoure + + Update the generated files. + + * src/ast/rule-dec.cc: New. + * src/ast/rule-dec.hh: New. + * src/ast/rule-dec.hxx: New. + * src/ast/rule-decs.hh: New. + * src/ast/README.student, + * src/ast/README, + * src/ast/fwd.hh, + * src/astclone/cloner.cc, + * src/astclone/cloner.hh, + * src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, + * src/transform/all.cc, + * src/transform/all.hh, + * src/transform/proxy-visitors.hh, + * src/transform/proxy-visitors.hxx: Regenerate. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2721 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-11 Benoßt Sigoure + + Add support for concrete syntax rewrite rules in the frontend. + + * src/ast/alldec.hh: Add an include for RuleDec. + * src/ast/ast.yml (includes_map): Add a RuleDecs. + (RuleDec): New AST node. + * src/ast/default-visitor.hh: Add overloads for RuleDec/RuleDecs. + * src/ast/default-visitor.hxx: Implement the new overloads. + * src/ast/pretty-printer.hh: Add an overload for RuleDec. + * src/ast/pretty-printer.cc: Pretty print the RuleDec. + * src/ast/visitor.hh: Add abstract methods for RuleDec/RuleDecs. + * src/parse/parsetiger.yy (%union): Add ruledec/ruledecs, along + with their %destructor, %printer and %type. + (decs): Adjust. + (RULE, ARROW): New tokens. + (ruledecs, ruledec): New rules. + * src/parse/scantiger.ll: Match and build the new tokens. Kill + a FIXME. + * src/transform/generic-traversal.hh, + * src/transform/generic-traversal.hxx: Add the new AST nodes. + * src/transform/test-combinators.cc: Aesthetic change. + * src/transform/test-transform.cc: Add a simple test using the + new syntax. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2720 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-11 Benoßt Sigoure + + Fix compilation of `transform' tests. + + * src/transform/rewriter.cc: Fix a typo. + * src/transform/test-voyager.cc: Explicitely ask for the + boost::logic::tribool to be converted in bool before testing them. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2719 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-10 Benoßt Sigoure + + Fix various typos. + + * src/ast/any-decs.hh, + * src/ast/function-decs.hh, + * src/ast/method-decs.hh, + * src/ast/type-decs.hh, + * src/ast/var-decs.hh: s/shortand/shorthand/. + * src/transform/rewriter.cc: s/out/our/. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2718 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-10 Roland Levillain + + Fix ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2717 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-10 Roland Levillain + + Fix find_exact. + + * src/transform/find-exact.hh (FindExact): Fix the case where + Exact is not Itself. + * src/transform/sequence.hh (Sequence::super_type): Fix this + typedef. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2716 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-10 Roland Levillain + + Fix the previous patch. + + * src/transform/rewriter.hh: Include missing headers from the + Boost Preprocessor Library. + * src/transform/rewriter.cc (VISITOR_VISIT_NODE_): Fix macro + definition. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2715 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-10 Roland Levillain + + Use The Boost Preprocessor Library to simplify transform::Rewriter. + + * src/transform/rewriter.hh, src/transform/rewriter.cc + (VISITOR_VISIT_NODE_, VISITOR_VISIT_NODES): New macros. + Undefine them at the end of the files. + (operator()): Use VISITOR_VISIT_NODES to write the declarations + and implementation of these operators. + * src/transform/README: New file. + * src/transform/Makefile.am (EXTRA_DIST): Add README. + * src/transform/find-exact.hh, src/transform/generic-traversal.hh: + Fix comments. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2714 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-09 Roland Levillain + + Introduce some visitor combinators, inspired from the work of Joost Visser. + + Rename previous, non-combinator visitors to make room for the new + combinators. + * src/transform/generic-traversal.hh, + * src/transform/generic-traversal.hxx, + * src/transform/bottom-up.hh, + * src/transform/bottom-up.cc: + Rename as... + * src/transform/generic-rewriter.hh, + * src/transform/generic-rewriter.hxx, + * src/transform/bottom-up-rewriter.hh, + * src/transform/bottom-up-rewriter.cc: + ...these. + Adjust. + * src/transform/test-transform.cc: Adjust. + + Add combinators All, Sequence and BottomUp. + * src/transform/visitor.hh, src/transform/visitor.hxx: New. + Interface of visitors and combinators. + * src/transform/generic-traversal.hh, + * src/transform/generic-traversal.hxx: New. + * src/transform/find-exact.hh: New. + Metacode used by transform::GenericTraversal. + Abstract class used to factor the implementation of combinators. + * src/transform/sequence.hh, src/transform/sequence.hxx: New. + Visitor combinator apply two visitor to a node sequentially. + * src/transform/bottom-up.hh, src/transform/bottom-up.cc: New. + Visitor combinator performing a bottom-up traversal of a tree. + * dev/transform-all-gen: New generator. + * dev/Makefile.am (dist_noinst_SCRIPTS): Add transform-all-gen. + * src/transform/all.hh, src/transform/all.cc: New (generated). + * src/transform/all.hxx: New. + Combinator applying a visitor sequentially to the subtrees of a + node. + * src/transform/Makefile.am (BUILT_SOURCES_local): Add all.hh and + all.cc + (EXTRA_DIST): Add transform-all-gen.stamp. + ($(srcdir)/transform-all-gen.stamp) + ($(srcdir)/all.hh, $(srcdir)/all.cc): + New targets. + (libtransform_la_SOURCES): s/generic-traversal/generic-rewriter/g. + s/bottom-up/bottom-up-rewriter/g. + Add visitor.hh, visitor.hxx, all.hh, all.hxx, all.cc, + sequence.hh, sequence.hxx, bottom-up.hh and bottom-up.cc. + * src/transform/test-combinators.cc: New test. + (check_PROGRAMS): Add test-combinators. + (test_combinators_SOURCES, test_combinators_LDADD): New. + + Clean up related files. + * src/ast/Makefile.am: s|\$(srcdir)/ast.yml|\$(ast_dir)/ast.yml|. + * src/ast/visitor.hxx: Fix closing guard. + * src/astclone/Makefile.am: Aesthetic change. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2713 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-09 Roland Levillain + + Use the Boost Preprocessor Library to simplify the interface of transform::Matcher. + + * src/transform/matcher.hh + (VISITOR_VISIT_NODE_, VISITOR_VISIT_NODES): New macros. + Undefine them at the end of the file. + (operator()): Use VISITOR_VISIT_NODES to write most of the + declarations of these operators. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2712 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-09 Roland Levillain + + Use The Boost Preprocessor Library to simplify GenericTraversal. + + * src/transform/generic-traversal.hh, + * src/transform/generic-traversal.hxx: + (VISITOR_VISIT_NODE_, VISITOR_VISIT_NODES): New macros. + Undefine them at the end of the files. + (operator()): Use VISITOR_VISIT_NODES to write the declarations + and implementation of these operators. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2711 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-08 Roland Levillain + + Move AST-related parameters from dev/ast_params.py to the AST nodes description (src/ast/ast.yml). + + * dev/ast_params.py: Remove this file. + Translate its contents into a YAML document... + * src/ast/ast.yml: ...here. + * dev/ast-cloner-gen: Move globals... + * src/ast/ast.yml: ...here. + * dev/ast.py, + * dev/ast-fwd-gen, dev/ast-nodes-gen, dev/ast-graph-gen, + * dev/ast-proxy-visitors-gen, dev/ast-nodes-mk-gen, + * dev/ast-readme-gen, dev/ast-visitor-gen, dev/ast-cloner-gen: + Adjust clients. + * dev/Makefile.am (dist_noinst_SCRIPTS): Remove ast_params.py. + * src/ast/Makefile.am, src/astclone/Makefile.am, + * src/transform/Makefile.am (ast_gen_deps): + Remove $(gen_dir)/ast_params.py. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2710 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-08 Roland Levillain + + Add another test-case in src/tranform. + + * src/transform/test-transform.cc: Add a test. + * src/transform/bottom-up.cc, + * src/transform/generic-traversal.hxx, + * src/transform/rewriter.cc: Typo in comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2709 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-08 Roland Levillain + + Introduce a generic traversal visitor to factor other traversal visitors. + + * src/transform/generic-traversal.hh, + * src/transform/generic-traversal.hxx: New files. + Factor the application of a generic function to a node of an + AST. + * src/transform/bottom-up.hh, src/transform/bottom-up.cc + (BottomUp): Inherit from (GenericTraversal). + (BottomUp::BottomUp, super_type): Adjust. + (operator ()): Remove all visit methods. + (visit_): Adjust. + Make this method public. + Rename as... + (visit): ...this. + * src/transform/Makefile.am (libtransform_la_SOURCES): Add + generic-traversal.hh and generic-traversal.hxx. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2708 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-08 Roland Levillain + + Turn the top-down traversal visitor into a bottom-up one. + + * src/transform/top-down-rewriter.hh, + * src/transform/top-down-rewriter.cc: Rename as... + * src/transform/bottom-up.hh, + * src/transform/bottom-up.cc: ...these. + Adjust header guards. + (TopDownRewriter): Rename as... + (BottomUp): ...this. + (try_match_): Rename as... + (visit_): ...this. + (operator ()): Adjust callers. + Perform a bottom-up traversal instead of a top-down traversal. + * src/transform/test-transform.cc: Add a test with two match + points in the input AST for the same pattern. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2707 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-08 Roland Levillain + + Simplify transform::TopDownRewriter and transform::Rewriter. + + * src/transform/top-down-rewriter.hh, + * src/transform/top-down-rewriter.cc + (try_match): Rename as... + (try_match_): ...this. + Duplicate the node if the match failed, and assign the obtained + AST (either cloned or rewritten) to result_ instead of returning + it. + (operator ()): Adjust clients. + * src/transform/rewriter.hh, src/transform/rewriter.cc + (rewrite_): Assign the rewritten tree to result_ instead of + returning it. + (operator() (const ast::MetavarExp&)): Adjust client. + (try_rewrite_): Perform the job of cloning the node prior any + symbol rewriting. + (operator() (const ast::SimpleVar&)) + (operator() (const ast::FieldVar&)) + (operator() (const ast::CallExp&)) + (operator() (const ast::MethodCallExp&)) + (operator() (const ast::FieldInit&)) + (operator() (const ast::VarDec&)) + (operator() (const ast::FunctionDec&)) + (operator() (const ast::MethodDec&)) + (operator() (const ast::TypeDec&)) + (operator() (const ast::NameTy&)) + (operator() (const ast::Field&)): + Adjust clients. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2706 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-08 Roland Levillain + + Unify the names of symbol attributes in AST nodes to factor code within transform::Rewriter. + + * src/ast/ast.yml (FieldVar): Rename attribute `field' as `name'. + * src/ast/field-var.hh, src/ast/field-var.hxx, src/ast/field-var.cc, + * src/astclone/cloner.cc, src/ast/README: + Regen. + * src/ast/pretty-printer.cc, src/type/type-checker.cc, + * src/object/desugar-visitor.cc, src/object/type-checker.cc, + * src/transform/matcher.cc: + Adjust client visitors. + * src/transform/rewriter.cc (try_rewrite_): + Remove this (now useless) method. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2705 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-07 Yann Grandmaßtre + + Fix make check in lib/misc. + + * lib/misc/test-escape.cc: Update the test, the compiler handles `\a' + since r2695. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2704 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-06 Roland Levillain + + Handle symbols as metavariables. This is bit hacky for the moment, but currently this does not imply a massive rearrangement of the whole AST infrastructure to support them. We might reconsider this approach in further developments. + + * src/transform/matcher.hh, src/transform/matcher.cc + (recurse (const misc::symbol&, const misc::symbol&)): New method. + Use it... + (visit_ (const ast::SimpleVar&, const ast::SimpleVar&)) + (visit_ (const ast::FieldVar&, const ast::FieldVar&)) + (visit_ (const ast::CallExp&, const ast::CallExp&)) + (visit_ (const ast::MethodCallExp&, const ast::MethodCallExp&)) + (visit_ (const ast::FieldInit&, const ast::FieldInit&)) + (visit_ (const ast::VarDec&, const ast::VarDec&)) + (visit_ (const ast::FunctionDec&, const ast::FunctionDec&)) + (visit_ (const ast::MethodDec&, const ast::MethodDec&)) + (visit_ (const ast::TypeDec&, const ast::TypeDec&)) + (visit_ (const ast::NameTy&, const ast::NameTy&)) + (visit_ (const ast::Field&, const ast::Field&)): + ...here, to match symbols. + * src/transform/rewriter.hh, src/transform/rewriter.cc + (operator() (const ast::MetavarExp&)): Factor method body... + (rewrite_): ...here (new method). + (try_rewrite_) + (operator() (const ast::SimpleVar&)) + (operator() (const ast::FieldVar&)) + (operator() (const ast::CallExp&)) + (operator() (const ast::MethodCallExp&)) + (operator() (const ast::FieldInit&)) + (operator() (const ast::VarDec&)) + (operator() (const ast::FunctionDec&)) + (operator() (const ast::MethodDec&)) + (operator() (const ast::TypeDec&)) + (operator() (const ast::NameTy&)) + (operator() (const ast::Field&)): + New methods. + * src/transform/metavar-pool.hh, src/transform/metavar-pool.cc + (MetavarPool): Inherit from parse::MetavarMap + too. + (MetavarPool::MetavarPool, MetavarPool::~MetavarPool): + Adjust ctor and dtor. + * src/transform/test-transform.cc: Get rid of the cheat + w.r.t. for-loop index matching/rewriting, and perform a full + for-loop to while-loop concrete-syntax program-transformation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2703 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-06 Roland Levillain + + Add an abstract Metavariable node to factor current and upcoming metavariable classes. + + * src/ast/ast.yml (Metavariable): New. + (CallExp::name): Add a write (`W') access to this attribute. + (CallExp::name_set): Remove this hand-written method. + * src/ast/metavariable.hh, src/ast/metavariable.hxx, + * src/ast/metavariable.cc: New files (generated). + * src/ast/metavar-exp.hh, src/ast/metavar-exp.hxx, + * src/ast/metavar-exp.cc, + * src/ast/call-exp.hh, src/ast/call-exp.hxx, + * src/ast/fwd.hh, + * src/ast/README, src/ast/README.student: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2702 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-05 Roland Levillain + + Add a first support for metavariables in concrete-syntax rewriting rules. + + * src/transform/top-down-rewriter.hh, + * src/transform/top-down-rewriter.cc (match_, rewrite_): New + attributes. + (TopDownRewriter::TopDownRewriter): Adjust ctor. + (result_get): Remove method. + (try_match): Clear the pool of metavariables before performing + another match. + Fix the rewriting pass. + * src/transform/matcher.hh, src/transform/matcher.cc + (metavar_pool_): New attribute. + (Matcher::Matcher): Adjust ctor. + (visit_ (const ast::Exp&, const ast::MetavarExp&)) + (metavar_match_): New methods. + * src/transform/rewriter.hh, src/transform/rewriter.cc: New. + * src/transform/metavar-pool.hh, src/transform/metavar-pool.hxx, + * src/transform/metavar-pool.cc: New. + * src/parse/metavar-map.hh, src/parse/metavar-map.hxx: Aesthetic + changes. + * lib/misc/map.hh, lib/misc/map.hxx (operator()): Add a missing + `throw' exception specification. + Improve documentation. + * src/transform/test-transform.cc (main): Move most code... + (test): ...here (new function). + (main): Add tests using metavariables. + * src/transform/Makefile.am (libtransform_la_SOURCES): Add + metavar-pool.hh, metavar-pool.hxx, metavar-pool.cc, + rewriter.hh and rewriter.cc. + + * dev/ast_params.py (atomic_types): Add unsigned + * dev/ast-cloner-gen (non_visitable_types): Likewise. + Import ast_params. + * src/ast/ast.yml (MetavarExp): Change the type of attribute `id' + from int to unsigned. + * src/ast/README, src/ast/README.student, + * src/ast/metavar-exp.hh, src/ast/metavar-exp.hxx, + * src/ast/metavar-exp.cc, src/astclone/cloner.cc: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2701 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-04 Roland Levillain + + Stylistic changes in the expected interface of voyagers. + + * src/transform/matcher.hh, src/transform/matcher.cc + (operator()): Rename these methods as... + (visit_): ...this. + Make them protected. + Add transform::ProxyVisitor2 as a friend of transform::Matcher. + (recurse): Adjust callers. + * src/transform/top-down-rewriter.cc (try_match): Likewise. + * dev/ast-proxy-visitors-gen (operator()): Likewise. + Wrap a too long line. + * src/transform/proxy-visitors.hxx: Regen. + * src/transform/test-voyager.cc: Adjust test. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2700 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-03 Roland Levillain + + Add an AST node matcher and a top-down rewriter to module transform. + + * src/transform/matcher.hh, src/transform/matcher.cc: New. + Voyager performing AST node matching. + * src/transform/top-down-rewriter.hh, + * src/transform/top-down-rewriter.cc: New. + Visitor performing top-down AST rewriting. + * src/transform/test-transform.cc: Extend this test to check + transform::TopDownRewriter and transform::Matcher. + * src/transform/Makefile.am (noinst_HEADERS): Remove. + (noinst_LTLIBRARIES, libtransform_la_SOURCES): New. + (test_voyager_LDADD): Remove $(libast) (was not needed). + (test_transform_LDADD): Add $(libtransform). + * src/tc.mk (libtransform_la, libtransform): New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2699 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-10-02 Roland Levillain + + Introduce the equipement needed to write Voyagers. + + ``Voyager'' is an extension of the ``Visitor'' design pattern. + The facility added here allows a dispatch on two nodes of the same + hierarchy, but it is possible to generalize the approach to any + numbers and/or types of visited nodes. + + * dev/ast-proxy-visitors-gen: New generator. + * dev/Makefile.am (dist_noinst_SCRIPTS): Add + ast-proxy-visitors-gen. + * transform/proxy-visitors.hh, transform/proxy-visitors.hxx: + New (generated). + * transform/test-voyager.cc: New test. + * transform/Makefile.am (BUILT_SOURCES_local, BUILT_SOURCES) + (gen_dir, ast_dir, ast_gen_deps) + (noinst_HEADERS, EXTRA_DIST, MAINTAINERCLEANFILES): New variables. + ($(srcdir)/ast-proxy-visitors-gen.stamp) + ($(srcdir)/proxy-visitors.hh, $(srcdir)/proxy-visitors.hxx): + New targets. + (libtransform_la_SOURCES): Add proxy-visitors.hh and + proxy-visitors.hxx. + (check_PROGRAMS): Add test-voyager. + (test_voyager_SOURCES, test_voyager_LDADD): New. + (test_transform_CPPFLAGS): Remove. + * transform/test-transform.cc (program_name): + s/test-parse/test-transform/. + * astclone/Makefile.am (BUILT_SOURCES): New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2698 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-09-22 Nicolas Teck + + Show explicit type of iterated element when invoking BOOST_FOREACH. * src/liveness/interference-graph.cc, src/overload/binder.cc, * src/parse/tweast.hxx, src/task/task-register.cc, * src/translate/translation.cc, src/translate/translator.cc, * src/type/type-checker.cc: Show explicit type of iterated element when invoking BOOST_FOREACH. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2697 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-09-09 Roland Levillain + + Create a module `transform'. + + * configure.ac: Configure src/transform/Makefile. + * src/Makefile.am (SUBDIRS): Add transform. + * src/transform/test-transform.cc: New test. + * src/transform/Makefile.am: New. + + New AST node type: expression metavariable. + + * configure.ac: Bump to 1.7a. + * src/ast/ast.yml (MetavarExp): New AST node type. + Handle metavariables for expressions. + * src/ast/metavar-exp.hh, src/ast/metavar-exp.hxx, + * src/ast/metavar-exp.cc: New (generated). + * src/ast/visitor.hh: Regen. + * src/ast/fwd.hh: Regen. + * src/ast/README, src/ast/README.student: Regen. + * src/astclone/clone-visitor.hh, src/astclone/clone-visitor.cc: + Regen. + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx + (operator() (typename Const::type&)): New method. + * src/ast/allexp.hh: Include ast/metavar-exp.hh. + * src/ast/print-visitor.hh, src/ast/print-visitor.hxx + (operator() (const MetavarExp&)): New method. + * src/parse/scantiger.ll: Return a token::MV_EXP upon "_mv_exp" + string. + * src/parse/parsetiger.yy (token::MV_EXP): New token. + (exp): New rule. + * src/parse/parsetiger.hh, src/parse/parsetiger.cc: Regen. + * dev/stagize: Prune src/ast/pretty-printer.hh, + src/ast/default-visitor.hh, src/ast/default-visitor.hxx and + src/ast/allexp.hh when needed. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2696 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-08-29 Roland Levillain + + Handle `\a' in misc::escape. + + * lib/misc/escape.cc (misc::escape::escape_): Handle `\a'. + * tests/good/string-backslash-octal.-e.s, + * tests/good/string-backslash-octal.-e.u.s + * tests/good/string-backslash-octal.hir, + * tests/good/string-backslash-octal.lir, + * tests/good/string-backslash-octal.s, + * tests/good/string-backslash-octal.u.s, + * tests/good/string-backslash-tortured.-e.s, + * tests/good/string-backslash-tortured.-e.u.s, + * tests/good/string-backslash-tortured.hir, + * tests/good/string-backslash-tortured.lir, + * tests/good/string-backslash-tortured.s, + * tests/good/string-backslash-tortured.u.s: + Regen. + * AUTHORS: Typo. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2695 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-08-29 Roland Levillain + + * AUTHORS, NEWS: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2694 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-08-28 Roland Levillain + + Enforce coding style rules w.r.t. base class lists and ctor initialization lists. + + * src/assem/instrs.hh, src/bind/binder.cc, src/bind/renamer.cc, + * src/callgraph/static-link-visitor.cc, + * src/desugar/bound-checking-visitor.cc, + * src/escapes/escapes-check-visitor.cc, src/frame/access.cc, + * src/inlining/inliner.cc, src/inlining/pruner.cc, + * src/liveness/interference-graph.cc, src/object/binder.cc, + * src/object/desugar-visitor.cc, src/object/renamer.cc, + * src/object/type-checker.cc, src/overload/binder.cc, + * src/overload/type-checker.cc, src/parse/metavar-map.hxx, + * src/parse/tweast.cc, src/parse/tweast.hh, src/regalloc/color.cc, + * src/target/assembly.cc, src/target/codegen.hxx, + * src/target/ia32/cpu.hh, src/target/ia32/gas-assembly.cc, + * src/target/ia32/gas-assembly.hh, src/target/ia32/gas-layout.hh, + * src/target/ia32/prologue.hh, src/target/ia32/target.cc, + * src/target/ia32/target.hh, src/target/mips/cpu.hh, + * src/target/mips/prologue.hh, src/target/mips/spim-assembly.hh, + * src/target/mips/spim-layout.hh, src/target/mips/target.cc, + * src/target/mips/target.hh, src/task/boolean-task.cc, + * src/task/disjunctive-task.cc, src/task/function-task.cc, + * src/task/int-task.cc, src/task/multiple-string-task.cc, + * src/task/string-task.cc, src/task/task.cc, + * src/translate/exp.hxx, src/translate/level.cc, + * src/tree/binop.hxx, src/tree/call.cc, + * src/tree/cjump.hxx, src/tree/const.hxx, src/tree/eseq.hxx, + * src/tree/exp.hh, src/tree/fragment.hxx, src/tree/jump.hxx, + * src/tree/label.hxx, src/tree/mem.hxx, src/tree/move.hxx, + * src/tree/name.hxx, src/tree/seq.hxx, src/tree/stm.hh, + * src/tree/sxp.hxx, src/tree/temp.hxx, src/tree/tree.hxx, + * src/type/array.hxx, src/type/attribute.hxx, src/type/class.cc, + * src/type/field.hxx, src/type/function.hxx, src/type/method.cc, + * src/type/named.hxx: + Do it. + * dev/ast-nodes-gen (print_namespace_class_open, print_ctor_dtor) + * dev/ast.py (Node.ctor_init): + Likewise, emit C++ code complying with the coding style of the + project. + * dev/ast-nodes-gen (print_ctor_dtor): Adjust layout. + * src/ast/array-exp.cc, src/ast/array-exp.hh, src/ast/array-ty.cc, + * src/ast/array-ty.hh, src/ast/assign-exp.cc, src/ast/assign-exp.hh, + * src/ast/ast.cc, src/ast/break-exp.cc, src/ast/call-exp.cc, + * src/ast/call-exp.hh, src/ast/cast-exp.cc, src/ast/cast-exp.hh, + * src/ast/cast-var.cc, src/ast/cast-var.hh, src/ast/class-ty.cc, + * src/ast/class-ty.hh, src/ast/dec.cc, src/ast/dec.hh, + * src/ast/decs-list.cc, src/ast/decs-list.hh, src/ast/escapable.cc, + * src/ast/exp.cc, src/ast/exp.hh, src/ast/field-init.cc, + * src/ast/field-init.hh, src/ast/field-var.cc, src/ast/field-var.hh, + * src/ast/field.cc, src/ast/field.hh, src/ast/for-exp.cc, + * src/ast/for-exp.hh, src/ast/function-dec.cc, + * src/ast/function-dec.hh, src/ast/if-exp.cc, src/ast/if-exp.hh, + * src/ast/int-exp.cc, src/ast/int-exp.hh, src/ast/let-exp.cc, + * src/ast/let-exp.hh, src/ast/method-call-exp.cc, + * src/ast/method-call-exp.hh, src/ast/method-dec.cc, + * src/ast/method-dec.hh, src/ast/name-ty.cc, src/ast/name-ty.hh, + * src/ast/nil-exp.cc, src/ast/nil-exp.hh, src/ast/object-exp.cc, + * src/ast/object-exp.hh, src/ast/op-exp.cc, src/ast/op-exp.hh, + * src/ast/record-exp.cc, src/ast/record-exp.hh, + * src/ast/record-ty.cc, src/ast/record-ty.hh, src/ast/seq-exp.cc, + * src/ast/seq-exp.hh, src/ast/simple-var.cc, src/ast/simple-var.hh, + * src/ast/string-exp.cc, src/ast/string-exp.hh, + * src/ast/subscript-var.cc, src/ast/subscript-var.hh, src/ast/ty.cc, + * src/ast/ty.hh, src/ast/typable.cc, src/ast/type-constructor.cc, + * src/ast/type-dec.cc, src/ast/type-dec.hh, src/ast/var-dec.cc, + * src/ast/var-dec.hh, src/ast/var.cc, src/ast/var.hh, + * src/ast/while-exp.cc, src/ast/while-exp.hh, src/ast/break-exp.hh + Regen. + * src/type/types.hh: Add missing headers. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2693 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-08-19 Nicolas Teck + + Deploy BOOST_FOREACH in the project. * src/assem/fragments.cc, src/assem/instrs.cc, * src/ast/any-decs.hxx,src/astclone/cloner.hxx, * src/bind/binder.hxx, src/callgraph/call-graph-visitor.cc, * src/callgraph/parent-graph-visitor.cc, src/canon/traces.cc, * src/desugar/bound-checking-visitor.cc, src/frame/frame.cc, * src/inlining/inliner.cc, src/inlining/pruner.cc, * src/liveness/flowgraph.hxx, src/liveness/interference-graph.cc, * src/overload/binder.cc, src/overload/over-table.hxx, * src/overload/type-checker.cc, src/parse/tweast.cc, * src/parse/tweast.hxx, src/regalloc/color.cc, * src/target/cpu.cc, src/target/ia32/codegen.cc, * src/target/ia32/epilogue.cc, src/target/mips/codegen.cc, * src/target/mips/epilogue.cc, src/task/task-register.cc, * src/task/task.cc, src/translate/level.cc, * src/translate/translation.cc, src/translate/translator.cc, * src/tree/call.cc, src/tree/fragment.cc, * src/tree/tree.hxx, src/type/class.cc, * src/type/class.hxx, src/type/record.cc, * src/type/type-checker.cc: Convert loops performing iterations using standard C++ iterators to BOOST_FOREACH. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2692 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-08-18 Yann Grandmaßtre + + Deploy boost::lexical_cast in the project. * lib/misc/escape.hxx, lib/misc/symbol.cc, * src/parse/metavar-map.hxx, src/parse/tweast.cc, * src/parse/tweast.hxx, src/target/ia32/gas-assembly, * src/target/mips/cpu.cc, src/target/mips/spim-assembly.cc: Replace the use of std::stringstream to std::string and boost::lexical_cast. * src/parse/scantiger.ll: Replace strtol by boost::lexical_cast. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2691 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-29 Benoßt Perrot + + Rename symbol::Symbol as misc::symbol. + + * src/symbol/symbol.hh, src/symbol/symbol.hxx, src/symbol/symbol.cc, + * src/symbol/test-symbol.cc: + Move to... + * lib/misc/symbol.hh, lib/misc/symbol.hxx, + * lib/misc/symbol.cc, lib/misc/test-symbol.cc: + ... these files, respectively. + * lib/misc/fwd.hh: Forward-declare misc::symbol. + * lib/misc/Makefile.am: Compile and distribute misc::symbol. + * src/symbol/Makefile.am, src/symbol/fwd.hh, src/symbol: + Remove. + * configure.ac: + Forget symbol/ directory. + * src/Makefile.am, src/tc.mk, src/regalloc/Makefile.am: + Use misc/ and libmisc.la where symbol/ and libsymbol.la were. + + * src/ast/ast.yml, dev/ast_params.py, dev/ast-cloner-gen, + * src/ast/location.hh, + * src/astclone/cloner.cc, + * src/bind/renamer.hh, src/bind/renamer.hxx, + * src/bind/binder.hh, src/bind/binder.hxx, + * src/type/attribute.hh, src/type/attribute.hxx, + * src/type/class.hh, src/type/class.hxx, src/type/class.cc, + * src/type/field.hh, src/type/field.hxx, + * src/type/method.hh, src/type/method.hxx, src/type/method.cc, + * src/type/named.hh, src/type/named.hxx, + * src/type/record.hh, src/type/record.hxx, src/type/record.cc, + * src/type/test-type.cc, + * src/overload/over-table.hh, src/overload/over-table.hxx, + * src/desugar/bound-checking-visitor.cc, + * src/desugar/desugar-visitor.cc, + * src/temp/fwd.hh, + * src/temp/identifier.hh, src/temp/identifier.hcc, + * src/temp/label.hh, src/temp/label.cc, + * src/temp/temp.hh, src/temp/temp.cc, + * src/tree/fragment.hh, src/tree/fragment.hxx, + * src/translate/level.hh, src/translate/level.cc, + * src/translate/translation.hh, src/translate/translation.cc, + * src/assem/fragment.hh, src/assem/fragment.hxx, + * src/inlining/inliner.cc, + * src/object/desugar-visitor.hh, src/object/desugar-visitor.cc, + * src/object/libobject.hh, + * src/target/mips/test-rw_prg.cc, + * src/parse/libparse.cc, + * src/parse/scantiger.ll, src/parse/parsetiger.yy, + * src/parse/tweast.hh, src/parse/test-tweast.cc, + * src/parse/tiger_parse.i: + Use misc::symbol instead of symbol::Symbol, include "misc/symbol.hh" + instead of "symbol/symbol.hh". + + * src/ast/call-exp.hh, src/ast/call-exp.hxx, src/ast/call-exp.cc, + * src/ast/dec.hh, src/ast/dec.hxx, src/ast/dec.cc, + * src/ast/field.hh, src/ast/field.hxx, src/ast/field.cc, + * src/ast/field-init.hh, src/ast/field-init.hxx, src/ast/field-init.cc, + * src/ast/field-var.hh, src/ast/field-var.hxx, src/ast/field-var.cc, + * src/ast/function-dec.hh, src/ast/function-dec.cc, + * src/ast/method-dec.hh, src/ast/method-dec.cc, + * src/ast/method-call-exp.hh, src/ast/method-call-exp.cc, + * src/ast/name-ty.hh, src/ast/name-ty.hxx, src/ast/name-ty.cc, + * src/ast/simple-var.hh, src/ast/simple-var.hxx, + * src/ast/simple-var.cc, + * src/ast/type-dec.hh, src/ast/type-dec.cc, + * src/ast/var-dec.hh, src/ast/var-dec.cc, + * src/ast/README, src/ast/README.student: + Re-generate. + * src/parse/position.hh, src/parse/location.hh, + * src/parse/parsetiger.hh, src/parse/parsetiger.cc: + Re-generate. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2690 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-27 Roland Levillain + + Convert module `object' to BOOST_FOREACH. + + * configure.ac: Require Boost 1.34. + * lib/misc/foreach.hh: New file. + * lib/misc/Makefile.am (libmisc_la_SOURCES): Add foreach.hh. + * src/object/binder.cc, src/object/renamer.cc + * src/object/desugar-visitor.cc, src/object/type-checker.cc: + Convert loops performing iterations using standard C++ iterators + to BOOST_FOREACH. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2689 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-26 Roland Levillain + + Fix the build. + + * lib/misc/map.hh, lib/misc/map.hxx (iterator, const_iterator): + Move these typedefs before their first use. + (find, xfind): Fix the signature of these methods. + Provide a non-const version of these methods returning mutable + iterators. + * dev/ast_params.py (atomic_types): Remove ClassDec::map_var_type + and ClassDec::map_meth_type, as these types no longer exist. + Move DecsList::decs_type... + (compound_types): ...here (new list). + * dev/tools.py: Import module stat. + * dev/ast-nodes-gen (print_includes): Fix access to + ast_params.includes_map and ast_params.atomic_types. + Handle types listed in ast_params.compound_types. + * dev/ast.py (Node.name): Move and rename as... + (Attribute.name_): ...this, so as to avoid name clashes with + attribute Attribute.name. + (Attribute.attr_decl, Attribute.ctor_init, Attribute.delete): + Adjust callers. + * src/ast/fwd.hh, src/ast/visitor.hh: Regen. + * src/translate/translator.cc (operator() (const ast::CallExp&)): + Fix comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2688 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-23 Akim Demaille + + Various * TODO: print -> dump. * build-aux/boost.m4: I hate ``, use $(). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2687 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-23 Akim Demaille + + Formatting changes * src/astclone/Makefile.am (ast_gen_deps): Complete. * src/translate/translator.cc: Coding style changes. * src/temp/identifier.hcc: Ditto. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2686 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-23 Akim Demaille + + Formatting changes * src/ast/Makefile.am (ast_gen_deps): Complete. * src/ast/fwd.hh: Comment changes. * src/ast/pretty-printer.cc: Coding style changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2685 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-23 Akim Demaille + + Space changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2684 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-23 Akim Demaille + + * src/type/type-checker.cc: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2683 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-23 Akim Demaille + + Portability of boostrap * bootstrap: libtoolize may be named glibtoolize. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2682 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-23 Akim Demaille + + dev/ overhaul * dev/ast_params.py: New. * dev/Makefile.am: Adjust. * dev/ast-cloner-gen, dev/ast-fwd-gen, dev/ast-nodes-gen, * dev/ast-readme-gen, dev/ast-visitor-gen, dev/ast.py, * dev/tools.py: Use ast_params.py. Upgrade coding style. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2681 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-23 Akim Demaille + + Update lib/misc * lib/misc/map.hh, lib/misc/map.hxx (xfind): New. Use lexical_cast. * lib/misc/ref.hh, lib/misc/ref.hxx: Doc fixes. Disable useless includes. Coding style fixes. * lib/misc/separator.hh, lib/misc/separator.hxx: Doc fixes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2680 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-05 Roland Levillain + + Simplify parse::Tweast::take. + + * configure, NEWS: Version 1.21a. + * src/parse/tweast.hxx (take): Rewrite to work around the + ``control reaches end of non-void function'' warning differently. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2679 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-04 Roland Levillain + + Version 1.21, for 2009-lc-9.0. Fix a bug occurring when optimizing static links. + + * configure, NEWS: Version 1.21. + * src/object/desugar-visitor.cc: Hide FIXMEs which might confuse + students. + * src/translate/translator.cc (operator() (const ast::CallExp&)): + Fix a bug occurring when optimizing static links. + * src/callgraph/tasks.cc (escapes_sl_compute): Fix indentation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2678 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-04 Roland Levillain + + More simplifications in object::DesugarVisitor's code generators. + + * src/object/desugar-visitor.hh, src/object/desugar-visitor.cc + (create_variant_exp, create_variant_ty, create_cast_function) + (create_upcast_function, create_downcast_function) + (create_dispatch_switch, create_method_call): + Rename as... + (variant_exp, variant_ty, cast_function) + (upcast_function, downcast_function) + (dispatch_switch, method_call): + ...these. + Adjust callers. + Adjust documentation. + (dispatch_switch): No longer take a TWEAST as first (out) + argument; return a fresh ast::Exp instead. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2677 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-04 Roland Levillain + + Simplify the use of code generators in object::DesugarVisitor. + + * src/object/desugar-visitor.hh, src/object/desugar-visitor.cc + (create_method_call, create_cast_function) + (create_upcast_function, create_downcast_function) + (create_variant_ty): No longer take a TWEAST as first (out) + argument; return a fresh TWEAST instead. + (create_variant_exp): Likewise, but parse the TWEAST and return a + fresh ast::Exp instead. + Adjust callers, using the new TWEAST-in-TWEAST feature. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2676 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-03 Roland Levillain + + Fix a bug in parse::Tweast::move_metavars_(). + + * src/parse/tweast.hxx (move_metavars_): Don't mix together + variable move to the current tweast, and removal from the + sub-tweast; perform these two tasks separately to prevent erratic + iterations on metavariable maps. + (take): Print the contents of the caught exception. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2675 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-03 Roland Levillain + + Allow Tweasts to embed other Tweasts. + + * src/parse/tweast.hh, src/parse/tweast.hxx, src/parse/tweast.cc + (Tweast): Also inherit from MetavarMap. + (Tweast::Tweast): Adjust ctors. + (flatten): New method. + (move_metavars_): New (private) method. + (print): Print embedded Tweasts. + * src/parse/tiger_parse.i: Adjust. + * src/parse/test-tweast.cc: Exercise the embedded-Tweasts feature. + * src/parse/tiger-parser.cc (parse_input): Flatten the Tweast + before parsing it. + * src/parse/libparse.cc (parse (Tweast&)): Print the contents of + the Tweast on error. + * dev/stagize: Prune src/parse/tweast.hxx and src/parse/tweast.cc + before object-desugar. + + Make the debugging easier by printing the contents of a Tweast + failing the parsing. + + * src/parse/metavar-map.hh, src/parse/metavar-map.hxx + (take_): Don't catch std::range_error exceptions, and let the + caller (i.e., parse::Tweast) deal with them. + Add a `throw' exception specification at the end of this function + prototype. + * src/parse/tweast.hh, src/parse/tweast.hxx (take): Likewise. + Catch std::range_error exceptions, and raise an ICE while + displaying the contents of the Tweast. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2674 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-03 Roland Levillain + + Extend misc::map's interface. + + * lib/misc/map.hh, lib/misc/map.hxx + (operator() (const T&), take): Add a `throw' exception + specification at the end of these function prototypes. + (begin, end): New (extra) methods returning mutable iterators. + (clear): New method. + * lib/misc/endomap.hh, lib/misc/endomap.hcc + (operator() (const T&)): Adjust. + * src/target/mips/cpu.cc + (NolimipsTempMap::operator() (const temp::Temp&)): Likewise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2673 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-03 Roland Levillain + + Simplify the triggering mechanism of ICEs. + + * lib/misc/error.hh, lib/misc/error.cc (ice): New method. + Use it to factor... + (ice_on_error): ...this method. + (ice_here): New shortcut macro. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2672 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-07-02 Roland Levillain + + Fix a bug in test-graph. + + * lib/misc/test-graph.cc (consistency): Avoid passing a nul + argument to urand(), since it triggers a division-by-zero error + (Floating Point Exception). + Reported by Taha Karim. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2671 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-29 Roland Levillain + + Update Doxygen's configuration and remove a few warnings. + + * doc/Doxyfile.in: Update using `doxygen -u'. + Wrap long lines. + (FULL_PATH_NAMES): Set to YES. + (STRIP_FROM_PATH): Add @top_srcdir@/src and @top_builddir@/src. + (INPUT_ENCODING): Set to ISO-8859-1. + (EXCLUDE): Remove @top_builddir@/src/cppgen and + @top_srcdir@/src/cppgen. + Add @top_srcdir@/src/parse/parsetiger.hh, + @top_srcdir@/src/parse/parsetiger.cc, + @top_srcdir@/src/target/ia32/prologue.hh, + @top_srcdir@/src/target/mips/prologue.hh, + @top_builddir@/src/parse/scantiger.cc, + @top_builddir@/src/target/ia32/codegen.cc.dir and + @top_builddir@/src/target/mips/codegen.cc.dir. + (BUILTIN_STL_SUPPORT): Set to YES. + (SHOW_DIRECTORIES): Set to YES. + * src/parse/libparse.cc (parse_decs): Don't document it twice. + * src/ast/pretty-printer.hh: Fix file name in documentation. + * src/ast/function-decs.hh, src/ast/var-decs.hh, + * src/ast/method-decs.hh, src/ast/type-decs.hh + * src/ast/non-object-visitor.hh: s/endvarbatim/endverbatim/ in + documentation. + * src/type/method.hh (Method::Method): Document a missing + argument. + * src/object/desugar-visitor.hh + (create_variant_exp, create_cast_function): Fix argument names in + documentation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2670 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-28 Roland Levillain + + Hide some code in src/object. + + * src/object/renamer.cc, src/object/desugar-visitor.cc: Hide some + code. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2669 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-28 Roland Levillain + + Fix the distribution of the object desugaring. + + * dev/stagize: Deliver the the visitor removing object constructs + at TC-4, as well as the object-aware renamer. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2668 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-25 Roland Levillain + + Regen tests/object-good outputs. + + * tests/object-good/function-returning-an-object.-e.s, + * tests/object-good/function-returning-an-object.-e.u.s, + * tests/object-good/function-returning-an-object.desugared, + * tests/object-good/function-returning-an-object.err, + * tests/object-good/function-returning-an-object.hir, + * tests/object-good/function-returning-an-object.hpr, + * tests/object-good/function-returning-an-object.lir, + * tests/object-good/function-returning-an-object.lpr, + * tests/object-good/function-returning-an-object.s, + * tests/object-good/function-returning-an-object.sta, + * tests/object-good/function-returning-an-object.u.s, + * tests/object-good/method-call.-e.s, + * tests/object-good/method-call.-e.u.s, + * tests/object-good/method-call.desugared, + * tests/object-good/method-call.err, + * tests/object-good/method-call.hir, + * tests/object-good/method-call.hpr, + * tests/object-good/method-call.lir, + * tests/object-good/method-call.lpr, + * tests/object-good/method-call.s, + * tests/object-good/method-call.sta, + * tests/object-good/method-call.u.s, + * tests/object-good/method-using-self-as-argument.-e.s, + * tests/object-good/method-using-self-as-argument.-e.u.s, + * tests/object-good/method-using-self-as-argument.desugared, + * tests/object-good/method-using-self-as-argument.err, + * tests/object-good/method-using-self-as-argument.hir, + * tests/object-good/method-using-self-as-argument.hpr, + * tests/object-good/method-using-self-as-argument.lir, + * tests/object-good/method-using-self-as-argument.lpr, + * tests/object-good/method-using-self-as-argument.s, + * tests/object-good/method-using-self-as-argument.sta, + * tests/object-good/method-using-self-as-argument.u.s, + * tests/object-good/using-members-from-within-the-class.-e.s, + * tests/object-good/using-members-from-within-the-class.-e.u.s, + * tests/object-good/using-members-from-within-the-class.desugared, + * tests/object-good/using-members-from-within-the-class.err, + * tests/object-good/using-members-from-within-the-class.hir, + * tests/object-good/using-members-from-within-the-class.hpr, + * tests/object-good/using-members-from-within-the-class.lir, + * tests/object-good/using-members-from-within-the-class.lpr, + * tests/object-good/using-members-from-within-the-class.out, + * tests/object-good/using-members-from-within-the-class.s, + * tests/object-good/using-members-from-within-the-class.sta, + * tests/object-good/using-members-from-within-the-class.u.s, + * tests/object-good/valid-forward-reference-to-class.-e.s, + * tests/object-good/valid-forward-reference-to-class.-e.u.s, + * tests/object-good/valid-forward-reference-to-class.desugared, + * tests/object-good/valid-forward-reference-to-class.err, + * tests/object-good/valid-forward-reference-to-class.hir, + * tests/object-good/valid-forward-reference-to-class.hpr, + * tests/object-good/valid-forward-reference-to-class.lir, + * tests/object-good/valid-forward-reference-to-class.lpr, + * tests/object-good/valid-forward-reference-to-class.s, + * tests/object-good/valid-forward-reference-to-class.sta, + * tests/object-good/valid-forward-reference-to-class.u.s, + * tests/object-good/vehicle.-e.s, + * tests/object-good/vehicle.-e.u.s, + * tests/object-good/vehicle.desugared, + * tests/object-good/vehicle.err, + * tests/object-good/vehicle.hir, + * tests/object-good/vehicle.hpr, + * tests/object-good/vehicle.lir, + * tests/object-good/vehicle.lpr, + * tests/object-good/vehicle.s, + * tests/object-good/vehicle.sta, + * tests/object-good/vehicle.u.s, + * tests/object-good/visitor.-e.s, + * tests/object-good/visitor.-e.u.s, + * tests/object-good/visitor.desugared, + * tests/object-good/visitor.err, + * tests/object-good/visitor.hir, + * tests/object-good/visitor.hpr, + * tests/object-good/visitor.lir, + * tests/object-good/visitor.lpr, + * tests/object-good/visitor.out, + * tests/object-good/visitor.s, + * tests/object-good/visitor.sta, + * tests/object-good/visitor.u.s: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2667 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-25 Roland Levillain + + Desugar method calls and (hopefully) complete object desugaring. + + * src/type/method.hh, src/type/method.hxx, src/type/method.cc + (owner_): New member. + (owner_get): New accessor. + (Method::Method): Adjust ctor. + * src/object/type-checker.cc (visitDecHeader (ast::MethodDec&)): + Adjust caller. + * src/object/renamer.cc (operator() (ast::MethodCallExp&)): + Fix the traversal of the node. + * src/object/renamer.hh: Remove dead code. + * src/object/desugar-visitor.hh, src/object/desugar-visitor.cc + (type_symbol): Turn this implementation function into a (private) + method. + Handle renamed classes. + (adapt_type): Ensure class types are sound before using them. + (create_method_call): Fix generator: use arguments' names, not + whole VarDec's. + (dispatch_prefix): Remove constant. + (dispatch_fun_name): New method. + (operator () (const ast::TypeDecs&)): Use it when generating + dispatch functions. + Cast initialization values of variants' fields to their static + types if needed, in generated ctors. + Likewise for return values of desugared methods and dispatchers. + Fix generators of desugared methods and dispatchers : use + arguments' names, not whole VarDec's. + (operator () (const ast::CallExp&)): Move the processing of the + arguments... + (recurse_args): ...here (new method). + (operator () (const ast::MethodCallExp&)): New method. + (operator () (const ast::FunctionDec&)): Cast the return of the + desugared function if needed. + * src/object/test-desugar.cc: Exercise method calls. + * NEWS, AUTHORS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2666 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-23 Roland Levillain + + More code factoring in object::DesugarVisitor. + + * src/object/desugar-visitor.cc (class_type_query): New (internal) + function. + Use it to simplify... + (class_type_get): ...this. + (operator() (const ast::TypeDecs&)) + (operator() (const ast::VarDec&)) + (operator() (const ast::ObjectExp&)) + (operator() (const ast::AssignExp&)) + (operator() (const ast::FieldVar&)) + (operator() (const ast::NameTy&)): + Use class_type_query and class_type_get to factor some code. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2665 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-23 Roland Levillain + + Factor the desugaring of polymorphic assignments. + + * src/object/desugar-visitor.hh: Aesthetic changes. + (adapt_type): New method. + * src/object/desugar-visitor.cc (adapt_type): Likewise. + (class_type_get): New (internal function). + (operator() (const ast::VarDec&)) + (operator() (const ast::AssignExp&)) + (operator() (const ast::CallExp&)): + Use adapt_type to factor some code. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2664 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-22 Roland Levillain + + Regen test outputs. + + * tests/object-good/inner-class-with-same-member-names.tig: Remove + a duplicated comment. + * tests/object-good/attribute-modification.-e.s, + * tests/object-good/attribute-modification.-e.u.s, + * tests/object-good/attribute-modification.desugared, + * tests/object-good/attribute-modification.hir, + * tests/object-good/attribute-modification.lir, + * tests/object-good/attribute-modification.s, + * tests/object-good/attribute-modification.u.s, + * tests/object-good/function-call-in-method.-e.s, + * tests/object-good/function-call-in-method.-e.u.s, + * tests/object-good/function-call-in-method.desugared, + * tests/object-good/function-call-in-method.hir, + * tests/object-good/function-call-in-method.lir, + * tests/object-good/function-call-in-method.s, + * tests/object-good/function-call-in-method.u.s, + * tests/object-good/function-taking-an-object-as-argument.-e.s, + * tests/object-good/function-taking-an-object-as-argument.-e.u.s, + * tests/object-good/function-taking-an-object-as-argument.desugared, + * tests/object-good/function-taking-an-object-as-argument.hir, + * tests/object-good/function-taking-an-object-as-argument.lir, + * tests/object-good/function-taking-an-object-as-argument.s, + * tests/object-good/function-taking-an-object-as-argument.u.s, + * tests/object-good/inner-class-with-same-member-names.-e.s, + * tests/object-good/inner-class-with-same-member-names.-e.u.s, + * tests/object-good/inner-class-with-same-member-names.desugared, + * tests/object-good/inner-class-with-same-member-names.err, + * tests/object-good/inner-class-with-same-member-names.hir, + * tests/object-good/inner-class-with-same-member-names.hpr, + * tests/object-good/inner-class-with-same-member-names.lir, + * tests/object-good/inner-class-with-same-member-names.lpr, + * tests/object-good/inner-class-with-same-member-names.s, + * tests/object-good/inner-class-with-same-member-names.sta, + * tests/object-good/inner-class-with-same-member-names.tig, + * tests/object-good/inner-class-with-same-member-names.u.s, + * tests/object-good/redefining-object.-e.s, + * tests/object-good/redefining-object.-e.u.s, + * tests/object-good/redefining-object.desugared, + * tests/object-good/redefining-object.hir, + * tests/object-good/redefining-object.lir, + * tests/object-good/redefining-object.s, + * tests/object-good/redefining-object.u.s, + * tests/object-good/simple-class.-e.s, + * tests/object-good/simple-class.-e.u.s, + * tests/object-good/simple-class.desugared, + * tests/object-good/simple-class.hir, + * tests/object-good/simple-class.lir, + * tests/object-good/simple-class.s, + * tests/object-good/simple-class.u.s, + * tests/object-good/simple-extends.-e.s, + * tests/object-good/simple-extends.-e.u.s, + * tests/object-good/simple-extends.desugared, + * tests/object-good/simple-extends.hir, + * tests/object-good/simple-extends.lir, + * tests/object-good/simple-extends.s, + * tests/object-good/simple-extends.u.s, + * tests/object-good/simple-instantiation.-e.s, + * tests/object-good/simple-instantiation.-e.u.s, + * tests/object-good/simple-instantiation.desugared, + * tests/object-good/simple-instantiation.hir, + * tests/object-good/simple-instantiation.lir, + * tests/object-good/simple-instantiation.s, + * tests/object-good/simple-instantiation.u.s, + * tests/object-good/trivial-class.-e.s, + * tests/object-good/trivial-class.-e.u.s, + * tests/object-good/trivial-class.desugared, + * tests/object-good/trivial-class.hir, + * tests/object-good/trivial-class.lir, + * tests/object-good/trivial-class.s, + * tests/object-good/trivial-class.u.s, + * tests/object-good/type-simple-class.-e.s, + * tests/object-good/type-simple-class.-e.u.s, + * tests/object-good/type-simple-class.desugared, + * tests/object-good/type-simple-class.hir, + * tests/object-good/type-simple-class.lir, + * tests/object-good/type-simple-class.s, + * tests/object-good/type-simple-class.u.s, + * tests/object-good/type-simple-extends.-e.s, + * tests/object-good/type-simple-extends.-e.u.s, + * tests/object-good/type-simple-extends.desugared, + * tests/object-good/type-simple-extends.hir, + * tests/object-good/type-simple-extends.lir, + * tests/object-good/type-simple-extends.s, + * tests/object-good/type-simple-extends.u.s, + * tests/object-good/upcast.-e.s, + * tests/object-good/upcast.-e.u.s, + * tests/object-good/upcast.desugared, + * tests/object-good/upcast.hir, + * tests/object-good/upcast.lir, + * tests/object-good/upcast.s, + * tests/object-good/upcast.u.s, + * tests/object-good/variable-modification.-e.s, + * tests/object-good/variable-modification.-e.u.s, + * tests/object-good/variable-modification.desugared, + * tests/object-good/variable-modification.hir, + * tests/object-good/variable-modification.hpr, + * tests/object-good/variable-modification.lir, + * tests/object-good/variable-modification.lpr, + * tests/object-good/variable-modification.s, + * tests/object-good/variable-modification.u.s: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2663 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-22 Roland Levillain + + Desugar method definitions. + + * src/type/class.hh, src/type/class.hxx (owned_attr_find): New + method. + * src/object/desugar-visitor.hh, src/object/desugar-visitor.cc + (method_prefix, dispatch_prefix): New constants. + (cast_fun_name): Rename as... + (upcast_fun_name): ...this. + Change the generated name accordingly. + Adjust callers. + (downcast_fun_name, create_cast_function) + (create_upcast_function, create_downcast_function) + (create_dispatch_switch, create_method_call): New methods. + (operator() (const ast::TypeDecs&)): Simplify the creation of + upcast functions using create_upcast_function. + Generate downcast functions. + Generate a function for each method definition and redefinition. + Generate dispatch functions as desugared method entry points. + * src/object/test-desugar.cc: Exercise the desugaring of method + definitions. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2662 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-22 Roland Levillain + + Regen test outputs. + + * tests/object-good/attribute-modification.-e.s, + * tests/object-good/attribute-modification.-e.u.s, + * tests/object-good/attribute-modification.desugared, + * tests/object-good/attribute-modification.err, + * tests/object-good/attribute-modification.hir, + * tests/object-good/attribute-modification.hpr, + * tests/object-good/attribute-modification.lir, + * tests/object-good/attribute-modification.lpr, + * tests/object-good/attribute-modification.s, + * tests/object-good/attribute-modification.sta, + * tests/object-good/attribute-modification.u.s, + * tests/object-good/function-call-in-method.-e.s, + * tests/object-good/function-call-in-method.-e.u.s, + * tests/object-good/function-call-in-method.desugared, + * tests/object-good/function-call-in-method.hir, + * tests/object-good/function-call-in-method.lir, + * tests/object-good/function-call-in-method.s, + * tests/object-good/function-call-in-method.u.s, + * tests/object-good/function-returning-object.-e.s, + * tests/object-good/function-returning-object.-e.u.s, + * tests/object-good/function-returning-object.desugared, + * tests/object-good/function-returning-object.hir, + * tests/object-good/function-returning-object.hpr, + * tests/object-good/function-returning-object.lir, + * tests/object-good/function-returning-object.lpr, + * tests/object-good/function-returning-object.s, + * tests/object-good/function-returning-object.u.s, + * tests/object-good/function-taking-an-object-as-argument.-e.s, + * tests/object-good/function-taking-an-object-as-argument.-e.u.s, + * tests/object-good/function-taking-an-object-as-argument.desugared, + * tests/object-good/function-taking-an-object-as-argument.hir, + * tests/object-good/function-taking-an-object-as-argument.hpr, + * tests/object-good/function-taking-an-object-as-argument.lir, + * tests/object-good/function-taking-an-object-as-argument.lpr, + * tests/object-good/function-taking-an-object-as-argument.s, + * tests/object-good/function-taking-an-object-as-argument.u.s, + * tests/object-good/function-taking-object-as-argument.-e.s, + * tests/object-good/function-taking-object-as-argument.-e.u.s, + * tests/object-good/function-taking-object-as-argument.desugared, + * tests/object-good/function-taking-object-as-argument.hir, + * tests/object-good/function-taking-object-as-argument.hpr, + * tests/object-good/function-taking-object-as-argument.lir, + * tests/object-good/function-taking-object-as-argument.lpr, + * tests/object-good/function-taking-object-as-argument.s, + * tests/object-good/function-taking-object-as-argument.u.s, + * tests/object-good/instantiate-object.-e.s, + * tests/object-good/instantiate-object.-e.u.s, + * tests/object-good/instantiate-object.desugared, + * tests/object-good/instantiate-object.hir, + * tests/object-good/instantiate-object.hpr, + * tests/object-good/instantiate-object.lir, + * tests/object-good/instantiate-object.lpr, + * tests/object-good/instantiate-object.s, + * tests/object-good/instantiate-object.u.s, + * tests/object-good/redefining-object.-e.s, + * tests/object-good/redefining-object.-e.u.s, + * tests/object-good/redefining-object.desugared, + * tests/object-good/redefining-object.hir, + * tests/object-good/redefining-object.lir, + * tests/object-good/redefining-object.s, + * tests/object-good/redefining-object.u.s, + * tests/object-good/simple-class.-e.s, + * tests/object-good/simple-class.-e.u.s, + * tests/object-good/simple-class.desugared, + * tests/object-good/simple-class.hir, + * tests/object-good/simple-class.lir, + * tests/object-good/simple-class.s, + * tests/object-good/simple-class.u.s, + * tests/object-good/simple-extends.-e.s, + * tests/object-good/simple-extends.-e.u.s, + * tests/object-good/simple-extends.desugared, + * tests/object-good/simple-extends.hir, + * tests/object-good/simple-extends.hpr, + * tests/object-good/simple-extends.lir, + * tests/object-good/simple-extends.lpr, + * tests/object-good/simple-extends.s, + * tests/object-good/simple-extends.u.s, + * tests/object-good/simple-instantiation.-e.s, + * tests/object-good/simple-instantiation.-e.u.s, + * tests/object-good/simple-instantiation.desugared, + * tests/object-good/simple-instantiation.hir, + * tests/object-good/simple-instantiation.hpr, + * tests/object-good/simple-instantiation.lir, + * tests/object-good/simple-instantiation.lpr, + * tests/object-good/simple-instantiation.s, + * tests/object-good/simple-instantiation.u.s, + * tests/object-good/trivial-class.-e.s, + * tests/object-good/trivial-class.-e.u.s, + * tests/object-good/trivial-class.desugared, + * tests/object-good/trivial-class.hir, + * tests/object-good/trivial-class.lir, + * tests/object-good/trivial-class.s, + * tests/object-good/trivial-class.u.s, + * tests/object-good/type-simple-class.-e.s, + * tests/object-good/type-simple-class.-e.u.s, + * tests/object-good/type-simple-class.desugared, + * tests/object-good/type-simple-class.hir, + * tests/object-good/type-simple-class.lir, + * tests/object-good/type-simple-class.s, + * tests/object-good/type-simple-class.u.s, + * tests/object-good/type-simple-extends.-e.s, + * tests/object-good/type-simple-extends.-e.u.s, + * tests/object-good/type-simple-extends.desugared, + * tests/object-good/type-simple-extends.hir, + * tests/object-good/type-simple-extends.lir, + * tests/object-good/type-simple-extends.s, + * tests/object-good/type-simple-extends.u.s, + * tests/object-good/upcast.-e.s, + * tests/object-good/upcast.-e.u.s, + * tests/object-good/upcast.desugared, + * tests/object-good/upcast.hir, + * tests/object-good/upcast.hpr, + * tests/object-good/upcast.lir, + * tests/object-good/upcast.lpr, + * tests/object-good/upcast.s, + * tests/object-good/upcast.u.s, + * tests/object-good/variable-modification.-e.s, + * tests/object-good/variable-modification.-e.u.s, + * tests/object-good/variable-modification.desugared, + * tests/object-good/variable-modification.hir, + * tests/object-good/variable-modification.lir, + * tests/object-good/variable-modification.s, + * tests/object-good/variable-modification.u.s, + * tests/object-good/variable-of-type-object.-e.s, + * tests/object-good/variable-of-type-object.-e.u.s, + * tests/object-good/variable-of-type-object.desugared, + * tests/object-good/variable-of-type-object.hir, + * tests/object-good/variable-of-type-object.hpr, + * tests/object-good/variable-of-type-object.lir, + * tests/object-good/variable-of-type-object.lpr, + * tests/object-good/variable-of-type-object.s, + * tests/object-good/variable-of-type-object.u.s: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2661 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-22 Roland Levillain + + Avoid generating empty slots in classes desugared as variants. + + * src/type/class.hh, src/type/class.hxx (has_data): New method. + * src/object/desugar-visitor.cc + (create_variant_ty, create_variant_exp) + (operator() (const ast::TypeDecs&)): Don't generate empty class + contents (slots) for variants. + (operator() (const ast::FunctionDec&)): Likewise for Object. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2660 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-22 Roland Levillain + + Generate simpler names for conversion routines. + + * src/object/desugar-visitor.cc (cast_fun_name): Do it. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2659 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-22 Roland Levillain + + Desugar accesses to attributes. + + * src/object/desugar-visitor.hh, src/object/desugar-visitor.cc + (operator() (const ast::FieldVar&)): New method. + * src/object/test-desugar.cc: Exercise it. + * src/type/attribute.hh, src/type/attribute.hxx, + * src/type/attribute.cc (Attribute): Don't inherit from Field. + (Attribute::Attribute): Don't take a name nor a type as argument, + as they are now fetched from the definition site. + (name_get, type_get): New accessors. + (print): New method. + (operator<< (std::ostream&, const Attribute&)): New operator. + * src/type/README: Update. + * src/type/class.hh, src/type/class.hxx, src/type/class.cc + (attr_add): Adjust. + (attr_find, owned_attr_find): New methods. + (attr_type): Simplify using attr_find (). + * src/object/type-checker.cc (operator() (ast::VarDec&)): Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2658 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-22 Roland Levillain + + Don't rename class attributes. + + * src/object/renamer.hh, src/object/renamer.cc + (within_class_ty_): New member. + (Renamer::Renamer): Adjust ctor. + (operator() (ast::VarDec&)) + (operator() (ast::ForExp&)) + (operator() (ast::FunctionDec&)): New methods. + Handle within_class_ty_. + (operator() (ast::MethodDec&)) + (operator() (ast::ClassTy&)): Handle within_class_ty_. + * src/object/binder.cc (operator() (ast::VarDec&)): More + documentation. + + * tests/object-good/function-call-in-method.-e.s, + * tests/object-good/function-call-in-method.-e.u.s, + * tests/object-good/function-call-in-method.desugared, + * tests/object-good/function-call-in-method.hir, + * tests/object-good/function-call-in-method.lir, + * tests/object-good/function-call-in-method.s, + * tests/object-good/function-call-in-method.u.s, + * tests/object-good/simple-class.-e.s, + * tests/object-good/simple-class.-e.u.s, + * tests/object-good/simple-class.desugared, + * tests/object-good/simple-class.hir, + * tests/object-good/simple-class.lir, + * tests/object-good/simple-class.s, + * tests/object-good/simple-class.u.s, + * tests/object-good/simple-extends.-e.s, + * tests/object-good/simple-extends.-e.u.s, + * tests/object-good/simple-extends.desugared, + * tests/object-good/simple-extends.hir, + * tests/object-good/simple-extends.lir, + * tests/object-good/simple-extends.s, + * tests/object-good/simple-extends.u.s, + * tests/object-good/simple-instantiation.-e.s, + * tests/object-good/simple-instantiation.-e.u.s, + * tests/object-good/simple-instantiation.desugared, + * tests/object-good/simple-instantiation.hir, + * tests/object-good/simple-instantiation.lir, + * tests/object-good/simple-instantiation.s, + * tests/object-good/simple-instantiation.u.s, + * tests/object-good/type-simple-class.-e.s, + * tests/object-good/type-simple-class.-e.u.s, + * tests/object-good/type-simple-class.desugared, + * tests/object-good/type-simple-class.hir, + * tests/object-good/type-simple-class.lir, + * tests/object-good/type-simple-class.s, + * tests/object-good/type-simple-class.u.s, + * tests/object-good/type-simple-extends.-e.s, + * tests/object-good/type-simple-extends.-e.u.s, + * tests/object-good/type-simple-extends.desugared, + * tests/object-good/type-simple-extends.hir, + * tests/object-good/type-simple-extends.lir, + * tests/object-good/type-simple-extends.s, + * tests/object-good/type-simple-extends.u.s, + * tests/object-good/variable-modification.-e.s, + * tests/object-good/variable-modification.-e.u.s, + * tests/object-good/variable-modification.desugared, + * tests/object-good/variable-modification.hir, + * tests/object-good/variable-modification.s, + * tests/object-good/variable-modification.u.s, + * tests/object-good/variable-modification.lir: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2657 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-21 Roland Levillain + + Aesthetic change in the pretty-printing of records. + + * src/ast/pretty-printer.cc (operator() (const RecordExp&)): + Aesthetic change in the pretty-printing of record expressions. + * tests/object-good/function-call-in-method.desugared, + * tests/object-good/function-returning-object.desugared, + * tests/object-good/function-taking-an-object-as-argument.desugared, + * tests/object-good/function-taking-object-as-argument.desugared, + * tests/object-good/instantiate-object.desugared, + * tests/object-good/redefining-object.desugared, + * tests/object-good/simple-class.desugared, + * tests/object-good/simple-extends.desugared, + * tests/object-good/simple-instantiation.desugared, + * tests/object-good/trivial-class.desugared, + * tests/object-good/type-simple-class.desugared, + * tests/object-good/type-simple-extends.desugared, + * tests/object-good/upcast.desugared, + * tests/object-good/variable-modification.desugared, + * tests/object-good/variable-of-type-object.desugared: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2656 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-21 Roland Levillain + + Change the organization of objects' data. Classes used to be desugared into variants whose fields represented a whole (static) classic type. That is, the attributes of a class were duplicated in each slot representing one of its subclasses. In this model, only one field of the variant should be live at any time in the program. + + From now on, the slots of the variants contains only data defined + in the considered type, i.e., an attribute from a super class is + no longer duplicated into the class' field, but fetched from the + field related to this super class. As a consequence, several + fields may be alive -- at least, the field corresponding to the + class and its super classes; and potentially fields from + subclasses if the dynamic type is a strict subclass of the static + type. + + * src/object/desugar-visitor.hh, src/object/desugar-visitor.cc: + (field_inits_type): New typedef. + (create_variant_ty): Populate the variant type with slots for each + super- and subclasses. + (create_variant_exp (Tweast&, const type::Class*, + const type::Class*, const std::string&)): Turn method signature + into... + (create_variant_exp (Tweast&, const type::Class*, + const type::Class*, const field_inits_type&)): ...this. + Create slots for each super- and subclasses. + Accept several initialization expressions, so that several fields + can be initialized at once. + (create_variant_exp (Tweast&, const type::Class*, + const std::string&, const field_inits_type&)): New shortcut + method. + (operator() (const ast::TypeDecs&)): Don't inherit members from + the base classes in record holding class contents. + Create all required fields of a variant (i.e., the class one and + the fields from its base class(es)). + Copy all fields from the source variant, whatever the exact type. + + * tests/object-good/function-call-in-method.-e.s, + * tests/object-good/function-call-in-method.-e.u.s, + * tests/object-good/function-call-in-method.desugared, + * tests/object-good/function-call-in-method.hir, + * tests/object-good/function-call-in-method.lir, + * tests/object-good/function-call-in-method.s, + * tests/object-good/function-call-in-method.u.s, + * tests/object-good/function-taking-an-object-as-argument.-e.s, + * tests/object-good/function-taking-an-object-as-argument.-e.u.s, + * tests/object-good/function-taking-an-object-as-argument.desugared, + * tests/object-good/function-taking-an-object-as-argument.hir, + * tests/object-good/function-taking-an-object-as-argument.hpr, + * tests/object-good/function-taking-an-object-as-argument.lir, + * tests/object-good/function-taking-an-object-as-argument.lpr, + * tests/object-good/function-taking-an-object-as-argument.s, + * tests/object-good/function-taking-an-object-as-argument.u.s, + * tests/object-good/redefining-object.-e.s, + * tests/object-good/redefining-object.-e.u.s, + * tests/object-good/redefining-object.desugared, + * tests/object-good/redefining-object.hir, + * tests/object-good/redefining-object.lir, + * tests/object-good/redefining-object.s, + * tests/object-good/redefining-object.u.s, + * tests/object-good/simple-class.-e.s, + * tests/object-good/simple-class.-e.u.s, + * tests/object-good/simple-class.desugared, + * tests/object-good/simple-class.hir, + * tests/object-good/simple-class.lir, + * tests/object-good/simple-class.s, + * tests/object-good/simple-class.u.s, + * tests/object-good/simple-extends.-e.s, + * tests/object-good/simple-extends.-e.u.s, + * tests/object-good/simple-extends.desugared, + * tests/object-good/simple-extends.hir, + * tests/object-good/simple-extends.hpr, + * tests/object-good/simple-extends.lir, + * tests/object-good/simple-extends.lpr, + * tests/object-good/simple-extends.s, + * tests/object-good/simple-extends.u.s, + * tests/object-good/simple-instantiation.-e.s, + * tests/object-good/simple-instantiation.-e.u.s, + * tests/object-good/simple-instantiation.desugared, + * tests/object-good/simple-instantiation.hir, + * tests/object-good/simple-instantiation.hpr, + * tests/object-good/simple-instantiation.lir, + * tests/object-good/simple-instantiation.lpr, + * tests/object-good/simple-instantiation.s, + * tests/object-good/simple-instantiation.u.s, + * tests/object-good/trivial-class.-e.s, + * tests/object-good/trivial-class.-e.u.s, + * tests/object-good/trivial-class.desugared, + * tests/object-good/trivial-class.hir, + * tests/object-good/trivial-class.lir, + * tests/object-good/trivial-class.s, + * tests/object-good/trivial-class.u.s, + * tests/object-good/type-simple-class.-e.s, + * tests/object-good/type-simple-class.-e.u.s, + * tests/object-good/type-simple-class.desugared, + * tests/object-good/type-simple-class.hir, + * tests/object-good/type-simple-class.lir, + * tests/object-good/type-simple-class.s, + * tests/object-good/type-simple-class.u.s, + * tests/object-good/type-simple-extends.-e.s, + * tests/object-good/type-simple-extends.-e.u.s, + * tests/object-good/type-simple-extends.desugared, + * tests/object-good/type-simple-extends.hir, + * tests/object-good/type-simple-extends.lir, + * tests/object-good/type-simple-extends.s, + * tests/object-good/type-simple-extends.u.s, + * tests/object-good/upcast.-e.s, + * tests/object-good/upcast.-e.u.s, + * tests/object-good/upcast.desugared, + * tests/object-good/upcast.hir, + * tests/object-good/upcast.hpr, + * tests/object-good/upcast.lir, + * tests/object-good/upcast.lpr, + * tests/object-good/upcast.s, + * tests/object-good/upcast.u.s, + * tests/object-good/variable-modification.-e.s, + * tests/object-good/variable-modification.-e.u.s, + * tests/object-good/variable-modification.hir, + * tests/object-good/variable-modification.lir, + * tests/object-good/variable-modification.s, + * tests/object-good/variable-modification.u.s, + * tests/object-good/variable-modification.desugared: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2655 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-21 Roland Levillain + + Regen test outputs. + + * configure.ac, NEWS: Version 1.20a. + * tests/object-good/function-returning-object.-e.s, + * tests/object-good/function-returning-object.-e.u.s, + * tests/object-good/function-returning-object.desugared, + * tests/object-good/function-returning-object.err, + * tests/object-good/function-returning-object.hir, + * tests/object-good/function-returning-object.hpr, + * tests/object-good/function-returning-object.lir, + * tests/object-good/function-returning-object.lpr, + * tests/object-good/function-returning-object.sta, + * tests/object-good/function-returning-object.u.s, + * tests/object-good/function-taking-an-object-as-argument.-e.s, + * tests/object-good/function-taking-an-object-as-argument.-e.u.s, + * tests/object-good/function-taking-an-object-as-argument.desugared, + * tests/object-good/function-taking-an-object-as-argument.err, + * tests/object-good/function-taking-an-object-as-argument.hir, + * tests/object-good/function-taking-an-object-as-argument.hpr, + * tests/object-good/function-taking-an-object-as-argument.lir, + * tests/object-good/function-taking-an-object-as-argument.lpr, + * tests/object-good/function-taking-an-object-as-argument.s, + * tests/object-good/function-taking-an-object-as-argument.sta, + * tests/object-good/function-taking-an-object-as-argument.u.s, + * tests/object-good/function-returning-object.s: + Regen. + * tests/object-type/invalid-forward-references-to-members.tig: + ``Fix'' this test, so that it triggers a type error, instead of a + binding error. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2654 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-12 Roland Levillain + + Version 1.20, for 2009-lc-7.0. + + * configure.ac: Version 1.20. + * NEWS: Update. + * src/type/class.cc (Class::Class): Add required stagize marks + around initializers of hidden attributes. + * dev/stagize: Actually prune src/type/class.hxx. + Hide MonoBURG's outputs. + Do not deliver the object desugaring facility at all, yet. + Fix the leopardization w.r.t. the target module. + * lib/misc/map.hh: Typo. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2653 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-08 Roland Levillain + + Simplify the manipulation of class names in object::DesugarVisitor. + + * src/object/libobject.hh (class_names_type): Change type to + misc::map. + * src/object/desugar-visitor.hh, src/object/desugar-visitor.cc + (class_name_find): Remove method. + (cast_fun_name, create_variant_ty, create_variant_exp) + (operator() (const ast::TypeDecs&)) + (operator() (const ast::ObjectExp&)) + (operator() (const ast::NameTy&)): + Adjust callers. + (DesugarVisitor::DesugarVisitor): Initialize all members. + (classes_types): New typedef. + (create_variant_ty, create_variant_exp) + (operator() (const ast::TypeDecs&)): Use it. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2652 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-07 Roland Levillain + + Don't show code related to object desugaring too early. + + * configure.ac, NEWS: Version 1.19a. + * src/type/class.hh, src/type/class.hxx (id_get) + (subclasses_get, subclasses_add, subclasses_clear): + Hide these methods if object-desugar is not enabled. + * src/object/type-checker.cc (TypeChecker::TypeChecker) + (operator() (ast::ClassTy&)): Hide code likewise. + * dev/stagize: Prune src/object/type-checker.cc if needed. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2651 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-07 Roland Levillain + + Have misc::map work with misc::put. + + * lib/misc/map.hh, lib/misc/map.hxx (value_type): Make this + typedef public. + (key_type, mapped_type, key_compare): New typedefs. + (key_comp, lower_bound): New methods. + Delegate to the underlying std::map. + (operator[]): Make it non-virtual, so that misc::map can be used + with a mapped type which doesn't model Default Constructible. + * lib/misc/containers.hh: Wrap long lines. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2650 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-06 Roland Levillain + + Version 1.19, for 2009-lc-6.0. + + * configure.ac: Version 1.19. + * NEWS: Update. + * dev/stagize: Don't deliver code related to object desugaring to + students (yet). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2649 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-03 Benoßt Sigoure + + Fix the previous patch. * build-aux/tc-prog.m4: Swap the values of tc_ver and tc_req. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2648 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-06-03 Benoßt Sigoure + + Use more M4 in TC_PROG. * build-aux/tc-prog.m4: Check and transform arguments statically `at compile time' instead of using sed at configure time. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2647 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-31 Roland Levillain + + Desugar function calls with object as argument(s). + + * src/object/desugar-visitor.hh, src/object/desugar-visitor.cc + (operator() (const ast::NameTy&)): New method. + Desugar class names. + Use it... + (operator() (const ast::VarDec&)): ...here to factor the creation + of NameTy's. + (operator() (const ast::CallExp&)): New method. + Add object casts around arguments when needed. + * src/object/test-desugar.cc: Add a third test. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2646 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-31 Roland Levillain + + Handle polymorphic assignments. + + * src/object/desugar-visitor.hh, src/object/desugar-visitor.cc + (operator() (const ast::AssignExp)): New method. + Handle polymorphic assignments. + * src/object/test-desugar.cc: Extend the second test to check the + previous method. + * tests/object-good/upcast.-e.u.s, + * tests/object-good/upcast.desugared, + * tests/object-good/upcast.err, + * tests/object-good/upcast.hir, + * tests/object-good/upcast.hpr, + * tests/object-good/upcast.lir, + * tests/object-good/upcast.lpr, + * tests/object-good/upcast.s, + * tests/object-good/upcast.sta, + * tests/object-good/upcast.u.s, + * tests/object-good/upcast.-e.s: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2645 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-31 Roland Levillain + + Generate desugared outputs for tests with objects. + + * tests/mk-Makefile-am: Generate desugared outputs for tests with + objects. + * tests/object-good/Makefile.am: Regen. + * tests/tests.mk (DESUGAR): New variable. + (MAINTAINERCLEANFILES): Add $(srcdir)/*.desugared. + ($(srcdir)/%.desugared): New target. + Make it precious. + * dev/stagize: Handle *.desugared files during the + leopardization. + * tests/object-good/trivial-class.tig: New test. + * tests/object-good/trivial-class.-e.s, + * tests/object-good/trivial-class.-e.u.s, + * tests/object-good/trivial-class.desugared, + * tests/object-good/trivial-class.err, + * tests/object-good/trivial-class.hir, + * tests/object-good/trivial-class.hpr, + * tests/object-good/trivial-class.lir, + * tests/object-good/trivial-class.lpr, + * tests/object-good/trivial-class.out, + * tests/object-good/trivial-class.s, + * tests/object-good/trivial-class.sta, + * tests/object-good/trivial-class.u.s, + * tests/object-good/attribute-modification.desugared, + * tests/object-good/function-call-in-method.desugared, + * tests/object-good/function-returning-an-object.desugared, + * tests/object-good/function-returning-object.desugared, + * tests/object-good/function-taking-an-object-as-argument.desugared, + * tests/object-good/function-taking-object-as-argument.desugared, + * tests/object-good/inner-class-with-same-member-names.desugared, + * tests/object-good/instantiate-object.desugared, + * tests/object-good/method-call.desugared, + * tests/object-good/method-using-self-as-argument.desugared, + * tests/object-good/redefining-object.desugared, + * tests/object-good/simple-class.desugared, + * tests/object-good/simple-extends.desugared, + * tests/object-good/simple-instantiation.desugared, + * tests/object-good/type-simple-class.desugared, + * tests/object-good/type-simple-extends.desugared, + * tests/object-good/upcast.desugared, + * tests/object-good/using-members-from-within-the-class.desugared, + * tests/object-good/valid-forward-reference-to-class.desugared, + * tests/object-good/variable-modification.desugared, + * tests/object-good/variable-of-type-object.desugared, + * tests/object-good/vehicle.desugared, + * tests/object-good/visitor.desugared: + New test outputs. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2644 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-30 Roland Levillain + + Add a test on (invalid) attribute redefinition. + + * tests/object-type/attribute-redefined.tig: New test. + * tests/object-type/Makefile.am (dist_noinst_DATA): Add + attribute-redefined.tig. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2643 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-30 Roland Levillain + + Factor the pretty-printing of RecordExp and RecordTy. + + * src/ast/pretty-printer.hh, src/ast/pretty-printer.cc + (operator() (const RecordExp&), operator() (const RecordTy&)): + Factor code into... + (print_record): ...this (new) method. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2642 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-30 Roland Levillain + + Fix LC-5 code delivered to students. + + * src/translate/translator.cc + (operator() (const ast::CallExp&)): Fix code delivered to + students, which lacks (intentionally) + ast::FunctionDec::sl_needed_. + (operator() (const ast::VarDec&)): Ensure variables are enclosed + in a level. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2641 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-20 Roland Levillain + + Regen test outputs for tests/object-good. + + * tests/object-good/function-call-in-method.-e.s, + * tests/object-good/function-call-in-method.-e.u.s, + * tests/object-good/function-call-in-method.err, + * tests/object-good/function-call-in-method.hir, + * tests/object-good/function-call-in-method.hpr, + * tests/object-good/function-call-in-method.lir, + * tests/object-good/function-call-in-method.lpr, + * tests/object-good/function-call-in-method.s, + * tests/object-good/function-call-in-method.sta, + * tests/object-good/function-call-in-method.u.s, + * tests/object-good/function-taking-object-as-argument.-e.s, + * tests/object-good/function-taking-object-as-argument.-e.u.s, + * tests/object-good/function-taking-object-as-argument.err, + * tests/object-good/function-taking-object-as-argument.hir, + * tests/object-good/function-taking-object-as-argument.hpr, + * tests/object-good/function-taking-object-as-argument.lir, + * tests/object-good/function-taking-object-as-argument.lpr, + * tests/object-good/function-taking-object-as-argument.s, + * tests/object-good/function-taking-object-as-argument.sta, + * tests/object-good/function-taking-object-as-argument.u.s, + * tests/object-good/instantiate-object.-e.s, + * tests/object-good/instantiate-object.-e.u.s, + * tests/object-good/instantiate-object.err, + * tests/object-good/instantiate-object.hir, + * tests/object-good/instantiate-object.hpr, + * tests/object-good/instantiate-object.lir, + * tests/object-good/instantiate-object.lpr, + * tests/object-good/instantiate-object.s, + * tests/object-good/instantiate-object.sta, + * tests/object-good/instantiate-object.u.s, + * tests/object-good/redefining-object.-e.s, + * tests/object-good/redefining-object.-e.u.s, + * tests/object-good/redefining-object.err, + * tests/object-good/redefining-object.hir, + * tests/object-good/redefining-object.hpr, + * tests/object-good/redefining-object.lir, + * tests/object-good/redefining-object.lpr, + * tests/object-good/redefining-object.s, + * tests/object-good/redefining-object.sta, + * tests/object-good/redefining-object.u.s, + * tests/object-good/simple-class.-e.s, + * tests/object-good/simple-class.-e.u.s, + * tests/object-good/simple-class.err, + * tests/object-good/simple-class.hir, + * tests/object-good/simple-class.hpr, + * tests/object-good/simple-class.lir, + * tests/object-good/simple-class.lpr, + * tests/object-good/simple-class.s, + * tests/object-good/simple-class.sta, + * tests/object-good/simple-class.u.s, + * tests/object-good/simple-extends.-e.s, + * tests/object-good/simple-extends.-e.u.s, + * tests/object-good/simple-extends.err, + * tests/object-good/simple-extends.hir, + * tests/object-good/simple-extends.hpr, + * tests/object-good/simple-extends.lir, + * tests/object-good/simple-extends.lpr, + * tests/object-good/simple-extends.s, + * tests/object-good/simple-extends.sta, + * tests/object-good/simple-extends.u.s, + * tests/object-good/simple-instantiation.-e.s, + * tests/object-good/simple-instantiation.-e.u.s, + * tests/object-good/simple-instantiation.err, + * tests/object-good/simple-instantiation.hir, + * tests/object-good/simple-instantiation.hpr, + * tests/object-good/simple-instantiation.lir, + * tests/object-good/simple-instantiation.lpr, + * tests/object-good/simple-instantiation.s, + * tests/object-good/simple-instantiation.sta, + * tests/object-good/simple-instantiation.u.s, + * tests/object-good/type-simple-class.-e.s, + * tests/object-good/type-simple-class.-e.u.s, + * tests/object-good/type-simple-class.err, + * tests/object-good/type-simple-class.hir, + * tests/object-good/type-simple-class.hpr, + * tests/object-good/type-simple-class.lir, + * tests/object-good/type-simple-class.lpr, + * tests/object-good/type-simple-class.s, + * tests/object-good/type-simple-class.sta, + * tests/object-good/type-simple-class.u.s, + * tests/object-good/type-simple-extends.-e.s, + * tests/object-good/type-simple-extends.-e.u.s, + * tests/object-good/type-simple-extends.err, + * tests/object-good/type-simple-extends.hir, + * tests/object-good/type-simple-extends.hpr, + * tests/object-good/type-simple-extends.lir, + * tests/object-good/type-simple-extends.lpr, + * tests/object-good/type-simple-extends.s, + * tests/object-good/type-simple-extends.sta, + * tests/object-good/type-simple-extends.u.s, + * tests/object-good/variable-modification.-e.s, + * tests/object-good/variable-modification.-e.u.s, + * tests/object-good/variable-modification.err, + * tests/object-good/variable-modification.hir, + * tests/object-good/variable-modification.hpr, + * tests/object-good/variable-modification.lir, + * tests/object-good/variable-modification.lpr, + * tests/object-good/variable-modification.s, + * tests/object-good/variable-modification.sta, + * tests/object-good/variable-modification.u.s, + * tests/object-good/variable-of-type-object.-e.s, + * tests/object-good/variable-of-type-object.-e.u.s, + * tests/object-good/variable-of-type-object.err, + * tests/object-good/variable-of-type-object.hir, + * tests/object-good/variable-of-type-object.hpr, + * tests/object-good/variable-of-type-object.lir, + * tests/object-good/variable-of-type-object.lpr, + * tests/object-good/variable-of-type-object.s, + * tests/object-good/variable-of-type-object.sta, + * tests/object-good/variable-of-type-object.u.s, + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2640 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-20 Roland Levillain + + Start object desugaring. + + * lib/misc/containers.hxx: Wrap lines longer than 80 columns. + * src/parse/tasks.cc, + * src/parse/libparse.hh, src/parse/libparse.cc, + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc, + * src/parse/parsetiger.yy: + Rename studentize `object' tags as `object-parse'. + * src/parse/parsetiger.hh, src/parse/parsetiger.cc: Regen. + * dev/stagize: Adjust. + Handle tag `object-desugar'. + * dev/studentize_tc.conf: s/object/object-parse/. + Add object-desugar. + * src/tc.mk (libobject): Append $(libdesugar). + * src/ast/pretty-printer.hh, src/ast/pretty-printer.cc + (operator() (const fields_type&)): Remove method. + (operator() (const RecordExp&), operator() (const RecordTy&)): + Print one field per line. + * src/bind/renamer.cc (new_name_compute, new_name, visit): + Move methods... + * src/bind/renamer.hxx: ...here (new file). + * src/bind/renamer.hh: Include it. + * src/bind/Makefile.am (libbind_la_SOURCES): Add renamer.hxx + * src/type/named.hh, src/type/named.hxx (name_get): New accessor. + * src/type/class.hh, src/type/class.hxx, src/type/class.cc + (id_, subclasses_): New attributes. + (id_get, subclasses_get): New accessors. + (subclass_add, subclasses_clear): New manipulators. + (fresh_id): New class method. + (Class::Class): Adjust ctor. + * src/type/type-checker.cc (operator() (ast::RecordExp&)): + Aesthetic changes in error messages. + * src/object/tasks.hh, src/object/tasks.cc + (object_rename, object_desugar): New tasks. + (class_names): New. + * src/object/libobject.hh, src/object/libobject.cc + (rename, desugar, raw_desugar): New functions. + * src/object/type-checker.cc + (TypeChecker::TypeChecker): Reset the subclasses of Object at the + construction of the visitor. + (operator() (ast::ClassTy&)): Populate the subclasses of the + class type. + * src/object/renamer.hh, src/object/renamer.cc: New files. + Rename the identifiers of an AST to unique names, with support for + objects. + * src/object/desugar-visitor.hh, src/object/desugar-visitor.cc: + New files. + Partial implementation of the desugaring of object constructs. + * src/object/test-type.cc: Remove useless studentize tags. + * src/object/test-desugar: New test. + * src/object/Makefile.am (libobject_la_SOURCES): Add renamer.hh, + renamer.cc, desugar-visitor.hh and desugar-visitor.cc. + (check_PROGRAMS): Add test-desugar. + (test_desugar_SOURCES, test_desugar_LDADD): New. + + + Clean up the desugar module. + + * src/desugar/libdesugar.hh: Improve documentation. + * src/desugar/tasks.cc (desugar, raw_desugar): Remove a memory + memory leak. + (overfun_desugar): Simplify, using desugar::tasks::desugar. + * src/desugar/tasks.cc (applicable, apply) + * src/inlining/tasks.cc (applicable, apply): Factor and move... + * src/astclone/libastclone.hh, src/astclone/libastclone.hxx: + ...here. + * src/desugar/tasks.cc (bound_checks_add) + (overfun_bound_checks_add, bound_checks_add) + * src/inlining/tasks.cc (inline_expand, overfun_inline_expand) + (prune, overfun_prune): Adjust callers. + * src/desugar/bound-checking-visitor.cc (parse_decs): Move + function... + * src/parse/libparse.hh, src/parse/libparse.cc: ...here, and make + it public. + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::TypeDecs&)): Adjust caller. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2639 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-18 Roland Levillain + + Don't show students unexpected code in astclone::Cloner. + + * dev/ast-cloner-gen: Hide anything related to + FunctionDec::sl_needed_ and FunctionDec::sl_escapes_. + * src/astclone/cloner.cc: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2638 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-16 Roland Levillain + + Fix the lc distribution. + + * configure.ac, NEWS: Version 1.18a. + * src/target/mips/spim-assembly.cc (call_build) + * src/target/ia32/gas-assembly.cc (call_build): Split the + generated instruction so that the `tc_' prefix appears clearly, to + help codenamize.pl identify it. + * dev/stagize: Remove the parent graph and static link visitors + only in student distributions. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2637 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-15 Roland Levillain + + Version 1.18, for 2009-lc-5.0. + + * configure.ac: Version 1.18 + * NEWS: Update. + * src/translate/access.cc, src/translate/level.cc, + * src/frame/access.cc: Show more code to students. + * src/translate/translator.cc (visitFunctionDecHeader): Explain + how to replace the result of FunctionDec::escapes_get for + students who did not work on the LC-E option. + (visitFunctionDecBody, operator() (const ast::CallExp&)): Hide + anything related to FunctionDec::sl_needed_, as it is not part of + the students' assignment. + * src/callgraph/tasks.hh, src/callgraph/tasks.cc, + * src/callgraph/libcallgraph.hh, src/callgraph/libcallgraph.cc, + * src/callgraph/fundec-graph.hh, + * src/callgraph/tiger_callgraph.i + * src/callgraph/Makefile.am: + Hide anything related to the parent graph and the static link + visitors. + * dev/stagize: Deliver the call graph visitor to students. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2636 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-11 Alain Vongsouvanh + + Update tc-check to check type with object extension. * tests/tc-check.in: add type checking with object extension. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2635 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-07 Roland Levillain + + Add more tests on object support. + + * tests/object-type/builtin-object-vs-custom-object.tig, + * tests/object-type/illegal-redefinition-of-object-1.tig, + * tests/object-type/illegal-redefinition-of-object-2.tig, + * tests/object-good/redefining-object.tig, + * tests/object-good/variable-of-type-object.tig: + New tests. + * tests/object-good/redefining-object.-e.s, + * tests/object-good/redefining-object.-e.u.s, + * tests/object-good/redefining-object.err, + * tests/object-good/redefining-object.hir, + * tests/object-good/redefining-object.hpr, + * tests/object-good/redefining-object.lir, + * tests/object-good/redefining-object.lpr, + * tests/object-good/redefining-object.out, + * tests/object-good/redefining-object.s, + * tests/object-good/redefining-object.sta, + * tests/object-good/redefining-object.u.s, + * tests/object-good/variable-of-type-object.-e.s, + * tests/object-good/variable-of-type-object.-e.u.s, + * tests/object-good/variable-of-type-object.err, + * tests/object-good/variable-of-type-object.hir, + * tests/object-good/variable-of-type-object.hpr, + * tests/object-good/variable-of-type-object.lir, + * tests/object-good/variable-of-type-object.lpr, + * tests/object-good/variable-of-type-object.out, + * tests/object-good/variable-of-type-object.s, + * tests/object-good/variable-of-type-object.sta, + * tests/object-good/variable-of-type-object.u.s: + New test products. + * tests/object-type/Makefile.am, + * tests/object-good/Makefile.am: + Regen. + * src/parse/parsetiger.yy: Typo in comment. + * src/parse/parsetiger.cc: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2634 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-07 Roland Levillain + + Fix the previous patch. + + * configure.ac, NEWS: Version 1.17a. + * src/bind/binder.cc + (visitDecHeader) + (visitDecBody): Move... + * src/bind/binder.hxx: ...here. + * src/object/binder.hh, src/object/binder.cc: + (visitDecHeader (ast::MethodDec&)) + (visitDecBody (ast::MethodDec&)): Turn these methods into + specializations of... + (visitDecHeader, visitDecBody): ...these generic methods (new). + (visitDecHeader) + (visitDecBody): New specializations. + (operator() (ast::ForExp&), operator() (ast::FunctionDecs&)): New. + (class_): Turn this pointer into... + (within_class_ty_): ...a flag. + (Binder::Binder): Adjust ctor. + (operator() (ast::ClassTy&)): Likewise. + (operator() (ast::VarDec&)): Ditto. + Factor redundant parts. + * tests/object-good/vehicle.tig, tests/object-good/visitor.tig: + Fix tests w.r.t. access to members from within their enclosing + classes. + * tests/object-good/using-members-from-within-the-class.tig: + New test. + * tests/object-good/using-members-from-within-the-class.-e.s, + * tests/object-good/using-members-from-within-the-class.-e.u.s, + * tests/object-good/using-members-from-within-the-class.err, + * tests/object-good/using-members-from-within-the-class.hir, + * tests/object-good/using-members-from-within-the-class.hpr, + * tests/object-good/using-members-from-within-the-class.lir, + * tests/object-good/using-members-from-within-the-class.lpr, + * tests/object-good/using-members-from-within-the-class.out, + * tests/object-good/using-members-from-within-the-class.s, + * tests/object-good/using-members-from-within-the-class.sta, + * tests/object-good/using-members-from-within-the-class.u.s: + New test products. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2633 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-05-06 Benoßt Tailhades + + Correct variable binding in methods. * src/object/binder.cc: (operator() (ast::VarDec&)): New method to correct binding of attribute which name conflicts with a variable one. * src/object/binder.hh: Add a class_ attribute which is the current class. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2632 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-27 Roland Levillain + + Version 1.17, for 2009-lc-4.1. + + * configure.ac, NEWS: Version 1.17. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2631 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-26 Roland Levillain + + Add more tests on type-checking with objects. + + * src/object/type-checker.cc (visitDecHeader (ast::MethodDec&)): + Improve comment. + * src/type/method.cc: Remove spurious studentize tag. + * src/type/function.cc: Aesthetic change. + * src/desugar/libdesugar.hh: No longer include + callgraph/fundec-graph.hh. + * tests/object-good/upcast.tig, + * tests/object-good/valid-forward-reference-to-class.tig, + * tests/object-bind/invalid-forward-reference-to-class.tig, + * tests/object-type/downcast.tig, + * tests/object-type/invalid-forward-references-to-members.tig: + New tests. + * tests/object-good/Makefile.am + * tests/object-bind/Makefile.am, + * tests/object-type/Makefile.am: + Regen. + * tests/object-good/upcast.-e.s, + * tests/object-good/upcast.-e.u.s, + * tests/object-good/upcast.err, + * tests/object-good/upcast.hir, + * tests/object-good/upcast.hpr, + * tests/object-good/upcast.lir, + * tests/object-good/upcast.lpr, + * tests/object-good/upcast.out, + * tests/object-good/upcast.s, + * tests/object-good/upcast.sta, + * tests/object-good/upcast.u.s, + * tests/object-good/valid-forward-reference-to-class.-e.s, + * tests/object-good/valid-forward-reference-to-class.-e.u.s, + * tests/object-good/valid-forward-reference-to-class.err, + * tests/object-good/valid-forward-reference-to-class.hir, + * tests/object-good/valid-forward-reference-to-class.hpr, + * tests/object-good/valid-forward-reference-to-class.lir, + * tests/object-good/valid-forward-reference-to-class.lpr, + * tests/object-good/valid-forward-reference-to-class.out, + * tests/object-good/valid-forward-reference-to-class.s, + * tests/object-good/valid-forward-reference-to-class.sta + * tests/object-good/valid-forward-reference-to-class.u.s: + New test products. + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2630 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-26 Roland Levillain + + Forbid covariant and contravariant methods. + + * src/type/type.hh, src/type/type.cc (type::hide_actual_types): + New boolean xalloc slot, stating whether types should be printed + in short or long form. + * src/type/function.cc (Function::print): Use + type::hide_actual_types to print the types of the argument(s) and + return value of a Function in their short form (name only, no + full definition) for readability purpose. + (Function::compatible_with): Check the number of arguments and the + return type too. + * src/type/method.hh, src/type/method.cc (Method::super_type): New + typedef. + (Method::compatible_with): New method. + * src/type/named.cc (Named::print): Don't print the actual type if + `hide_actual_types' is set to `true' for this output stream. + * src/object/type-checker.cc (visitDecHeader (ast::MethodDec&)): + Aesthetic changes in error messages. + * tests/object-type/covariant-method.tig, + * tests/object-type/covariant-return-type.tig, + * tests/object-type/contravariant-method.tig, + * tests/object-type/contravariant-return-type.tig: + New tests. + * tests/object-type/Makefile.am: Regen. + * tests/object-good/method-using-self-as-argument.err, + * tests/object-good/method-using-self-as-argument.hpr, + * tests/object-good/method-using-self-as-argument.lpr, + * tests/object-good/method-using-self-as-argument.out, + * tests/object-good/method-using-self-as-argument.sta, + * tests/object-good/visitor.err, + * tests/object-good/visitor.hpr, + * tests/object-good/visitor.lpr, + * tests/object-good/visitor.out, + * tests/object-good/visitor.sta: + New test products. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2629 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-25 Alain Vongsouvanh + + Fix Function print method. + + * src/type/function.cc: Fix print method. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2628 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-24 Alain Vongsouvanh + + Check method signature sanity in super class. * src/object/type-checker.cc: Modify VisitDecHeader for MethodDec to check for signature sanity between this and this->super_class. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2627 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-24 Roland Levillain + + Type-check class definitions in three steps instead of two. + + * configure.ac: Version 1.16a. + * NEWS: Update. + * src/type/named.hxx (type): Aesthetic change. + * src/object/type-checker.hh, src/object/type-checker.cc + (operator() (ast::TypeDecs&)): New method. + Visit class definitions in three steps, instead of two. + (operator() (ast::ClassTy&)): Move the visit of the + members... + (visitDecMember): ...here (new method). + * tests/object-good/method-using-self-as-argument.tig, + * tests/object-good/visitor.tig, + * tests/object-type/forward-method-reference-1.tig, + * tests/object-type/forward-method-reference-2.tig, + * tests/object-type/method-redefinition-with-different-signature.tig: + New tests. + * tests/object-good/method-using-self-as-argument.-e.s, + * tests/object-good/method-using-self-as-argument.-e.u.s, + * tests/object-good/method-using-self-as-argument.hir, + * tests/object-good/method-using-self-as-argument.lir, + * tests/object-good/method-using-self-as-argument.s, + * tests/object-good/method-using-self-as-argument.u.s, + * tests/object-good/visitor.-e.s, + * tests/object-good/visitor.-e.u.s, + * tests/object-good/visitor.hir, + * tests/object-good/visitor.lir, + * tests/object-good/visitor.s, + * tests/object-good/visitor.u.s: + New test products. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2626 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-23 Roland Levillain + + Version 1.16, for 2009-lc-4.0. + + * configure.ac: Version 1.16. + * NEWS, AUTHORS: Update. + * dev/stagize: Touch the scanner to prevent its regeneration. + * dev/ast-cloner-gen: Factor the display of visit methods for decs + types. + Hide some code. + * src/astclone/cloner.hh, src/astclone/cloner.cc: Regen. + * src/type/class.cc (sound): Make the comment more explicit. + * src/type/README: Mention type::Class and type::Method. + * src/object/type-checker.cc: Fix closing studentize tag. + * tests/type/bad-_main-type.tig: Remove test. + * tests/type/Makefile.am: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2625 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-23 Roland Levillain + + Add new test products. + + * tests/object-good/function-returning-an-object.err, + * tests/object-good/function-returning-an-object.hpr, + * tests/object-good/function-returning-an-object.lpr, + * tests/object-good/function-returning-an-object.out, + * tests/object-good/function-returning-an-object.sta, + * tests/object-good/function-returning-object.err, + * tests/object-good/function-returning-object.hpr, + * tests/object-good/function-returning-object.lpr, + * tests/object-good/function-returning-object.out, + * tests/object-good/function-returning-object.sta, + * tests/object-good/function-taking-an-object-as-argument.err, + * tests/object-good/function-taking-an-object-as-argument.hpr, + * tests/object-good/function-taking-an-object-as-argument.lpr, + * tests/object-good/function-taking-an-object-as-argument.out, + * tests/object-good/function-taking-an-object-as-argument.sta, + * tests/object-good/function-taking-object-as-argument.err, + * tests/object-good/function-taking-object-as-argument.hpr, + * tests/object-good/function-taking-object-as-argument.lpr, + * tests/object-good/function-taking-object-as-argument.out, + * tests/object-good/function-taking-object-as-argument.sta, + * tests/object-good/instantiate-object.err, + * tests/object-good/instantiate-object.hpr, + * tests/object-good/instantiate-object.lpr, + * tests/object-good/instantiate-object.out, + * tests/object-good/instantiate-object.sta: + New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2624 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-23 Roland Levillain + + Forbid (direct) inheritance from non-class types. + + * src/object/type-checker.cc (object): Catch classes inheriting + directly from an non-class type. + * tests/object-type/int-as-super-class.tig: New. + * tests/object-type/Makefile.am: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2623 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-20 Roland Levillain + + Type-check correctly instances of the built-in type `Object'. + + * src/type/class.cc, src/type/class.hh (object_class): New method. + Returns the unique class type `Object'. + * src/object/type-checker.hh, src/object/type-checker.cc + (operator() (ast::NameTy&)): New method. + Handle the case of `Object'. + (operator() (ast::ClassTy&)): Handle the case of `Object' as super + class. + * tests/object-good/function-returning-object.tig, + * tests/object-good/function-returning-an-object.tig, + * tests/object-good/function-taking-object-as-argument.tig, + * tests/object-good/function-taking-an-object-as-argument.tig, + * tests/object-good/instantiate-object.tig: + New tests. + * tests/object-good/function-returning-an-object.-e.s, + * tests/object-good/function-returning-an-object.-e.u.s, + * tests/object-good/function-returning-an-object.hir, + * tests/object-good/function-returning-an-object.lir, + * tests/object-good/function-returning-an-object.s, + * tests/object-good/function-returning-an-object.tig, + * tests/object-good/function-returning-an-object.u.s, + * tests/object-good/function-returning-object.-e.s, + * tests/object-good/function-returning-object.-e.u.s, + * tests/object-good/function-returning-object.hir, + * tests/object-good/function-returning-object.lir, + * tests/object-good/function-returning-object.s, + * tests/object-good/function-returning-object.tig, + * tests/object-good/function-returning-object.u.s, + * tests/object-good/function-taking-an-object-as-argument.-e.s, + * tests/object-good/function-taking-an-object-as-argument.-e.u.s, + * tests/object-good/function-taking-an-object-as-argument.hir, + * tests/object-good/function-taking-an-object-as-argument.lir, + * tests/object-good/function-taking-an-object-as-argument.s, + * tests/object-good/function-taking-an-object-as-argument.tig, + * tests/object-good/function-taking-an-object-as-argument.u.s, + * tests/object-good/function-taking-object-as-argument.-e.s, + * tests/object-good/function-taking-object-as-argument.-e.u.s, + * tests/object-good/function-taking-object-as-argument.hir, + * tests/object-good/function-taking-object-as-argument.lir, + * tests/object-good/function-taking-object-as-argument.s, + * tests/object-good/function-taking-object-as-argument.tig, + * tests/object-good/function-taking-object-as-argument.u.s, + * tests/object-good/instantiate-object.-e.s, + * tests/object-good/instantiate-object.-e.u.s, + * tests/object-good/instantiate-object.hir, + * tests/object-good/instantiate-object.lir, + * tests/object-good/instantiate-object.s, + * tests/object-good/instantiate-object.tig, + * tests/object-good/instantiate-object.u.s: + New test products (generated). + * tests/object-good/Makefile.am: Regen. + * tests/tests.mk (HAVM_FLAGS): New. + Add memory options for GHC's runtime system (RTS) to prevent HAVM + from running out of memory. + ($(srcdir)/%.out $(srcdir)/%.err $(srcdir)/%.sta $(srcdir)/%.hpr) + ($(srcdir)/%.lpr): Use them. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2622 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-19 Roland Levillain + + Manipulate unary (1-ary) attributes with references instead of pointers. Simplify ast::GenVisitor::accept. + + * src/ast/ast.yml (ObjectExp::type_name, ClassTy::super): Make + these attributes mandatory, so that their accessors use + references, not pointers. + * src/ast/class-ty.hh, src/ast/class-ty.hxx, + * src/ast/object-exp.hh, src/ast/object-exp.hxx: Regen. + * src/ast/pretty-printer.cc + (operator() (const ObjectExp&), operator() (const ClassTy&)) + * src/object/binder.cc + (operator() (ast::ObjectExp&), operator() (ast::ClassTy&)) + * src/object/type-checker.cc + (operator() (ast::ObjectExp&), operator() (ast::ClassTy&)): + Adjust. + * src/object/binder.cc (visitDecBody (ast::MethodDec&)): + Don't check whether the pointer is null or not before calling + accept: the body of a method shall always be defined. + + * dev/ast-visitor-gen (accept (E*, V&)): Remove the second + argument, and change the signature of this method into... + (accept (E*)): ...this. + * src/ast/visitor.hxx (accept (typename Const::type*)): + Likewise. + Adjust the body of this method (use `this' instead of `v'). + * src/ast/visitor.hh: Regen. + * src/ast/default-visitor.hxx + (operator() (typename Const::type&)) + (operator() (typename Const::type&)) + * src/escapes/escapes-visitor.cc (operator() (ast::VarDec&)): + Adjust callers. + + * tests/tc-check.in (load_tests): Aesthetic changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2621 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-18 Roland Levillain + + Have TCSH catch up with the recent renaming in lib/misc/. + + * lib/misc/tiger_misc.i, + * src/tiger_common.i, + * src/parse/tiger_parse.i, + * src/liveness/tiger_liveness.i + s/misc::FileLibrary/misc::file_library/ + s/misc::Timer/misc::timer/ + s/misc::Error/misc::error/ + * tcsh/python/test-front-end.py, tcsh/python/test-compiler.py, + * tcsh/python/ti.py + s/tc.misc.FileLibrary/tc.misc.file_library/. + * tcsh/ruby/test-front-end.rb, tcsh/ruby/test-compiler.rb: + s/Tc::Misc::FileLibrary.new/Tc::Misc::File_library.new. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2620 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-18 Roland Levillain + + Update tc-check. + + * tests/tc-check.in (load_tests): Rename directory `overload' as + `overload-good'. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2619 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-18 Roland Levillain + + Fix and add tests. + + * tests/overload/: Rename directory as... + * tests/overload-good/: ...this. + * tests/mk-Makefile-am: Add `--object-desugar' to AM_TCFLAGS when + for `object-good'. + Rename directory `overload' as `overload-good'. + (all_tests): Add object-type. + * tests/Makefile.am (SUBDIRS): Likewise. Add overload-bind-maint + and overload-type-maint. + * tests/object-type/duplicate-members.tig, + * tests/object-good/inner-class-with-same-member-names.tig: + New tests. + * tests/object-good/inner-class-with-same-member-names.hir, + * tests/object-good/inner-class-with-same-member-names.lir, + * tests/object-good/inner-class-with-same-member-names.u.s, + * tests/object-good/inner-class-with-same-member-names.s, + * tests/object-good/inner-class-with-same-member-names.-e.u.s, + * tests/object-good/inner-class-with-same-member-names.-e.s, + * tests/object-good/inner-class-with-same-member-names.err, + * tests/object-good/inner-class-with-same-member-names.sta, + * tests/object-good/inner-class-with-same-member-names.out, + * tests/object-good/inner-class-with-same-member-names.hpr, + * tests/object-good/inner-class-with-same-member-names.lpr: + New outputs (generated). + * tests/object-good/Makefile.am: Regen. + * tests/object-type/Makefile.am: New (generated). + * tests/object-good/vehicle.tig: Fix test. + * configure.ac: Rename tests/overload/Makefile as + tests/overload-good/Makefile. + Configure tests/overload-bind-maint/Makefile, + tests/overload-type-maint/Makefile and tests/object-type/Makefile. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2618 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-18 Roland Levillain + + Add a task `object-parse'. + + * src/object/tasks.hh, src/object/tasks.cc (object-parse): New + task. + (object-bind): Replace the dependency on `object' and `parse' by a + dependency on `object-parse'. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2617 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-14 Benoßt Perrot + + Enforce STL coding style in lib/misc. + + * lib/misc/endomap.hh, lib/misc/endomap.hcc: + Rename `Endomap' as `endo_map'. + * src/temp/identifier.hh, src/temp/temp.hh, src/temp/fwd.hh: + Update accordingly. + + * lib/misc/escape.hh, lib/misc/escape.hxx, lib/misc/escape.cc: + Rename `Escape' as `escape'. + + * lib/misc/error.hh, lib/misc/error.hxx, lib/misc/error.cc: + Rename `Error' as `error'. + * lib/misc/test-error.cc, + * src/type/libtype.hh, src/type/libtype.cc, + * src/type/type-checker.hh, src/type/type-checker.hxx, + * src/type/type-checker.cc, + * src/escapes/libescapes.hh, src/escapes/libescapes.cc, + * src/escapes/escapes-check-visitor.hh, + * src/escapes/escapes-check-visitor.cc, + * src/desugar/libdesugar.cc, + * src/parse/scantiger.ll, + * src/bind/libbind.hh, src/bind/libbind.cc, + * src/bind/binder.hxx, src/bind/binder.cc, + * src/bind/test-bind.cc, + * src/overload/liboverload.hh, src/overload/liboverload.cc, + * src/overload/type-checker.cc, + * src/object/libobject.cc, src/object/libobject.hh, + * src/object/test-bind.cc, src/object/test-type.cc: + Update accordingly. + + * lib/misc/file-library.hh, lib/misc/file-library.hxx, + * lib/misc/file-library.cc: + Rename `FileLibrary' as `file_library'. + + * lib/misc/generic-variant.hh: + Respect 80-columns limit. + + * lib/misc/graph.hh, lib/misc/graph.hxx: + Rename `Graph' as `graph', rename `DirectedGraph' as + `directed_graph', `UndirectedGraph' as `undirected_graph'. + * lib/misc/test-graph.cc, + * src/callgraph/fundec-graph.hh: + Update accordingly. + + * lib/misc/pair.hh, lib/misc/pair.hxx: . + Rename `Pair' as `pair'. + + * lib/misc/path.hh, lib/misc/path.hxx, lib/misc/path.cc: + Rename `Path' as `path'. + * lib/misc/test-path.cc: + Update accordingly. + + * lib/misc/separator.hh, lib/misc/separator.hxx: + Rename `separator' as `separate', `Separator' as `separator'. + * lib/misc/test-separator.cc, + * src/ast/pretty-printer.cc, + * src/tree/trees.cc, src/tree/fragments.cc, + * src/translate/access.cc: + Update accordingly. + + * lib/misc/scoped-map.hh, lib/misc/scoped-map.hxx: + Rename `ScopedMap' as `scoped_map'. + * lib/misc/test-scoped.cc, + * src/symbol/test-symbol.cc, + * src/inlining/inliner.hh: + Update accordingly. + + * lib/misc/timer.hh, lib/misc/timer.hxx, lib/misc/timer.cc: + Rename `Timer' as `timer'. + * lib/misc/test-timer.cc, + * src/task/task-register.hh, + * src/task/task-register.hxx, + * src/regalloc/color.hh, src/regalloc/color.cc, + * src/regalloc/libregalloc.hh, src/regalloc/libregalloc.cc, + * src/regalloc/regallocator.hh, src/regalloc/regallocator.cc + * src/liveness/flowgraph.hxx, src/liveness/interference-graph.hxx, + * src/liveness/libliveness.hh, src/liveness/libliveness.cc: + Update accordingly. + + * lib/misc/map.hh, lib/misc/map.hxx: + Rename `Map' as `map'. + * src/parse/metavar-map.hh: + Update accordingly. + + * src/parse/libparse.hh, src/parse/libparse.cc, + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc, + * src/parse/tasks.cc, + * src/temp/temp.cc, + * src/bind/binder.hh, + * src/temp/label.cc, + * src/liveness/flowgraph.hh, src/liveness/interference-graph.hh, + * src/parse/parsetiger.yy, + Update according to all these renaming. + * src/parse/parsetiger.hh, src/parse/parsetiger.cc: + Regenerate. + + * src/common.hh, src/common.cc + Rename `timer' to `task_timer' and `error' to `task_error'. + * src/task/task-register.cc, src/task/task.cc, + * src/type/tasks.cc, + * src/regalloc/tasks.cc, + * src/liveness/tasks.cc, + * src/task/tasks.cc, + * src/bind/tasks.cc, + * src/object/tasks.cc, + * src/astclone/tasks.cc, + * src/overload/tasks.cc, + * src/tc.cc: + Update accordingly. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2616 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-13 Roland Levillain + + Polish the LC-4 distribution. + + * AUTHORS: Update. + * src/type/class.hh: Fix a comment. + * src/type/type-checker.hh, src/type/type-checker.hxx + (visitRoutineBody): New method. + Use it to factor... + * src/type/type-checker.cc (visitDecBody) + * src/object/type-checker.cc (visitDecBody (ast::MethodDec&)): + ...these methods. + * src/type/class.cc, src/type/type-checker.cc: Hide more code. + * dev/stagize: Remove type-related contents before LC-4. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2615 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-13 Roland Levillain + + Remove spurious entry. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2614 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-13 Roland Levillain + + Clean up dev/ and build-aux. + + * build-aux/ampersand.rb, build-aux/ampersand_test.yml: Move... + * dev/ampersand.rb, dev/ampersand_test.yml: ...here. + * dev/Makefile.am: Aesthetic changes. + (dist_noinst_SCRIPTS): Add ampersand.rb. + (EXTRA_DIST): Add studentize_tc.conf, + ampersand_test.yml and studentize_test.yml. + * Makefile.am: Add dev to SUBDIRS ahead of developers-only + targets. + Typo. + Aesthetic changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2613 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-13 Roland Levillain + + Update dev/stats. + + * dev/stats: Update. + Display the total number of SLOC in the project. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2612 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-12 Alain Vongsouvanh + + Add Object type-checking. * src/ast/ast.yml: Add non-const method for NameTy. * src/ast/name-ty.hh, * src/ast/name-ty.hxx: Regen. * src/bind/tasks.hh: Fix the DISJUNCTIVE_TASKS. * src/object/Makefile.am: Add type-checking sources. * src/object/libobject.cc, * src/object/libobject.hh: Add object-types-compute function. * src/object/tasks.cc, * src/object/tasks.hh: Add object-types-compute task. * src/object/test-type.cc: New Single file test for object type-checking. * src/object/type-checker.cc, * src/object/type-checker.hh: New Object type-checking visitor. * src/parse/parsetiger.cc, * src/parse/parsetiger.hh: Regen. * src/type/Makefile.am: Add the new types files. * src/type/attribute.cc, * src/type/attribute.hh, * src/type/attribute.hxx: New Attribute type. * src/type/class.cc, * src/type/class.hh, * src/type/class.hxx: New Class type. * src/type/method.cc, * src/type/method.hh, * src/type/method.hxx: New Method type. * src/type/tasks.hh: Add object-types-compute to the DISJUNCTIVE_TASK. * src/type/type-checker.cc, * src/type/type-checker.hxx: Move error_and_recover from the .cc to the .hxx. * tests/object-good/method-call.tig: Fix the method definition to pass the type-checking. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2611 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-12 Roland Levillain + + Provide a means to install the documentation through SSH. + + * Makefile.am (install-doc-remote): New target. + Register PHONY targets as such. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2610 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-12 Roland Levillain + + Typo, indentation. + + * src/type/function.hh (type::Function::Function): Typo in + comment. + * src/type/type-checker.cc + (type::TypeChecker::type (const ast::VarDecs&)): Fix indentation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2609 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-12 Roland Levillain + + Fix the previous patches. + + * build-aux/Makefile.am (dist_lisp_LISP): Add leopard.el. + * dev/stagize: Don't let codenamize.pl touch build-aux/Makefile.am. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2608 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-11 Roland Levillain + + Prevent codenamize.pl from renaming Vim scripts. + + * dev/stagize: Don't let codenamize.pl rename + build-aux/tiger-syntax.vim nor build-aux/tiger-ftdetect.vim. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2607 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-11 Roland Levillain + + * dev/stagize: Handle file names with directories as exceptions of codenamize.pl. Add build-aux/tiger.el to the list of exceptions. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2606 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-11 Roland Levillain + + Revamp Emacs' Tiger major mode, introduce a Leopard major mode. + + * build-aux/tiger.el: Incite users to use `autoload' (rather than + `require') to prepare the loading of the mode. + Have the example support header files (.tih) as well. + (leopard-font-lock-keywords): Tag reserved keywords and reserved + identifiers with a warning face. + * build-aux/leopard.el: New. + Made from tiger.el, with support for OOP constructs. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2605 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-07 Benoßt Sigoure + + * configure.ac: Use better english. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2604 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-07 Roland Levillain + + Fix studentize's marks in src/object/. + + * configure.ac, NEWS: Version 1.15a. + * src/object/tasks.hh, src/object/tasks.cc: Hide only code + students are expected to write at LC-3, not code already delivered! + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2603 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-07 Roland Levillain + + Fix ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2602 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-06 Roland Levillain + + Version 1.15, for 2009-lc-3.0. + + * configure.ac: Version 1.15. + Fix the macro allowing patterns starting with `LC_'. + * NEWS: Update. + * dev/ast-visitor-gen: Escape a backslash to avoid spurious + characters in the output. + * src/ast/visitor.hh: Regen. + * src/object/tasks.hh, src/object/tasks.cc + * src/object/libobject.hh, src/object/libobject.cc + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2601 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-06 Roland Levillain + + Fix object-aware bindings. + + * src/bind/binder.hh, src/bind/binder.cc + (operator() (ast::MethodDecs&)): New method, aborting. + * src/bind/binder.hxx (decs_visit (ast::MethodDecs&)): Remove. + * src/object/binder.cc (operator() (ast::SimpleVar&)): Rewrite. + (operator() (ast::NameTy&), operator() (ast::ObjectExp&)) + (operator() (ast::MethodCallExp&)) + (operator() (ast::MethodDecs&)): Perform a two-pass traversal by + hand, as in overload::operator() (ast::FunctionDecs&), because we + can't use decs_visit. + (visitDecBody (ast::MethodDec&)): Don't put `self' in the + environment, since we don't have a definition site for it. + * src/object/Makefile.am: Hide binding-related code before LC-3. + * tests/object-good/vehicle.tig: Fix the bindings in this test. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2600 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-06 Roland Levillain + + Remove any specific processing of function _main. + + * src/symbol/symbol.hh, src/symbol/symbol.hxx (match_substring) + (is_main): Remove. + * src/symbol/test-symbol.cc: Adjust. + * src/bind/binder.hh (is_main, main_found_): Remove. + * src/bind/binder.cc (is_main): Likewise. + Remove a (now useless) workaround for ICC 9.1. + * src/bind/libbind.cc (bind::bind): Adjust. + * src/object/libobject.cc (object::bind) + * src/overload/liboverload.cc (overload::bind): Likewise. + * src/bind/binder.cc (operator() (ast::CallExp&)) + (visitDecHeader (ast::FunctionDec&)) + * src/type/type-checker.cc + (visitDecHeader (ast::FunctionDec&)) + * src/overload/binder.cc (visitDecHeader (ast::FunctionDec&)): + Remove any specific processing of the _main function. + * TODO: Update. + * tcsh/python/tc.py: Include module object. + * tests/bind/call-to-_main.tig, tests/bind/inner-_main-fundec.tig + * tests/bind/nonexistent-_main.tig + * tests/bind/Makefile.am (dist_noinst_DATA): Remove + _startcall-to-_main.tig, _startinner-_main-fundec.tig, + _startnonexistent-_main.tig + + * src/parse/parsetiger.yy: Aesthetic changes. + * src/parse/parsetiger.cc: Regen. + * tcsh/README.deps: Typos. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2599 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-06 Roland Levillain + + Update outputs for tests/object-good. + + * tests/lexical/vehicle.tig: Move... + * tests/object-good/vehicle.tig: ...here. + * tests/object-good/attribute-modification.err, + * tests/object-good/attribute-modification.hpr, + * tests/object-good/attribute-modification.lpr, + * tests/object-good/attribute-modification.out, + * tests/object-good/attribute-modification.sta, + * tests/object-good/function-call-in-method.err, + * tests/object-good/function-call-in-method.hpr, + * tests/object-good/function-call-in-method.lpr, + * tests/object-good/function-call-in-method.out, + * tests/object-good/function-call-in-method.sta, + * tests/object-good/method-call.err, + * tests/object-good/method-call.hpr, + * tests/object-good/method-call.lpr, + * tests/object-good/method-call.out, + * tests/object-good/method-call.sta, + * tests/object-good/simple-class.err, + * tests/object-good/simple-class.hpr, + * tests/object-good/simple-class.lpr, + * tests/object-good/simple-class.out, + * tests/object-good/simple-class.sta, + * tests/object-good/simple-extends.err, + * tests/object-good/simple-extends.hpr, + * tests/object-good/simple-extends.lpr, + * tests/object-good/simple-extends.out, + * tests/object-good/simple-extends.sta, + * tests/object-good/simple-instantiation.err, + * tests/object-good/simple-instantiation.hpr, + * tests/object-good/simple-instantiation.lpr, + * tests/object-good/simple-instantiation.out, + * tests/object-good/simple-instantiation.sta, + * tests/object-good/type-simple-class.err, + * tests/object-good/type-simple-class.hpr, + * tests/object-good/type-simple-class.lpr, + * tests/object-good/type-simple-class.out, + * tests/object-good/type-simple-class.sta, + * tests/object-good/type-simple-extends.err, + * tests/object-good/type-simple-extends.hpr, + * tests/object-good/type-simple-extends.lpr, + * tests/object-good/type-simple-extends.out, + * tests/object-good/type-simple-extends.sta, + * tests/object-good/variable-modification.err, + * tests/object-good/variable-modification.hpr, + * tests/object-good/variable-modification.lpr, + * tests/object-good/variable-modification.out, + * tests/object-good/variable-modification.sta, + * tests/object-good/vehicle.err, + * tests/object-good/vehicle.-e.s, + * tests/object-good/vehicle.-e.u.s, + * tests/object-good/vehicle.hir, + * tests/object-good/vehicle.hpr, + * tests/object-good/vehicle.lir, + * tests/object-good/vehicle.lpr, + * tests/object-good/vehicle.out, + * tests/object-good/vehicle.s, + * tests/object-good/vehicle.sta, + * tests/object-good/vehicle.u.s: New outputs. + * tests/object-good/Makefile.am: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2598 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-05 Benoßt Sigoure + + Factor and fix the LC_* patterns allowed in configure. * configure.ac: Use m4_do to factor the code. Add the trailing `$'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2597 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-04 Roland Levillain + + * src/ast/pretty-printer.cc (operator() (const CastVar&)): Fix pretty-printing of reserved keyword `_cast'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2596 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-04 Roland Levillain + + Provide a means to reset generated dependencies in TCSH. + + * tcsh/generate-swig-mk: Add a `deps-reset' target, resetting + dependencies computed by swig. + * tcsh/README.deps: New. + * tcsh/Makefile.am (EXTRA_DIST): Add README.deps. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2595 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-02 Roland Levillain + + Factor code in Binders. + + * src/ast/visitor.hxx (accept (E* e, V& v)): New generic method. + * dev/ast-visitor-gen: Generate a declaration for this method. + * src/ast/visitor.hh: Regen. + * src/ast/default-visitor.hxx + (operator() (typename Const::type&)) + (operator() (typename Const::type&)) + * src/ast/pretty-printer.cc (operator() (const ObjectExp&)): + (operator() (const ClassTy&)) + * src/object/binder.cc (operator() (ast::ObjectExp&)) + (operator() (ast::ClassTy&)) + * src/escapes/escapes-visitor.cc (operator() (ast::VarDec&)): + Use it. + * src/bind/binder.cc (redefinition, undeclared, def_default, + (decs_visit): Move definitions... + * src/bind/binder.hxx: ...here (new file). + (decs_visit (ast::MethodDecs&)): Declare it inline, to avoid + multiply defined symbols. + * src/bind/binder.hh: Include it. + * src/object/binder.hh, src/object/binder.cc (undeclared) + (redefinition, def_default, decs_visit (ast::AnyDecs&)): + Remove. + (visitDecBody (ast::MethodDec&)): Hide the body of the method. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2594 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-02 Roland Levillain + + Wrap lines longer than 80 columns in the parser. + + * src/parse/parsetiger.yy: Wrap lines longer than 80 columns. + * src/parse/parsetiger.hh, src/parse/parsetiger.cc: Regen. + * src/ast/non-object-visitor.hh: Typo. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2593 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-02 Roland Levillain + + Add tests/object-good to the list of tests generating outputs. + + * tests/mk-Makefile-am (good_tests): Add `object-good'. + * tests/object-good/Makefile.am: Regen. + * tests/object-good/attribute-modification.-e.s, + * tests/object-good/attribute-modification.-e.u.s, + * tests/object-good/attribute-modification.hir, + * tests/object-good/attribute-modification.lir, + * tests/object-good/attribute-modification.s, + * tests/object-good/attribute-modification.u.s, + * tests/object-good/function-call-in-method.-e.s, + * tests/object-good/function-call-in-method.-e.u.s, + * tests/object-good/function-call-in-method.hir, + * tests/object-good/function-call-in-method.lir, + * tests/object-good/function-call-in-method.s, + * tests/object-good/function-call-in-method.u.s, + * tests/object-good/method-call.-e.s, + * tests/object-good/method-call.-e.u.s, + * tests/object-good/method-call.hir, + * tests/object-good/method-call.lir, + * tests/object-good/method-call.s, + * tests/object-good/method-call.u.s, + * tests/object-good/simple-class.-e.s, + * tests/object-good/simple-class.-e.u.s, + * tests/object-good/simple-class.hir, + * tests/object-good/simple-class.lir, + * tests/object-good/simple-class.s, + * tests/object-good/simple-class.u.s, + * tests/object-good/simple-extends.-e.s, + * tests/object-good/simple-extends.-e.u.s, + * tests/object-good/simple-extends.hir, + * tests/object-good/simple-extends.lir, + * tests/object-good/simple-extends.s, + * tests/object-good/simple-extends.u.s, + * tests/object-good/simple-instantiation.-e.s, + * tests/object-good/simple-instantiation.-e.u.s, + * tests/object-good/simple-instantiation.hir, + * tests/object-good/simple-instantiation.lir, + * tests/object-good/simple-instantiation.s, + * tests/object-good/simple-instantiation.u.s, + * tests/object-good/type-simple-class.-e.s, + * tests/object-good/type-simple-class.-e.u.s, + * tests/object-good/type-simple-class.hir, + * tests/object-good/type-simple-class.lir, + * tests/object-good/type-simple-class.s, + * tests/object-good/type-simple-class.u.s, + * tests/object-good/type-simple-extends.-e.s, + * tests/object-good/type-simple-extends.-e.u.s, + * tests/object-good/type-simple-extends.hir, + * tests/object-good/type-simple-extends.lir, + * tests/object-good/type-simple-extends.s, + * tests/object-good/type-simple-extends.u.s, + * tests/object-good/variable-modification.-e.s, + * tests/object-good/variable-modification.-e.u.s, + * tests/object-good/variable-modification.hir, + * tests/object-good/variable-modification.lir, + * tests/object-good/variable-modification.s, + * tests/object-good/variable-modification.u.s: + New (generated). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2592 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-02 Roland Levillain + + * tests/mk-Makefile-am (all_tests, good_tests): New variables. Use them to factor the iterated sets of test directories. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2591 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-02 Roland Levillain + + Hande diff files with names like `2009-tc-1.1-lc-2.0'. + + * configure.ac: Version 0.14a. + * NEWS: Update. + * Makefile.am (diff_re): Rename as... + (diff_re1): ..this. + (diff_re2): New. + (%.diff): Use it to support diff files whose name mentions two + different project names (YEAR-[tl]c-V1-[tl]c-V2), like + `2009-tc-1.1-lc-2.0', in addition to the original pattern + (YEAR-[tl]c-V1-V2). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2590 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-04-02 Benoßt Tailhades + + Add object tests. * tests/object-bind/Makefile.am: Regen. * tests/object-bind/undefined-extends.tig: Rename as... * tests/object-bind/undeclared-extends.tig: ...this. * tests/object-bind/undefined-function.tig: Rename as... * tests/object-bind/undeclared-function.tig: ...this. * tests/object-bind/undefined-variable.tig: Rename as... * tests/object-bind/undeclared-variable.tig: ...this. * tests/object-bind/variable-defined-later.tig: New test. * tests/object-good/Makefile.am: Regen. * tests/object-good/type-simple-class.tig, tests/object-good/type-simple-extends.tig: New object syntax tests. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2589 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-31 Benoßt Tailhades + + Fix object binding. + + Correct object binding. + + * src/object/binder.cc + (operator() (ast::ClassTy&)): Use scope. + + Update unit object tests. + + * src/object/Makefile.am: . + * src/object/test-bind.cc: New unit test for object binding. + * src/object/test-object.cc: Move unit test... + * src/object/test-parse.cc: ...here. + + New object tests. + + * configure.ac (tests/object-bind/Makefile): Configure it. + * tests/Makefile.am (SUBDIRS): Add object-bind. + * tests/mk-Makefile-am: Handle directory object-bind. + * tests/object-bind/Makefile.am: New (generated). + * tests/object-bind/extends-different-chunk.tig, + tests/object-bind/undefined-extends.tig, + tests/object-bind/undefined-function.tig, + tests/object-bind/undefined-variable.tig: New tests. + * tests/object-bind: New test directory. + * tests/object-good/Makefile.am: Regen. + * tests/object-good/function-call-in-method.tig, + tests/object-good/variable-modification.tig: New good tests. + * tests/tc-check.in (load_tests): Handle object tests with + binding errors for T3. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2588 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-31 Benoßt Tailhades + + Add object tests to T3. * tests/object-good/simple-class.tig, tests/object-good/simple-extends.tig, tests/object-good/simple-instantiation.tig: Correct. * tests/tc-check.in: Add object tests to T3 since object binding is working. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2587 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-31 Benoßt Tailhades + + Update object binding for new grammar. + + * src/ast/ast.yml (ClassTy): Adjust to use NameTy* for super_. + (ObjectExp): Adjust to use NameTy* for type_name_. + * src/ast/README.student, src/ast/README: Regen. + * src/ast/class-ty.cc, src/ast/class-ty.hh, + src/ast/class-ty.hxx: Regen. + * src/ast/object-exp.cc, src/ast/object-exp.hh, + src/ast/object-exp.hxx: Regen. + * src/ast/pretty-printer.cc: Update. + * src/astclone/cloner.cc: Regen. + + Update object binding. + + * src/object/binder.cc, src/object/binder.hh + (operator() (ast::NameTy&)): New to consider "Object" as a type. + (visitDecHeader (ast::ClassDec&), visitDecBody (ast::ClassDec&)) + (operator() (ast::ClassDecs&), operator() (ast::ClassDec&)) + (classes_, current_): Remove. + (scope_begin (), scope_end ()): Remove. + (operator() (ast::VarDec&)): Remove. + + Correct grammar. + + * src/parse/parsetiger.yy: Update grammar to use typeid + instead of ID for ClassTy super_ attribute and ObjectExp + type_name_ attribute. + * src/parse/parsetiger.cc, src/parse/parsetiger.hh: Regen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2586 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-30 Roland Levillain + + Version 1.14, for 2009-lc-2.2. + + Allow two forms of class declaration syntax. The first one, known + as the ``canonical'' one, is similar to other type declarations in + Leopard (notably, array and records). The second one, known as + the ``alternative'' one (or ``Appel's'') was the original syntax, + describes in Appel's ``Modern Compiler Implementation'' books. + Adjust the parser to desugar the second form into the first one. + + * configure.ac: Version 1.14. + * NEWS: Update. + + * dev/ast-nodes-gen (includes_map): Remove + ClassDec::map_meth_type, ClassDec::map_var_type. + Map VarDecs to ast/var-decs.hh. + * src/ast/ast.yml (ClassDec): Remove. + (ClassTy): New. + (ObjectExp): Adjust. + * src/ast/class-ty.hh, src/ast/class-ty.hxx, src/ast/class-ty.cc: + New (generated). + * src/ast/class-dec.hh, src/ast/class-dec.hxx, + * src/ast/class-dec.cc: Remove. + * src/ast/object-exp.hh, src/ast/object-exp.hxx, + * src/ast/object-exp.cc, src/ast/function-dec.hh: Regen. + * src/ast/anydecs.hh, src/ast/anydecs.hxx, src/ast/anydecs.cc: + Rename as... + * src/ast/allty.hh (ast/class-ty.hh): Include it. + * src/ast/alldec.hh: Adjust. + * src/ast/any-decs.hh, src/ast/any-decs.hxx, src/ast/any-decs.cc: + ...this. + Move instantiations (specific parts) into... + * src/ast/var-decs.hh, src/ast/type-decs.hh, + * src/ast/function-decs.hh, src/ast/method-decs.hh: ...these files + (new) + * src/ast/fwd.hh: Regen. + * src/ast/README, src/ast/README.student: Regen. + * src/ast/Makefile.am (libast_la_SOURCES): + Adjust. + Add var-decs.hh, type-decs.hh, function-decs.hh and + method-decs.hh. + + Adjust visitors. + + * src/ast/visitor.hh: Regen. + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx: Typos. + (operator() (typename Const::type&)): Remove. + * src/ast/pretty-printer.hh, src/ast/pretty-printer.cc + (operator() (const ClassDec&)): Turn into + (operator() (const ClassTy&)): ...this. + Adjust. + * src/ast/non-object-visitor.hxx: Likewise. + * src/astclone/cloner.hh, src/astclone/cloner.cc: Regen. + * src/ast/tiger_ast.i: Adjust. + + Adjust the parser to handle both syntax forms, and desugar the + second one into the first one. + + * src/parse/parsetiger.yy (union): Remove fields `classdec' and + `classdecs'. + Adjust %destructor's and %printer's. + (classdec, classdecs): Remove non-terminals and productions. + (decs): Remove class declarations. + (tydec, ty): Extend to class class declaration. + (classfield): Remove dead code. + * src/parse/parsetiger.cc, src/parse/parsetiger.hh: Regen. + + Comment corresponding sections in subsequent parts of the + compiler, so as to have the project build. + + * src/object/binder.hh, src/object/binder.cc (operator() + (ast::ClassTy&)): New. + (visitDecHeader (ast::ClassDec&), visitDecBody (ast::ClassDec&)) + (operator() (ast::ClassDecs&), operator() (ast::ClassDec&)) + (classes_): Disable. + (Binder::Binder, scope_begin, scope_end) + (operator() (ast::VarDec&), operator() (ast::ObjectExp&)) + (visitDecHeader (ast::MethodDec& e)): Disable some code. + * src/object/test-object.cc: Test both form of class declaration + syntax. + + Revert the previous patch partially. + + * src/type/type-checker.cc (operator() (ast::NameTy&)) + * src/bind/binder.cc (operator() (ast::NameTy&)) + * src/bind/binder.cc (types_) + * src/ast/ast.yml (NameTy): Revert the previous patch partially. + * src/ast/name-ty.hh, src/ast/name-ty.hxx: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2585 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-30 Benoßt Tailhades + + Update object binding to allow a ClassDec to be a type. * src/ast/ast.yml (NameTy): Update to allow a ClassDec to be the definition site. * src/ast/name-ty.hh, src/ast/name-ty.hxx: Regen. * src/bind/binder.cc: Update. * src/bind/binder.hh: Set types_ map to protected to modify it from object/binder. Change types_ map datas type to Dec*. * src/object/binder.cc: Insert ClassDec in types_ map. * src/object/tasks.hh: Add object dependency to object-bind task. * src/type/type-checker.cc (NameTy): Make the traversal fail with unreached if the definition site is a ClassDec. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2584 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-30 Roland Levillain + + Fix a bug in stagize. + + * configure.ac: Set version to 1.13a. + * NEWS: Update. + * dev/stagize: If $leopard is not true, set it to false. + Don't bypass the stagize process, even for a full distribution, if + $leopard is true. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2583 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-29 Benoßt Tailhades + + Add tests for Object syntax. * configure.ac (tests/object-good/Makefile): Configure directory object-good. * tests/Makefile.am (SUBDIRS): Add directory object-good. * tests/mk-Makefile-am: Handle directory object-good. * tests/object-good/Makefile.am: New (generated). * tests/object-good/attribute-modification.tig, tests/object-good/method-call.tig, tests/object-good/simple-class.tig, tests/object-good/simple-extends.tig, tests/object-good/simple-instantiation.tig: New tests. * tests/object-good: New directory. * tests/tc-check.in (load_tests): Handle object tests with good syntax for T2. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2582 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-29 Tristan Carel + + * build-aux/boost.m4, ChangeLog: Fix non left-aligned text. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2581 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-29 Benoßt Tailhades + + Update object binding. * dev/ast-nodes-gen: Update to use std::map into ClassDec. * src/ast/ast.yml: Add two maps into ClassDec to know variables and methods declared in it. * src/ast/class-dec.cc, src/ast/class-dec.hh, src/ast/class-dec.hxx: Regen. * src/ast/pretty-printer.cc: Correct binding display. * src/bind/binder.hh: Set vars_ to protected. * src/object/binder.cc, src/object/binder.hh: Update object binding using scopes. * src/object/test-object.cc: Add a unit test. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2580 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-29 Roland Levillain + + Version 1.13. For 2009-lc-2.1. + + * configure.ac: Version 1.13. + * NEWS: Update. + * bootstrap: Escape a backquote in a heredoc. + * AUTHORS: Update. + * src/inlining/inline-visitor.hh, src/inlining/inline-visitor.cc: + Rename as... + * src/inlining/inliner.hh, src/inlining/inliner.cc: ...these. + Adjust guards. + (InlineVisitor): Rename as... + (Inliner): ...this. + * src/inlining/libinlining.cc, src/inlining/Makefile.am: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2579 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-28 Roland Levillain + + Version 1.12. For 2009-lc-2.0. + + * configure.ac: Version 1.12. + Prune HAVM detection before the translation step. + * Makefile.am (dist-hook): Pass Make's LEOPARD variable to stagize. + (studir): Set LEOPARD to true before making target `distdir'. + (diff_re, 20%): Also handle patterns `20*-lc-*'. + (%.diff) Also handle patterns `20*-lc-*-*.diff'. + (distcleancheck_listfiles): New. + * NEWS: Update. + * dev/codenamize.pl: Don't pass flag `-w' in the shebang. + (parse_options): Don't use modifier `/o' when compiling regexps, + since it breaks them. + * dev/stagize (codenamize): New variable. + (leopard): Display it. + Leopardize, if asked to. + Work around codenamize.pl's current limitations. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2578 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-28 Tristan Carel + + * build-aux/boost.m4 (AC_CHECK_HEADER): Add comments to explain the specific check of Boost Graph headers. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2577 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-28 Benoßt Sigoure + + Add codenamize. Codenomize is able to rename a project (change its `codename'). This an alpha version only tested against TC-2 and its interface is clearly going to change. * dev/codenamize.pl: New. * dev/Makefile.am (EXTRA_DIST): Add codenamize.pl. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2576 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-28 Roland Levillain + + Clean up ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2575 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-28 Benoßt Sigoure + + * configure.ac: Allow legitimate LC_* macros for the Leopard distribution. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2574 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-28 Benoßt Sigoure + + * src/object/test-object.cc: Fix hidding tags. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2573 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-28 Roland Levillain + + More documentation on ast::NonObjectVisitor. + + * src/ast/default-visitor.hh, src/ast/non-object-visitor.hh: + Document. + * src/ast/non-object-visitor.hxx: Fix inclusions of headers. + Comply with the coding style. + * src/ast/ast.yml (MethodDec): Use Doxygen special commands + instead of HTML commands. + (MethodCall): Likewise. + Add an attribute `def' to bing the method declaration to its + (static) definition. + (ObjectExp): Remove trailing period in description. + * src/ast/method-call-exp.hh, src/ast/method-call-exp.hxx + * src/ast/method-call-exp.cc, src/ast/method-dec.hh, + * src/ast/object-exp.hh: Regen. + * dev/tools.py: Typo. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2572 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-27 Roland Levillain + + Fix the TC-2 distribution. + + * src/ast/ast.yml (Dec): Fix super types. + (FunctionDec): Move the concrete flag outside the `escape' mark. + + * src/object/tasks.hh, src/object/tasks.cc, + * src/object/libobject.hh, src/object/libobject.cc, + * src/object/test-object.cc, src/object/Makefile.am: Hide + binding-related code when the bind module is not available. + * dev/stagize: Process them. + * src/tc.mk (liobject): Hide dependency on libbind when it its not + available. + + * tests/import/import-exp.tig, + * tests/import/import-exp-header.tih: Move test... + * tests/import-syntax/import-exp.tig, + * tests/import-syntax/import-exp-header.tih: ...here. + * tests/tc-check.in (load_tests): Handle import tests with syntax + errors. + * tests/import/Makefile.am: Regen. + * tests/import-syntax/Makefile.am: New (generated). + * tests/Makefile.am (SUBDIRS): Add import-syntax + * tests/mk-Makefile-am: Handle directory import-syntax. + * configure.ac (tests/import-syntax/Makefile): Configure it. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2571 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-27 Tristan Carel + + * build-aux/boost.m4(Check headers): Add a search request for `boost/graph/exception.hpp'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2570 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-27 Benoßt Sigoure + + Make distcheck with boost in non standard location easier. * build-aux/boost.m4: Keep --with-boost in DISTCHECK_CONFIGURE_FLAGS. * configure.ac: Don't require HAVM before TC-5. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2569 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-27 Tristan Carel + + * bootstrap: Check presence of `python' and Python module `syck'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2568 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-27 Benoßt Sigoure + + Require HAVM. * configure.ac: HAVM >= 0.23 is needed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2567 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-27 Benoßt Sigoure + + Fix invalid YAML specifications. The YAML specifications require that a key be unique. Because of the way the list of super classes were specified and because stagize is not called during bootstrap, we DID have duplicate keys for stagize's purpose. Unfortunately, Syck/PySyck changed the way they behave WRT to duplicate keys in YAML files and the parsing behave differently (actually the file was not completely parsed: some parts were skipped). * bootstrap: Try to diagnose frequent bootstrap failures due to Syck. I already ran into problems when I first bootstrapped tc last year, and when I ran again into these problems on my new Mac I wasted about half an hour to figure out what had to be installed. Also continue the build if we have a `_build' directory with a `config.status' which we can use. * dev/ast.py (Node::__init__): Raise an error if parsing discovered a duplicate key in the YAML file. (Load::resolve_super): Skip empty strings. * dev/tools.py (error): New. * src/ast/ast.yml: Use lists to list super classes, instead of strings which we later split to get a list anyway. + + * src/parse/parsetiger.cc, + * src/parse/parsetiger.hh: Regenerate. + + * ChangeLog: Aesthetic change. + * dev/stagize, + * dev/studentize: Correct some deadly mistakes! + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2566 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-27 Roland Levillain + + Enrich the grammar with new syntactic elements for object-oriented programming. + + * src/ast/ast.yml: Adjust documentation. + (FunctionDec, CallExp): Force them to be concrete. + (CallExp): Remove attribute `object'. + (MethodDec, MethodCallExp): New nodes. + * src/ast/alldec.hh, src/ast/allexp.hh: Add missing includes. + * src/ast/allty.hh, src/ast/allvar.hh: Add a FIXME. + * src/ast/method-call-exp.cc, src/ast/method-call-exp.hh + * src/ast/method-call-exp.hxx, + * src/ast/method-dec.cc, src/ast/method-dec.hh, + * src/ast/method-dec.hxx: New (generated). + * src/ast/call-exp.cc, src/ast/call-exp.hh, + * src/ast/call-exp.hxx: Regen. + * src/ast/README, src/ast/README.student: Likewise. + * src/ast/pretty-printer.cc, src/ast/pretty-printer.hh + (operator() (const MethodCallExp&)) + (operator() (const MethodDecs&)): New. + (operator() (const FunctionDec&, const std::string&)): New. + (operator() (const FunctionDecs&)): Use it. + (operator() (const CallExp&)): Revert to previous implementation. + (operator() (const ClassDec&)): Fix bindings display. + * src/ast/test-ast.cc: Adjust test. + + + Adjust the parse module accordingly. + + * src/parse/scantiger.ll: Handle keyword `method'. + * src/parse/parsetiger.yy (methdec, methdecs, classfields): New + non-terminals. + Enrich %union to support MethdodDec* and MethdodDecs*. + (METHOD): New token. + Revert to previous abstract syntax interface regarding function + calls (CallExp). + Use MethodCallExp for method calls. + (classdec): Use `classfieds' instead of `decs' to enumerate the + contents of a class. + (classfield): New productions. + (methdecs, methdec): Likewise. + * src/parse/parsetiger.cc, src/parse/parsetiger.hh: Regen. + * src/object/test-object.cc: Adjust test. + Add studentize marks to have it pass at TC-2. + * src/Makefile.am (SUBDIRS): Move `object' after `type'. + + + Adjust visitor classes. + + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx: + Inherit virtually from the super class. + (operator() (typename Const::type&)) + (operator() (typename Const::type&)): Remove. + (operator() (typename Const::type&)): New. + Make it a default visitor for languages without object-related + constructs. + * src/ast/non-object-visitor.hh, src/ast/non-object-visitor.hxx: + New. + * src/ast/Makefile.am (libast_la_SOURCES): Add non-object-visitor.hh + and non-object-visitor.hxx. + * src/escapes/escapes-check-visitor.hh, + * src/callgraph/call-graph-visitor.hh, + * src/translate/translator.hh, + Inherit from ast::NonObjectConstVisitor + * src/escapes/escapes-visitor.hh, + * src/callgraph/parent-graph-visitor.hh, + * src/callgraph/static-link-visitor.hh, + * src/type/type-checker.hh, + * src/bind/binder.hh, src/bind/renamer.hh: + Inherit from ast::NonObjectVisitor + * src/bind/binder.cc (Bind::Bind): Fix the order of + initializations. + * src/object/binder.hh, src/object/binder.cc: Work around a bug in + Apple's GCC 3.3. + (operator() (const MethodCallExp&)) + (operator() (const MethodDecs&)): New (empty methods). + (operator() (const CallExp&)): Remove. + * src/overload/binder.hh: Typo. + * src/escapes/tiger_escapes.i: Remove unnecessary includes. + + + Update and improve the AST-related generators. + + * dev/ast.py (Node.__init__): Replace attribute `final' with + `concrete'. Allow the user to define its value. + (Node.is_a): New method. + (final_compute): Handle hand-made ``concretization''. + * dev/ast-visitor-gen: Adjust. + Generate Decs' visit methods. + * dev/ast-fwd-gen: Adjust. + Generate Decs' typedefs. + * dev/ast-graph-gen, dev/ast-nodes-gen, dev/ast-readme-gen: + * dev/ast-cloner-gen: Adjust. + * src/ast/visitor.hh, src/ast/fwd.hh, + * src/astclone/cloner.cc, src/astclone/cloner.hh: Regen. + * dev/ast-nodes-mk-gen: Aesthetic change. + * dev/tools.py: Add a bit more documentation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2565 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-26 Roland Levillain + + Move all tests related to import into tests/import/. + + * syntax/import-exp.tig, syntax/import-exp-header.tih: Move + tests... + * import/import-exp.tig, import/import-exp-header.tih: ...here. + * import/Makefile.am, syntax/Makefile.am: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2564 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-24 Benoßt Tailhades + + Add object binding. * src/Makefile.am: Add libobject. * src/ast/README: Regen. * src/ast/ast.yml: Update. * src/ast/object-exp.cc, src/ast/object-exp.hh, src/ast/object-exp.hxx: Regen. * src/ast/pretty-printer.cc: Add object binding display. * src/astclone/cloner.cc: Regen. * src/bind/binder.hh: Set attribute error_ to protected. * src/bind/tasks.hh: Update disjunctive task bound. * src/object/Makefile.am (libobject_la_SOURCES): Add object/binder.hh object/binder.cc. * src/object/binder.cc, src/object/binder.hh: New. * src/object/libobject.cc, src/object/libobject.hh (bind (ast::Ast&)): New function. * src/object/tasks.cc(object_bind ()): New function. * src/object/tasks.hh: New task to complete object binding. * src/object/test-object.cc: New unit test for object binding. * src/parse/libparse.cc, src/parse/libparse.hh (parse_unit (const string&, bool)): Add an extra argument indicating whether the object extensions are on. * src/tc.mk: Add libobject. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2563 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-24 Roland Levillain + + Adjust stagize for 2009-TC-2. + + * dev/stagize: Prune `object' marks before TC-2. + s/print-visitor/pretty-printer/. + s/clone-visitor/cloner/. + Use `tail' as described in the Single Unix Specification, + version 3. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2562 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-24 Roland Levillain + + More visitor renaming. + + * src/ast/pretty-printer.hh, src/bind/binder.hh, + * src/bind/renamer.hh, src/translate/translator.hh, + * src/type/type-checker.hh, src/type/type-checker.hxx, + * src/overload/binder.hh, src/overload/type-checker.hh: + Adjust header guards to new visitor names. + * dev/ast-cloner-gen: Likewise. + * src/astclone/cloner.hh: Regen. + * src/inlining/prune-visitor.hh, src/inlining/prune-visitor.cc: + Rename as... + * src/inlining/pruner.hh, src/inlining/pruner.cc: ...these. + (inlining::PruneVisitor): Rename as... + (inlining::Pruner): ...this. + * src/inlining/libinlining.cc, src/inlining/Makefile.am: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2561 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-24 Roland Levillain + + 2009-tc-1.1. + + * configure.ac: Bump to 1.11a. + * tcsh/generate-swig-mk: Add a comment. + * src/parse/tiger-parser.hh (parse::TigerParser): Leave a mark + for removed code. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2560 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-23 Benoßt Sigoure + + Fix Shell expansion. * tcsh/generate-swig-mk: Don't use path/{dir1,dir2}: NetBSD's /bin/sh does not expand it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2559 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-23 Roland Levillain + + Fix 2009-tc-1.0. + + * src/parse/parsetiger.yy: Hide more code. + * src/parse/parsetiger.cc: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2558 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-23 Roland Levillain + + Version 1.11. For 2009-tc-1.0. + + * configure.ac: Version 1.11. + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2557 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-23 Roland Levillain + + Update TCSH. + + * src/tc.mk (AM_CPPFLAGS): Remove -I$(top_builddir)/lib. + * tcsh/generate-swig-mk (tcdir): Handle SWIG interfaces files + living both in src/ and lib/. + * tcsh/python/Makefile.am (AM_CPPFLAGS, AM_SWIGFLAGS) + * tcsh/ruby/Makefile.am (AM_CPPFLAGS, AM_SWIGFLAGS): Add + -I$(top_srcdir)/lib + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2556 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-22 Benoßt Perrot + + Move src/misc to lib/. + + * src/misc: Move to... + * lib: Here. + * configure.ac, src/Makefile.am, lib/Makefile.am: + Update accordingly. + * lib/misc/Makefile.am: Complete for standalone compilation. + * src/tc.mk: Add lib/ to AM_CPPFLAGS. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2555 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-22 Benoßt Tailhades + + Repair make check since CallExp constructor has changed. * src/ast/test-ast.cc: Change CallExp constructions. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2554 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-22 Roland Levillain + + Adjust the TC-1 distribution for class 2009. + + * src/parse/scantiger.ll (CHECK_OBJECT_EXTENSION): Hide it. + * src/misc/variant.hxx (variant::operator T1& ()) + (variant::operator const T1& () const): Hide them + completely. + * src/misc/graph.hh, src/misc/graph.hxx: Leave a more precise + indication on when these files are to be completed. + * src/misc/scoped-map.hh, src/misc/scoped-map.hxx: Typos. + * dev/stagize, configure.ac, tcsh/python/Makefile.am: Hide + ti-related things. + (INSTALLCHECK_IA32): Rename as... + (MAYBE_INSTALLCHECK_IA32): ...this. + Don't initalize to an empty value when IA32 is false, since make + already does it. + (installcheck-local): Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2553 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-22 Roland Levillain + + Add syntactic support for method calls. + + * src/ast/ast.yml (CallExp): Add a field `object'. + * src/ast/call-exp.hh, src/ast/call-exp.hxx, src/ast/call-exp.cc, + * src/astclone/cloner.cc, src/ast/README: Regen + * src/parse/parsetiger.yy (methid): New non-terminal and + production. + Handle method calls. + * src/parse/parsetiger.cc: Regen. + * src/ast/pretty-printer.cc + (PrettyPrinter::operator() (const CallExp&)): Handle method calls. + * src/object/test-object.cc: Exercize method definitions and calls. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2552 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-22 Roland Levillain + + Fix the TC-1 distribution. + + * dev/studentize_tc.conf: Add object. + * src/parse/tasks.cc (parse::task::parse) + * src/parse/libparse.hh, src/parse/libparse.cc (parse::parse) + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc + (TigerParser::enable_object_extensions): Hide object-related code + before TC-2. + * dev/stagize: Add these files to the pruning pass. + Fix the removal of modules in src/Makefile.am. + * src/parse/parsetiger.hh, src/parse/parsetiger.cc: Regen. + * src/misc/test-graph.cc (consistency): Reduce the size the + generated graph. + Print the graph to the standard output rather than to a file. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2551 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-22 Roland Levillain + + Clean up ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2550 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-22 Razik Yousfi + + Repair make check. * src/liveness/test-flowgraph.cc: Replace graph::empty with misc::empty. * tests/lexical/Makefile.am, * tests/syntax/Makefile.am: Regen. * tests/syntax/vehicle.tig: Move file... * tests/lexical/vehicle.tig: ...here + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2549 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-21 Roland Levillain + + Fix the first patch on object-related constructions. + + * src/parse/scantiger.ll (CHECK_OBJECT_EXTENSION): Align + backslashes. + * src/parse/tiger-parser.cc + (TigerParser::enable_object_extensions): Don't give a default + value to the (sole) argument, since the interface already does it. + * src/object/tiger_object.i: Tailor to the strict minimum. + * src/Makefile.am (SUBDIRS) + * configure.ac: Aesthetic changes. + * dev/ast-nodes-gen: Fix permissions of newly generated files. + * dev/ast.py: Typo. + * dev/stagize: Catch up with recent changes w.r.t. graph and + object modules. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2548 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-20 Benoßt Perrot + + Move argp/ to lib/argp/. + + * lib, lib/Makefile.am: + New. + * configure.ac, Makefile.am, src/tc.mk, src/task/Makefile.am: + Update accordingly. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2547 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-20 Roland Levillain + + Add syntactic support for object-related constructions. + + * src/object/libobject.hh, src/object/libobject.cc, + * src/object/task.hh, src/object/task.cc, + * src/object/tiger_object.i, + * src/object/Makefile.am: New files. + * src/object/test-object.cc: New test. + * src/Makefile.am (SUBDIRS): Add object. + (dist_tc_SOURCES): Add object/tasks.cc object/tasks.hh. + * configure.ac (src/object/Makefile): Configure it. + + * src/parse/scantiger.ll (CHECK_OBJECT_EXTENSION): + New macro. Checks whether the object extensions are on and raise + an error if they are not and and object-related keyword is used. + Add rules for keywords class, extends and new. + * src/parse/parsetiger.yy: Add classdec and classdecs fields to + the %union. + Update destructors and printers. + Add tokens CLASS, EXTENDS, NEW. + Add non-terminals classdec and classdecs. + Add productions for object constructions. + * src/parse/parsetiger.hh, src/parse/parsetiger.cc: Regen. + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc + (TigerParser::enable_object_extensions_p_): New attribute. + (TigerParser::TigerParser): Initialize it. + (TigerParser::enable_object_extensions): New accessor. + * src/parse/libparse.hh, src/parse/libparse.cc + (parse (const string&, const string&, FileLibrary&, bool, bool) + (parse (const string&, bool)): Add an extra argument indicating + whether the object extensions are on. + * src/parse/tasks.cc (parse): Pass + object::tasks::enable_object_extensions_p as extra argument to + parse::parse. + + * src/ast/ast.yml (ClassDecs, ObjectExp): New classes. + * src/ast/class-dec.hh, src/ast/class-dec.hxx, + * src/ast/class-dec.cc, + * src/ast/object-exp.hh, src/ast/object-exp.hxx, + * src/ast/object-exp.cc: New files (generated). + * src/ast/anydecs.hh (ast/class-dec.hh): Include it. + (ast::ClassDecs): New typedef. + * dec/ast-fwd-gen: Add ClassDecs. + * src/ast/fwd.hh: Regen. + * src/ast/README, src/ast/README.student: Likewise. + * src/ast/alldecs.hh (ast/class-dec.hh): Include it. + * src/ast/allexp.hh (ast/object-exp.hh): Likewise. + + * dev/ast-visitor-gen: + Add operator() (typename Const::type&). + * src/ast/visitor.hh, + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx + (operator () (typename Const::type&)) + (operator () (typename Const::type&)): New methods. + * src/ast/pretty-printer.hh, src/ast/pretty-printer.cc + (operator () (const ClassDec&), operator () (const ObjectExp&)): + New methods. + * src/astclone/cloner.hh, src/astclone/cloner.cc: Regen. + + From Razik Yousfi, modified by Roland Levillain. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2546 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-20 Roland Levillain + + Improve error handling in the Tiger Interpreter. + + * src/parse/tiger_parse.i (parse::parse): Add a `throw' exception + specification at the end of the function's prototype. + Throw an exception on error using misc::Error::exit_on_error (). + * src/misc/tiger_misc.i (misc::Error): Wrap operator<< as __str__. + (misc::exit, misc::exit_on_error): New external versions of + misc::Error::exit and misc::Error::exit_on_error, having an + exception specification. Needed to have SWIG map the C++ + exceptions (misc::Error) to the target language exceptions (Python + and Ruby). + * tcsh/python/ti.py: Add exception handlers to reflect compiler + errors as interpreter errors. + * tcsh/python/ti.in, tcsh/python/Makefile.am: Typos. + * build-aux/with-tcsh.m4: Update required versions of SWIG and + Python to 1.3.29 and 2.3 respectively. + * src/parse/tiger-parser.cc (parse_import): Initialize pointer + `res' to 0 pacify the compiler. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2545 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-17 Benoßt Perrot + + Do remove graph/ empty directory + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2544 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-17 Benoßt Perrot + + 2007-03-17 Benoit Perrot + + Move graph wrapper to misc/ + + * src/graph/graph.hh, src/graph/graph.hxx, + * src/graph/test-graph.cc: + Rename Graph to graph. Move files to... + * src/misc: + ... this directory. + * src/misc/Makefile.am: + Update accordingly + * src/graph/Makefile.am, src/graph: + Remove. + * configure.ac, src/Makefile.am: + Update accordingly. + + * src/liveness/libliveness.cc, + * src/liveness/interference-graph.hh, + * src/liveness/flowgraph.hh, + * src/callgraph/fundec-graph.hh: + Update accordingly. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2543 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-17 Benoßt Perrot + + 2007-03-05 Benoit Perrot + + Remove graph helpers, useless since migration on boost graph + library + + * src/graph/iterator.hh, src/graph/iterator.hxx, + * src/graph/handler.hh, src/graph/handler.hxx: + Remove. + * src/graph/graph.hh: + Simply do not include handler.hh and iterator.hh anymore. + * src/graph/Makefile.am: Update accordingly. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2542 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-12 Roland Levillain + + Refresh the outputs of the tests after Benoßt's changes. + + * tests/escapes/for-lower.-e.s, + * tests/escapes/for-lower.-e.u.s, + * tests/escapes/for-lower.s, + * tests/escapes/for-lower.u.s, + * tests/escapes/for-scope.-e.s, + * tests/escapes/for-scope.-e.u.s, + * tests/escapes/for-scope.s, + * tests/escapes/for-scope.u.s, + * tests/escapes/for-upper.-e.s, + * tests/escapes/for-upper.-e.u.s, + * tests/escapes/for-upper.s, + * tests/escapes/for-upper.u.s, + * tests/escapes/formal-escapes.-e.s, + * tests/escapes/formal-escapes.-e.u.s, + * tests/escapes/formal-escapes.s, + * tests/escapes/formal-escapes.u.s, + * tests/escapes/local-escapes.-e.s, + * tests/escapes/local-escapes.-e.u.s, + * tests/escapes/local-escapes.s, + * tests/escapes/local-escapes.u.s, + * tests/escapes/no-functiondec-at-all.-e.s, + * tests/escapes/no-functiondec-at-all.-e.u.s, + * tests/escapes/no-functiondec-at-all.s, + * tests/escapes/no-functiondec-at-all.u.s, + * tests/escapes/record-escapes.-e.s, + * tests/escapes/record-escapes.-e.u.s, + * tests/escapes/record-escapes.s, + * tests/escapes/record-escapes.u.s, + * tests/escapes/recursion.-e.s, + * tests/escapes/recursion.-e.u.s, + * tests/escapes/recursion.s, + * tests/escapes/recursion.u.s, + * tests/escapes/redeclaration.-e.s, + * tests/escapes/redeclaration.-e.u.s, + * tests/escapes/redeclaration.s, + * tests/escapes/redeclaration.u.s, + * tests/escapes/rhs-of-a-vardec.-e.s, + * tests/escapes/rhs-of-a-vardec.-e.u.s, + * tests/escapes/rhs-of-a-vardec.s, + * tests/escapes/rhs-of-a-vardec.u.s, + * tests/escapes/scopes.-e.s, + * tests/escapes/scopes.-e.u.s, + * tests/escapes/scopes.s, + * tests/escapes/scopes.u.s, + * tests/escapes/sl-propagation-1.-e.s, + * tests/escapes/sl-propagation-1.-e.u.s, + * tests/escapes/sl-propagation-1.s, + * tests/escapes/sl-propagation-1.u.s, + * tests/escapes/sl-propagation-2.-e.s, + * tests/escapes/sl-propagation-2.-e.u.s, + * tests/escapes/sl-propagation-2.s, + * tests/escapes/sl-propagation-2.u.s, + * tests/escapes/variable-escapes.-e.s, + * tests/escapes/variable-escapes.-e.u.s, + * tests/escapes/variable-escapes.s, + * tests/escapes/variable-escapes.u.s, + * tests/escapes/variable-inside-for-body.-e.s, + * tests/escapes/variable-inside-for-body.-e.u.s, + * tests/escapes/variable-inside-for-body.s, + * tests/escapes/variable-inside-for-body.u.s, + * tests/escapes/variant-escapes.-e.s, + * tests/escapes/variant-escapes.-e.u.s, + * tests/escapes/variant-escapes.s, + * tests/escapes/variant-escapes.u.s, + * tests/good/all-binop.-e.s, + * tests/good/all-binop.-e.u.s, + * tests/good/all-binop.s, + * tests/good/all-binop.u.s, + * tests/good/array-of-alias.-e.s, + * tests/good/array-of-alias.-e.u.s, + * tests/good/array-of-alias.s, + * tests/good/array-of-alias.u.s, + * tests/good/array-subscript-assign.-e.s, + * tests/good/array-subscript-assign.-e.u.s, + * tests/good/array-subscript-assign.s, + * tests/good/array-subscript-assign.u.s, + * tests/good/array.-e.s, + * tests/good/array.-e.u.s, + * tests/good/array.s, + * tests/good/array.u.s, + * tests/good/assign-and-array-instantiation.-e.s, + * tests/good/assign-and-array-instantiation.-e.u.s, + * tests/good/assign-and-array-instantiation.s, + * tests/good/assign-and-array-instantiation.u.s, + * tests/good/assign-void.-e.s, + * tests/good/assign-void.-e.u.s, + * tests/good/assign-void.s, + * tests/good/assign-void.u.s, + * tests/good/assign-vs-boolean.-e.s, + * tests/good/assign-vs-boolean.-e.u.s, + * tests/good/assign-vs-boolean.s, + * tests/good/assign-vs-boolean.u.s, + * tests/good/assign-vs-rel.-e.s, + * tests/good/assign-vs-rel.-e.u.s, + * tests/good/assign-vs-rel.s, + * tests/good/assign-vs-rel.u.s, + * tests/good/basic-import.-e.s, + * tests/good/basic-import.-e.u.s, + * tests/good/basic-import.s, + * tests/good/basic-import.u.s, + * tests/good/bempel_j.-e.s, + * tests/good/bempel_j.-e.u.s, + * tests/good/bempel_j.s, + * tests/good/bempel_j.u.s, + * tests/good/big-exp.-e.s, + * tests/good/big-exp.-e.u.s, + * tests/good/big-exp.s, + * tests/good/big-exp.u.s, + * tests/good/big-lvalue.-e.s, + * tests/good/big-lvalue.-e.u.s, + * tests/good/big-lvalue.s, + * tests/good/big-lvalue.u.s, + * tests/good/boolean-1.-e.s, + * tests/good/boolean-1.-e.u.s, + * tests/good/boolean-1.s, + * tests/good/boolean-1.u.s, + * tests/good/boolean-2.-e.s, + * tests/good/boolean-2.-e.u.s, + * tests/good/boolean-2.s, + * tests/good/boolean-2.u.s, + * tests/good/break-in-for.-e.s, + * tests/good/break-in-for.-e.u.s, + * tests/good/break-in-for.s, + * tests/good/break-in-for.u.s, + * tests/good/break-in-while.-e.s, + * tests/good/break-in-while.-e.u.s, + * tests/good/break-in-while.s, + * tests/good/break-in-while.u.s, + * tests/good/builtins.-e.s, + * tests/good/builtins.-e.u.s, + * tests/good/builtins.s, + * tests/good/builtins.u.s, + * tests/good/call.-e.s, + * tests/good/call.-e.u.s, + * tests/good/call.s, + * tests/good/call.u.s, + * tests/good/chr-256.-e.s, + * tests/good/chr-256.-e.u.s, + * tests/good/chr-256.s, + * tests/good/chr-256.u.s, + * tests/good/chr-minus-1.-e.s, + * tests/good/chr-minus-1.-e.u.s, + * tests/good/chr-minus-1.s, + * tests/good/chr-minus-1.u.s, + * tests/good/chr.-e.s, + * tests/good/chr.-e.u.s, + * tests/good/chr.s, + * tests/good/chr.u.s, + * tests/good/comments-javalike-nested.-e.s, + * tests/good/comments-javalike-nested.-e.u.s, + * tests/good/comments-javalike-nested.s, + * tests/good/comments-javalike-nested.u.s, + * tests/good/comments-nested.-e.s, + * tests/good/comments-nested.-e.u.s, + * tests/good/comments-nested.s, + * tests/good/comments-nested.u.s, + * tests/good/comments-with-comment-chars.-e.s, + * tests/good/comments-with-comment-chars.-e.u.s, + * tests/good/comments-with-comment-chars.s, + * tests/good/comments-with-comment-chars.u.s, + * tests/good/comments-with-parens.-e.s, + * tests/good/comments-with-parens.-e.u.s, + * tests/good/comments-with-parens.s, + * tests/good/comments-with-parens.u.s, + * tests/good/comments-with-quotes.-e.s, + * tests/good/comments-with-quotes.-e.u.s, + * tests/good/comments-with-quotes.s, + * tests/good/comments-with-quotes.u.s, + * tests/good/commutation-1.-e.s, + * tests/good/commutation-1.-e.u.s, + * tests/good/commutation-1.s, + * tests/good/commutation-1.u.s, + * tests/good/commutation-2.-e.s, + * tests/good/commutation-2.-e.u.s, + * tests/good/commutation-2.s, + * tests/good/commutation-2.u.s, + * tests/good/compare-nil-and-record.-e.s, + * tests/good/compare-nil-and-record.-e.u.s, + * tests/good/compare-nil-and-record.s, + * tests/good/compare-nil-and-record.u.s, + * tests/good/compare-record-and-nil.-e.s, + * tests/good/compare-record-and-nil.-e.u.s, + * tests/good/compare-record-and-nil.s, + * tests/good/compare-record-and-nil.u.s, + * tests/good/compare-record-and-record.-e.s, + * tests/good/compare-record-and-record.-e.u.s, + * tests/good/compare-record-and-record.s, + * tests/good/compare-record-and-record.u.s, + * tests/good/compare-void.-e.s, + * tests/good/compare-void.-e.u.s, + * tests/good/compare-void.s, + * tests/good/compare-void.u.s, + * tests/good/complex-import.-e.s, + * tests/good/complex-import.-e.u.s, + * tests/good/complex-import.s, + * tests/good/complex-import.u.s, + * tests/good/concat.-e.s, + * tests/good/concat.-e.u.s, + * tests/good/concat.s, + * tests/good/concat.u.s, + * tests/good/concurrent-arguments.-e.s, + * tests/good/concurrent-arguments.-e.u.s, + * tests/good/concurrent-arguments.s, + * tests/good/concurrent-arguments.u.s, + * tests/good/donald.-e.s, + * tests/good/donald.-e.u.s, + * tests/good/donald.s, + * tests/good/donald.u.s, + * tests/good/empty-let-body.-e.s, + * tests/good/empty-let-body.-e.u.s, + * tests/good/empty-let-body.s, + * tests/good/empty-let-body.u.s, + * tests/good/empty-record-type.-e.s, + * tests/good/empty-record-type.-e.u.s, + * tests/good/empty-record-type.s, + * tests/good/empty-record-type.u.s, + * tests/good/escaping-record.-e.s, + * tests/good/escaping-record.-e.u.s, + * tests/good/escaping-record.s, + * tests/good/escaping-record.u.s, + * tests/good/evalexp.-e.s, + * tests/good/evalexp.-e.u.s, + * tests/good/evalexp.s, + * tests/good/evalexp.u.s, + * tests/good/exit-51.-e.s, + * tests/good/exit-51.-e.u.s, + * tests/good/exit-51.s, + * tests/good/exit-51.u.s, + * tests/good/explicit-record-type.-e.s, + * tests/good/explicit-record-type.-e.u.s, + * tests/good/explicit-record-type.s, + * tests/good/explicit-record-type.u.s, + * tests/good/fact.-e.s, + * tests/good/fact.-e.u.s, + * tests/good/fact.s, + * tests/good/fact.u.s, + * tests/good/field-of-field.-e.s, + * tests/good/field-of-field.-e.u.s, + * tests/good/field-of-field.s, + * tests/good/field-of-field.u.s, + * tests/good/for-high-computed-once.-e.s, + * tests/good/for-high-computed-once.-e.u.s, + * tests/good/for-high-computed-once.s, + * tests/good/for-high-computed-once.u.s, + * tests/good/for-high-same-name-as-index.-e.s, + * tests/good/for-high-same-name-as-index.-e.u.s, + * tests/good/for-high-same-name-as-index.s, + * tests/good/for-high-same-name-as-index.u.s, + * tests/good/for-in-let.-e.s, + * tests/good/for-in-let.-e.u.s, + * tests/good/for-in-let.s, + * tests/good/for-in-let.u.s, + * tests/good/for-in-while.-e.s, + * tests/good/for-in-while.-e.u.s, + * tests/good/for-in-while.s, + * tests/good/for-in-while.u.s, + * tests/good/for-scope.-e.s, + * tests/good/for-scope.-e.u.s, + * tests/good/for-scope.s, + * tests/good/for-scope.u.s, + * tests/good/for-up-to-32bits.-e.s, + * tests/good/for-up-to-32bits.-e.u.s, + * tests/good/for-up-to-32bits.s, + * tests/good/for-up-to-32bits.u.s, + * tests/good/for.-e.s, + * tests/good/for.-e.u.s, + * tests/good/for.s, + * tests/good/for.u.s, + * tests/good/forward-fun-and-type-decl.-e.s, + * tests/good/forward-fun-and-type-decl.-e.u.s, + * tests/good/forward-fun-and-type-decl.s, + * tests/good/forward-fun-and-type-decl.u.s, + * tests/good/four-hex-backslash.-e.s, + * tests/good/four-hex-backslash.-e.u.s, + * tests/good/four-hex-backslash.s, + * tests/good/four-hex-backslash.u.s, + * tests/good/fractions-underloaded.-e.s, + * tests/good/fractions-underloaded.-e.u.s, + * tests/good/fractions-underloaded.s, + * tests/good/fractions-underloaded.u.s, + * tests/good/fun-vs-var.-e.s, + * tests/good/fun-vs-var.-e.u.s, + * tests/good/fun-vs-var.s, + * tests/good/fun-vs-var.u.s, + * tests/good/functions.-e.s, + * tests/good/functions.-e.u.s, + * tests/good/functions.s, + * tests/good/functions.u.s, + * tests/good/getchar-no-static-string.-e.s, + * tests/good/getchar-no-static-string.-e.u.s, + * tests/good/getchar-no-static-string.s, + * tests/good/getchar-no-static-string.u.s, + * tests/good/getchar.-e.s, + * tests/good/getchar.-e.u.s, + * tests/good/getchar.s, + * tests/good/getchar.u.s, + * tests/good/if-and-bool.-e.s, + * tests/good/if-and-bool.-e.u.s, + * tests/good/if-and-bool.s, + * tests/good/if-and-bool.u.s, + * tests/good/if-and-if.-e.s, + * tests/good/if-and-if.-e.u.s, + * tests/good/if-and-if.s, + * tests/good/if-and-if.u.s, + * tests/good/if-and-rel.-e.s, + * tests/good/if-and-rel.-e.u.s, + * tests/good/if-and-rel.s, + * tests/good/if-and-rel.u.s, + * tests/good/if-void-body.-e.s, + * tests/good/if-void-body.-e.u.s, + * tests/good/if-void-body.s, + * tests/good/if-void-body.u.s, + * tests/good/if.-e.s, + * tests/good/if.-e.u.s, + * tests/good/if.s, + * tests/good/if.u.s, + * tests/good/init-array.-e.s, + * tests/good/init-array.-e.u.s, + * tests/good/init-array.s, + * tests/good/init-array.u.s, + * tests/good/initialize-to-nil.-e.s, + * tests/good/initialize-to-nil.-e.u.s, + * tests/good/initialize-to-nil.s, + * tests/good/initialize-to-nil.u.s, + * tests/good/int-comparison.-e.s, + * tests/good/int-comparison.-e.u.s, + * tests/good/int-comparison.s, + * tests/good/int-comparison.u.s, + * tests/good/int-var-ordering.-e.s, + * tests/good/int-var-ordering.-e.u.s, + * tests/good/int-var-ordering.s, + * tests/good/int-var-ordering.u.s, + * tests/good/invisible-valid-types.-e.s, + * tests/good/invisible-valid-types.-e.u.s, + * tests/good/invisible-valid-types.s, + * tests/good/invisible-valid-types.u.s, + * tests/good/just-a-simple-for-1.-e.s, + * tests/good/just-a-simple-for-1.-e.u.s, + * tests/good/just-a-simple-for-1.s, + * tests/good/just-a-simple-for-1.u.s, + * tests/good/just-a-simple-for-2.-e.s, + * tests/good/just-a-simple-for-2.-e.u.s, + * tests/good/just-a-simple-for-2.s, + * tests/good/just-a-simple-for-2.u.s, + * tests/good/large-ints.-e.s, + * tests/good/large-ints.-e.u.s, + * tests/good/large-ints.s, + * tests/good/large-ints.u.s, + * tests/good/let-in-for-init.-e.s, + * tests/good/let-in-for-init.-e.u.s, + * tests/good/let-in-for-init.s, + * tests/good/let-in-for-init.u.s, + * tests/good/let-scope-for-functions.-e.s, + * tests/good/let-scope-for-functions.-e.u.s, + * tests/good/let-scope-for-functions.s, + * tests/good/let-scope-for-functions.u.s, + * tests/good/let-scope-for-types.-e.s, + * tests/good/let-scope-for-types.-e.u.s, + * tests/good/let-scope-for-types.s, + * tests/good/let-scope-for-types.u.s, + * tests/good/letexp-eseq.-e.s, + * tests/good/letexp-eseq.-e.u.s, + * tests/good/letexp-eseq.s, + * tests/good/letexp-eseq.u.s, + * tests/good/local-vs-global-type.-e.s, + * tests/good/local-vs-global-type.-e.u.s, + * tests/good/local-vs-global-type.s, + * tests/good/local-vs-global-type.u.s, + * tests/good/many-args.-e.s, + * tests/good/many-args.-e.u.s, + * tests/good/many-args.s, + * tests/good/many-args.u.s, + * tests/good/many-bool-ops.-e.s, + * tests/good/many-bool-ops.-e.u.s, + * tests/good/many-bool-ops.s, + * tests/good/many-bool-ops.u.s, + * tests/good/many-functions.-e.s, + * tests/good/many-functions.-e.u.s, + * tests/good/many-functions.s, + * tests/good/many-functions.u.s, + * tests/good/many-vars.-e.s, + * tests/good/many-vars.-e.u.s, + * tests/good/many-vars.s, + * tests/good/many-vars.u.s, + * tests/good/merge.-e.s, + * tests/good/merge.-e.u.s, + * tests/good/merge.s, + * tests/good/merge.u.s, + * tests/good/mini-morpho.-e.s, + * tests/good/mini-morpho.-e.u.s, + * tests/good/mini-morpho.s, + * tests/good/mini-morpho.u.s, + * tests/good/mutually-recursive-functions.-e.s, + * tests/good/mutually-recursive-functions.-e.u.s, + * tests/good/mutually-recursive-functions.s, + * tests/good/mutually-recursive-functions.u.s, + * tests/good/mutually-recursive-procedures.-e.s, + * tests/good/mutually-recursive-procedures.-e.u.s, + * tests/good/mutually-recursive-procedures.s, + * tests/good/mutually-recursive-procedures.u.s, + * tests/good/nil-as-arg.-e.s, + * tests/good/nil-as-arg.-e.u.s, + * tests/good/nil-as-arg.s, + * tests/good/nil-as-arg.u.s, + * tests/good/nil-as-return-value.-e.s, + * tests/good/nil-as-return-value.-e.u.s, + * tests/good/nil-as-return-value.s, + * tests/good/nil-as-return-value.u.s, + * tests/good/nine.-e.s, + * tests/good/nine.-e.u.s, + * tests/good/nine.s, + * tests/good/nine.u.s, + * tests/good/non-commutative-move-mem-expr.-e.s, + * tests/good/non-commutative-move-mem-expr.-e.u.s, + * tests/good/non-commutative-move-mem-expr.s, + * tests/good/non-commutative-move-mem-expr.u.s, + * tests/good/nul-character.-e.s, + * tests/good/nul-character.-e.u.s, + * tests/good/nul-character.s, + * tests/good/nul-character.u.s, + * tests/good/of-precedence.-e.s, + * tests/good/of-precedence.-e.u.s, + * tests/good/of-precedence.s, + * tests/good/of-precedence.u.s, + * tests/good/order-strings.-e.s, + * tests/good/order-strings.-e.u.s, + * tests/good/order-strings.s, + * tests/good/order-strings.u.s, + * tests/good/precedence.-e.s, + * tests/good/precedence.-e.u.s, + * tests/good/precedence.s, + * tests/good/precedence.u.s, + * tests/good/preincrement.-e.s, + * tests/good/preincrement.-e.u.s, + * tests/good/preincrement.s, + * tests/good/preincrement.u.s, + * tests/good/print-chr-ord.-e.s, + * tests/good/print-chr-ord.-e.u.s, + * tests/good/print-chr-ord.s, + * tests/good/print-chr-ord.u.s, + * tests/good/print-tree.-e.s, + * tests/good/print-tree.-e.u.s, + * tests/good/print-tree.s, + * tests/good/print-tree.u.s, + * tests/good/queens.-e.s, + * tests/good/queens.-e.u.s, + * tests/good/queens.s, + * tests/good/queens.u.s, + * tests/good/record.-e.s, + * tests/good/record.-e.u.s, + * tests/good/record.s, + * tests/good/record.u.s, + * tests/good/recursive-type.-e.s, + * tests/good/recursive-type.-e.u.s, + * tests/good/recursive-type.s, + * tests/good/recursive-type.u.s, + * tests/good/recursive-types-mutual.-e.s, + * tests/good/recursive-types-mutual.-e.u.s, + * tests/good/recursive-types-mutual.s, + * tests/good/recursive-types-mutual.u.s, + * tests/good/recursive-types.-e.s, + * tests/good/recursive-types.-e.u.s, + * tests/good/recursive-types.s, + * tests/good/recursive-types.u.s, + * tests/good/redefine-int.-e.s, + * tests/good/redefine-int.-e.u.s, + * tests/good/redefine-int.s, + * tests/good/redefine-int.u.s, + * tests/good/redefine-print.-e.s, + * tests/good/redefine-print.-e.u.s, + * tests/good/redefine-print.s, + * tests/good/redefine-print.u.s, + * tests/good/rel.-e.s, + * tests/good/rel.-e.u.s, + * tests/good/rel.s, + * tests/good/rel.u.s, + * tests/good/scopes-protect-types.-e.s, + * tests/good/scopes-protect-types.-e.u.s, + * tests/good/scopes-protect-types.s, + * tests/good/scopes-protect-types.u.s, + * tests/good/scopes-protect-vars.-e.s, + * tests/good/scopes-protect-vars.-e.u.s, + * tests/good/scopes-protect-vars.s, + * tests/good/scopes-protect-vars.u.s, + * tests/good/seqexp-arithmetics.-e.s, + * tests/good/seqexp-arithmetics.-e.u.s, + * tests/good/seqexp-arithmetics.s, + * tests/good/seqexp-arithmetics.u.s, + * tests/good/shadowed-streq.-e.s, + * tests/good/shadowed-streq.-e.u.s, + * tests/good/shadowed-streq.s, + * tests/good/shadowed-streq.u.s, + * tests/good/shadowing-functions.-e.s, + * tests/good/shadowing-functions.-e.u.s, + * tests/good/shadowing-functions.s, + * tests/good/shadowing-functions.u.s, + * tests/good/shadowing-types-separate.-e.s, + * tests/good/shadowing-types-separate.-e.u.s, + * tests/good/shadowing-types-separate.s, + * tests/good/shadowing-types-separate.u.s, + * tests/good/side-effects-in-init.-e.s, + * tests/good/side-effects-in-init.-e.u.s, + * tests/good/side-effects-in-init.s, + * tests/good/side-effects-in-init.u.s, + * tests/good/side-effects-in-sxp.-e.s, + * tests/good/side-effects-in-sxp.-e.u.s, + * tests/good/side-effects-in-sxp.s, + * tests/good/side-effects-in-sxp.u.s, + * tests/good/side-effects.-e.s, + * tests/good/side-effects.-e.u.s, + * tests/good/side-effects.s, + * tests/good/side-effects.u.s, + * tests/good/single-variable.-e.s, + * tests/good/single-variable.-e.u.s, + * tests/good/single-variable.s, + * tests/good/single-variable.u.s, + * tests/good/so-many-args-in-rec-func.-e.s, + * tests/good/so-many-args-in-rec-func.-e.u.s, + * tests/good/so-many-args-in-rec-func.s, + * tests/good/so-many-args-in-rec-func.u.s, + * tests/good/strcmp.-e.s, + * tests/good/strcmp.-e.u.s, + * tests/good/strcmp.s, + * tests/good/strcmp.u.s, + * tests/good/string-backslash-char.-e.s, + * tests/good/string-backslash-char.-e.u.s, + * tests/good/string-backslash-char.s, + * tests/good/string-backslash-char.u.s, + * tests/good/string-backslash-octal.-e.s, + * tests/good/string-backslash-octal.-e.u.s, + * tests/good/string-backslash-octal.s, + * tests/good/string-backslash-octal.u.s, + * tests/good/string-backslash-tortured.-e.s, + * tests/good/string-backslash-tortured.-e.u.s, + * tests/good/string-backslash-tortured.s, + * tests/good/string-backslash-tortured.u.s, + * tests/good/string-huge.-e.s, + * tests/good/string-huge.-e.u.s, + * tests/good/string-huge.s, + * tests/good/string-huge.u.s, + * tests/good/string-int-not-keywords.-e.s, + * tests/good/string-int-not-keywords.-e.u.s, + * tests/good/string-int-not-keywords.s, + * tests/good/string-int-not-keywords.u.s, + * tests/good/string-simple-quotes.-e.s, + * tests/good/string-simple-quotes.-e.u.s, + * tests/good/string-simple-quotes.s, + * tests/good/string-simple-quotes.u.s, + * tests/good/string-var-comparing.-e.s, + * tests/good/string-var-comparing.-e.u.s, + * tests/good/string-var-comparing.s, + * tests/good/string-var-comparing.u.s, + * tests/good/string-var-ordering.-e.s, + * tests/good/string-var-ordering.-e.u.s, + * tests/good/string-var-ordering.s, + * tests/good/string-var-ordering.u.s, + * tests/good/stupid-array-type.-e.s, + * tests/good/stupid-array-type.-e.u.s, + * tests/good/stupid-array-type.s, + * tests/good/stupid-array-type.u.s, + * tests/good/substring-copy-all.-e.s, + * tests/good/substring-copy-all.-e.u.s, + * tests/good/substring-copy-all.s, + * tests/good/substring-copy-all.u.s, + * tests/good/substring-copy-nothing.-e.s, + * tests/good/substring-copy-nothing.-e.u.s, + * tests/good/substring-copy-nothing.s, + * tests/good/substring-copy-nothing.u.s, + * tests/good/substring-too-high-sum.-e.s, + * tests/good/substring-too-high-sum.-e.u.s, + * tests/good/substring-too-high-sum.s, + * tests/good/substring-too-high-sum.u.s, + * tests/good/substring-too-low-first.-e.s, + * tests/good/substring-too-low-first.-e.u.s, + * tests/good/substring-too-low-first.s, + * tests/good/substring-too-low-first.u.s, + * tests/good/substring-too-low-length.-e.s, + * tests/good/substring-too-low-length.-e.u.s, + * tests/good/substring-too-low-length.s, + * tests/good/substring-too-low-length.u.s, + * tests/good/substring.-e.s, + * tests/good/substring.-e.u.s, + * tests/good/substring.s, + * tests/good/substring.u.s, + * tests/good/test27.-e.s, + * tests/good/test27.-e.u.s, + * tests/good/test27.s, + * tests/good/test27.u.s, + * tests/good/test30.-e.s, + * tests/good/test30.-e.u.s, + * tests/good/test30.s, + * tests/good/test30.u.s, + * tests/good/test37.-e.s, + * tests/good/test37.-e.u.s, + * tests/good/test37.s, + * tests/good/test37.u.s, + * tests/good/test42.-e.s, + * tests/good/test42.-e.u.s, + * tests/good/test42.s, + * tests/good/test42.u.s, + * tests/good/test44.-e.s, + * tests/good/test44.-e.u.s, + * tests/good/test44.s, + * tests/good/test44.u.s, + * tests/good/three-name-spaces.-e.s, + * tests/good/three-name-spaces.-e.u.s, + * tests/good/three-name-spaces.s, + * tests/good/three-name-spaces.u.s, + * tests/good/types-aliases.-e.s, + * tests/good/types-aliases.-e.u.s, + * tests/good/types-aliases.s, + * tests/good/types-aliases.u.s, + * tests/good/var-bob-is-another-bob.-e.s, + * tests/good/var-bob-is-another-bob.-e.u.s, + * tests/good/var-bob-is-another-bob.s, + * tests/good/var-bob-is-another-bob.u.s, + * tests/good/var-override.-e.s, + * tests/good/var-override.-e.u.s, + * tests/good/var-override.s, + * tests/good/var-override.u.s, + * tests/good/while-in-while.-e.s, + * tests/good/while-in-while.-e.u.s, + * tests/good/while-in-while.s, + * tests/good/while-in-while.u.s, + * tests/overload/overload-builtin.-e.s, + * tests/overload/overload-builtin.-e.u.s, + * tests/overload/overload-builtin.s, + * tests/overload/overload-builtin.u.s, + * tests/overload/overload-function-record-arg.-e.s, + * tests/overload/overload-function-record-arg.-e.u.s, + * tests/overload/overload-function-record-arg.s, + * tests/overload/overload-function-record-arg.u.s, + * tests/overload/overload-function.-e.s, + * tests/overload/overload-function.-e.u.s, + * tests/overload/overload-function.s, + * tests/overload/overload-function.u.s, + * tests/overload/overload-nil-diambiguated.-e.s, + * tests/overload/overload-nil-diambiguated.-e.u.s, + * tests/overload/overload-nil-diambiguated.s, + * tests/overload/overload-nil-diambiguated.u.s, + * tests/overload/overload-var-type-inference.-e.s, + * tests/overload/overload-var-type-inference.-e.u.s, + * tests/overload/overload-var-type-inference.s, + * tests/overload/overload-var-type-inference.u.s, + * tests/runtime/chr-out-of-range1.-e.s, + * tests/runtime/chr-out-of-range1.-e.u.s, + * tests/runtime/chr-out-of-range1.s, + * tests/runtime/chr-out-of-range1.u.s, + * tests/runtime/chr-out-of-range2.-e.s, + * tests/runtime/chr-out-of-range2.-e.u.s, + * tests/runtime/chr-out-of-range2.s, + * tests/runtime/chr-out-of-range2.u.s, + * tests/runtime/substring-out-of-bounds1.-e.s, + * tests/runtime/substring-out-of-bounds1.-e.u.s, + * tests/runtime/substring-out-of-bounds1.s, + * tests/runtime/substring-out-of-bounds1.u.s, + * tests/runtime/substring-out-of-bounds2.-e.s, + * tests/runtime/substring-out-of-bounds2.-e.u.s, + * tests/runtime/substring-out-of-bounds2.s, + * tests/runtime/substring-out-of-bounds2.u.s, + * tests/runtime/substring-out-of-bounds3.-e.s, + * tests/runtime/substring-out-of-bounds3.-e.u.s, + * tests/runtime/substring-out-of-bounds3.s, + * tests/runtime/substring-out-of-bounds3.u.s: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2541 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-12 Roland Levillain + + Repair the TC-1 distribution. + + * tests/syntax/import-exp.tig: Add studentize `ast' marks to + alter this test so that is produces a parse error, even at TC-1. + * dev/stagize: Prune it. + Catch up with current bison++ interface. + s/tiger-input/tweast/ + * src/parse/tweast.hh (parse::Tweast): Explain what TWEAST is. + * src/parse/tiger_parse.i: Don't import ast/tiger_ast.i at TC-1. + * tcsh/python/Makefile.am, tcsh/ruby/Makefile.am + (TESTS_ENVIRONMENT): Pass top_builddir to the environment. + Use `$(RUN)' instead of `./run'. + * tcsh/python/tcsh.test, tcsh/python/tcsh-ia32.test, + * tcsh/ruby/tcsh.test: Get `run' from $top_builddir. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2540 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-11 Roland Levillain + + Miscellaneous changes in the distribution mechanism. + + * Makefile.am (200%): Turn this target into... + (20%): ...to handle EPITA classes from 2010 to 2099. + * dev/studentize: Don't print the header stating the number of + suppressed lines if there are none. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2539 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-11 Roland Levillain + + Keep the Tiger Interpreter from breaking the distribution. + + * dev/studentize_tc.conf: Add mark `all'. + * tcsh/python/tcsh.test: Use this mark to disable ti-based tests + when the compiler is not complete. + * tcsh/python/ti.py: More documentation. + * tcsh/python/Makefile.am: Likewise. + * dev/stagize: Prune these marks and remove + tcsh/python/test-ia32.test when the compiler is not complete. + Aesthetic changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2538 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-11 Roland Levillain + + Use the built-in prelude in TCSH. + + * tcsh/python/test-compiler.py, tcsh/python/test-front-end.py, + * tcsh/python/ti.py, tcsh/ruby/test-compiler.rb, + * tcsh/ruby/test-front-end.rb: Use the built-in prelude instead + of loading data/prelude.tih. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2537 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-11 Roland Levillain + + Factor tcsh/run. + + * tcsh/python/run.in, tcsh/ruby/run.in: Remove, and merge as... + * tcsh/run.in: ...this (new file). + * tcsh/Makefile.am (check_SCRIPT): New. + Add run. + * configure: Configure tcsh/run instead of tcsh/python/run and + tcsh/ruby/run. + * tcsh/run.mk: New file. + * tcsh/python/Makefile.am, tcsh/ruby/Makefile.am: Include it. + ($(TESTS)): Add a dependency on $(srcdir)/run.stamp. + ($(srcdir)/run.stamp): New target. + (EXTRA_DIST): Add $(srcdir)/run.stamp. + (check_SCRIPT): Remove. + + Don't run IA-32 tests on other platforms. + + * configure (IA32): New Automake conditional. + * tcsh/python/tcsh.test: Move IA32 test... + * tcsh/python/tcsh-ia32.test: ...here (new file). + * tcsh/python/Makefile.am (TESTS): Add tcsh-ia32.test. + (INSTALLCHECK_IA32): New. + Use it... + (installcheck-local): ...here. + * tcsh/python/ti.py: Use long options in Nolimips' invocation. + + Have TCSH/Ruby catch up with TCSH/Python. + + * tcsh/ruby/ti.rb, tcsh/ruby/test.rb: Rename as... + * tcsh/ruby/test-front-end.rb, tcsh/ruby/test-compiler.rb: + ...these. + * tcsh/ruby/tcsh.test: Adjust. + * tcsh/ruby/Makefile.am (EXTRA_DIST): Likewise. + (ruby_SCRIPT): Add ltrequire.rb and tc.rb. + + * NEWS: Update. + * test/syntax/Makefile.am: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2536 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-10 Roland Levillain + + Rename the Tiger Translator as Tiger Interpreter. Add a convenience wrapper over the Tiger interpreter. + + * tcsh/python/ti.py, tcsh/python/test.py, tcsh/python/tt.py: + Rename as... + * tcsh/python/test-front-end.py, tcsh/python/test-compiler.py, + * tcsh/python/ti.py: ...these. + * tcsh/python/tcsh.test: Adjust. + * tcsh/python/ti.in: New file. + Wrap ti.py. + * configure.ac: Configure it. + * tcsh/python/Makefile.am (EXTRA_DIST): Move ltihooks.py and + ti.py... + (python_PYTHON): ...here. + Adjust. + (dist_bin_SCRIPTS): Add ti. + (installcheck-local): New target. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2535 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-09 Roland Levillain + + Polish the Tiger Translator. + + * tcsh/python/tt.py: Remove spurious call to sys.exit(). + (hir): Add support for a Tree back-end. + Rework command line interface. + Fix the IA-32 assembly output filename. + Use os.path.join instead of string concatenation. + * tcsh/python/tcsh.test: Exercise all three back-ends (Tree, MIPS, + IA-32). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2534 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-09 Roland Levillain + + Improve the interface of libtarget to simplify TCSH. + + * src/target/libtarget.hh, src/target/libtarget.cc + (instructions_dump(Fragments&, Target&, TempMap&, ostream&, bool): + New function. + * src/target/tasks.cc (target::task::instructions_display): Use + it to simplify this function. + * src/tc.mk (libtarget): Add a dependency on libtemp. + * src/target/tiger_target.i (target::asm_display): Remove inlined + function. + * tcsh/python/tt.py: Adjust. + Aesthetic changes. + * tests/tc-check.in: Use gcc 4.1 and g++ 4.1. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2533 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-09 Akim Demaille + + Fix bison++ bug. + + * build-aux/bison++.in: Even if (especially if...) we fail, we must + preserve the *.output file. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2532 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-08 Roland Levillain + + Document code pruning in the Developer Manual. + + * dev/tc.texi (Pruning mechanism): New node. + (Release process): Add it to the table of contents. + (Teacher tarballs): Turn into a subsection. + * dev/Makefile.am (doc): New target. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2531 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-05 Benoßt Perrot + + 2007-03-05 Benoit Perrot + + * TODO: Remove entry killed a long time ago. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2530 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-05 Benoßt Perrot + + 2007-03-05 Benoit Perrot + + Dissociate generation of frame allocation/deallocation statements + from generation of procedure entry/exit statements in code + generators, cleaning the output assembly as a side-effect. + + * src/target/codegen.hh: + (build_fragment_context): Rename as `fragment_entry_exit_build'. + (build_fragment_entry_exit): Rename as `frame_build'. + * src/target/libtarget.cc: Update accordingly. + + * src/target/mips/prologue.hh, src/target/mips/epilogue.cc: + (build_fragment_context): Rename as `fragment_entry_exit_build'. + Prepend procedure's label to instruction list, /defining/ + conventionaly incoming registers. Append procedure's return + instruction to list, /using/ conventionaly outcoming + registers. Reserve and mark slots in instruction list for upcoming + frame allocation and deallocation. + (build_fragment_entry_exit): Rename as `frame_build'. Search + for previously inserted markups, and fill corresponding slots with + actual frame allocation and deallocation statements. + * src/target/mips/codegen.cc: Regenerate. + * src/target/ia32/prologue.hh, src/target/ia32/epilogue.cc: + Same as for MIPS'. + * src/target/ia32/codegen.cc: Regenerate. + + * src/assem/instrs.hh, src/assem/instrs.cc (label_find): New. + + * src/assem/fragment.cc, + * src/target/mips/spim-layout.cc, + * src/target/ia32/gas-layout.cc: + Do not print procedure's label explicitely anymore. + + * TODO: Kill corresponding entries. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2529 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-03-04 Benoßt Perrot + + 2007-03-04 Benoit Perrot + + * TODO: Remove entry killed a long time ago. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2528 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-27 Akim Demaille + + Update argp. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2527 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-27 Akim Demaille + + Bison 2.3a. * src/parse/parsetiger.yy: Upgrade to using Bison 2.3a+ features. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2526 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-27 Roland Levillain + + Update the build system requirements in bootstrap. + + * bootstrap: Check for Autoconf 2.61 and Automake 1.10. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2525 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-21 Akim Demaille + + Update requirements. * configure.ac: Autoconf, Automake, GCC, tc itself. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2524 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-19 Roland Levillain + + Improve require() in bootstrap and fix a bug in version_compare(). + + * bootstrap (version_compare): Prevent erroneous exits. + (require): Correct error message. + Query the environment for a variable with the same name as the + first argument, upper-cased, and use it instead if it exists. + Adjust callers. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2523 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-19 Roland Levillain + + Clean up ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2522 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-14 Benoßt Sigoure + + Fix bootstrap. * bootstrap: Don't invoke autoreconf manually for argp. autoreconf is clever enough to find that argp must also be bootstrap'ed (it figures this out with AC_CONFIG_SUBDIRS([argp]) in configure.ac). Moreover, argp no longer shares its build-aux directory. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2521 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-09 Roland Levillain + + * src/bind/binder.cc: Typos. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2520 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-08 Benoßt Tailhades + + Delete useless comments into Tiger translator. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2519 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-08 Benoßt Tailhades + + Test if necessary features are available into tc module for Tiger translator. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2518 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-07 Benoßt Tailhades + + New Tiger translator to use nolimips or gcc to execute assembler code. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2517 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-06 Roland Levillain + + ICC 9.1 compatibility. + + * src/bind/binder.cc: Instantiate Binder::undeclared + explicitly to avoid link errors with icpc, when using inlining. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2516 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-06 Roland Levillain + + Fix bootstrap. + + * bootstrap (toolname): Remove this function, and inline a + (working) version of its body at call sites. + Reported by Michaël Cadilhac. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2515 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-05 Roland Levillain + + Have bootstrap query the environment for tool names. + + * bootstrap (toolname): New function. + Use it to examine AUTOCONF, AUTOMAKE and LIBTOOLIZE before + using the canonical names of theses tools. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2514 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-02 Benoßt Sigoure + + Add argp in svn:external. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2513 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-02-02 Benoßt Sigoure + + Remove argp. * argp/ChangeLog: Remove. * argp/Makefile.am: Remove. * argp/TODO: Remove. * argp/Versions: Remove. * argp/acinclude.m4: Remove. * argp/argp-ba.c: Remove. * argp/argp-eexst.c: Remove. * argp/argp-fmtstream.c: Remove. * argp/argp-fmtstream.h: Remove. * argp/argp-fs-xinl.c: Remove. * argp/argp-help.c: Remove. * argp/argp-namefrob.h: Remove. * argp/argp-parse.c: Remove. * argp/argp-pv.c: Remove. * argp/argp-pvh.c: Remove. * argp/argp-test.c: Remove. * argp/argp-xinl.c: Remove. * argp/argp.h: Remove. * argp/configure.ac: Remove. * argp/mempcpy.c: Remove. * argp/strchrnul.c: Remove. * argp/strndup.c: Remove. * argp/testsuite/Makefile.am: Remove. * argp/testsuite/ex1-test: Remove. * argp/testsuite/ex1.c: Remove. * argp/testsuite/ex3.c: Remove. * argp/testsuite/ex4.c: Remove. * argp/testsuite/permute-test: Remove. * argp/testsuite/run-tests: Remove. * argp/testsuite: Remove. * argp: Remove. * src/type/record.cc: Formatting change. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2512 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-01-28 Benoßt Sigoure + + Remove useless parentheses and use prefix ++ instead of postfix. * src/assem/fragment.cc, * src/assem/instr.cc, * src/assem/instrs.cc, * src/bind/renamer.cc, * src/canon/traces.cc, * src/graph/handler.hxx, * src/liveness/flowgraph.hxx, * src/liveness/interference-graph.cc, * src/misc/list.hcc, * src/misc/set.hxx, * src/misc/test-xalloc.cc, * src/misc/timer.cc, * src/regalloc/color.cc, * src/symbol/symbol.cc, * src/target/cpu.cc, * src/target/ia32/codegen.cc, * src/target/ia32/epilogue.cc, * src/target/mips/codegen.cc, * src/target/mips/epilogue.cc, * src/target/mips/test-rw_prg.cc, * src/type/record.cc: Here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2511 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-01-28 Benoßt Sigoure + + Formatting changes. * src/ast/default-visitor.hh, * src/ast/visitor.hxx, * src/liveness/flowgraph.hh, * src/misc/generic-variant.hh, * src/misc/generic-variant.hxx, * src/misc/variant.hh, * src/misc/variant.hxx, * src/overload/over-table.hh, * src/target/ia32/gas-assembly.hh, * src/target/mips/spim-assembly.hh: Restyle: Formatting changes, fix typos. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2510 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-01-28 Benoßt Sigoure + + Remove trailing whitespaces. * dev/Makefile.am, * dev/ast-cloner-gen, * dev/ast-nodes-gen, * dev/ast-nodes-mk-gen, * dev/ast-readme-gen, * dev/ast-visitor-gen, * dev/ast.py: Remove trailing white spaces. Formatting changes in the generated code. * src/ast/array-exp.cc, * src/ast/array-ty.cc, * src/ast/assign-exp.cc, * src/ast/break-exp.cc, * src/ast/call-exp.cc, * src/ast/cast-exp.cc, * src/ast/cast-var.cc, * src/ast/decs-list.cc, * src/ast/field-init.cc, * src/ast/field-var.cc, * src/ast/field.cc, * src/ast/for-exp.cc, * src/ast/function-dec.cc, * src/ast/fwd.hh, * src/ast/if-exp.cc, * src/ast/int-exp.cc, * src/ast/let-exp.cc, * src/ast/name-ty.cc, * src/ast/nil-exp.cc, * src/ast/op-exp.cc, * src/ast/record-exp.cc, * src/ast/record-ty.cc, * src/ast/seq-exp.cc, * src/ast/simple-var.cc, * src/ast/string-exp.cc, * src/ast/subscript-var.cc, * src/ast/type-dec.cc, * src/ast/var-dec.cc, * src/ast/while-exp.cc, * src/parse/parsetiger.cc, * src/parse/parsetiger.hh: Re-generate. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2509 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-01-24 Razik Yousfi + + Rename TigerInput in Tweast. * src/parse/tiger-input.hh: Rename as... * src/parse/tweast.hh: ... this. * src/parse/tiger-input.hxx: Rename as... * src/parse/tweast.hxx: ... this. * src/parse/tiger-input.cc: Rename as... * src/parse/tweast.cc: ... this. * src/parse/test-tiger-input.cc: Rename as... * src/parse/test-tweast.cc: ... this. * src/desugar/bound-checking-visitor.cc, * src/desugar/bound-checking-visitor.hh, * src/desugar/desugar-visitor.cc, * src/desugar/test-bound-checking.cc, * src/inlining/inline-visitor.cc, * src/parse/Makefile.am, * src/parse/fwd.hh, * src/parse/libparse.cc, * src/parse/libparse.hh, * src/parse/parsetiger.cc, * src/parse/parsetiger.hh, * src/parse/parsetiger.yy, * src/parse/scantiger.ll, * src/parse/tiger-parser.cc, * src/parse/tiger-parser.hh, * src/parse/tiger_parse.i: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2508 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-01-14 Benoßt Sigoure + + Restyle: re-indent. * THANKS: Move myself... * AUTHORS: ... here. * src/assem/fwd.hh, * src/assem/layout.cc, * src/assem/visitor.hh, * src/assem/visitor.hxx, * src/ast/anydecs.hh, * src/ast/anydecs.hxx, * src/ast/decs.hxx, * src/ast/default-visitor.hh, * src/ast/default-visitor.hxx, * src/ast/fwd.hh, * src/ast/visitor.hh, * src/astclone/libastclone.hh, * src/astclone/test-cloner.cc, * src/bind/binder.cc, * src/bind/binder.hh, * src/bind/test-bind.cc, * src/callgraph/call-graph-visitor.cc, * src/callgraph/parent-graph-visitor.cc, * src/canon/traces.cc, * src/canon/traces.hh, * src/desugar/bound-checking-visitor.cc, * src/desugar/desugar-visitor.cc, * src/frame/frame.hh, * src/graph/graph.hh, * src/graph/graph.hxx, * src/graph/handler.hh, * src/graph/handler.hxx, * src/graph/iterator.hh, * src/graph/iterator.hxx, * src/liveness/flowgraph.hxx, * src/liveness/interference-graph.cc, * src/liveness/libliveness.cc, * src/liveness/liveness.cc, * src/misc/containers.hh, * src/misc/containers.hxx, * src/misc/error.hxx, * src/misc/escape.hxx, * src/misc/file-library.hh, * src/misc/fwd.hh, * src/misc/generic-variant.hh, * src/misc/list.hcc, * src/misc/map.hh, * src/misc/ref.hh, * src/misc/ref.hxx, * src/misc/scoped-map.hh, * src/misc/scoped-map.hxx, * src/misc/select-const.hh, * src/misc/set.hh, * src/misc/set.hxx, * src/misc/test-generic-variant.cc, * src/misc/test-variant.cc, * src/misc/timer.cc, * src/misc/traits.hh, * src/misc/traits.hxx, * src/misc/variant.hh, * src/overload/over-table.hxx, * src/parse/metavar-map.hxx, * src/parse/parsetiger.cc, * src/parse/parsetiger.hh, * src/parse/stack.hh, * src/parse/tiger-input.hh, * src/parse/tiger-parser.cc, * src/regalloc/color.cc, * src/regalloc/regallocator.hh, * src/symbol/symbol.cc, * src/symbol/symbol.hh, * src/symbol/symbol.hxx, * src/target/ia32/codegen.cc, * src/target/ia32/codegen.hh, * src/target/ia32/cpu.hh, * src/target/ia32/epilogue.cc, * src/target/ia32/gas-layout.hh, * src/target/ia32/prologue.hh, * src/target/libtarget.cc, * src/target/mips/codegen.cc, * src/target/mips/codegen.hh, * src/target/mips/epilogue.cc, * src/target/mips/prologue.hh, * src/target/mips/test-rw_prg.cc, * src/task/boolean-task.hh, * src/task/disjunctive-task.hh, * src/task/function-task.hh, * src/task/int-task.hh, * src/task/multiple-string-task.hh, * src/task/string-task.hh, * src/task/task-register.cc, * src/task/task-register.hh, * src/task/task.hh, * src/tc.cc, * src/temp/identifier.hh, * src/temp/label.hh, * src/temp/temp.cc, * src/translate/translation.cc, * src/translate/translation.hh, * src/translate/translator.cc, * src/translate/translator.hh, * src/tree/binop.cc, * src/tree/cjump.cc, * src/tree/fwd.hh, * src/tree/iterator.hxx, * src/tree/jump.hh, * src/tree/move.hxx, * src/tree/visitor.hh, * src/tree/visitor.hxx, * src/type/field.hh, * src/type/record.cc, * src/type/type-checker.cc, * src/type/type-checker.hh, * src/type/type-checker.hxx: Re-indent the code. Formatting changes only. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2507 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-01-14 Benoßt Sigoure + + Remove trailing whitespaces. * src/ast/array-exp.cc, * src/ast/array-ty.cc, * src/ast/assign-exp.cc, * src/ast/break-exp.cc, * src/ast/call-exp.cc, * src/ast/cast-exp.cc, * src/ast/cast-var.cc, * src/ast/decs-list.cc, * src/ast/field-init.cc, * src/ast/field-var.cc, * src/ast/field.cc, * src/ast/for-exp.cc, * src/ast/function-dec.cc, * src/ast/if-exp.cc, * src/ast/int-exp.cc, * src/ast/let-exp.cc, * src/ast/name-ty.cc, * src/ast/nil-exp.cc, * src/ast/op-exp.cc, * src/ast/record-exp.cc, * src/ast/record-ty.cc, * src/ast/seq-exp.cc, * src/ast/simple-var.cc, * src/ast/string-exp.cc, * src/ast/subscript-var.cc, * src/ast/type-dec.cc, * src/ast/var-dec.cc, * src/ast/while-exp.cc, * src/astclone/cloner.cc, * src/astclone/libastclone.hh, * src/callgraph/fundec-graph.hxx, * src/graph/graph.hh, * src/graph/test-graph.cc, * src/parse/parsetiger.cc, * src/symbol/symbol.cc, * src/symbol/test-symbol.cc, * src/target/ia32/codegen.cc, * src/target/ia32/epilogue.cc, * src/target/ia32/target.hh, * src/target/mips/target.hh, * src/tree/cjump.hh, * src/tree/iterator.hxx: Here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2506 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-01-12 Benoßt Sigoure + + Rename the TranslateVisitor in Translator. s/TranslateVisitor/Translator/g * src/translate/translate-visitor.cc: Rename as... * src/translate/translator.cc: ... this. * src/translate/translate-visitor.hh: Rename as... * src/translate/translator.hh: ... this. * src/translate/Makefile.am, * src/translate/libtranslate.cc, * src/translate/translation.hh: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2505 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-01-12 Benoßt Sigoure + + Rename CloneVisitor in Cloner. s/CloneVisitor/Cloner/g * dev/ast-clone-visitor-gen: Rename as... * dev/ast-cloner-gen: ... this. * src/astclone/clone-visitor.cc: Rename as... * src/astclone/cloner.cc: ... this. * src/astclone/clone-visitor.hh: Rename as... * src/astclone/cloner.hh: ... this. * src/astclone/clone-visitor.hxx: Rename as... * src/astclone/cloner.hxx: ... this. * src/astclone/test-clone-visitor.cc: Rename as... * src/astclone/test-cloner.cc: ... this. + + * dev/Makefile.am, + * src/astclone/Makefile.am, + * src/astclone/libastclone.hxx, + * src/desugar/bound-checking-visitor.hh, + * src/desugar/desugar-visitor.hh, + * src/inlining/inline-visitor.hh, + * src/inlining/prune-visitor.hh: Adjust all uses, includes etc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2504 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-01-12 Benoßt Sigoure + + Rename the RenameVisitor in Renamer. * src/bind/rename-visitor.cc: Rename as... * src/bind/renamer.cc: ... this. * src/bind/rename-visitor.hh: Rename as... * src/bind/renamer.hh: ... this. * src/bind/Makefile.am, * src/bind/libbind.cc: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2503 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-01-12 Benoßt Sigoure + + Rename TypeVisitor in TypeChecker. s/TypeVisitor/TypeChecker/g * src/overload/type-visitor.cc: Rename as... * src/overload/type-checker.cc: ... this. * src/overload/type-visitor.hh: Rename as... * src/overload/type-checker.hh: ... this. * src/type/type-visitor.cc: Rename as... * src/type/type-checker.cc: ... this. * src/type/type-visitor.hh: Rename as... * src/type/type-checker.hh: ... this. * src/type/type-visitor.hxx: Rename as... * src/type/type-checker.hxx: ... this. * src/desugar/test-string-cmp-desugar.cc, * src/escapes/escapes-visitor.hh, * src/overload/Makefile.am, * src/overload/binder.hh, * src/overload/liboverload.cc, * src/type/Makefile.am, * src/type/libtype.cc, * src/type/named.hh: Adjust all uses. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2502 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-01-12 Benoßt Sigoure + + Rename BindVisitor as Binder. s/BindVisitor/Binder/g * src/bind/bind-visitor.cc: Rename as... * src/bind/binder.cc: this. * src/bind/bind-visitor.hh: Rename as... * src/bind/binder.hh: this. * src/bind/Makefile.am: Adjust. * src/bind/libbind.cc, * src/escapes/escapes-visitor.hh: Adjust includes. * src/overload/bind-visitor.cc: Rename as... * src/overload/binder.cc: this. * src/overload/bind-visitor.hh: Rename as... * src/overload/binder.hh: this. * src/overload/Makefile.am: Adjust. * src/overload/liboverload.cc, * src/overload/liboverload.hh, * src/overload/tasks.hh, * src/overload/type-visitor.hh, * src/type/type-visitor.hh: Adjust includes and uses. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2501 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-01-12 Benoßt Sigoure + + Rename PrintVisitor in PrettyPrinter. * src/ast/print-visitor.cc: Rename as... * src/ast/pretty-printer.cc: this. * src/ast/print-visitor.hh: Rename as... * src/ast/pretty-printer.hh: this. * src/ast/print-visitor.yy: Rename as... * src/ast/pretty-printer.yy: this. * src/ast/Makefile.am, * src/ast/libast.cc: Fix accordingly. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2500 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2007-01-12 Benoßt Sigoure + + Rename PrintVisitor in PrettyPrinter. * THANKS: Add myself. * configure.ac, * src/ast/libast.cc, * src/ast/print-visitor.cc, * src/ast/print-visitor.hh, * src/ast/test-ast.cc: s/PrintVisitor/PrettyPrinter/g. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2499 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-12-28 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2498 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-12-27 Akim Demaille + + Formatting changes * build-aux/move-if-change, build-aux/warning.m4, * configure.ac, src/misc/timer.cc, src/parse/scantiger.ll: here. * src/misc/test-timer.cc: Dump the timer at the end. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2497 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-11-27 Roland Levillain + + Use file names complying with the coding style for misc::FileLibrary. + + * src/misc/filelibrary.hh, src/misc/filelibrary.hxx, + * src/misc/filelibrary.cc: Rename as... + * src/misc/file-library.hh, src/misc/file-library.hxx, + * src/misc/file-library.cc: ...this. + Adjust headers guards. + * src/astclone/test-clone-visitor.cc, + * src/desugar/test-for-loops-desugar.cc, + * src/desugar/test-string-cmp-desugar.cc, src/misc/Makefile.am, + * src/misc/fwd.hh, src/misc/tiger_misc.i, src/parse/libparse.cc, + * src/parse/libparse.hh, src/parse/tasks.cc, + * src/parse/tiger-parser.hh: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2496 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-11-24 Roland Levillain + + * src/misc/filelibrary.cc (misc::FileLibrary::find_file): Fix import statements using relative paths. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2495 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-11-24 Roland Levillain + + Handle error messages with import statements in tc-check. + + * tests/tc-check.in (check): Handle error messages with import + statements. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2494 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-11-09 Benoßt Tailhades + + 2493: Correction of a bug when importing file. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2493 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-10-09 Roland Levillain + + Update monoburg++. + + * build-aux/monoburg++.in: Catch up with the latest changes in + bison++. + * src/target/ia32/Makefile.am, src/target/mips/Makefile.am: + Adjust. + * configure.ac: Accept more Flex versions. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2491 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-10-06 Akim Demaille + + Upgrade handling of bison. + + * build-aux/bison++.in: Don't take an "dir" argument, use the + dirnames of the input and output files. + * src/parse/Makefile.am: Adjust bison++ invocation. + * build-aux/tc-prog.m4: Be more powerful. + * src/parse/parsetiger.yy: Pass %defines. + * tests/tests.mk: Pacify Automake. + * configure.ac: Be more specific with tool versions. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2490 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-10-06 Akim Demaille + + Upgrade TC_PROG. + + * build-aux/prog.m4: Rename as... + * build-aux/tc-prog.m4: this. + Support a version requirement with a comparison operator. + Change cache key. + * build-aux/version-compare.m4: Remove. + * configure.ac: Adjust. + Require Autoconf 2.60, Bison >= 2.2. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2489 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-09-09 Benoßt Perrot + + 2006-09-09 Benoit Perrot + + Consider MIPS' $ra as a caller save register. + + * src/target/mips/cpu.cc (Cpu::Cpu): Put $ra into caller save + register set. Do not consider $ra as a non-coalescable register + anymore. + * src/target/mips/epilogue.cc: + (Codegen::build_fragment_context): Save (resp. restore) $ra + to (resp. from) a temporary upon function entry (resp. exit); + this defers the responsibility of $ra preservation and + restoration to the register allocator. + (Codegen::build_fragment_entry_exit): Do not generate stack + allocation snippet when stack is empty. Delete explicit $ra + handling. + * src/target/mips/codegen.cc: + Regenerate. + + * tests/runtime/*.s, + * tests/escapes/*.s, + * tests/good/*.s, + * tests/overload/*.s: + Regenerate all reference assembly files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2488 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-09-04 Roland Levillain + + Version 1.10. + + * configure.ac: Version 1.10. + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2487 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-09-04 Roland Levillain + + Gain in conciseness in Tcsh. + + * tcsh/python/ti.py, tcsh/python/test.py: Remove superfluous calls + to exit(). + * tcsh/ruby/ti.rb, tcsh/ruby/test.rb: Likewise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2486 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-07-28 Roland Levillain + + Aesthetic changes in Tcsh. + + * tcsh/python/tc.py (has): New function. + * tcsh/python/ti.py, tcsh/python/test.py: Use it. + * tcsh/ruby/tc.rb (Tc::has?): New class method. + * tcsh/ruby/ti.rb, tcsh/ruby/test.rb: Use it. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2483 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-07-28 Roland Levillain + + Add tcsh/ruby/test.rb. + + * tcsh/ruby/test.rb: New. + * tcsh/ruby/tcsh.test (testsdir): Enable test.rb. + * tcsh/ruby/Makefile.am (AM_LDFLAGS): Remove disabled (useless) + flags. + (EXTRA_DIST): Add test.rb + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2482 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-07-27 Roland Levillain + + Tcsh does Ruby. + + * src/bind/tiger_bind.i, src/type/tiger_type.i: Factor the + wrapping of misc::Error... + * src/misc/tiger_misc.i: ...here, to avoid symbol clashes. + * tcsh/ruby/ltrequire.rb: New. + * tcsh/ruby/tc.rb: New. + * tcsh/ruby/run.in: New. + * tcsh/ruby/tcsh.test, tcsh/ruby/ti.rb: New tests. + * build-aux/with-tcsh.m4: Check for Ruby. + * configure.ac: Bump to 1.9a. + (DARWIN): New Automake conditional. + Configure tcsh/ruby/Makefile and tcsh/ruby/run. + * tcsh/generate-swig-mk: Take the target language as first + parameter. + Handle Ruby in addition to Python. + * bootstrap: Adjust. + * tcsh/python/Makefile.am ($(srcdir)/swig.mk): Adjust. + * tcsh/Makefile.am (SUBDIRS): Add ruby. + * tcsh/ruby/Makefile.am: New. + * dev/stagize: Typo in comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2481 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-06-21 Roland Levillain + + 2006-06-21 Roland Levillain + + Version 1.9. + For 2008-tc-8.0. + + * configure.ac: Version 1.9. + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2468 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-06-19 Roland Levillain + + 2006-06-19 Roland Levillain + + Fix monoburg++ w.r.t. to NetBSD's Bourne shell. + + * configure.ac, NEWS: Bump to 1.8a. + * build-aux/monoburg++.in (is_member): Remove function. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2467 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-06-15 Roland Levillain + + 2006-06-15 Roland Levillain + + Version 1.8. + For 2008-tc-7.0. + + * configure.ac: Version 1.8. + * NEWS: Update. + * src/parse/Makefile.am ($(srcdir)/parsetiger.stamp): Explain the + dependency. + * src/target/ia32/Makefile.am, src/target/mips/Makefile.am + ($(srcdir)/codegen.stamp): Likewise. + Fix stamp path. + Regen monoburg++ if needed before executing the action. + (EXTRA_DIST, $(srcdir)/codegen.hh $(srcdir)/codegen.cc): Adjust. + * src/target/ia32/target.hh: Typo in comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2466 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-05-31 Roland Levillain + + Version 1.7. For 2008-tc-6.0. + + * configure.ac: Version 1.7. + * NEWS: Update. + * src/translate/level.hh: Normalize a comment to please + studentize. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2465 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-05-22 Roland Levillain + + End tests from tests/runtime with a carriage return. + + * tests/runtime/chr-out-of-range1.tig, + * tests/runtime/chr-out-of-range2.tig, + * tests/runtime/substring-out-of-bounds2.tig, + * tests/runtime/substring-out-of-bounds3.tig, + * tests/runtime/substring-out-of-bounds1.tig: End these tests with + a carriage return. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2464 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-05-13 Fabien Ouy + + Test runtime functions with tc-check. + + * tests/runtime: New. Test runtime functions. + * tests/runtime/Makefile.am, + * tests/runtime/chr-out-of-range2.lpr, + * tests/runtime/chr-out-of-range2.u.s, + * tests/runtime/chr-out-of-range1.hir, + * tests/runtime/chr-out-of-range2.hir, + * tests/runtime/chr-out-of-range1.tig, + * tests/runtime/chr-out-of-range2.tig, + * tests/runtime/chr-out-of-range1.u.s, + * tests/runtime/chr-out-of-range1.lir, + * tests/runtime/chr-out-of-range2.lir, + * tests/runtime/chr-out-of-range1.-e.u.s, + * tests/runtime/chr-out-of-range2.-e.s, + * tests/runtime/chr-out-of-range2.-e.u.s, + * tests/runtime/chr-out-of-range1.lpr, + * tests/runtime/chr-out-of-range2.s, + * tests/runtime/chr-out-of-range1.hpr, + * tests/runtime/chr-out-of-range2.err, + * tests/runtime/chr-out-of-range1.err, + * tests/runtime/chr-out-of-range2.sta, + * tests/runtime/chr-out-of-range1.sta, + * tests/runtime/chr-out-of-range2.out, + * tests/runtime/chr-out-of-range1.out, + * tests/runtime/chr-out-of-range1.-e.s, + * tests/runtime/chr-out-of-range1.s, + * tests/runtime/chr-out-of-range2.hpr, + * tests/runtime/substring-out-of-bounds3.lir, + * tests/runtime/substring-out-of-bounds1.-e.u.s, + * tests/runtime/substring-out-of-bounds1.u.s, + * tests/runtime/substring-out-of-bounds3.lpr, + * tests/runtime/substring-out-of-bounds2.u.s, + * tests/runtime/substring-out-of-bounds2.lpr, + * tests/runtime/substring-out-of-bounds3.-e.u.s, + * tests/runtime/substring-out-of-bounds3.u.s, + * tests/runtime/substring-out-of-bounds1.hir, + * tests/runtime/substring-out-of-bounds1.tig, + * tests/runtime/substring-out-of-bounds2.hir, + * tests/runtime/substring-out-of-bounds2.tig, + * tests/runtime/substring-out-of-bounds3.hir, + * tests/runtime/substring-out-of-bounds3.tig, + * tests/runtime/substring-out-of-bounds1.lpr, + * tests/runtime/substring-out-of-bounds3.hpr, + * tests/runtime/substring-out-of-bounds3.err, + * tests/runtime/substring-out-of-bounds1.lir, + * tests/runtime/substring-out-of-bounds2.hpr, + * tests/runtime/substring-out-of-bounds3.sta, + * tests/runtime/substring-out-of-bounds1.out, + * tests/runtime/substring-out-of-bounds2.err, + * tests/runtime/substring-out-of-bounds2.-e.s, + * tests/runtime/substring-out-of-bounds1.hpr, + * tests/runtime/substring-out-of-bounds2.sta, + * tests/runtime/substring-out-of-bounds1.err, + * tests/runtime/substring-out-of-bounds1.-e.s, + * tests/runtime/substring-out-of-bounds1.s, + * tests/runtime/substring-out-of-bounds1.sta, + * tests/runtime/substring-out-of-bounds3.out, + * tests/runtime/substring-out-of-bounds2.s, + * tests/runtime/substring-out-of-bounds2.out, + * tests/runtime/substring-out-of-bounds3.-e.s, + * tests/runtime/substring-out-of-bounds3.s, + * tests/runtime/substring-out-of-bounds2.-e.u.s, + * tests/runtime/substring-out-of-bounds2.lir, + * tests/runtime/Makefile.in: New. + * configure.ac, + * tests/Makefile.am: Adjust. + * tests/mk-Makefile-am: Adjust to handle the `runtime' directory. + * tests/tc-check.in: Launch runtime tests when nolimips is invoked. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2463 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-05-12 Roland Levillain + + By default, don't check _main when using overloading. + + * tests/tc-check.in (maintainer): New option. When used, + enable... + (maintainer_mode_p): ...this variable (new). + (tests{101}): Consult this variable to decide whether to use + tests from overload-bind-maint and overload-type-maint. + (tarball_test): Add a missing semicolon. + * tests/overload-bind/inner-_main-fundec.tig, + * tests/overload-bind/nonexistent-_main.tig: Move files... + * tests/overload-bind-maint/inner-_main-fundec.tig + * tests/overload-bind-maint/nonexistent-_main.tig: ...here. + * tests/overload-type/bad-_main-type.tig: Move file... + * tests/overload-type-maint/bad-_main-type.tig: ...here + * tests/mk-Makefile-am: Add overload-bind-maint and + overload-type-maint to the list of visited directories. + * tests/overload-bind-maint/Makefile.am, + * tests/overload-type-maint/Makefile.am: New files. + * tests/overload-bind: Remove directory. + * tests/bind/Makefile.am (dist_noinst_DATA): Add + nonexistent-_main.tig (generated file) + * tests/type/Makefile.am (dist_noinst_DATA): Add + bad-_main-type.tig (generated file). + * tests/Makefile.am (TC_CHECK_FLAGS): Add --maintainer. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2462 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-05-11 Fabien Ouy + + Test the renamings (TC-R) with tc-check. + + * tests/tc-check.in (renaming_check, renamings_check_one): New. Test + bindings are still correct and identifiers are unique. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2461 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-05-05 Roland Levillain + + * TODO: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2460 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-05-04 Roland Levillain + + Factor the visit of functions' headers in overload::TypeVisitor. + + * src/overload/type-visitor.hh, src/overload/type-visitor.cc + (overfun_header_visit): Remove this function (was a duplicate of + type::TypeVisitor::visitDecHeader). + (overfun_body_visit): Rename as... + (visitDecBody): ...this. + (operator() (ast::FunctionDecs&)): + s/overfun_header_visit/visitDecHeader/. + s/overfun_body_visit/visitDecBody/. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2459 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-05-04 Roland Levillain + + Check _main's presence, location and type in programs with overloaded functions. + + * configure.ac, NEWS: Bump to 1.6a. + * src/bind/bind-visitor.hh (BindVisitor::level_) + (BindVisitor::main_found_): Make them protected instead of + private. + (BindVisitor::BindVisitor): Adjust their relative order of + initialization in ctor. + * src/overload/bind-visitor.cc (BindVisitor::visitDecHeader): + Forbid declarations of _main in inner levels. + * src/overload/type-visitor.cc + (TypeVisitor::overfun_header_visit): Check _main's type. + * src/overload/liboverload.cc (bind): Check for _main's presence. + * tests/bind/nonexistent-_main.tig + * tests/type/bad-_main-type.tig, + * tests/overload-bind/nonexistent-_main.tig, + * tests/overload-bind/inner-_main-fundec.tig, + * tests/overload-type/bad-_main-type.tig: New tests. + * tests/tc-check.in: Perform tests on the bindings of programs + with overloaded function. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2458 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-05-03 Roland Levillain + + Version 1.6. For 2008-tc-5.0. + + * configure.ac: Version 1.6. + * NEWS: Update. + * src/misc/test-xalloc.cc (main): Get rid of a warning about a + possibly undefined behavior. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2457 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-05-02 Roland Levillain + + * src/symbol/test-symbol.cc: Test symbol::is_main(). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2456 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-05-02 Roland Levillain + + Handle the case of a _main symbol containing an address. This occurs when reparsing a pretty-printed AST with binding information. + + * src/symbol/symbol.hh, src/symbol/symbol.cc (is_main): New + function. + Tell whether a symbol represents the `_main' entry point function, + even when it embeds an address. + * src/symbol/symbol.cc (match_substring): New (internal) function. + * src/bind/bind-visitor.cc (operator() (ast::CallExp&)) + (visitDecHeader) + * src/type/type-visitor.cc (visitDecHeader): + Use symbol::is_main to check the `_main' function. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2455 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-05-02 Roland Levillain + + * src/parse/scantiger.ll: Fix error message format for scanned integers out of bounds. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2454 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-05-02 Roland Levillain + + Better fix tcsh. + + * tcsh/python/test.py (tc.target.frame_allocate): Run it when + the script is known to stop after the instruction selection + (i.e., TC-7); skip it otherwise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2453 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-05-02 Roland Levillain + + Regen parsetiger.hh using a more recent version of Bison. + + * src/parse/parsetiger.hh: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2452 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-30 Roland Levillain + + * src/parse/parsetiger.yy (metavar): Add a `template' keyword to get rid of a syntactic ambiguity that makes Apple G++ 3.3 die with a SIGBUS. * src/parse/parsetiger.hh, src/parse/parsetiger.cc: Regen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2451 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-28 Roland Levillain + + Fix tcsh. + + * tcsh/python/test.py: Don't use tc.target.frame_allocate, since + it is broken. + (tempmap): Fetch it from the CPU. + No longer sys.exit(77) before tests that used to fail (and fixed + since). + * src/target/tiger_target.i: Wrap target::mips::Cpu and + target::ia32::Cpu. + * src/liveness/tiger_liveness.i (flowgraph_dump, liveness_dump) + (interference_dump): New wrappers (workarounds). + * src/target/cpu.hh, src/target/cpu.cc + (special_reg (const std::string&)): Remove this (useless) method. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2450 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-27 Akim Demaille + + regen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2449 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-25 Fabien Ouy + + Factor metavar access in parsetiger.yy. + + * src/parse/parsetiger.yy + (metavar (parse::TigerInput&, unsigned)): New. Get a metavar from + the current TigerInput. + * src/parse/parsetiger.hh, src/parse/parsetiger.cc: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2448 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-20 Akim Demaille + + 2006-04-20 Akim Demaille + + * src/parse/parsetiger.yy: Kill the remaining renamings from cast + to _cast. This is a mis-feature from Bison, it accepts tokens + that can't be reached! + Provide a better name for the remaining "named" metavars. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2447 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-20 Akim Demaille + + 2006-04-20 Akim Demaille + + Clean up the delivery/documentation generation code. + * dev/stagize: Simplify some duplicate code. + Be robust to stage=doc. + * Makefile.am (install-doc): Rename the directory to avoid + clashes with concurrent builds. + (studir): Set distdir to allow parallel builds (with different + names) instead of renaming the directory afterward. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2446 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-20 Akim Demaille + + 2006-04-20 Akim Demaille + + * configure.ac: Bump to 1.5a. + * src/parse/parsetiger.yy (CAST): This token is now designating + _cast. + * src/parse/scantiger.ll (cast): Adjust. + (EXTENSION): Remove. + * src/desugar/bound-checking-visitor.cc (desugar): Adjust to the + renaming of _cast. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2445 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-17 Benoßt Perrot + + 2006-04-17 Benoit Perrot + + Move architecture-dependant features (cpu and assembly) from + abstract to concrete targets. + + * src/target/codegen.hh, + * src/target/codegen.hxx, + * src/target/codegen.cc: + (cpu_, cpu_set, assembly_get): Move to... + * src/target/ia32/prologue.hh, src/target/ia32/epilogue.cc: + (cpu_, cpu_set, assembly_get): here, and prefer concrete types. + (ia32_assembly_get): Remove. + * src/target/mips/prologue.hh, src/target/mips/epilogue.cc: + (cpu_ cpu_set, assembly_get): and here and prefer concrete types. + (mips_assembly_get): Remove. + * src/target/ia32/target.cc, + * src/target/mips/target.cc: + Update accordingly. + + * src/target/ia32/gas-assembly.hh, + * src/target/mips/spim-assembly.hh: + (binop_build, move_build, load_build, store_build, label_build) + (cjump_build, jump_build, call_build, leave_build, ret_build): + Un-virtualize, as they are totaly architecture-dependant. + + * src/target/mips/codegen.cc, + * src/target/mips/codegen.hh, + * src/target/ia32/codegen.hh, + * src/target/ia32/codegen.cc: + Regenerate. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2444 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-17 Benoßt Perrot + + 2006-04-17 Benoit Perrot + + Kill macro redefinition in target. + + * src/target/ia32/prologue.hh: + Rename ASSEMBLY as IA32_ASSEMBLY. + * src/target/ia32/move.brg, + * src/target/ia32/binop.brg, + * src/target/ia32/call.brg, + * src/target/ia32/mem.brg, + * src/target/ia32/cjump.brg, + * src/target/ia32/move_store.brg, + * src/target/ia32/exp.brg, + * src/target/ia32/stm.brg, + * src/target/ia32/move_load.brg: + Update accordingly. + * src/target/ia32/codegen.hh, + * src/target/ia32/codegen.cc: + Regenerate. + + * src/target/mips/prologue.hh: + Rename ASSEMBLY as MIPS_ASSEMBLY. + * src/target/mips/move.brg, + * src/target/mips/binop.brg, + * src/target/mips/call.brg, + * src/target/mips/cjump.brg, + * src/target/mips/mem.brg, + * src/target/mips/move_store.brg, + * src/target/mips/exp.brg + * src/target/mips/stm.brg + * src/target/mips/move_load.brg: + Update accordingly. + * src/target/mips/codegen.hh, + * src/target/mips/codegen.cc: + Regenerate. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2443 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-17 Benoßt Perrot + + 2006-04-17 Benoit Perrot + + Help doxygen. + + * src/bind/rename-visitor.hh, + * src/target/ia32/gas-layout.hh, + * src/target/ia32/target.hh, + * src/target/ia32/gas-assembly.hh, + * src/target/ia32/cpu.hh, + * src/target/ia32/prologue.hh, + * src/target/codegen.hh, + * src/target/mips/spim-layout.hh, + * src/target/mips/spim-assembly.hh, + * src/target/mips/prologue.hh, + * src/target/mips/cpu.hh, src/target/mips/cpu.cc, + * src/target/libtarget.hh, + * src/target/assembly.hh: + Complete documentation. Fix \file directives. + + * src/target/ia32/codegen.hh, + * src/target/mips/codegen.hh: + Regenerate. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2442 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-13 Akim Demaille + + 2006-04-13 Akim Demaille + + Version 1.5. + For 2008-tc-4.1. + * Makefile.am: Use && to chain actions, not ; which hides failures. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2441 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-13 Akim Demaille + + 2006-04-13 Akim Demaille + + Version 1.5. + For 2008-tc-4.1. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2440 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-13 Akim Demaille + + 2006-04-13 Akim Demaille + + * src/parse/scantiger.ll: Scan ints as unsigned smaller that + INT_MAX. + * tests/good/large-ints.tig, tests/lexical/too-large-ints.tig, + * tests/good/mini-morpho.tig: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2439 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-13 Roland Levillain + + Prevent test-tiger-input from breaking the TC-1 distribution. + + * src/parse/test-tiger-input.cc: Add studentize tags to prune code + at TC-1. + * dev/stagize: Prune this file. + * src/version.cc.in: Add Emacs C++-mode tag. + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2438 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-12 Christophe Duong + + 2006-04-13 Christophe Duong + + * src/parse/tiger-input.cc, src/parse/test-tiger-input.cc, + * src/parse/Makefile.am: Add test for TigerInput. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2437 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-11 Roland Levillain + + Please NetBSD's shell. + + * bootstrap: Get rid of `function' keywords, as NetBSD's /bin/sh + rejects them. + * src/parse/parsetiger.yy: Remove extra comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2436 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-11 Roland Levillain + + Clean up ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2435 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-10 Yoann Fabre + + 2006-04-10 Arnaud Fabre + + Add some documentation with UML diagrams. + + * doc/schema.xmi: New file. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2434 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-08 Fabien Ouy + + Factor source inputs in TigerParser with a variant. + + * src/parse/tiger-parser.hh: Introduce a variant for input_ and + filename_. + * src/parse/scantiger.ll (scan_open), src/parse/tiger-parser.cc, + * src/parse/parsetiger.yy: Adjust. + * src/parse/parsetiger.hh, src/parse/parsetiger.cc: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2433 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-06 Roland Levillain + + * tests/tc-check.in: Be robust to buildirs having regexp metacharacters in their name. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2432 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-06 Roland Levillain + + Fix the last patch. + + * src/desugar/tasks.cc, src/inlining/tasks.cc (apply): Add + missing typename keyword before the type of the first (template) + argument. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2431 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-06 Roland Levillain + + Use template function signatures in tasks using `apply' routines. By the way, this helps the Intel C++ Compiler to find the right apply function at call sites. + + * src/desugar/tasks.cc, src/inlining/tasks.cc (applicable): New. + (apply): Use it to write the type of an applicable function. + * src/temp/temp.cc, src/temp/label.cc: Remove useless namespace + qualifiers. + * doc/Makefile.am: Explain why sed is used instead of configure to + generate Doxyfile. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2430 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-05 Roland Levillain + + Please Darwin's ld and Apple's GCC 3.3. + + * configure.ac: Bump to 1.4a. + * src/Makefile.am (tc_LDADD): Switch libtask and libtc to + satisfy the dependency of the former on the latter. + * src/temp/temp.cc: Move misc::Endomap explicit + instantiation into the misc namespace. + * src/temp/label.cc: Move misc::Endomap explicit + instantiation into the misc namespace. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2429 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-05 Akim Demaille + + 2006-04-05 Akim Demaille + + Version 1.4. + For 2008-tc-4.0. + * bootstrap: Delete stray exit. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2428 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-05 Akim Demaille + + 2006-04-05 Akim Demaille + + * bootstrap (awk_strverscmp, require, version_compare, fatal): New. + Check the version of some of the bootstrapping tools. + * dev/stats (count): Don't depend on tail -1. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2427 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-04 Christophe Duong + + 2006-04-05 Christophe Duong + + Prepare the release of TC-4. + + * src/type/function.hh, src/type/function.cc, + * src/inlining/inline-visitor.cc, src/inlining/inline-visitor.hh, + * src/inlining/prune-visitor.hh, src/inlining/prune-visitor.cc: + Fix some students marks. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2426 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-03 Roland Levillain + + Have tcsh work on Mac OS X as well as on Debian GNU/Linux, i.e. some features are still broken, but tcsh runs equally good on both systems. + + * src/Makefile.am (libtc_la_LIBADD): Move $(libtask_la)... + (tc_LDADD): ...here. + * tcsh/python/tc.py: Don't try to import tiger_cppgen, as it no + longer exists. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2425 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-03 Akim Demaille + + 2006-04-03 Akim Demaille + + Add new tests, that we fail, and fix them. + * tests/lexical/too-large-ints.tig, + * tests/good/large-ints.tig: New + * src/parse/scantiger.ll (int): Use strtol instead of atoi, which + interface is way too poor. + Check the returned value fits in the bounds. + Accept negative integer literals. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2424 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-03 Fabien Ouy + + * src/symbol/test-symbol.cc: Only test when the content of the string is changed, not the memory address. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2423 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-02 Christophe Duong + + 2006-04-02 Christophe Duong + + Fix compilation error and warnings with g++ 4.1. + + * src/type/type-visitor.hh, src/bind/rename-visitor.hh: Fix + extra qualification of class name on member functions. + * src/temp/label.cc, src/temp/temp.cc: Fix usage of not enclosed + namespaces. + * src/misc/set.hh: Help g++-4.1 find the method std::set::find + from superclass. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2422 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-02 Fabien Ouy + + Add some unit tests in symbol. + + * src/symbol/test-symbol.cc: Add tests with pointers on string + deleted after insertion. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2421 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-02 Fabien Ouy + + Install tc-check patch suggested by Alexis Sebbane. + + * tests/tc-check.in: Look for the AUTHORS file in the right + directory. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2420 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-04-01 Fabien Ouy + + Some cleaning in the type module. + + * src/type/array.hh, src/type/named.cc, src/type/record.hh: Typo. + * src/type/array.hxx, src/type/builtin-types.hh, + * src/type/record.cc, src/type/type-visitor.hh: Add some context + about fixmes. + * src/type/named.hxx: Add a free line. + * src/type/type-visitor.cc: Simplify visit of VarDec since formals + are not in fields anymore. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2419 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-31 Akim Demaille + + 2006-03-31 Akim Demaille + + Version 1.3a. + Various cleanups. + * src/desugar/libdesugar.hh, + * src/desugar/libdesugar.cc: Use template functions rather that + the former extract_result function. + * src/desugar/desugar-visitor.hh, + * src/desugar/desugar-visitor.cc: Adjust marks. + Formatting changes. + Don't use using namespace, it is not worth it here. + * src/desugar/bound-checking-visitor.hh, + * src/desugar/bound-checking-visitor.cc: Fix marks. + Don't use using namespace, it is not worth it here. + (prelude): New. + (parse_decs_): No longer a member function, but... + (parse_decs): this free function. + (box_prefix_): Replace with... + (box): this new function. + * src/overload/type-visitor.hh, + * src/overload/type-visitor.cc: Adjust student marks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2418 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-31 Akim Demaille + + 2006-03-31 Akim Demaille + + Version 1.3. + For 2008-tc-3.0 and 2008-tc-4.0. + * src/target/ia32/gas-assembly.cc: Fix student marks. + Comment changes. + * src/bind/rename-visitor.hh, src/bind/rename-visitor.cc: + Fix marks. + * src/bind/bind-visitor.hxx (undeclared): Move to... + * src/bind/bind-visitor.cc: here, since this routine is not used + elsewhere (except the overloaded BindVisitor, but on the same + types). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2417 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-30 Fabien Ouy + + Version 1.3 released for 2008 TC-3 + + * configure.ac: Update version. + * NEWS: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2416 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-30 Fabien Ouy + + 2006-03-30 Christophe Duong + + Prepare the release of TC-4. + + * src/desugar/bound-checking-visitor.cc, + * src/inlining/prune-visitor.hh, + * src/overload/bind-visitor.cc: Fix some students marks. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2415 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-28 Fabien Ouy + + 2006-03-28 Fabien Ouy + + * src/parse/libparse/hh, src/parse/libparse.cc (parse_unit): New. + Introduce the _main function before parsing. + * src/bind/test-bind.cc: Adjust. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2414 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-28 Fabien Ouy + + 2006-03-28 Fabien Ouy + + * src/type/type-visitor.cc (visitDecHeader): Check + the type of the _main function. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2413 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-28 Christophe Duong + + 2006-03-28 Christophe Duong + + * src/misc/map.hxx (take): Return a copy of the + removed element, not a reference on it. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2412 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-28 Fabien Ouy + + Die after binding of source with no _main function. + + * src/bind/libbind.cc (bind): Check `_main' is declared. + * src/bind/bind-visitor.hh, src/bin/bind-visitor.cc + (check_main): New. Check if `_main' is declared in the AST. + * src/bind/bind-visitor.cc (visitDecHeader): + Remember when `_main' is found. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2411 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-22 Roland Levillain + + Fix the output of `make \%.diff'. + + * configure.ac: Bump to 1.2a. + Use AC_CONFIG_HEADERS instead of AM_CONFIG_HEADER. + * dev/diff-r: Ignore parse/location.hh, not location.hh. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2410 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-21 Roland Levillain + + Version 1.2. For 2008-tc-2.0. + + * configure.ac: Version 1.2. + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2409 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-21 Roland Levillain + + Latest changes before the TC-2 release. + + * src/parse/libparse.cc (parse::parse): Don't enable language + extensions when adding _main: _main is already a valid + identifier. + * src/ast/ast.yml (Typable, TypeConstructor): Use a fully + qualified class name in Doxygen comment. + (CastExp, CastVar): Document these classes. + * src/ast/typable.hh, src/ast/type-constructor.hh, + * src/ast/cast-exp.hh, src/ast/cast-var.hh: Regen. + * dev/stagize: Remove it from student tarballs. + * dev/studentize_tc.conf: Remove cppgen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2408 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-21 Roland Levillain + + Fix seq() in dev/stagize. + + * dev/stagize (seq): Respect the interface of GNU seq. + Touch the Makefile.am's instead of removing the Makefile.in's. + Prune back build-aux/Makefile.am + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2407 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-21 Roland Levillain + + Fix the student TC-2 distribution. + + * dev/stagize: Remove the Makefile.in's in the distdir, to + prevent studentize from choking on them. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2406 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-21 Roland Levillain + + Mac OS X 10.3 (Panther) compatibility. + + * src/parse/tiger-parser.hh (YYLEX_SIGNATURE): Add scope + resolution operators to help g++ 3.3 to parse this. + * src/parse/parsetiger.yy (%parse-param, %lex-param): Likewise. + * src/target/tasks.cc (target_mips, target_ia32): Likewise. + * dev/stagize (seq): New function. A replacement for the program + of the same name from the GNU coreutils. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2405 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-20 Roland Levillain + + Prepare the TC-2 release. + + * NEWS: Update. + * src/parse/tiger-parser.hh (YYDECL, YYLEX_SIGNATURE) [!SWIG]: + Hide them to SWIG, since it fails to parse them. + Move SWIG template instantiations... + * src/parse/tiger_parse.i: ...here. + (yy::position, yy::location): Rename as... + (parse::positionm, parse::location): ...these. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2404 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-20 Roland Levillain + + More TCSH repair. + + * src/misc/error.hh, src/misc/error.hxx (~Error): Add an explicit + destructor. + * src/bind/tiger_bind.i, src/type/tiger_type.i: Wrap and export + misc::Error. + * src/target/tiger_target.i: Wrap target::mips::Target and + target::ia32::Target. + * src/parse/tiger-input.hh [SWIG]: Instantiate the template + MetavarMap classes for SWIG. + * tcsh/python/test.py: Remove dead code testing CppGen. + Typo. + * dev/stagize: Remove or replace remaining occurences of codegen. + * tcsh/generate-swig-mk: Use a silent Automake comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2403 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-19 Benoßt Perrot + + 2006-03-19 Benoit Perrot + + Merge codegen/ into target/. + + * src/regalloc/regallocator.cc, + * src/regalloc/tasks.cc, + * src/liveness/interference-graph.hh, + * src/liveness/tasks.cc, + * src/target/target.hh, src/target/target.cc + * src/target/codegen.cc, + * tcsh/python/test.py + Search for headers and classes that were in codegen in target. + * tcsh/python/tc.py: Do not import the codegen module anymore. + + * src/tc.mk: + Remove libcodegen.la from libraries to make. + * src/Makefile.am: + Remove codegen from SUBDIRS. + * configure.ac: + Update accordingly. + + * src/codegen/tasks.hh, src/codegen/tasks.cc, + * src/codegen/fwd.hh + * src/codegen/Makefile.am + * src/codegen/tiger_codegen.i, + * src/codegen/ia32/fwd.hh, + * src/codegen/ia32/Makefile.am, + * src/codegen/mips/Makefile.am, + Merge into... + * src/target/tasks.hh, src/target/tasks.cc, + * src/target/fwd.hh + * src/target/Makefile.am + * src/target/tiger_target.i, + * src/target/ia32/fwd.hh + * src/target/ia32/Makefile.am + * src/target/mips/Makefile.am + These files, respectively. + + * src/codegen/assembly.hh, src/codegen/assembly.cc + * src/codegen/tiger-runtime.c + * src/codegen/codegen.hh, src/codegen/codegen.hxx, + * src/codegen/codegen.cc, + * src/codegen/libcodegen.hh, src/codegen/libcodegen.cc + * src/codegen/monoburg.mk + * src/codegen/ia32/binop.brg, + * src/codegen/ia32/call.brg, + * src/codegen/ia32/cjump.brg, + * src/codegen/ia32/exp.brg, + * src/codegen/ia32/mem.brg, + * src/codegen/ia32/move.brg, + * src/codegen/ia32/move_load.brg, + * src/codegen/ia32/move_store.brg, + * src/codegen/ia32/stm.brg, + * src/codegen/ia32/temp.brg, + * src/codegen/ia32/tree.brg, + * src/codegen/ia32/runtime.s, + * src/codegen/ia32/gas-layout.hh, src/codegen/ia32/gas-layout.cc, + * src/codegen/ia32/gas-assembly.hh, src/codegen/ia32/gas-assembly.cc, + * src/codegen/ia32/prologue.hh, src/codegen/ia32/epilogue.cc, + * src/codegen/ia32/codegen.hh, src/codegen/ia32/codegen.cc, + * src/codegen/mips/binop.brg + * src/codegen/mips/call.brg + * src/codegen/mips/cjump.brg + * src/codegen/mips/exp.brg + * src/codegen/mips/mem.brg + * src/codegen/mips/move.brg + * src/codegen/mips/move_load.brg + * src/codegen/mips/move_store.brg + * src/codegen/mips/stm.brg + * src/codegen/mips/temp.brg + * src/codegen/mips/tree.brg + * src/codegen/mips/runtime.s, + * src/codegen/mips/spim-layout.hh, src/codegen/mips/spim-layout.cc, + * src/codegen/mips/spim-assembly.hh, src/codegen/mips/spim-assembly.cc, + * src/codegen/mips/prologue.hh, src/codegen/mips/epilogue.cc, + * src/codegen/mips/codegen.hh, src/codegen/mips/codegen.cc, + * src/codegen/mips/test-rw_prg.cc + Move into... + + * src/target/assembly.hh, src/target/assembly.cc + * src/target/tiger-runtime.c, + * src/target/codegen.hh, src/target/codegen.hxx, + * src/target/codegen.cc, + * src/target/libtarget.hh, src/target/libtarget.cc, + * src/target/monoburg.mk + * src/target/ia32/binop.brg, + * src/target/ia32/call.brg, + * src/target/ia32/cjump.brg, + * src/target/ia32/exp.brg, + * src/target/ia32/mem.brg, + * src/target/ia32/move.brg, + * src/target/ia32/move_store.brg, + * src/target/ia32/move_load.brg, + * src/target/ia32/stm.brg, + * src/target/ia32/temp.brg, + * src/target/ia32/tree.brg, + * src/target/ia32/runtime.s, + * src/target/ia32/gas-layout.hh, src/target/ia32/gas-layout.cc + * src/target/ia32/gas-assembly.hh, src/target/ia32/gas-assembly.cc + * src/target/ia32/prologue.hh, src/target/ia32/epilogue.cc, + * src/target/ia32/codegen.hh, src/target/ia32/codegen.cc, + * src/target/mips/binop.brg, + * src/target/mips/call.brg, + * src/target/mips/cjump.brg, + * src/target/mips/exp.brg, + * src/target/mips/mem.brg, + * src/target/mips/move.brg, + * src/target/mips/move_load.brg, + * src/target/mips/move_store.brg, + * src/target/mips/stm.brg, + * src/target/mips/temp.brg, + * src/target/mips/tree.brg, + * src/target/mips/runtime.s, + * src/target/mips/spim-layout.hh, src/target/mips/spim-layout.cc, + * src/target/mips/spim-assembly.hh, src/target/mips/spim-assembly.cc, + * src/target/mips/prologue.hh, src/target/mips/epilogue.cc, + * src/target/mips/codegen.hh, src/target/mips/codegen.cc, + * src/target/mips/test-rw_prg.cc + These files respectively, and use target:: namespace instead of + codegen:: when relevant. + + * src/target/ia32-target.hh, src/target/ia32-target.cc, + * src/target/ia32-cpu.hh, src/target/ia32-cpu.cc, + * src/target/mips-target.hh, src/target/mips-target.cc, + * src/target/mips-cpu.hh, src/target/mips-cpu.cc, + Rename as... + * src/target/ia32/target.hh, src/target/ia32/target.cc, + * src/target/ia32/cpu.hh, src/target/ia32/cpu.cc, + * src/target/mips/target.hh, src/target/mips/target.cc, + * src/target/mips/cpu.hh, src/target/mips/cpu.cc, + These files, respectively. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2402 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-19 Benoßt Perrot + + 2006-03-19 Benoit Perrot + + Fix tcsh compilation. + + * src/parse/tiger_parse.i: Include parse/fwd.hh to get ast_type. + * src/ast/tiger_ast.i: Do not include ast/position.hh anymore. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2401 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-19 Roland Levillain + + Fix the reentrancy of import parsing. + + * configure.ac: Bump to 1.1a. + * src/parse/tiger-parser.cc (parse_import): Save the inputs before + parsing the import, and set them back after. + * src/parse/parsetiger.yy (importdec): Don't use a new TigerParser, + as it breaks the detection of recursive inclusions. + * src/misc/path.hh, src/misc/path.cc (append_rep): Rename as... + (append_dir): ...this. + Use the term ``directory'' instead of ``repertory''. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2400 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-19 Fabien Ouy + + 2006-03-19 Fabien Ouy + + * src/misc/test-error.cc, src/misc/test-indent.cc, + * src/misc/test-separator.cc, src/misc/test-timer.cc, + * src/misc/test-xalloc.cc: Don't write tests results on + standard output. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2399 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-17 Christophe Duong + + 2006-03-17 Christophe Duong + + Split the different type classes into different files. + * src/type/type.hh, src/type/type.cc, src/type/type.hxx, + * src/type/function.hh, src/type/function.cc, src/type/function.hxx, + * src/type/array.hh, src/type/array.cc, src/type/array.hxx, + * src/type/builtin-types.hh, src/type/builtin-types.cc, + * src/type/builtin-types.hxx, src/type/named.hh, src/type/named.cc, + * src/type/named.hxx, src/type/record.hh, src/type/record.cc, + * src/type/record.hxx, src/type/field.hh, src/type/field.cc, + * src/type/field.hxx: + New. + * src/type/types.hh, src/type/types.cc, src/type/types.hxx: + Split these files into new ones (one type per file except builtin types). + * src/type/Makefile.am: Update accordingly. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2398 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-17 Roland Levillain + + Version 1.1. For 2008-tc-1.0. + + * configure.ac: Version 1.1. + * NEWS, AUTHORS: Update. + * dev/stagize: Check whether src/ast exists before remaming + README.student. + Remove the monoburg wrapper for stages below codegen. + * dev/cut-bison-actions: Don't backup the input file. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2397 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-17 Roland Levillain + + Fix the TC-1 distribution (again). + + * src/misc/filelibrary.hh: Use standard header guards. + * src/parse/libparse.hh: Include misc/filelibrary.hh. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2396 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-17 Roland Levillain + + Harden the parse module. + + * src/parse/tiger-parser.cc (parse_): Empty the inputs after + the parsing. + (parse_file, parse_input): Ensure that the inputs are empty + before assigning them a new value. + * src/parse/parsetiger.yy (import): Use a new parsing context + to be (more) reentrant. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2395 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-17 Roland Levillain + + Provide two versions of src/ast/README: one for the teacher, one for students. + + * dev/ast-readme-gen: Don't hide anything by default. + Accept a --student flag. When used, hide ctors tagged as such. + * src/ast/Makefile.am ($(srcdir)/README.student): New target. + Use `dev/ast-readme-gen --student' to generate it. + (dist_noinst_DATA): Add README.student. + * src/ast/README: Regen. + * src/ast/README.student: New (generated). + * dev/stagize: Regen README.student. + Rename src/ast/README.student as src/ast/README in student mode. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2394 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-17 Roland Levillain + + Use a reentrant parsing when desugaring in concrete syntax in the parser. + + * src/parse/parsetiger.yy (exp): Don't reuse the same (original) + TigerParser when desugaring in concrete syntax. Call parse::parse + instead to use a fresh new parsing context, avoiding a bug where + metavariable maps were smashed. + * src/parse/metavar-map.hxx (take_): Die when the variable + retrieval fails. + * src/desugar/test-bound-checking.cc (test_bound_checking): New + function. + (main): New test adding bound checks to a DecsList-shaped + program. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2393 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-17 Roland Levillain + + Use boost::get instead of explicit or ``artificial'' casts. + + * src/parse/libparse.cc (parse): Use boost::get instead of + static_cast. + * src/desugar/desugar-visitor.cc (operator() (const ast::OpExp&)) + (operator() (const ast::ForExp&)) + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::ArrayExp&)), + (operator() (const ast::SubscriptVar&)) + * src/inlining/inline-visitor.cc + (operator() (const ast::CallExp&)): Use boost::get and save a + temporary variable. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2392 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-16 Fabien Ouy + + 2006-03-17 Fabien Ouy + + * src/misc/scoped-map.hh, src/misc/scoped-map.hxx: Document + student marks. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2391 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-16 Fabien Ouy + + 2006-03-17 Fabien Ouy + + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc + (parse_input): New. Factor code between parse (TigerInput&) + and parse (const std::string&). + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2390 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-16 Roland Levillain + + Move parse::parse_decs into BoundCheckingVisitor (which turns out to be its sole client). + + * src/parse/libparse.hh, src/parse/libparse.cc (parse_decs): Move + and rename as... + * src/desugar/bound-checking-visitor.hh, + * src/desugar/bound-checking-visitor.cc + (BoundCheckingVisitor::parse_decs_): ...this. + (BoundCheckingVisitor::operator() (const ast::TypeDecs&)): + Adjust caller. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2389 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-16 Roland Levillain + + Use a simpler wrapper over boost::variant. + + * src/misc/variant.hh, src/misc/variant.hxx: New files. + (misc::variant): New class. + * src/parse/fwd.hh (ast_type): Use misc::variant instead of + misc::generic_variant. + * src/misc/test-variant.cc: New test. + * src/misc/Makefile.am (libmisc_la_SOURCES): Add variant.hh and + variant.hxx. + (check_PROGRAMS): Add test-variant. + (test_variant_SOURCES, test_variant_CXXFLAGS): New. + * src/misc/generic-variant.hh, src/misc/generic-variant.hxx + * src/misc/test-generic-variant.cc: Fix Doxygen headers and + documentation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2388 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-16 Roland Levillain + + Introduce a wrapper over boost::variant with automatic conversion abilities. Use it to simplify the calls to the parse library. + + * src/misc/generic-variant.hh, src/misc/generic-variant.hxx: New + files. + (misc::generic_variant): New class. + Use it to define... + * src/parse/fwd.hh (ast_type): ...this typedef. + (ast::Exp, ast::DecsList): Pre-declare them. + * src/parse/tiger-parser.hh, src/parse/tiger-parser.hh + (parse, parse_file): Return a parse::ast_type. + Remove unneeded explicit instantiations. + Adjust. + (ast_type): Remove typedef. + * src/parse/libparse.hh, src/parse/libparse.cc + (parse (TigerInput&)): Return a parse::ast_type. + Remove unneeded explicit instantiations. + Adjust. + (parse): Rename as... + (parse_decs): ...this. + (ast::Exp, ast::DecsList): Don't pre-declare them. + * src/parse/parsetiger.yy, src/desugar/desugar-visitor.cc, + * src/desugar/bound-checking-visitor.cc, + * src/inlining/inline-visitor.cc: Adjust calls to parse::parse. + * src/misc/test-generic-variant.cc: New test. + * src/misc/Makefile.am (libmisc_la_SOURCES): Add + generic-variant.hh and generic-variant.hxx. + (check_PROGRAMS): Add test-generic-variant. + (test_generic_variant_SOURCES, test_generic_variant_CXXFLAGS): + New. + * src/bind/test-bind.cc: Wrap lines longer than 80 columns. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2387 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-16 Akim Demaille + + 2006-03-16 Akim Demaille + + * src/misc/indent.cc (indent_index): Actually I prefer a function + static argument, that's safer and cleaner, so move into... + (indent): This new private function. + Adjust all uses. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2386 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-16 Akim Demaille + + 2006-03-16 Akim Demaille + + * src/misc/indent.cc (indent_index): Declare const. + Prefer an anonymous namespace over static. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2385 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-15 Fabien Ouy + + 2006-03-15 Fabien Ouy + + * src/parse/libparse.hh, src/parse/libparse.cc + (parse (const std::string&)): New. Used for unit tests. + * src/astclone/test-clone-visitor.cc, src/bind/test-bind.cc, + * src/desugar/test-bound-checking.cc, + * src/desugar/test-for-loops-desugar.cc, + * src/desugar/test-string-cmp-desugar.cc, + * src/parse/test-parse.cc: Adjust. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2384 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-15 Fabien Ouy + + 2006-03-15 Fabien Ouy + + * src/parse/tiger-parser.cc (parse (TigerInput&)): Extensions are + not automatically enabled anymore. + * src/parse/tiger-parser.cc (parse (const std::string&)): Extensions + are disabled. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2383 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-15 Fabien Ouy + + 2006-03-15 Fabien Ouy + + * src/parse/tiger-parser.hh, src/parse/tiger-parser/cc + (parse_string ()): Rename as `parse ()' + * src/astclone/test-clone-visitor.cc, bind/test-bind.cc, + * desugar/test-bound-checking.cc, desugar/test-for-lopps-desugar.cc, + * desugar/test-string-cmp-desugar.cc, parse/libparse.cc, + * parse/parsetiger.yy, parse/test-parse.cc: Adjust. + * parse/parsetiger.cc: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2382 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-15 Akim Demaille + + 2006-03-15 Akim Demaille + + * src/parse/parsetiger.yy: I worried for nothing: there is no + precedence issues possible with ASTs! + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2381 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-15 Akim Demaille + + More. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2380 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-15 Roland Levillain + + Fix the TC-2 distribution. + + * src/ast/ast.yml: Move badly located studentize tag. + * dev/stagize: Regen src/ast/ast.dot. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2379 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-14 Roland Levillain + + Fix the TC-1 distribution. + + * src/desugar/test-for-loops-desugar.cc: Fix instantiation of + TigerParser. + * dev/cut-bison-actions: Avoid matching the LBRACE token when + cutting blocks enclosed in braces. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2378 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-13 Roland Levillain + + * NEWS: Typo and missing word in one of the latest entries. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2377 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-13 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2376 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-12 Akim Demaille + + 2006-03-12 Akim Demaille + + Desugaring is broken. + Reported by Benoit Perrot. + * src/parse/tiger-string.hh, src/parse/tiger-string.cc + (parse_string): Enable extensions by default. + * src/parse/test-parse.cc, src/desugar/test-bound-checking.cc, + * src/desugar/test-for-loops-desugar.cc, + * src/desugar/test-string-cmp-desugar.cc, + * src/bind/test-bind.cc: Simplify accordingly. + * src/parse/parsetiger.yy: Ahem, != is spelled <> in Tiger. + While we are at it, beware of precedence issues with parens. For + instance desugaring `- (1 - 2)' should yield `0 - (1 - 2)', not `0 + - 1 - 2'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2375 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-12 Akim Demaille + + 2006-03-12 Akim + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2374 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-12 Fabien Ouy + + 2006-03-12 Fabien Ouy + + * src/parse/Makefile.am, src/bind/Makefile.am: Use tc.mk. + * src/tc.mk: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2373 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-12 Fabien Ouy + + 2006-03-12 Fabien Ouy + + * src/misc/scoped-map.hxx (get (const Key&)): Replace call + to `name_get ()' by the use of `operator<<'. + * src/misc/test-scoped.cc: Replace Symbol by std::string. + * src/misc/Makefile.am: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2372 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-11 Roland Levillain + + Version 1.0. Released on the day Andrew Appel visited the LRDE. + + * configure.ac: Version 1.0. + * AUTHORS, NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2370 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-11 Roland Levillain + + Yet another (fixed) bug before the 1.0 release. + + * src/parse/libparse.cc: Fix a bug on a variant carrying a null + pointer. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2369 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-11 Roland Levillain + + Revert the previous patch. + + * src/misc/error.hh, src/misc/error.cc: Revert the previous + changes. + * dev/Makefile.am (dist_noinst_SCRIPTS): Add ast-graph-gen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2368 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-10 Roland Levillain + + Hide ice_on_error in student tarballs. + + * src/misc/error.hh (ice_on_error_here, ice_on_error): Hide them. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2367 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-10 Akim Demaille + + 2006-03-10 Akim Demaille + + * src/parse/scantiger.ll: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2366 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-10 Akim Demaille + + Fix my address. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2365 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-10 Akim Demaille + + 2006-03-10 Akim Demaille + + Use parser::token_type as in CV Bison 2.1b. + * src/parse/scantiger.ll (yyterminate): New. + * src/parse/tiger-parser.hh (YYLEX_SIGNATURE): Adjust. + * src/parse/libparse.hh: Typo. + * src/parse/parsetiger.yy: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2364 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-10 Roland Levillain + + Have the TC-1 distribution distcheck. + + * src/parse/Makefile.am (LDADD): Don't add $(libast) at TC-1. + * dev/stagize: Prune this file. + * tests/mk-Makefile-am: Distribute HIR and LIR files. + * tests/escapes/Makefile.am, tests/good/Makefile.am, + * tests/overload/Makefile.am: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2363 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-09 Roland Levillain + + Remove duplicated entry in ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2362 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-09 Roland Levillain + + Fix the TC-1 distribution. + + * src/parse/libparse.cc, src/parse/tiger-parser.hh, + * src/parse/parsetiger.yy, src/parse/tasks.cc, + * src/parse/test-parse.cc: Add studentize tags to prune code at + TC-1. + * src/parse/libparse.hh, src/parse/tiger-input.hh: Likewise. + Add forward declarations of some AST classes to have the package + compile on TC-1 distribution. + * build-aux/Makefile.am (nodist_noinst_SCRIPTS): Hide monoburg++ + on distributions lower than TC-7. + * dev/stagize: Prune these files. + Add back the `no-ast' to the set of pruned tags. + Fix the pruning of modules in configure.ac and src/Makefile.am. + * dev/studentize_tc.conf: Add back `no-ast' to the list of allowed + tags. + * tests/tc-check.in: Use blocks to avoid variable collisions. + (build_in_src_p, project_untar, project_make, parse_arguments): + Fix the behavior of the `--build_in_src' option. + * dev/cut-bison-actions: Don't cut braces enclosed in double + quotes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2361 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-09 Roland Levillain + + Fix a bug in BoundCheckingVisitor. + + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::TypeDecs& e)): Fix a bug (was parsing + a DecsList instead of a Decs). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2360 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-09 Akim Demaille + + 2006-03-09 Akim Demaille + + * src/desugar/test-string-cmp-desugar.cc, + * src/desugar/test-for-loops-desugar.cc, + * src/desugar/test-bound-checking.cc, + * src/bind/test-bind.cc, + * src/astclone/test-clone-visitor.cc, + * src/parse/test-parse.cc: Adjust to the previous changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2359 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-09 Akim Demaille + + 2006-03-09 Akim + + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc (parse_): + No longer takes arguments: the input must be set before calling it. + (parse_program, parse_string, parse_string_decs) + (parse_program_or_decs): Remove. + (parse_file, parse_string): New template member functions. + (ast_type): New. + * src/parse/libparse.hh, src/parse/libparse.cc (parse, parse_decs_list): + Remove. + (parse): New, template function. + * src/desugar/bound-checking-visitor.cc, + * src/desugar/desugar-visitor.cc, + * src/inlining/inline-visitor.cc: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2358 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-09 Roland Levillain + + Strip Bison actions when distributing a TC-1 tarball. + + * dev/cut-bison-actions: New script. + Suggested by Akim Demaille. + * dev/stagize: Use it. + * dev/Makefile.am (dist_noinst_SCRIPTS): Add cut-bison-actions. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2357 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-09 Roland Levillain + + Factor TigerInput's metavariables machinery. + + * src/parse/metavar-map.hh, src/parse/metavar-map.hxx: New files. + * src/parse/tiger-input.hh (TigerInput): Inherit from + MetavarMap, MetavarMap, + MetavarMap, MetavarMap. + (exp_, lvalue_, namety_, decs_): Remove these map members, and use + the ones from the base classes instead. + * src/parse/tiger-input.cc (TigerInput::TigerInput): Adjust ctors. + (TigerInput::~TigerInput): Move assertions... + * src/parse/metavar-map.hxx (MetavarMap::~MetavarMap): + ...here. + * src/parse/tiger-input.hh, src/parse/tiger-input.cc + (operator<< (ast::Exp*), operator<< (ast::Var*)) + (operator<< (ast::NameTy*), operator<< (ast::DecsList*)): Remove. + * src/parse/tiger-input.hh, src/parse/tiger-input.hxx, + * src/parse/tiger-input.cc (append_cast): Remove method. + (append_): New method. + (TigerInput::operator<<): Handle all cases, not just the default + one. + Delegate to append(). + (exp, namety, lvalue, decs): Factor these methods as... + (take): ...this one. + (print): Adjust. + * src/parse/parsetiger.yy: Adjust. + * src/parse/Makefile.am (libparse_la_SOURCES): Add metavar-map.hh + and metavar-map.hxx + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2356 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-09 Roland Levillain + + Fix the generation of .err files. + + * tests/tests.mk ($(srcdir)/\%.err): Remove .err file before + (re)creating it. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2355 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-08 Roland Levillain + + Clean up the parser prelude. + + * src/parse/parsetiger.yy: Hide more code in Bison directives, + but leave more hints. + * src/parse/parsetiger.hh, src/parse/parsetiger.cc, + * src/parse/location.hh: Regen. + * dev/stagize: No longer handle no-ast tags. + * dev/studentize_tc.conf: Remove the (now useless) no-ast tag. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2354 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-08 Fabien Ouy + + 2006-03-08 Fabien Ouy + + Split symbol tests between Symbol ones and + ScopedMap ones + + * src/symbol/test-symbol.cc (main): Move ScopedMap tests... + * src/misc/test-scoped.cc: ...here (New) + * src/misc/Makefile.am: Adujst. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2353 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-08 Akim Demaille + + 2006-03-08 Akim Demaille + + * build-aux/with-tcsh.m4: Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2352 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-08 Akim Demaille + + 2006-03-08 Akim Demaille + + * build-aux/with-swig.m4: New, extracted from... + * configure.ac: here. + Fix the Nolimips version requirement. + Reported by Fabien Ouy. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2351 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-08 Fabien Ouy + + 2006-03-08 Fabien Ouy + + Merge SymbolFactory with Symbol + + * src/symbol/symbol-factory.hh (symbol_create (), + * symbol_create (const Symbol&)): Rename as... + * src/symbol/symbol.hh (fresh (), fresh (const Symbol&)): These. + * src/symbol/symbol-factory.hh, src/symbol/symbol-factory.cc: + Remove. + * src/bind/rename-visitor.cc, src/inlining/rename-visitor.cc: + Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2350 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-08 Roland Levillain + + Aesthetic changes in the parser. + + * src/parse/parsetiger.yy: Re-indent, clean-up whitespace. + * src/parse/parsetiger.cc: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2349 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-08 Roland Levillain + + Use a LALR(1) parser skeleton at TC-1. + + * src/parse/parsetiger.yy: Use a LALR(1) skeleton (and disable + the GLR skeleton) for the first stage. + Vice versa for later stages. + * dev/stagize (prune_marks): Revamp. + Add `no-ast' to the set of marks pruned at TC stages greater + than 1. + * dev/studentize_tc.conf: Add no-ast. + * src/parse/parsetiger.hh, src/parse/parsetiger.cc, + * src/parse/stack.hh: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2348 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-08 Roland Levillain + + * build-aux/tiger.el: Add missing keywords. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2347 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-08 Benoßt Sigoure + + Add ViM syntax highlighting for Tiger. + + - build-aux/Makefile.am (EXTRA_DIST): Add tiger-ftdetect.vim and + tiger-syntax.vim. + - build-aux/tiger-ftdetect.vim: New. + - build-aux/tiger-syntax.vim: New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2346 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-08 Akim Demaille + + 2006-03-08 Akim + + Various stylistic changes. + * src/parse/scantiger.ll (meta_variable): Remove, unused. + * src/bind/Makefile.am (test_bin_CPPFLAGS): Move the path to the + prelude to... + * src/tc.mk (AM_CPPFLAGS): here. + * src/Makefile.am: Adjust. + * build-aux/prog.m4: Indentation changes. + AC_REQUIRE is not meant for that use, remove it. + * configure.ac: Stylistic changes. + Update version requirements. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2345 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-07 Roland Levillain + + Clean up and prepare the next release of TC-1. + + * src/parse/libparse.cc, src/parse/parsetiger.yy + * src/ast/position.hh, src/symbol/symbol-factory.hh: + Add missing #include's. + * src/misc/map.hxx: Remove superfluous #include. + * src/symbol/symbol.hxx, src/symbol/symbol.cc: Fix student marks. + Suggested by Fabien Ouy. + + * bootstrap: Check whether exists src/ast/ast.yml exists before + using it. + * dev/stagize: Move specific pruning inside... + (prune_marks): ...this function (new). + Check if the file exists before pruning it. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2344 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-07 Roland Levillain + + Explain how to make teacher tarballs in the developer guide. + + * dev/tc.texi (Test): Mention .err files. + Typo. + (Release process, Tarballs): Typos. + (Teacher tarballs): New section. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2343 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-07 Roland Levillain + + * dev/stagize: Don't deliver the `inlining' module until TC-4. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2342 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-02 Roland Levillain + + Clean up version-compare.m4. + + * build-aux/version-compare.m4: Don't add `^AS_' to the set of + allowed M4 patterns. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2341 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-03-02 Roland Levillain + + Use AS_VERSION_COMPARE to check program version numbers. + + * build-aux/version-compare.m4: New file. + (AS_VERSION_COMPARE): New macro. + * build-aux/bison.m4 (TC_PROG_BISON2), + * build-aux/monoburg.m4 (TC_PROG_MONOBURG): Remove these macros + and their files and replace them with... + * build-aux/prog.m4: ...this (new file) and... + (TC_PROG): ...this (new macro). + * configure.ac: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2340 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-02-28 Roland Levillain + + Clean up whitespace and remove spurious `\' characters in ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2339 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-02-28 Roland Levillain + + Print runtime's error messages on stderr. - src/codegen/ia32/runtime.s: . - src/codegen/mips/runtime.s: . - src/codegen/tiger-runtime.c: . (chr, substring) Print error message on stderr. From Benoit Perrot. + + Add support for standard error checking to tc-check. + - tests/tc-check.in (stdhpr): New global. + (havm_cycles): Use it instead of $stderr. + (nolimips_check_one, ia32_check_one): Check for the presence + of an .err file. + Check the standard error. + (ir_check_one): Likewise. + Redirect file descriptor 3 to $stdhpr when profiling is on. + Don't count cycles when profiling is off. + (ir_check): Print HAVM's profiling information on file + descriptor 3. + - configure.ac (HAVM_PREREQ): Update to 0.23. + + Update the machinery for tests generation. + - tests/tests.mk (MAINTAINERCLEANFILES): Add $(srcdir)/*.err. + ($(srcdir)/\%.err, $(srcdir)/\%.hpr): Redirect HAVM's standard + error to a .err file and profiling information to a .hpr file. + ($(srcdir)/\%.lpr): Redirect HAVM's profiling information to a + .lpr file (through file descriptor 3). + - tests/mk-Makefile-am: Add $(srcdir)/*.err. + Sort .tih files. + - tests/escapes/Makefile.am, tests/good/Makefile.am, + - tests/overload/Makefile.am: Regen. + - tests/good/chr-minus-1.out, tests/good/chr-256.out, + - tests/good/substring-too-low-first.out, + - tests/good/substring-too-low-length.out, + - tests/good/substring-too-high-sum.out: Regen. + - tests/good/assign-vs-rel.err: New. + - tests/good/array-of-alias.err: New. + - tests/good/all-binop.err: New. + - tests/good/assign-vs-boolean.err: New. + - tests/good/assign-and-array-instantiation.err: New. + - tests/good/array-subscript-assign.err: New. + - tests/good/assign-void.err: New. + - tests/good/array.err: New. + - tests/good/big-lvalue.err: New. + - tests/good/boolean-2.err: New. + - tests/good/big-exp.err: New. + - tests/good/boolean-1.err: New. + - tests/good/break-in-while.err: New. + - tests/good/builtins.err: New. + - tests/good/basic-import.err: New. + - tests/good/bempel_j.err: New. + - tests/good/break-in-for.err: New. + - tests/good/compare-void.err: New. + - tests/good/commutation-1.err: New. + - tests/good/comments-javalike-nested.err: New. + - tests/good/commutation-2.err: New. + - tests/good/compare-nil-and-record.err: New. + - tests/good/comments-nested.err: New. + - tests/good/comments-with-comment-chars.err: New. + - tests/good/concurrent-arguments.err: New. + - tests/good/compare-record-and-nil.err: New. + - tests/good/compare-record-and-record.err: New. + - tests/good/complex-import.err: New. + - tests/good/call.err: New. + - tests/good/concat.err: New. + - tests/good/chr-minus-1.err: New. + - tests/good/chr.err: New. + - tests/good/comments-with-quotes.err: New. + - tests/good/comments-with-parens.err: New. + - tests/good/chr-256.err: New. + - tests/good/donald.err: New. + - tests/escapes/formal-escapes.err: New. + - tests/escapes/for-scope.err: New. + - tests/escapes/for-lower.err: New. + - tests/escapes/for-upper.err: New. + - tests/good/explicit-record-type.err: New. + - tests/good/escaping-record.err: New. + - tests/good/evalexp.err: New. + - tests/good/exit-51.err: New. + - tests/good/empty-record-type.err: New. + - tests/good/empty-let-body.err: New. + - tests/escapes/local-escapes.err: New. + - tests/escapes/no-functiondec-at-all.err: New. + - tests/escapes/redeclaration.err: New. + - tests/escapes/recursion.err: New. + - tests/escapes/rhs-of-a-vardec.err: New. + - tests/escapes/record-escapes.err: New. + - tests/escapes/sl-propagation-1.err: New. + - tests/escapes/scopes.err: New. + - tests/escapes/sl-propagation-2.err: New. + - tests/escapes/variable-inside-for-body.err: New. + - tests/escapes/variable-escapes.err: New. + - tests/escapes/variant-escapes.err: New. + - tests/good/for.err: New. + - tests/good/for-up-to-32bits.err: New. + - tests/good/fun-vs-var.err: New. + - tests/good/field-of-field.err: New. + - tests/good/functions.err: New. + - tests/good/fact.err: New. + - tests/good/forward-fun-and-type-decl.err: New. + - tests/good/for-high-computed-once.err: New. + - tests/good/for-in-while.err: New. + - tests/good/for-high-same-name-as-index.err: New. + - tests/good/fractions-underloaded.err: New. + - tests/good/four-hex-backslash.err: New. + - tests/good/for-scope.err: New. + - tests/good/for-in-let.err: New. + - tests/good/invisible-valid-types.err: New. + - tests/good/init-array.err: New. + - tests/good/int-comparison.err: New. + - tests/good/if-and-bool.err: New. + - tests/good/if.err: New. + - tests/good/if-and-rel.err: New. + - tests/good/if-and-if.err: New. + - tests/good/int-var-ordering.err: New. + - tests/good/initialize-to-nil.err: New. + - tests/good/if-void-body.err: New. + - tests/good/just-a-simple-for-2.err: New. + - tests/good/just-a-simple-for-1.err: New. + - tests/good/let-scope-for-functions.err: New. + - tests/good/let-scope-for-types.err: New. + - tests/good/local-vs-global-type.err: New. + - tests/good/letexp-eseq.err: New. + - tests/good/let-in-for-init.err: New. + - tests/good/merge.err: New. + - tests/good/mutually-recursive-functions.err: New. + - tests/good/mutually-recursive-procedures.err: New. + - tests/good/many-vars.err: New. + - tests/good/many-bool-ops.err: New. + - tests/good/mini-morpho.err: New. + - tests/good/many-args.err: New. + - tests/good/many-functions.err: New. + - tests/good/non-commutative-move-mem-expr.err: New. + - tests/good/nine.err: New. + - tests/good/nul-character.err: New. + - tests/good/nil-as-return-value.err: New. + - tests/good/nil-as-arg.err: New. + - tests/good/order-strings.err: New. + - tests/good/of-precedence.err: New. + - tests/good/print-chr-ord.err: New. + - tests/good/precedence.err: New. + - tests/good/print-tree.err: New. + - tests/good/preincrement.err: New. + - tests/good/queens.err: New. + - tests/good/redefine-print.err: New. + - tests/good/rel.err: New. + - tests/good/recursive-types-mutual.err: New. + - tests/good/recursive-type.err: New. + - tests/good/redefine-int.err: New. + - tests/good/record.err: New. + - tests/good/recursive-types.err: New. + - tests/good/substring-copy-all.err: New. + - tests/good/substring-too-high-sum.err: New. + - tests/good/scopes-protect-vars.err: New. + - tests/good/string-backslash-octal.err: New. + - tests/good/shadowing-types-separate.err: New. + - tests/good/string-int-not-keywords.err: New. + - tests/good/string-backslash-tortured.err: New. + - tests/good/stupid-array-type.err: New. + - tests/good/single-variable.err: New. + - tests/good/scopes-protect-types.err: New. + - tests/good/substring-too-low-length.err: New. + - tests/good/string-var-ordering.err: New. + - tests/good/side-effects-in-sxp.err: New. + - tests/good/strcmp.err: New. + - tests/good/seqexp-arithmetics.err: New. + - tests/good/shadowed-streq.err: New. + - tests/good/string-simple-quotes.err: New. + - tests/good/so-many-args-in-rec-func.err: New. + - tests/good/shadowing-functions.err: New. + - tests/good/substring-too-low-first.err: New. + - tests/good/string-backslash-char.err: New. + - tests/good/side-effects-in-init.err: New. + - tests/good/substring-copy-nothing.err: New. + - tests/good/substring.err: New. + - tests/good/string-huge.err: New. + - tests/good/side-effects.err: New. + - tests/good/string-var-comparing.err: New. + - tests/good/test30.err: New. + - tests/good/test44.err: New. + - tests/good/test27.err: New. + - tests/good/types-aliases.err: New. + - tests/good/three-name-spaces.err: New. + - tests/good/test37.err: New. + - tests/good/test42.err: New. + - tests/good/var-override.err: New. + - tests/good/var-bob-is-another-bob.err: New. + - tests/good/while-in-while.err: New. + - tests/good/getchar.err: New. + - tests/good/getchar-no-static-string.err: New. + - tests/overload/overload-var-type-inference.err: New. + - tests/overload/overload-nil-diambiguated.err: New. + - tests/overload/overload-function-record-arg.err: New. + - tests/overload/overload-function.err: New. + - tests/overload/overload-builtin.err: New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2338 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-02-22 Akim Demaille + + 2006-02-21 Akim Demaille + + * tests/good/for-scope.tig: Strengthen it to catch binding errors + via type checking errors. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2337 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-02-22 Akim Demaille + + 2006-02-21 Akim + + Complete the previous patch. + * dev/ast-clone-visitor-gen: There is no longer a special case + for string*. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2336 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-02-22 Akim Demaille + + 2006-02-21 Akim + + Remove the litteral "meta" symbols. + * src/parse/scantiger.ll: Remove the support for "_symbol (*)". + * src/parse/tiger-input.hh, src/parse/tiger-input.cc + (symbol_map_type, symbol_, symbol, operator<< (Symbol)): Remove. + * src/ast/ast.yml (StringExp): The string has no reason to be + a pointer. + * src/parse/parsetiger.yy (take): Use it where we fetch the value + of a pointer in the %union. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2335 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-02-22 Akim Demaille + + Less todo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2334 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-02-09 Benoßt Perrot + + 2006-02-09 Benoit Perrot + + Make tiger-runtime more similar to what we really do. + + * src/codegen/tiger-runtime.c: + (tc_alloc_record): Rename as... + (tc_malloc): This. + (consts): Force it to be in .bss section. + (tc_chr, tc_substring): Use fwrite instead of printf. + (main): tc_main's return type is void, return 0. + * TODO: Update. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2333 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-02-06 Benoßt Perrot + + 2006-02-06 Benoit Perrot + + Reactivate IA32 cjump reg/imm + + * src/codegen/ia32/gas-assembly.hh, + * src/codegen/ia32/gas-assembly.cc: + (cjump_build) Handle conditional jump reg/imm and symmetric. + * src/codegen/ia32/cjump.brg: + Use these two forms. + * src/codegen/ia32/codegen.hh, src/codegen/ia32/codegen.cc: + Regen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2332 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-02-06 Benoßt Perrot + + 2006-02-06 Benoit Perrot + + Reactivate IA32 binop reg/imm + + * src/codegen/ia32/gas-assembly.hh, + * src/codegen/ia32/gas-assembly.cc: + (binop_build) Remove dead-code. Handle division-by-immediate. + (binop_inst) Factor binop generation. + * src/codegen/ia32/binop.brg: + Use binop_build register/immediate. + * src/codegen/ia32/codegen.hh, src/codegen/ia32/codegen.cc: + Regen. + + * tests/good/all-binop.tig + * tests/good/all-binop.lpr + * tests/good/all-binop.-e.s + * tests/good/all-binop.-e.u.s + * tests/good/all-binop.s + * tests/good/all-binop.out + * tests/good/all-binop.u.s + * tests/good/all-binop.hir + * tests/good/all-binop.sta + * tests/good/all-binop.hpr + * tests/good/all-binop.lir + * tests/good/Makefile.am: + Test all arithmetic binary operations in all immediate/variable + combinations. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2331 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-02-06 Roland Levillain + + Re-enable the emission of #line directives in code generators. + + - src/codegen/ia32/tree.brg, src/codegen/mips/tree.brg: Don't use + MonoBURG's `no-lines' option. + - src/codegen/ia32/codegen.cc, src/codegen/mips/codegen.cc: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2330 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-02-06 Roland Levillain + + Fix test-escape. + + - src/misc/test-escape.cc: Update test. + - src/misc/escape.cc: Remove dead code. + - tests/good/string-backslash-octal.-e.s, + - tests/good/string-backslash-octal.-e.u.s, + - tests/good/string-backslash-octal.hir, + - tests/good/string-backslash-octal.lir, + - tests/good/string-backslash-octal.s, + - tests/good/string-backslash-octal.u.s, + - tests/good/string-backslash-tortured.-e.s, + - tests/good/string-backslash-tortured.-e.u.s, + - tests/good/string-backslash-tortured.hir, + - tests/good/string-backslash-tortured.lir, + - tests/good/string-backslash-tortured.s, + - tests/good/string-backslash-tortured.u.s: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2329 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-02-02 Roland Levillain + + - build-aux/monoburg++.in: Clean up. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2328 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-02-01 Roland Levillain + + Improve MonoBURG usage. + + - src/codegen/ia32/tree.brg, src/codegen/mips/tiger.brg: Rename + as... + - src/codegen/ia32/tiger.brg, src/codegen/mips/tree.brg: ...these. + Add \%-directives. + - build-aux/monoburg++.in: New wrapper. + - build-aux/Makefile.am (nodist_noinst_SCRIPTS): Add monoburg++. + - src/codegen/monoburg.mk: New. + - src/codegen/ia32/Makefile.am, src/codegen/mips/Makefile.am: + (CODEGEN_GRAMMAR): s/tiger.brg/tree.brg/ + ($(srcdir)/codegen.stamp): Depend on $(MONOBURGXX). + Use the monoburg++ wrapper instead of plain monoburg, simplifying + the generation of codegen.cc and codegen.hh. + The content of these files no longer depends on the build path. + - src/codegen/ia32/codegen.hh, src/codegen/ia32/codegen.cc, + - src/codegen/mips/codegen.hh, src/codegen/mips/codegen.cc: Regen. + - configure.ac: Configure build-aux/monoburg++. + Depend on MonoBURG 1.0.5. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2327 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-28 Benoßt Perrot + + 2006-01-28 Benoit Perrot + + * tests/tc-check.in: + (ia32_check_one) Use check_external to check output IA32 program. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2326 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-28 Benoßt Perrot + + 2006-01-28 Benoit Perrot + + * src/misc/escape.cc: + (escape_) Do not escape '\a', since it is not supported by GNU as. + Suggested by Akim Demaille. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2325 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-28 Benoßt Perrot + + 2006-01-28 Benoit Perrot + + Fix binop handling in IA32 back-end. + + * src/codegen/ia32/gas-assembly.cc: + (binop_build) IA32 arithmetic & logical instructions' destination + register is also a source. From IA32 manual: divl divides edx:eax + by the specified operand (hence eax must be loaded with lhs and + edx nullified). + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2324 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-28 Benoßt Perrot + + 2006-01-28 Benoit Perrot + + Respect stdcall convention in IA32 back-end. + + * src/codegen/ia32/runtime.s: Re-build from tiger-runtime.s + * src/codegen/ia32/call.brg: Push arguments from right to left + * src/codegen/ia32/epilogue.cc: Cope with IA32 stack convention + {pre-dec,post-inc}rementation. + * src/codegen/ia32/codegen.cc: Re-generate. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2323 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-28 Benoßt Perrot + + 2006-01-28 Benoit Perrot + + Disable unsupported IA32 code-generators. + + * src/codegen/ia32/gas-asembly.hh, src/codegen/ia32/gas-asembly.cc: + (binop_build, cjump_build): Disable temp/int forms to facilitate + the IA32 back-end restoration. + * src/codegen/ia32/binop.brg: Disable Binop(exp, const) + * src/codegen/ia32/cjump.brg: Disable Cjump(exp, const) + * src/codegen/ia32/codegen.hh, src/codegen/ia32/codegen.cc: + Re-generate. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2322 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-28 Benoßt Perrot + + 2006-01-28 Benoit Perrot + + Fix cjump IA32 code generation. + + * src/codegen/ia32/gas-assembly.cc: + (cjump_inst) From IA32 manual: jl/jg are for signed comparisons, + jb/ja for unsigned ones. + (cjump_build) Cope with AT&T syntax. + * src/tree/cjump.cc: + (symmetrize) Symmetric of equality is equality + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2321 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-24 Roland Levillain + + Remove symbol::Table shortcut. + + - src/symbol/fwd.hh (Table): Remove. + - src/bind/bind-visitor.hh: Use misc::ScopedMap instead of + symbol::Table. + - src/symbol/test-symbol.cc: Likewise. + - src/misc/scoped-map.hh: Fix comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2320 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-24 Roland Levillain + + - tests/mk-Makefile-am: Don't forget input (.in) files. - tests/good/Makefile.am: Regen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2319 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-24 Roland Levillain + + Revamp tests/mk-Makefile-am. + + - tests/mk-Makefile-am (backslashify): New function. + Use it to rewrite the body of the script, using more Python idioms. + - tests/bind/Makefile.am, tests/escapes/Makefile.am, + - tests/good/Makefile.am, tests/import/Makefile.am, + - tests/lexical/Makefile.am, tests/overload-type/Makefile.am, + - tests/overload/Makefile.am, tests/syntax/Makefile.am, + - tests/type/Makefile.am: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2318 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-22 Benoßt Perrot + + 2006-01-22 Benoit Perrot + + Reactivate IA32 back-end checking. + + * src/target/tasks.cc: + (target_ia32): Remove warning message that disturbs tc-check. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2317 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-22 Benoßt Perrot + + 2006-01-22 Benoit Perrot + + Clean C runtime. + + * src/codegen/tiger-runtime.c: + (tc_exit): Implement. + (tc_exit, tc_not): Group. + (tc_init_array, tc_alloc_record): Group. + * TODO: The C runtime does implement print_int. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2316 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-22 Benoßt Perrot + + 2006-01-22 Benoit Perrot + + Force builtins to respect stdcall convention + + * src/codegen/tiger-runtime.c: Declare builtins to respect the + stdcall convention. + * src/codegen/ia32/runtime.s: Likewise. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2315 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-21 Roland Levillain + + Rewrite tests/mk-Makefile-am in Python. + + - tests/mk-Makefile-am: Convert to Python. + Handle HIR and LIR files. + - tests/bind/Makefile.am, tests/escapes/Makefile.am, + - tests/good/Makefile.am, tests/import/Makefile.am, + - tests/lexical/Makefile.am, tests/overload/Makefile.am, + - tests/overload-type/Makefile.am, tests/syntax/Makefile.am, + - tests/type/Makefile.am: Regen. + - TODO: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2314 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-20 Benoßt Perrot + + 2006-01-20 Benoit Perrot + + Raise IA32 back-end from the dead. + + * src/tree/cjump.hh, src/tree/cjump.cc: + (symmetrize): New. + + * src/target/ia32-target.cc (ctor): + Set target's codegen's CPU and assembly. + + * src/target/ia32-cpu.hh, src/target/ia32-cpu.cc: + (return_reg) Remove, as irrelevant. + * src/codegen/ia32/gas-assembly.hh, src/codegen/ia32/gas-assembly.cc: + (cjump_inst): New. + (cjump_build): Implement cjump reg/imm. + (push_build): Generate a "push" instruction. + (leave_build): Generate a frame-destructor "leave" instruction. + (ret_build): Generate a return-and-release-frame "ret" instruction. + + * src/codegen/ia32/move.brg, + * src/codegen/ia32/binop.brg, + * src/codegen/ia32/tiger.brg, + * src/codegen/ia32/call.brg, + * src/codegen/ia32/mem.brg, + * src/codegen/ia32/cjump.brg, + * src/codegen/ia32/move_store.brg, + * src/codegen/ia32/exp.brg, + * src/codegen/ia32/stm.brg, + * src/codegen/ia32/move_load.brg, + * src/codegen/ia32/temp.brg: + New. (These files are dumb copies from src/codegen/mips/) + * src/codegen/ia32/prologue.hh, + * src/codegen/ia32/epilogue.cc: + New. + * src/codegen/ia32/codegen.hh, src/codegen/ia32/codegen.cc: + Generate. + + * src/codegen/ia32/Makefile.am: Update accordingly. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2313 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-20 Roland Levillain + + 2006-01-20 Roland Levillain + + * src/symbol/table.hh, src/symbol/table.hxx (print, operator<<): + Move these methods... + * src/misc/scoped-map.hh, src/misc/scoped-map.hh: ...here. + Adjust. + * src/symbol/table.hh, src/symbol/table.hxx: Remove file. + (Table): Define it... + * src/symbol/fwd.hh (Table): ...here. + * src/bind/bind-visitor.hh, src/symbol/test-symbol.cc: Adjust. + * src/symbol/Makefile.am (libsymbol_la_SOURCES): Remove table.hh + and table.hxx. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2312 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-19 Akim Demaille + + More doc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2311 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-19 Akim Demaille + + ref: remove useless operators. + + * src/misc/ref.hh, src/misc/ref.hxx (operator*, operator->): Remove. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2310 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-17 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2309 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-17 Akim Demaille + + Remove cppgen, dead for ages. + + * src/cppgen/Makefile.am: Remove. + * src/cppgen/includes/arrayty.hh: Remove. + * src/cppgen/includes/binop.hh: Remove. + * src/cppgen/includes/builtin.hh: Remove. + * src/cppgen/includes/dec.hh: Remove. + * src/cppgen/includes/env.hh: Remove. + * src/cppgen/includes/explist.hh: Remove. + * src/cppgen/includes/function.hh: Remove. + * src/cppgen/includes/letinend.hh: Remove. + * src/cppgen/includes/list.hh: Remove. + * src/cppgen/includes/lvalue.hh: Remove. + * src/cppgen/includes/macro.hh: Remove. + * src/cppgen/includes/recordty.hh: Remove. + * src/cppgen/includes/stack.hh: Remove. + * src/cppgen/includes/type.hh: Remove. + * src/cppgen/includes/common.hh: Remove. + * src/cppgen/includes/control.hh: Remove. + * src/cppgen/includes/cppgen_all.hh: Remove. + * src/cppgen/includes: Remove. + * src/cppgen/libcppgen.hh: Remove. + * src/cppgen/libcppgen.cc: Remove. + * src/cppgen/tasks.hh: Remove. + * src/cppgen/tasks.cc: Remove. + * src/cppgen/tiger_cppgen.i: Remove. + * src/cppgen/cppgen-visitor.hh: Remove. + * src/cppgen/cppgen-visitor.cc: Remove. + * src/cppgen: Remove. + * src/Makefile.am: Adjust. + * dev/stagize: Adjust. + * src/tc.mk: Adjust. + * tests/tc-check.in: Adjust. + * configure.ac: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2308 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-17 Akim Demaille + + Regen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2307 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-17 Roland Levillain + + 2006-01-17 Roland Levillain + + Shorten concrete syntax manipulations in the desugar module. + + * src/ast/ast.yml (FunctionDec): Add set-accessor. + * src/ast/function-dec.hh, src/ast/function-dec.hxx: Regen. + * src/desugar/desugar-visitor.cc + (operator() (const ast::ForExp&)) + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::ArrayExp&)) + (operator() (const ast::SubscriptVar&)): Get rid of temporaries to + shorten parsing. + (operator() (const ast::FunctionDec&)): Likewise. + Let CloneVisitor handle the copy of the node, and use its result. + From Akim Demaille. + + * src/ast/ast.yml (LetExp): Remove set-accessor. + * dev/ast-nodes-gen (print_attributes): Don't output destruction + code in set-accessors. + * src/ast/let-exp.hh, src/ast/let-exp.hxx, + * src/ast/type-constructor.hxx: Regen. + * src/ast/default-visitor.hxx: Typo in comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2306 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-12 Akim Demaille + + 2006-01-12 Akim Demaille + + * build-aux/bison++.in: If the grammar generation failed, be sure + to copy the output files anyway, otherwise we might hide the + *.output file. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2305 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-12 Akim Demaille + + 2006-01-12 Akim Demaille + + Metavariables may just be numbered instead of named. + * src/parse/tiger-input.hh (exp_map_type, symbol_map_type) + (lvalue_map_type, namety_map_type, decs_map_type): Keys are + unsigned, not strings. + Adjust all dependencies. + (generate_id): Useless now. + * src/parse/tiger-parser.hh (seed_): Remove, dead for ages. + * src/parse/scantiger.ll, src/parse/parsetiger.yy: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2304 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-12 Akim Demaille + + 2006-01-12 Akim Demaille + + * src/parse/libparse.hh, src/parse/libparse.cc (parse_decs) + (parse_decslist): New. + * src/desugar/bound-checking-visitor.hh (boxes_type): Store + un-prefixed strings. + * src/desugar/bound-checking-visitor.cc (TypeDecs): Use concrete + syntax. + (ArrayExp): Simplify accordingly. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2303 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-11 Akim Demaille + + 2006-01-11 Akim Demaille + + Use a stringstream in TigerInput. + * src/parse/tiger-input.hh, src/parse/tiger-input.hxx, + * src/parse/tiger-input.cc (input_): Now stringstream. + (operator<<): Remove the ones for strings, instead implement + a generic one. + Adjust the dependencies. + + Provide a simple parse_string wrapper and use it. + * src/parse/libparse.hh, src/parse/libparse.cc (parse): New + overloaded version for TigerInputs. + * src/desugar/bound-checking-visitor.cc, + * src/desugar/desugar-visitor.cc: Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2302 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-11 Akim Demaille + + 2006-01-11 Akim Demaille + + * src/inlining/inline-visitor.hh (map_type): Store objects, not + pointers. + * src/inlining/inline-visitor.hh (operator() (CallExp)): + Simplify the map deallocation, which is now automatic. + Use a single TigerInput to construct the inlined call instead of + making it piece by piece. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2301 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-06 Akim Demaille + + 2006-01-06 Akim Demaille + + * src/tree/fragment.cc: s/(-)/sub/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2300 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-05 Roland Levillain + + 2006-01-05 Roland Levillain + + Generate a graph of the AST nodes. + + * dev/ast-graph-gen: New. + * src/ast/Makefile.am ($(srcdir)/ast.dot): New. + (dist_noinst_DATA): Add ast.dot. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2299 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-05 Roland Levillain + + 2006-01-05 Roland Levillain + + Move reserved types and function added by BoundCheckingVisitor + inside _main. + + * src/desugar/bound-checking-visitor.hh, + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::DecsList&)) + (operator() (const ast::FunctionDecs&)): Remove these methods and + put their contents... + (operator() (const ast::FunctionDecs&)): ...here (new method). + (has_int_array_p_, has_check_bounds_p_): Remove attributes. + (BoundCheckingVisitor::BoundCheckingVisitor): Adjust ctor. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2298 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-04 Christophe Duong + + 2006-01-04 Christophe Duong + + Move SymbolFactory into symbol. + + * src/inlining/symbol-factory.hh, + * src/inlining/symbol-factory.cc: + Move... + * src/symbol/symbol-factory.hh, + * src/symbol/symbol-factory.cc: + ...here. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2297 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-03 Roland Levillain + + 2006-01-03 Roland Levillain + + Don't dinstinguish ASTs with or without overloaded functions in + libdesugar and libinlining. As we now rename all identifiers + before desugaring or inlining, there is no longer overloaded + functions in those ASTs. + + * src/desugar/tasks.cc (overfun_desugar): Call ::desugar::desugar + instead of ::desugar::overfun_desugar. + (overfun_bound_checks_add): Call ::desugar::bound_checks_add + instead of ::desugar::overfun_bound_checks_add. + (extract_result (const std::pair&)): + Remove function (dead code). + * src/desugar/libdesugar.hh, src/desugar/libdesugar.cc: + Fix Doxygen headers. + (overfun_bind_and_types_check) + (overfun_desugar, overfun_bound_checks_add): Remove functions. + + * src/inlining/tasks.cc (overfun_inline_expand): Call + ::inlining::inline_expand instead of + ::inlining::overfun_inline_expand. + (overfun_prune): Call ::inlining::prune instead of + ::inlining::overfun_prune. + (extract_result (const std::pair&)): + Remove function (dead code). + * src/inlining/libinlining.hh, src/inlining/libinlining.cc + Fix Doxygen headers. + (overfun_inline_expand, overfun_prune): Remove functions. + (raw_inline_expand): Remove this function and inline its + contents... + (inline_expand): ...here. + (raw_prune): Remove this function and inline its contents... + (prune): ...here. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2296 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-03 Roland Levillain + + 2006-01-03 Roland Levillain + + Use concrete syntax to desugar string comparisons. + + * dev/ast-nodes-gen (print_guards_close): Print (optional) + epilogues of implementations. + * dev/ast.py (Node.__init__): Don't handle inlineCode attribute + (used nowhere). + * src/ast/print-visitor.cc (operator() (const OpExp&)): Don't + print operator symbol directly, use instead... + * src/ast/ast.yml (str (OpExp::Oper)): ...this. + * src/ast/op-exp.hh, src/ast/op-exp.cc: Regen. + * src/desugar/desugar-visitor.cc (operator() (const ast::OpExp&)): + Use concrete syntax to desugar string comparisons. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2295 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-03 Roland Levillain + + 2006-01-03 Roland Levillain + + Use a renaming pass to simplify the visitors of the desugar + module. + + * src/desugar/tasks.hh (desugar, overfun_desugar, raw-desugar) + (bound_checks_add, overfun_bound_checks_add) + (raw-bound-checks-add): Depend on rename. + * src/desugar/libdesugar.hh (desugar, bound_checks_add): Update + documentation. + * src/desugar/desugar-visitor.hh, src/desugar/desugar-visitor.cc + (boxes_): Remove (dead code). + (operator() (const ast::FunctionDecs&)) + (operator() (const ast::CallExp&), extract_fundec_) + (_streq_def_, _strcmp_def_, _exit_def_): Remove. + (DesugarVisitor::DesugarVisitor, operator() (const ast::OpExp&)): + Adjust. + * src/desugar/bound-checking-visitor.cc, + * src/desugar/bound-checking-visitor.hh + (has_new_builtin_types_p_, has_new_builtin_functions_p_): Rename + as... + (has_int_array_p_, has_check_bounds_p_): ...these. + (BoundCheckingVisitor::BoundCheckingVisitor): Adjust ctor. + (operator() (const ast::DecsList&)): Adjust. + Don't create aliases for `int' and `string'. + (operator() (const ast::FunctionDecs&)): Adjust. + Don't create aliases for `exit' and `print_err'. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2294 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-02 Roland Levillain + + 2006-01-02 Roland Levillain + + Refine ICE. + + * src/misc/error.hh, src/misc/error.cc (ice_on_error_here): New + macro. + (ice): Remove error type. + (ice_on_error): Take a filename and a line number as arguments. + Abort on error, instead of exiting. + * src/desugar/libdesugar.cc (bind_and_types_check) + (overfun_bind_and_types_check) + * src/desugar/desugar-visitor.cc (operator() (const ast::ForExp&)) + (operator() (const ast::FunctionDecs&)) + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::ArrayExp&)) + (operator() (const ast::SubscriptVar&)) + (operator() (const ast::DecsList&)) + (operator() (const ast::FunctionDecs&)) + * src/inlining/inline-visitor.cc + (operator() (const ast::CallExp&)): Adjust callers. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2293 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-02 Akim Demaille + + Move RenameVisitor into bind. + + * src/inlining/rename-visitor.hh, + * src/inlining/rename-visitor.cc: Rename as... + * src/bind/rename-visitor.hh, + * src/bind/rename-visitor.cc: these. + Now works in place: it derives from the DefaultVisitor, + not from the CloneVisitor. + * src/bind/Makefile.am, + * src/bind/libbind.hh, + * src/bind/libbind.cc, + * src/bind/tasks.hh, + * src/bind/tasks.cc, + * src/inlining/Makefile.am, + * src/inlining/libinlining.hh, + * src/inlining/libinlining.cc, + * src/inlining/tasks.hh, + * src/inlining/tasks.cc: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2292 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2006-01-02 Akim Demaille + + Update Bison. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2291 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-30 Akim Demaille + + Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2290 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-30 Akim Demaille + + 2005-12-30 Akim Demaille + + Avoid the double visit of declarations in the RenameVisitor. + This scheme is of course less efficient than the previous, but + it is much more compact. + * src/inlining/rename-visitor.hh, + * src/inlining/rename-visitor.cc (visit): Now always rename: + those that must not be renamed are simply renamed as themselves. + (decs_visit): Remove, we no longer need the double visit. + Also, remove the visits of chunks, just visit the declarations + individually. + (dec_register, dec_visit): Remove. + (operator() (ForExp)): Remove, no longer needed. + (inside_recordty_p_): Remove, dead code anyway. + * tests/good/for-scope.tig: Extend a bit to exercise the + inner variable. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2289 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-29 Akim Demaille + + 2005-12-29 Akim + + * src/parse/parsetiger.yy: Bison 2.2 will warn about unused + values, so stop relying on $$ = $1 being done by default, do it. + Factor the %token. + * build-aux/bison++.in: Remove Bison 2.0 support. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2288 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-27 Roland Levillain + + 2005-12-27 Roland Levillain + + * AUTHORS, NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2287 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-27 Roland Levillain + + 2005-12-27 Roland Levillain + + Catch up with the new formals. + + * src/inlining/rename-visitor.hh: Typos. + (new_names_type): Use const ast::Dec* as keys instead of + const ast::Ast*. + * src/inlining/rename-visitor.hh, src/inlining/rename-visitor.cc + (operator() (const ast::RecordTy&)) + (operator() (const ast::Field&)): Remove methods. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2286 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-23 Benoßt Perrot + + 2005-12-23 Benoßt Perrot + + * tests/tc-check.in: + Invoke nolimips with its native system library. + * src/codegen/mips/runtime.s: + (alloc, tc_exit, tc_init_array, tc_print, tc_print_err) + (main, tc_chr, tc_substring): Update syscall index accordingly. + (tc_print_int, tc_getchar): Re-implement accordingly. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2285 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-18 Fabien Ouy + + 2005-12-18 Fabien Ouy + + * src/inlining/inline-visitor.cc (operator() (ast::CallExp)): Remove + dead code. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2284 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-18 Fabien Ouy + + 2005-12-18 Fabien Ouy + + Merge the formals branch into the trunk. + + 2005-11-27 Fabien Ouy + + * ast/ast.yml: Remove useless explicit includes. + * ast/print-visitor.cc, ast/default-visitor.hxx: Adjust + comment style: replace `` with `'. + * ast/function-dec.hh: Regen. + * ast/bind-visitor.cc (visitDecBody): Remove + explicit visit of formals. + * desugar/desugar-visitor.cc: Simplify variables' names, wrap + to 80 columns. + * escapes/escapes-check-visitor.hh, + * escapes/escapes-check-visitor.cc + (operator() (ast::FunctionDec&)): Remove. + * type/type-visitor.cc (type (ast::VarDecs&)): Simplify. + + 2005-11-12 Fabien Ouy + + Use VarDecs for formals parameters instead of Fields. + + * src/ast/ast.yml: Update FunctionDec generation. + * src/ast/README, src/ast/escapable.hh, src/ast/field.hh, + * src/ast/field.cc, src/ast/function-dec.hh, + * src/ast/function-dec.cc, src/ast/function-dec.hxx, + * src/ast/simple-var.hh, src/ast/simple-var.hxx, + * src/ast/var-dec.hh, src/ast/var-dec.hxx, + * src/astclone/clone-visitor.cc: Regen. + * src/parse/parsetiger.yy: Add rules for function declarations, + adjust rule for now unescapable type field. + * src/parse/parsetiger.cc, src/parse/parsetiger.hh, + * src/parse/stack.hh, src/parse/position.hh, + * src/parse/location.hh: Regen. + * src/ast/test-ast.cc, src/bind/test-bind.cc, + * src/parse/test-parse.cc: Update. + * dev/ast-node-gen: Update includes_map for VarDecs. + + Update visitors to follow new FunctionDec. + + * src/ast/default-visitor.hxx, src/cppgen/cppgen-visitor.cc, + * src/translate/translate-visitor.cc, + * src/desugar/desugar-visitor.cc, + * src/desugar/bound-checkin-visitor.cc: Update. + * src/ast/print-visitor.cc, src/ast/print-visitor.hh + (operator() (const Field&, bool), + operator() (fields_type, bool)): Remove. + * src/bind/bind-visitor.hh, src/bind/bind-visitor.cc + (operator() (VarDecs)): Use decs_visit, simplify visit of + FunctionDec.Map var symbol table on VarDec instead of Ast. + * src/type/type-visitor.hh, src/type/type-visitor.cc + (type (VarDecs)): New. + + Simplify escaping, only VarDec can escape. + + * src/escapes/escapes-visitor.cc, + * src/escapes/escapes-check-visitor.cc, + * src/callgraph/static-link-visitor.cc + (operator() (FunctionDec)): Simplify visit. + * src/escapes/escapes-check-visitor.hh (escapes_check): Remove. + * src/escapes/escapes-check-visitor.hxx: No longer used. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2283 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-16 Roland Levillain + + 2005-12-16 Roland Levillain + + Introduce Internal Compiler Error kind, and use it in modules + desugar and inlining. + + * src/misc/error.hh, src/misc/error.cc (ice): New error type. + (ice_on_error): New manipulator. + * src/desugar/libdesugar.hh, src/desugar/libdesugar.cc + (bind_and_types_check, overfun_bind_and_types_check): New + functions. + Throw an ICE on binding or type-checking error. + * src/desugar/libdesugar.hh, src/desugar/libdesugar.cc + (desugar, overfun_desugar, bound_checks_add) + (overfun_bound_checks_add) + * src/inlining/libinlining.hh, src/inlining/libinlining.cc + (rename, inline_expand, overfun_inline_expand, prune) + (overfun_prune): Use them to factor these functions. + Return just the AST. + * src/tc.mk (libinlining): Add $(libdesugar). + Remove $(libbind) and $(libtype). + * src/inlining/inline-visitor.cc + (operator() (const ast::CallExp&)): Check the result of the + parser. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2282 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-16 Roland Levillain + + 2005-12-16 Roland Levillain + + Factor the visitation of usage sites in RenameVisitor. + + * src/inlining/rename-visitor.hh, src/inlining/rename-visitor.cc + (dec_visit): Fix assertion. + Rename as... + (visit): this. + Take the definition site as an additional argument. + (dec_visit): New method. Shorthand for visit. + (visit_dec_body): Adjust callers. + (use_visit): New method. Shorthand for visit. + (operator() (const ast::CallExp&)) + (operator() (const ast::NameTy&)) + (operator() (const ast::SimpleVar& e)): Use it to factor these + methods. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2281 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-15 Roland Levillain + + 2005-12-15 Roland Levillain + + * src/regalloc/color.cc (freeze_moves): Print information on + stderr only when tracing. + * tests/tc-check.in (ir_check_one): Increase timeout value. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2280 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-15 Roland Levillain + + 2005-12-15 Roland Levillain + + Have RenameVisitor visit VarDecs like FunctionDecs or TypeDecs, + using a 2-pass scheme. Factor the visitation of Dec subclasses. + + * src/ast/ast.yml (Dec::name): Remove const qualifier. + Provide write accessor. + * src/ast/dec.hh, src/ast/dec.hxx: Regen. + * src/inlining/rename-visitor.hh, src/inlining/rename-visitor.cc: + (dec_register, dec_visit): New methods, doing most of the + visitation work for declarations. + (visit_dec_header, visit_dec_body): Use them in these generic + implementations (new methods). + (operator() (const ast::VarDecs&)): New method, to be symmetric + with FunctionDecs and TypeDecs. + (visit_dec_body) + (visit_dec_header, visit_dec_body): + Remove methods, and rely on generic implementations. + (visit_dec_header): Adjust specialization. + (visit_dec_body): New specialization. + (operator() (const ast::FunctionDec&)) + (operator() (const ast::TypeDec&)) + (operator() (const ast::VarDec&)): Remove these methods. + (operator() (const ast::ForExp&)): New method. + Handle VarDec as index. + operator() (const ast::RecordTy&, operator() (const ast::Field&)): + New methods. + Handle Field as both an actual field of a record and as a formal. + (inside_recordty_p_): New flag. + (RenameVisitor::RenameVisitor): Adjust ctor. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2279 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-14 Roland Levillain + + 2005-12-14 Roland Levillain + + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2278 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-14 Roland Levillain + + 2005-12-14 Roland Levillain + + * tests/good/mini-morpho.tig, tests/good/mini-morpho.-e.s, + * tests/good/mini-morpho.-e.u.s, tests/good/mini-morpho.hir, + * tests/good/mini-morpho.hpr, tests/good/mini-morpho.in, + * tests/good/mini-morpho.lir, tests/good/mini-morpho.lpr, + * tests/good/mini-morpho.out, tests/good/mini-morpho.s, + * tests/good/mini-morpho.sta, tests/good/mini-morpho.u.s: New + test. + * tests/good/Makefile.am: Regen. + * tests/tc-check.in (ir_check_one, load_tests): Update timeout + values. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2277 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-13 Roland Levillain + + 2005-12-13 Roland Levillain + + Rename inlining::ScopedMap as misc::ScopedMap. + + * src/inlining/scoped-map.hh, src/inlining/scoped-map.hxx: Rename + as... + * src/misc/scoped-map.hh, src/misc/scoped-map.hxx: ...this. + Adjust. + * src/inlining/inline-visitor.hh: Adjust. + * src/misc/Makefile.am (libmisc_la_SOURCES): Add scoped-map.hh and + scoped-map.hxx. + * src/inlining/Makefile.am (libinlining_la_SOURCES): Remove + layered-map.hh and layered-map.hxx. + + + Factor symbol::Table using misc::ScopedMap. + + * src/symbol/table.hh, src/symbol/table.hxx (Table): Inherit from + misc::ScopedMap. + (super_type): New typedef. + (mapped_type, map_type, symtab_type, iterator, const_iterator): + Remove typedefs. + (Table::Table): Remove ctor. + (begin, end, put, find, get, scope_begin, scope_end): Remove + methods. + (symtab_): Remove attribute. + (print): Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2276 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-12 Roland Levillain + + 2005-12-12 Roland Levillain + + More concrete syntax in DesugarVisitor. + + * src/desugar/desugar-visitor.hh, src/desugar/desugar-visitor.cc + (extract_fundec_): New method. + (operator() (const ast::FunctionDecs&)): Use it. + Use concrete syntax to introduce the builtin aliases _streq and + _strcmp. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2275 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-12 Roland Levillain + + 2005-12-12 Roland Levillain + + Let InlineVisitor compute the set of recursive functions itself. + + * src/callgraph/call-graph-visitor.cc + (operator() (const ast::CallExp&)): Catch up with the changes + introduced by the prelude. + * src/callgraph/libcallgraph.hh, src/callgraph/libcallgraph.cc + (callgraph_compute (const ast::Ast&)): New function. + * src/callgraph/tasks.hh, src/callgraph/tasks.cc (callgraph): + Don't export the callgraph. + + * src/inlining/libinlining.hh, src/inlining/libinlining.cc + (raw_inline_expand): Don't take a callgraph as argument. + Move the computation of the set of recursive functions... + * src/inlining/inline-visitor.hh, src/inlining/inline-visitor.cc + (InlineVisitor::InlineVisitor): ...here. + * src/inlining/libinlining.hh, src/inlining/libinlining.cc + (inline_expand, overfun_inline_expand) + * src/inlining/tasks.cc (inline_expand, overfun_inline_expand): + Adjust. + * src/inlining/tasks.hh (inline, overfun-inline): Don't depend on + callgraph-compute. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2274 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-12 Roland Levillain + + 2005-12-12 Roland Levillain + + * src/inlining/prune-visitor.cc + (operator() (const FunctionDec&)): Factor using the base class + operator. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2273 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-12 Roland Levillain + + 2005-12-12 Roland Levillain + + * src/misc/error.hh, src/misc/error.cc (const_member_manip_type): + New typedef. + (operator<< (const_member_manip_type)): New operator. + (exit, exit_on_error): Make these manipulators const. + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::ArrayExp& e) + (operator() (const ast::SubscriptVar&)) + (operator() (const ast::DecsList&)) + (operator() (const ast::FunctionDecs&)) + * src/desugar/desugar-visitor.cc + (operator() (const ast::ForExp&)) + * src/inlining/inline-visitor.cc + (operator() (const ast::CallExp&)): Lighten the style of error + handling. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2272 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-12 Roland Levillain + + Merge inline branch changes r2254:2270 into the trunk. + + 2005-12-12 Roland Levillain + + Merge the inline branch into the trunk. + + 2005-12-08 Roland Levillain + + * src/inlining/inline-visitor.cc + (operator() (const ast::CallExp&)): Use more concrete syntax. + + 2005-12-05 Roland Levillain + + * src/bind/tasks.hh (bound): Depend on overfun-types-compute + instead of overfun-bind. + * src/inlining/tasks.hh (rename): Depend on bound instead of + typed. + + 2005-12-05 Roland Levillain + + Rename inlining::layered_map as inlining::ScopedMap. + + * src/inlining/layered-map.hh, src/inlining/layered-map.hxx + (layered_map): Rename as... + (ScopedMap): ...this. + Rename files as... + * src/inlining/scoped-map.hh, src/inlining/scoped-map.hxx: + ...this. + * src/inlining/inline-visitor.hh: Adjust. + * src/inlining/prune-visitor.hh: Better comment. + * src/inlining/rename-visitor.cc: Typo. + + 2005-12-05 Roland Levillain + + * src/inlining/symbol-factory.cc + (symbol_create (const symbol::Symbol&)): Don't prefix generated + symbols with `_'. + + 2005-12-05 Roland Levillain + + Have a single rename task for both overloaded and non overloaded + Tiger ASTs. + + * src/inlining/libinlining.hh, src/inlining/libinlining.cc + (raw_rename): Remove function and move its contents... + (rename): ...here. + (overfun_rename): Remove function. + (rename, inline_expand, prune): Use better variable names. + * src/inlining/tasks.hh, src/inlining/tasks.cc (overfun-rename): + Remove task. + (rename): Depend on type. + (inline): Depend on overfun-types-compute. + (overfun-inline): Depend on rename. + * src/inlining/rename-visitor.hh: Update Doxygen comment. + * tests/tc-check.in: Aesthetic changes in comments. + + 2005-12-01 Roland Levillain + + * src/inlining/prune-visitor.cc (operator() (const ast::LetExp&)): + Fix iterator position after pruning. + * src/inlining/tasks.hh (overfun-rename): Depend on + overfun-types-compute. + (overfun-inline): No longer depend on overfun-types-compute. + * tests/tc-check.in: Add tests for inlining with support for + overloading. + + 2005-12-01 Roland Levillain + + * src/inlining/prune-visitor.hh, src/inlining/prune-visitor.cc + (orig_funs_type): New typedef. + (orig_funs_): New member. + (operator() (const FunctionDecs&)): Remove this method and move the + pruning of unused functions... + (operator() (const LetExp&)): ...here. + (operator() (const FunctionDec&): New method. + Link cloned function declarations to old ones. + * src/inlining/layered-map.hh: Include standard header map. + + 2005-11-30 Roland Levillain + + Rename inlining::VarFactory as inlining::SymbolFactory. + + * src/inlining/var-factory.hh, src/inlining/var-factory.cc: Rename + as... + * src/inlining/symbol-factory.hh, src/inlining/symbol-factory.cc: + ...this. + Adjust guards and comments. + (VarFactory): Rename as... + (SymbolFactory): Rename as... + (VarFactory::var_create): Rename as... + (SymbolFactory::symbol_create): ...this. + (VarFactory::var_counter_): Rename as... + (SymbolFactory::counter_): ...this. + * src/inlining/inline-visitor.cc (operator() (const ast::CallExp&)) + * src/inlining/rename-visitor.cc (decs_visit) + (visit_dec_header) + (visit_dec_body) + (visit_dec_header) + (operator() (const ast::VarDec&)): Adjust callers. + * src/inlining/prune-visitor.cc: Remove unused header inclusion. + * src/inlining/Makefile.am (libinlining_la_SOURCES): + s/var-factory/symbol-factory/s. + + 2005-11-30 Roland Levillain + + Have RenameVisitor handle functions and types in addition to + variables. + + * src/inlining/rename-visitor.hh, src/inlining/rename-visitor.cc: + (var_map_type): Map ast::Ast* to symbol::Symbol, and rename as... + (var_names_type): ...this. + (var_map_): Adjust and rename as... + (var_names_): ...this. + (operator() (const ast::VarDec&)) + (operator() (const ast::FunctionDec&)) + (operator() (const ast::SimpleVar&)): Adjust. + (fun_names_type, type_names_type): New typedefs. + (fun_names_, type_names_): New members. + (RenameVisitor::RenameVisitor): Adjust ctor. + (operator() (const ast::FunctionDec&)): Rename the cloned function + declaration (except _main and the builtins). + (decs_visit, visit_dec_header, visit_dec_body): New template + methods. + (operator() (const ast::FunctionDecs&)) + (operator() (const ast::TypeDecs&)): New. + (operator() (const ast::FunctionDec&)): Move most of the code of + this method... + (visit_dec_body): ...here (new). + (operator() (const ast::TypeDec&)): Move most of the code of this + method... + (visit_dec_body): ...here (new). + (operator() (const ast::CallExp&)) + (operator() (const ast::NameTy&)): New. + + * tests/good/redefine-int.tig, tests/good/redefine-int.-e.s, + * tests/good/redefine-int.-e.u.s, tests/good/redefine-int.hir, + * tests/good/redefine-int.hpr, tests/good/redefine-int.lir, + * tests/good/redefine-int.lpr, tests/good/redefine-int.out, + * tests/good/redefine-int.s, tests/good/redefine-int.sta, + * tests/good/redefine-int.u.s: New test. + * tests/good/Makefile.am (dist_noinst_DATA): Add redefine-int.tig, + $(srcdir)/redefine-int.out, $(srcdir)/redefine-int.sta, + $(srcdir)/redefine-int.hpr, $(srcdir)/redefine-int.lpr, + $(srcdir)/redefine-int.-e.s, $(srcdir)/redefine-int.s, + $(srcdir)/redefine-int.u.s and $(srcdir)/redefine-int.-e.u.s. + + * src/astclone/clone-visitor.hxx (astclone): Adjust identifiers + and comments to be more general. + + 2005-11-29 Roland Levillain + + * src/inlining/inline-visitor.cc + (operator() (const ast::CallExp&)): Systematically introduce + temporaries for all arguments, to ensure a correct order of + evaluation and avoid errors when inlining functions assigning + values to their arguments. + * tests/tc-check.in: Add test. + + 2005-11-29 Roland Levillain + + Move inline expansion into its own module. + + * src/desugar/inline-visitor.cc, src/desugar/inline-visitor.hh, + * src/desugar/layered-map.hh, src/desugar/layered-map.hxx, + * src/desugar/prune-visitor.cc, src/desugar/prune-visitor.hh, + * src/desugar/rename-visitor.cc, src/desugar/rename-visitor.hh, + * src/desugar/var-factory.cc, src/desugar/var-factory.hh: + Move files... + * src/inlining: ...here (new). + * src/desugar/libdesugar.hh, src/desugar/libdesugar.cc + (rename, overfun_rename, inline_expand, overfun_inline_expand) + (prune, overfun_prune): Move functions... + * src/inlining/libinlining.hh, src/inlining/libinlining.cc: + ...here (new files). + * src/desugar/tasks.hh, src/desugar/tasks.cc + (rename, overfun_rename, inline_expand, overfun_inline_expand) + (prune, overfun_prune): Move tasks... + * src/inlining/tasks.hh, src/inlining/tasks.cc: ...here (new + files). + * src/inlining/Makefile.am: New file. + * src/desugar/Makefile.am (libdesugar_la_SOURCES): Remove + var-factory.hh, var-factory.cc, rename-visitor.hh + rename-visitor.cc, layered-map.hh, layered-map.hxx, + inline-visitor.hh, inline-visitor.cc, prune-visitor.hh and + prune-visitor.cc. + + * src/tc.mk (libinlining_la, libinlining): New. + (libdesugar): Remove $(libcallgraph). + (libdesugar): New. + * src/Makefile.am (SUBDIRS): Add inlining. + (dist_tc_SOURCES): Add inlining/tasks.cc and inlining/tasks.hh. + (libtc_la_LIBADD): Add $(libinlining_la). + * configure.ac (AC_CONFIG_FILES): Add src/inlining/Makefile. + * dev/stagize: Don't deliver the inline module (for the moment). + + 2005-11-29 Roland Levillain + + Allow inline expansion of function bodies as a program + transformation. + + * src/desugar/layered-map.hh, src/desugar/layered-map.hxx, + * src/desugar/var-factory.hh, src/desugar/var-factory.hxx: New + files. + * src/desugar/libdesugar.hh, src/desugar/libdesugar.cc (rename) + (overfun_rename, inline_expand, overfun_inline_expand, prune) + (overfun_prune): New functions. + * src/desugar/tasks.hh, src/desugar/tasks.cc (rename) + (overfun_rename, inline_expand, overfun_inline_expand, prune) + (overfun_prune): New tasks. + * src/callgraph/tasks.hh, src/callgraph/tasks.cc: Export + callgraph::tasks::callgraph. + + Add RenameVisitor, renaming all variables to unique names. + * src/desugar/rename-visitor.hh, src/desugar/rename-visitor.cc: + New files + + Add InlineVisitor, performing inline expansion. + * src/desugar/inline-visitor.hh, src/desugar/inline-visitor.cc: + New files. + + Add PruneVisitor, removing unused functions. + * src/desugar/prune-visitor.hh, src/desugar/prune-visitor.cc: New + files. + + * src/desugar/Makefile.am (libdesugar_la_SOURCES): Add + var-factory.hh, var-factory.cc, rename-visitor.hh, + rename-visitor.cc, layered-map.hh, layered-map.hxx, + inline-visitor.hh, inline-visitor.cc, prune-visitor.hh and + prune-visitor.cc. + * src/tc.mk (libdesugar): Add $(libcallgraph). + * src/desugar/tasks.hh (overfun-bound-checks-add): Make it depend + on overfun-types-compute. + * src/desugar/bound-checking-visitor.hh: Fix comment on closing + guard. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2271 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-08 Roland Levillain + + 2005-12-08 Roland Levillain + + * src/inlining/inline-visitor.cc + (operator() (const ast::CallExp&)): Use more concrete syntax. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/inline@2270 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-05 Roland Levillain + + 2005-12-05 Roland Levillain + + * src/bind/tasks.hh (bound): Depend on overfun-types-compute + instead of overfun-bind. + * src/inlining/tasks.hh (rename): Depend on bound instead of + typed. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/inline@2269 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-05 Roland Levillain + + 2005-12-05 Roland Levillain + + Rename inlining::layered_map as inlining::ScopedMap. + + * src/inlining/layered-map.hh, src/inlining/layered-map.hxx + (layered_map): Rename as... + (ScopedMap): ...this. + Rename files as... + * src/inlining/scoped-map.hh, src/inlining/scoped-map.hxx: + ...this. + * src/inlining/inline-visitor.hh: Adjust. + * src/inlining/prune-visitor.hh: Better comment. + * src/inlining/rename-visitor.cc: Typo. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/inline@2268 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-05 Roland Levillain + + 2005-12-05 Roland Levillain + + * src/inlining/symbol-factory.cc + (symbol_create (const symbol::Symbol&)): Don't prefix generated + symbols with `_'. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/inline@2267 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-05 Roland Levillain + + 2005-12-05 Roland Levillain + + Have a single rename task for both overloaded and non overloaded + Tiger ASTs. + + * src/inlining/libinlining.hh, src/inlining/libinlining.cc + (raw_rename): Remove function and move its contents... + (rename): ...here. + (overfun_rename): Remove function. + (rename, inline_expand, prune): Use better variable names. + * src/inlining/tasks.hh, src/inlining/tasks.cc (overfun-rename): + Remove task. + (rename): Depend on type. + (inline): Depend on overfun-types-compute. + (overfun-inline): Depend on rename. + * src/inlining/rename-visitor.hh: Update Doxygen comment. + * tests/tc-check.in: Aesthetic changes in comments. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/inline@2266 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-05 Roland Levillain + + 2005-12-05 Roland Levillain + + * src/parse/parsetiger.yy: Expect 2 shift/reduce conflicts. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2265 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-02 Roland Levillain + + 2005-12-02 Roland Levillain + + * src/graph/test-graph.cc: Update test. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2264 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-02 Roland Levillain + + 2005-12-02 Roland Levillain + + Fix some bugs in desugar/bound checking and have all their tests + pass. + + * src/desugar/bound-checking-visitor.hh, + * src/desugar/bound-checking-visitor.cc (box_prefix): New + constant. + (operator() (const ast::TypeDecs&)): Use it instead of `_', to + avoid name clashes with the builtin types introduced by the + visitor. + Create a box for real array type declarations only, not array + aliases. + (operator() (const ast::NameTy&)): New method. + (operator() (const ast::VarDec&)): Remove method, and move a + part of its code... + (operator() (const ast::ArrayExp&)): ...here (new method). + (boxes_type): New typedef. + (boxes_): Use it. + + * dev/ast-clone-visitor-gen: Clone FunctionDec's sl_needed_ and + sl_escapes_ attributes. + * src/astclone/clone-visitor.cc: Regen. + * src/desugar/desugar-visitor.cc + (operator() (const ast::FunctionDecs& e)) + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::FunctionDecs&): Disable the static link of + introduced builtins. + + * tests/tc-check.in (stages_extract): Have tc-check perform + desugar and bound checking tests by default. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2263 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-01 Roland Levillain + + 2005-12-01 Roland Levillain + + * tests/tc-check.in: Add tests for desugaring and bound checking. + (help): Fix GCC version in message. + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::DecsList&)): Insert the new builtin types + at the right place. + * src/desugar/bound-checking-visitor.hh: Fix comment on closing + guard. + * src/desugar/tasks.hh (overfun-bound-checks-add): Depend on + overfun-types-compute. + * src/desugar/desugar-visitor.hh, src/desugar/desugar-visitor.cc, + * src/desugar/bound-checking-visitor.hh, + * src/desugar/libdesugar.hh: Replace French quotation marks with + simple quotes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2262 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-01 Roland Levillain + + 2005-12-01 Roland Levillain + + * src/inlining/prune-visitor.cc (operator() (const ast::LetExp&)): + Fix iterator position after pruning. + * src/inlining/tasks.hh (overfun-rename): Depend on + overfun-types-compute. + (overfun-inline): No longer depend on overfun-types-compute. + * tests/tc-check.in: Add tests for inlining with support for + overloading. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/inline@2261 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-12-01 Roland Levillain + + 2005-12-01 Roland Levillain + + * src/inlining/prune-visitor.hh, src/inlining/prune-visitor.cc + (orig_funs_type): New typedef. + (orig_funs_): New member. + (operator() (const FunctionDecs&)): Remove this method and move the + pruning of unused functions... + (operator() (const LetExp&)): ...here. + (operator() (const FunctionDec&): New method. + Link cloned function declarations to old ones. + * src/inlining/layered-map.hh: Include standard header map. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/inline@2260 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-30 Roland Levillain + + 2005-11-30 Roland Levillain + + Rename inlining::VarFactory as inlining::SymbolFactory. + + * src/inlining/var-factory.hh, src/inlining/var-factory.cc: Rename + as... + * src/inlining/symbol-factory.hh, src/inlining/symbol-factory.cc: + ...this. + Adjust guards and comments. + (VarFactory): Rename as... + (SymbolFactory): Rename as... + (VarFactory::var_create): Rename as... + (SymbolFactory::symbol_create): ...this. + (VarFactory::var_counter_): Rename as... + (SymbolFactory::counter_): ...this. + * src/inlining/inline-visitor.cc (operator() (const ast::CallExp&)) + * src/inlining/rename-visitor.cc (decs_visit) + (visit_dec_header) + (visit_dec_body) + (visit_dec_header) + (operator() (const ast::VarDec&)): Adjust callers. + * src/inlining/prune-visitor.cc: Remove unused header inclusion. + * src/inlining/Makefile.am (libinlining_la_SOURCES): + s/var-factory/symbol-factory/s. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/inline@2259 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-30 Roland Levillain + + 2005-11-30 Roland Levillain + + Have RenameVisitor handle functions and types in addition to + variables. + + * src/inlining/rename-visitor.hh, src/inlining/rename-visitor.cc: + (var_map_type): Map ast::Ast* to symbol::Symbol, and rename as... + (var_names_type): ...this. + (var_map_): Adjust and rename as... + (var_names_): ...this. + (operator() (const ast::VarDec&)) + (operator() (const ast::FunctionDec&)) + (operator() (const ast::SimpleVar&)): Adjust. + (fun_names_type, type_names_type): New typedefs. + (fun_names_, type_names_): New members. + (RenameVisitor::RenameVisitor): Adjust ctor. + (operator() (const ast::FunctionDec&)): Rename the cloned function + declaration (except _main and the builtins). + (decs_visit, visit_dec_header, visit_dec_body): New template + methods. + (operator() (const ast::FunctionDecs&)) + (operator() (const ast::TypeDecs&)): New. + (operator() (const ast::FunctionDec&)): Move most of the code of + this method... + (visit_dec_body): ...here (new). + (operator() (const ast::TypeDec&)): Move most of the code of this + method... + (visit_dec_body): ...here (new). + (operator() (const ast::CallExp&)) + (operator() (const ast::NameTy&)): New. + + * tests/good/redefine-int.tig, tests/good/redefine-int.-e.s, + * tests/good/redefine-int.-e.u.s, tests/good/redefine-int.hir, + * tests/good/redefine-int.hpr, tests/good/redefine-int.lir, + * tests/good/redefine-int.lpr, tests/good/redefine-int.out, + * tests/good/redefine-int.s, tests/good/redefine-int.sta, + * tests/good/redefine-int.u.s: New test. + * tests/good/Makefile.am (dist_noinst_DATA): Add redefine-int.tig, + $(srcdir)/redefine-int.out, $(srcdir)/redefine-int.sta, + $(srcdir)/redefine-int.hpr, $(srcdir)/redefine-int.lpr, + $(srcdir)/redefine-int.-e.s, $(srcdir)/redefine-int.s, + $(srcdir)/redefine-int.u.s and $(srcdir)/redefine-int.-e.u.s. + + * src/astclone/clone-visitor.hxx (astclone): Adjust identifiers + and comments to be more general. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/inline@2258 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-29 Roland Levillain + + 2005-11-29 Roland Levillain + + * src/inlining/inline-visitor.cc + (operator() (const ast::CallExp&)): Systematically introduce + temporaries for all arguments, to ensure a correct order of + evaluation and avoid errors when inlining functions assigning + values to their arguments. + * tests/tc-check.in: Add test. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/inline@2257 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-29 Roland Levillain + + 2005-11-29 Roland Levillain + + Move inline expansion into its own module. + + * src/desugar/inline-visitor.cc, src/desugar/inline-visitor.hh, + * src/desugar/layered-map.hh, src/desugar/layered-map.hxx, + * src/desugar/prune-visitor.cc, src/desugar/prune-visitor.hh, + * src/desugar/rename-visitor.cc, src/desugar/rename-visitor.hh, + * src/desugar/var-factory.cc, src/desugar/var-factory.hh: + Move files... + * src/inlining: ...here (new). + * src/desugar/libdesugar.hh, src/desugar/libdesugar.cc + (rename, overfun_rename, inline_expand, overfun_inline_expand) + (prune, overfun_prune): Move functions... + * src/inlining/libinlining.hh, src/inlining/libinlining.cc: + ...here (new files). + * src/desugar/tasks.hh, src/desugar/tasks.cc + (rename, overfun_rename, inline_expand, overfun_inline_expand) + (prune, overfun_prune): Move tasks... + * src/inlining/tasks.hh, src/inlining/tasks.cc: ...here (new + files). + * src/inlining/Makefile.am: New file. + * src/desugar/Makefile.am (libdesugar_la_SOURCES): Remove + var-factory.hh, var-factory.cc, rename-visitor.hh + rename-visitor.cc, layered-map.hh, layered-map.hxx, + inline-visitor.hh, inline-visitor.cc, prune-visitor.hh and + prune-visitor.cc. + + * src/tc.mk (libinlining_la, libinlining): New. + (libdesugar): Remove $(libcallgraph). + (libdesugar): New. + * src/Makefile.am (SUBDIRS): Add inlining. + (dist_tc_SOURCES): Add inlining/tasks.cc and inlining/tasks.hh. + (libtc_la_LIBADD): Add $(libinlining_la). + * configure.ac (AC_CONFIG_FILES): Add src/inlining/Makefile. + * dev/stagize: Don't deliver the inline module (for the moment). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/inline@2256 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-29 Roland Levillain + + 2005-11-29 Roland Levillain + + Allow inline expansion of function bodies as a program + transformation. + + * src/desugar/layered-map.hh, src/desugar/layered-map.hxx, + * src/desugar/var-factory.hh, src/desugar/var-factory.hxx: New + files. + * src/desugar/libdesugar.hh, src/desugar/libdesugar.cc (rename) + (overfun_rename, inline_expand, overfun_inline_expand, prune) + (overfun_prune): New functions. + * src/desugar/tasks.hh, src/desugar/tasks.cc (rename) + (overfun_rename, inline_expand, overfun_inline_expand, prune) + (overfun_prune): New tasks. + * src/callgraph/tasks.hh, src/callgraph/tasks.cc: Export + callgraph::tasks::callgraph. + + Add RenameVisitor, renaming all variables to unique names. + * src/desugar/rename-visitor.hh, src/desugar/rename-visitor.cc: + New files + + Add InlineVisitor, performing inline expansion. + * src/desugar/inline-visitor.hh, src/desugar/inline-visitor.cc: + New files. + + Add PruneVisitor, removing unused functions. + * src/desugar/prune-visitor.hh, src/desugar/prune-visitor.cc: New + files. + + * src/desugar/Makefile.am (libdesugar_la_SOURCES): Add + var-factory.hh, var-factory.cc, rename-visitor.hh, + rename-visitor.cc, layered-map.hh, layered-map.hxx, + inline-visitor.hh, inline-visitor.cc, prune-visitor.hh and + prune-visitor.cc. + * src/tc.mk (libdesugar): Add $(libcallgraph). + * src/desugar/tasks.hh (overfun-bound-checks-add): Make it depend + on overfun-types-compute. + * src/desugar/bound-checking-visitor.hh: Fix comment on closing + guard. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/inline@2255 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-29 Roland Levillain + + Create branch inline. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/inline@2254 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-27 Fabien Ouy + + 2005-11-27 Fabien Ouy + + * ast/ast.yml: Remove useless explicit includes. + * ast/print-visitor.cc, ast/default-visitor.hxx: Adjust comment + style: replace `` with `'. + * ast/function-dec.hh: Regen. + * ast/bind-visitor.cc (visitDecBody): Remove explicit + visit of formals. + * desugar/desugar-visitor.cc: Simplify variables' names, wrap to 80 + columns. + * escapes/escapes-check-visitor.hh, escapes/escapes-check-visitor.cc + (operator() (ast::FunctionDec&)): Remove. + * type/type-visitor.cc (type (ast::VarDecs&)): Simplify. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/formals@2253 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-22 Roland Levillain + + 2005-11-18 Roland Levillain + + Have the Intel C++ Compiler (ICC) 9.0 compile (but alas, not link) + the project. + + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx: Don't + use a using declaration to inherit + operator() (typename Const::type&) from the base class, + rather... + (GenVisitor::operator() (typename Const::type&): + ...introduce this wrapper, delegating the call to the base class + operator, so as to work around a bug causing an Internal Compiler + Error in icpc 9.0. + + * src/bind/bind-visitor.cc (undeclared): Move method definition... + * src/bind/bind-visitor.hxx: ...here (new file), so that it is + visible to overload::BindVisitor. + * src/bind/Makefile.am (libbind_la_SOURCES): Add bind-visitor.hxx. + * src/type/type-visitor.cc + (error (const ast::Ast&, const std::string&, const T&)): Move + method definition... + * src/type/type-visitor.hxx: ...here, so that it is visible to + overload::TypeVisitor. + Fix Doxygen header. + + * src/misc/xalloc.hh: Include header `functional'. + + * src/canon/canon.hh (Canon), + * src/canon/canon.cc (is_nop, commute_p) + * src/canon/traces.hh (Traces) + * src/regalloc/regallocator.cc (UselessMove): Specify access + control to the base class as public. + * configure.ac (TC_CXX_WARNINGS): Ignore ICC's remark #522. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2252 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-18 Roland Levillain + + 2005-11-18 Roland Levillain + + * src/parse/parsetiger.cc: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2251 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-18 Roland Levillain + + 2005-11-18 Roland Levillain + + * src/misc/map.hh, src/misc/map.hxx (take): Return a copy of the + removed element, not a reference on it. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2250 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-18 Roland Levillain + + 2005-11-18 Roland Levillain + + Let concrete graph classes handle the printing of their vertices. + + * src/graph/graph.hh (Graph::vertex_print): New abstract method. + * src/callgraph/fundec-graph.hh, src/callgraph/fundec-graph.hxx, + * src/liveness/flowgraph.hh, src/liveness/flowgraph.hxx + * src/liveness/interference-graph.hh, + * src/liveness/interference-graph.cc, + (vertex_print): Implement it in concrete classes. + * src/graph/graph.hxx (Graph::print): Use it to print the labels + attached to vertices, instead of using operator<< directly. + * src/ast/ast.yml + (operator<< (std::ostream&, const FunctionDec&)): Remove. + * src/ast/function-dec.hh: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2249 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-16 Akim Demaille + + Remove exp.nonlvalue. + + * src/parse/parsetiger.yy (%nondeterministic-parser): Remove, you + meant... + (%glr-parser): this. + (exp.nonlvalue): Remove, replaced by a plain exp. + Give "dynamic precedence" to two cast rules in competition. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2248 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-14 Akim Demaille + + Use a GLR parser. + + - build-aux/bison++.in: Let the choice of the skeleton outside. + - src/parse/scantiger.ll: Adjust: use token::INT etc. + - src/parse/tiger-parser.hh: Adjust. + - src/parse/parsetiger.yy: Use glr.cc. + Use a nondeterministic parser. + (biglvalue): Remove! + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2247 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-13 Fabien Ouy + + 2005-11-13 Fabien Ouy + + Use the new misc::Map in TigerInput. + + * src/parse/parsetiger.yy, src/parse/scantiger.ll: Remove assertions. + * src/parse/tiger-input.hh, src/parse/tiger-input.hxx, + * src/parse/tiger-input.cc: Use misc::map instead of std::map for + meta-variables. Remove now useless methods. + * src/parse/parsetiger.cc, src/parse/parsetiger.hh, + * src/parse/location.hh, src/parse/position.hh, + * src/parse/stack.hh: Regen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2246 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-13 Fabien Ouy + + 2005-11-13 Fabien Ouy + + * src/misc/map.hcc: Move... + * src/misc/map.hxx: ...here. + * src/misc/map.hh, src/misc/map.hxx (empty ()): New method. Rename + `remove ()' as `take ()'. + * src/misc/endomap.hh: Remove useless include. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2245 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-12 Fabien Ouy + + 2005-11-12 Fabien Ouy + + Use VarDecs for formals parameters instead of Fields. + + * src/ast/ast.yml: Update FunctionDec generation. + * src/ast/README, src/ast/escapable.hh, src/ast/field.hh, + * src/ast/field.cc, src/ast/function-dec.hh, src/ast/function-dec.cc, + * src/ast/function-dec.hxx, src/ast/simple-var.hh, + * src/ast/simple-var.hxx, src/ast/var-dec.hh, + * src/ast/var-dec.hxx, src/astclone/clone-visitor.cc: Regen. + * src/parse/parsetiger.yy: Add rules for function declarations, adjust + rule for now unescapable type field. + * src/parse/parsetiger.cc, src/parse/parsetiger.hh, + * src/parse/stack.hh, src/parse/position.hh, + * src/parse/location.hh: Regen. + * src/ast/test-ast.cc, src/bind/test-bind.cc, src/parse/test-parse.cc: + Update. + * dev/ast-node-gen: Update includes_map for VarDecs. + + Update visitors to follow new FunctionDec. + + * src/ast/default-visitor.hxx, src/cppgen/cppgen-visitor.cc, + * src/translate/translate-visitor.cc, src/desugar/desugar-visitor.cc, + * src/desugar/bound-checkin-visitor.cc: Update. + * src/ast/print-visitor.cc, src/ast/print-visitor.hh + (operator() (const Field&, bool), operator() (fields_type, bool)): + Remove. + * src/bind/bind-visitor.hh, src/bind/bind-visitor.cc + (operator() (VarDecs)): Use decs_visit, simplify visit of FunctionDec. + Map var symbol table on VarDec instead of Ast. + * src/type/type-visitor.hh, src/type/type-visitor.cc (type (VarDecs)): + New. + + Simplify escaping, only VarDec can escape. + + * src/escapes/escapes-visitor.cc, src/escapes/escapes-check-visitor.cc, + * src/callgraph/static-link-visitor.cc (operator() (FunctionDec)): + Simplify visit. + * src/escapes/escapes-check-visitor.hh (escapes_check): Remove. + * src/escapes/escapes-check-visitor.hxx: No longer used. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/formals@2244 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-09 Akim Demaille + + Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2243 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-09 Akim Demaille + + - build-aux/bison++.in: Specify the options consistently. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2242 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-09 Akim Demaille + + Sort the diff sections. + + - .vcs: New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2241 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-09 Akim Demaille + + - config.site: Check gcc and g++ separately. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2240 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-05 Nicolas DesprÚs + + Fix bad inclusion. + + - src/misc/timer.hxx: Include timer.hh instead of itself. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2239 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-11-03 Roland Levillain + + 2005-11-03 Roland Levillain + + Get rid of TigerInput::operator<< (TigerInput&). + + * src/parse/libparse.cc (parse): Save a TigerInput. + * src/parse/tiger-input.hh, src/parse/tiger-input.cc + (operator<< (TigerInput&), check_used, check_used_p_): Remove. + (TigerInput::TigerInput): Adjust ctors. + (TigerInput::~TigerInput): Adjust dtor. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2238 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-24 Roland Levillain + + 2005-10-24 Roland Levillain + + * src/codegen/ia32/Makefile.am (libcodegen_ia32_la_SOURCES): Add + fwd.hh. + * src/codegen/ia32/codegen.hh: Remove trailing full stop. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2237 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-23 Benoßt Perrot + + 2005-10-23 Benoit Perrot + + * src/codegen/ia32/fwd.hh: Forward declare ia32::GasAssembly and + ia32::Codegen. + * src/codegen/ia32/codegen.hh: Use fwd.hh + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2236 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-21 Roland Levillain + + 2005-10-21 Roland Levillain + + * src/parse/tiger-input.hh, src/parse/tiger-input.cc + (operator<< (const char*), operator<< (const symbol::Symbol&)): + New operators. + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::VarDec&)) + * src/desugar/desugar-visitor.cc (operator() (constast::ForExp&)): + Use it to revert my changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2235 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-21 Roland Levillain + + 2005-10-21 Roland Levillain + + Have the package distcheck again. + + * dev/stagize (dev_dir): New. Use it to define... + (studentize): ...this. + (config_dir): Remove. + (bison, stages_file): Update paths. + * src/misc/Makefile.am (libmisc_la_SOURCES): Add endomap.hh and + endomap.hcc. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2234 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-20 Roland Levillain + + 2005-10-20 Roland Levillain + + * build-aux/bison++.in (abs_srcdir): New. + Be robust to absolute srcdir paths. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2233 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-16 Fabien Ouy + + 2005-10-16 Fabien Ouy + + Repair SWIG's compilation. + + * src/parse/tiger_parse.i (parse): Update return value. + * src/parse/tiger-parser.hh (TigerParser (bool)): Remove (undefined?) + constructor. + * src/ast/default-visitor.hh, src/tree/tiger_tree.i, + * src/tree/fragments.hh: Help SWIG to instantiate templates. + * src/ast/tiger_ast.i: Add DecsList definitions. + * src/escapes/escapes-visitor.hh: Help SWIG to import operator() from + the super class. + * src/target/tiger_target.i, src/target/cpu.hh: Export Cpu class + to SWIG. + * src/misc/path.hh: Rename operator std::string() and operator=(). + * src/temp/tiger_temp.i: Change map to endomap. + * src/parse/tiger-input.hh: Rename print() to dump(). + * tcsh/python/test.py: Ignore Regalloc test. + * dev/tc.texi (SWIG): New section dedicated to SWIG. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2232 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-15 Benoßt Perrot + + 2005-10-15 Benoit Perrot + + Move CPU-dependant builders to subclasses. + + * src/codegen/assembly.hh, src/codegen/assembly.cc: + (binop_build, move_build, load_build, store_build) + (label_build, cjump_build, jump_build, call_build, ret_build): + Remove. Move binop_build(immediate lhs) to... + * src/codegen/ia32/gas-assembly.hh, + * src/codegen/ia32/gas-assembly.cc, + * src/codegen/mips/spim-assembly.hh, + * src/codegen/mips/spim-assembly.cc: + ... This files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2231 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-15 Benoßt Perrot + + 2005-10-15 Benoit Perrot + + Provide MIPS' codegen with an access to concrete MIPS' assembly + + * src/codegen/codegen.hh, src/codegen/codegen.hxx, + * src/codegen/codegen.cc: + Remove abstract pointer `assembly_'. + (assembly_set): Remove. + (assembly_get): Abstract. + * src/codegen/mips/prologue.hh, src/codegen/mips/epilogue.cc: + Aggregate a concrete MIPS assembly (for the moment a SpimAssembly). + (assembly_get): Override. + (mips_assembly_get): Provide access to a concrete MIPS assembly. + * src/codegen/ia32/codegen.hh, src/codegen/ia32/codegen.cc: + Aggregate a concrete ia32 assembly (for the moment a GasAssembly) + (assembly_get): Override. + (ia32_assembly_get): Provide access to a concrete IA32 assembly. + * src/codegen/mips/codegen.hh, src/codegen/mips/codegen.cc: + Regenerate. + * src/target/mips-target.cc: + (MipsTarget): Use `mips_assembly_set ()'. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2230 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-15 Benoßt Perrot + + 2005-10-15 Benoit Perrot + + Move target's CPU-dependant attributes to subclasses. + + * src/target/target.hh, src/target/target.cc: + (cpu_get, codegen_get): Abstract. + (cpu_, codegen_): Remove. + * src/target/mips-target.hh, src/target/mips-target.cc, + * src/target/ia32-target.hh, src/target/ia32-target.cc: + Compose a concrete CPU and a concrete CPU-dependant + codegen. Implement virtual accessors. + * src/codegen/libcodegen.hh, src/codegen/libcodegen.cc: + Fix const issues. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2229 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-15 Benoßt Perrot + + 2005-10-15 Benoit Perrot + + Move CPU-dependant assembly to subclasses. + + * src/target/target.hh, src/target/target.cc: + (assembly_get): Abstract. + (assembly_): Remove. + * src/target/mips-target.hh, src/target/mips-target.cc, + * src/target/ia32-target.hh, src/target/ia32-target.cc: + Compose a CPU-dependant concrete assembly (respectively a + SpimAssembly and a GasAssembly). Implement assembly virtual + accessors. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2228 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-15 Benoßt Perrot + + 2005-10-15 Benoit Perrot + + Introduce ia32-target.cc + + * src/target/ia32-target.hh (Ia32Target, ~Ia32Target): + Move to... + * src/target/ia32-target.cc: + This new file. + * src/target/Makefile.am: Distribute it. + * src/target/tasks.cc: Add missing includes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2227 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-15 Benoßt Perrot + + 2005-10-15 Benoit Perrot + + * src/target/target.hh, + * src/target/target.cc (asssembly_get): + Provide const and no-const accessors. + * src/codegen/libcodegen.hh, + * src/codegen/libcodegen.cc (instructions_dump): + Use a no-const Target, since a side-effect is done on Layout. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2226 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-15 Benoßt Perrot + + 2005-10-15 Benoit Perrot + + Fix name lookup error in misc::Endomap. + + * src/misc/endomap.hcc: Make explicit access to template + superclass' attributes and type definitions. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2225 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-14 Christophe Duong + + 2005-10-14 Christophe Duong + + Refactor syntactic sugar for Endomaps and normal Maps. + + * src/misc/map.hh, src/misc/map.hcc: Factor syntactic sugar + for map manipulations. + + * src/misc/endomap.hh, src/misc/endomap.hcc: New. Introduce + misc::Endomap, a renaming mapping defaulting to identity. + + * src/misc/fwd.hh, src/temp/fwd.hh, src/temp/identifier.hh, + * src/temp/label.cc, src/temp/temp.cc, src/temp/temp.hh: + Replace use of misc::Map with misc::Endomap. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2224 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-11 Roland Levillain + + 2005-10-11 Roland Levillain + + Fix the memory management of the symbols in the desugar pass and + prevent TigerInput from performing too agressive checks. + + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::VarDec&)) + * src/desugar/desugar-visitor.cc (operator() (constast::ForExp&)): + Clone the name of the variable to avoid shared symbols that may be + destroyed several times. + * src/parse/tiger-input.cc (check_used_p_): New member. + (TigerInput::TigerInput): Adjust ctor. + (check_used): New accessor. + * src/parse/libparse.cc (parse): Use TigerInput::check_used to + prevent the input from checking its contents, as it is voluntarily + unused. + + * dev/ast-visitor-gen: Precise the kind of inheritance (public) to + please ICC. + Typo. + * src/ast/visitor.hh: Regen. + * src/ast/default-visitor.hh + (operator() (typename Const::type&)) + (operator() (typename Const::type& e)) + (operator() (typename Const::type& e)) + (operator() (typename Const::type& e)): Name the argument. + * src/parse/Makefile.am: Typos. + * src/desugar/bound-checking-visitor.cc, + * src/desugar/desugar-visitor.cc: Wrap lines longer than 80 + columns. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2223 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-10 Nicolas Pouillard + + Update the Vcs extension to Vcs 0.4. + + - vcs/tiger.rb: Add the protocol version and the default commit. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2222 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-10-09 Fabien Ouy + + 2005-10-09 Fabien Ouy + + TigerParser: Refactor the string parsing. + + * src/parse/tiger-input.hxx: New. Aggregate the string to parse and + meta-variables. + * src/parse/tiger-parser.hh: Remove meta-variables. + * src/parse/tiger-parser.cc (parse_, parse_string, parse_string_decs): + Use TigerInput instead of std::string. + * src/desugar/bound-checking-visitor.cc, + * src/desugar/desugar-visitor.cc, src/parse/libparse.cc: Replace use + of std::string with the new TigerInput class. + * src/parse/tiger-input.hh, src/parse/tiger-input.cc, + * src/parse/parsetiger.yy, src/parse/scantiger.ll: Get meta-variables + from the TigerInput,check the TigerInput is not NULL. + * src/parse/fwd.hh: Export the TigerInput class. + * src/parse/parsetiger.cc: Regen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2221 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-21 Fabien Ouy + + 2005-09-22 Fabien Ouy + + Factor duplicate code in escape checking visitor. + + * src/escapes/escapes-check-visitor.cc (operator()): Move escaping + tests to escapes_check. + * src/escapes/escapes-check-visitor.hh (escapes_check): New function. + * src/escapes/escapes-check-visitor.hxx: New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2220 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-19 Roland Levillain + + 2005-09-19 Roland Levillain + + * src/misc/test-ref.cc: Remove file. + * dev/studentize_tc.conf, dev/stagize (kept_stages): Remove + ref-count. + * dev/studentize_test.yml: Adjust. + * src/misc/Makefile.am (check_PROGRAMS): Remove test-ref. + (test_ref_SOURCES): Remove. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2219 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-16 Nicolas Pouillard + + 2005-09-16 Nicolas Pouillard + + Update Vcs support to 0.3. + + * vcs/HOWTO: Remove. + * vcs/tiger.rb: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2218 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-16 Roland Levillain + + 2005-09-16 Roland Levillain + + * dev/stagize (kept_stages): Keep all stages when $stages is + empty. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2217 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-15 Roland Levillain + + 2005-09-15 Roland Levillain + + Fix tc-check's tests on liveness analysis. + + * tests/tc-check.in (graph_check_one): Catch up with the new name + of the entry point (_main instead of main). + * src/ast/test-ast.cc (main): s/OpExp::plus/OpExp::add/. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2216 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-14 Fabien Ouy + + 2005-09-14 Fabien Ouy + + * src/misc/ref.hxx (operator* () const, + operator-> () const): Fix a compilation warning from a cast. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2215 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-14 Akim Demaille + + 2005-09-14 Akim Demaille + + Remove misc::Error's non member manipulators. + + * src/misc/error.hh, src/misc/error.hxx, src/misc/error.cc + (error_on_exit, manip_type, operator<< (manip_type f)) + (exit): Remove. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2214 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-14 Christophe Duong + + 2005-09-14 Christophe Duong + + Simplify symbol::Symbol so we don't have to use a + create method: the constructor is much more natural. + Introduce automatic conversion to const std::string& so we don't have + to use name_get () method when it's not ambiguous. + + * src/symbol/symbol.hh, src/symbol/symbol.cc, src/symbol/symbol.hxx: + Replace the Factory method symbol::Symbol::create with its constructor. + As a consequence, the set of symbols and all methods + linked to it have been removed. + Add a conversion operator method to const std::string&. + * src/type/test-type.cc, src/type/types.hh, + * src/type/types.hxx, src/desugar/bound-checking-visitor.cc, + * src/desugar/desugar-visitor.cc, src/translate/translate-visitor.cc, + * src/temp/identifier.hcc, src/parse/scantiger.ll, + * src/parse/parsetiger.yy, src/ast/simple-var.hxx, + * dev/ast-clone-visitor-gen, src/ast/ast.yml, + * src/cppgen/cppgen-visitor.cc: + * src/symbol/test-symbol.cc, + Remove calls to symbol::Symbol::create. Symbols are now implicitly + created with the constructor. + Simplify calls to symbol::name_get when it's possible (not ambiguous) + using the automatic conversion method. + * src/ast/dec.cc, src/ast/simple-var.cc, + * src/ast/field.hh, src/ast/call-exp.cc, + * src/ast/function-dec.hh, src/ast/name-ty.hxx, + * src/ast/field-init.hxx, src/ast/type-dec.cc, + * src/ast/field-var.hh, src/ast/field-init.hh, + * src/ast/field.cc, src/ast/var-dec.hh, + * src/ast/dec.hxx, src/ast/function-dec.cc, + * src/ast/name-ty.hh, src/ast/field-var.cc, + * src/ast/field-init.cc, src/ast/simple-var.hh, + * src/ast/dec.hh, src/ast/call-exp.hh, + * src/ast/var-dec.cc, src/ast/call-exp.hxx, + * src/ast/field-var.hxx, src/ast/field.hxx, + * src/ast/name-ty.cc, src/ast/type-dec.hh, + * src/astclone/clone-visitor.cc: Regen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2213 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-14 Roland Levillain + + 2005-09-14 Roland Levillain + + Have Python generators print prettier code. + + * dev/tools.py: Aesthetic changes. + (define_id): Improve generated guard name. + (indef_article, wrap_proto): New functions. + * dev/ast-nodes-gen (print_ctor_dtor): Use them to print « a » or + « an » according to the following noun, and to wrap long ctor + declarations/definitions. + * dev/ast.py: Wrap lines longer than 80 columns. + (tools): Import this module. + (Node.fname): Use tools.file_id instead of an inlined-by-hand + duplicate. + * src/ast/array-exp.cc, src/ast/array-exp.hh, src/ast/array-exp.hxx, + * src/ast/array-ty.hh, src/ast/array-ty.hxx, src/ast/assign-exp.hh, + * src/ast/assign-exp.hxx, src/ast/ast.hh, src/ast/break-exp.hh, + * src/ast/break-exp.hxx, src/ast/call-exp.cc, src/ast/call-exp.hh, + * src/ast/call-exp.hxx, src/ast/cast-exp.hh, src/ast/cast-exp.hxx, + * src/ast/cast-var.hh, src/ast/cast-var.hxx, src/ast/dec.hh, + * src/ast/decs-list.cc, src/ast/decs-list.hh, src/ast/decs-list.hxx, + * src/ast/escapable.hh, src/ast/exp.hh, src/ast/field.cc, + * src/ast/field.hh, src/ast/field-init.cc, src/ast/field-init.hh, + * src/ast/field-init.hxx, src/ast/field-var.cc, + * src/ast/field-var.hh, src/ast/field-var.hxx, src/ast/for-exp.cc, + * src/ast/for-exp.hh, src/ast/for-exp.hxx, src/astx4/function-dec.cc, + * src/ast/function-dec.hh, src/ast/function-dec.hxx, + * src/ast/if-exp.cc, src/ast/if-exp.hh, src/ast/if-exp.hxx, + * src/ast/int-exp.hh, src/ast/int-exp.hxx, src/ast/let-exp.hh, + * src/ast/let-exp.hxx, src/ast/Makefile.am, src/ast/name-ty.hh, + * src/ast/name-ty.hxx, src/ast/nil-exp.hh, src/ast/nil-exp.hxx, + * src/ast/op-exp.cc, src/ast/op-exp.hh, src/ast/op-exp.hxx, + * src/ast/record-exp.cc, src/ast/record-exp.hh, + * src/ast/record-exp.hxx, src/ast/record-ty.hh, + * src/ast/record-ty.hxx, src/ast/seq-exp.hh, src/ast/seq-exp.hxx, + * src/ast/simple-var.cc, src/ast/simple-var.hh, + * src/ast/simple-var.hxx, src/ast/string-exp.hh, + * src/ast/string-exp.hxx, src/ast/subscript-var.cc, + * src/ast/subscript-var.hh, src/ast/subscript-var.hxx, + * src/ast/ty.hh, src/ast/typable.hh, src/ast/type-constructor.hh, + * src/ast/type-constructor.hxx, src/ast/type-dec.cc, + * src/ast/type-dec.hh, src/ast/type-dec.hxx, src/ast/var-dec.cc, + * src/ast/var-dec.hh, src/ast/var-dec.hxx, src/ast/var.hh, + * src/ast/while-exp.hh, src/ast/while-exp.hxx: Regen. + * src/ast/Makefile.am (ast_gen_deps): Add $(gen_dir)/tools.py. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2212 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-14 Akim Demaille + + More. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2211 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-14 Akim Demaille + + 2005-09-14 Akim Demaille + + * src/ast/ast.yml (OpExp): s/plus/add/, s/minus/sub/. + Adjust all dependencies. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2210 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-14 Akim Demaille + + 2005-09-14 Akim Demaille + + * build-aux/boost.m4: Fix it. + Simplify it. + Avoid cluttering the variable name space. + Use a more traditional Autoconf coding style. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2209 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-13 Roland Levillain + + 2005-09-13 Roland Levillain + + * configure.ac: Check for Boost headers >= 1.32. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2208 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-13 Roland Levillain + + 2005-09-13 Roland Levillain + + Generate ast::DecsList files. + + * src/ast/ast.yml (DecsList): New. + (IfExp): Reindent ctor code. + * dev/ast.py (re_list): Adjust the regexp to catch names + containing scope resolution operators. + (Attribute.delete): Clear non-pointer collections attributes. + Don'y output useless student marks. + * dev/ast-nodes-gen (class_generate): Output inline code for + header, inline methods, and implementation files. + (atomic_types): Remove "OpExp::Oper", "OpExp::Kind", + "AssignExp::Kind", "IfExp::Kind", "LetExp::Kind", and + "SeqExp::Kind". + (includes_map): Remove "decs_type" and "decs_list_type". + * dev/ast-visitor-gen: Remove the hand-written definition of + operator() (const DecsList&) + * dev/ast-clone-visitor-gen: Likewise, and have the script + generate it. + (collections): Add DecsList::decs_type. + * src/ast/decs-list.hh, src/ast/decs-list.hxx, + * src/ast/decs-list.cc, src/ast/if-exp.hh, + * src/ast/fwd.hh, src/ast/visitor.hh, + * src/astclone/clone-visitor.hh, src/astclone/clone-visitor.cc, + * src/ast/README: Regen. + * src/ast/Makefile.am (libast_la_SOURCES): Remove decs-list.hh, + decs-list.hxx and decs-list.cc. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2207 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-12 Roland Levillain + + 2005-09-12 Roland Levillain + + * configure.ac: Move checks for Boost headers... + * build-aux/boost.m4: ...here (new file). + Check for Boost >= 1.33. + * build-aux/monoburg.m4: Wrap lines longer than 80 columns. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2206 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-11 Michaël Cadilhac + + 2005-09-11 Michael Cadilhac + + * src/codegen/mips/Makefile.am: Use MonoBURG's --with-line option + as the default behavior of MonoBURG >= 1.0.3 is to not output + #line directives. + * build-aux/monoburg.m4: Change TC_PROG_MONOBURG to check for + a version given in argument. + * configure.ac: Use it to check for MonoBURG 1.0.3 or earlier. + * src/codegen/mips/codegen.cc: Regenerate. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2205 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-09 Roland Levillain + + 2005-09-09 Roland Levillain + + Accept a list of declarations as a valid Tiger program. + + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc + (parse_program_or_decs): New method. + * src/parse/libparse.cc (parse): Use it to parse the input either + as an expression or as a list of declarations. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2204 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-09 Roland Levillain + + 2005-09-09 Roland Levillain + + Handle _main as a special name reserved for the entry point of a + Tiger program. Thus _main become a normal identifier, but can be + used only to declare a function in the outer-most scope. Checks + for invalid usages are postponed to the binding step. + + * src/parse/scantiger.ll: Add `_main' to the list of allowed + identifiers. + * src/bind/bind-visitor.hh, src/bind/bind-visitor.cc + (level_): New attribute. + (scope_begin, scope_end): Update it as scopes open and close. + (BindVisitor::BindVisitor): Adjust ctor. + (operator() (ast::CallExp&)): Forbid calls to function _main. + (visitDecHeader (ast::FunctionDec&)): Forbid + declarations of function _main outside the top-most level. + * tests/bind/inner-_main-fundec.tig, tests/bind/call-to-_main.tig: + New tests. + * tests/bind/Makefile.am: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2203 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-07 Roland Levillain + + Clean up ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2202 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-07 Roland Levillain + + 2005-09-07 Roland Levillain + + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::DecsList&)) + (operator() (const ast::FunctionDecs&)): Remove the outer let-end + in declarations strings. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2201 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-06 Akim Demaille + + 2005-09-06 Akim Demaille + + * src/ast/decs-list.hh, src/ast/decs-list.hxx, + * src/ast/decs-list.cc: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2200 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-06 Akim Demaille + + Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2199 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-06 Akim Demaille + + 2005-09-06 Akim Demaille + + Support DecsList in the ast. + * dev/ast-nodes-gen (print_guards_close): Don't output a space + between # and include in cc files. + * dev/ast-visitor-gen, dev/ast-fwd-gen: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2198 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-06 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2197 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-06 Akim Demaille + + 2005-09-06 Akim Demaille + + Adjust preludes. + * data/prelude.tih, tests/good/basic-import-header.tih, + * tests/good/complex-import-header1.tih, + * tests/good/complex-import-header2.tih, + * tests/import/import-rec-header1.tih, + * tests/import/import-rec-header2.tih, + * tests/import/import-recursive1.tih: + Remove the outer let-end. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2196 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-06 Akim Demaille + + 2005-09-06 Akim Demaille + + Change the way the AST is kept inside. + It was a single expression, now it's a list of declarations, + the former expression is now the body of a "main" function. + + Change the prelude syntax: the let-end are no longer needed. + * src/parse/scantiger.ll: As a consequence the seed trick is no + longer needed either. + (_decs): New metavariable type. + * src/parse/parsetiger.yy (SEED_IMPORT, SEED_SOURCE): Remove. + Adjust the axiom. + (decs): Adjust it uses, printer and dtor. + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc + (decs_map_type, decs): New. + (parse_): Make it more systematic. + No longer takes the seed as input, but the filename or string to + parse. + (parse_prelude, parse_program, parse_string, parse_string_decs): + Use it. + Also, make sure that the variable used to return the result is set + to 0 again. + * src/parse/libparse.cc (parse): Use the meta variable to + transform a top level expression into a declaration of the _main + function. + It might be simpler to have the parser actually do that. + + Support DecsList in the ast. + * dev/ast-nodes-gen (print_guards_close): Don't output a space + between # and include in cc files. + * src/ast/ast.yml (LetExp): Its decs are now a DecsList. + (FunctionDec): Remove the "main" function tricks. + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx: + Handle DecsList. + Adjust LetExp. + * dev/ast-visitor-gen, dev/ast-fwd-gen: Adjust. + * src/ast/decs-list.hh, src/ast/decs-list.hxx, src/ast/decs-list.cc: + New. + All uses of decs_list_type replaced. + * src/ast/alldec.hh: Include them. + * src/ast/decs.hh (decs_list_type): Remove. + * src/ast/Makefile.am: Adjust. + + Adjust core routines to the new ast. + * src/callgraph/parent-graph-visitor.cc, + * src/callgraph/parent-graph-visitor.hh, + * src/callgraph/parent-graph-visitor.cc, + * src/callgraph/call-graph-visitor.hh, + * src/callgraph/call-graph-visitor.cc (create): Take an Ast. + (constructor): Do nothing fancy for main. + * src/desugar/bound-checking-visitor.hh, + * src/desugar/bound-checking-visitor.cc (operator ()(LetExp)): + Replace by... + (operator()(DecsList)): this. + Simplify the logic: it is actually no longer necessary to iterate. + * src/translate/translate-visitor.cc: The ctor and dtor no longer + need to do anything fancy for "main". + (visitFunctionDecHeader): Special case the main function :( + * src/astclone/clone-visitor.hh, src/astclone/clone-visitor.cc: + Handle DecsList. + * src/cppgen/cppgen-visitor.hh, src/cppgen/cppgen-visitor.cc: + Handle DecsList. + It still doesn't work though, I didn't fight to know why. + + Make all the libs handle ast::Ast. Tasks handle the DecsList. + * src/type/libtype.cc, src/type/libtype.hh, src/escapes/libescapes.hh, + * src/escapes/libescapes.cc, src/desugar/libdesugar.hh, + * src/desugar/libdesugar.cc, src/translate/libtranslate.hh, + * src/translate/libtranslate.cc, src/callgraph/libcallgraph.hh, + * src/callgraph/libcallgraph.cc, src/parse/libparse.cc, + * src/parse/libparse.hh, + * src/bind/libbind.hh, src/bind/libbind.cc, src/ast/libast.hh, + * src/overload/liboverload.hh, src/overload/liboverload.cc: + Replace ast::Exp by ast::Ast. + * src/desugar/tasks.cc, src/parse/tasks.cc, src/ast/tasks.hh, + * src/ast/tasks.cc, src/astclone/tasks.cc + (the_program): Now a DecsList. + + Random improvements. + * src/desugar/tasks.cc (extract_result): New. + Use it to factor most following routines. + * src/desugar/desugar-visitor.cc: When possible, don't create a + temporary string variable to parse, just parse the string. + * src/translate/level.hh, src/translate/level.cc (Level): Remove + the ctor with a single argument. + Swap the first two argument of the second so that sensible default + values can be used. + Adjust callers. + Adjust student marks. + + Adjust preludes. + * data/prelude.tih, tests/good/basic-import-header.tih, + * tests/good/complex-import-header1.tih, + * tests/good/complex-import-header2.tih, + * tests/import/import-rec-header1.tih, + * tests/import/import-rec-header2.tih, + * tests/import/import-recursive1.tih: + Remove the outer let-end. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2195 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-05 Roland Levillain + + 2005-09-05 Roland Levillain + + * src/desugar/test-bound-checking.cc: New file. + * src/desugar/Makefile.am (check_PROGRAMS): Add + test-bound-checking. + (test_bound_checking_SOURCES, test_bound_checking_LDADD) + (test_bound_checking_CPPFLAGS): New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2194 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-05 Julien Roussel + + https://svn.lrde.epita.fr/svn/tc/trunk/tc + + ChangeLog | 4 ++++ + Makefile.am | 6 +++--- + 2 files changed, 7 insertions(+), 3 deletions(-) + + from Julien Roussel + + * Makefile.am (authors.h): Don't rely on the default encoding. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2193 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-05 Roland Levillain + + 2005-09-05 Roland Levillain + + Use TigerParser's ability to parse a batch of declarations to + simplify the BoundCheckingVisitor, using more concrete syntax. + + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::LetExp& e)): Use concrete syntax to + introduce new built-in types. + (desugar): Likewise, for new built-in functions. + * src/parse/scantiger.ll: Allow more reserved identifiers (for + instance, words starting with several « _ »). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2192 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-05 Roland Levillain + + 2005-09-05 Roland Levillain + + Update tests w.r.t. the new interface of TigerParser. + + * src/parse/test-parse.cc (main), + * src/astclone/test-clone-visitor.cc (clone_ast), + * src/bind/test-bind.cc (bound), + * src/desugar/test-string-cmp-desugar.cc (test_string_desugaring), + * src/desugar/test-for-loops-desugar.cc (main): + Update tests. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2191 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-05 Roland Levillain + + 2005-09-05 Roland Levillain + + Actually create all nodes in the duplicated AST instead of using + some references to existing ones, during the bound checking pass, + to prevent SIGSEGVs during the destruction of the tree. + + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::VarDec& e)): Create a fresh NameTy as name + of the result VarDec, instead of reusing tp.namety["Box"]. + (operator() (const ast::SubscriptVar& e)): Duplicate e.var_ twice, + and use each instance exactly once in the desugared result. + + * src/graph/graph.hh (topological_sort): Typo in comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2190 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-05 Fabien Ouy + + 2005-09-02 Fabien Ouy + + * src/misc/ref.hh, src/misc/ref.hxx: Change implementation to + use Boost's shared_ptr. + * src/canon/basic-block.cc, src/codegen/ia32/codegen.cc, + src/codegen/mips/move.brg, src/codegen/mips/move_load.brg, + src/codegen/mips/move_store.brg, + src/misc/test-ref.cc, src/tree/tree.cc, + src/tree/tree.hxx: Replace calls to misc::Ref::bound () with + misc::Ref::operator bool (). + * src/codegen/mips/codegen.cc, src/codegen/mips/codegen.hh: Regen + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2189 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-02 Roland Levillain + + 2005-09-02 Roland Levillain + + * src/desugar/tasks.hh (raw-desugar, raw-bound-checks-add), + * src/cppgen/tasks.hh (cxx-display): Adjust dependencies on task + `typed'. + + * src/graph/graph.hh (topological_sort): Add comment. + * src/codegen/mips/tiger.brg: Fix Doxygen header. + * src/codegen/mips/epilogue.cc: Remove Doxygen header. + * src/codegen/mips/codegen.hh, src/codegen/mips/codegen.cc: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2188 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-02 Akim Demaille + + 2005-09-02 Akim Demaille + + Sugar the bound checking visitor using meta variables. + The problems in parsing start to reveal themselves, in particular + in connection with biglvalue issue. + * src/parse/parsetiger.yy (LVALUE, NAMETY): New tokens. + Catch their occurrences. + * src/parse/scantiger.ll (_lvalue, _namety): New rules. + Use assertion instead of assert. + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc + (lvalue, lvalue_map_type, namety, namety_map_type): New. + (parse_): Take the seed as argument. + Adjust all callers. + (parse_prelude): Make it more alike its peers. + Take an argument. + (parse_import): Adjust and simplify. + * src/desugar/bound-checking-visitor.cc (VarDec, SubscriptVar): + Use more meta variables. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2187 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-02 Roland Levillain + + Correct an English lexical mistake. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2186 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-01 Roland Levillain + + 2005-09-01 Roland Levillain + + Rename disjunctive tasks using the preterit. + + * src/bind/tasks.hh (bind-default): Rename task as... + (bound): ...this. + * src/escapes/tasks.hh (escapes): Adjust dependency. + * src/type/tasks.hh (type): Rename task as... + (typed): ...this. + * src/translate/tasks.hh (hir-compute): Adjust dependency. + * src/desugar/tasks.hh (desugar-default): Rename task as... + (desugared): ...this. + * src/target/tasks.hh (target-default): Rename task as... + (targeted): ...this. + * src/codegen/tasks.hh (inst-compute, runtime-display), + * src/temp/tasks.hh (tempmap-display): Adjust dependencies. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2185 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-01 Roland Levillain + + 2005-09-01 Roland Levillain + + * configure.ac: Remove --enable-desugar option. + * src/translate/tasks.hh, src/overload/tasks.hh: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2184 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-01 Roland Levillain + + 2005-09-01 Roland Levillain + + * dev/tc.png: New file. + * dev/tc.css: Add a body background. + * dev/Makefile.am (EXTRA_DIST): Add tc.png. + (tc.html): Add a dependency on tc.png. + (tc.img/tc.png, clean-local): New rules. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2183 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-01 Roland Levillain + + 2005-09-01 Roland Levillain + + Document the release process. + + * dev/tc.texi (Release process): New node. + (Top): Update menu. + * dev/tc.css: New file. + * dev/Makefile.am (EXTRA_DIST): New. + Add tc.css. + (AM_MAKEINFOFLAGS): Add --css-include=$(srcdir)/tc.css + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2182 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-09-01 Akim Demaille + + 2005-09-01 Akim Demaille + + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc: + Some reordering and documenting. + (exp_map_type, symbol_map_type): New. + Note that we now use simple std::string as keys, there is no win + in using Symbols. + * src/parse/scantiger.ll (CHECK_EXTENSION): New. + (IDENTIFIER, NEW_IDENTIFIER): Split the first in two. + Take an argument. + (meta_variable): New. + * src/desugar/desugar-visitor.cc (operator() (ForExp)): Use the + symbol table to replace the loop variable name. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2181 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-08-31 Akim Demaille + + 2005-08-31 Akim Demaille + + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc: + (TigerParser): Grr, never ever trust the initialization by + default of primitive types. + Initialize the Booleans. + (exp): New. + * src/parse/scantiger.ll (EXTENSION): New. + (_exp): New pattern. + * src/parse/parsetiger.yy (EXP): New token. + Recognize it, and fetch the sub tree from the TigerParser's exp + array. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2180 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-08-31 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2179 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-08-31 Akim Demaille + + 2005-08-31 Akim Demaille + + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc: + (ctors): Simplify the two ctors into a single one setting all the + flags to false. + (allow_extensions_p_): Rename as... + (enable_extensions_p_): this. + (enable_extensions, scan_trace, parse_trace): New. + * src/parse/scantiger.ll: Use them. + (IDENTIFIER): New, use it. + * src/desugar/bound-checking-visitor.cc, + * src/desugar/desugar-visitor.cc: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2178 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-08-31 Akim Demaille + + 2005-08-31 Akim Demaille + + * src/task/task-register.cc (print_task_graph): Fix the display of + disjunctive tasks. + Ensure the order of the children is preserved. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2177 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-08-31 Akim Demaille + + More TODO. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2176 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-08-30 Akim Demaille + + r330@sulaco-eth: akim | 2005-08-26 19:31:08 +0200 Local copy. r331@sulaco-eth: akim | 2005-08-30 17:15:41 +0200 2005-08-30 Akim Demaille + + Rename config/ as build-aux to match with up-to-date coding standards. + + * config/.arch-inventory, config/Makefile.am, + * config/ampersand.rb, config/ampersand_test.yml, + * config/bison++.in, config/bison.m4, config/logeval-to-csv, + * config/make.m4, config/monoburg.m4, config/move-if-change, + * config/pypath.m4, config/rebox.el, config/swig.m4, + * config/tiger.el, config/warning.m4: + Move to... + * build-aux/.arch-inventory, build-aux/Makefile.am, + * build-aux/ampersand.rb, build-aux/ampersand_test.yml, + * build-aux/bison++.in, build-aux/bison.m4, build-aux/logeval-to-csv, + * build-aux/make.m4, build-aux/monoburg.m4, build-aux/move-if-change, + * build-aux/pypath.m4, build-aux/rebox.el, build-aux/swig.m4, + * build-aux/tiger.el, build-aux/warning.m4: + ... here. + * Makefile.am, argp/Makefile.am, argp/configure.ac, bootstrap, + * configure.ac, dev/ast-clone-visitor-gen, dev/stats, + * src/Makefile.am, src/parse/Makefile.am: Adjust. + + * configure.ac: Simplify the use of --with-boost. + * config.site: Make it easier for Fink users to find gcc and + boost. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2175 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-08-30 Roland Levillain + + 2005-08-30 Roland Levillain + + Make template methods of type::TypeVisitor visible to + overload::TypeVisitor, whatever the compiler optimization options. + + * src/type/type-visitor.cc (type_default, created_type_default): + (type_set): Move these methods... + * src/type/type-visitor.hxx: ...here (new file). + * src/type/type-visitor.hh: Include it. + * src/type/Makefile.am (libtype_la_SOURCES): Add type-visitor.hxx. + Reported by Julien Roussel. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2174 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-08-30 Roland Levillain + + Add missing credit in ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2173 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-08-30 Roland Levillain + + 2005-08-30 Roland Levillain + + Fix the generation of authors.h. + + * Makefile.am (authors.h): Have a more flexible regexp + w.r.t. spaces (i.e., allow tabs) to define PACKAGE_SHORT_AUTHORS. + * AUTHORS: Convert tabulations to spaces. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2172 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-08-30 Roland Levillain + + 2005-08-30 Roland Levillain + + * dev/tc.texi (Test): Add some documentation on tc-check's usage. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2171 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-08-24 Roland Levillain + + 2005-08-24 Roland Levillain + + Perform bound checking within an add-on builtin function, + _check_bounds, using the cast extension. + + * src/desugar/bound-checking-visitor.cc + * src/desugar/bound-checking-visitor.hh, (_streq_def_) + (_strcmp_def_, _exit_def_): Remove attributes. + (has_new_builtin_types_p_, has_new_builtin_functions_p_): New + attributes. + (BoundCheckingVisitor::BoundCheckingVisitor): Adjust ctor. + (operator() (const ast::SubscriptVar&)): Emit a call to + _check_bounds instead of inline bound checking code. + (operator() (const ast::LetExp& e)): New. + Create aliases for the int and string builtin types to avoid bad + bindings. + Emit an _int_array type used as a pseudo-generic array type + (thanks to casts) in calls to _check_bounds. + (operator() (const ast::FunctionDecs&)): Build an alias of + print_err. + Emit the new _check_bounds builtin. + No longer bind _streq and _strcmp by hand. + (operator() (const ast::AssignExp&)) + (operator() (const ast::CallExp&)): Remove methods. + * tests/good/array-subscript-assign.tig, + * tests/good/array-subscript-assign.-e.s, + * tests/good/array-subscript-assign.-e.u.s, + * tests/good/array-subscript-assign.hir, + * tests/good/array-subscript-assign.hpr, + * tests/good/array-subscript-assign.lir, + * tests/good/array-subscript-assign.lpr, + * tests/good/array-subscript-assign.out, + * tests/good/array-subscript-assign.s, + * tests/good/array-subscript-assign.sta, + * tests/good/array-subscript-assign.u.s: New test. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2170 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-08-23 Roland Levillain + + 2005-08-23 Roland Levillain + + Disable the support of casts by default. This can be turned on + as an option of the TigerParser. + + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc + (allow_reserved_id_p_): Rename attribute as... + (allow_extensions_p_): ..this. + (TigerParser::TigerParser): Adjust ctors. + * src/parse/scantiger.ll: Adjust. + Treat "cast" as a keyword if language extensions are enabled and + as an identifier otherwise. + + * src/cppgen/tasks.hh (cppgen): Remove -X short option + (overriden by --no-prelude) for --cxx-display. + * src/cppgen/tasks.cc (DEFINE_TASKS): Re-enable the task of the + cppgen module. + + 2005-08-23 Roland Levillain + + Support casts in the Tiger language. This feature is not meant to + be used in program written by humans, but by the compiler within + program transformations. + + * src/parse/parsetiger.yy (CAST): New token. + (exp.nonlvalue): New non terminal. + Let an expression be either a l-value or a non l-value. + Support the cast extension. + * sec/scan/scantiger.ll: Recognize the `cast' keyword. + * src/parse/parsetiger.hh, src/parse/parsetiger.cc: Regen. + * src/ast/ast.yml (CastVar, CastExp): New classes. + * src/ast/fwd.hh: Regen. + * src/ast/visitor.hh, + * src/astclone/clone-visitor.hh, src/astclone/clone-visitor.cc + (operator() (const CastVar&), operator() (const CastExp&)): New + (generated). + * src/ast/allvar.hh, src/ast/allexp.hh: Update. + * src/ast/default-visitor.hh, src/ast/default-visitor.cc + (operator() (typename Const::type&)) + (operator() (typename Const::type&)): New. + * src/ast/print-visitor.hh, src/ast/print-visitor.cc + (operator() (const CastVar&), operator() (const CastExp&)): New. + * src/ast/README: Update. + * src/type/type-visitor.hh, src/type/type-visitor.cc + (operator() (const CastVar&), operator() (const CastExp&)): New. + * src/translate/translate-visitor.hh, + * src/translate/translate-visitor.cc + (operator() (const CastVar&), operator() (const CastExp&)): New. + * src/cppgen/cppgen-visitor.hh + (operator() (const CastVar&), operator() (const CastExp&)): New + (fakes). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2169 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-08-16 Roland Levillain + + Clean up ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2168 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-08-16 Roland Levillain + + 2005-08-16 Roland Levillain + + Make --desugar and resp. --overfun-desugar idempotent. + + * src/desugar/desugar-visitor.cc + (operator() (const ast::FunctionDecs& e)): Prevent builtin alias + redefinitions. + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2167 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-07-18 Roland Levillain + + 2005-07-18 Roland Levillain + + * src/desugar/tasks.hh, src/desugar/desugar-visitor.hh, + * src/desugar/bound-checking-visitor.hh, + * src/desugar/libdesugar.hh, src/desugar/libdesugar.cc: Typos. + * NEWS: Likewise. + Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2166 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-07-15 Roland Levillain + + 2005-07-15 Roland Levillain + + Make BoundCheckingVisitor independant from DesugarVisitor so that + they can be used in any order. + + * src/desugar/bound-checking-visitor.hh, + * src/desugar/bound-checking-visitor.cc (exit_def_): Rename as... + (_exit_def_): ...this. + (operator() (const ast::FunctionDec&)): Remove. + (operator() (const ast::FunctionDecs&)): New. + Create an alias for the exit builtin so as to perform the right + binding. + * src/desugar/desugar-visitor.hh, src/desugar/desugar-visitor.cc + (_exit_def_): New member. + (operator() (const ast::FunctionDecs&)): Register _exit alias + definition. + (operator() (const ast::CallExp&)): New. + Make the right binding on _exit. + + + Have a finer control of the desugar step using flags for each + transformation. + + * src/desugar/tasks.hh, src/desugar/tasks.cc (desugar-default): -O + is no longer a shortcut for --desugar-default. + (desugar-for, desugar-string-cmp): New boolean tasks. + (desugar, overfun_desugar): Pass their values to desugar::desugar + and desugar::overfun_desugar. + (bound_checks_add, overfun_bound_checks_add) + (raw_bound_checks_add): New tasks. + * src/desugar/libdesugar.hh, src/desugar/libdesugar.cc + (desugar, overfun_desugar, raw_desugar): Add two boolean + arguments, and pass them to the DesugarVisitor. + (raw_transform): Rename as... + (raw_bound_checks_add): ...this. + (desugar, overfun_desugar): Move bound-checking-related code... + (bound_checks_add, overfun_bound_checks_add): ... here (new + functions). + * src/desugar/desugar-visitor.hh, src/desugar/desugar-visitor.cc + (desugar_for_p_, desugar_string_cmp_p_): New members. + (DesugarVisitor::DesugarVisitor): Adjust ctor. + (DesugarVisitor::operator() (const ast::OpExp&)): Don't + desugar if desugaring of string comparisons is not enabled, simply + clone instead. + (DesugarVisitor::operator() (const ast::ForExp&)) + (DesugarVisitor::operator() (const ast::FunctionDecs&)): Don't + desugar if desugaring of « for » loops is not enabled, simply + clone instead. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2165 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-07-12 Roland Levillain + + 2005-07-12 Roland Levillain + + Add more syntactic sugar on misc::list. + + * src/misc/list.hh, src/misc/list.cc (list::has) + (list::operator-=): New methods. + (operator%): New operator. + * src/temp/temp.cc, src/temp/label.cc: Explicitely instantiate + this operator. + * src/regalloc/color.cc (assign_color): Simplify using this + syntactic sugar. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2164 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-07-12 Roland Levillain + + 2005-07-12 Roland Levillain + + Prevent unwanted type redefinitions. + + * src/type/type-visitor.hh, src/type/type-visitor.cc + (type_default, created_type_default, type_set): New methods. + Use them to prevent an accidental redefinition of a type. + * src/overload/type-visitor: Likewise. + * src/bind/bind-visitor.hh, src/bind/bind-visitor.cc (def_init): + Rename as... + (def_default): ...this. + Adjust callers. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2163 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-07-12 Roland Levillain + + 2005-07-12 Roland Levillain + + * tests/tc-check.in (cc, log_open, help): Use gcc-4.0 + (cxx, log_open, help): Use g++-4.0. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2162 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-07-12 Roland Levillain + + 2005-07-12 Roland Levillain + + Use « _ » as leading character of reserved identifiers instead of + « $ ». + + * src/parse/scantiger.ll: Have reserved_id start with a « _ », not + a « $ ». + * src/desugar/desugar-visitor.cc (operator() (const ast::OpExp&)) + (operator() (const ast::FunctionDecs& e)): Rename $streq and + $strcmp as _streq and _strcmp. + (operator() (const ast::ForExp&)): Rename $lo and $hi as _lo and + _hi. + * src/desugar/bound-checking-visitor.cc + (operator() (const ast::TypeDecs&)) + (operator() (const ast::VarDec&)) + (operator() (const ast::SubscriptVar&)) + (operator() (const ast::AssignExp&)): Start box type name with a + « _ », not a « $ ». + Rename $arr and $size as _arr and _size. + (operator() (const ast::CallExp&)): Rename $streq and $strcmp as + _streq and _strcmp. + * src/desugar/desugar-visitor.hh, + * src/desugar/bound-checking-visitor.hh: Adjust comments. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2161 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-07-12 Roland Levillain + + 2005-07-12 Roland Levillain + + Rename TransformVisitor as BoundCheckingVisitor. + + * src/desugar/transform-visitor.hh, + * src/desugar/transform-visitor.cc: Rename files as... + * src/desugar/bound-checking-visitor.hh, + * src/desugar/bound-checking-visitor.cc: ...this. + (TransformVisitor): Rename as... + (BoundCheckingVisitor): ...this. + * src/desugar/libdesugar.cc (desugar): Adjust. + * src/desugar/Makefile.am (libdesugar_la_SOURCES): Remove + transform-visitor.hh and transform-visitor.cc. + Add bound-checking-visitor.hh and bound-checking-visitor.cc. + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2160 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-07-12 Yoann Fabre + + 2005-07-12 Arnaud Fabre + + Make G++ 4.0 the official compiler. + + * configure.ac (GCC_PREREQ): Bump to 4.0. + * src/temp/temp.cc (misc::operator<<): Do not explicit namespace misc: + gcc 4.0 does not appreciate it. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2159 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-07-11 Roland Levillain + + 2005-07-11 Roland Levillain + + Move bound-checking code emission into a new visitor, + TransformVisitor, launched after DesugarVisitor. + + * src/desugar/desugar-visitor.hh, src/desugar/desugar-visitor.cc: + (operator() (const ast::FunctionDec&)): Remove method. + (operator() (const ast::FunctionDecs&)): New method. + (operator() (const ast::TypeDecs&)) + (operator() (const ast::VarDec&)) + (operator() (const ast::SubscriptVar&)) + (operator() (const ast::AssignExp&)): Move these methods... + * src/desugar/transform-visitor.hh, + * src/desugar/transform-visitor.cc: ...here (new visitor). + * src/desugar/libdesugar.cc (raw_desugar): New function. + (desugar, overfun_desugar): Call raw_desugar (and relaunch + bind::bind and type::types_check) after the desugar step. + * src/desugar/Makefile.am (libdesugar_la_SOURCES): Add + transform-visitor.hh and transform-visitor.cc. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2158 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-07-11 Roland Levillain + + 2005-07-11 Roland Levillain + + Add optional dynamic checking of the bounds of arrays, as a + program tranformation on the AST at the desugar stage. + + * src/desugar/desugar-visitor.hh, src/desugar/desugar-visitor.cc: + (operator() (const ast::TypeDecs&)) + (operator() (const ast::VarDec&)) + (operator() (const ast::SubscriptVar&)) + (operator() (const ast::AssignExp&)): New methods. + (exit_def_, boxes_): New attribute. + (operator() (const ast::FunctionDec&)): Register exit() builtin + definition site. + * src/astclone/clone-visitor.hxx (astclone): Fix the variable + check in an assertion. + * src/parse/parsetiger.yy: Typo. + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2157 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-07-07 Akim Demaille + + 2005-07-07 Akim Demaille + + * src/task/task-register.cc (print_task_graph): Output diamonds + for disjunctive tasks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2156 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-28 Roland Levillain + + 2005-06-28 Roland Levillain + + Properly desugar Tiger programs with function overloading. + + * configure.ac: Bump to 0.92a. + * src/desugar/libdesugar.hh, src/desugar/libdesugar.cc + (overfun_desugar): New function. + * src/desugar/tasks.hh (desugar-default): New disjunctive task. + (desugar): Depend on types-compute, not type. + (overfun-desugar): New task. + [ENABLE_DESUGAR]: Bind this task to option -O. + * src/desugar/tasks.cc (overfun_desugar): New function. + * src/overload/tasks.hh: Typos. + (overfun-types-compute) [ENABLE_DESUGAR]: Don't bind this task to + option -O. + * src/translate/tasks.hh (translate) [ENABLE_DESUGAR]: Depend on + desugar-default, not desugar. + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2155 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-27 Roland Levillain + + 2005-06-27 Roland Levillain + + Version 0.92. + For 2007-tc-9.0. + + * configure.ac, NEWS: Version 0.92. + * src/liveness/liveness.cc (boost/graph/topological_sort.hpp): + Don't include this file. + * src/regalloc/color.cc: Remove useless studentize tags. + (import_nodes, precolor): Use misc::set sugar. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2154 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-27 Roland Levillain + + 2005-06-27 Roland Levillain + + Use MonoBURG'S named subtree feature. + + * src/codegen/mips/binop.brg, src/codegen/mips/cjump.brg, + * src/codegen/mips/mem.brg, src/codegen/mips/move.brg, + * src/codegen/mips/move_load.brg, src/codegen/mips/move_store.brg: + Name subtrees in rules, and use these names as variables in + actions. + * src/codegen/mips/codegen.cc: Regen. + * config/monoburg.m4 (TC_PROG_MONOBURG101): Check for + monoburg >= 1.0.2. + Rename as... + (TC_PROG_MONOBURG102): ...this. + * configure.ac: Adjust. + Bump to 0.91a. + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2153 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-20 Roland Levillain + + 2005-06-20 Roland Levillain + + Version 0.91. + For 2007-tc-8.0. + + * configure.ac, NEWS: Version 0.91. + * AUTHORS, TODO: Update. + * src/graph/graph.hh, src/graph/graph.hxx (Graph::vertex_add): New + method. + * src/liveness/flowgraph.hxx (FlowGraph::FlowGraph) + * src/liveness/interference-graph.cc (InterferenceGraph::node_of) + * src/callgraph/fundec-graph.hxx (FundecGraph::fundec_add): + Adjust. + * src/graph/graph.hxx: s/VertexProperties/VertexLabel/ + s/EdgeProperties/EdgeLabel/ + * src/graph/test-graph.cc (consistency): Update test. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2152 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-20 Roland Levillain + + 2005-06-20 Roland Levillain + + Convert the graph abstractions to Boost Graphs. + + * src/graph/graph.hh (graph::name_prop_type): New property. + * src/graph/graph.hh, src/graph/graph.hx (edge_decorator) + (node_decorator, orientation): Remove. + (Graph): Removed. + Replaced by... + (Graph): ...this (new class). + (UndirectedGraph): Removed. + Replaced by... + (DirectedGraph): ...this (new class). + (OrientedGraph): Removed. + Replaced by... + (UndirectedGraph): ...this (new class). + (operator<< (std::ostream&, const Graph<>)): Adjust. + + + Have FlowGraph and Liveness use the new graph::Graph class, based + on the Boost Graph Library. + + * src/liveness/flowgraph.hh (FlowGraph): Inherit from + graph::DirectedGraph. + (hnode_type, hnodes_iterator): Remove typedefs. + * src/liveness/flowgraph.hxx + (FlowGraph::FlowGraph): Adjust ctor. + + * src/liveness/liveness.hh (hnode_type, hnodes_iterator): Remove + typedefs. + (livemap_type): Adjust. + (liveness_vertex_iter_type, liveness_edge_iter_type) + (liveness_neighb_iter_type, reverse_liveness_neighb_iter_type): + New typedefs. + * src/liveness/liveness.cc (Liveness::Liveness): Adjust ctor. + Use boost::reverse_graph to compute the predecessors of a vertex. + + + Have FundecGraph and Interference-Graph use the new graph::Graph + class, based on the BGL. Use bundled properties instead of + internal properties. + + * src/callgraph/fundec-graph.hh (graph/graph.hh): Include it. + (fundec_vertex_t, fundec_prop_type, name_prop_type): Remove. + (FundecGraph): Inherit from + graph::DirectedGraph. + (property_map): Remove helper. + * src/callgraph/fundec-graph.hh, src/callgraph/fundec-graph.hxx + (operator[], print (std::ostream&), print (std::string)) + (epilogue_print, name_get, name_set): Remove methods. + + * src/liveness/interference-graph.hh: Move boost::target forward + declarations... + * src/graph/graph.hh: ...here. + * src/liveness/interference-graph.hh + (boost/graph/adjacency_list.hpp): No longer include it directly. + (graph/graph.hh): Include it. + (temp_vertex_t, temp_prop_type, name_prop_type): Remove. + (InterferenceGraph): Inherit from + graph::UndirectedGraph. + (moves_get () const, moves_get ()) + * src/liveness/interference-graph.cc (timer_get): + Move the implementation of this method... + * src/liveness/interference-graph.hxx: ...here (new file). + * src/liveness/interference-graph.hh: Include it. + * src/liveness/interference-graph.hh, + * src/liveness/interference-graph.cc (edge_add, operator[]) + (name_get, name_set, print (std::ostream&), print (std::string)): + Remove these methods. + * src/liveness/Makefile.am (libliveness_la_SOURCES): Add + interference-graph.hxx. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2151 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-17 Roland Levillain + + 2005-06-17 Roland Levillain + + Have InterferenceGraph use the Boost Graph Library. + + * src/liveness/interference-graph.hh, + * src/liveness/interference-graph.cc: Add forward declarations to + pacify G++ on the nature of `target'. + (InterferenceGraph): Inherit from boost::adjacency_list. + Adjust. + (~InterferenceGraph): New virtual dtor. + (edge_add, operator[], name_get, name_set, print (std::ostream&)) + (print (std::string)): New methods. + (temp2node_type): Rename as... + (temp2vertex): ...this. + (interferencegraph_vertex_iter_type) + (interferencegraph_edge_iter_type) + (interferencegraph_neighb_iter_type): New typedefs. + * src/regalloc/color.hh (hnodes_iterator, node_type): Adjust. + * src/regalloc/color.cc (Color::Color, import_nodes) + (degrees_compute, add_edge, adjacent (const node_type)) + (adjacent (const node_type, const node_type), select_spill) + (assign_color): Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2150 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-17 Roland Levillain + + 2005-06-17 Roland Levillain + + Some clean up callgraph::FundecGraph. + + * src/callgraph/fundec-graph.hh (graph/graph.hh): No longer + include it. + (print (std::ostream& ostr), epilogue_print (std::ostream& ostr)) + (print (std::string file)): Make these methods virtual. + * src/callgraph/fundec-graph.hxx (print (std::ostream& ostr)): + Simplify. + (operator[]): Likewise. + Make it const. + * src/callgraph/fundec-graph.hh, src/callgraph/fundec-graph.hxx + (~FundecGraph): New virtual dtor. + (name_get, name_set): New methods. + * src/callgraph/libcallgraph.cc: Add qualify boost::tie with its + namespace. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2149 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-17 Roland Levillain + + 2005-06-17 Roland Levillain + + Have FundecGraph's (i.e., CallGraph and ParentGraph) use the Boost + Graph Library instead of Tiger's own graph implementation. + + * src/callgraph/fundec-graph.hh, src/callgraph/fundec-graph.hxx + (FundecGraph): Inherit from boost::adjacency_list. + (fundec_vertex_t, fundec_prop_type): New vertex property. + (name_prop_type): New graph property. + (hfundecs_type, fundec_add, fundec_link, hfundec_get): Adjust. + (operator[]): New operator. + (print (std::ostream& ostr), epilogue_print (std::ostream& ostr)) + (print (std::string file)): New methods. + (fundecgraph_vertex_iter_type, fundecgraph_edge_iter_type) + (fundecgraph_neighb_iter_type, callgraph_vertex_iter_type) + (callgraph_neighb_iter_type, parentgraph_neighb_iter_type): New + convenience typedefs. + (property_map): New helper traits. + * src/callgraph/libcallgraph.cc (node_set_type): Adjust typedef. + (escapes_sl_compute, escapes_find): Adjust functions. + * src/callgraph/tiger_callgraph.i: Don't have SWIG parse + src/callgraph/fundec-graph.hh, just give it the needed identifiers. + + * configure.ac: Typo. + * src/liveness/liveness.cc (Liveness::Liveness): Aesthetic change. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2148 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-16 Roland Levillain + + 2005-06-16 Roland Levillain + + * src/codegen/mips/move_store.brg + (move: Move(Mem(Binop(exp, Const)), exp)): Merge this rule with... + (move: Move(Mem(Binop(Const, exp)), exp)): ...this one. + Swap the subtrees of the Binop if necessary. + * src/codegen/mips/codegen.cc: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2147 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-16 Roland Levillain + + 2005-06-16 Roland Levillain + + * src/codegen/mips/move_store.brg + (move: Move(Mem(Binop(Const, exp)), exp)): Get the right subtree + as store source. + * src/codegen/mips/codegen.cc: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2146 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-15 Roland Levillain + + 2005-06-15 Roland Levillain + + * src/codegen/mips/Makefile.am ($(srcdir)/codegen.stamp): Fix rule + action (missing semi-colon). + * src/codegen/mips/codegen.hh: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2145 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-14 Roland Levillain + + 2005-06-14 Roland Levillain + + Keep libtarget its pure interface. + + * configure.ac: Bump to 0.90a. + * src/target/mips-target.hh, src/target/mips-target.cc + (MipsTarget::MipsTarget): No longer use + codegen::task::rule_trace_p, take an (optional) Boolean + argument instead. + * src/target/ia32-target.hh (Ia32Target::Ia32Target): Likewise. + * tcsh/python/tcsh.test: Swap the order of the tests. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2144 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-14 Roland Levillain + + 2005-06-14 Roland Levillain + + Version 0.90. + For 2007-tc-7.0. + + * configure.ac, NEWS: Version 0.90. + * AUTHORS: Typo. + * src/codegen/mips/move.brg: Hide some code. + * src/codegen/mips/codegen.cc: Regen. + * src/codegen/mips/Makefile.am ($(srcdir)/codegen.stamp): Pass + the option --quiet to monoburg. + Simplify rule. + * tests/Makefile.am (check-local): Typo. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2143 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-14 Akim Demaille + + Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2142 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-13 Yoann Fabre + + 2005-06-14 Arnaud Fabre + + Rename misc::List as misc::list. + + * src/misc/list.hcc, src/misc/list.hh (List): Rename as... + (list): this. + * src/temp/temp.cc, src/temp/label.cc, + * src/temp/fwd.hh, src/assem/instrs.hh, + * src/misc/fwd.hh: Adjust. + + * NEWS: Keep in sync with configure.ac. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2141 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-13 Akim Demaille + + 2005-06-13 Akim Demaille + + * src/liveness/liveness.cc: Issue a nice error message on failure. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2140 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-13 Akim Demaille + + Adjust to tc-static. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2139 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-13 Akim Demaille + + 2005-06-13 Akim Demaille + + * configure.ac: Fix the handling of disabled *shared* (not + dynamic) libraries. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2138 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-12 Yoann Fabre + + 2005-06-13 Arnaud Fabre + + Move temp::List to misc::List. + + * src/temp/list.hh, src/temp/list.hcc: Move to... + * src/misc/list.hh, src/misc/list.hcc: ...here. Adjust to new + namespace. + * src/canon/traces.cc, src/canon/basic-block.cc, + * src/tree/jump.hh, src/tree/cjump.hh, + * src/temp/temp.cc, src/temp/label.cc, + * src/temp/test-temp.cc, src/temp/Makefile.am, + * src/temp/fwd.hh, src/assem/instr.hh, + * src/assem/move.hxx, src/target/cpu-limits.hh, + * src/target/cpu.hh, src/target/cpu.cc, + * src/misc/Makefile.am, src/misc/fwd.hh, + * src/codegen/ia32/codegen.cc, + * src/codegen/ia32/gas-assembly.cc, + * src/codegen/mips/codegen.cc, + * src/codegen/mips/spim-assembly.cc: + Adjust. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2137 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-12 Michaël Cadilhac + + 2005-06-12 Michael Cadilhac + + * src/codegen/mips/Makefile.am: Fix `mv' command on "codegen.hh" + to avoid trying moving this file to its own place. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2136 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-10 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2135 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-10 Akim Demaille + + 2005-06-10 Akim Demaille + + * src/temp/list.hh, src/temp/list.cc (append, operator+) + (operator+=): New. + And simplify the previous code. + * src/temp/temp.cc: Adjust. + + * src/codegen/mips/prologue.cc: Rename as... + * src/codegen/mips/prologue.hh: this. + * src/codegen/mips/Makefile: Adjust. + Fix the dependencies. + Make the generated files read only. + * src/codegen/mips/codegen.cc (append_sink, define_registers): + Remove: inline into... + (build_fragment_context): here. + And callee save are used registers... + * src/codegen/mips/codegen.hh: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2134 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-10 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2133 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-10 Akim Demaille + + 2005-06-10 Akim Demaille + + * config/monoburg.m4: Be robust to no MonoBURG. + * src/regalloc/test-regalloc.cc: Include changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2132 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-10 Akim Demaille + + Update with MonoBURG changes, and with temp use changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2131 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-10 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2130 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-09 Roland Levillain + + 2005-06-09 Roland Levillain + + Normalize tasks names. + + * src/task/task.hh (name_): Turn it into a std::string. + (normalize): New class member. + * src/task/task.cc (normalize): Likewise. + (Task::Task): Use it. + * src/task/task.hxx (name_get): Adjust. + * tests/Makefile.am (check-local): Fix condition. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2129 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-09 Roland Levillain + + 2005-06-09 Roland Levillain + + * src/codegen/mips/Makefile.am ($(srcdir)/codegen.stamp): Use + monoburg's -I option. + * src/codegen/mips/codegen.hh, src/codegen/mips/codegen.cc: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2128 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-09 Roland Levillain + + 2005-06-08 Roland Levillain + + * configure.ac: Bump to 0.89a. + * tests/Makefile.am (check-local): Simplify rule. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2127 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-08 Yoann Fabre + + 2005-06-08 Arnaud Fabre + + Compute cycles executed in nolimips. + + * tests/tc-check.in (nolimips_cycles): New function. + (nolimips_check_one): Do not display stderr when profiling. + Count cycles executed. + (nolimips_check): Add --profile when required. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2126 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-07 Roland Levillain + + 2005-06-07 Roland Levillain + + Version 0.89. + For 2007-tc-6.0. + + * configure.ac, NEWS: Version 0.89. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2125 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-07 Roland Levillain + + 2005-06-07 Roland Levillain + + Fix studentize tags in configure.ac. + + * configure.ac: Use `dnl' for studentize named tags. + * dev/studentize: Add `dnl' as a comment delimiter. + * dev/stagize: Prune configure.ac using `dnl' as marker. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2124 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-07 Roland Levillain + + 2005-06-07 Roland Levillain + + Check for MonoBURG 1.0.1 or newer. + + * config/monoburg.m4: New file. + * configure.ac: Use it to check for the right version of monoburg. + * dev/stagize: Keep parts tagged as `codegen' in TC-789. + Add configure.ac to the list of pruned files. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2123 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-06 Roland Levillain + + 2005-06-06 Roland Levillain + + Handle MonoBURG within the build system. + + * configure.ac: Check for MonoBURG. + * src/codegen/mips/Makefile.am (BUILT_SOURCES): New. + (EXTRA_DIST): Move move.brg, binop.brg, tiger.brg, call.brg, + mem.brg, cjump.brg, move_store.brg, exp.brg, stm.brg, + move_load.brg and temp.brg... + (CODEGEN_GRAMMAR): ...here (new). + (EXTRA_DIST): Add codegen.stamp. + ($(srcdir)/codegen.hh $(srcdir)/codegen.cc) + ($(srcdir)/codegen.stamp): New rules. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2122 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-06 Akim Demaille + + Fix attribution. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2121 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-06 Akim Demaille + + 2005-06-06 Akim Demaille + + * configure.ac (HAS_SWIG): Rename as... + (ENABLE_TCSH): this. + Take the availability of dynamic libraries into account. + * Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2120 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-06 Akim Demaille + + 2005-06-06 Akim Demaille + + * src/tc.cc (filename, error): Move to... + * src/common.cc: here, for symmetry with common.hh. + * src/common.hh: Update documentation. + * src/liveness/interference-graph.cc, liveness/liveness.cc: Do not + include common.hh. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2119 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-06 Akim Demaille + + 2005-06-06 Akim Demaille + + * Makefile.am (authors.h): Define PACKAGE_SHORT_AUTHORS. + * src/version.cc.in: Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2118 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-06 Yoann Fabre + + 2005-06-06 Arnaud Fabre + + Add support for cycles count in tc-check. + + * tests/tc-check.in ($profile_code_p): New predicate. + (havm_cycles): New function. Extract cycles information from HAVM + output. + (ir_check_one): Do not display stderr when profiling. Save cycles + information. + (ir_check): Add --profile to HAVM command line when required. + (summary): Sum and display cycles count. + (grade_output): Display summary of cycles. + (help, parse_arguments): New option --profile. + (cycles, cycles_add): New methods of stick for saving cycles + information. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2117 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-04 Michaël Cadilhac + + 2005-06-04 Michael Cadilhac + + This patch replaces the mips/codegen.cc tree parser with + a generated mips/codegen.cc from monoburg (>= 1.0.1). + * src/codegen/mips/tiger.brg, + * src/codegen/mips/prologue.cc, + * src/codegen/mips/binop.brg, + * src/codegen/mips/call.brg, + * src/codegen/mips/cjump.brg, + * src/codegen/mips/exp.brg, + * src/codegen/mips/mem.brg, + * src/codegen/mips/move.brg, + * src/codegen/mips/move_load.brg, + * src/codegen/mips/move_store.brg, + * src/codegen/mips/stm.brg, + * src/codegen/mips/temp.brg, + * src/codegen/mips/epilogue.cc: New. Add monoburg files in + replacement of `mips/codegen.cc' and `mips/codegen.hh' files. + These burg files have to be assembled with monoburg (>= 1.0.1) + with: + + monoburg --without-glib --with-references \ + --without-exported-symbols \ + -d codegen.hh -s codegen.cc tiger.brg + + * src/codegen/mips/codegen.hh, + * src/codegen/mips/codegen.cc: Change to monoburg generated + versions. + + * src/tree/tree.hxx, + * src/tree/tree.cc, + * src/tree/tree.hh: Add data members used in monoburg processing, + and accessors for them. + + * src/codegen/tasks.hh: Create a new boolean task `rule-trace' + telling if rule matching of monoburg has to be printed. + + * src/target/ia32-target.hh, + * src/target/mips-target.cc: Call `Codegen' creation with an extra + parameter telling if rule matching has to be printed. + + * src/codegen/ia32/codegen.hh, + * src/codegen/ia32/codegen.cc: Add this extra parameter to the + default constructor. + + * src/codegen/codegen.hxx, + * src/codegen/codegen.hh: Add a `rule_trace_p_' member as described + above, and accessors on assembly and frame. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2116 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-04 Michaël Cadilhac + + 2005-06-04 Michael Cadilhac + + * src/assem/comment.hh, + * src/assem/comment.hxx: New. Add a new `assem::Instr' for comment + outputting in the assembly code. + * src/assem/libassem.hh, + * src/assem/Makefile.am: Update accordingly. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2115 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-03 Roland Levillain + + 2005-06-03 Roland Levillain + + * tcsh/python/test.py: Adjust call to the new definition of + tc.target.MipsTarget. + * src/target/tiger_target.i (target/cpu-limits.hh): Include it. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2114 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-02 Akim Demaille + + 2005-06-02 Akim Demaille + + * configure.ac (AC_DISABLE_STATIC): Don't call, since it brutally + removes the *possibility* to build static libraries, instead of + simply disabling it by default. + Disable by default by hand. + * src/Makefile.am: Remove the special case for Darwin. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2113 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-02 Gilles Walbrou + + 2005-06-02 Gilles Walbrou + + * src/codegen/mips/codegen.cc, src/codegen/mips/codegen.hh + (define_registers): New, used to define "defined registers". + * src/liveness/liveness.cc: Check if there are undefined temps. + * src/temp/temp.cc: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2112 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-01 Akim Demaille + + 2005-06-01 Akim Demaille + + * src/overload/type-visitor.cc: Don't issue a trailing leading + indentation prefix: the last endl must be after all the decindents. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2111 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-01 Roland Levillain + + 2005-06-01 Roland Levillain + + * src/bind/bind-visitor.hh, src/bind/bind-visitor.cc (def_init): + New method. + (operator() (ast::BreakExp&), operator() (ast::SimpleVar&)) + (operator() (ast::CallExp&), operator() (ast::NameTy&)): Use it to + factor calls to def_get/def_set. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2110 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-01 Akim Demaille + + 2005-06-01 Akim Demaille + + * src/task/libtask.hh (CONCAT_, CONCAT, TASK_UNIQUE): New. + (INT_TASK_DECLARE): Use the latter to avoid name clashes. + * src/target/tasks.hh (caller_save, callee_save): Restore as... + (caller-save, callee-save): these. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2109 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-06-01 Akim Demaille + + 2005-06-01 Akim Demaille + + To avoid clashes, use the user name in tc-check's tmp directory name. + Reported by Benoßt Perrot. + + * tests/tc-check.in ($tmpdir): New. + Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2108 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-31 Akim Demaille + + 2005-05-31 Akim Demaille + + * src/translate/translate-visitor.cc: Comment change. + + * src/codegen/tiger-runtime.c: Sort, and document a bit. + (tc_string_compare): this. + (tc_streq): this. + (tc_strcmp): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2107 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-31 Roland Levillain + + 2005-05-31 Roland Levillain + + Prevent function shadowing due to desugaring. + + * src/bind/bind-visitor.cc (operator() (ast::BreakExp&)) + (operator() (ast::SimpleVar&), operator() (ast::CallExp&)) + (operator() (ast::NameTy&)): Don't re-set a previously set + definition. + * tests/good/shadowed-streq.tig, tests/good/shadowed-streq.-e.s, + * tests/good/shadowed-streq.-e.u.s, tests/good/shadowed-streq.hir, + * tests/good/shadowed-streq.hpr, tests/good/shadowed-streq.lir, + * tests/good/shadowed-streq.lpr, tests/good/shadowed-streq.out, + * tests/good/shadowed-streq.s, tests/good/shadowed-streq.sta, + * tests/good/shadowed-streq.u.s: New test. + * tests/good/Makefile.am (dist_noinst_DATA): Add + shadowed-streq.tig, $(srcdir)/shadowed-streq.out, + $(srcdir)/shadowed-streq.sta, $(srcdir)/shadowed-streq.hpr, + $(srcdir)/shadowed-streq.lpr, $(srcdir)/shadowed-streq.-e.s, + $(srcdir)/shadowed-streq.s, $(srcdir)/shadowed-streq.u.s, + and $(srcdir)/shadowed-streq.-e.u.s. + * README-Subversion: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2106 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-31 Roland Levillain + + 2005-05-31 Roland Levillain + + * tests/Makefile.am (check-local): Pass --build-in-src to tc-check + only when the package has been configured from the source + directory. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2105 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-30 Akim Demaille + + 2005-05-30 Akim Demaille + + Fix --argument=MAX even better. + + * src/target/mips-cpu.cc (MipsCpu::MipsCpu): Fix the upper bound + of the number of registers to declare. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2104 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-30 Akim Demaille + + 2005-05-30 Akim Demaille + + Fix --argument=MAX better. + + * src/target/mips-cpu.cc (MipsCpu::MipsCpu): Respect the order for + argument registers. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2103 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-30 Akim Demaille + + 2005-05-30 Akim Demaille + + Fix --argument=MAX. + + * src/target/cpu.hh, src/target/cpu.cc (arg_reg, arg_regs): Rename + as... + (argument_reg, argument_regs): these. + * src/codegen/ia32/codegen.cc, src/codegen/mips/codegen.cc, + * src/regalloc/color.cc (regalloc): Adjust. + * src/target/mips-cpu.cc (MipsCpu::MipsCpu): Fix the definition of + argument passing registers. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2102 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-30 Akim Demaille + + 2005-05-30 Akim Demaille + + Implement --argument=MAX. + + * src/target/tasks.hh (caller-save, callee-save): Rename as... + (caller_save, callee_save): these. + It would be nice if Task::Task would change _ to -. + * src/target/cpu-limits.hh, src/target/cpu-limits.cc: New. + * src/task/libtask.hh (INT_TASK_DECLARE): No longer defines the + variable, just references it. + No longer takes a default value. + * target/cpu.cc, target/cpu.hh, target/fwd.hh, target/mips-cpu.cc, + * target/mips-cpu.hh, target/mips-target.cc, target/mips-target.hh, + * target/tasks.cc, target/tasks.hh: Use CpuLimits instead of + integers passed by hand. + + * src/translate/translation.cc: Remove a dead lint comment. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2101 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-30 Roland Levillain + + 2005-05-30 Roland Levillain + + Have tc-check be more flexible, so that the project can be fully + tested on the LRDE Build Farm. + + * configure.ac: Check for a reference compiler. + * tests/Makefile.am: Run tc-check only if a reference compiler was + found. + * tests/tc-check.in: Add option --build-in-src, to have tc-check + run on projects configured from the source directory. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2100 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-25 Roland Levillain + + 2005-05-25 Roland Levillain + + * src/overload/type-visitor.cc + (TypeVisitor::operator()(ast::CallExp&)): Use misc::indent to have + a prettier output on nil ambiguities. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2099 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-16 Yoann Fabre + + 2005-05-16 Arnaud Fabre + + Fix compilation error and warnings with g++ 4.0. + + * src/parse/tiger-parser.hh (YY_DECL): Adjust declaration to make + g++ 4.0 happy. + * src/type/types.hh, src/type/types.cc (Field) + * src/misc/xalloc.hh (iomanipulator): New virtual destructor. + * src/misc/xalloc.cc: New file. + * src/misc/Makefile.am (libmisc_la_SOURCES): Adjust. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2098 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-13 Benoßt Perrot + + 2004-05-10 Benoßt Perrot + + Provide backend implementation of the print_err primitive. + + * src/codegen/mips/runtime.s: Provide MIPS assembly implementation + of print_err. + * src/codegen/tiger-runtime.c: Provide C implementation of print_err. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2097 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-13 Akim Demaille + + 2005-05-13 Akim Demaille + + Allow implicit construction of Temps/Labels from string literals. + + * temp/identifier.hcc, temp/identifier.hh (Identifier (const char*)): + New constructor, to allow seamless (implicit) constructions of + Temps/Labels from plain strings. + * codegen/mips/test-rw_prg.cc, target/cpu.cc, target/ia32-cpu.cc, + * target/mips-cpu.cc, temp/test-temp.cc, translate/level.cc, + * translate/translate-visitor.cc, translate/translation.cc: + Simplify by removal of useless explicit constructor calls. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2096 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-13 Roland Levillain + + 2005-05-13 Roland Levillain + + New task: raw-desugar. + + * configure.ac: Bump to 0.88a. + * NEWS: Likewise. + Update. + * src/desugar/tasks.hh, src/desugar/tasks.hh (raw_desugar): New + task. + * src/desugar/libdesugar.hh, src/desugar/libdesugar.cc + (raw_desugar): New function. + (desugar): Use it. + * src/desugar/desugar-visitor.cc + (operator() (const ast::ForExp&)): Silently hide it. + Fix comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2095 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-13 Akim Demaille + + 2005-05-13 Akim Demaille + + Simplify misc::Map, drop misc::put support. + + * src/misc/map.hcc (operator[]): Rewrite it so that when first + used for t, t is mapped onto itself. This save the annoying + gratuitous instantiation of Temps (or Labels). + * src/misc/map.hh (key_type, mapped_type, key_compare): Remove. + * src/misc/map.hh, src/misc/map.hcc (lower_bound, upper_bound) + (insert, key_comp): Remove. + * src/target/mips-cpu.cc (MipsCpu::MipsCpu): Use + temp::TempMap::operator[] instead of misc::put. + * src/temp/test-temp.cc: Likewise. + Simplify the names. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2094 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-13 Roland Levillain + + 2005-05-13 Roland Levillain + + * tests/tc-check.in (grade_output): Aesthetic changes in output of + empty tests. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2093 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-12 Roland Levillain + + 2005-05-12 Roland Levillain + + Enrich the test suite wrt overloading. + + * configure.ac (AC_CONFIG_FILES): tests/overload-type/Makefile. + * tests/Makefile.am (SUBDIRS): Add overload-type. + * tests/mk-Makefile-am: Generate overload-type/Makefile.am. + Generate outputs for overload. + * tests/overload/overload-builtin.-e.s, + * tests/overload/overload-builtin.-e.u.s, + * tests/overload/overload-builtin.hir, + * tests/overload/overload-builtin.hpr, + * tests/overload/overload-builtin.lir, + * tests/overload/overload-builtin.lpr, + * tests/overload/overload-builtin.out, + * tests/overload/overload-builtin.s, + * tests/overload/overload-builtin.sta, + * tests/overload/overload-builtin.u.s, + * tests/overload/overload-function.-e.s, + * tests/overload/overload-function.-e.u.s, + * tests/overload/overload-function.hir, + * tests/overload/overload-function.hpr, + * tests/overload/overload-function.lir, + * tests/overload/overload-function.lpr, + * tests/overload/overload-function.out, + * tests/overload/overload-function-record-arg.-e.s, + * tests/overload/overload-function-record-arg.-e.u.s, + * tests/overload/overload-function-record-arg.hir, + * tests/overload/overload-function-record-arg.hpr, + * tests/overload/overload-function-record-arg.lir, + * tests/overload/overload-function-record-arg.lpr, + * tests/overload/overload-function-record-arg.out, + * tests/overload/overload-function-record-arg.s, + * tests/overload/overload-function-record-arg.sta, + * tests/overload/overload-function-record-arg.u.s, + * tests/overload/overload-function.s, + * tests/overload/overload-function.sta, + * tests/overload/overload-function.u.s, + * tests/overload/overload-nil-diambiguated.-e.s, + * tests/overload/overload-nil-diambiguated.-e.u.s, + * tests/overload/overload-nil-diambiguated.hir, + * tests/overload/overload-nil-diambiguated.hpr, + * tests/overload/overload-nil-diambiguated.lir, + * tests/overload/overload-nil-diambiguated.lpr, + * tests/overload/overload-nil-diambiguated.out, + * tests/overload/overload-nil-diambiguated.s, + * tests/overload/overload-nil-diambiguated.sta, + * tests/overload/overload-nil-diambiguated.u.s, + * tests/overload/overload-var-type-inference.-e.s, + * tests/overload/overload-var-type-inference.-e.u.s, + * tests/overload/overload-var-type-inference.hir, + * tests/overload/overload-var-type-inference.hpr, + * tests/overload/overload-var-type-inference.lir, + * tests/overload/overload-var-type-inference.lpr, + * tests/overload/overload-var-type-inference.out, + * tests/overload/overload-var-type-inference.s, + * tests/overload/overload-var-type-inference.sta, + * tests/overload/overload-var-type-inference.u.s: New (generated) + files. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2092 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-12 Roland Levillain + + 2005-05-12 Roland Levillain + + Have misc::put work with misc::Map<>, and use it to fix + temporaries produced by the code generator. + + * src/misc/map.hh (key_type, mapped_type, value_type) + (key_compare): New typedefs. + * src/misc/map.hh, src/misc/map.hcc (lower_bound, upper_bound) + (insert, key_comp): New methods. + * src/target/mips-cpu.cc (MipsCpu::MipsCpu): Use misc::put instead + of temp::TempMap::operator[]. + * src/temp/test-temp.cc (main): Adjust test. + * src/temp/fwd.hh, src/temp/label.hh, src/temp/temp.hh, + * src/temp/identifier.hh: Clean up inclusions of Boost headers. + + * tests/escapes/for-lower.-e.s, tests/escapes/for-lower.-e.u.s, + * tests/escapes/for-lower.hir, tests/escapes/for-lower.lir, + * tests/escapes/for-lower.s, tests/escapes/for-lower.u.s, + * tests/escapes/formal-escapes.-e.s, + * tests/escapes/formal-escapes.-e.u.s, + * tests/escapes/formal-escapes.hir, + * tests/escapes/formal-escapes.lir, tests/escapes/formal-escapes.s, + * tests/escapes/formal-escapes.u.s, tests/escapes/for-scope.-e.s, + * tests/escapes/for-scope.-e.u.s, tests/escapes/for-scope.hir, + * tests/escapes/for-scope.lir, tests/escapes/for-scope.s, + * tests/escapes/for-scope.u.s, tests/escapes/for-upper.-e.s, + * tests/escapes/for-upper.-e.u.s, tests/escapes/for-upper.hir, + * tests/escapes/for-upper.lir, tests/escapes/for-upper.s, + * tests/escapes/for-upper.u.s, tests/escapes/local-escapes.-e.s, + * tests/escapes/local-escapes.-e.u.s, + * tests/escapes/local-escapes.hir, tests/escapes/local-escapes.lir, + * tests/escapes/local-escapes.s, tests/escapes/local-escapes.u.s, + * tests/escapes/no-functiondec-at-all.-e.s, + * tests/escapes/no-functiondec-at-all.-e.u.s, + * tests/escapes/no-functiondec-at-all.hir, + * tests/escapes/no-functiondec-at-all.lir, + * tests/escapes/no-functiondec-at-all.s, + * tests/escapes/no-functiondec-at-all.u.s, + * tests/escapes/record-escapes.-e.s, + * tests/escapes/record-escapes.-e.u.s, + * tests/escapes/record-escapes.hir, + * tests/escapes/record-escapes.lir, tests/escapes/record-escapes.s, + * tests/escapes/record-escapes.u.s, tests/escapes/recursion.-e.s, + * tests/escapes/recursion.-e.u.s, tests/escapes/recursion.hir, + * tests/escapes/recursion.lir, tests/escapes/recursion.s, + * tests/escapes/recursion.u.s, tests/escapes/redeclaration.-e.s, + * tests/escapes/redeclaration.-e.u.s, + * tests/escapes/redeclaration.hir, tests/escapes/redeclaration.lir, + * tests/escapes/redeclaration.s, tests/escapes/redeclaration.u.s, + * tests/escapes/rhs-of-a-vardec.-e.s, + * tests/escapes/rhs-of-a-vardec.-e.u.s, + * tests/escapes/rhs-of-a-vardec.hir, + * tests/escapes/rhs-of-a-vardec.lir, + * tests/escapes/rhs-of-a-vardec.s, + * tests/escapes/rhs-of-a-vardec.u.s, tests/escapes/scopes.-e.s, + * tests/escapes/scopes.-e.u.s, tests/escapes/scopes.hir, + * tests/escapes/scopes.lir, tests/escapes/scopes.s, + * tests/escapes/scopes.u.s, tests/escapes/sl-propagation-1.-e.s, + * tests/escapes/sl-propagation-1.-e.u.s, + * tests/escapes/sl-propagation-1.hir, + * tests/escapes/sl-propagation-1.lir, + * tests/escapes/sl-propagation-1.s, + * tests/escapes/sl-propagation-1.u.s, + * tests/escapes/sl-propagation-2.-e.s, + * tests/escapes/sl-propagation-2.-e.u.s, + * tests/escapes/sl-propagation-2.hir, + * tests/escapes/sl-propagation-2.lir, + * tests/escapes/sl-propagation-2.s, + * tests/escapes/sl-propagation-2.u.s, + * tests/escapes/variable-escapes.-e.s, + * tests/escapes/variable-escapes.-e.u.s, + * tests/escapes/variable-escapes.hir, + * tests/escapes/variable-escapes.lir, + * tests/escapes/variable-escapes.s, + * tests/escapes/variable-escapes.u.s, + * tests/escapes/variable-inside-for-body.-e.s, + * tests/escapes/variable-inside-for-body.-e.u.s, + * tests/escapes/variable-inside-for-body.hir, + * tests/escapes/variable-inside-for-body.lir, + * tests/escapes/variable-inside-for-body.s, + * tests/escapes/variable-inside-for-body.u.s, + * tests/escapes/variant-escapes.-e.s, + * tests/escapes/variant-escapes.-e.u.s, + * tests/escapes/variant-escapes.hir, + * tests/escapes/variant-escapes.lir, + * tests/escapes/variant-escapes.s, + * tests/escapes/variant-escapes.u.s, tests/good/array.-e.s, + * tests/good/array.-e.u.s, tests/good/array.hir, + * tests/good/array.lir, tests/good/array-of-alias.-e.s, + * tests/good/array-of-alias.-e.u.s, tests/good/array-of-alias.hir, + * tests/good/array-of-alias.lir, tests/good/array-of-alias.s, + * tests/good/array-of-alias.u.s, tests/good/array.s, + * tests/good/array.u.s, + * tests/good/assign-and-array-instantiation.-e.s, + * tests/good/assign-and-array-instantiation.-e.u.s, + * tests/good/assign-and-array-instantiation.hir, + * tests/good/assign-and-array-instantiation.lir, + * tests/good/assign-and-array-instantiation.s, + * tests/good/assign-and-array-instantiation.u.s, + * tests/good/assign-void.-e.s, tests/good/assign-void.-e.u.s, + * tests/good/assign-void.hir, tests/good/assign-void.lir, + * tests/good/assign-void.s, tests/good/assign-void.u.s, + * tests/good/assign-vs-boolean.-e.s, + * tests/good/assign-vs-boolean.-e.u.s, + * tests/good/assign-vs-boolean.hir, + * tests/good/assign-vs-boolean.lir, tests/good/assign-vs-boolean.s, + * tests/good/assign-vs-boolean.u.s, tests/good/assign-vs-rel.-e.s, + * tests/good/assign-vs-rel.-e.u.s, tests/good/assign-vs-rel.hir, + * tests/good/assign-vs-rel.lir, tests/good/assign-vs-rel.s, + * tests/good/assign-vs-rel.u.s, tests/good/basic-import.-e.s, + * tests/good/basic-import.-e.u.s, tests/good/basic-import.hir, + * tests/good/basic-import.lir, tests/good/basic-import.s, + * tests/good/basic-import.u.s, tests/good/bempel_j.-e.s, + * tests/good/bempel_j.-e.u.s, tests/good/bempel_j.hir, + * tests/good/bempel_j.lir, tests/good/bempel_j.s, + * tests/good/bempel_j.u.s, tests/good/big-exp.-e.s, + * tests/good/big-exp.-e.u.s, tests/good/big-exp.hir, + * tests/good/big-exp.lir, tests/good/big-exp.s, + * tests/good/big-exp.u.s, tests/good/big-lvalue.-e.s, + * tests/good/big-lvalue.-e.u.s, tests/good/big-lvalue.hir, + * tests/good/big-lvalue.lir, tests/good/big-lvalue.s, + * tests/good/big-lvalue.u.s, tests/good/boolean-1.-e.s, + * tests/good/boolean-1.-e.u.s, tests/good/boolean-1.hir, + * tests/good/boolean-1.lir, tests/good/boolean-1.s, + * tests/good/boolean-1.u.s, tests/good/boolean-2.-e.s, + * tests/good/boolean-2.-e.u.s, tests/good/boolean-2.hir, + * tests/good/boolean-2.lir, tests/good/boolean-2.s, + * tests/good/boolean-2.u.s, tests/good/break-in-for.-e.s, + * tests/good/break-in-for.-e.u.s, tests/good/break-in-for.hir, + * tests/good/break-in-for.lir, tests/good/break-in-for.s, + * tests/good/break-in-for.u.s, tests/good/break-in-while.-e.s, + * tests/good/break-in-while.-e.u.s, tests/good/break-in-while.hir, + * tests/good/break-in-while.lir, tests/good/break-in-while.s, + * tests/good/break-in-while.u.s, tests/good/builtins.-e.s, + * tests/good/builtins.-e.u.s, tests/good/builtins.hir, + * tests/good/builtins.lir, tests/good/builtins.s, + * tests/good/builtins.u.s, tests/good/call.-e.s, + * tests/good/call.-e.u.s, tests/good/call.hir, tests/good/call.lir, + * tests/good/call.s, tests/good/call.u.s, tests/good/chr-256.-e.s, + * tests/good/chr-256.-e.u.s, tests/good/chr-256.hir, + * tests/good/chr-256.lir, tests/good/chr-256.s, + * tests/good/chr-256.u.s, tests/good/chr.-e.s, + * tests/good/chr.-e.u.s, tests/good/chr.hir, tests/good/chr.lir, + * tests/good/chr-minus-1.-e.s, tests/good/chr-minus-1.-e.u.s, + * tests/good/chr-minus-1.hir, tests/good/chr-minus-1.lir, + * tests/good/chr-minus-1.s, tests/good/chr-minus-1.u.s, + * tests/good/chr.s, tests/good/chr.u.s, + * tests/good/comments-javalike-nested.-e.s, + * tests/good/comments-javalike-nested.-e.u.s, + * tests/good/comments-javalike-nested.hir, + * tests/good/comments-javalike-nested.lir, + * tests/good/comments-javalike-nested.s, + * tests/good/comments-javalike-nested.u.s, + * tests/good/comments-nested.-e.s, + * tests/good/comments-nested.-e.u.s, tests/good/comments-nested.hir, + * tests/good/comments-nested.lir, tests/good/comments-nested.s, + * tests/good/comments-nested.u.s, + * tests/good/comments-with-comment-chars.-e.s, + * tests/good/comments-with-comment-chars.-e.u.s, + * tests/good/comments-with-comment-chars.hir, + * tests/good/comments-with-comment-chars.lir, + * tests/good/comments-with-comment-chars.s, + * tests/good/comments-with-comment-chars.u.s, + * tests/good/comments-with-parens.-e.s, + * tests/good/comments-with-parens.-e.u.s, + * tests/good/comments-with-parens.hir, + * tests/good/comments-with-parens.lir, + * tests/good/comments-with-parens.s, + * tests/good/comments-with-parens.u.s, + * tests/good/comments-with-quotes.-e.s, + * tests/good/comments-with-quotes.-e.u.s, + * tests/good/comments-with-quotes.hir, + * tests/good/comments-with-quotes.lir, + * tests/good/comments-with-quotes.s, + * tests/good/comments-with-quotes.u.s, + * tests/good/commutation-1.-e.s, tests/good/commutation-1.-e.u.s, + * tests/good/commutation-1.hir, tests/good/commutation-1.lir, + * tests/good/commutation-1.s, tests/good/commutation-1.u.s, + * tests/good/commutation-2.-e.s, tests/good/commutation-2.-e.u.s, + * tests/good/commutation-2.hir, tests/good/commutation-2.lir, + * tests/good/commutation-2.s, tests/good/commutation-2.u.s, + * tests/good/compare-nil-and-record.-e.s, + * tests/good/compare-nil-and-record.-e.u.s, + * tests/good/compare-nil-and-record.hir, + * tests/good/compare-nil-and-record.lir, + * tests/good/compare-nil-and-record.s, + * tests/good/compare-nil-and-record.u.s, + * tests/good/compare-record-and-nil.-e.s, + * tests/good/compare-record-and-nil.-e.u.s, + * tests/good/compare-record-and-nil.hir, + * tests/good/compare-record-and-nil.lir, + * tests/good/compare-record-and-nil.s, + * tests/good/compare-record-and-nil.u.s, + * tests/good/compare-record-and-record.-e.s, + * tests/good/compare-record-and-record.-e.u.s, + * tests/good/compare-record-and-record.hir, + * tests/good/compare-record-and-record.lir, + * tests/good/compare-record-and-record.s, + * tests/good/compare-record-and-record.u.s, + * tests/good/compare-void.-e.s, tests/good/compare-void.-e.u.s, + * tests/good/compare-void.hir, tests/good/compare-void.lir, + * tests/good/compare-void.s, tests/good/compare-void.u.s, + * tests/good/complex-import.-e.s, tests/good/complex-import.-e.u.s, + * tests/good/complex-import.hir, tests/good/complex-import.lir, + * tests/good/complex-import.s, tests/good/complex-import.u.s, + * tests/good/concat.-e.s, tests/good/concat.-e.u.s, + * tests/good/concat.hir, tests/good/concat.lir, tests/good/concat.s, + * tests/good/concat.u.s, tests/good/concurrent-arguments.-e.s, + * tests/good/concurrent-arguments.-e.u.s, + * tests/good/concurrent-arguments.hir, + * tests/good/concurrent-arguments.lir, + * tests/good/concurrent-arguments.s, + * tests/good/concurrent-arguments.u.s, tests/good/donald.-e.s, + * tests/good/donald.-e.u.s, tests/good/donald.hir, + * tests/good/donald.lir, tests/good/donald.s, tests/good/donald.u.s, + * tests/good/empty-let-body.-e.s, tests/good/empty-let-body.-e.u.s, + * tests/good/empty-let-body.hir, tests/good/empty-let-body.lir, + * tests/good/empty-let-body.s, tests/good/empty-let-body.u.s, + * tests/good/empty-record-type.-e.s, + * tests/good/empty-record-type.-e.u.s, + * tests/good/empty-record-type.hir, + * tests/good/empty-record-type.lir, tests/good/empty-record-type.s, + * tests/good/empty-record-type.u.s, tests/good/escaping-record.-e.s, + * tests/good/escaping-record.-e.u.s, tests/good/escaping-record.hir, + * tests/good/escaping-record.lir, tests/good/escaping-record.s, + * tests/good/escaping-record.u.s, tests/good/evalexp.-e.s, + * tests/good/evalexp.-e.u.s, tests/good/evalexp.hir, + * tests/good/evalexp.lir, tests/good/evalexp.s, + * tests/good/evalexp.u.s, tests/good/exit-51.-e.s, + * tests/good/exit-51.-e.u.s, tests/good/exit-51.hir, + * tests/good/exit-51.lir, tests/good/exit-51.s, + * tests/good/exit-51.u.s, tests/good/explicit-record-type.-e.s, + * tests/good/explicit-record-type.-e.u.s, + * tests/good/explicit-record-type.hir, + * tests/good/explicit-record-type.lir, + * tests/good/explicit-record-type.s, + * tests/good/explicit-record-type.u.s, tests/good/fact.-e.s, + * tests/good/fact.-e.u.s, tests/good/fact.hir, tests/good/fact.lir, + * tests/good/fact.s, tests/good/fact.u.s, + * tests/good/field-of-field.-e.s, tests/good/field-of-field.-e.u.s, + * tests/good/field-of-field.hir, tests/good/field-of-field.lir, + * tests/good/field-of-field.s, tests/good/field-of-field.u.s, + * tests/good/for.-e.s, tests/good/for.-e.u.s, + * tests/good/for-high-computed-once.-e.s, + * tests/good/for-high-computed-once.-e.u.s, + * tests/good/for-high-computed-once.hir, + * tests/good/for-high-computed-once.lir, + * tests/good/for-high-computed-once.s, + * tests/good/for-high-computed-once.u.s, + * tests/good/for-high-same-name-as-index.-e.s, + * tests/good/for-high-same-name-as-index.-e.u.s, + * tests/good/for-high-same-name-as-index.hir, + * tests/good/for-high-same-name-as-index.lir, + * tests/good/for-high-same-name-as-index.s, + * tests/good/for-high-same-name-as-index.u.s, tests/good/for.hir, + * tests/good/for-in-let.-e.s, tests/good/for-in-let.-e.u.s, + * tests/good/for-in-let.hir, tests/good/for-in-let.lir, + * tests/good/for-in-let.s, tests/good/for-in-let.u.s, + * tests/good/for-in-while.-e.s, tests/good/for-in-while.-e.u.s, + * tests/good/for-in-while.hir, tests/good/for-in-while.lir, + * tests/good/for-in-while.s, tests/good/for-in-while.u.s, + * tests/good/for.lir, tests/good/for.s, tests/good/for-scope.-e.s, + * tests/good/for-scope.-e.u.s, tests/good/for-scope.hir, + * tests/good/for-scope.lir, tests/good/for-scope.s, + * tests/good/for-scope.u.s, tests/good/for-up-to-32bits.-e.s, + * tests/good/for-up-to-32bits.-e.u.s, + * tests/good/for-up-to-32bits.hir, tests/good/for-up-to-32bits.lir, + * tests/good/for-up-to-32bits.s, tests/good/for-up-to-32bits.u.s, + * tests/good/for.u.s, tests/good/forward-fun-and-type-decl.-e.s, + * tests/good/forward-fun-and-type-decl.-e.u.s, + * tests/good/forward-fun-and-type-decl.hir, + * tests/good/forward-fun-and-type-decl.lir, + * tests/good/forward-fun-and-type-decl.s, + * tests/good/forward-fun-and-type-decl.u.s, + * tests/good/four-hex-backslash.-e.s, + * tests/good/four-hex-backslash.-e.u.s, + * tests/good/four-hex-backslash.hir, + * tests/good/four-hex-backslash.lir, + * tests/good/four-hex-backslash.s, + * tests/good/four-hex-backslash.u.s, + * tests/good/fractions-underloaded.-e.s, + * tests/good/fractions-underloaded.-e.u.s, + * tests/good/fractions-underloaded.hir, + * tests/good/fractions-underloaded.lir, + * tests/good/fractions-underloaded.s, + * tests/good/fractions-underloaded.u.s, tests/good/functions.-e.s, + * tests/good/functions.-e.u.s, tests/good/functions.hir, + * tests/good/functions.lir, tests/good/functions.s, + * tests/good/functions.u.s, tests/good/fun-vs-var.-e.s, + * tests/good/fun-vs-var.-e.u.s, tests/good/fun-vs-var.hir, + * tests/good/fun-vs-var.lir, tests/good/fun-vs-var.s, + * tests/good/fun-vs-var.u.s, tests/good/getchar.-e.s, + * tests/good/getchar.-e.u.s, tests/good/getchar.hir, + * tests/good/getchar.lir, tests/good/getchar-no-static-string.-e.s, + * tests/good/getchar-no-static-string.-e.u.s, + * tests/good/getchar-no-static-string.hir, + * tests/good/getchar-no-static-string.lir, + * tests/good/getchar-no-static-string.s, + * tests/good/getchar-no-static-string.u.s, tests/good/getchar.s, + * tests/good/getchar.u.s, tests/good/if-and-bool.-e.s, + * tests/good/if-and-bool.-e.u.s, tests/good/if-and-bool.hir, + * tests/good/if-and-bool.lir, tests/good/if-and-bool.s, + * tests/good/if-and-bool.u.s, tests/good/if-and-if.-e.s, + * tests/good/if-and-if.-e.u.s, tests/good/if-and-if.hir, + * tests/good/if-and-if.lir, tests/good/if-and-if.s, + * tests/good/if-and-if.u.s, tests/good/if-and-rel.-e.s, + * tests/good/if-and-rel.-e.u.s, tests/good/if-and-rel.hir, + * tests/good/if-and-rel.lir, tests/good/if-and-rel.s, + * tests/good/if-and-rel.u.s, tests/good/if.-e.s, + * tests/good/if.-e.u.s, tests/good/if.hir, tests/good/if.lir, + * tests/good/if.s, tests/good/if.u.s, tests/good/if-void-body.-e.s, + * tests/good/if-void-body.-e.u.s, tests/good/if-void-body.hir, + * tests/good/if-void-body.lir, tests/good/if-void-body.s, + * tests/good/if-void-body.u.s, tests/good/init-array.-e.s, + * tests/good/init-array.-e.u.s, tests/good/init-array.hir, + * tests/good/init-array.lir, tests/good/init-array.s, + * tests/good/init-array.u.s, tests/good/initialize-to-nil.-e.s, + * tests/good/initialize-to-nil.-e.u.s, + * tests/good/initialize-to-nil.hir, + * tests/good/initialize-to-nil.lir, tests/good/initialize-to-nil.s, + * tests/good/initialize-to-nil.u.s, tests/good/int-comparison.-e.s, + * tests/good/int-comparison.-e.u.s, tests/good/int-comparison.hir, + * tests/good/int-comparison.lir, tests/good/int-comparison.s, + * tests/good/int-comparison.u.s, tests/good/int-var-ordering.-e.s, + * tests/good/int-var-ordering.-e.u.s, + * tests/good/int-var-ordering.hir, tests/good/int-var-ordering.lir, + * tests/good/int-var-ordering.s, tests/good/int-var-ordering.u.s, + * tests/good/invisible-valid-types.-e.s, + * tests/good/invisible-valid-types.-e.u.s, + * tests/good/invisible-valid-types.hir, + * tests/good/invisible-valid-types.lir, + * tests/good/invisible-valid-types.s, + * tests/good/invisible-valid-types.u.s, + * tests/good/just-a-simple-for-1.-e.s, + * tests/good/just-a-simple-for-1.-e.u.s, + * tests/good/just-a-simple-for-1.hir, + * tests/good/just-a-simple-for-1.lir, + * tests/good/just-a-simple-for-1.s, + * tests/good/just-a-simple-for-1.u.s, + * tests/good/just-a-simple-for-2.-e.s, + * tests/good/just-a-simple-for-2.-e.u.s, + * tests/good/just-a-simple-for-2.hir, + * tests/good/just-a-simple-for-2.lir, + * tests/good/just-a-simple-for-2.s, + * tests/good/just-a-simple-for-2.u.s, tests/good/letexp-eseq.-e.s, + * tests/good/letexp-eseq.-e.u.s, tests/good/letexp-eseq.hir, + * tests/good/letexp-eseq.lir, tests/good/letexp-eseq.s, + * tests/good/letexp-eseq.u.s, tests/good/let-in-for-init.-e.s, + * tests/good/let-in-for-init.-e.u.s, tests/good/let-in-for-init.hir, + * tests/good/let-in-for-init.lir, tests/good/let-in-for-init.s, + * tests/good/let-in-for-init.u.s, + * tests/good/let-scope-for-functions.-e.s, + * tests/good/let-scope-for-functions.-e.u.s, + * tests/good/let-scope-for-functions.hir, + * tests/good/let-scope-for-functions.lir, + * tests/good/let-scope-for-functions.s, + * tests/good/let-scope-for-functions.u.s, + * tests/good/let-scope-for-types.-e.s, + * tests/good/let-scope-for-types.-e.u.s, + * tests/good/let-scope-for-types.hir, + * tests/good/let-scope-for-types.lir, + * tests/good/let-scope-for-types.s, + * tests/good/let-scope-for-types.u.s, + * tests/good/local-vs-global-type.-e.s, + * tests/good/local-vs-global-type.-e.u.s, + * tests/good/local-vs-global-type.hir, + * tests/good/local-vs-global-type.lir, + * tests/good/local-vs-global-type.s, + * tests/good/local-vs-global-type.u.s, tests/good/many-args.-e.s, + * tests/good/many-args.-e.u.s, tests/good/many-args.hir, + * tests/good/many-args.lir, tests/good/many-args.s, + * tests/good/many-args.u.s, tests/good/many-bool-ops.-e.s, + * tests/good/many-bool-ops.-e.u.s, tests/good/many-bool-ops.hir, + * tests/good/many-bool-ops.lir, tests/good/many-bool-ops.s, + * tests/good/many-bool-ops.u.s, tests/good/many-functions.-e.s, + * tests/good/many-functions.-e.u.s, tests/good/many-functions.hir, + * tests/good/many-functions.lir, tests/good/many-functions.s, + * tests/good/many-functions.u.s, tests/good/many-vars.-e.s, + * tests/good/many-vars.-e.u.s, tests/good/many-vars.hir, + * tests/good/many-vars.lir, tests/good/many-vars.s, + * tests/good/many-vars.u.s, tests/good/merge.-e.s, + * tests/good/merge.-e.u.s, tests/good/merge.hir, + * tests/good/merge.lir, tests/good/merge.s, tests/good/merge.u.s, + * tests/good/mutually-recursive-functions.-e.s, + * tests/good/mutually-recursive-functions.-e.u.s, + * tests/good/mutually-recursive-functions.hir, + * tests/good/mutually-recursive-functions.lir, + * tests/good/mutually-recursive-functions.s, + * tests/good/mutually-recursive-functions.u.s, + * tests/good/mutually-recursive-procedures.-e.s, + * tests/good/mutually-recursive-procedures.-e.u.s, + * tests/good/mutually-recursive-procedures.hir, + * tests/good/mutually-recursive-procedures.lir, + * tests/good/mutually-recursive-procedures.s, + * tests/good/mutually-recursive-procedures.u.s, + * tests/good/nil-as-arg.-e.s, tests/good/nil-as-arg.-e.u.s, + * tests/good/nil-as-arg.hir, tests/good/nil-as-arg.lir, + * tests/good/nil-as-arg.s, tests/good/nil-as-arg.u.s, + * tests/good/nil-as-return-value.-e.s, + * tests/good/nil-as-return-value.-e.u.s, + * tests/good/nil-as-return-value.hir, + * tests/good/nil-as-return-value.lir, + * tests/good/nil-as-return-value.s, + * tests/good/nil-as-return-value.u.s, tests/good/nine.-e.s, + * tests/good/nine.-e.u.s, tests/good/nine.hir, tests/good/nine.lir, + * tests/good/nine.s, tests/good/nine.u.s, + * tests/good/non-commutative-move-mem-expr.-e.s, + * tests/good/non-commutative-move-mem-expr.-e.u.s, + * tests/good/non-commutative-move-mem-expr.hir, + * tests/good/non-commutative-move-mem-expr.lir, + * tests/good/non-commutative-move-mem-expr.s, + * tests/good/non-commutative-move-mem-expr.u.s, + * tests/good/nul-character.-e.s, tests/good/nul-character.-e.u.s, + * tests/good/nul-character.hir, tests/good/nul-character.lir, + * tests/good/nul-character.s, tests/good/nul-character.u.s, + * tests/good/of-precedence.-e.s, tests/good/of-precedence.-e.u.s, + * tests/good/of-precedence.hir, tests/good/of-precedence.lir, + * tests/good/of-precedence.s, tests/good/of-precedence.u.s, + * tests/good/order-strings.-e.s, tests/good/order-strings.-e.u.s, + * tests/good/order-strings.hir, tests/good/order-strings.lir, + * tests/good/order-strings.s, tests/good/order-strings.u.s, + * tests/good/precedence.-e.s, tests/good/precedence.-e.u.s, + * tests/good/precedence.hir, tests/good/precedence.lir, + * tests/good/precedence.s, tests/good/precedence.u.s, + * tests/good/preincrement.-e.s, tests/good/preincrement.-e.u.s, + * tests/good/preincrement.hir, tests/good/preincrement.lir, + * tests/good/preincrement.s, tests/good/preincrement.u.s, + * tests/good/print-chr-ord.-e.s, tests/good/print-chr-ord.-e.u.s, + * tests/good/print-chr-ord.hir, tests/good/print-chr-ord.lir, + * tests/good/print-chr-ord.s, tests/good/print-chr-ord.u.s, + * tests/good/print-tree.-e.s, tests/good/print-tree.-e.u.s, + * tests/good/print-tree.hir, tests/good/print-tree.lir, + * tests/good/print-tree.s, tests/good/print-tree.u.s, + * tests/good/queens.-e.s, tests/good/queens.-e.u.s, + * tests/good/queens.hir, tests/good/queens.lir, tests/good/queens.s, + * tests/good/queens.u.s, tests/good/record.-e.s, + * tests/good/record.-e.u.s, tests/good/record.hir, + * tests/good/record.lir, tests/good/record.s, tests/good/record.u.s, + * tests/good/recursive-type.-e.s, tests/good/recursive-type.-e.u.s, + * tests/good/recursive-type.hir, tests/good/recursive-type.lir, + * tests/good/recursive-type.s, tests/good/recursive-types.-e.s, + * tests/good/recursive-types.-e.u.s, tests/good/recursive-types.hir, + * tests/good/recursive-types.lir, + * tests/good/recursive-types-mutual.-e.s, + * tests/good/recursive-types-mutual.-e.u.s, + * tests/good/recursive-types-mutual.hir, + * tests/good/recursive-types-mutual.lir, + * tests/good/recursive-types-mutual.s, + * tests/good/recursive-types-mutual.u.s, + * tests/good/recursive-types.s, tests/good/recursive-types.u.s, + * tests/good/recursive-type.u.s, tests/good/redefine-print.-e.s, + * tests/good/redefine-print.-e.u.s, tests/good/redefine-print.hir, + * tests/good/redefine-print.lir, tests/good/redefine-print.s, + * tests/good/redefine-print.u.s, tests/good/rel.-e.s, + * tests/good/rel.-e.u.s, tests/good/rel.hir, tests/good/rel.lir, + * tests/good/rel.s, tests/good/rel.u.s, + * tests/good/scopes-protect-types.-e.s, + * tests/good/scopes-protect-types.-e.u.s, + * tests/good/scopes-protect-types.hir, + * tests/good/scopes-protect-types.lir, + * tests/good/scopes-protect-types.s, + * tests/good/scopes-protect-types.u.s, + * tests/good/scopes-protect-vars.-e.s, + * tests/good/scopes-protect-vars.-e.u.s, + * tests/good/scopes-protect-vars.hir, + * tests/good/scopes-protect-vars.lir, + * tests/good/scopes-protect-vars.s, + * tests/good/scopes-protect-vars.u.s, + * tests/good/seqexp-arithmetics.-e.s, + * tests/good/seqexp-arithmetics.-e.u.s, + * tests/good/seqexp-arithmetics.hir, + * tests/good/seqexp-arithmetics.lir, + * tests/good/seqexp-arithmetics.s, + * tests/good/seqexp-arithmetics.u.s, + * tests/good/shadowing-functions.-e.s, + * tests/good/shadowing-functions.-e.u.s, + * tests/good/shadowing-functions.hir, + * tests/good/shadowing-functions.lir, + * tests/good/shadowing-functions.s, + * tests/good/shadowing-functions.u.s, + * tests/good/shadowing-types-separate.-e.s, + * tests/good/shadowing-types-separate.-e.u.s, + * tests/good/shadowing-types-separate.hir, + * tests/good/shadowing-types-separate.lir, + * tests/good/shadowing-types-separate.s, + * tests/good/shadowing-types-separate.u.s, + * tests/good/side-effects.-e.s, tests/good/side-effects.-e.u.s, + * tests/good/side-effects.hir, tests/good/side-effects-in-init.-e.s, + * tests/good/side-effects-in-init.-e.u.s, + * tests/good/side-effects-in-init.hir, + * tests/good/side-effects-in-init.lir, + * tests/good/side-effects-in-init.s, + * tests/good/side-effects-in-init.u.s, + * tests/good/side-effects-in-sxp.-e.s, + * tests/good/side-effects-in-sxp.-e.u.s, + * tests/good/side-effects-in-sxp.hir, + * tests/good/side-effects-in-sxp.lir, + * tests/good/side-effects-in-sxp.s, + * tests/good/side-effects-in-sxp.u.s, tests/good/side-effects.lir, + * tests/good/side-effects.s, tests/good/side-effects.u.s, + * tests/good/single-variable.-e.s, + * tests/good/single-variable.-e.u.s, tests/good/single-variable.hir, + * tests/good/single-variable.lir, tests/good/single-variable.s, + * tests/good/single-variable.u.s, + * tests/good/so-many-args-in-rec-func.-e.s, + * tests/good/so-many-args-in-rec-func.-e.u.s, + * tests/good/so-many-args-in-rec-func.hir, + * tests/good/so-many-args-in-rec-func.lir, + * tests/good/so-many-args-in-rec-func.s, + * tests/good/so-many-args-in-rec-func.u.s, tests/good/strcmp.-e.s, + * tests/good/strcmp.-e.u.s, tests/good/strcmp.hir, + * tests/good/strcmp.lir, tests/good/strcmp.s, tests/good/strcmp.u.s, + * tests/good/string-backslash-char.-e.s, + * tests/good/string-backslash-char.-e.u.s, + * tests/good/string-backslash-char.hir, + * tests/good/string-backslash-char.lir, + * tests/good/string-backslash-char.s, + * tests/good/string-backslash-char.u.s, + * tests/good/string-backslash-octal.-e.s, + * tests/good/string-backslash-octal.-e.u.s, + * tests/good/string-backslash-octal.hir, + * tests/good/string-backslash-octal.lir, + * tests/good/string-backslash-octal.s, + * tests/good/string-backslash-octal.u.s, + * tests/good/string-backslash-tortured.-e.s, + * tests/good/string-backslash-tortured.-e.u.s, + * tests/good/string-backslash-tortured.hir, + * tests/good/string-backslash-tortured.lir, + * tests/good/string-backslash-tortured.s, + * tests/good/string-backslash-tortured.u.s, + * tests/good/string-huge.-e.s, tests/good/string-huge.-e.u.s, + * tests/good/string-huge.hir, tests/good/string-huge.lir, + * tests/good/string-huge.s, tests/good/string-huge.u.s, + * tests/good/string-int-not-keywords.-e.s, + * tests/good/string-int-not-keywords.-e.u.s, + * tests/good/string-int-not-keywords.hir, + * tests/good/string-int-not-keywords.lir, + * tests/good/string-int-not-keywords.s, + * tests/good/string-int-not-keywords.u.s, + * tests/good/string-simple-quotes.-e.s, + * tests/good/string-simple-quotes.-e.u.s, + * tests/good/string-simple-quotes.hir, + * tests/good/string-simple-quotes.lir, + * tests/good/string-simple-quotes.s, + * tests/good/string-simple-quotes.u.s, + * tests/good/string-var-comparing.-e.s, + * tests/good/string-var-comparing.-e.u.s, + * tests/good/string-var-comparing.hir, + * tests/good/string-var-comparing.lir, + * tests/good/string-var-comparing.s, + * tests/good/string-var-comparing.u.s, + * tests/good/string-var-ordering.-e.s, + * tests/good/string-var-ordering.-e.u.s, + * tests/good/string-var-ordering.hir, + * tests/good/string-var-ordering.lir, + * tests/good/string-var-ordering.s, + * tests/good/string-var-ordering.u.s, + * tests/good/stupid-array-type.-e.s, + * tests/good/stupid-array-type.-e.u.s, + * tests/good/stupid-array-type.hir, + * tests/good/stupid-array-type.lir, tests/good/stupid-array-type.s, + * tests/good/stupid-array-type.u.s, + * tests/good/substring-copy-all.-e.s, + * tests/good/substring-copy-all.-e.u.s, + * tests/good/substring-copy-all.hir, + * tests/good/substring-copy-all.lir, + * tests/good/substring-copy-all.s, + * tests/good/substring-copy-all.u.s, + * tests/good/substring-copy-nothing.-e.s, + * tests/good/substring-copy-nothing.-e.u.s, + * tests/good/substring-copy-nothing.hir, + * tests/good/substring-copy-nothing.lir, + * tests/good/substring-copy-nothing.s, + * tests/good/substring-copy-nothing.u.s, tests/good/substring.-e.s, + * tests/good/substring.-e.u.s, tests/good/substring.hir, + * tests/good/substring.lir, tests/good/substring.s, + * tests/good/substring-too-high-sum.-e.s, + * tests/good/substring-too-high-sum.-e.u.s, + * tests/good/substring-too-high-sum.hir, + * tests/good/substring-too-high-sum.lir, + * tests/good/substring-too-high-sum.s, + * tests/good/substring-too-high-sum.u.s, + * tests/good/substring-too-low-first.-e.s, + * tests/good/substring-too-low-first.-e.u.s, + * tests/good/substring-too-low-first.hir, + * tests/good/substring-too-low-first.lir, + * tests/good/substring-too-low-first.s, + * tests/good/substring-too-low-first.u.s, + * tests/good/substring-too-low-length.-e.s, + * tests/good/substring-too-low-length.-e.u.s, + * tests/good/substring-too-low-length.hir, + * tests/good/substring-too-low-length.lir, + * tests/good/substring-too-low-length.s, + * tests/good/substring-too-low-length.u.s, tests/good/substring.u.s, + * tests/good/test27.-e.s, tests/good/test27.-e.u.s, + * tests/good/test27.hir, tests/good/test27.lir, tests/good/test27.s, + * tests/good/test27.u.s, tests/good/test30.-e.s, + * tests/good/test30.-e.u.s, tests/good/test30.hir, + * tests/good/test30.lir, tests/good/test30.s, tests/good/test30.u.s, + * tests/good/test37.-e.s, tests/good/test37.-e.u.s, + * tests/good/test37.hir, tests/good/test37.lir, tests/good/test37.s, + * tests/good/test37.u.s, tests/good/test42.-e.s, + * tests/good/test42.-e.u.s, tests/good/test42.hir, + * tests/good/test42.lir, tests/good/test42.s, tests/good/test42.u.s, + * tests/good/test44.-e.s, tests/good/test44.-e.u.s, + * tests/good/test44.hir, tests/good/test44.lir, tests/good/test44.s, + * tests/good/test44.u.s, tests/good/three-name-spaces.-e.s, + * tests/good/three-name-spaces.-e.u.s, + * tests/good/three-name-spaces.hir, + * tests/good/three-name-spaces.lir, tests/good/three-name-spaces.s, + * tests/good/three-name-spaces.u.s, tests/good/types-aliases.-e.s, + * tests/good/types-aliases.-e.u.s, tests/good/types-aliases.hir, + * tests/good/types-aliases.lir, tests/good/types-aliases.s, + * tests/good/types-aliases.u.s, + * tests/good/var-bob-is-another-bob.-e.s, + * tests/good/var-bob-is-another-bob.-e.u.s, + * tests/good/var-bob-is-another-bob.hir, + * tests/good/var-bob-is-another-bob.lir, + * tests/good/var-bob-is-another-bob.s, + * tests/good/var-bob-is-another-bob.u.s, + * tests/good/var-override.-e.s, tests/good/var-override.-e.u.s, + * tests/good/var-override.hir, tests/good/var-override.lir, + * tests/good/var-override.s, tests/good/var-override.u.s, + * tests/good/while-in-while.-e.s, tests/good/while-in-while.-e.u.s, + * tests/good/while-in-while.hir, tests/good/while-in-while.lir, + * tests/good/while-in-while.s, tests/good/while-in-while.u.s: + Regen, because of recent changes in the high-level intermediate + representation (HIR) and because of the lower-case `main' + identifier. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2091 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-11 Roland Levillain + + 2005-05-11 Roland Levillain + + Version 0.88. + For 2007-tc-5.0. + + * configure.ac, NEWS: Version 0.88. + * src/temp/identifier.hh (Identifier): Some more documentation. + * src/temp/identifier.hcc, src/translate/translate-visitor.cc, + * src/translate/translation.cc: Hide more code. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2090 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-11 Yoann Fabre + + 2005-05-11 Arnaud Fabre + + * src/temp/identifier.hcc (print): Remove dead code. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2089 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-11 Roland Levillain + + 2005-05-11 Roland Levillain + + Fix tcsh wrt the introduction of timers in modules. + + * tcsh/python/test.py (tempmap): Adjust call to + tc.regalloc.allocate_registers new signature. + * src/tiger_common.i: Export timer. + * src/misc/timer.hh (clocks_per_sec_): Rename as... + * src/misc/timer.hh (clocks_per_sec): ...this. + Make it a class member. + * src/misc/timer.cc (clocks_per_sec): Initialize it. + (timeinfo, dump): Adjust users. + Wrap lines longer than 80 columns. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2088 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-11 Yoann Fabre + + 2005-05-11 Arnaud Fabre + + Fix compilation error. + + * src/temp/temp.cc, src/temp/label.cc (Temp::count_, Label::count_): + Fix declaration. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2087 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-11 Roland Levillain + + 2005-05-11 Roland Levillain + + Have the configuration system check for Boost library. + + * configure.ac: Check Boost headers presence. + Add option --with-boost to allow user-defined Boost paths. + Aesthetic changes. + * src/translate/tasks.hh (hir-compute): Always depend on type. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2086 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-10 Roland Levillain + + 2005-05-10 Roland Levillain + + Have Argp work with recent versions of the C Standard Library. + + * argp.h (__NTH): New macro. + Use it to place __THROW at the right place. + * argp-parse.c: Likewise. + Reported by Michaël Cadilhac. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2085 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-10 Roland Levillain + + 2005-05-10 Roland Levillain + + Simplify Tree and make it more uniform. + + * src/tree/binop.hh (Oper::plus): Rename as... + (Oper::add): ...this. + (Oper::minus): Rename as... + (Oper::sub): ...this. + * src/tree/binop.cc: Adjust. + Do not enclose operator in parens. + (tag_print): Print keywords instead of symbols. + * src/frame/access.cc, src/translate/translation.cc: Adjust. + * src/codegen/ia32/codegen.cc, src/codegen/mips/codegen.cc + (munchStore, munchLoad, build_fragment_entry_exit) + * src/codegen/ia32/gas-assembly.cc (binop_build) + * src/codegen/mips/spim-assembly.cc (binop_inst): Adjust. + * src/codegen/codegen.cc: Adjust Doxygen header. + + * src/ast/ast.yml (FunctionDec): s/__main__/main/. + * src/translate/translate-visitor.cc: Likewise. + * tests/tc-check.in (graph_check_one): Likewise. + (TranslateVisitor::TranslateVisitor): Remove useless + initializations. + * src/ast/function-dec.hh: Regen. + * src/codegen/ia32/gas-layout.cc + (operator() (const assem::ProcFrag&) + * src/codegen/mips/spim-layout.cc + (operator() (const assem::ProcFrag&)): Don't handle `main' as a + special case. + * src/assem/fragment.cc (tree_label2asm_label): Remove function. + (ProcFrag::print): Use Label::string_get instead of + tree_label2asm_label. + * src/temp/test-temp.cc: Adjust test. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2084 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-10 Roland Levillain + + 2005-05-10 Roland Levillain + + Implement temp::Identifier using boost::variant instead of + inclusion polymorphism. Remove factories for temp::Temp and + temp::Label, since they are no longer needed to build and manage + these objects. + + * src/temp/identifier.hh, src/temp/identifier.hcc + (Identifier): Make this class concrete, and get concrete methods + from TaggedIdentifier. + (TaggedIdentifier): Remove class. + (Identifier::value_): New. + Use a boost::variant to store the actual value of an identifier + (either an unsigned or a symbol::Symbol). + (Identifier::prefix_, Identifier::rank_): New members. + (Identifier::count_): New static member. + (Identifier::Identifier ()) + (Identifier::Identifier (const symbol::Symbol&)) + (Identifier::Identifier (const std::string&)) + (Identifier::Identifier (const Identifier&)): New ctors. + (operator=): New. + (IdentifierCompareVisitor): New variant visitor. + (operator==, operator<): Use it to reimplement these. + (identifier_ptr_less): Remove functor. + * src/temp/label.hh, src/temp/label.cc (LabelFactory) + (label_ptr_less): Remove. + (Label::count_): New static member definition. + * src/temp/temp.hh, src/temp/temp.cc (TempFactory, temp_ptr_less): + Remove. + (Temp::count_): New static member definition. + * src/temp/fwd.hh: Update. + * src/temp/factory.hh, src/temp/factory.hcc: Remove files. + * src/temp/Makefile.am (libtemp_la_SOURCES): Remove factory.hh and + factory.hcc. + * src/misc/map.h, src/misc/map.hcc, + * src/temp/list.hh, src/temp/list.hcc: Store plain objects instead + of pointers. + + * src/temp/temp-set.cc, src/temp/temp-set.hh, + * src/assem/fragment.cc, src/assem/fragment.hh, + * src/assem/fragment.hxx, src/assem/instr.cc, src/assem/instr.hh, + * src/assem/label.hh, src/assem/label.hxx, src/assem/move.hh, + * src/assem/move.hxx, src/canon/basic-block.cc, + * src/canon/basic-block.hh, src/canon/canon.cc, src/canon/traces.cc, + * src/canon/traces.hh, src/codegen/ia32/codegen.cc, + * src/codegen/ia32/codegen.hh, src/codegen/ia32/gas-assembly.cc, + * src/codegen/ia32/gas-layout.cc, src/codegen/mips/codegen.cc, + * src/codegen/mips/codegen.hh, src/codegen/mips/spim-assembly.cc, + * src/frame/access.cc, src/frame/access.hh, src/frame/access.hxx, + * src/frame/frame.cc, src/frame/frame.hh, + * src/liveness/flowgraph.hxx, src/liveness/interference-graph.cc, + * src/liveness/interference-graph.hh, + * src/liveness/test-flowgraph.cc, src/regalloc/color.cc, + * src/regalloc/color.hh, src/target/cpu.cc, src/target/ia32-cpu.cc, + * src/target/mips-cpu.cc, src/translate/exp.cc, + * src/translate/exp.hh, src/translate/level.cc, + * src/translate/level.hh, src/translate/translate-visitor.cc, + * src/translate/translate-visitor.hh, src/translate/translation.cc, + * src/tree/cjump.hh, src/tree/cjump.hxx, src/tree/fragment.hh, + * src/tree/fragment.hxx, src/tree/jump.hxx, src/tree/label.hh, + * src/tree/label.hxx, src/tree/name.hh, src/tree/name.hxx, + * src/tree/temp.hh, src/tree/temp.hxx: Adjust. + Use plain objects for temp and labels instead of const references + and pointers. + * src/temp/test-temp.cc: Adjust test. + + * src/symbol/symbol.hh (operator=): New. + (str_): Make this member a pointer to a string instead of a + reference. + * src/symbol/symbol.hxx (name_get, operator==, operator<): Adjust. + (operator=): New. + * src/symbol/symbol.cc (Symbol::Symbol) Adjust ctor. + + * configure.ac (TC_CXX_WARNINGS): Use -Wno-shadow instead of + -Wshadow to pacify g++ on Boost Variants code. + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2083 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-09 Yoann Fabre + + 2005-05-10 Arnaud Fabre + + Update documentation in tree/. + + * src/tree/seq.hh, src/tree/stm.hh, + * src/tree/fragment.hh, src/tree/binop.hxx, + * src/tree/name.hh, src/tree/binop.cc, + * src/tree/eseq.hh, src/tree/move.hh, + * src/tree/sxp.hh, src/tree/mem.hh, + * src/tree/libtree.hh, src/tree/const.hh, + * src/tree/temp.hh, src/tree/binop.hh, + * src/tree/jump.hh, src/tree/cjump.hh, + * src/tree/exp.hh, src/tree/call.hh, + * src/tree/label.hh: Add comments. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2082 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-09 Gilles Walbrou + + 2005-05-10 Gilles Walbrou + + Factor list handling in temp. + + * src/temp/list.hh, src/temp/list.hcc: New. Factor list handling + in temp. + * src/temp/temp-list.cc, src/temp/temp-list.hh, + * src/temp/temp-list.hxx, src/temp/label-list.cc, + * src/temp/label-list.hh: Remove. + * src/assem/instr.cc, src/assem/instr.hh, src/assem/move.hxx, + * src/canon/basic-block.cc, src/canon/traces.cc, + * src/codegen/ia32/codegen.cc, src/codegen/ia32/gas-assembly.cc, + * src/codegen/mips/codegen.cc, src/codegen/mips/spim-assembly.cc, + * src/target/cpu.cc, src/target/cpu.hh, src/temp/Makefile.am, + * src/temp/fwd.hh, temp/label-list.cc, temp/label-list.hh, + * src/temp/label.cc, src/temp/temp.cc, src/tree/cjump.hh, + * src/tree/cjump.hxx, src/tree/jump.hh: Adjust. + * src/temp/test-temp.cc: Add a some tests for containers used in + temp. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2081 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-09 Yoann Fabre + + 2005-05-09 Arnaud Fabre + + Check that no tasks are running when merging Timers. + + * src/misc/timer.cc (Timer (const Timer&)): Precondition on running + tasks. + (operator<< (const Timer& rhs)): Formatting change. Added comment. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2080 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-09 Yoann Fabre + + 2005-05-09 Arnaud Fabre + + Put Timer in namespace misc. + + * src/misc/timer.hh, src/misc/timer.hxx, src/misc/timer.cc + (Timer):Declare class Timer in namespace misc. + * src/common.hh, src/liveness/flowgraph.hxx, + * src/liveness/libliveness.cc, src/liveness/interference-graph.hh, + * src/liveness/flowgraph.hh, src/liveness/interference-graph.cc, + * src/liveness/libliveness.hh, src/regalloc/regallocator.cc, + * src/regalloc/color.cc, src/regalloc/libregalloc.cc, + * src/regalloc/color.hh, src/regalloc/regallocator.hh, + * src/regalloc/libregalloc.hh, src/task/task-register.hh, + * src/task/task-register.hxx, src/common.cc: Adjust. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2079 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-08 Yoann Fabre + + 2005-05-09 Arnaud Fabre + + Make tc-check able to check overloading of tarballs with no asm + output capabilities. + + * tests/tc-check.in (overload_check_one, overload_check): New + functions. Check overloading the same way bindings are checked. + (load_tests): Use overload_check for testing overload, not + nolimips_check. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2078 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-08 Yoann Fabre + + 2005-05-09 Arnaud Fabre + + Add support for streq in tiger runtime. + + * src/codegen/mips/runtime.s (streq): New builtin. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2077 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-08 Akim Demaille + + 2005-05-08 Akim + + * src/type/type-visitor.hh, src/type/type-visitor.cc + (type_recovery): + Remove, replaced by... + (error_and_recover): this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2076 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-08 Yoann Fabre + + 2005-05-08 Arnaud Fabre + + Do not use timer global variable in modules. + Remove common.cc from libtc. + + Add support for merging to Timer. + + * src/misc/timer.cc, src/misc/timer.hh (Timer::Timer): Initialize + dump_stream. + (Timer::Timer (const Timer&)): New copy constructor. + (Timer::opartor<< (const Timer&)): New operator overloading. + * src/misc/fwd.hh (Timer): Forward declare it. + + Make objects have their own Timer. + + * src/liveness/flowgraph.hh, src/liveness/flowgraph.hxx + (timer_get): New member function. + (timer_): New member. + (FlowGraph::FlowGraph): Use it. + * src/liveness/liveness.cc (Liveness): Use member timer_. + * src/liveness/interference-graph.hh, + * src/liveness/interference-graph.cc (timer_get): New member function. + (timer_): New attribute. + (compute_liveness): Use it. + * src/regalloc/regallocator.cc, src/regalloc/regallocator.hh + (timer_get): New member function. + (timer_): New member. + (operator() (assem::ProcFrag& frag)): Report time spent in color. + * src/regalloc/color.cc, src/regalloc/color.hh (DO): Use local + variable timer_ instead of global timer. + (Color::Color): Report time spent for computing interference graph. + (timer_get): New function member. + (timer_): New member. + * src/task/task-register.hh (timer_get): New function member. + (timer_): New member. + * src/task/task-register.cc (execute): Use it. + * src/task/task-register.hxx: New file. + + Update libraries accordingly. + + * src/liveness/libliveness.cc, src/liveness/libliveness.hh + (flowgraph_dump, liveness_dump, interference_dump): New argument + timer. + * src/regalloc/libregalloc.cc, src/regalloc/libregalloc.hh + (allocate_registers): New argument timer. + + Make tasks report times from modules to global timer. + + * src/liveness/tasks.cc (flowgraph_dump, liveness_dump) + (interference_dump): Adjust. + * src/regalloc/tasks.cc (asm_compute): Adjust. + * src/tc.cc (main): Get time report of tasks module. + + Do no include common.cc in libtc. + + * src/Makefile.in (libtc_la_SOURCES): Move declaration of common.cc + and common.hh... + (dist_tc_SOURCES): ...here. + * src/task/Makefile.am (libtask_la_SOURCES): Adjust. + * src/liveness/test-flowgraph.cc (timer): Remove global variable. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2075 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-07 Akim Demaille + + 2005-05-07 Akim + + Simplify the handling of labels in fragments. + + * src/assem/fragment.hh, src/assem/fragment.cc, src/assem/fragment.hxx, + * src/tree/fragment.hh, src/tree/fragment.cc, src/tree/fragment.hxx: + (label_, label_get): Operate on temp::Label instead of tree::Label. + * src/codegen/ia32/gas-layout.cc, src/codegen/mips/spim-layout.cc, + * src/frame/frame.hh, src/translate/translation.cc: Adjust. + + * src/assem/fragment.hh, src/assem/fragment.cc (file_name): New. + * src/regalloc/color.cc, src/liveness/libliveness.cc: Use it. + + * src/translate/level.hh: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2074 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-06 Akim Demaille + + 2005-05-06 Akim Demaille + + * src/bind/bind-visitor.hh, src/type/type-visitor.hh, + * src/type/type-visitor.cc: Comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2073 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-05 Akim Demaille + + 2005-04-25 Akim + + * src/frame/frame.hh, src/frame/frame.cc (static_link): Remove, + this breaks the abstractions: Frames don't know about static links. + * src/translate/level.hh, src/translate/level.cc (fp_exp): Rename as... + (fp): this. + Adjust to the removal of static_link. + * src/translate/level.hh, src/translate/level.hxx, + * src/translate/level.cc (sl): New. + * src/translate/translation.cc, src/translate/translation.hh + (callExp): Factor the two shorthands. + Accept a string for label. + Use in callers. + (staticLink): New. + * src/translate/translate-visitor.cc: Adjust to these changes. + * src/translate/access.hh, src/translate/access.cc: Adjust. + Formatting changes. + + * src/temp/factory.hh: + * src/temp/identifier.hh (super_type): New. + Use it. + * src/temp/temp.hh: + + * src/tree/all.hh, src/tree/binop.hh, src/tree/binop.hxx, + * src/tree/call.cc, src/tree/call.hh, src/tree/cjump.hh, + * src/tree/cjump.hxx, src/tree/const.hh, src/tree/eseq.hh, + * src/tree/eseq.hxx, src/tree/exp.hh, src/tree/fragment.cc, + * src/tree/fragment.hh, src/tree/fragment.hxx, + * src/tree/fragments.cc, src/tree/fragments.hh, src/tree/jump.hxx, + * src/tree/label.hh, src/tree/mem.hh, src/tree/mem.hxx, + * src/tree/move.hh, src/tree/move.hxx, src/tree/name.hh, + * src/tree/seq.cc, src/tree/sxp.hh, src/tree/sxp.hxx, + * src/tree/temp.hh, src/tree/tree.cc, src/tree/tree.hh, + * src/tree/tree.hxx, src/tree/trees.cc, src/tree/trees.hh: Remove + the 'setters'. + Remove first_child_get and so forth: Use the one from Tree. + Adjust the callers to using child_push_back. + This simplifies the interface, and saves us from dirty iterator + handling. + Lots of formatting changes, but documentation is still needed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2072 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-04 Roland Levillain + + 2005-05-04 Roland Levillain + + * src/desugar/desugar-visitor.cc (operator() (const ast::OpExp&)): + Fix the use of streq when desugaring string inequality. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2071 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-04 Roland Levillain + + 2005-05-04 Roland Levillain + + * src/desugar/desugar-visitor.cc (desugar): Handle `break' + statements in `for' loops desugaring. + Suggested by Michaël Cadilhac. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2070 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-04 Roland Levillain + + 2005-05-04 Roland Levillain + + * src/misc/contract.cc [NDEBUG] (__FailedCondition): Enable this + function. + (__Terminate): Always define this function. + Reported by Michaël Cadilhac. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2069 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-05-04 Roland Levillain + + 2005-05-04 Roland Levillain + + * configure.ac: Bump to 0.87a. + Add --enable-desugar option, to allow hir-compute to depend on + desugar rather than just type. + * src/translate/tasks.hh (hir-compute) [ENABLE_DESUGAR]: Depend on + desugar. + (hir-compute) [!ENABLE_DESUGAR]: Depend on type. + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2068 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-27 Roland Levillain + + 2005-04-27 Roland Levillain + + Version 0.87. + For 2007-tc-4.2. + + * configure.ac, NEWS: Version 0.87. + * dev/stagize: Deliver astclone and desugar modules in TC-4 + student tarballs. + * src/desugar/desugar-visitor.hh, src/desugar/desugar-visitor.cc + (operator() (const ast::ForExp&)): Hide method. + * tests/tc-check.in (bindings_check): Pass --bind option to the + compiler, since --bindings-display no longer implies --bind. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2067 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-27 Yoann Fabre + + 2005-04-27 Arnaud Fabre + + * src/desugar/Makefile.am (test_string_cmp_desugar_CPPFLAGS) + (test_for_loops_desugar_CPPFLAGS): New variables. + * src/desugar/test-for-loops-desugar.cc, + * src/desugar/test-string-cmp-desugar.cc: Use parse_string member + function for creating AST. + + * src/astclone/Makefile.am (test_clone_visitor_LDADD): Update with + new dependancies. + (test_clone_visitor_CPPFLAGS): New variable. + * src/astclone/test-clone-visitor.cc (clone_ast): New function. + Use parse_string member function for creating AST. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2066 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-22 Akim Demaille + + 2005-04-22 Akim Demaille + + * src/parse/tasks.hh, src/parse/tasks.cc (no-prelude): New. + * src/overload/tasks.hh (-O): Same as --overfun-types-compute. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2065 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-22 Akim Demaille + + 2005-04-22 Akim Demaille + + * src/bind/tasks.hh (bind): -B does not imply -b as per TLRM. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2064 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-22 Akim Demaille + + 2005-04-22 Akim Demaille + + * src/desugar/desugar-visitor.cc (operator() (FunctionDec)): + Remember the first occurrence of streq and strcmp. + Others are no longer the primitives. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2063 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-22 Akim Demaille + + 2005-04-22 Akim Demaille + + Allow the comparison between a Symbol and a string. + + * symbol/symbol.hh, symbol/symbol.hxx (operator==, operator!=): + New. + * bind/bind-visitor.cc, src/type/type-visitor.cc, + * desugar/desugar-visitor.cc, symbol/test-symbol.cc: Use them. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2062 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-22 Akim Demaille + + 2005-04-22 Akim Demaille + + * src/ast/ast.yml: Name and description changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2061 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-22 Akim Demaille + + 2005-04-22 Akim Demaille + + * src/regalloc/tiger_regalloc.i, src/temp/tiger_temp.i: Fix + inclusion of map.hh. + * src/overload/liboverload.hh (overtable_type): Private. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2060 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-19 Akim Demaille + + 2005-04-19 Akim Demaille + + * src/misc/map.hcc: Include sstream, not strstream. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2059 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-19 Akim Demaille + + 2005-04-19 Akim + + TempMap are independent of Temp: move them to misc/. + + * src/temp/temp-map.hh, src/temp/temp-map.hcc: Move to... + * src/misc/map.hh, src/misc/map.hcc: here. + * src/temp/identifier.hh, src/temp/temp.cc, src/temp/label.cc, + * src/temp/temp.hh, src/temp/Makefile.am, src/temp/fwd.hh, + * src/temp/identifier.hcc, src/misc/ref.hxx, src/misc/Makefile.am, + * src/misc/fwd.hh: Adjust all dependencies. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2058 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-18 Roland Levillain + + 2005-04-18 Roland Levillain + + Use Python's imp module to factor module imports in tcsh. + + * tcsh/python/tc.py (try_import): New function. + Use it factor module imports. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2057 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-18 Akim Demaille + + 2005-04-18 Akim Demaille + + * src/type/types.hxx, src/type/types.cc: Comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2056 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-18 Roland Levillain + + 2005-04-18 Roland Levillain + + * tcsh/python/tc.py, tcsh/python/test.py, tcsh/python/ti.py: Use + Python's introspection mechanisms to check tc's available modules + instead of pruning them with studentize. + * dev/stagize: No longer use studentize to remove not available + Python modules. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2055 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-14 Akim Demaille + + 2005-04-14 Akim Demaille + + * src/parse/tasks.hh (prelude): Fix its documentation. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2054 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-14 Akim Demaille + + 2005-04-14 Akim Demaille + + Version 0.86. + For 2007-tc-4.1. + + * src/type/type-visitor.cc (type (const ast::fields_type&)): + Revert the previous change: it is too heavy and demonstrates that + binding formals should be done during binding. + * src/bind/bind-visitor.hh, src/bind/bind-visitor.cc + (redefinition): New. + (visitDecBody, decs_visit): Use it. + (visitDecBody): Check that formals are defined + only once, and bind only the first occurrence. + + * tests/type/duplicate-formal.tig: Move to... + * tests/bind/duplicate-formal.tig: here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2053 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-14 Akim Demaille + + 2005-04-14 Akim Demaille + + * src/type/type-visitor.cc (type (const ast::fields_type&)): + Revert the previous change: it is too heavy and demonstrates that + binding formals should be done during binding. + * src/bind/bind-visitor.hh, src/bind/bind-visitor.cc + (redefinition): New. + (visitDecBody, decs_visit): Use it. + (visitDecBody): Check that formals are defined + only once, and bind only the first occurrence. + + * tests/type/duplicate-formal.tig: Move to... + * tests/bind/duplicate-formal.tig: here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2052 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-14 Yoann Fabre + + 2005-04-14 Arnaud Fabre + + Improve handling of duplicate formals. + + * src/type/type-visitor.cc (type (const ast::fields_type&)): When + checking uniqueness of names, remember the last definition. + * tests/type/duplicate-formal.tig: Check the erroneous case that + wasn't correctly catched. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2051 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-14 Akim Demaille + + 2005-04-14 Akim Demaille + + Version 0.85. + For 2007-tc-4.0. + + * src/parse/tiger-parser.cc (parse_string_decs): Give it to + students. + + * src/type/tasks.hh (types-check): Rename as... + (types-compute): this. + (types-check-default): Rename as... + (type): this. + This is the one that is bound to -T. + * src/cppgen/tasks.hh, src/desugar/tasks.hh, src/overload/tasks.hh, + * src/translate/tasks.hh tests/tc-check.in: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2050 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-14 Akim Demaille + + 2005-04-14 Akim Demaille + + Version 0.85. + For 2007-tc-4.0. + + * src/type/tasks.hh (types-check): Rename as... + (types-compute): this. + (types-check-default): Rename as... + (type): this. + This is the one that is bound to -T. + * src/cppgen/tasks.hh, src/desugar/tasks.hh, src/overload/tasks.hh, + * src/translate/tasks.hh tests/tc-check.in: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2049 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-14 Akim Demaille + + 2005-04-14 Akim Demaille + + * src/desugar/desugar-visitor.cc: Minor changes. + * src/parse/libparse.cc (parse): Be sure to parse a file when + prelude != builtin. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2048 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-13 Yoann Fabre + + 2005-04-14 Arnaud Fabre + + No longer use and install prelude.tih. Make tc self-contained. + + * src/parse/tasks.hh (prelude): Default value is builtin. + Adjust documentation. + * src/parse/libparse.cc (parse): Parse prelude in a string, not + from a file. + * src/parse/tiger-parser.cc, src/parse/tiger-parser.hh + (parse_string_decs): New method. Parse a declaration list from a + string. + * src/parse/tiger-parser.hh (prelude): New method. Return + default prelude declarations. + * src/parse/Makefile.am (prelude.cc): New generated file. Create + it using data/prelude.tih. + (nodist_libparse_la_SOURCES): New variable. + * data/Makefile.am (dist_pkgdata_DATA): Rename as... + (dist_noinst_DATA): ...this. No longer need to install + prelude.tih. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2047 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-12 Roland Levillain + + 2005-04-12 Roland Levillain + + Hide the escapes modules to students' tcsh. + + * tcsh/python/tc.py, tcsh/python/test.py: Hide escapes-related + parts. + * src/ast/print-visitor.cc: Indent comments. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2046 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-12 Akim Demaille + + 2005-04-12 Akim Demaille + + * src/type/types.cc: Student marks adjustments. + (type_nesting_index): Make it const, to prevent students from ++ + and -- on it to count the nesting level... + * dev/studentize (studentize): Relaxes constraints on spaces for + documented << marks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2045 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-12 Akim Demaille + + 2005-04-12 Akim Demaille + + * src/misc/error.hh, src/task/task-register.hh, src/temp/map.hh, + * src/type/libtype.cc: Please Doxygen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2044 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-11 Roland Levillain + + 2005-04-11 Roland Levillain + + Check badly-typed OverTiger programs. + + * configure.ac: Bump to 0.84a. + * tests/tc-check.in (load_tests): s/overloading/overload/. + Don't use the tests/overload directory in TC-4 (type-checking) + tests, since these tests can exit with 4 or 5 with the Tiger + (i.e., not OverTiger) compiler. + (load_tests): Check badly-typed OverTiger programs. + * tests/overload-type/overfun-naive-redef.tig, + * tests/overload-type/overfun-nil-ambiguity.tig, + * tests/overload-type/overfun-redef.tig: New tests. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2043 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-11 Roland Levillain + + 2005-04-11 Roland Levillain + + Improve the behavior of the type-checker on nil ambiguity. + + * src/overload/type-visitor.cc + (TypeVisitor::operator() (ast::CallExp&)): Tag the node with a + type, even on nil ambiguity, to allow a proper continuation of the + type-checking. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2042 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-08 Akim Demaille + + 2005-04-08 Akim Demaille + + Version 0.84. + For 2007-tc-3.0. + + * configure.ac: Require tc 0.84 (correct parentheses with -A), + Nolimips 0.7, and GCC 3.4. + * src/parse/tiger_parse.i (parse): Fix the call to parse/5. + * callgraph/tiger_escapes.i: Include data on the visitors. + * callgraph/tiger_callgraph.i: Include data on the FunDec graph. + * src/bind/tasks.hh (bind): Don't mention overfun-bind to students. + * src/type/tasks.hh (type): Don't memtion overfun-types-check to + students. + * tcsh/python/ti.py: Use parse/3 instead parse/5. + * tests/Makefile.am (TC_CHECK_FLAGS): New. + (check-local): Use it to allow disabling Valgrind for instance. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2041 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-08 Akim Demaille + + 2005-04-08 Akim Demaille + + Fix tcsh's SEGV. + + * src/common.cc (error, program_name): Move to... + * src/tc.cc: here. + Don't ask why it cures the problem: for some reason loading + tiger_ast in python caused it to segv during the construction of + the global error handler (defined by common.cc). Since this + object was not needed in the modules (hence nor in the Python + modules), we simply defined it elsewhere, so that it does not have + to be built in the Python modules. And... it worked. + Dunno whether I should :) or :(. + + Adjust tcsh to parse::parse returning a pair. + + * src/parse/tiger_parse.i (parse/3): New. + I have not managed to use std_pair.i to directly fetch the outcome + from parse::parse, so this wrapper strips the pair in the C++ world. + * tcsh/python/test.py: Use parse/3 instead parse/5. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2040 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-08 Roland Levillain + + 2005-04-08 Roland Levillain + + Fix the tests of the desugar module. + + * src/tc.mk (libdesugar): Add $(libparse). + (libparse): Make it depend on $(libmisc). + * src/desugar/test-for-loops-desugar.cc (program_name), + * src/desugar/test-string-cmp-desugar.cc (program_name): New + global. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2039 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-08 Roland Levillain + + 2005-04-08 Roland Levillain + + * src/parse/tiger-parser.hh (allow_reserved_id_p_): Hide + attribute. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2038 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-08 Yoann Fabre + + 2005-04-08 Arnaud Fabre + + * src/parse/libparse.cc (parse): Fix forgotten + pop_current_directory. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2037 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-08 Akim Demaille + + 2005-04-08 Akim + + Enable Error member manipulators. Fixes various problems. + * src/misc/error.hh (Error::member_manip_type): Return type is + void. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2036 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-07 Roland Levillain + + 2005-04-07 Roland Levillain + + Aesthetic changes in the construction of TigerParser. + + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc + (TigerParser::TigerParser): Reorder arguments. + (TigerParser::TigerParser (bool)): New ctor. + * src/parse/libparse.cc (parse): Adjust caller. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2035 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-07 Roland Levillain + + 2005-04-07 Roland Levillain + + Improve the usability of the overload module, thanks to + disjunctive tasks providing default tasks for the computation of + the bindings and the type-checking. + + * src/bind/tasks.hh (bind-default): New disjunctive task. + * src/escapes/tasks.hh (escapes-compute): Let this task depend on + bind-default, not bind. + + * src/type/tasks.hh (types-check-default): New disjunctive task. + * src/translate/tasks.hh (hir-compute): Let this task depend on + types-check-default, not types-check. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2034 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-07 Roland Levillain + + 2005-04-07 Roland Levillain + + * src/parse/parsetiger.yy: Remove outdated comment. + * src/parse/parsetiger.hh, src/parse/parsetiger.cc: Regen. + * src/overload/liboverload.cc (overload): Remove useless cast. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2033 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-07 Roland Levillain + + 2005-04-07 Roland Levillain + + Introduce reserved identifiers, used by DesugarVisitor. + + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc + (allow_reserved_id_p_): New attribute. + (TigerParser::TigerParser): Adjust ctor. + Pass the FileLibrary by const reference, not by value (copy). + Provide default values for all arguments. + * src/parse/libparse.cc (parse): Adjust. + * src/desugar/desugar-visitor.cc + (operator() (const ast::ForExp&)): Adjust, and please G++ 3.3.5, + which didn't like the construction of misc::FileLibrary inside the + call to TigerParser's ctor. + Recurse on the children of a ForExp to desugar the whole tree + properly. + * src/parse/scantiger.ll: Handle reserved identifiers (beginning + with a `$'). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2032 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-07 Akim Demaille + + 2005-04-07 Akim Demaille + + Provide member manipulators to misc::Error. + + * src/parse/tasks.cc (parse): Only exit if the parsing yielded + nothing. + + * src/misc/error.hh, src/misc/error.hxx, src/misc/error.cc + (member_manip_type): New. + (Error::exit): New. + + * astclone/tasks.cc, bind/tasks.cc, desugar/tasks.cc, + * overload/tasks.cc, parse/tasks.cc, type/tasks.cc, + * src/parse/scantiger.ll: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2031 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-07 Roland Levillain + + 2005-04-07 Roland Levillain + + Clean up error handling in overload and desugar modules. + + * src/overload/liboverload.hh, src/overload/liboverload.cc + (types_check): Catch up with visitors' new functor interface. + (bind): Likewise. + Return both the bindings and the error status. + * src/overload/tasks.cc (overfun_bind): Adjust. + Use misc::exit_on_error; + + * src/desugar/libdesugar.hh, src/desugar/libdesugar.cc (desugar): + Return both the desugared tree and the error status. + * src/desugar/tasks.cc (desugar): Adjust. + + * src/parse/parsetiger.yy: Adjust/update comments. + * src/parse/parsetiger.hh: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2030 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-07 Yoann Fabre + + 2005-04-07 Arnaud Fabre + + Fix idempotence issue found by Tristan Carel . + + * src/ast/print-visitor.cc (operator() (IfExp&)) + (operator() (AssignExp&), operator() (WhileExp&)) + (operator() (ForExp&)): Parenthezise if, while, for and assignation + expression for ensuring idempotence of output. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2029 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-06 Akim Demaille + + Remove trailing debugging code. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2028 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-06 Akim Demaille + + 2005-04-06 Akim Demaille + + * src/desugar/desugar-visitor.cc: Use concrete syntax to handle + the case of for loops desugaring. + * src/desugar/libdesugar.cc: Handle error messages explicitly: + these routines now return true *on error*. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2027 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-06 Akim Demaille + + 2005-04-06 Akim Demaille + + * src/Makefile.am (AM_CPPFLAGS): Look for config.h and authors.h. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2026 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-06 Akim Demaille + + Slight wording changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2025 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-06 Akim Demaille + + 2005-04-06 Akim Demaille + + Enable string parsing. + + * src/parse/scantiger.ll: In C++ (void) is written (). + (scan_open, scan_close): Be ready to parse TigerParser::input_. + * src/parse/tiger-parser.cc, src/parse/tiger-parser.hh + (scan_open): No argument. + (input_, parse_string): New + (parse_program): Free the content to students. + * src/parse/test-parse.cc, src/bind/test-bind.cc: New. + * src/parse/Makefile.am: Adjust. + + * src/ast/libast.cc, src/ast/libast.hh: Student marks. + * src/ast/print-visitor.cc: Ditto. + + * configure.ac: Pass nostdinc to Automake to have shorter + compilation command lines. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2024 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-05 Akim Demaille + + 2005-04-05 Akim Demaille + + * src/bind/libbind.hh, src/bind/tasks.hh + * src/bind/bind-visitor.hh, src/bind/libbind.cc + * src/bind/tasks.cc, src/bind/bind-visitor.cc: Student marks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2023 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-04 Yoann Fabre + + Regen reference files in tests. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2022 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-04 Yoann Fabre + + 2005-04-04 Arnaud Fabre + + Desugar "exp | exp" and "exp & exp" in a clever way. + + * src/parse/parsetiger.yy (exp): Desugar using <> 0 instead of + nested if. + * src/parse/parsetiger.cc: Regen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2021 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-04 Yoann Fabre + + 2005-04-04 Arnaud Fabre + + * src/parse/Makefile.am (BISONXX_IN): Fix bison++.in location. + * dev/stagize (bison): Quoting is not required in a variable + affectation. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2020 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-03 Yoann Fabre + + 2005-04-03 Arnaud Fabre + + Deliver symbol tables test at TC-3 only. + + * src/symbol/test-symbol.cc: Add studentize tags around tables + test. + * dev/stagize: Keep code concerning bindings from TC-3 and up. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2019 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-03 Yoann Fabre + + 2005-04-03 Arnaud Fabre + + Fix discheck for TC-2. + + * src/parse/Makefile.am (BISONXX_IN): New variable. + (parsetiger.stamp): Depend on bison++.in instead of bison++, and + ensure bison++ is rebuilt. + * src/dev/stagize (bison): New variable for accessing bison++. + Use bison++ instead of bison for regeneraing parsetiger.cc. + * Makefile.am (dist-hook): Set top_builddir variable when + calling stagize. + + Fix code delivered to the students. + + * Makefile.am: Change studentize flags for hiding developpers + parts. + * config/stagize, config/studentize, config/studentize_test.yml, + * config/studentize_tc.conf, config/stats, config/reheader: Move + to... + * dev/stagize, dev/studentize, dev/studentize_test.yml, + * dev/studentize_tc.conf, dev/stats, dev/reheader: ...here. + * config/Makefile.am, dev/Makefile.am, Makefile.am: Adjust. + + Fix dev/stats. + + * dev/stats (dev): Look in that new directory. + (config): Some files have moved to dev. + (bison++): Count lines of bison++.in instead. + ($parse_dir/parse.hh): File no longer exists. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2018 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-02 Akim Demaille + + 2005-04-02 Akim Demaille + + * src/parse/Makefile.am (generate-parser): Hook to recreate + position.hh and location.hh. + It became too hard to try to build them directly from another + directory, as BSD Make could do see that, although the paths were + different, the files were the same. + * src/ast/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2017 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-01 Akim Demaille + + 2005-04-01 Akim + + * configure.ac: Bump to 0.83a. + * src/parse/Makefile.am (position.hh, location.hh): New targets, to + receive requests from parse/ for BSD Make. + * dev/Makefile.am: Typo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2016 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-01 Yoann Fabre + + 2005-04-01 Arnaud Fabre + + * src/translate/libtranslate.hh, src/translate/libtranslate.cc + * src/translate/tasks.cc (translate): Take an ast::Ast& instead of an + ast::Ast*. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2015 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-01 Akim Demaille + + 2005-04-01 Akim Demaille + + Version 0.83. + From 2007-tc-2.1. + + * config/stagize (stages_opts): Remove Libtool files. + * src/misc/error.cc (operator=): Fix the assignment of stream_. + From Gilles Walbrou. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2014 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-04-01 Akim Demaille + + 2005-04-01 Akim Demaille + + * src/tc.cc (main): In addition to catching std::exceptions, catch + misc::Errror. + At the end of the regular process, trigger the error handler. + * src/parse/scantiger.ll (scan_open): Fire the local error handler + when a file does not exist. + * src/misc/error (exit_on_error, exit): Throw the error handler + itself. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2013 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-31 Akim Demaille + + 2005-03-31 Akim + + Make the TigerParser handle the seed token. + + * src/parse/tiger-parser.hh (file_type): Remove, replaced by... + (seed_): this new attribute. + Adjust dependencies. + * src/parse/parse.hh: Remove, no longer used. + * src/parse/scantiger.ll (yylex): Remove, use again the regular + yylex which was renamed as flex_yylex for a while. + Instead, rely on %{ %} to insert code in the beginning of yylex. + And use tp.seed_ here. + (initial_token_): Remove. + Adjust dependencies. + + * src/misc/error.cc (operator=): Fix the copy of status_. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2012 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-31 Akim Demaille + + 2005-03-31 Akim + + Move scan_open and scan_close into the TigerParser. + + * src/parse/parse.hh, src/parse/scantiger.ll (scan_open, scan_close) + (FileType, states): Move + into... + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc (scan_open) + (scan_close, file_type, states_): here. + (scan_open): Simplify the prototype, now that we can see in + the TigerParser. + Remove the useless friend declaration. + * src/parse/tiger-parser.cc (parse_): Adjust. + * src/parse/fwd.hh (yy_buffer_state): New fwd decl. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2011 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-31 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2010 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-31 Akim Demaille + + 2005-03-31 Akim Demaille + + * src/misc/error.hh, src/misc/error.cc, src/misc/error.hxx: + (exit_on_error): Reintroduced as method. + (exit): New manipulator. + * src/bind/bind-visitor.hh,src/parse/scantiger.ll, src/tc.cc: Use + methods instead of manipulators where more elegant. + * src/parse/scantiger.ll (stack): Include it. + * src/parse/tasks.cc (parse): Use at_exit to register the removal + of the_program once for all. + * src/bind/tasks.cc, src/desugar/tasks.cc, src/overload/tasks.cc, + * src/parse/tasks.cc, src/type/tasks.cc, src/astclone/tasks.cc: + No longer delete the_program. + Use Error sugar. + + * src/escapes/libescapes.cc, src/parse/parsetiger.yy: + Don't include common.hh, which is impure. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2009 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-31 Akim Demaille + + 2005-03-31 Akim Demaille + + * config/bison++.in: Implement a work-around the lack of + %lex-param in C++ parsers. + * src/parse/parsetiger.yy: Call %lex-param. + Remove the ad hoc work around. + * src/parse/scantiger.ll: Likewise. + Remove common.hh, it is dirty and no longer needed. + (YY_DECL): Don't call it, done elsewhere now. + * src/parse/Makefile.am: Make sure bison++ is built when needed, + and forces an upgrade of the output. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2008 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-31 Roland Levillain + + 2005-03-31 Roland Levillain + + * src/ast/ast.yml (FunctionDec): Remove name_set. + * src/ast/function-dec.hh: Regen. + + * src/type/type-visitor.cc + (TypeVisitor::visitDecHeader) + (TypeVisitor::visitDecBody), + * src/overload/type-visitor.cc + (TypeVisitor::overfun_header_visit) + (TypeVisitor::overfun_body_visit): Rename result_type as + return_type to avoid shadowing a typedef of std::unary_function. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2007 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-31 Roland Levillain + + Add src/parse/fwd.hh (forgotten in revision 2005). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2006 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-31 Roland Levillain + + 2005-03-31 Roland Levillain + + Add a error_ member to TigerParser, and use it instead of the + global error. + + * src/parse/tiger-parser.hh (error_): New attribute. + Make YY_DECL and scan_open friends of TigerParser. + * src/parse/tiger-parser.cc (TigerParser): Adjust ctor. + (parse_import): Use the local error_ rather than the global error. + * src/parse/parsetiger.yy: Likewise. + Define yylex so that it can be passed a parsing context. + * src/parse/scantiger.ll: Likewise. + (scan_open): Add the parsing context as third argument. + * src/parse/parse.hh: Define flex_yylex and yylex so that they can + be passed a parsing context. + Declare YY_DECL. + * src/parse/tiger-parser.hh, src/parse/tiger-parser.cc + (error_get): New accessor. + * src/parse/fwd.hh: New file. + * src/parse/Makefile.am (libparse_la_SOURCES): Add fwd.hh. + * src/parse/libparse.hh, src/parse/libparse.cc (parse): Return a + pair, containing both the Ast and the error status. + * src/parse/tasks.cc (parse): Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2005 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-31 Roland Levillain + + 2005-03-31 Roland Levillain + + Turn exit_on_error into a manipulator of misc::Error. + + * src/misc/error.hh (manip_type): New typedef. + * src/misc/error.hh, src/misc/error.cc (exit_on_error): Turn + this method into a manipulator. + * src/astclone/tasks.cc, src/bind/tasks.cc, src/desugar/tasks.cc, + * src/overload/tasks.cc, src/parse/scantiger.ll, + * src/parse/tasks.cc, src/tc.cc, src/type/tasks.cc: Adjust. + * src/misc/test-error.cc (main): Update test. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2004 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-31 Akim Demaille + + 2005-03-31 Akim Demaille + + * src/tc.cc, src/parse/scantiger.ll: Stylistic changes. + * src/ast/Makefile.am: Fix dependencies on parsetiger.yy. + * dev/diff-r: More ignores. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2003 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-31 Akim Demaille + + 2005-03-31 Akim Demaille + + * dev/count-fixme-lines, dev/diff-r: New. + * Makefile.am, dev/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2002 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-31 Roland Levillain + + 2005-03-31 Roland Levillain + + Adjust dev/ast-readme-gen to the studentization process. + + * dev/ast-readme-gen: Don't fail on missing nodes; instead, + compute the list of available nodes before printing them. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@2001 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-30 Yoann Fabre + + 2005-03-30 Arnaud Fabre + + Fix code delivered to the students for TC-2. + + * config/stagize (kept_stages): Keep code concerning ast from TC-2. + * src/parse/libparse.hh, src/parse/parsetiger.hh, + * src/parse/parsetiger.yy, src/parse/tasks.cc: Change some tags from + <<- to + + 2005-03-30 Arnaud Fabre + + No longer generate visitor.hxx. + + * src/ast/visitor.hxx: No longer generated. Removed comment at the + beginning. + * dev/ast-visitor-gen: Do not write visitor.hxx. + * src/ast/Makefile.am: Adjust. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1999 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-30 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1998 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-30 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1997 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-30 Gilles Walbrou + + Update error handler. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1996 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-30 Yoann Fabre + + 2005-03-30 Arnaud Fabre + + Use clever variable names. + + * src/escapes/libescapes.cc (escapes_compute): + s/visitor/escapes_compute/. + * src/desugar/libdesugar.cc (desugar): s/desugar_visitor/desugar/. + * src/callgraph/libcallgraph.cc (escapes_find): + s/sl_visitor/static_link_compute/. + * src/bind/libbind.cc (bind): s/bind_visitor/bind/. + * src/ast/libast.cc (operator<< (std::ostream&, const Ast&)): + s/pv/print/. + * src/astclone/libastclone.hxx (clone): s/clone_visitor/clone/. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1995 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-30 Yoann Fabre + + 2005-03-30 Arnaud Fabre + + * src/translate/libtranslate.cc (translate): Fix regression: + code used an incorrect version of operator(). + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1994 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-30 Akim Demaille + + 2005-03-30 Akim Demaille + + * src/translate/translate-visitor.hh, + * src/translate/translate-visitor.cc (operator() (const ast::Ast&)): + New. + (fragments_get): Rely on it. + * src/translate/libtranslate.cc (translate): Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1993 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-30 Akim Demaille + + 2005-03-30 Akim Demaille + + * dev/ast-visitor-gen: Stylistic change. + * cppgen/cppgen-visitor.hh, cppgen/cppgen-visitor.cc + (generate): Replace with... + (operator() (const Ast&)): this. + * cppgen/libcppgen.hh, cppgen/libcppgen.cc: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1992 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-30 Yoann Fabre + + 2005-03-30 Arnaud Fabre + + Rename clone_collection to recurse_collection in CloneVisitor. + + * dev/ast-clone-visitor-gen, src/astclone/clone-visitor.hxx + (clone_collection): Rename to... + (recurse_collection): ...this. Add a comment. + * src/astclone/clone-visitor.cc, + * src/astclone/clone-visitor.hh: Regen. + * TODO: Update. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1991 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-30 Yoann Fabre + + Forgot to send diff of ast-visitor-gen in previous file + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1990 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-30 Yoann Fabre + + 2005-03-30 Arnaud Fabre + + Change GenVisitor so that it can be used as an STL functor. + + * dev/ast-visitor-gen + (operator() (typename Const::type&)): New method. + Make GenVisitor derive from std::unary_function. + Generate visitor.hxx file. + * src/ast/visitor.hh: Regen. + * src/ast/visitor.hxx: New generated file. + * src/type/libtype.cc, src/escapes/libescapes.cc, + * src/desugar/libdesugar.cc, src/callgraph/libcallgraph.cc, + * src/bind/libbind.cc, src/astclone/libastclone.hxx + (types_check, escapes_check, desugar) + (escapes_find, bind, clone): Launch visitor using function call syntax. + * src/ast/Makefile.am (BUILT_SOURCES_local): Add visitor.hxx. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1989 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-30 Gilles Walbrou + + Add the error handler. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1988 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-24 Roland Levillain + + 2005-03-24 Roland Levillain + + * src/type/types.hh, src/type/types.cc + (Function::compatible_with): Enclose in stagize silent tags. + * src/overload/type-visitor.hh: Aesthetic changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1987 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-24 Roland Levillain + + 2005-03-24 Roland Levillain + + Improve the detection of complete redefinitions of overloaded + functions. + + * src/type/types.hh, src/type/types.cc + (Function::compatible_with): New method. + * src/overload/type-visitor.cc (): Use it, and no longer rely on + any kind of mangling for prototype comparison. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1986 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-24 Roland Levillain + + 2005-03-24 Roland Levillain + + Have overload::BindVisitor compute all potential function + bindings. + + * src/overload/type-visitor.hh, src/overload/type-visitor.cc + (operator() (ast::ForExp&), operator() (ast::LetExp&)) + (scope_begin, scope_end): Remove methods. + * src/overload/type-visitor.hh (overtable_type): Move typedef... + * src/overload/bind-visitor.hh: ...here. + * src/overload/type-visitor.hh (overftable_): Rename and move + typedef... + * src/overload/bind-visitor.hh (overfuns_): ...here. + (overfun_bindings_type): New typedef. + (overfun_bindings_): New attribute. + * src/overload/bind-visitor.cc (BindVisitor): Initialize it in + ctor. + * src/overload/bind-visitor.hh, src/overload/bind-visitor.cc + (scope_begin, scope_end, visitDecHeader (ast::FunctionDec&)): New + methods. + (overfun_bindings_get): New accessor. + * src/overload/over-table.hh, src/overload/over-table.cc (get): + Return a list of FunctionDec's rather than a range of const + iterators. + Ensure the environment is not empty. + * src/overload/bind-visitor.cc (operator() (ast::CallExp&)): Adjust. + * src/bind/bind-visitor.hh (BindVisitor::funs_): Make it private. + (BindVisitor::BindVisitor ()): Adjust ctor. + * src/bind/bind-visitor.cc + (BindVisitor::visitDecBody ): Typo in comment. + + + Let overload::TypeVisitor use these potential bindings. + + * src/overload/type-visitor.hh, src/overload/type-visitor.cc + (TypeVisitor): Have the ctor take a list of bindings. + * src/overload/type-visitor.cc + (operator() (ast::FunctionDecs&), operator() (ast::CallExp&)): + Use function bindings, instead of the previous overfuns_ symbol + table. + No longer using mangling. + (overfun_body_visit): No longer handle scopes. + * src/overload/type-visitor.hh, src/overload/type-visitor.cc + (mangle): Remove method. + + + Adjust liboverload interface, as well as Overload module's tasks. + + * src/overload/liboverload.hh, src/overload/liboverload.cc + (overfun_bind): Rename as... + (bind): ...this. + Return the potential function bindings instead of a boolean. + (overfun_types_check): Rename as... + (types_check): ...this. + Take a list of potential function bindings + as second argument. + Return whether the type-checking succeeded or not. + * src/overload/tasks.hh, src/overload/tasks.cc + (overfun_bind): Adjust. + Store function bindings in it. + (overfun_types_check): Adjust. + Fetch function bindings from it. + (the_overfun_bindings): New global. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1985 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-24 Akim Demaille + + 2005-03-24 Akim Demaille + + Fix bison++ portability issues. + + * config/Makefile.am (nodist_noinst_SCRIPTS): Add bison++ so that + it is always updated. + * config/bison++.in: Don't rely on Bash nor GNU Sed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1984 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-23 Akim Demaille + + 2005-03-23 Akim Demaille + + Move AST generation code into dev/. + + * config/ast-clone-visitor-gen, config/ast-fwd-gen, + * config/ast-nodes-gen, config/ast-nodes-mk-gen, + * config/ast-readme-gen, config/ast-visitor-gen, config/ast.py, + * config/stagize, config/tools.py: + Move to... + * dev/ast-clone-visitor-gen, dev/ast-fwd-gen, + * dev/ast-nodes-gen, dev/ast-nodes-mk-gen, + * dev/ast-readme-gen, dev/ast-visitor-gen, dev/ast.py, + * dev/stagize, dev/tools.py: here... + + * bootstrap, config/Makefile.am, dev/Makefile.am, + * src/ast/Makefile.am, src/astclone/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1983 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-23 Roland Levillain + + 2005-03-23 Roland Levillain + + Rename overload::OverfunBindVisitor as overload::BindVisitor and + overload::OverfunTypeVisitor as overload::TypeVisitor. + + * configure.ac: Bump to 0.82a. + * src/overload/overfun-bind-visitor.hh, + * src/overload/overfun-bind-visitor.cc, + * src/overload/overfun-type-visitor.hh, + * src/overload/overfun-type-visitor.cc: Rename files as... + * src/overload/bind-visitor.hh, src/overload/bind-visitor.cc, + * src/overload/type-visitor.hh, src/overload/type-visitor.cc: + ...this. + Rename OverfunBindVisitor as BindVisitor. + Adjust Doxygen comments, inclusion guards and header inclusions. + * src/overload/Makefile.am (liboverload_la_SOURCES): Adjust. + * src/overload/liboverload.cc: Adjust. + + Remove overload::FunEntry. + + * src/overload/fun-entry.hh, src/overload/fun-entry.cc: Remove + files, useless. + * src/overload/Makefile.am (liboverload_la_SOURCES): Remove + fun-entry.hh and fun-entry.cc. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1982 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-23 Yoann Fabre + + 2005-03-23 Arnaud Fabre + + Fix tags so that make distcheck T=2 is ok. + + * src/ast/print-visitor.cc (operator() (const VarDec&, bool)): + Fix studentize tags. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1981 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-23 Roland Levillain + + 2005-03-23 Roland Levillain + + * config/stagize: Strip src/ast/parsetiger.output from student + tarballs. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1980 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-22 Akim Demaille + + 2005-03-22 Akim Demaille + + Version 0.82. + For 2007-tc-2.0. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1979 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-22 Gilles Walbrou + + Add some documentation for xalloc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1978 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-22 Roland Levillain + + 2005-03-22 Roland Levillain + + Have the AST node file names follow the Tiger Project's coding + style. + + * config/ast.py (Node.fname): Generate file names following the + Tiger Project's coding style. + * config/tools.py (file_id): Catch up. + * config/ast-nodes-mk-gen: Adjust. + * array-exp.cc, array-exp.hh, array-exp.hxx, array-ty.cc, + * array-ty.hh, array-ty.hxx, assign-exp.cc, assign-exp.hh, + * assign-exp.hxx, break-exp.cc, break-exp.hh, break-exp.hxx, + * call-exp.cc, call-exp.hh, call-exp.hxx, field-init.cc, + * field-init.hh, field-init.hxx, field-var.cc, field-var.hh, + * field-var.hxx, for-exp.cc, for-exp.hh, for-exp.hxx, + * function-dec.cc, function-dec.hh, function-dec.hxx, if-exp.cc, + * if-exp.hh, if-exp.hxx, int-exp.cc, int-exp.hh, int-exp.hxx, + * let-exp.cc, let-exp.hh, let-exp.hxx, name-ty.cc, name-ty.hh, + * name-ty.hxx, nil-exp.cc, nil-exp.hh, nil-exp.hxx, op-exp.cc, + * op-exp.hh, op-exp.hxx, print-visitor.yy, record-exp.cc, + * record-exp.hh, record-exp.hxx, record-ty.cc, record-ty.hh, + * record-ty.hxx, seq-exp.cc, seq-exp.hh, seq-exp.hxx, simple-var.cc, + * simple-var.hh, simple-var.hxx, string-exp.cc, string-exp.hh, + * string-exp.hxx, subscript-var.cc, subscript-var.hh, + * subscript-var.hxx, type-constructor.cc, type-constructor.hh, + * type-constructor.hxx, type-dec.cc, type-dec.hh, type-dec.hxx, + * var-dec.cc, var-dec.hh, var-dec.hxx, while-exp.cc, while-exp.hh, + * while-exp.hxx: New files (generated). + * arrayexp.hh, arrayexp.hxx, arrayexp.cc, arrayty.hh, arrayty.hxx, + * arrayty.cc, assignexp.hh, assignexp.hxx, assignexp.cc, + * breakexp.hh, breakexp.hxx, breakexp.cc, + * callexp.hh, callexp.hxx, callexp.cc, + * field.hh, field.hxx, field.cc, fieldinit.hh, + * fieldinit.hxx, fieldinit.cc, fieldvar.hh, fieldvar.hxx, + * fieldvar.cc, forexp.hh, forexp.hxx, forexp.cc, functiondec.hh, + * functiondec.hxx, functiondec.cc, ifexp.hh, ifexp.hxx, ifexp.cc, + * intexp.hh, intexp.hxx, intexp.cc, letexp.hh, letexp.hxx, + * letexp.cc, namety.hh, namety.hxx, namety.cc, nilexp.hh, + * nilexp.hxx, nilexp.cc, opexp.hh, opexp.hxx, opexp.cc, + * recordexp.hh, recordexp.hxx, recordexp.cc, recordty.hh, + * recordty.hxx, recordty.cc, seqexp.hh, seqexp.hxx, seqexp.cc, + * simplevar.hh, simplevar.hxx, simplevar.cc, stringexp.hh, + * stringexp.hxx, stringexp.cc, subscriptvar.hh, subscriptvar.hxx, + * subscriptvar.cc, typeconstructor.cc, typeconstructor.hh, + * typeconstructor.hxx, typedec.cc, typedec.hh, typedec.hxx, + * vardec.cc, vardec.hh, vardec.hxx, whileexp.cc, whileexp.hh, + * whileexp.hxx: Remove files. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1977 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-22 Akim Demaille + + 2005-03-22 Akim Demaille + + * src/translate/translation.cc, src/callgraph/fundec-graph.hh, + * src/callgraph/parent-graph-visitor.cc, + * src/callgraph/call-graph-visitor.cc, src/parse/libparse.cc, + * src/ast/whileexp.hh, src/ast/whileexp.hxx, src/ast/nilexp.hh, + * src/ast/letexp.hxx, src/ast/functiondec.hxx, + * src/ast/assignexp.hxx, src/ast/tiger_ast.i, src/ast/ifexp.hh, + * src/ast/field.hh, src/ast/typedec.cc, src/ast/anydecs.hh, + * src/ast/subscriptvar.hh, src/ast/breakexp.cc, src/ast/forexp.cc, + * src/ast/arrayty.hh, src/ast/arrayexp.hh, src/ast/stringexp.hxx, + * src/ast/namety.hh, src/ast/namety.hxx, src/ast/simplevar.hxx, + * src/ast/opexp.cc, src/ast/fieldvar.cc, src/ast/recordty.hxx, + * src/ast/recordexp.hxx, src/ast/seqexp.hh, src/ast/fieldinit.hh, + * src/ast/nilexp.hxx, src/ast/breakexp.hxx, src/ast/whileexp.cc, + * src/ast/vardec.hxx, src/ast/seqexp.hxx, src/ast/stringexp.hh, + * src/ast/nilexp.cc, src/ast/allty.hh, src/ast/callexp.hh, + * src/ast/subscriptvar.hxx, src/ast/ifexp.cc, src/ast/vardec.hh, + * src/ast/intexp.hh, src/ast/subscriptvar.cc, src/ast/allvar.hh, + * src/ast/arrayexp.cc, src/ast/arrayty.cc, src/ast/namety.cc, + * src/ast/alldec.hh, src/ast/typeconstructor.hh, + * src/ast/recordexp.hh, src/ast/recordty.hh, src/ast/assignexp.hh, + * src/ast/functiondec.hh, src/ast/letexp.hh, src/ast/simplevar.hh, + * src/ast/forexp.hxx, src/ast/fieldinit.hxx, src/ast/allexp.hh, + * src/ast/seqexp.cc, src/ast/fieldinit.cc, src/ast/opexp.hxx, + * src/ast/stringexp.cc, src/ast/callexp.cc, src/ast/intexp.hxx, + * src/ast/vardec.cc, src/ast/ty.hh, src/ast/intexp.cc, + * src/ast/typedec.hh, src/ast/typeconstructor.hxx, + * src/ast/callexp.hxx, src/ast/breakexp.hh, src/ast/forexp.hh, + * src/ast/fieldvar.hxx, src/ast/typedec.hxx, src/ast/all.hh, + * src/ast/typeconstructor.cc, src/ast/recordty.cc, + * src/ast/recordexp.cc, src/ast/ifexp.hxx, src/ast/letexp.cc, + * src/ast/assignexp.cc, src/ast/functiondec.cc, + * src/ast/simplevar.cc, src/ast/opexp.hh, src/ast/fieldvar.hh, + * src/ast/arrayexp.hxx, src/ast/arrayty.hxx, + * src/cppgen/includes/recordty.hh, src/cppgen/includes/arrayty.hh: + Convert to the new AST file names. + More is definitely needed, first stab. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1976 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-22 Akim Demaille + + 2005-03-22 Akim Demaille + + Provide a tool to rename files from classname to class-name. + + * dev/rename-headers.pl: New. + Tailored for renaming of the ast currently. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1975 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-22 Roland Levillain + + 2005-03-22 Roland Levillain + + Don't ship ast::Escapable, ast::Typable and ast::TypeConstructor + in TC-2 student tarballs. + + * config/stagize: Don't ship parts tagged as `escapes' before + TC-3. + Remove AST nodes before regenerating them. + Prune src/parse/parsetiger.yy and src/ast/print-visitor.cc. + Regen necessary files by hand. + Never deliver the cppgen module. + * config/studentize_tc.conf: Add no-escapes tag. + * src/ast/ast.yml (Escapable): Enclose in studentize's `escapes' + tags. + (FunctionDec): Hide escapes_get() in non-`escapes' mode. + * src/ast/print-visitor.cc: Hide escapes-related parts with + `escapes' tag. + (VarDec, Field): Have them inherit from Escapable in `escapes' + mode. + * src/ast/tiger_ast.i: Include ast/escapable.hh in `escapes' + mode only. + * src/parse/parsetiger.yy: Adjust. + * src/parse/parsetiger.cc: Regen. + * src/ast/default-visitor.hh + (operator() (typename Const::type&)): Remove operator, + useless. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1974 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-22 Yoann Fabre + + Fix ChangeLog + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1973 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-22 Yoann Fabre + + 2005-03-22 Arnaud Fabre + + Fix doxygen warning. + + * src/desugar/desugar-visitor.cc: + s/desugar-visitor.cc/desugar-visitor.cc/. + * src/task/disjunctive-task.hh (resolve_dependencies): Remove + useless scope resolution operator. + * src/misc/fail.cc (fatal): Remove comment, as it is already in + the header. + * config/bison++.in (rewrite_doc): New variable. + Rewrite documentation tag for generated files to make doxygen + happy. + * src/parse/parsetiger.cc, src/parse/position.hh, + * src/parse/parsetiger.hh, src/parse/stack.hh, + * src/parse/location.hh: Regen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1972 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-22 Yoann Fabre + + 2005-03-22 Arnaud Fabre + + Change interface of misc::escape. + + * src/misc/escape.cc, src/misc/escape.hh, src/misc/escape.hxx + (escape_e, Escape::operator<<): Remove. + (Escape::print): New method. + (escape): New function. Wrapper around class Escape. + (Escape::postr_): Remove. Replace by... + (Escape::pobj_str_): ... this. New attribute. + (operator<< (std::ostream& o, escape_e)): Remove. Replace by... + (operator<< (std::ostream& o, const Escape&)): ... this. + * src/misc/escape.cc, src/misc/escape.hxx: + + * src/tree/fragment.cc, src/assem/fragment.cc, + * src/parse/scantiger.ll, src/ast/print-visitor.cc, + * src/misc/test-escape.cc, src/codegen/ia32/gas-layout.cc, + * src/codegen/mips/spim-layout.cc, + * src/cppgen/cppgen-visitor.cc: Adjust. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1971 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-22 Yoann Fabre + + 2005-03-22 Arnaud Fabre + + * config/ast.py (need_duplicate): Improve comment. + * doc/Makefile.am (edit): Fix sed command. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1970 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-22 Roland Levillain + + 2005-03-22 Roland Levillain + + * config/ast-readme-gen: Improve comment. + * src/ast/README: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1969 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-21 Roland Levillain + + 2005-03-21 Roland Levillain + + Introduce OverfunBindVisitor, with its task. + + * configure.ac: Bump to 0.81a. + * src/overload/tasks.hh, src/overload/tasks.cc (overfun-bind): New + task. + * src/overload/liboverload.hh, src/overload/liboverload.cc + (overfun_bind): New function. + * src/overload/overfun-bind-visitor.hh, + * src/overload/overfun-bind-visitor.cc: New files. + * src/bind/bind-visitor.hh (bind::BindVisitor::funs_): Make it + protected. + (BindVisitor::BindVisitor ()): Adjust ctor. + * src/overload/Makefile.am (liboverload_la_SOURCES): Add + overfun-bind-visitor.hh and overfun-bind-visitor.cc. + * src/bind/tasks.hh, + * src/bind/bind-visitor.cc (BindVisitor::decs_visit): Update + documentation. + + + Fix the OverfunTypeVisitor. Catch up with OverfunBindVisitor and + the current TypeVisitor. + + * src/overload/overfun-type-visitor.hh (overtable_type): New + typedef. + (overftable_): Use it. Use ast::FunctionDec as key instead of + overload::FunEntry. + * src/overload/overfun-type-visitor.hh, + * src/overload/overfun-type-visitor.cc (mangle): Take a type::Function + as argument instead of a FunEntry. + (overfun_header_visit): Attach a type::Function to the node + instead of returning an overload::FunEntry. + (overfun_body_visit): Remove the FunEntry argument, useless. + Use Typable's interface to get the prototype of the fonction. + No longer populate the variables' environment with formals. + (operator() (ast::ForExp&), operator() (ast::LetExp&)): New + methods. + (operator() (ast::FunctionDecs&)): Use Typable's interface to get + the types of the declared functions, and don't store their bodies. + (operator() (ast::CallExp&)): Adjust. + Use Typable's interface to get the types of the declared + functions. + Check for the nil ambiguity again. + * NEWS: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1968 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-20 Yoann Fabre + + 2005-03-20 Arnaud Fabre + + Fix code delivered to students for TC-2. + + * src/ast/ast.yml (escape_tag): Hide attribute from students. + * src/ast/print-visitor.cc (operator<<): Hide escape_tag_display + tag from students. + * config/ast.py (need_duplicate): Constructor need duplicate if + parent class need duplicate. + * src/ast/field.hh, src/ast/escapable.hxx, src/ast/escapable.cc, + * src/ast/vardec.hh, src/ast/field.cc, src/ast/vardec.cc, + * src/ast/escapable.hh: Regen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1967 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-18 Gilles Walbrou + + Fix ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1966 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-17 Gilles Walbrou + + Update NEWS. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1965 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-16 Roland Levillain + + 2005-03-16 Roland Levillain + + Version 0.81. + For 2007-tc-1.0. + + * configure.ac, NEWS: Version 0.81. + * TODO: Update. + * config/stagize: Remove generated and standard stuff in student + mode after bootstraping the project. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1964 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-16 Roland Levillain + + 2005-03-16 Roland Levillain + + * src/parse/tiger-parser.cc: Equip with studentize marks. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1963 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-15 Roland Levillain + + Undo unwanted commit of src/parse/tiger-parser.cc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1962 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-15 Roland Levillain + + 2005-03-15 Roland Levillain + + * config/studentize: Document --keep-marks/--skip-marks. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1961 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-15 Roland Levillain + + 2005-03-15 Roland Levillain + + Document remaining AST classes in src/ast/README. + + * config/ast-readme-gen (print_node_rec, print_node): New + functions. + Print Escapable, Typable, TypeConstructor and their + immediate subclasses. + Add studentize warning tag. + * src/ast/README: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1960 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-15 Yoann Fabre + + 2005-03-15 Arnaud Fabre + + Move all logic of finding from to FileLibrary. + + * src/parse/tiger-parse.cc (parse_import): Rely on find_file + method of filelibrary for finding prelude. + Adjust code to perform a push_current_directory. + * src/misc/filelibrary.hh (switch_to_file): Replaced by... + (find_file): ...this, which does not perform a push_current_directory. + Adjust comments. + * src/misc/filelibrary.hh (find_in_directory): New method. + (find_in_search_path): Simplify code. Remove useless variable. + + Use current directory instead of working directory, which is + confusing. + + * src/misc/filelibrary.hh, src/misc/filelibrary.cc + (pop_working_directory, push_working_directory) + (working_directory_get, working_directory_): Rename as... + (pop_current_directory, push_current_directory) + (working_current_get, current_directory_): ...theses. + Adjust comments. + * src/parse/libparse.cc (parse): Adjust. + * src/parse/tiger-parse.cc (parse_import): Adjust. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1959 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-14 Roland Levillain + + 2005-03-14 Roland Levillain + + Even more pretty-printing in ast-readme-gen. + + * config/ast-readme-gen (ctor_args_summary): Hide `const', `*' and + `&' in types. + (print_node_summary): Do no print ctors of hidden nodes. Add a + leading star in front of them, if there is enough space. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1958 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-14 Roland Levillain + + 2005-03-14 Roland Levillain + + More pretty-printing in ast-readme-gen. + + * config/ast-readme-gen: Show inheritance using indentation, mark + abstract classes with '/', simplify ctors. + (print_node_summary, ctor_args_summary): New functions. + * config/ast.py (Node.__init__.derived): New attribute. + (Loader.resolve_super): Initialize it. + * src/ast/README: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1957 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-14 Roland Levillain + + 2005-03-14 Roland Levillain + + Generate src/ast/README from the AST description. + + * config/ast-readme-gen: New file. + * src/ast/README: New file (generated). + * config/Makefile.am (dist_noinst_SCRIPTS): Add ast-readme-gen. + * src/ast/Makefile.am ($(srcdir)/README): New target. + (dist_noinst_DATA): Add README. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1956 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-10 Roland Levillain + + 2005-03-10 Roland Levillain + + Desugar « for » loops as « while » loops (cont.). + + * src/desugar/desugar-visitor.cc + (DesugarVisitor::operator() (const ast::ForExp&)): Fix desugaring + of for's + * src/desugar/test-for-loops-desugar.cc: Don't include + type/types.hh. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1955 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-09 Roland Levillain + + 2005-03-09 Roland Levillain + + Desugar « for » loops as « while » loops. + + * src/desugar/desugar-visitor.hh, src/desugar/desugar-visitor.cc: + (DesugarVisitor::operator() (const ast::ForExp&)): New method. + * src/desugar/test-for-loops-desugar.cc: New test. + * src/desugar/test-desugar-visitor.cc: Rename test as... + * src/desugar/test-string-cmp-desugar.cc: ...this. + * src/desugar/Makefile.am (check_PROGRAMS): Adjust. + Add test-for-loop-desugar. + (test_desugar_visitor_SOURCES): Rename variable as... + (test_string_cmp_desugar_SOURCES): ...this. + (test_desugar_visitor_LDADD): Rename variable as... + (test_string_cmp_desugar_LDADD): ...this. + (test_for_loop_desugar_SOURCES, test_for_loop_desugar_LDADD): New + variables. + * NEWS, TODO: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1954 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-09 Roland Levillain + + 2005-03-09 Roland Levillain + + Have tc-check be more tolerant w.r.t. optional tests. + + * tests/tc-check.in (load_tests): Tag optional tests as such. + (run_test): Don't alter failure_p when running optional tests. + (nolimips_check_one, cxxgen_check_one, ia32_check_one): Don't die + on missing output file; skip the test instead. + + * src/translate/translate-visitor.cc (translate): Typo in comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1953 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-01 Roland Levillain + + Clean up whitespaces in ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1952 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-01 Roland Levillain + + 2005-03-01 Roland Levillain + + Regen assembler outputs. + + * tests/escapes/for-lower.-e.s, tests/escapes/for-lower.s, + * tests/escapes/for-upper.-e.s, tests/escapes/for-upper.s, + * tests/escapes/variable-inside-for-body.-e.s, + * tests/escapes/variable-inside-for-body.s, + * tests/good/array-of-alias.s, tests/good/array.s, + * tests/good/assign-and-array-instantiation.s, + * tests/good/big-exp.-e.s, tests/good/big-exp.s, + * tests/good/big-lvalue.-e.s, tests/good/big-lvalue.s, + * tests/good/builtins.-e.s, tests/good/call.-e.s, + * tests/good/call.s, tests/good/chr.-e.s, tests/good/chr.s, + * tests/good/compare-record-and-record.-e.s, + * tests/good/compare-record-and-record.s, + * tests/good/concurrent-arguments.-e.s, + * tests/good/concurrent-arguments.s, tests/good/donald.-e.s, + * tests/good/escaping-record.s, tests/good/evalexp.-e.s, + * tests/good/evalexp.s, tests/good/explicit-record-type.s, + * tests/good/field-of-field.-e.s, tests/good/field-of-field.s, + * tests/good/for-high-computed-once.-e.s, + * tests/good/for-high-same-name-as-index.-e.s, + * tests/good/for-high-same-name-as-index.s, + * tests/good/for-up-to-32bits.-e.s, tests/good/for-up-to-32bits.s, + * tests/good/forward-fun-and-type-decl.-e.s, + * tests/good/forward-fun-and-type-decl.s, + * tests/good/fractions-underloaded.-e.s, + * tests/good/fractions-underloaded.s, + * tests/good/getchar-no-static-string.-e.s, + * tests/good/let-in-for-init.-e.s, tests/good/let-in-for-init.s, + * tests/good/many-args.-e.s, tests/good/many-vars.-e.s, + * tests/good/many-vars.s, tests/good/merge.-e.s, + * tests/good/merge.s, tests/good/nine.-e.s, tests/good/nine.s, + * tests/good/non-commutative-move-mem-expr.-e.s, + * tests/good/non-commutative-move-mem-expr.s, + * tests/good/print-tree.-e.s, tests/good/print-tree.s, + * tests/good/queens.-e.s, tests/good/queens.s, + * tests/good/record.s, tests/good/recursive-type.s, + * tests/good/recursive-types-mutual.-e.s, + * tests/good/recursive-types-mutual.s, + * tests/good/recursive-types.s, + * tests/good/scopes-protect-types.-e.s, + * tests/good/scopes-protect-types.s, tests/good/side-effects.-e.s, + * tests/good/side-effects-in-init.s, + * tests/good/side-effects-in-sxp.-e.s, + * tests/good/side-effects-in-sxp.s, tests/good/strcmp.-e.s, + * tests/good/strcmp.s, tests/good/string-int-not-keywords.-e.s, + * tests/good/string-int-not-keywords.s, tests/good/substring.-e.s, + * tests/good/substring.s, tests/good/test30.s, + * tests/good/test42.-e.s, tests/good/test42.s, + * tests/good/three-name-spaces.-e.s, + * tests/good/three-name-spaces.s, tests/good/types-aliases.-e.s, + * tests/good/types-aliases.s: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1951 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-01 Roland Levillain + + 2005-03-01 Roland Levillain + + Prefer `strcmp (a, b) <> 0' to `not (strcmp (a, b))' in Desugar. + Check strcmp's declaration. + + * src/desugar/desugar-visitor.cc + (DesugarVisitor::operator() (const ast::OpExp&)): Prefer + `strcmp (a, b) <> 0' to `not (strcmp (a, b))'. + Fix assertion (really check if strcmp is declared). + * src/desugar/test-desugar-visitor.cc: Fix test accordingly. + (dummy_fundec): New function. + (test_string_desugaring): Use it. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1950 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-03-01 Akim Demaille + + 2005-03-01 Akim Demaille + + Kill the never ending compilation of big-exp.tig. + + * src/regalloc/color.cc (select_spill): Fix the nondeterminism due + to float comparisons. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1949 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-28 Roland Levillain + + 2005-02-28 Roland Levillain + + Desugar the remaining string comparisons. + + * src/desugar/desugar-visitor.cc + (DesugarVisitor::operator() (const ast::OpExp&)): Desugar string + comparisons for operators <>, <, <=, > and >=. + (DesugarVisitor::operator() (const ast::FunctionDec&)): Remember + the definition site of strcmp. + * src/desugar/desugar-visitor.hh (DesugarVisitor::strcmp_def_): + New attribute. + (DesugarVisitor::DesugarVisitor): Initialize it. + * src/desugar/test-desugar-visitor.cc: Add more test cases. + * NEWS, TODO: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1948 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-28 Yoann Fabre + + 2005-02-25 Arnaud Fabre + + Fix runtime function names. + + * src/codegen/tiger-runtime.c (tcInitArray,tcAllocRecord) + (tcStringEqual,tcPrint,tcFlush,tcOrd,tcChr,tcSize) + (tcSubstring,tcConcat,tcNot,tcGetchar): Rename to... + (tc_init_array,tc_alloc_record,tc_string_equal,tc_print) + (tc_flush,tc_ord,tc_chr,tc_size,tc_substring,tc_concat) + (tc_not,tc_getchar): .. theses. + + Fix concat marks for studentize. + + * src/codegen/mips/runtime.s (concat): Remove copy loop for + students. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1947 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-28 Yoann Fabre + + 2005-02-25 Arnaud Fabre + + Report modifications of mips/runtime.s into tiger-runtime.c + + * src/codegen/tiger-runtime.c (initArray,allocRecord) + (stringEqual,print,flush,ord,chr,size,substring,concat) + (not,getchar): Rename to... + (tcInitArray,tcAllocRecord,tcStringEqual,tcPrint,tcFlush,tcOrd) + (tcChr,tcSize,tcSubstring,tcConcat,tcNot,tcGetchar): .. theses. + (main): Call tc_main install of t_main. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1946 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-25 Yoann Fabre + + 2005-02-25 Arnaud Fabre + + Update TODO. + + * TODO (not builtin): Remove. Fixed by previous patch. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1945 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-25 Yoann Fabre + + 2005-02-25 Arnaud Fabre + + Fix implementation of 'not' builtin: do no use a function for + declaring it. + + * src/codegen/mips/runtime.s (malloc,exit,strcmp,print) + (print_int,flush,ord,chr,size,substring,concat,_not) + (get_char): Rename labels to... + (tc_malloc,tc_exit,tc_strcmp,tc_print,tc_print_int,tc_flush) + (tc_ord,tc_chr,tc_size,tc_substring,tc_concat,tc_not) + (tc_get_char): ... theses. + * src/codegen/mips/spim-layout.cc + (operator() (const assem::ProcFrag&)): Prepend "tc_" to routine + names. + Rename t_main to tc_main. + * src/codegen/mips/spim-assembly.cc (call_build): Prepend "tc_" + to label of called function. + * data/prelude.tih (not): Declare as a builtin, not a function. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1944 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-24 Roland Levillain + + 2005-02-24 Roland Levillain + + Clean more files, and have `make distcheck T=2' run successfully. + + * Makefile.am (CLEANFILES): Add tc.log.bz2. + * src/Makefile.am (CLEANFILES): Add version.stamp. + * tcsh/generate-swig-mk (CLEANFILES): Add $base.pyc. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1943 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-24 Roland Levillain + + 2005-02-24 Roland Levillain + + Have the `check' step of `make distcheck T=2' run successfully. + + * tests/tc-check.in (tarball_test_wrapper): Fix log filename. + Postpone its closing to avoid print-on-closed-handle errors. + * tests/Makefile.am (EXTRA_DIST): Add xalloc-leak.valgrind. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1942 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-24 Roland Levillain + + Tag some more files as svn:ignore'd. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1941 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-23 Yoann Fabre + + 2005-02-22 Arnaud Fabre + + * config/stagize: Remove dev repertory when creating a tarball + for students. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1940 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-22 Yoann Fabre + + 2005-02-22 Arnaud Fabre + + Do not include builtins code into reference file. + Generate ASM files without register allocation. + + * tests/tests.mk (TIG2ASM, TIG2ASM_ESCAPE): Change the command + so that tc does not produce builtins code. + (TIG2UASM, TIG2UASM_ESCAPE): New variables. + New rules for generating ASM files without register allocation. + * tests/mk-Makefile-am: -e.u.s and .u.s files must not be + installed. + + Document the change. + + * dev/tc.texi (Generated files): Document purpose of -e.u.s and + .u.e files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1939 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-22 Roland Levillain + + 2005-02-22 Roland Levillain + + Have CloneVisitor use more general names for its identifiers, so + as to clean-up clonerisms in DesugarVisitor. + + * config/ast-clone-visitor-gen (astclone::CloneVisitor::clone_): + Rename attribute as result_. + (astclone::CloneVisitor::clone_get): Rename method as... + (astclone::CloneVisitor::result_get): ...this. + (astclone::CloneVisitor::clone<> (const T&): Rename method as... + (astclone::CloneVisitor::recurse (const T&)): ...this. + (astclone::CloneVisitor::clone<> (const T* const)): Rename method + as... + (astclone::CloneVisitor::recurse (const T* const)): ...this. + * src/astclone/clone-visitor.hxx: Likewise. + * src/astclone/clone-visitor.hh, src/astclone/clone-visitor.cc: + Regen. + * src/desugar/desugar-visitor.cc + (DesugarVisitor::operator() (const ast::OpExp&)): Adjust. + * src/astclone/libastclone.hxx (clone), + * src/astclone/test-clone-visitor.cc (main), + * src/desugar/libdesugar.cc (desugar), + * src/desugar/test-desugar-visitor.cc (main): Adjust callers. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1938 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-22 Roland Levillain + + 2005-02-22 Roland Levillain + + Equip TCSH with studentize's named marks. + + * tcsh/python/tc.py, tcsh/python/test.py, tcsh/python/ti.py: Add + studentize's named marks to disable pruned modules. + * config/studentize_tc.conf: New allowed marks: bind, escapes, + overload, cppgen, translate, canon, temp, target, codegen, + liveness, regalloc. + * config/stagize: Use studentize's `--keep-marks' options to prune + tcsh/python/tc.py, tcsh/python/test.py and tcsh/python/ti.py. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1937 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-22 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1936 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-21 Roland Levillain + + 2005-02-21 Roland Levillain + + Remove dependencies on the Type module for stages < TC-4 (cont.) + + * src/ast/tiger_ast.i: Include ast/typeconstructor.hh. + Don't include headers from the Type module in non-`type' stages. + * config/stagize: Use studentize's `--keep-marks' options to prune + src/ast/tiger_ast.i. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1935 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-21 Akim Demaille + + 2005-02-21 Akim Demaille + + * config/bison++.in: Now that bison++ lives in build, fix the path + to move-if-change. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1934 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-21 Yoann Fabre + + 2005-02-20 Arnaud Fabre + + Change Makefile for producing ASM files of tests. + + * tests/tests.mk (TIG2ASM, TIG2ASM_ESCAPE): New variables, for + compiling test cases. + New rules for generating ASM files. + * tests/mk-Makefile-am: -e.s and .s files must not be installed. + + Document the change. + + * dev/tc.texi (Generated files): Document purpose of -e.s and .e + files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1933 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-17 Roland Levillain + + 2005-02-17 Roland Levillain + + * config/stagize: Always prune desugar from student tarballs. + Deliver astclone at TC-2, and desugar at TC-4 (in professor + tarballs). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1932 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-17 Roland Levillain + + 2005-02-17 Roland Levillain + + * src/desugar/test-desugar-visitor.cc (main): Fix comment. + * src/desugar/desugar-visitor.cc: Aesthetics changes in comments. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1931 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-17 Roland Levillain + + 2005-02-17 Roland Levillain + + Introduce a new module, desugar, along with its visitor + (DesugarVisitor) and a new task (desugar). This DesugarVisitor + handles desugaring of string comparisons, i.e. « "foo" = "bar » is + rewritten as « streq ("foo", "bar") ». + + * src/desugar/libdesugar.hh, src/desugar/libdesugar.cc, + * src/desugar/desugar-visitor.hh, src/desugar/desugar-visitor.cc, + * src/desugar/tasks.hh, src/desugar/tasks.cc, + * src/desugar/test-desugar-visitor.cc, + * src/desugar/Makefile.am: New files. + * configure.ac (AC_CONFIG_FILES): Add src/desugar/Makefile. + * src/Makefile.am (SUBDIRS): Add desugar. + (dist_tc_SOURCES): Add desugar/tasks.cc and desugar/tasks.hh. + (libtc_la_LIBADD): Add $(libdesugar_la). + * src/tc.mk (libdesugar_la, libdesugar): New variables. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1930 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-17 Roland Levillain + + 2005-02-17 Roland Levillain + + Move template method bodies outside ast-clone-visitor-gen. + + * config/ast-clone-visitor-gen (CloneVisitor::clone<>)) + (CloneVisitor::clone<>, CloneVisitor::clone_collection<>) + (CloneVisitor::decs_visit<>): Move the definitions of these + methods... + * src/astclone/clone-visitor.hxx: ...here (new file). + * config/ast-clone-visitor-gen: Have astclone/clone-visitor.hh + include astclone/clone-visitor.hxx. + * src/astclone/clone-visitor.hh, src/astclone/clone-visitor.cc: + Regen. + * src/astclone/Makefile.am (libastclone_la_SOURCES): Add + clone-visitor.hxx. + * src/astclone/libastclone.hh, src/astclone/tasks.cc, + * src/astclone/test-clone-visitor.cc: Typos in comments. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1929 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-17 Akim Demaille + + 2005-02-17 Akim Demaille + + * config/make.m4: New: modified version from Automake 1.9.5's one, + to accept nonexistent included files. + This is required because for subdir-objects which, during + distclean, will sometimes delete deps files included by other + Makefiles. The latter ones of course fail with "hard includes". + It turns out "-include" is supported by NetBSD Make and GNU Make, + which are our main targets. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1928 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-17 Roland Levillain + + 2005-02-17 Roland Levillain + + Fix some Doxygen comments. + + * src/ast/anydecs.hh, src/ast/anydecs.hxx, + * src/ast/location.hh, src/canon/basic-block.hh, + * src/codegen/mips/spim-layout.hh, src/symbol/symbol.cc, + * src/symbol/symbol.hh, src/symbol/symbol.hxx, + * src/task/boolean-task.cc, src/task/disjunctive-task.cc, + * src/task/function-task.cc, src/task/string-task.cc, + * src/task/task-register.cc, src/task/task.cc, src/temp/map.hcc: + Don't start file descriptions with a namespace name, to work + around Doxygen's automatics capitalization. + * config/ast-visitor-gen, config/ast-clone-visitor-gen: Likewise. + * src/ast/visitor.hh, src/astclone/clone-visitor.hh, + * src/astclone/clone-visitor.cc: Regen. + + * src/codegen/assembly.cc, src/bind/bind-visitor.hh, + * src/task/boolean-task.hh, src/callgraph/call-graph-visitor.hh, + * src/callgraph/call-graph-visitor.cc, + * src/codegen/mips/codegen.cc, src/tree/exp.cc, + * src/misc/filelibrary.cc, src/overload/fun-entry.hh, + * src/task/function-task.hh, src/codegen/ia32/gas-assembly.cc, + * src/codegen/ia32/gas-assembly.hh, src/target/ia32-cpu.hh, + * src/assem/instrs.hh, src/assem/instrs.cc, + * src/temp/label-list.hh, src/temp/label-list.cc, + * src/translate/level.hxx, src/translate/level.cc, + * src/liveness/liveness.hh, src/liveness/liveness.cc, + * src/task/multiple-string-task.cc, + * src/task/multiple-string-task.hh, + * src/callgraph/parent-graph-visitor.cc, + * src/callgraph/parent-graph-visitor.hh, + * src/regalloc/regallocator.cc, src/regalloc/regallocator.hh, + * src/codegen/mips/spim-assembly.cc, + * src/codegen/mips/spim-assembly.hh, + * src/callgraph/static-link-visitor.cc, src/tree/stm.cc, + * src/task/string-task.hh, src/symbol/table.hxx, + * src/task/task-register.hh, src/task/task.hh, + * src/temp/temp-list.hh, src/temp/temp-list.hxx, + * src/parse/tiger-parser.cc, src/parse/tiger-parser.hh, + * src/canon/traces.cc, src/canon/traces.hh, + * src/translate/translate-visitor.cc, + * src/translate/translate-visitor.hh: Forgotten namespace in + Doxygen comment. + + * src/frame/libframe.hh: Typo in a comment. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1927 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-16 Akim Demaille + + Remove bison++, add bison++.in + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1924 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-16 Roland Levillain + + 2005-02-16 Roland Levillain + + * config/ast-clone-visitor-gen: Fix generated Doxygen comment (use + astclone:: namespace, not ast::). + * src/astclone/clone-visitor.hh, src/astclone/clone-visitor.cc: + Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1923 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-16 Akim Demaille + + 2005-02-16 Akim Demaille + + Fix my previous checkin. + + * configure.ac: Call swig with -version, not --version. + * config/bison.m4: Use $BISON, not $YACC. + * config/Makefile.am (dist_noinst_SCRIPTS): Remove bison++, now it + is generated. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1922 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-16 Akim Demaille + + 2005-02-16 Akim Demaille + + Build system upgrade/cleanup. + + * src/Makefile.am (version.cc): Stop wasting cycles: use + move-if-change, and a stamp file. Before, any edition of + ChangeLog resulted in recompiling version.cc and linking libtc. + + * config/bison++: Rename as... + * config/bison++.in: this. + Take BISON and @BISON@ into account. + * src/parse/Makefile.am (libparse_la_SOURCES): No longer use + Automake at all for Bison compilation. + (BISONXX): Adjust. + * config/bison.m4 (AC_CHECK_BISON1875): Rename as... + (TC_PROG_BISON2): this. + * configure.ac: Adjust. + + * bootstrap: Make sure not to provoke some exit 1 on valid + behavior. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1921 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-15 Roland Levillain + + 2005-02-15 Roland Levillain + + * data/prelude.tih: Add print_err, streq and strcmp primitives. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1920 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-15 Roland Levillain + + 2005-02-15 Roland Levillain + + Let libclone copy any (root) node, and perform necessary casts. + + * src/astclone/libastclone.hh (clone): Make this function generic + wrt the type of its argument. + * src/astclone/libastclone.cc: Adjust and rename as... + * src/astclone/libastclone.hxx: ...this. + * src/astclone/Makefile.am (libastclone_la_SOURCES): + s/libastclone\.hcc/libastclone\.hxx/ + * src/astclone/tasks.cc (astclone): No longer dynamic_cast<> the + cloned Ast. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1919 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-15 Akim Demaille + + 2005-02-15 Akim Demaille + + * bootstrap: Update stamp-vti. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1918 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-15 Akim Demaille + + 2005-02-15 Akim Demaille + + * bootstrap: Work around autoreconf's failures. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1917 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-15 Roland Levillain + + 2005-02-15 Roland Levillain + + Add a simple clone task, making a deep copy of an Ast. + + * src/astclone/tasks.hh, src/astclone/tasks.cc, + * src/astclone/libastclone.hh, src/astclone/libastclone.cc: New + files. + * src/astclone/Makefile.am (libastclone_la_SOURCES): Add + libastclone.hh and libastclone.cc. + * src/Makefile.am (dist_tc_SOURCES): Add astclone/tasks.cc and + astclone/tasks.hh. + (libtc_la_LIBADD): Add $(libastclone_la). + + * src/target/tasks.hh (target): Typo. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1916 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-14 Yoann Fabre + + 2005-02-14 Arnaud Fabre + + * src/astclone/Makefile.am (clone-visitor.hh, clone-visitor.cc): + Prepend these files with $(srcdir) so that a fresh checkout works + properly. + * src/ast/libast.cc, src/ast/libast.hh (escapes_tags_display) + (sl_display): Correct anchors so that they are not shipped to + students. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1915 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-14 Roland Levillain + + 2005-02-14 Roland Levillain + + * config/stagize: Ship astclone with non-student tarballs. + * config/ast-clone-visitor-gen: Typo. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1914 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-10 Akim Demaille + + 2005-02-10 Akim Demaille + + Use misc::ref for translate::Exp too. + + * src/translate/exp.hh (rExp, rEx, rNx, rCx, rIx): New. + * src/translate/exp.hh, src/translate/exp.hxx, src/translate/exp.cc + (Exp::unEx_, Exp::unNx_, Exp::unCx_): Remove: since there is no + longer to manage the memory, there is no need to have deleting/non + deleting versions of these functions. + (Exp::unEx, Exp::unNx, Exp::unCx): Now virtual. + (Ex, Nx, Cx, Ix): Adjust their function members. + (Ix): Store rExp, not Exp. + * src/translate/translation.hh, src/translate/translation.cc: Use + rExp where we used Exp*. + Almost all functions are affected. + * src/translate/translate-visitor.hh, + * src/translate/translate-visitor.cc: Likewise. + + * src/misc/fwd.hh (ref): New. + * Makefile.am: Close a student mark. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1913 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-08 Akim Demaille + + 2005-02-08 Akim Demaille + + * tests/tc-check.in (&run): s/--logfile-fd/--log-fd/. + Issue a shorter message. + * tests/README: Remove, incoporated into... + * dev/tc.texi: this new file. + * Makefile.am, configure.ac, dev/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1912 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-08 Roland Levillain + + 2005-02-08 Roland Levillain + + * src/ast/Makefile.am ($(srcdir)/ast-fwd-gen.stamp) + ($(srcdir)/ast-visitor-gen.stamp, $(srcdir)/ast-nodes-gen.stamp) + * src/astclone/Makefile.am + ($(srcdir)/ast-clone-visitor-gen.stamp): No longer change the + write permissions of $(srcdir), to avoid forbidden Ast + regenerations after stagize. Rather... + * config/stagize: ...relaunch the generators after the pruning of + ast.yml. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1911 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-08 Roland Levillain + + 2005-02-08 Roland Levillain + + Remove dependencies on the type module for stages < TC-4. + + * config/stagize: Always prune src/astclone. + Use studentize's `--keep-marks' options to prune src/ast/ast/yml. + * config/studentize_tc.conf: Add `no-type'. + * src/ast/ast.yml (Typable, TypeConstructor, Dec, FunctionDec) + (TypeDec, Exp, Ty): Remove dependencies on the type module in + `no-type' stages. + * src/tc.mk (libast): Strip the dependency on libtype in `no-type' + stages. + + * src/ast/Makefile.am ($(srcdir)/ast-fwd-gen.stamp) + ($(srcdir)/ast-visitor-gen.stamp, $(srcdir)/ast-nodes-gen.stamp): + Set write permissions for the user on $(srcdir) to allow the + removal of stamps files. + * src/astclone/Makefile.am + ($(srcdir)/ast-clone-visitor-gen.stamp): Likewise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1910 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-08 Yoann Fabre + + 2005-02-08 Arnaud Fabre + + * TODO, NEWS: Update. + * src/target/tasks.cc (target): Add comment that was removed by a + previous patch. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1909 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-07 Roland Levillain + + 2005-02-07 Roland Levillain + + * src/ast/ast.yml (ArrayExp): Use `hide' instead of inline tags to + hide the content of this class. Moreover, this now applies to the + three generated files, not just the header. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1908 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-07 Akim Demaille + + Fix svn@ignore. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1907 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-06 Gilles Walbrou + + Change boolean operators. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1906 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-02 Yoann Fabre + + 2005-02-02 Arnaud Fabre + + * TODO: Update, DisjunctiveTask is (almost) done. + + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1905 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-02 Yoann Fabre + + 2005-02-02 Arnaud Fabre + + Use DisjunctiveTask to implements target-default. + + * src/target/tasks.hh (target-default): Use + DISJUNCTIVE_TASK_DECLARE instead of TASK_DECLARE. + * src/target/task.cc (target_default): Remove function. No + longer used. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1904 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-02-02 Yoann Fabre + + 2005-02-02 Arnaud Fabre + + Implements a new type of task: DisjunctiveTask. + + * src/task/disjunctive-task.hh, src/task/disjunctive-task.cc: + New files. + * src/task/Makefile.am (libtask_la_SOURCES): Add + disjunctive-task.hh and disjunctive-task.cc. + + Handle it properly in TaskRegister and Task. + + * src/task/task-register.cc (resolve_dependencies): Ask the + tasks which dependents tasks should be activated instead of + activating all of them. + * src/task/task.hh, src/task/task.cc (resolve_dependencies): New + method. By default return all dependent tasks. + + Update macros for using DisjunctiveTask in other modules. + + * src/task/libtask.hh (DISJUNCTIVE_TASK_DECLARE): New macro for + declaring a disjunctive task. + + Misc. + + * src/task/task.hh (tasks_list_type): New typedef. Alias for + TaskRegister::tasks_list_type. + (deps_type): Move this typedef to the beginning of the class. + * src/task/task-register.hh (tasks_list_type): New typedef. + (task_order_): Use new typedef. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1903 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-31 Nicolas Pouillard + + 2005-01-31 Nicolas Pouillard + + * config/studentize: Add --keep-marks, and --skip-marks options. + * config/studentize_test.yml: Add one test and update others. + * config/studentize_tc.conf: Add ast, and type. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1902 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-27 Akim Demaille + + 2005-01-27 Akim Demaille + + * tests/tc-check.in: Don't use LOG before opening it. + Fix minor bugs. + * Makefile.am (check-local): Move to... + * tests/Makefile.am: here. + * configure.ac: Pass -Wall to Automake. + * tests/tests.mk (AUTOMAKE_OPTIONS): New. + * doc/Makefile.am (html): Rename as... + (html-local): this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1901 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-25 Roland Levillain + + 2005-01-25 Roland Levillain + + * config/stagize: Factor the calls to bootstrap. + * src/misc/test-ref.cc: Use more relevant comments in studentize + marks. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1900 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-24 Yoann Fabre + + 2005-01-24 Arnaud Fabre + + Adjust which parts of Symbol is given to students. + + * src/symbol/symbol.hh, src/symbol/symbol.cc (symbol_set_type) + (create): Do not remove declaration for students. Remove a part + of the definition. + (string_map_size, symbol_map_size): Remove for students. + (symbol_set_instance): Notify students of this method. + * src/symbol/test-symbol.cc (main): Do not deliver testing of + size of sets. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1899 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-24 Roland Levillain + + 2005-01-24 Roland Levillain + + Have config/stagize call config/studentize and use it to + enable/disable specific parts of the project according to the + target stage. + + * Makefile.am (studir): Move call to config/studentize... + * config/stagize: ...here. + Use studentize's --stages. + * config/studentize_tc.conf: Keep only the `ref-count' stage. + * src/misc/test-ref.cc: Add studentize marks to make this test + a fake one when `ref-count' stage is not required. + + * config/studentize (studentize): Allow stage specific silent + marks with no comment. + * config/studentize_test.yml: Typo. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1898 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-24 Roland Levillain + + 2005-01-24 Roland Levillain + + * config/ast.py (Loader.parse): Read the input once, instead of + line per line. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1897 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-21 Nicolas Pouillard + + 2005-01-21 Nicolas Pouillard + + * vcs/HOWTO: New. Read this file to know how to commit with vcs. + * vcs/tiger.rb: New. Add tiger_commit et tcci to subversion. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1896 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-21 Nicolas Pouillard + + 2005-01-21 Nicolas Pouillard + + * TODO: Update, --stage in studentize is done. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1895 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-21 Yoann Fabre + + 2005-01-21 Arnaud Fabre + + Permit to control the way tiger-interpretor.pl compiles and + interprets the source file. + + * tools/tiger-interpretor.pl: Use Getopt for parsing command + line. + New switches -H, -L and -S for using havm high, havm low or + nolimips. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1894 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-20 Nicolas Pouillard + + 2005-01-20 Nicolas Pouillard + + * config/studentize: Add the --stage feature to studentize. See the + updated documentation for more details. + * config/studentize_tc.conf: New. A basic studentize configuration + file for tc. + * config/studentize_test.yml: New. A TTK test suite for studentize. + * src/symbol/symbol.hh, src/symbol/symbol.cc: Properly close 3 silent + marks. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1893 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-20 Akim Demaille + + 2005-01-20 Akim Demaille + + * configure.ac: Eval $SWIG when running it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1892 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-18 Akim Demaille + + 2005-01-18 Akim Demaille + + * config/swig.m4: Copy that from the Autoconf Macro Archive. + * configure.ac: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1891 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-18 Akim Demaille + + Update studentize requests. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1890 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-18 Akim Demaille + + More TODO. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1889 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-17 Akim Demaille + + 2005-01-17 Akim Demaille + + * src/task/libtask.hh (MULTIPLE_STRING_TASK_DECLARE): Use the + right callback_type. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1888 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-17 Akim Demaille + + 2005-01-17 Akim Demaille + + Remove tasks from the libraries, + to ease the creation of standalone executables. Indeed global objects + from libraries not explicitly invoked by the executable are not + instantiated. Put them into regular object files. + + * src/modules.cc: Remove. + * src/Makefile.am (modules.hh): No longer create it. + (AUTOMAKE_OPTIONS): subdir-objects. + * src/modules.cc: Remove. + * src/task/libtask.hh: No longer protect against multiple + inclusion. Adjust the task definition macros to depend on the + current value of DEFINE_TASKS. + + * src/ast/tasks.cc, src/bind/tasks.cc, src/callgraph/tasks.cc, + * src/canon/tasks.cc, src/codegen/tasks.cc, src/escapes/tasks.cc, + * src/liveness/tasks.cc, src/overload/tasks.cc, src/parse/tasks.cc, + * src/regalloc/tasks.cc, src/target/tasks.cc, src/task/tasks.cc, + * src/temp/tasks.cc, src/translate/tasks.cc, src/type/tasks.cc: + Define DEFINE_TASKS right before including its peer tasks.hh, and + undefine it right afterwards. + * src/ast/Makefile.am, src/bind/Makefile.am, + * src/callgraph/Makefile.am, src/canon/Makefile.am, + * src/codegen/Makefile.am, src/cppgen/Makefile.am, + * src/escapes/Makefile.am, src/liveness/Makefile.am, + * src/overload/Makefile.am, src/parse/Makefile.am, + * src/regalloc/Makefile.am, src/target/Makefile.am, + * src/task/Makefile.am, src/temp/Makefile.am, + * src/translate/Makefile.am, src/type/Makefile.am: Adjust all the + library definitions so that tasks aro longer include_tc_SOURCES): Include all the tasks files + here. + + 2005-01-15 Akim Demaille + + * tcsh/generate-swig-mk (LIBADD): Rename as... + (AM_LIBADD): this. + Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1886 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-14 Roland Levillain + + 2005-01-14 Roland Levillain + + Move the CloneVisitor in its own module (src/astclone, ::astclone). + + * config/ast-clone-visitor-gen: Adjust paths, namespaces and + inclusion guards. + Filter final nodes of the Ast. + (clone (const CollectionType& c)): Rename method as... + (clone_collection): ...this. + (clone (const T& t), clone (const T* const t)): New methods. + Use them to factor visit methods. + + * src/ast/clone-visitor.hh: Regen and move... + * src/astclone/clone-visitor.hh: ...here. + * src/ast/clone-visitor.cc: Regen and move... + * src/astclone/clone-visitor.cc: ...here. + * src/ast/test-clone-visitor.cc: Regen and move... + * src/astclone/test-clone-visitor.cc: ...here. + + * src/astclone/Makefile.am: New file. + * src/ast/Makefile.am (BUILT_SOURCES_local): Remove + clone-visitor.hh and clone-visitor.cc. + (EXTRA_DIST): Remove ast-clone-visitor-gen.stamp. + ($(srcdir)/ast-clone-visitor-gen.stamp): Remove rule. + (clone-visitor.hh clone-visitor.cc): Remove rule. + (libast_la_SOURCES): Remove clone-visitor.hh and clone-visitor.cc. + (check_PROGRAMS): Remove test-clone-visitor. + (test_clone_visitor_SOURCES, test_clone_visitor_LDADD): Remove. + * configure.ac (AC_CONFIG_FILES): Add src/astclone/Makefile. + * src/Makefile.am (SUBDIRS): Add astclone. + * src/tc.mk (libastclone_la, libastclone): New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1885 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-13 Roland Levillain + + 2005-01-13 Roland Levillain + + * config/stats: Include src/ast in the count of lines. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1884 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-13 Roland Levillain + + 2005-01-13 Roland Levillain + + Add a `stats' target to Make, which counts the lines of code in + the project. + + * config/stats (bison_lines): New file. + * Makefile.am (stats): New rule. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1883 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-12 Yoann Fabre + + 2005-01-12 Arnaud Fabre + + Add tiger-interpretor.pl, a simple wrapper around tc and havm. + + * tools/tiger-interpretor.pl: New file. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1882 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-12 Yoann Fabre + + 2005-01-12 Arnaud Fabre + + Fix generation of reference files in tests. + + * tests/tests.mk (TIG2HIR, TIG2LIR): Use -P instead of -B. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1881 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-12 Yoann Fabre + + 2005-01-12 Arnaud Fabre + + Check for header file in TigerParser, as suggested by FIXME + in FileLibrary. + + * tc/src/parse/tiger-parser.cc: Check existence of header in + current directory before calling switch_to_file. + * tc/src/misc/filelibrary.cc: Remove FIXME. + (find_in_search_path): No longer check current directory. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1880 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-12 Yoann Fabre + + 2005-01-12 Arnaud Fabre + + Sync tc-check with new option -P. + + * tests/tc-check.in ($tc_inc_path, parse_arguments): Use -P + instead of -B for specifying include path. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1879 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-12 Yoann Fabre + + 2005-01-12 Arnaud Fabre + + Fix memory leak in TC-5. + + * src/translate/translate-visitor.cc (~TranslateVisitor): Free + map of levels. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1878 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-12 Roland Levillain + + Typo in ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1877 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-12 Roland Levillain + + 2005-01-12 Roland Levillain + + Introduce the CloneVisitor, which duplicate an Ast. This will be + a starting point for Ast rewriting tools. + + * config/ast-clone-visitor-gen: New file. + * config/Makefile.am (dist_noinst_SCRIPTS): Add + ast-clone-visitor-gen. + + * src/ast/clone-visitor.hh, src/ast/clone-visitor.hh: New files + (generated). + * src/ast/Makefile.am ($(srcdir)/ast-clone-visitor-gen.stamp) + (clone-visitor.hh, clone-visitor.cc): New rule. + (EXTRA_DIST): Add ast-clone-visitor-gen.stamp. + (BUILT_SOURCES_local, libast_la_SOURCES): Add clone-visitor.hh and + clone-visitor.cc. + + * src/ast/test-clone-visitor.cc: New file. + * src/ast/Makefile.am (check_PROGRAMS): Add test-clone-visitor. + (test_clone_visitor_SOURCES, test_clone_visitor_LDADD): New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1876 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-11 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1875 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-11 Akim Demaille + + 2005-01-11 Akim Demaille + + Honor the current -p, -P, -B. + + * src/bind/tasks.hh: -B is --bindings-display. + * src/parse/tasks.hh: -p is lib-prepend, -P is append. + + * src/misc/fail.hh, src/misc/fail.cc (error, fatal): New. + This is only a beginning, more is needed to factor error + handling. + * src/parse/tasks.cc: Use it. + + Avoid useless string copies. + + * src/task/multiple-string-task.hh, + * src/task/multiple-string-task.cc (callback_type): New. + Use it. + * src/task/libtask.hh (MULTIPLE_STRING_TASK_DECLARE): Avoid a + string copy where useless. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1874 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-11 Roland Levillain + + 2005-01-11 Roland Levillain + + * configure.ac: Revert to Libtool 1.5 usage. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1873 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-11 Akim Demaille + + 2005-01-11 Akim Demaille + + * src/codegen/assembly.cc: Really add it (thanks to tla, and + tla-svn-sync). + * tests/good/if-and-bool.hir, tests/good/if-and-bool.lir: Regen. + Hopefully once for all. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1872 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-11 Akim Demaille + + 2005-01-11 Akim Demaille + + Work against undeterministic evaluations. + + * src/tree/seq.hh, src/tree/seq.hxx (push_back): Return void, + to prevent the temptation of writing undeterministic code. + * src/translate/exp.cc, src/translate/translation.cc: When + translation, make sure the temporaries and labels are always + created in the same order by breaking large expressions into + smaller ones, with a well defined sequence of evaluation. + + 2005-01-10 Akim Demaille + + Minimize (some) includes. + + * tc/src/assem/fragment.cc, tc/src/assem/fragment.hh, + * tc/src/assem/fragments.cc, tc/src/assem/fragments.hh, + * tc/src/assem/fwd.hh, tc/src/assem/instr.hh, + * tc/src/assem/layout.cc, tc/src/codegen/Makefile.am, + * tc/src/codegen/assembly.hh, tc/src/codegen/codegen.hh, + * tc/src/codegen/libcodegen.cc, tc/src/codegen/libcodegen.hh, + * tc/src/codegen/tasks.cc, tc/src/regalloc/regallocator.hh, + * tc/src/target/cpu.hh, tc/src/temp/fwd.hh, + * tc/src/codegen/ia32/codegen.cc, + * tc/src/codegen/ia32/gas-assembly.cc, + * tc/src/codegen/ia32/gas-assembly.hh, + * tc/src/codegen/mips/codegen.cc, + * tc/src/codegen/mips/spim-assembly.cc, + * tc/src/codegen/mips/spim-assembly.hh: Include adjustments. + + * tc/src/codegen/assembly.cc: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1871 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-11 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-97 + + Work against undeterministic evaluations + + 2005-01-11 Akim Demaille + + Work against undeterministic evaluations. + + * src/tree/seq.hh, src/tree/seq.hxx (push_back): Return void, + to prevent the temptation of writing undeterministic code. + * src/translate/exp.cc, src/translate/translation.cc: When + translation, make sure the temporaries and labels are always + created in the same order by breaking large expressions into + smaller ones, with a well defined sequence of evaluation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1870 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-10 Roland Levillain + + 2005-01-10 Roland Levillain + + * config/ast-fwd-gen: Catch up with src/ast/fwd.hh. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1869 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-07 Akim Demaille + + 2005-01-07 Akim Demaille + + Use ccache. + + * test/good/if-and-bool.hir, test/good/if-and-bool.lir: Regen. + Apparently there is some nondeterminism here, as Darwin's G++ and + Debian's produce different results. This is to be fixed! + * config.site (CC, CXX): Pass ccache, it provides a substantial + boost! + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1868 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-06 Akim Demaille + + Typo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1867 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-06 Akim Demaille + + 2005-01-06 Akim Demaille + + Fix a leak in "import" processing. + Reported by Arnaud Fabre. + + * src/parse/parsetiger.yy (decs: importdec decs): Delete the + spliced list. + + * src/parse/tiger-parser.hh: Formatting changes. + + Something is really fishy for static linking of dynamic + libraries. I thought it worked, but it may not actually. + Anyway, at least have it work properly on Darwin. + + * configure.ac (DARWIN): New Automake conditional. + * src/Makefile.am: Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1866 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-03 Akim Demaille + + 2005-01-03 Akim Demaille + + * src/parse/parsetiger.yy (error): s/location/location_type/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1865 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-03 Akim Demaille + + 2005-01-03 Akim Demaille + + * configure.ac: Automake 1.9.4. + Reported by Alexandre Duret-Lutz. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1864 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-03 Akim Demaille + + More TODO. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1863 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-03 Akim Demaille + + 2005-01-03 Akim Demaille + + Fix test-ast which now depends on libtype. + + * src/tc.mk: Extend with the list of library locations and + dependencies. + * ast/Makefile.am, canon/Makefile.am, graph/Makefile.am, + * liveness/Makefile.am, symbol/Makefile.am, temp/Makefile.am, + * type/Makefile.am: Adjust to using these variables. + + * debian/changelog-deb: Rename as... + * debian/changelog: this, since apparently the rest of the patch + never made it. And anyway CVS Automake now includes the needed + changes to handle gracefully this case on Darwin. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1862 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-03 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-94 + + arch-inventory adjustments + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1861 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-03 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-93 + + Use misc::xalloc instead of std::ios::xalloc + + 2004-12-29 Akim Demaille + + Use misc::xalloc instead of std::ios::xalloc. + + * src/temp/identifier.hh, src/temp/identifier.hcc (map_index_) + (map_set): Remove, replaced by... + (map): this misc::xalloc slot. + Adjust callers. + + * src/assem/instr.hh, src/assem/instr.cc (Instr::debug_index) + (Instr::debug_set): Remove, replaced by... + (Instr::debug): this misc::xalloc slot. + Adjust callers. + * src/codegen/tasks.cc (instructions_display): Adjust. + * src/liveness/libliveness.cc (liveness_dump): Adjust. + * src/regalloc/regallocator.cc (RegisterAllocator::operator()): Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1860 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2005-01-03 Akim Demaille + + 2004-12-28 Akim Demaille + + Use objects instead of types to store xalloc'd slot. + Requested by Thomas Claveirole. + + * src/misc/xalloc.hh, src/misc/xalloc.hxx: Add a few const where + they belong. + Fix visibility. + (xalloc): No longer templated by a (useless) unique type: remove + this second parameter. + (set, get, swap): Rename these classes as... + (set_type, get_type, swap_type): these. + Also store the xalloc object they belong to. + (set, get, swap): New member functions, sugar to instantiate the + previous classes. + (index_): New attribute. + (index): Adjust. + (value): Remove, replaced by... + (operator()): this. + Extend to return an lvalue. + * src/misc/fwd.hh, src/misc/test-xalloc.cc: Adjust. + + Adjust misc::xalloc uses in ast. + + * src/ast/fwd.hh (escapes_display_type, escapes_tags_display_type) + (sl_display_type, bindings_display_type, escapes_display) + (escapes_tags_display, sl_display, bindings_display): Remove. + * src/ast/libast.cc (escapes_display, escapes_tags_display) + (sl_display, bindings_display): New const variables. + * src/ast/libast.hh (escapes_display, escapes_tags_display) + (sl_display, bindings_display): Declare them. + * src/ast/print-visitor.cc, src/bind/tasks.cc, + tc/src/callgraph/tasks.cc, src/escapes/tasks.cc: Adjust. + + Fix some test failures. + * src/ast/test-ast.cc: Include ast/libast.hh which declares << + Ast. + Use the Symbol factory. + * src/type/test-type.cc: Use the Symbol factory. + + 2004-12-28 Akim Demaille + + Use Swig 1.3.23 dependency tracking feature. + + * tcsh/generate-swig-mk ($dest): Pass -MD -MF to Swig. + Include the corresponding dependency file. + + 2004-12-27 Akim Demaille + + Fix (again) tcsh in Python. + + * configure.ac: Use LT_INIT instead of AC_DISABLE_STATIC and + AC_PROG_LIBTOOL. + Remove obsolete SHARED_LIBRARY_LDFLAGS. + * src/Makefile.am (tc_LDFLAGS): Comment: there seems to be a bug + in current Libtool that causes it to create an executable under + Darwin that depends upon the shared libtc, but fails to find it + (since it is not installed: without -static, libtool properly + creates a wrapper). + Move version.cc and modules.hh under the responsibility of + libtc.la, not tc itself. + * src/tc.cc: Don't include ast/libast.hh. + + * tcsh/python/test.py: Use "print" for fragments. + + * tcsh/python/Makefile.am (TESTS_ENVIRONMENT): Pass top_srcdir. + (XFAIL_TESTS): Remove. + + Swig 1.3.24 no longer requires the swigpy trick. + + * tcsh/generate-swig-mk (LIBADD): Remove swigpy.la. + No longer pass -noruntime. + * tcsh/python/swigpy.i: Remove. + * tcsh/python/Makefile.am (libtcswigpy.la): Remove all the material + related to it. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1859 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-23 Yoann Fabre + + 2004-12-23 Arnaud Fabre + + Remove handling of user_dtor_code, now useless. + + * config/ast-nodes-gen (print_ctor_dtor): No longer use + user_dtor_code. + * config/ast.py (Node.__init__): Remove initialisation of + user_dtor_code, emit a warning if it is used. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1858 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-22 Yoann Fabre + + 2004-12-23 Arnaud Fabre + + Fix a few leaks in TC-01234. + + Correct leaks of Type by introducing TypeConstructor class. + + * src/ast/ast.yml (TypeConstructor): New class. + (FunctionDec, TypeDec, Ty): Add TypeConstructor to super classes. + (FunctionDec, TypeDec): Remove user_dtor_code and inline impl + prologue, now useless. + * src/type/type-visitor.cc (visitDecHeader) + (visitDecHeader,operator() (ast::RecordTy& e)) + (operator() (ast::ArrayTy& e)): Set created_type. + * src/ast/functiondec.hh, src/ast/ty.cc, src/ast/typedec.cc, + * src/ast/ty.hh, src/ast/functiondec.cc, src/ast/fwd.hh: Regen. + * src/ast/typeconstructor.hh, src/ast/typeconstructor.cc, + * src/ast/typeconstructor.hxx: New generated files. + + Other leaks. + + * src/parse/tiger-parser.cc (parse_import): Return 0 instead of + exiting in case of error. + * src/parse/parsetiger.yy (importdec): Free filename string. + * tests/tc-check.in (load_tests): Free ast even in case of scan + or parse error. + (run): Pass --leak-resolution=high to Valgrind so that it can do + correctory its job. + + Update suppression rules for Valgrind. + + * tests/xalloc-leak.valgrind: Suppress leaks for memcheck tool. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1857 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-22 Akim Demaille + + s/work/compile/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1856 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-22 Akim Demaille + + 2004-12-22 Akim Demaille + + Have tcsh work on Darwin: libtcswigpy must not be a module. + + * tcsh/generate-swig-mk (AM_LDFLAGS): Rename as... + (MODULELDFLAGS): this. + Use it for each module LDFLAGS. + Unfortunately with Automake 1.9.4, foo_la_LDFLAGS does not + override AM_LDFLAGS: it cumulates. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1855 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-22 Akim Demaille + + 2004-12-22 Akim Demaille + + * src/parse/tiger_parse.i: Adjust to position. + Include Symbols. + * src/parse/tiger-parser.hh (parse/location.hh): Don't include it. + * src/parse/parsetiger.yy (symbol.hh): Include it. + (filename_type): Set to Symbol. + Adjust the rest of the code. + * src/parse/parse.hh (symbol.hh): Include it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1854 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-22 Gilles Walbrou + + Correct SL computation + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1853 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-21 Akim Demaille + + 2004-12-21 Akim Demaille + + * config/ast-nodes-gen (print_includes): More header prologues + handling here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1852 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-21 Akim Demaille + + 2004-12-21 Akim Demaille + + * config/ast-nodes-gen: Adjust to allow the creation of files, not + only updates. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1851 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-20 Yoann Fabre + + Fix ChangeLog + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1850 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-20 Akim Demaille + + More TODO. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1848 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-20 Akim Demaille + + 2004-12-20 Akim Demaille + + Share the configuration files with tc. + + * configure.ac (AC_CONFIG_AUX_DIR): Use it. + * Makefile.am (ACLOCAL_AM_FLAGS): Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1846 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-20 Akim Demaille + + 2004-12-20 Akim Demaille + + Catch up with CVS Bison. + + * src/parse/libparse.cc, src/parse/parse.hh, + * src/parse/parsetiger.yy, src/parse/scantiger.ll, + * src/parse/tiger-parser.cc, src/parse/tiger-parser.hh, + * src/parse/tiger_parse.i: Adjust to s/Parser/parser/, + s/Location/location/, s/Position/position/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1845 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-20 Akim Demaille + + Move tc into trunk/tc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk/tc@1843 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-20 Akim Demaille + + Rename trunk as tc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/tc@1842 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-19 Yoann Fabre + + 2004-12-19 Arnaud Fabre + + Fix some memory leaks. + + FunctionDec formals were never freed. + + * src/type/types.hh, src/type/types.cc, src/type/types.hxx + (Function::formals_): Use a pointer instead of a reference. + (Function::~Function): New. Free formals_. + (Function::Function): Adjust. Take a pointer to a Record instead of a + reference. + (Function::formals_get): Adjust. + * src/type/type-visitor.cc (visitDecHeader): Adjust. + + Free types at their definition location. + + * config/ast-nodes-gen (print_includes): Add support for a new + placeholder, impl prologue. + (print_ctor_dtor): Add support for a new property, user_dtor_code. + * config/ast.py (Node.__init__): Add support for user_dtor_code. + * src/ast/ast.yml (FunctionDec user_dtor_code) + (TypeDec user_dtor_code): New properties. Free declared type. + (FunctionDec impl prologue, TypeDec impl prologue): New properties. + Include necessary headers. + * src/ast/functiondec.cc, src/ast/typedec.cc: Regen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1841 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-17 Akim Demaille + + 2004-12-17 Akim Demaille + + Please Doxygen. + + * src/bind/bind-visitor.cc: Record the Doxygen bug. + * src/ast/import-visitor.hh: Remove for real! + * src/parse/libparse.hh: Doc changes. + + Libtool is adjust to handled multiple files with the same name, in + different directories. + + * src/codegen/mips/mips-codegen.cc: Rename as... + * src/codegen/mips/codegen.cc: this. + * src/codegen/ia32/ia32-codegen.cc: Rename as... + * src/codegen/ia32/codegen.cc: this. + * src/codegen/mips/mips-runtime.cc: Rename as... + * src/codegen/mips/runtime.cc: this. + * src/codegen/ia32/ia32-runtime.cc: Rename as... + * src/codegen/ia32/runtime.cc: this. + * src/codegen/ia32/Makefile.am, src/codegen/mips/Makefile.am: + Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1840 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-17 Akim Demaille + + Add missing item. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1839 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-17 Akim Demaille + + 2004-12-17 Akim Demaille + + Catch up with Bison 1.875f. + + * src/parse/parsetiger.yy (error_): Rename as... + (error): this, and adjust prototype. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1838 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-17 Akim Demaille + + 2004-12-17 Akim Demaille + + * src/type/types.hh: Documentation changes. + * src/parse/tiger_parse.i (Location::__str__, Position::__str__): + New. + * src/ast/tiger_ast.i: Stylistic change. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1837 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-17 Akim Demaille + + Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1836 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-17 Akim Demaille + + 2004-12-17 Akim Demaille + + * doc/Doxyfile.in (EXCLUDE_SYMLINKS): Set to "no" to avoid + infinite loops _src -> _build -> _src etc. (for those using + symbuild). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1835 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-15 Akim Demaille + + Add missing files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1834 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-15 Akim Demaille + + 2004-12-15 Akim Demaille + + * tcsh/tcsh.test, tcsh/ltihooks.py, tcsh/ti.py, tcsh/test.py, + * tcsh/Makefile.am, tcsh/run.in, tcsh/swigpy.i, tcsh/tc.py: Move + to... + * tcsh/python/tcsh.test, tcsh/python/ltihooks.py, + * tcsh/python/ti.py, tcsh/python/test.py, tcsh/python/Makefile.am, + * tcsh/python/run.in, tcsh/python/swigpy.i, tcsh/python/tc.py: here. + + * configure.ac, bootstrap, config/stagize: Adjust. + * tcsh/Makefile.am: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1833 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-14 Yoann Fabre + + 2004-12-14 Arnaud Fabre + + Fix segv when prelude file cannot be parsed. + + * src/parse/libparse.cc (parse): Check the result of the parsing of + prelude.tih. + * src/misc/filelibrary.hh (find_in_search_path): Correct a comment. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1832 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-14 Yoann Fabre + + 2004-12-14 Arnaud Fabre + + Change prelude.tig extension to .tih. + + * data/prelude.tig: Rename as ... + * data/prelude.tih: ... this. + * data/Makefile.am (dist_pkgdata_DATA): Adjust. + * src/parse/tasks.hh (STRING_TASK_DECLARE ("prelude")): Default to + prelude.tih instead of prelude.tig. + * tcsh/ti.py, tcsh/test.py: Include prelude.tih. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1831 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-14 Akim Demaille + + 2004-12-14 Akim Demaille + + Provide a Tiger Interpreter. + This could be a service from tcsh.py. + + * src/ast/libast.cc, src/ast/libast.hh: Comment changes. + * src/tree/tiger_tree.i: Include more files. + (Fragments:__str__): New. + * src/translate/libtranslate.cc, src/translate/libtranslate.hh + (print): Remove, now useless. + Remove useless includes. + * src/translate/translate-visitor.hh: Fix includes. + + * tcsh/ti.py: New. + * tcsh/Makefile.am, tcsh/tcsh.test: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1830 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-13 Yoann Fabre + + 2004-12-13 Arnaud Fabre + + Fix regression of parsing when tc is used for checking bindings. + + * src/parse/scantiger.ll (bind_addr): New abbreviation. Match a + binding address comment. + (id): Use bind_addr. + (break, while, for): Allow a binding address info after keyword. + * src/ast/print-visitor.cc + (PrintVisitor::operator() (const WhileExp&)) + (PrintVisitor::operator() (const ForExp&)) + (PrintVisitor::operator() (const BreakExp&)): Revert a change + incorrectly commited in previous patch. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1829 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-13 Yoann Fabre + + 2004-12-13 Arnaud Fabre + + Create a real factory of Symbol. + + * src/symbol/symbol.hh (Symbol (const std::string& s)): Change + visibility to private. + (create (const std::string& s)): New static method, implement + the Factory design pattern. + (map_size, size_type, instance): Rename as ... + (string_map_size, string_size_type, string_set_instance): ... these. + (symbol_set_type, symbol_size_type): New typedefs. + (symbol_set_instance): New method. Return unique set of Symbol. + (symbol_map_size): New method. + * src/symbol/symbol.cc (symbol_set_instance) + (symbol_map_size, create): New methods. + (instance, map_size): Rename as ... + (string_set_instance, string_map_size): ... this. + + Correct uses of Symbol. + + * src/ast/ast.yml (Dec, FunctionDec, FieldInit, CallExp, FieldVar) + (SimpleVar, Field, NameTy): Change type of Symbol attributes to + const Symbol. Change access of these attributes to rW. + * src/parse/parsetiger.yy (%union): Add const to Symbol. + (%destructor): No longer free Symbol. + * src/type/type-visitor.cc, src/translate/translate-visitor.cc, + src/temp/factory.hcc, src/parse/scantiger.ll, + src/parse/parsetiger.yy, src/bind/bind-visitor.cc, + src/ast/print-visitor.cc, src/symbol/test-symbol.cc, + src/overload/overfun-type-visitor.cc, + src/overload/overfun-type-visitor.hh, + src/cppgen/cppgen-visitor.cc: Adjust by changing type Symbol to + const Symbol and using factory method Symbol::create instead of + Symbol constructor. + * src/ast/namety.cc, src/ast/functiondec.hh, src/ast/simplevar.hh, + src/ast/fieldinit.hxx, src/ast/dec.cc, src/ast/typedec.cc, + src/ast/field.hh, src/ast/fieldinit.cc, src/ast/namety.hh, + src/ast/namety.hxx, src/ast/simplevar.hxx, src/ast/callexp.cc, + src/ast/fieldvar.cc, src/ast/vardec.cc, src/ast/dec.hh, + src/ast/typedec.hh, src/ast/fieldvar.hxx, src/ast/fieldinit.hh, + src/ast/functiondec.cc, src/ast/simplevar.cc, src/ast/callexp.hh, + src/ast/field.hxx, src/ast/fieldvar.hh, src/ast/vardec.hh, + src/ast/field.cc: Regen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1828 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-13 Akim Demaille + + 2004-12-13 Akim Demaille + + Don't depend on a static list of modules. + + * tcsh/generate-swig-mk (tcdir): Factor some variables. + Do not depend on a static list of modules: find them. + * bootstrap, config/stagize, tcsh/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1827 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-12 Yoann Fabre + + 2004-12-12 Arnaud Fabre + + Fix regression of tests/bind/break-in-while-cond.tig. + + * src/bind/bind-visitor.cc + (BindVisitor::operator() (ast::WhileExp& e)): Correct handling of + loop_ attribut. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1826 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-10 Akim Demaille + + 2004-12-10 Akim Demaille + + More tests. + + * tests/good/escaping-record.tig: New. + From Arnaud Fabre. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1825 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-07 Akim Demaille + + 2004-12-07 Akim Demaille + + Stylistic changes. + + * src/misc/filelibrary.hh, src/misc/filelibrary.cc (push_cwd): + New, to factor the ctors. + * src/bind/bind-visitor.hh, src/bind/bind-visitor.cc: Provide + error handling functions to students. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1824 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1823 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + 2004-12-06 Akim Demaille + + * src/ast/ast.yml (IntExp, Escapable, OpExp): Their scalar + attributes should not have access = rW, since that introduces + overloading that Swig doesn't like. + And anyway it was wrong. The default should be rW for pointers + and rw for scalars. + * config/ast-fwd-gen: Remove the declaration of operator<<, it + confuses Swig. + * src/ast/test-ast.cc: Adjust the include files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1822 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + Restore. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1821 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + Restore. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1820 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + 2004-12-06 Akim Demaille + + Coding style. + + * assem/fragment.hh, assem/fragment.hxx, ast/test-ast.cc, + * callgraph/tasks.cc, canon/tasks.cc, codegen/mips/test-rw_prg.cc, + * codegen/tasks.cc, cppgen/tasks.cc, liveness/tasks.cc, + * liveness/test-flowgraph.cc, misc/fail.cc, + * misc/fail.hh, misc/test-timer.cc, overload/tasks.cc, + * parse/location.hh, parse/parsetiger.cc, parse/tasks.cc, + * regalloc/tasks.cc, regalloc/test-regalloc.cc, symbol/table.hh, + * symbol/table.hxx, symbol/test-symbol.cc, target/tasks.cc, + * task/boolean-task.cc, task/boolean-task.hh, task/function-task.cc, + * task/function-task.hh, task/int-task.cc, task/int-task.hh, + * task/libtask.hh, task/multiple-string-task.cc, + * task/multiple-string-task.hh, task/string-task.cc, + * task/string-task.hh, task/task-register.cc, task/task-register.hh, + * task/task.cc, task/task.hh, task/task.hxx, task/tasks.cc, + * temp/tasks.cc, temp/test-temp.cc, translate/tasks.cc, + * type/tasks.cc, type/test-type.cc, type/types.cc, type/types.hh, + * type/types.hxx: s/(void)/()/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1819 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + 2004-12-06 Akim Demaille + + Export "ostream << Ast" into the Python world. + + * src/anydecs.hh, src/anydecs.hxx (AnyDecs): Add a second ctor, + because Swig is confused with the optional argument syntax. + * src/ast/libast.hh: Don't include all.hh, fwd.hh suffices. + (print): Remove. + * src/ast/libast.hxx: Remove. + * src/ast/libast.cc, src/ast/Makefile.am: Adjust. + * src/ast/print-visitor.hh: Formatting changes. + * src/ast/tiger_ast.i (Ast): Cover the whole module, not just + bits. + (ast::Ast): Extend it with a __str__ method. + * tcsh/test.py: "print ast" instead of calling the dump function. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1818 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + Adjust Makefiles. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1817 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1816 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + 2004-12-06 Akim Demaille + + Let the BV check that breaks are in loops instead of the TyV. + + * ast/ast.yml (BreakExp::def): New. + * ast/breakexp.hh, ast/breakexp.hxx, ast/breakexp.cc: Regen. + * ast/print-visitor.cc: Print loop addresses, and breaks' loop. + * bind/bind-visitor.hh, bind/bind-visitor.cc (loop_): New. + (operator() (WhileExp), operator() (BreakExp)): New. + Maintain it. + (operator() (ForExp), operator() (LetExp)): Maintain it too. + * type/type-visitor.hh, type/type-visitor.cc (in_loop_): Remove. + * translate/translate-visitor.hh, translate/translate-visitor.cc + (loop_end_label_): Be a map of Labels instead of a simple Label. + Remove its now useless save/restore code. + Adjust uses. + + * tests/type/break-alone.tig, tests/type/break-in-for-high.tig, + * tests/type/break-in-for-init.tig, tests/type/break-in-for.tig, + * tests/type/break-in-function-in-while.tig, + * tests/type/break-in-vardec-in-while.tig, + * tests/type/break-in-while-cond.tig, tests/type/break-in-while.tig, + * tests/type/break-outside-loop.tig: Rename as... + * tests/bind/break-alone.tig, tests/bind/break-in-for-high.tig, + * tests/bind/break-in-for-init.tig, tests/bind/break-in-for.tig, + * tests/bind/break-in-function-in-while.tig, + * tests/bind/break-in-vardec-in-while.tig, + * tests/bind/break-in-while-cond.tig, tests/bind/break-in-while.tig, + * tests/bind/break-outside-loop.tig: ... this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1815 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + 2004-12-06 Akim Demaille + + Get rid of libcommon, which contents is in libtc now. + + * tcsh/Makefile.am (libcommon.la): Remove, useless. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1814 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1813 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + Restore debian/changelog-deb. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1812 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + 2004-11-28 Akim Demaille + + Use Libtool, and have tcsh work on Mac OSX (failure). + + + Use Libtool, and fix the search for Python.h. + + * config/pypath.m4: New, stolen from Spot by Alexandre Duret-Lutz. + * configure.ac: Use it. + (AC_PROG_RANLIB): Remove. + (AC_PROG_LIBTOOL): Use it. + (PYTHON_CPPFLAGS): Remove. + * config/swig.m4: Formatting changes. + (_AC_CHECK_SWIG13): New, to improve readability. + + Build Libtool libraries. + + * src/callgraph/Makefile.am, argp/Makefile.am, + * src/canon/Makefile.am, src/Makefile.am, src/assem/Makefile.am, + * src/ast/Makefile.am, src/codegen/Makefile.am, + * src/codegen/ia32/Makefile.am, src/codegen/mips/Makefile.am, + * src/cppgen/Makefile.am, src/escapes/Makefile.am, + * src/frame/Makefile.am, src/graph/Makefile.am, + * src/liveness/Makefile.am, src/misc/Makefile.am, + * src/overload/Makefile.am, src/parse/Makefile.am, + * src/regalloc/Makefile.am, src/symbol/Makefile.am, + * src/target/Makefile.am, src/task/Makefile.am, + * src/temp/Makefile.am, src/translate/Makefile.am, + * src/tree/Makefile.am, src/type/Makefile.am, tcsh/Makefile.am, + * src/bind/Makefile.am: Rename the *_LIBRARIES as *_LTLIBRARIES. + Change their suffix from .a to .la. + * tcsh/generate-swig-mk: Likewise. + * src/Makefile.am (libtc): New target. + Will simplify the build of tc. + * src/codegen/Makefile.am (libcodegen_la_LIBADD): We finally can + include libraries here, instead of object files. + + For some reason yet to track down, because the following files + have the same name, libtc does not include everything it should. + + * src/codegen/mips/codegen.cc: Rename as... + * src/codegen/mips/mips-codegen.cc: this. + * src/codegen/ia32/codegen.cc: Rename as... + * src/codegen/ia32/ia32-codegen.cc: this. + * src/codegen/mips/runtime.cc: Rename as... + * src/codegen/mips/mips-runtime.cc: this. + * src/codegen/ia32/runtime.cc: Rename as... + * src/codegen/ia32/ia32-runtime.cc: this. + * src/codegen/ia32/Makefile.am, src/codegen/mips/Makefile.am: + Adjust. + + Formatting changes. + + * src/codegen/ia32/gas-assembly.hh, + * src/codegen/mips/spim-assembly.hh: + Code style changes. + + Fix tcsh. + + * tcsh/run.in (PYTHONPATH): Include srcdir for ltihooks. + * tcsh/ltihooks.py: New, stolen from Spot too. + * tcsh/tc.py: Import it. + * tcsh/generate-swig-mk: Pass -module to LDFLAGS to pacify lib* + requirements. + * tcsh/Makefile.am: Adjust. + (tc-shared.mk): Should no longer be needed: the .la are there, and + libtc includes them all. + Comment its inclusion. + Eventually, remove it. + + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1811 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + 2004-12-06 Akim Demaille + + Remove tc-shared.mk, no longer needed. + + * tcsh/generate-tc-shared-mk: Remove. + * bootstrap, tcsh/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1810 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + Regen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1809 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-79 + + Introduce TigerParser, the parsing driver + + 2004-12-06 Akim Demaille + + Introduce TigerParser, the parsing driver. + + * src/parse/parse.hh (parsing_context, parse_program) + (parse_import): Move to... + * src/parse/tiger-parser.cc, src/parse/tiger-parser.hh + (TigerParser): ...this new class. + * src/parse/libparse.cc, src/parse/Makefile.am: Adjust. + * src/parse/parsetiger.yy: Adjust. + (parse_, parse_program, parse_prelude, parse_import): Move to... + * src/parse/tiger-parser.cc: here, as member functions. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1808 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-78 + + Fix tcsh + + 2004-12-05 Akim Demaille + + * tcsh/run.in: Don't forget to pass arguments to python. + * configure.ac (AC_DISABLE_STATIC): To spare cycles. + * src/tiger_common.i (get_cout, get_cerr): New, Cout and Cerr + don't seem to work. + * tcsh/test.py: Various adjustments to have it work. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1807 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-77 + + More tcsh fixes + + 2004-12-04 Akim Demaille + + More tcsh fixes. + + * src/Makefile.am (noinst_LTLIBRARIES): Make libtc a... + (lib_LTLIBRARIES): so that a dynamic library is built, so that + tcsh can use it instead of linking each tcsh module against a + static libtc. In the latter case linking is extremely long, and + bloats the code... + (tc_LDFLAGS): Link tc statically. + * src/callgraph/tiger_callgraph.i: Typo. + * src/ast/Makefile.am: Formatting changes. + * tcsh/generate-swig-mk (MODULES): Don't forget callgraph, that's + why tcsh was failing! + Something must be done to factor the handling of modules. + * tcsh/generate-tc-shared-mk: Likewise. + * tcsh/test.py: Adjust the call to escapes_find to the current + interface. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1806 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-74 + + Continuing fixing tcsh + + 2004-11-29 Akim Demaille + + Continuing fixing tcsh. + + * tcsh/run.in: Upgrade from master copy: Alexandre Duret-Lutz + fixed the OSX issues. + * src/temp/map.hcc: Formatting changes. + * tcsh/Makefile.am (AM_SWIGFAGS): Rename as... + (AM_SWIGFLAGS): this. + Adjust all uses which, incredibly enough, did use the same + spelling! + No longer include -noruntime, since when given -noruntime + -runtime, swig honors the latter... + * tcsh/generate-swig-mk (LIBADD): Add libtc.la but remove + libcommon which no longer seems needed. + * src/Makefile.am (dist_tc_SOURCES): Move version.hh, common.hh, + and common.cc to... + (dist_libtc_la_SOURCES): here. + (nodist_tc_SOURCES): Move version.cc to... + (libtc_la_SOURCES): here. + Adjust dependencies. + (libtc_la_LIBADD): Sort. + + Fix link failures. + + * src/temp/temp.cc: Require the instantiation of the operator<< on + Temp's. I have no idea why it worked before. Maybe because we + never used it directly, but only via temp_set or temp_list which + have it inlined. tcsh did not and failed to link properly. + * src/temp/label.cc: Likewise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1805 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-12-06 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-73 + + Really add config/pypath.m4 + + 2004-11-28 Akim Demaille + + * config/pypath.m4: Really add it. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1804 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-29 Yoann Fabre + + 2004-11-29 Arnaud Fabre + + Workaround a (supposed) bug with certain versions of gcc. + + * src/tree/fragments.cc + (operator<<(std::ostream& ostr, const Fragments& fragments)): Do not + use shortcut to misc::separator(C, S). + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1803 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-27 Yoann Fabre + + 2004-11-27 Arnaud Fabre + + Fix path resolution of import directive. + + * src/parse/parsetiger.yy (parse_import): Pop the working directory + once the import is done. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1802 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-26 Yoann Fabre + + 2004-11-27 Arnaud Fabre + + Correct a small bug in ast-nodes-gen. + + * config/ast-nodes-gen (print_ctor_dtor): Remove erroneous printing of + hidden attributes in shipped constructor. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1801 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-26 Yoann Fabre + + 2004-11-27 Arnaud Fabre + + Modify definition of id for checking correctness of bindings. + Check bindings more thoroughly in tc-check. + + * src/parse/scantiger.ll (id): Include the binding info in id. + * tests/tc-check.in (bindings_check_one, binding_check): New + functions. + (load_tests): Use binding_check for checking TC-3. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1800 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-26 Akim Demaille + + Checked in to ease the daily build, and ease of use of old revisions. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1799 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-26 Gilles Walbrou + + Protect generated files + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1798 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-26 Gilles Walbrou + + Fix a generated file modification error + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1797 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-25 Akim Demaille + + Add them to ease the autobuild. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1796 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-24 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-68 + + Store the requestor's location in the parsing context + + 2004-11-24 Akim Demaille + + Store the requestor's location in the parsing context. + + * src/parse/parse.hh (map, parse/location.hh): Include. + (parsing_context::open_files): New. + (parsing_context::parsing_context): Remove. + * src/parse/parsetiger.yy (open_files): Remove. + Adjust all users. + (%initial-action): Reset pc's results. + * src/parse/libparse.cc (parse): Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1795 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-24 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-67 + + Introduce a parsing context + + 2004-11-23 Akim Demaille + + Introduce a parsing context. + + * src/parse/parse.hh (parsing_context): New. + (parse_program, parse_import): Use it. + (file_library): Remove, no longer needed. + * src/parse/parsetiger.yy: Use a single parsing context instead of + zillions of parse-param. + (parse_program, parse_import): Use the parsing context. + (parse_): Adjust. + * src/parse/libparse.cc: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1794 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-24 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-66 + + Remove "using namespace" and make parse/parse.hh more complete + + 2004-11-23 Akim Demaille + + Remove "using namespace" and make parse/parse.hh more complete. + + * src/parse/parse.hh (parse/parsetiger.hh): Don't include it: + a simple fwd decl of YYSTYPE suffices *now* that Bison no + longer typedef's it. + Also fwd decl. yy::Location. + Adjust their uses. + * src/parse/parsetiger.yy (ast/location.hh, parse/libparse.hh): + Don't include them. + Do not "using" the std namespace. + Adjust all uses. + (parse/parse.hh): Include it early. + Remove decls that are therefore no longer needed. + * src/parse/scantiger.ll (stdexcept): Remove inclusion, unused. + (parse/parsetiger.hh): Include. + Adjust Location's location in yy. + * src/parse/libparse.cc: Use explicit namespaces. + (parse/parsetiger.hh): Don't include it, there is too much stuff + in it. Rather, include what is needed. + + * src/ast/libast.hh (ast): Formatting changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1793 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-24 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-65 + + Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1792 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-22 Akim Demaille + + 2004-11-22 Akim Demaille + + * config/ast-fwd-gen, config/ast-visitor-gen: Kill uses of + ImportDec in the real sources, not the generated sources. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1791 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-22 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-62 + + Finish the ImportDec removal + + 2004-11-21 Akim Demaille + + Finish the ImportDec removal. + + * src/cppgen/cppgen-visitor.hh, src/cppgen/cppgen-visitor.cc: + ImportDec and ImportDecs no longer exist. + * src/parse/parsetiger.yy (parse_program): It is not static, + but... + (parse_prelude): this one is. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1790 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-22 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-61 + + Remove ImportDec + + 2004-11-21 Akim Demaille + + Remove ImportDec. + + * src/ast/ast.yml (ImportDec): Remove. + * src/ast/importdec.cc, src/ast/importdec.hh, + * src/ast/importdec.hxx, src/parse/import-visitor.cc: Remove. + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx, + * src/ast/fwd.hh, src/ast/print-visitor.cc, + * src/ast/print-visitor.hh, src/ast/visitor.hh, src/ast/alldec.hh, + * src/ast/anydecs.hh: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1789 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-22 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-60 + + Parse the imports when import directives are found + + 2004-11-21 Akim Demaille + + Parse the imports when import directives are found. + + * src/parse/parsetiger.yy (open_files, file_library) + (parse_import): New. + (importdecs): Remove. + (importdec): Now immediately parse the import file, and return + its contents. + * src/parse/libparse.cc (parse): Parse the prelude and glue it + in the AST here. + Don't launch the ImportVisitor. + * src/parse/parse.hh (file_library, parse_import): Declare. + (parse_prelude): Don't declare. + * src/parse/Makefile.am (libparse_a_SOURCES): Remove import-visitor. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1788 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-22 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-59 + + Use Flex features to open/close files in a "reentrant" way + + 2004-11-21 Akim Demaille + + Use Flex features to open/close files in a "reentrant" way. + + * src/parse/parsetiger.yy (parse_): Don't assert the result to + preserve error recovery. + * src/parse/scantiger.ll (file_type): Remove. + (yylex_destroy): Move to the :: namespace, where it belongs, + as the other flex routines. + (initial_token, states): New. + (scan_open): Use them. + Instead of yyrestart, use Flex's yy_*_buffer functions. + (scan_close): Likewise. + (yylex): Adjust to initial_token. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1787 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-22 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-58 + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1786 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-18 Akim Demaille + + 2004-11-18 Akim Demaille + + Make sure lir and hir files are recreated. + + * tests/tests.mk: Declare lir and hir precious. + * tests/README: Update. + * tests/good/if-and-bool.hir, tests/good/if-and-bool.lir: Regen. + I don't know why they changed, something is fishy. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1785 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-18 Akim Demaille + + 2004-11-18 Akim Demaille + + New target, recheck. + + * tests/tests.mk (recheck): New. + * tests/Makefile.am (recheck, recheck-recursive, recheck-am): New. + * Makefile.am (recheck): New. + (doc, html): Use AM_MAKEFLAGS, not MAKEFLAGS. + * tests/README: Complete. + + * tcsh/Makefile.am (libtcswigpy_so_SOURCES): Rename as... + (nodist_libtcswigpy_so_SOURCES): this. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1784 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-17 Akim Demaille + + 2004-11-17 Akim Demaille + + Catch up with CVS Bison. + + * src/parse/scantiger.ll (current_file): Remove. + (YY_USER_INIT): Remove: now the initialization is performed by the + parser. + * src/parse/parsetiger.yy (%parse-param): Use it to pass the + current input filename. + (%initial-action): Use it to initialize yylloc's filename. + (%printer): Don't output the location: Bison's parsers already do + it. + (Parser::print_): Remove, no longer defined in the current CVS Bison. + * src/parse/libparse.cc: Adjust the call to the Parser ctor. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1783 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-17 Geoffroy Fouquier + + 2004-11-16 Arnaud Fabre + + * tests/tc-check.in (load_tests): Correct title of binding tests. + Check tests contained by escapes/ and type/. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1782 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-17 Geoffroy Fouquier + + from Akim Demaille + + * src/bind/bind-visitor.hh, src/bind/bind-visitor.cc (var_put) + (var_get, type_put, type_get, fun_put, fun_get): Remove, inline in + their (unique) callers. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1781 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-15 Yoann Fabre + + 2004-11-15 Arnaud Fabre + + Make tc-check launch binding tests. + + * tests/tc-check.in (load_tests): Declare tests for bindings. Rename + tests of T3 to T104. + (stages_extract): Add T104 to list of availables tests. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1780 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-15 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-55 + + Some PrintVisitor factoring + + 2004-11-14 Akim Demaille + + Some PrintVisitor factoring. + + * src/ast/ast.yml: Comment changes. + * src/ast/print-visitor.cc (misc/escape.hh): Include. + (operator<< (Escapable), operator<< (Dec)): New. + Use it to factor some code. + One would like to factor the def_get part, but that's more tricky, + and therefore probably isn't worth the change. + Nevertheless, in that case, it would be tempting to introduce a + UseExp virtual class in the Ast, sort of dual of Dec, that would + include both the name and def parts. + * src/ast/print-visitor.hh (misc/escape.hh): Don't include. + Comment changes. + * src/assem/fwd.hh: Remove a dead fixme. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1779 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-15 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-54 + + misc::pair, a std::pair with support for operator<<. + + 004-11-12 Akim Demaille + + misc::pair, a std::pair with support for operator<<. + + * src/misc/pair.hh, src/misc/pair.hxx: New. + * src/ast/print-visitor.cc: Use it. + * src/misc/test-separator.cc: Test the use of misc::pair. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1778 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-15 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-53 + + Sugar to print separated lists + + 2004-11-11 Akim Demaille + + Sugar to print separated lists. + + * src/misc/containers.hh, src/misc/containers.hxx + (print_with_separator): Remove, replaced by... + * src/misc/separator.hh, src/misc/separator.hxx: New. + * src/ast/print-visitor.cc, src/translate/access.cc, + * src/tree/fragments.cc, src/tree/trees.cc: Use it. + * src/misc/test-separator.cc: New. + * src/misc/Makefile.am: Adjust. + Sort. + * src/misc/dereh.hh (postr_): Rename as... + (ostr_): this, for consistency. + (Deref::operator() (ref)): New. + Formatting changes. + * src/misc/deref.hxx: Adjust. + * src/misc/ref.hh: Formatting changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1777 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-15 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-52 + + Really update configure.ac. + + * configure.ac: Bump to 0.80a. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1776 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-15 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-51 + + Fix tests Makefile machinery + + 2004-11-11 Akim Demaille + + Fix tests Makefile machinery. + + * configure.ac: Bump to 0.80a. + * tests/mk-Makefile-am, tests/tests.mk: Deep revamping. + See the following file to know more. + * tests/README: New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1775 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-10 Akim Demaille + + 2004-11-10 Akim Demaille + + Version 0.80. + For 2005b-tc-4.0. + + * src/type/README: Update. + * src/type/types.cc, src/type/types.hxx: Formatting changes. + * src/type/type-visitor.cc (operator() (SimpleVar)): Simplify. + * src/type/types.hxx (operator<< (Field)): Fix typo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1774 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-10 Akim Demaille + + 2004-11-10 Akim Demaille + + Version 0.80. + For 2005b-tc-4.0. + * src/type/README: Update. + * src/type/types.cc, src/type/types.hxx: Formatting changes. + * src/type/type-visitor.cc (operator() (SimpleVar)): Simplify. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1773 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-10 Akim Demaille + + 2004-11-10 Akim Demaille + + * src/type/types.hh, src/type/types.hxx (Type::operator!=): New. + * src/type/type-visitor.h, src/type/type-visitor.cc (check_type) + (check_types): Return void, not bool. + Simplify using type (). + Use operator!= for Types. + * src/type/type-visitor.cc (type (fields_type)): Simplify using + type (). + (operator() (SubscriptVar&), operator() (WhileExp&)), + (operator() (ForExp&)): Just by adjusting the control flow and the + place where the output type is set, make it useless to "return", + hence, make it useless to use check_type's return value. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1772 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-10 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1771 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-10 Akim Demaille + + 2004-11-10 Akim Demaille + + Finally revert to not shipping Swig output files. + See NEWS for more details. + + * tcsh/Makefile.am (AM_SWIGFLAGS): New. + (python_PYTHON): Rename as... + (nodist_python_PYTHON): this. + Remove `$(srcdir)/' for Swig output files. + * tcsh/generate-swig-mk: Remove `$(srcdir)/' for Swig output + files. + (python_PYTHON): Rename as... + (nodist_python_PYTHON): this. + ($dest: $src): Use AM_SWIGFLAGS. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1770 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-09 Akim Demaille + + 2004-11-09 Akim Demaille + + * src/types/types.hh, src/types/types.hxx, src/types/types.cc + (Named::protect, Type::is_singleton): Remove these hacks. + The right model to reclaim memory belongs to the AST, when + freeing TypeDecs and FunctionDecs. + Currently, ast-nodes-gen probably don't support what's needed, so + this patch introduces additional leaks, but provides a better + code. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1769 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-08 Gilles Walbrou + + Fix callgraph + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1768 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-05 Akim Demaille + + 2004-11-05 Akim Demaille + + * src/escapes/escapes-visitor.hh, src/escapes/escapes-visitor.cc + (EscapesVisitor, ~EscapesVisitor): Remove, to emphasize how easy + this exercise is. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1767 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-05 Akim Demaille + + 2004-11-05 Akim Demaille + + * src/type/type-visitor.cc (operator() (VarDec)): The type + provided must be taken into account, at least if the variable + where initialized to nil. + And ntw: do check that in that case the type is specified. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1766 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-05 Akim Demaille + + 2004-11-05 Akim Demaille + + * src/type/types.hh, src/type/types.cc (Type::assignable_to): Remove. + (Type::comparable_to): Rename as... + (Type::compatible_with): this. + Adjust descendants. + * src/type/type-visitor.cc (check_types_assignable): Remove both + implementations. + Adjust callers to use the following function instead. + (check_types_comparable): Rename as... + (check_types): these (there are two). + Adjust all callers. + (operator() (RecordExp), operator() (CallExp), operator() (OpExp)) + (operator() (VarDec)): Simplify the control flow: remove useless + returns and ifs. + When possible, set the outgoing type (that of the node visited) + first, and then check the incoming types (those of its children). + That does simplify the writing. + * src/overload/overfun-type-visitor.cc: Adjust. + * src/types/test-types.cc: Complete. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1765 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-05 Akim Demaille + + Add missing LPR and LIR files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1764 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-04 Yoann Fabre + + 2004-11-05 Arnaud Fabre + + Factor some checks into type method. + + * type-visitor.cc (type (ast::Typable& e)): Check that node is not already + visited before resolving its type. + (check_type,check_types_comparable,check_types_assignable): Call + unconditionally type. + (operator() (ast::IfExp& e)): Remove useless if. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1763 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-04 Yoann Fabre + + 2004-11-04 Arnaud Fabre + + Simplify a bit usage of check_types_comparable and + check_types_assignable. + + * src/type/type-visitor.hh, src/type/type-visitor.cc + (check_types_assignable,check_types_comparable): New overloaded + methods, using Typable. + * src/type/type-visitor.cc (operator() (ast::OpExp& e)) + (operator() (ast::AssignExp& e),operator() (ast::IfExp& e)): Use them. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1762 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-04 Gilles Walbrou + + Rename call-graph as callgraph + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1761 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-03 Gilles Walbrou + + Add call-graph directory + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1760 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-11-02 Akim Demaille + + 2004-11-02 Akim Demaille + + * src/liveness/test-flowgraph.cc (main): Rename variables. + Remove trailing useless initializations. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1759 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-28 Akim Demaille + + 2004-10-28 Akim Demaille + + * tcsh/generate-swig-mk, tcsh/Makefile.am: Use nodist_ when + listing sources from other directories, to avoid a second shipping + request (which is benign), or an undesired shipping, as was the + case for src/version.cc, generated. + Reported by Clément Vasseur. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1758 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-28 Akim Demaille + + 2004-10-28 Akim Demaille + + * src/ast/ast.yml (AssignExp): Remove the useless force member. + * src/type/type-visitor.hh (var_read_only_): Back to storing + Ast*, since that eases the membership test against a SimpleVar's + definition which is an Ast*. + * src/type/type-visitor.cc (operator ()(AssignExp&)): Set the + node's type first to avoid error recovery pitfalls. + Simplify the code. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1757 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-27 Yoann Fabre + + 2004-10-27 Arnaud Fabre + + Correct type of var_read_only_. + + * src/type/type-visitor.hh (TypeVisitor): Change type of + var_read_only_ to a more specific one. + * src/type/type-visitor.cc (operator() (ast::AssignExp& e)): Remove + useless static_cast. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1756 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-26 Yoann Fabre + + 2004-10-27 Arnaud Fabre + + Use misc::set for storing writable status of variables in TyV. + + * src/type/type-visitor.hh (var_writable_): Remove. Replace with... + (var_read_only_): this. New attribute. + * src/type/type-visitor.cc (): Adjust. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1755 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-26 Yoann Fabre + + 2004-10-27 Arnaud Fabre + + Suppress reporting of xalloc leaks. + + * tests/xalloc-leak.valgrind: New file. + * tests/tc-check.in (run): Use it when calling valgrind. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1754 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-26 Akim Demaille + + 2004-10-26 Akim Demaille + + * src/ast/tasks.cc (print): Add a missing std::endl. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1753 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-26 Akim Demaille + + 2004-10-26 Akim Demaille + + * configure.ac: Automake 1.9.2. + Bump to 0.79a. + * tests/tc-check.in (escapes_check): Pass -A after -E. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1752 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-26 Akim Demaille + + 2004-10-26 Akim Demaille + + Version 0.79. + For 2005b-tc-3.0. + + * src/ast/print-visitor.cc, src/bind/bind-visitor.cc, + * src/bind/bind-visitor.hh: Adjust student marks. + * src/bind/bind-visitor.hh (vartab_type, funtab_type) + (typetab_type): Remove, useless once inlined where used. + * src/ast/libast.hh, src/ast/print-visitor.cc (misc::xalloc.hh): + Remove useless inclusion. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1751 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-26 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1750 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-26 Akim Demaille + + 2004-10-26 Akim Demaille + + First stab at changing typing error recovery. + + * src/type/type-visitor.cc (type/types.hh): Include. + (operator ()(ArrayExp)): Set the type as soon as it is known. + * src/type/type-visitor.hh, src/type/type-visitor.cc + (type_recovery (Typable, Type): New. + Use it where appropriate for error recovery. + (check_types_equal): Rename as... + (check_type): this. + Tailor it for checking that a given AST node has an expected type, + and perform a nice error recovery in such a case. + Adjust all callers. + * src/ast/ast.yml (Typable): Initialize type_ to 0, to avoid the + ast dependency on type. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1749 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-26 Akim Demaille + + 2004-10-26 Akim Demaille + + Change the previous patch to use misc::xalloc. + + * src/ast/tasks.cc (ast_display): Don't override the xalloc'ed + flags. + * src/escapes/tasks.cc, src/escapes/tasks.hh (escapes-display) + (escapes-sl-display, escapes-tags-display): Make them actual Tasks + that have a side effect on std::cout. + * src/bind/tasks.cc, src/bind/tasks.hh (bindings-display): Likewise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1748 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-25 Gilles Walbrou + + Change bind and escapes display + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1747 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-25 Yoann Fabre + + 2004-10-25 Arnaud Fabre + + Store writable flag of variables in TypeVisitor, not in AST. + + * src/ast/ast.yml (writable): Remove. Replace by... + * src/type/type-visitor.hh (var_writeable_): New attribute. + * src/type/type-visitor.cc (operator() (ast::AssignExp& e)) + (operator() (ast::ForExp& e), operator() (ast::VarDec& e)): Use it. + * src/ast/vardec.cc, src/ast/vardec.hxx, src/ast/vardec.hh: Regen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1746 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-25 Yoann Fabre + + 2004-10-25 Arnaud Fabre + + * src/bind/bind-visitor.cc (operator() (ast::NameTy& e)): Remove + irrelevant FIXME. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1745 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-25 Yoann Fabre + + Correct ChangeLog + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1744 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-25 Roland Levillain + + 2004-10-25 Roland Levillain + + Document ast::Typable. + + * config/ast-nodes-gen (print_namespace_class_open): Print + optional description. + * src/ast/ast.yml (Typable): Describe the class. + * src/ast/typable.hh: Regen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1743 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-25 Roland Levillain + + 2004-10-25 Roland Levillain + + Use ast::Typable to also store the type of declared objects. + + * src/ast/ast.yml (Dec): Remove attribute `type'. + Make it inherit from Typable. + * src/ast/dec.cc, src/ast/dec.hh, src/ast/dec.hxx: Regen. + + * src/type/type-visitor.cc + (TypeVisitor::visitDecHeader) + (TypeVisitor::operator() (ast::VarDec&)) + (TypeVisitor::visitDecHeader): Comment the usage of + Typable::type_ in Dec nodes. + (TypeVisitor::operator() (ast::NameTy&)): Remove irrelevant FIXME. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1742 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-25 Akim Demaille + + 2004-10-25 Akim Demaille + + * configure.ac, src/Makefile.am, src/overload/Makefile.am, + * src/overload/overfun-type-visitor.cc, + * src/overload/overfun-type-visitor.hh, src/type/test-type.cc, + * tcsh/generate-tc-shared-mk: Revert Rolland's changes of 2004-10-21 + to re-enable the compilation of overload. + * src/overload/fun-entry.hh, src/overload/fun-entry.cc: New, based + on the late type::FunEntry class. + Adjust callers. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1741 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-25 Akim Demaille + + 2004-10-25 Akim Demaille + + * src/type/test-type.cc: Catch up the changes. In particular, + the environment no longer plays any role here. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1740 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-24 Yoann Fabre + + 2004-10-24 Arnaud Fabre + + Remove TypeEnv. Correct FIXME in bind visitor since prelude is + functional. + + * src/type/Makefile.am (libtype_a_SOURCES): Adjust. + * src/type/type-visitor.hh: Remove include of type-env.hh. + * src/type/type-entry.hxx, src/type/type-env.cc, + * src/type/type-entry.cc, src/type/type-env.hh, + * src/type/type-entry.hh: Remove. + * src/bind/bind-visitor.cc (operator() (ast::CallExp& e)): Remove + hardcoded builtin names. + * src/type/types.hh (Function): Correct whitespaces. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1739 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-23 Yoann Fabre + + 2004-10-23 Arnaud Fabre + + Correct compilation problem of test ast. + + * src/ast/Makefile.am (test_ast_LDADD): Complete the missing lib. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1738 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-22 Akim Demaille + + 2004-10-22 Akim Demaille + + * config/studentize (studentize): Don't chop, chomp, in case the + last line of the file lacks an eol. + * config/ast-nodes-mk-gen: Use print. + Make sure the last eol is not missing. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1737 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-22 Roland Levillain + + 2004-10-22 Roland Levillain + + * src/bind/bind-visitor.hh, src/translate/translate-visitor.cc + * src/type/types.hh, src/type/type-entry.hh, src/type/type-env.hh, + * src/type/type-visitor.hh: Use ``argument'' instead of + ``parameter'' when talking about function's arguments. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1736 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-22 Roland Levillain + + 2004-10-22 Roland Levillain + + Revert to a correct usage of Doxygen's \arg and \param commands. + + * src/type/types.hh (type::Named::Named, type::Field::Field) + (type::Function::Function): Use \param for function arguments in + Doxygen comments. + * src/type/type-entry.hh (type::VarEntry::VarEntry) + (type::FunEntry::FunEntry): Likewise. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1735 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-22 Akim Demaille + + 2004-10-22 Akim Demaille + + Remove the "kind" annotation: use the type annotations. + + * src/ast/ast.yml (AssignExp, IfExp, LetExp, OpExp) + (SeqExp, VarDec): Remove their Kind and kind. + * src/type/type-visitor.cc (AssignExp, IfExp, LetExp, OpExp) + (SeqExp, VarDec): Don't update their kinds. + * src/translate/translate-visitor.cc (AssignExp, IfExp, LetExp, OpExp) + (SeqExp, VarDec): Don't use them use the types. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1734 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-22 Akim Demaille + + 2004-10-22 Akim Demaille + + * config/ast-nodes-gen (declare_visitor): New, extracted from... + (print_visitor): here. + Adjust. + Don't rely on visitable, rather, whether the class is abstract or + concrete. + * src/ast/ast.yml, config/ast.py: Remove visitable support. + * src/type/type-visitor.hh, src/type/type-visitor.cc + (type (ast::Exp&), type (ast::Ty&)): Merge into... + (type (ast::Typable&)): this. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1733 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-22 Roland Levillain + + 2004-10-22 Roland Levillain + + * src/type/types.hh (type::Function), + * src/type/type-entry.hh (type::FunEntry): Typo in documentation. + + * src/type/types.hh (type::Named::Named, type::Field::Field) + (type::Function::Function): Use \arg instead of \param for + function arguments in Doxygen comments. + * src/type/type-entry.hh (type::VarEntry::VarEntry) + (type::FunEntry::FunEntry): Likewise. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1732 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-22 Akim Demaille + + 2004-10-22 Akim Demaille + + No LevelEnv is needed now that we have no scope to handle. + + * src/translate/translate-visitor.hh (env_): Remove. + (var_access_, fun_level_, fun_label_): New. + * src/translate/translate-visitor.cc: Adjust all former uses of + the env_ to directly attack these maps. + * src/translate/level-entry.hh, src/translate/level-env.cc, + * src/translate/level-env.hh, src/translate/level-env.hxx: Remove, + useless. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1731 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-21 Roland Levillain + + 2004-10-21 Roland Levillain + + Label the AST nodes with type information. Use a new type, + type::Function, to store the type of a function. + + * src/ast/ast.yml (VarDec): New `writable' attribute. + (Dec): New `type' attribute. + * src/ast/vardec.cc, src/ast/vardec.hh, src/ast/vardec.hxx, + * src/ast/dec.cc, src/ast/dec.hh, src/ast/dec.hxx: Regen. + + * src/type/types.hh, src/type/types.hxx, src/type/types.cc + (type::Function): New class. + + * src/type/type-visitor.hh (TypeVisitor::env_) + (TypeVisitor::type_): Remove attributes. + (TypeVisitor::type (ast::Ast&)): Remove this method. + (TypeVisitor::type (ast::Exp&)) + (TypeVisitor::type (ast::Ty&)): New method. + (TypeVisitor::type (ast::fields_type&)): Add const qualifier to + argument, yielding... + (TypeVisitor::type (const ast::fields_type&)): ...this method. + * src/type/type-visitor.cc: Likewise. + (TypeVisitor::TypeVisitor): Adjust ctor. + (TypeVisitor::type_recovery): Adjust. + + * src/type/type-visitor.cc + (TypeVisitor::operator() (ast::SimpleVar&)) + (TypeVisitor::operator() (ast::FieldVar&)) + (TypeVisitor::operator() (ast::SubscriptVar&)) + (TypeVisitor::operator() (ast::NilExp&)) + (TypeVisitor::operator() (ast::IntExp&)) + (TypeVisitor::operator() (ast::StringExp&)) + (TypeVisitor::operator() (ast::RecordExp&)) + (TypeVisitor::operator() (ast::CallExp&)) + (TypeVisitor::operator() (ast::OpExp&)) + (TypeVisitor::operator() (ast::SeqExp&)) + (TypeVisitor::operator() (ast::AssignExp&)) + (TypeVisitor::operator() (ast::IfExp&)) + (TypeVisitor::operator() (ast::WhileExp&)) + (TypeVisitor::operator() (ast::ForExp&)) + (TypeVisitor::operator() (ast::BreakExp&)) + (TypeVisitor::operator() (ast::BreakExp&)) + (TypeVisitor::operator() (ast::LetExp&)) + (TypeVisitor::operator() (ast::ArrayExp&)) + (TypeVisitor::operator() (ast::VarDec&)) + (TypeVisitor::operator() (ast::FunctionDec&)) + (TypeVisitor::operator() (ast::TypeDec&)): Get/store type + information from/to the AST. + + * NEWS: Update. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1730 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-21 Roland Levillain + + 2004-10-21 Roland Levillain + + Disable function overloading. + + * configure.ac (MODULES), src/Makefile.am (SUBDIRS, tc_LDADD) + * tcsh/generate-tc-shared-mk (MODULES): Exclude `overload' from + the list of modules. + + * NEWS: Update. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1729 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-21 Roland Levillain + + 2004-10-21 Roland Levillain + + Introduce a new Typable abstract class for typable AST nodes. + + * src/ast/ast.yml (TypeDec): Rename `type' attribute as `ty'. + * src/ast/default-visitor.hxx: + (GenDefaultVisitor::operator()(typename Const::type&)): + Adjust. + * src/ast/print-visitor.cc + (PrintVisitor::operator() (const TypeDec&)): Adjust + * src/type/type-visitor.cc + (TypeVisitor::visitDecBody): Adjust. + * src/cppgen/cppgen-visitor.cc + (CppGenVisitor::operator() (const ast::TypeDec&)): Adjust. + (CppGenVisitor::operator() (const ast::TypeDecs&)): Adjust. + * src/ast/typedec.cc, src/ast/typedec.hh, src/ast/typedec.hxx: + Regen. + + * src/ast/ast.yml (Typable): New node. + (Exp, Ty): Make these nodes inherit from Typable. + * src/ast/typable.cc, src/ast/typable.hh, src/ast/typable.hxx: New + files (generated). + + * NEWS: Update. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1728 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-21 Roland Levillain + + 2004-10-21 Roland Levillain + + Prepare the AST-generation tools for the upcoming ast::Typable + class. + + * config/ast.py (Node.ctor_args): Handle the case of zero + arguments in super classes. + (Node): New `visitable' attribute, set as true by default. + * config/ast-nodes-gen (includes_map): Add mappings for type::Type + and type::Int. + (print_ctor_dtor): Fix the output of the initialisation list of + constructors with no arguments. + (print_visitor): Print only visitable nodes. + * src/ast/ast.yml: Add comments. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1727 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-21 Akim Demaille + + 2004-10-21 Akim Demaille + + Have it distcheck. + + * tcsh/Makefile.am (XFAIL_TESTS): New. + * tests/mk-Makefile-am: Make sure tih files are shipped. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1726 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-20 Yoann Fabre + + 2004-10-20 Arnaud Fabre + + Correct Makefile so that a fresh checkout can be compiled. + + * src/ast/Makefile.am (position.hh, location.hh): Correct creation of + these files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1725 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-20 Akim Demaille + + 2004-10-20 Akim Demaille + + * tcsh/Makefile.am (EXTRA_DIST): Ship the TESTS. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1724 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-20 Akim Demaille + + 2004-10-20 Akim Demaille + + Have tc-check work _only_ with a _build dir. + + * tests/tc-check.in ($tc_inc_path): Adjust. + (&project_make): Ensure there is a _build dir. + Build into it. + And run make twice if the first fails, my machine has bad RAM. + * Makefile.am (check-local): Pass $(srcdir) to tc-check, that + wants the top-level srcdir, not builddir. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1723 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-20 Akim Demaille + + 2004-10-20 Akim Demaille + + * src/translate/translate-visitor.cc (translate): Remove translate + invocation nondeterminism. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1722 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-20 Akim Demaille + + 2004-10-20 Akim Demaille + + * src/translate/leve-env.hxx (BUILTINS): Remove. + (level_get, label_get): No longer implement an exception for + primitives. + * src/translate/translate-visitor.cc (visitFunctionDecHeader): A + primitive uses its own label, and has no level. + (const ast::FunctionDecs&): Go into primitive + definition headers. + (const ast::CallExp&): Assert the level is defined when needed. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1721 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-20 Akim Demaille + + 2004-10-20 Akim Demaille + + * src/translate/translate-visitor.cc (CallExp): Remove the + exception for SL, since now, primitives correctly don't need one. + * data/prelude.tig (not): Implement as a function, so that we + don't need the exception for _not. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1720 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-20 Roland Levillain + + 2004-10-20 Roland Levillain + + * src/translate/translate-visitor.cc + (TranslateVisitor::operator() (const ast::SeqExp&)): Check the + validity of the kind of the SeExp. + + * src/ast/fwd.hh: Regen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1719 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-20 Akim Demaille + + 2004-10-20 Akim Demaille + + * tests/tests.mk: Rewrite the generation of out, sta, hir, hpr, + lir, and lpr files, to make sure that the dependencies are right, + and the files are produced in srcdir. + To this end, we depend on GNU Make extensions, what *greatly* + simplifies the implementation (and allows factorization). + (TC): Now do use the shipped tc. + * tests/mk-Makefile-am: Disable overload. + Ship lpr and hpr files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1718 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-18 Akim Demaille + + 2004-10-18 Akim Demaille + + Simplify misc::xalloc for integral types. + + * src/misc/xalloc.hh (xalloc::set_, xalloc::get_, xalloc::rget_): + Remove. + (xalloc::value): New. + Use it to replace the previous two. + Change the prototypes and implementation so that we always + store exactly the parameter type. Before, we handled a + pointer of that type, which prevented simple types such + as bool to be used simply. + (xalloc::operator ()): Remove. + * src/ast/print-visitor.cc: Adjust. + * src/ast/tasks.hh, src/ast/tasks.cc (ast-initialization): Remove, + useless. + Adjust dependencies. + * src/bind/tasks.hh, src/escapes/tasks.hh: Likewise. + * src/misc/fwd.hh (xalloc): New fwd decl. + * src/ast/fwd.hh: Do not include misc/xalloc.hh, it defeats the + whole point of fwd.hh. + * src/ast/test-ast.cc: No longer include tasks.cc, it is useless + now that we rely on the initialization to 0 of xalloc'd slots. + Use less funky names. + Fix the *£&$ coding style. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1717 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-15 Nicolas Pouillard + + 2004-10-15 Nicolas Pouillard + + * src/ast/ast.yml: Remove dots at the beginning of inlined code. + * config/ast-nodes-gen: Update. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1716 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-15 Yoann Fabre + + 2004-10-15 Arnaud Fabre + + Fix regression caused by primitives in translate visitor. + + * src/ast/ast.yml (FunctionDec): Take in account whether the function + is a builtin or not to initialize sl_needed and sl_escapes. + * src/ast/functiondec.cc: Regen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1715 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-13 Yoann Fabre + + Fix ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1714 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-13 Akim Demaille + + 2004-10-13 Akim Demaille + + * configure.ac: Bump to 0.78a. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1713 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-13 Akim Demaille + + 2004-10-13 Akim Demaille + + Version 0.78. + For 2005b-tc-2.0. + * config/stagize (where): Catch up with bootstrap. + * Makefile.am (diff_re): Accept 2005b as a year. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1712 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-13 Akim Demaille + + 2004-10-13 Akim Demaille + + * tests/tests.mk (Makefile.am): Qualify with srcdir to make sure + the rule is triggered. + * tests/tc-check.in: Comment changes. + Show all the chdirs. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1711 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-13 Nicolas Pouillard + + 2004-10-13 Nicolas Pouillard + + * tests/tc-check.in: Add a parameter to transmit + some options to the compiler in ir_check_one. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1710 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-13 Akim Demaille + + * tcsh: Update svn:ignore. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1709 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-13 Akim Demaille + + update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1708 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-13 Akim Demaille + + 2004-10-13 Akim Demaille + + * tests/tc-check.in (&run_test): More empty lines to separate test + groups. + (&summary): Add missing eol after reporting leaks. + (&interface_check): Revert my previous patch: use &check_external + instead of &check. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1707 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-13 Yoann Fabre + + Complete svn:ignore in tests/import and data directories. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1706 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-13 Yoann Fabre + + 2004-10-13 Arnaud Fabre + + Improve use of --prelude in tc-check. + + * tests/tc-check.in: Make a clever use of --prelude. + ($tc_exe): Remove. + * tests/syntax/import-recursive1.tig: Move... + * tests/import/import-recursive1.tig: here. + (import): Import a header file instead of import-recursive1.tig. + * tests/import/import-recursive1.tih: New header included by previous + file. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1705 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-12 Yoann Fabre + + Fix style issues in Changelog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1704 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-12 Akim Demaille + + 2004-10-12 Akim Demaille + + * tests/tc-check.in (&interface_check): No reason to use + check_external. + Formatting changes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1703 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-12 Akim Demaille + + 2004-10-12 Akim Demaille + + * src/parse/parsetiger.yy (import STRING): Free the string since + we keep the symbol from it. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1702 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-12 Akim Demaille + + 2004-10-12 Akim Demaille + + * src/ast/test-ast.cc: Fix it. + It needs to be adjusted to the new LetExp implementation. + It also needs to initialize our xalloc'ed bool. + This sucks, and is probably easily fixable using iword instead of + pword for integral types. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1701 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-12 Akim Demaille + + 2004-10-12 Akim Demaille + + Free memory when importing. + + * src/parse/import-visitor.cc (operator() (decs_list_type)): Free + the import nodes when processed. + Free the spliced list. + + Fix some mistakes in tcsh. + + * tcsh/test.py: Use the 0-ary FileLibrary ctor. + * tcsh/generate-swig-mk: Produce cc files, not cxx. + * tcsh/Makefile.am: More comments. + Ship swigpy.i. + + Let LetExp free the decs. + + * config/ast.py (re_list): foo_list_type is also a container type. + * config/ast-nodes-gen (re_list): Remove, use ast.py's one. + + Ship the prelude. + + * data/Makefile.am (pkgdata_DATA): Rename as... + (dist_pkgdata_DATA): this, to ship the file. + + * bootstrap: Set -e. + Adjust to non-writable *.mk files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1700 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-12 Akim Demaille + + 2004-10-12 Akim Demaille + + Fix tcsh. Well, try to: it segfaults! + + * src/bind/tiger_bind.i (bind/fundecgraph.hh): Don't include it, + it doesn't exist! + * tcsh/tcsh.test, tcsh/run.in: New. + * tcsh/generate-swig-mk (MODULES): Add bind. + (swig_ldadd): Remove, inline its value. + (swig_ldflags): Don't pass -lswigpy, since recent versions of Swig + no longer package it. Rather, you have to link with a library you + do yourself (see swigpy.i below). + (swig_ldflags): Don't pass libcommon.so here, do it for each + module_so_LDFLAGS, together with libtcswigpy.so. + Define module_so_DEPENDENCIES to make sure everything is built in + the right order. + Split the rule to invoke Swig in two, since the semantics of Make + don't allow several products in a rule. + Save the output of Swig in srcdir, and ship it. + * tcsh/generate-tc-shared-mk (CLEANFILES): Remove, made no sense. + * tcsh/Makefile.am: More comments. + (tc-shared.mk, swig.mk): Add targets to update them. + (TESTS_ENVIRONMENT, check_SCRIPTS, TESTS): New. + Inspiration taken from Spot, by Alexandre Duret-Lutz. + (libtcswigpy.so): New. + * tcsh/test.py: Adjust the call to the parser. + Gosh, this is hairy... + * tcsh/tc.py: Import tiger_misc and tiger_bind. + Define shortcuts. + * configure.ac (tcsh/run): Configure it. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1699 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-12 Akim Demaille + + 2004-10-12 Akim Demaille + + * src/misc/filelibrary.hh, src/misc/filelibrary.cc + (Filelibrary): New ctor with no argument. + Do not take TC_PKGDATADIR into account here! That's impure. + Rather... + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1698 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-12 Akim Demaille + + 2004-10-12 Akim Demaille + + * src/misc/path.hh, src/misc/filelibrary.hh (print): Add the Swig + magic to rename it to dump. + * src/misc/path.hh, src/misc/path.cc (Path): New ctor with no + argument. + Do not take TC_PKGDATADIR into account here! That's impure. + Rather... + * src/parse/tasks.cc (tc_pkgdatadir): do it in this new variable. + (file_library): Use it. + * src/misc/tiger_misc.i: Include path.hh and filelibrary.hh. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1697 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-12 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1696 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-12 Yoann Fabre + + 2004-10-12 Arnaud Fabre + + Report changes of src/ast/fwd.hh into config/ast-fwd-gen, since + fwd.hh is generated. + + * src/ast/fwd.hh: Regen. + * config/ast-fwd-gen: Report changes of src/ast/fwd.hh. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1695 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-12 Yoann Fabre + + 2004-10-12 Arnaud Fabre + + Add tests for import. + + * configure.ac (AC_CONFIG_FILES): New Makefile in tests/import. + * tests/tc-check.in (import): New section of tests for TC-2. + * tests/mk-Makefile-am, tests/Makefile.am (SUBDIRS): New subdir + import. + * tests/import/Makefile.am: New generated file. + * tests/syntax/Makefile.am, tests/good/Makefile.am: Regen. + + Test files. + + * tests/syntax/import-recursive1.tig, + * tests/good/complex-import.tig, + * tests/good/complex-import-header1.tih, + * tests/good/basic-import.tig, + * tests/good/complex-import-header2.tih, + * tests/good/basic-import-header.tih, + * tests/import/import-non-existent-file.tig, + * tests/import/import-recursive2.tig, + * tests/import/import-rec-header1.tih, + * tests/import/import-rec-header2.tih: New test files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1694 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-12 Yoann Fabre + + 2004-10-12 Arnaud Fabre + + Support for --prelude in tc-check. + + * src/prelude.tig: Renamed as... + * data/prelude.tig: this. + * configure.ac, Makefile.am, data/Makefile.am: New repertory data, + adjust makefiles. + * src/parse/task.hh (prelude): Make default prelude file + "prelude.tig". + * tests/tc-check.in: New option --install-tc. Pass --prelude= and -B + data when needed to tested tc. + * tests/tests.mk (TIG2HIR, TIG2LIR): Adjust search path so that tc + uses the good prelude file when generating reference files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1693 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-12 Yoann Fabre + + 2004-10-12 Arnaud Fabre + + Correct a problem with "../.." in misc::Path. + + * src/misc/path.cc (append_rep): Correct handling of "../../". + * src/misc/test-path.cc: Test Path with "../..". Ensure use of + operator() (std::string) instead of constructor since we want to check + data and not replace it. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1692 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-11 Yoann Fabre + + 2004-10-11 Arnaud Fabre + + Correct search path handling. + + * src/misc/filelibrary.cc, src/misc/filelibrary.hh + (ensure_absolute_path): New method. + * src/misc/filelibrary.cc (append_dir, prepend_dir): Use + ensure_absolute_path. + (append_dir_list): Correct typo. + (FileLibrary): Ensure working directory is set before adding + repertories. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1691 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-10 Gilles Walbrou + + Add a task for the init of xalloc + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1690 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-08 Gilles Walbrou + + Use xalloc in the PV + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1689 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-08 Yoann Fabre + + Fix ChangeLog style + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1688 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-08 Yoann Fabre + + Add multiple-string-task.cc and multiple-string-task.hh, forgotten in previous commit + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1687 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-08 Yoann Fabre + + 2004-10-08 Arnaud Fabre + + Add options --library-append and --library-prepend. Use TC_PKGDATADIR + for default search path. Fix some comments. + + * src/task/libtask.hh, src/task/Makefile.am (MultipleStringTask): New + type of task. + * src/parse/tasks.cc, src/parse/tasks.hh (library-append) + (library-prepend): New options. + * src/parse/import-visitor.hh: Move a include of ... + * src/parse/import-visitor.cc: ...here. + * src/misc/filelibrary.hh, src/misc/filelibrary.cc + (append_dir_list): New method. + (FileLibrary): Use envvar TC_PKGDATADIR for default search path. + * src/misc/path.cc (init): Fix style issue. + + Correct comments. + + * src/parse/tasks.hh, src/misc/filelibrary.hh, + src/parse/import-visitor.hh: Fix comments. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1686 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-07 Yoann Fabre + + 2004-10-07 Arnaud Fabre + + Handling of path for import directive. Correct some bugs in + import procedure. + + * src/parse/libparse.hh (parse): New argument file_library. + * src/parse/libparse.cc (parse): Use file_library for handling + search_path. + * src/parse/import-visitor.hh, src/parse/import-visitor.cc: + (ImportVisitor): Removed + included_path, replaced by file_library. + (operator() (decs_list_type&)): New method. + (parse_prelude): New argument location. + (is_absolute_path, current_path_get, remove_filename_from) + (find_file, include_path_, includes_): Removed. file_library + does a better job for them. + (included_file): New structure. + (file_library_): New attribute. + (already_included): New method. + * src/parse/import-visitor.cc (ImportVisitor): Simplify change + of directory by using file_library. + (parse_prelude): Delegate all path computations to file_library. + Handle errors, and check for recursive include. + (operator() (decs_list_type&)): Process nested import + directives. + * src/parse/import-visitor.hxx: Removed. + * src/misc/path.hh, src/misc/path.cc, path.hxx: Fix comments. + (Path): Path object knows whether it is absolute or relative, by + using... + (absolute_get, absolute_): ...theses new method and attribute. + * src/misc/filelibrary.hh, src/misc/filelibrary.cc, + src/misc/filelibrary.hxx: New files. + * src/misc/fwd.hh (FileLibrary): New forward declaration. + * src/misc/Makefile.am (libmisc_a_SOURCES): Add filelibrary.hh, + filelibrary.hxx and filelibrary.cc. + * src/parse/Makefile.am (AM_CPPFLAGS): Defines PKGDATADIR on + command line. + (libparse_a_SOURCES): Removed import-visitor.hxx. + * src/parse/tasks.hh, src/parse/tasks.cc (file_library): New + global variable. + (library-display): New task. + (print_search_path): New function called by task + library-display. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1685 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-06 Akim Demaille + + 2004-10-06 Akim Demaille + + * configure.ac: Bump to 0.77a. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1684 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-06 Akim Demaille + + 2004-10-06 Akim Demaille + + Version 0.77. + For 2005b-tc-1.0. + + * configure.ac: Version 0.77. + Automake 1.9.1. + * config/stagize: Handle bind/. + * AUTHORS: Sort and complete. + Include Emacs hooks for text mode and American dictionary. + * NEWS: Update. + * Makefile.am (authors.h): Adjust. + * src/parse/scantiger.llsrc/parse/parsetiger.yy (seed_src) + (seed_header): Rename as... + (seed_source, seed_import): these. + Fix coding style issues. + * src/parse/parse.hh (YY_DECL): Move its use... + * src/parse/scantiger.ll: here. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1683 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-05 Gilles Walbrou + + Updating xalloc + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1682 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-05 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1681 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-10-01 Nicolas Pouillard + + 2004-10-01 Nicolas Pouillard + + * README-Subversion: New. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1680 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-30 Gilles Walbrou + + Add a swap function to xalloc + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1679 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-30 Nicolas Pouillard + + 2004-09-30 Nicolas Pouillard + + * src/translate/translate-visitor.hh, src/temp/map.hh, src/misc/set.hh, + * src/cppgen/includes/type.hh, src/cppgen/includes/function.hh, + * src/cppgen/includes/builtin.hh, src/cppgen/includes/control.hh: + Fix some templates style, and some trailling white-spaces in cppgen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1678 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-30 Nicolas Pouillard + + 2004-09-30 Nicolas Pouillard + + * config/ampersand_test.yml, config/ampersand.rb: Improve fix + templates style. + + * src/type/types.cc, src/type/type-visitor.cc, src/type/type-visitor.hh, + * src/escapes/escapes-visitor.cc, src/escapes/tasks.cc, + * src/escapes/callgraph-visitor.cc, src/liveness/flowgraph.hxx, + * src/liveness/libliveness.cc, src/liveness/liveness.hh, + * src/liveness/interference-graph.hh, src/liveness/flowgraph.hh, + * src/liveness/interference-graph.cc, src/regalloc/regallocator.cc, + * src/regalloc/color.hh, src/translate/libtranslate.hh, + * src/translate/tasks.hh, src/translate/translate-visitor.hh, + * src/translate/level-env.hh, src/translate/level-entry.hh, + * src/translate/libtranslate.cc, src/translate/tasks.cc, + * src/translate/translate-visitor.cc, src/canon/traces.hh, + * src/canon/canon.cc, src/canon/traces.cc, src/canon/canon.hh, + * src/canon/basic-block.cc, src/tree/eseq.cc, src/tree/eseq.hxx, + * src/tree/visitor.hxx, src/tree/move.hxx, src/tree/mem.hxx, + * src/tree/visitor.hh, src/tree/fwd.hh, src/graph/iterator.hxx, + * src/graph/graph.hh, src/graph/test-graph.cc, src/graph/handler.hxx, + * src/graph/graph.hxx, src/graph/iterator.hh, src/graph/handler.hh, + * src/task/task-register.cc, src/temp/identifier.hh, src/temp/tasks.hh, + * src/temp/label-list.hh, src/temp/temp.cc, src/temp/factory.hcc, + * src/temp/label.cc, src/temp/temp.hh, src/temp/factory.hh, + * src/temp/tasks.cc, src/temp/map.hcc, src/temp/map.hh, + * src/temp/label.hh, src/temp/fwd.hh, src/temp/identifier.hcc, + * src/assem/instrs.hh, src/assem/fragments.hh, src/assem/visitor.hh, + * src/assem/visitor.hxx, src/assem/instrs.cc, src/assem/fwd.hh, + * src/parse/import-visitor.hh, src/parse/import-visitor.cc, + * src/bind/bind-visitor.hh, src/bind/bind-visitor.cc, + * src/target/mips-cpu.cc, src/target/cpu.hh, src/target/tasks.cc, + * src/ast/anydecs.hh, src/ast/anydecs.hxx, src/ast/default-visitor.hh, + * src/ast/default-visitor.hxx, src/misc/xalloc.hh, src/misc/deref.hh, + * src/misc/path.hh, src/misc/deref.hxx, src/misc/escape.hh, + * src/misc/traits.hh, src/misc/ref.hxx, src/misc/xalloc.hxx, + * src/misc/set.hh, src/misc/set.hxx, src/misc/select-const.hh, + * src/misc/containers.hh, src/misc/escape.hxx, src/misc/ref.hh, + * src/misc/containers.hxx, src/misc/traits.hxx, src/misc/fwd.hh, + * src/codegen/mips/test-rw_prg.cc, src/codegen/mips/codegen.cc, + * src/codegen/tasks.cc, src/codegen/ia32/codegen.cc, + * src/symbol/symbol.hh, src/symbol/table.hh, src/symbol/table.hxx, + * src/overload/over-table.hxx, src/overload/over-table.hh, + * src/cppgen/includes/type.hh, src/cppgen/includes/function.hh, + * src/cppgen/includes/env.hh, src/cppgen/includes/explist.hh, + * src/cppgen/includes/lvalue.hh, src/cppgen/includes/arrayty.hh, + * src/cppgen/includes/dec.hh, src/cppgen/includes/recordty.hh, + * src/cppgen/includes/macro.hh, src/cppgen/includes/letinend.hh, + * src/cppgen/includes/builtin.hh, src/cppgen/includes/binop.hh, + * src/cppgen/includes/list.hh, src/cppgen/includes/control.hh, + * src/cppgen/cppgen-visitor.hh, src/cppgen/cppgen-visitor.cc: + Apply ampersand.rb. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1677 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-29 Nicolas Pouillard + + 2004-09-29 Nicolas Pouillard + + * config/stagize, bootstrap: Use ast.yml instead of ast.xml. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1676 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-28 Nicolas Pouillard + + 2004-09-28 Nicolas Pouillard + + * src/ast/ast.yml: New. + * src/ast/ast.xml: Remove. + * src/ast/functiondec.hh, src/ast/assignexp.hh, src/ast/letexp.hh, + * src/ast/ifexp.hh, src/ast/importdec.hh, src/ast/ast.hh, + * src/ast/visitor.hh, src/ast/Makefile.am, src/ast/fwd.hh: Regen. + * config/ast-visitor-gen, config/ast-nodes-gen, config/ast-nodes-mk-gen, + * config/ast-fwd-gen, config/ast.py: Update to load the Yaml. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1675 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-28 Akim Demaille + + 2004-09-28 Akim Demaille + + hir-compute fails on empty (let-) decs. + This results from several different issues, and a bit of luck. + misc::for_each copies its given functor to return the result. + The TrV's dtor destroys its level_ member, so when using + misc::for_each, a copy of the TrV is made, and then it dtor is + called, destroying level_, which is still "used" by the upper + level TrV, in particular it will be deleted again. + This was uncovered by the recent changes in let-parsing, which can + now create empty decs-let, although before in this case we + produced a SeqExp. + + * src/misc/containers.hh, src/misc/containers.hxx (for_each): + Return a reference to the functor, so that there is no copy of it + on return. + Arguably, we could return void. + * src/translate/translate-visitor.hh (translate): Declare, but do + not implement, the copy ctor. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1674 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-28 Gilles Walbrou + + Add a new parameter to xalloc + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1673 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-28 Nicolas Pouillard + + 2004-09-28 Nicolas Pouillard + + * config/ast-visitor-gen, config/ast-fwd-gen, config/ast.py: + Fix types style. + + * src/ast/arrayexp.cc, src/ast/arrayty.cc, src/ast/namety.cc, + * src/ast/whileexp.hh, src/ast/recordexp.hh, src/ast/recordty.hh, + * src/ast/whileexp.hxx, src/ast/nilexp.hh, src/ast/assignexp.hh, + * src/ast/functiondec.hh, src/ast/letexp.hh, src/ast/simplevar.hh, + * src/ast/dec.hxx, src/ast/functiondec.hxx, src/ast/assignexp.hxx, + * src/ast/letexp.hxx, src/ast/forexp.hxx, src/ast/ifexp.hh, + * src/ast/importdec.cc, src/ast/var.cc, src/ast/fieldinit.hxx, + * src/ast/dec.cc, src/ast/ty.cc, src/ast/typedec.cc, src/ast/field.hh, + * src/ast/subscriptvar.hh, src/ast/breakexp.cc, src/ast/forexp.cc, + * src/ast/seqexp.cc, src/ast/arrayexp.hh, src/ast/arrayty.hh, + * src/ast/stringexp.hxx, src/ast/fieldinit.cc, src/ast/namety.hh, + * src/ast/ast.hxx, src/ast/opexp.hxx, src/ast/namety.hxx, + * src/ast/stringexp.cc, src/ast/simplevar.hxx, src/ast/ast.cc, + * src/ast/callexp.cc, src/ast/intexp.hxx, src/ast/opexp.cc, + * src/ast/fieldvar.cc, src/ast/exp.cc, src/ast/importdec.hh, + * src/ast/escapable.hxx, src/ast/var.hh, src/ast/ast.xml, + * src/ast/vardec.cc, src/ast/dec.hh, src/ast/ty.hh, + * src/ast/typedec.hh, src/ast/intexp.cc, src/ast/callexp.hxx, + * src/ast/breakexp.hh, src/ast/forexp.hh, src/ast/recordexp.hxx, + * src/ast/recordty.hxx, src/ast/fieldvar.hxx, src/ast/seqexp.hh, + * src/ast/typedec.hxx, src/ast/fieldinit.hh, src/ast/whileexp.cc, + * src/ast/vardec.hxx, src/ast/seqexp.hxx, src/ast/recordexp.cc, + * src/ast/recordty.cc, src/ast/stringexp.hh, src/ast/ifexp.hxx, + * src/ast/nilexp.cc, src/ast/letexp.cc, src/ast/functiondec.cc, + * src/ast/ast.hh, src/ast/assignexp.cc, src/ast/simplevar.cc, + * src/ast/callexp.hh, src/ast/field.hxx, src/ast/opexp.hh, + * src/ast/exp.hh, src/ast/fieldvar.hh, src/ast/visitor.hh, + * src/ast/subscriptvar.hxx, src/ast/ifexp.cc, src/ast/arrayty.hxx, + * src/ast/arrayexp.hxx, src/ast/vardec.hh, src/ast/intexp.hh, + * src/ast/field.cc, src/ast/subscriptvar.cc, src/ast/escapable.hh, + * src/ast/fwd.hh: Regen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1672 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-28 Akim Demaille + + Wrap the ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1671 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-28 Nicolas Pouillard + + 2004-09-28 Nicolas Pouillard + + * config/ampersand.rb: Improve. + * src/type/type-env.hh, + * src/regalloc/regallocator.cc, + * src/regalloc/color.hh, + * src/liveness/flowgraph.hh, + * src/translate/exp.cc, + * src/translate/translation.cc, + * src/translate/translate-visitor.hh, + * src/translate/exp.hh, + * src/translate/level-env.hh, + * src/translate/translation.hh, + * src/translate/translate-visitor.cc, + * src/canon/traces.hh, + * src/tree/fragment.hh, + * src/tree/visitor.hxx, + * src/tree/call.cc, + * src/tree/fragment.cc, + * src/tree/call.hh, + * src/task/task.hh, + * src/temp/identifier.hh, + * src/temp/temp.cc, + * src/temp/temp-set.hh, + * src/temp/factory.hcc, + * src/temp/label.cc, + * src/temp/map.hh, + * src/temp/fwd.hh, + * src/temp/identifier.hcc, + * src/assem/visitor.hxx, + * src/parse/import-visitor.hh, + * src/parse/libparse.cc, + * src/parse/import-visitor.cc, + * src/ast/anydecs.hh, + * src/ast/default-visitor.hh, + * src/ast/default-visitor.hxx, + * src/frame/access.cc, + * src/misc/xalloc.hh, + * src/misc/ref.hxx, + * src/misc/timer.hh, + * src/codegen/mips/test-rw_prg.cc, + * src/codegen/mips/codegen.cc, + * src/codegen/ia32/codegen.cc, + * src/cppgen/includes/type.hh, + * src/cppgen/includes/function.hh, + * src/cppgen/includes/arrayty.hh, + * src/cppgen/includes/recordty.hh, + * src/cppgen/includes/letinend.hh, + * src/cppgen/includes/builtin.hh, + * src/cppgen/includes/control.hh: Normalize types. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1670 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-28 Gilles Walbrou + + Change a few names + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1669 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-28 Gilles Walbrou + + Adding a forgotten file + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1668 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-28 Gilles Walbrou + + Add a first xalloc wrapper implementation + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1667 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-27 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-45 + + Support --prelude + + 2004-09-27 Akim Demaille + + Support --prelude. + + * src/task/string-task.cc, src/task/string-task.hh: New. + * src/task/int-task.hh: Comment changes. + * src/task/Makefile.am, src/task/libtask.hh: Adjust. + + * src/Makefile.am (version.cc): Pacify Mac OSX's sed. + * src/parse/libparse.cc, src/parse/libparse.hh (parse): + Accept a new argument, prelude, and if not null, consider it + as a hidden import. + * src/parse/tasks.cc, src/parse/tasks.hh (prelude): New task. + (parse): Use this prelude. + + * src/prelude.tig: New. + Not shipped yet, until we know how to handle the library path. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1666 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-27 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-44 + + Implement primitive support + + 2004-09-27 Akim Demaille + + Implement primitive support. + + * src/parse/parsetiger.yy, src/parse/scantiger.ll: Recognize + "primitive" as a FunctionDec without any body. + And sort keywords. + * src/ast/ast.xml (FunctionDec::body): No longer mandatory. + * src/ast/functiondec.hh, src/ast/functiondec.hxx: Regen. + * src/ast/default-visitor.hxx, src/ast/print-visitor.cc + * src/cppgen/cppgen-visitor.cc, src/escapes/escapes-check-visitor.cc + * src/escapes/parentgraph-visitor.cc, + * src/overload/overfun-type-visitor.cc, + * src/translate/translate-visitor.cc, src/type/type-visitor.cc: + Adjust to body_get possibly returning 0. + Note that this is certainly not enough for cppgen. + + * tests/bind/primitive-and-function-same-chunk.tig, + * tests/type/primitive-arg.tig, tests/type/primitive-result.tig: New. + * tests/type/Makefile.am, tests/bind/Makefile.am: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1665 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-27 Nicolas Pouillard + + 2004-09-27 Nicolas Pouillard + + * src/type/test-type.cc, + * src/type/type-entry.hxx, + * src/type/types.cc, + * src/type/type-env.cc, + * src/type/types.hh, + * src/type/type-visitor.cc, + * src/type/type-env.hh, + * src/type/types.hxx, + * src/type/type-visitor.hh, + * src/type/type-entry.hh, + * src/escapes/escapes-check-visitor.cc, + * src/escapes/callgraph-visitor.hh, + * src/escapes/escapes-check-visitor.hh, + * src/escapes/escapes-visitor.cc, + * src/escapes/escapes-visitor.hh, + * src/common.hh, + * src/regalloc/color.cc, + * src/regalloc/regallocator.cc, + * src/regalloc/libregalloc.cc, + * src/regalloc/test-regalloc.cc, + * src/regalloc/regallocator.hh, + * src/regalloc/color.hh, + * src/regalloc/libregalloc.hh, + * src/liveness/flowgraph.hxx, + * src/liveness/libliveness.cc, + * src/liveness/liveness.hh, + * src/liveness/interference-graph.hh, + * src/liveness/flowgraph.hh, + * src/liveness/test-flowgraph.cc, + * src/liveness/interference-graph.cc, + * src/liveness/liveness.cc, + * src/tc.cc, + * src/translate/exp.cc, + * src/translate/level-env.cc, + * src/translate/translation.cc, + * src/translate/access.cc, + * src/translate/translate-visitor.hh, + * src/translate/exp.hh, + * src/translate/level.cc, + * src/translate/level-env.hh, + * src/translate/translation.hh, + * src/translate/access.hh, + * src/translate/exp.hxx, + * src/translate/level-env.hxx, + * src/translate/level-entry.hh, + * src/translate/level.hh, + * src/translate/access.hxx, + * src/translate/libtranslate.cc, + * src/translate/level.hxx, + * src/translate/translate-visitor.cc, + * src/translate/fwd.hh, + * src/canon/traces.hh, + * src/canon/basic-block.hxx, + * src/canon/canon.cc, + * src/canon/libcanon.hh, + * src/canon/traces.cc, + * src/canon/basic-block.hh, + * src/canon/libcanon.cc, + * src/canon/canon.hh, + * src/canon/basic-block.cc, + * src/tree/cjump.hxx, + * src/tree/seq.hh, + * src/tree/name.hxx, + * src/tree/fragment.hh, + * src/tree/tree.hxx, + * src/tree/libtree.cc, + * src/tree/name.hh, + * src/tree/tree.cc, + * src/tree/fragments.hh, + * src/tree/binop.cc, + * src/tree/visitor.hxx, + * src/tree/const.hh, + * src/tree/label.hxx, + * src/tree/tree.hh, + * src/tree/call.cc, + * src/tree/temp.hh, + * src/tree/fragment.hxx, + * src/tree/temp.hxx, + * src/tree/cjump.hh, + * src/tree/seq.cc, + * src/tree/fragment.cc, + * src/tree/const.hxx, + * src/tree/visitor.hh, + * src/tree/seq.hxx, + * src/tree/iterator.hxx, + * src/tree/fragments.cc, + * src/tree/label.hh, + * src/graph/graph.hh, + * src/graph/graph.hxx, + * src/task/task-register.hh, + * src/task/task.cc, + * src/task/libtask.hh, + * src/task/int-task.hh, + * src/task/task.hh, + * src/task/boolean-task.cc, + * src/task/task.hxx, + * src/task/task-register.cc, + * src/task/boolean-task.hh, + * src/task/int-task.cc, + * src/temp/libtemp.cc, + * src/temp/identifier.hh, + * src/temp/temp-list.hxx, + * src/temp/label-list.hh, + * src/temp/libtemp.hh, + * src/temp/temp-set.hh, + * src/temp/temp-list.cc, + * src/temp/factory.hh, + * src/temp/test-temp.cc, + * src/temp/temp-list.hh, + * src/temp/label-list.cc, + * src/temp/fwd.hh, + * src/assem/instrs.hh, + * src/assem/instr.cc, + * src/assem/fragments.hh, + * src/assem/fragment.cc, + * src/assem/visitor.hh, + * src/assem/instr.hh, + * src/assem/fragment.hh, + * src/assem/oper.hh, + * src/assem/move.hh, + * src/assem/visitor.hxx, + * src/assem/instrs.cc, + * src/assem/fragment.hxx, + * src/assem/oper.hxx, + * src/assem/move.hxx, + * src/assem/label.hh, + * src/parse/libparse.hh, + * src/parse/libparse.cc, + * src/parse/import-visitor.hh, + * src/parse/parse.hh, + * src/parse/tasks.cc, + * src/parse/import-visitor.cc, + * src/parse/import-visitor.hxx, + * src/bind/libbind.hh, + * src/bind/libbind.cc, + * src/bind/bind-visitor.hh, + * src/bind/bind-visitor.cc, + * src/common.cc, + * src/version.hh, + * src/target/ia32-cpu.hh, + * src/target/mips-cpu.cc, + * src/target/target.hh, + * src/target/cpu.hh, + * src/target/mips-cpu.hh, + * src/target/tasks.cc, + * src/target/target.cc, + * src/target/cpu.cc, + * src/ast/decs.hxx, + * src/ast/test-ast.cc, + * src/ast/libast.hxx, + * src/ast/anydecs.hh, + * src/ast/anydecs.hxx, + * src/ast/libast.cc, + * src/ast/decs.hh, + * src/ast/default-visitor.hh, + * src/ast/default-visitor.hxx, + * src/ast/libast.hh, + * src/frame/access.hh, + * src/frame/access.cc, + * src/frame/frame.hh, + * src/frame/frame.cc, + * src/frame/fwd.hh, + * src/misc/path.hh, + * src/misc/timer.cc, + * src/misc/path.cc, + * src/misc/ref.hxx, + * src/misc/timer.hxx, + * src/misc/set.hh, + * src/misc/contract.cc, + * src/misc/set.hxx, + * src/misc/path.hxx, + * src/misc/containers.hh, + * src/misc/ref.hh, + * src/misc/containers.hxx, + * src/misc/traits.hxx, + * src/misc/timer.hh, + * src/codegen/libcodegen.cc, + * src/codegen/codegen.hh, + * src/codegen/mips/test-rw_prg.cc, + * src/codegen/mips/codegen.hh, + * src/codegen/mips/spim-assembly.hh, + * src/codegen/mips/spim-layout.cc, + * src/codegen/mips/codegen.cc, + * src/codegen/mips/spim-assembly.cc, + * src/codegen/tasks.cc, + * src/codegen/libcodegen.hh, + * src/codegen/codegen.hxx, + * src/codegen/assembly.hh, + * src/codegen/ia32/codegen.hh, + * src/codegen/ia32/gas-assembly.hh, + * src/codegen/ia32/codegen.cc, + * src/codegen/ia32/gas-layout.cc, + * src/codegen/ia32/gas-assembly.cc, + * src/symbol/symbol.hh, + * src/symbol/table.hh, + * src/symbol/symbol.cc, + * src/symbol/symbol.hxx, + * src/symbol/table.hxx, + * src/overload/overfun-type-visitor.cc, + * src/overload/overfun-type-visitor.hh, + * src/cppgen/includes/control.hh, + * src/cppgen/cppgen-visitor.hh: Normalize types. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1664 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-27 Nicolas Pouillard + + 2004-09-27 Nicolas Pouillard + + * config/ampersand.rb: New script to normalize `&' and `*' in types. + * config/ampersand_test.yml: New test file for ampersand.rb. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1663 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-27 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-41 + + Simplify the handling of "import" by simplify LetExp + + 2004-09-26 Akim Demaille + + Simplify the handling of "import" by simplify LetExp. + Instead of having one homogenous list of declarations per LetExp, + let LetExp accept an heterogeneous list of homogeneous declarations. + + * src/ast/decs.hh (decs_list_type): New. + * config/ast-nodes-gen (includes_map): Handle decs_list_type. + * src/ast/ast.xml (LetExp): Let decs be a decs_list_type*. + Remove is_valid and replace_content, now useless (that's the whole + point). + * src/ast/letexp.cc, src/ast/letexp.hh, src/ast/letexp.hxx: Regen. + + Adjust the parsing. + + * src/parse/libparse.cc (parse): Formatting changes. + * src/parse/parsetiger.yy (let.rest): Remove completely. + (decs): New type, and new symbol. + (yyinclude): Remove, unused. + (yydecs): New. + (program): Use yydecs to return the result of a prelude file. + + Simplify the import processing. + + * src/parse/import-visitor.cc, src/parse/import-visitor.hh + (parse_file): Rename as... + (parse_prelude): this. + Adjust to decs_list_type and yydecs. + (operator() (ImportDecs): Adjust. + + Adjust other visitors. + + * src/ast/default-visitor.hh: Comment changes. + * src/ast/default-visitor.hxx (LetExp): Adjust the visit code. + * src/ast/print-visitor.cc: Likewise. + * src/cppgen/cppgen-visitor.cc: Completely disable the handling + of declarations here: for some reason yet to be tracked down, the + same change as above does not work. + Yes, this means that this visitor compiles, but behaves improperly. + * src/translate/translate-visitor.cc: Likewise. + * src/type/type-visitor.cc: Likewise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1662 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-22 Akim Demaille + + 2004-09-22 Akim Demaille + + * config/bison++: Set -e. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1661 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-21 Yoann Fabre + + 2004-09-21 Arnaud Fabre + + Merge the implementation of import directive. + + Theses additionnals modifications take into account changes which + occured in trunk : + * src/ast/print-visitor.cc (ImportDec): Use misc::idenl for + indenting output. + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx + (ImportDec, ImportDecs): Change prototype for using the template + Const. + * src/parse/import-visitor.hh (ImportVisitor): Make class derive + from ast::DefaultVisitor. + * config/ast-visitor-gen: Adapt generated prototypes to the new + type of class GenVisitor. + * config/ast-nodes-gen (print_attributes): Correct type error in + accessor W when 1) the target type is a pointer, 2) the attribute + is mandatory. + * src/ast/ast.xml (letexp): Change access attribute to reflect + changes in prototypes. + * src/ast/letexp.hxx: Regen. + + 2004-08-31 Arnaud Fabre + + A lot of formatting fixes. Some minor fixes. + + * src/ast/ast.xml (ImportDec): Change comment. + (LetExp): Fix some formattting. + * src/parse/import-visitor.cc (operator() ImportDec): New method. + (operator() LetExp): Fix formatting. Reuse parent method. + * src/misc/path.cc (init): Remove useless path_.clear (). + Fix formatting. + * src/ast/default-visitor.hxx (ImportDecs, ImportDec): Make the + traversal fail with unreached. + * src/parse/import-visitor.hh: Change comment. Fix formatting. + * src/misc/path.hh, src/misc/path.hxx, src/misc/test-path.cc, + * src/parse/libparse.cc, src/parse/parsetiger.yy, + * src/parse/import-visitor.hxx: Fix formatting. + * src/ast/letexp.hh, src/ast/importdec.hh: Regen. + + 2004-08-26 Arnaud Fabre + + Implement ImportVisitor, misc::Path + + * Import_readme: Report changes requested by Akim. + * src/ast/alldec.hh (importdec.hh): Add include. + * src/ast/anydecs.hh (ImportDecs): New typedef. + * src/ast/print-visitor.hh, src/ast/print-visitor.cc + (ImportDec): New printing method. + * src/ast/letexp.hh, src/ast/visitor.hh, src/ast/fwd.hh: Regen. + * src/ast/importdec.cc, src/ast/importdec.hh, + * src/ast/importdecs.hxx: New generated files. + * src/ast/ast.xml (ImportDec, ImportDecs): New nodes. + (LetExp): New misc function. + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx + (ImportDec, ImportDecs): New methods. + * src/misc/path.hh, src/misc/path.hxx, src/misc/path.cc: + New files. Implement class misc::Path. + * src/misc/test-path.cc: New file. Test suite for misc::Path. + * src/parse/libparse.hh (import work list): Remove typedefs. + * src/parse/libparse.cc (parse): Use ImportVisitor to handle import + directives. + * src/parse/parsetiger.yy (let.rest, decs): Create ImportDec and + ImportDecs when parsing import directive. + (yyinclude): Remove variable. + * src/parse/import-visitor.hh, src/parse/import-visitor.hxx, + * src/parse/import-visitor.cc: New files. Implement ImportVisitor + * src/cppgen/cppgen-visitor.hh (ImportDec, ImportDecs): New + methods. + * config/ast-visitor-gen, config/ast-fwd-gen (ImportDec) + (ImportDecs): Add support. + * src/misc/Makefile.am (libmisc_a_SOURCES): Add new files. + (test_path_SOURCES): New program. + (check_PROGRAMS): Add test-path. + * src/parse/Makefile.am (libparse_a_SOURCES): Add import visitor + files. + + 2004-08-20 Arnaud Fabre + + Implementation of basic import directive. + + * Import_readme: New file + * src/ast/ast.xml: Add method in LetExp for importing header ast + * src/ast/letexp.hh: Regen + * src/ast/libparse.hh: Add structure and typedef for storing + informations about importation + * src/parse/libparse.cc: Launch parsing of imported files and merge + them in the initial source file + * src/parse/scantiger.ll: Add "import" token. New yylex custom + function. + * src/parse/parsetiger.yy (let.rest): Add rule for import directive + (decs): New non-terminal for header files + (program): Select type of file depending on the seed + (token): Add seed tokens + * src/parse/parse.hh: Change prototype of function yylex for Flex. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1660 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-20 Nicolas Pouillard + + 2004-09-20 Nicolas Pouillard + + * config/studentize: Handle student tags on a single line, like + /*<<-*/ hidden /*->>*/. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1659 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-14 Akim Demaille + + 2004-09-11 Akim Demaille + + Various stylistic changes. + + * src/escapes/tasks.cc, src/escapes/tasks.hh (callgraph-display) + (parentgraph-display): Rename as... + (callgraph-dump, parentgraph-dump): these. + * src/temp/map.hcc, src/temp/map.hh: Space changes. + * src/type/tasks.hh: Remove useless tasks dependencies, they + clutter the task graph. + * src/cppgen/tasks.hh, tests/tc-check.in: Rename --cpp-display as + --cxx-display. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1657 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-14 Akim Demaille + + Fix svn:ignores. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1656 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-14 Akim Demaille + + Add _build to svn:ignores. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1655 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-14 Akim Demaille + + 2004-09-14 Akim Demaille + + * src/ast/print-visitor.hh, src/ast/print-visitor.cc (tab_, dec_) + (inc_, inc_endl_, dec_endl_, endl_): Remove. + Use misc::indent instead. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1654 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-08 Roland Levillain + + 2004-09-08 Roland Levillain + + Rename ast::FieldExp as ast::FieldInit. + + * src/ast/ast.xml: Rename FieldExp as FieldInit. Make it directly + inherit from Ast, rather than from Exp. + Rename fieldexps_type as fieldinits_type. + * config/ast-fwd-gen (fieldexps_type): Rename typedef as... + (fieldinits_type): ...this. Adjust type definition. + * config/ast-nodes-gen (includes_map): s/fieldexp/fieldinit/. + + * src/ast/fieldexp.cc: Rename (regen) as... + * src/ast/fieldinit.cc: ...this. + * src/ast/fieldexp.hh: Rename (regen) as... + * src/ast/fieldinit.hh: ...this. + * src/ast/fieldexp.hxx: Rename (regen) as... + * src/ast/fieldinit.hxx: ...this. + * src/ast/fwd.hxx, src/ast/visitor.hh, + * src/ast/recordexp.cc, src/ast/recordexp.hh, + * src/ast/recordexp.hxx: Regen. + + * src/ast/allexp.hh: No longer include ast/fieldexp.hh. + * src/ast/all.hh: Include ast/fieldinit.hh. + + * src/ast/default-visitor.hh: Rename FieldExp as FieldInit. + * src/ast/default-visitor.hxx: Likewise. + * src/ast/print-visitor.hh: Likewise. + * src/ast/print-visitor.cc: Likewise. + Rename fieldexps_type as fieldinits_type. + * src/parse/parsetiger.yy: Rename FieldExp as FieldInit, + fieldexps_type as fieldinits_type, + fieldexp as fieldinit, + fieldexps as fieldinits. + * src/type/type-visitor.cc: Rename FieldExp as FieldInit. + * src/cppgen/cppgen-visitor.hh: Likewise. + * src/cppgen/cppgen-visitor.cc: Likewise. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1653 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-06 Akim Demaille + + 2004-09-06 Akim Demaille + + Use the bindings to compute the call graph. + + * src/escapes/callgraph-visitor.hh, src/escapes/callgraph-visitor.cc: + Vastly simplify, using the bindings. + The scoped sybol table is no longer needed. + Include just what is needed, not ast/all.hh! + * src/escapes/tasks.hh (callgraph-build): Depend on bind, and... + (callgraph-compute): rename as this. + * src/escapes/parentgraph-visitor.hh, + * src/escapes/parentgraph-visitor.cc: Formatting and stylistic + changes. + * src/escapes/tasks.hh, src/escapes/tasks.cc (parentgraph-build): + Rename as... + (parentgraph-compute): this. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1652 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-02 Akim Demaille + + 2004-09-02 Akim Demaille + + * src/parse/parsetiger.yy: Add %printer clauses. + Fix %destructor clauses for list of pointers: free the content. + * src/parse/Makefile.am: Remove trailing debugging code. + * tests/syntax/syntax-vs-type-1.tig: Style changes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1651 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-01 Akim Demaille + + 2004-09-01 Akim Demaille + + * src/parse/parsetiger.yy: Invoke %destructor for the relevant + symbols. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1650 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-01 Akim Demaille + + 2004-09-01 Akim Demaille + + Stop making ast::tasks::print support all the PV options. + In the long run, stream modifiers might be a better option + to save recompilation and augment the modularity. + + * src/ast/print-visitor.hh, src/ast/print-visitor.cc + (PrintVisitor::PrintVisitor): Take only the ostream as argument. + (escapes_display_set, escapes_tags_display_set) + (sl_display_set, bindings_display_set, bindings_display_p_): New. + * src/ast/libast.hh, src/ast/libast.cc (print): Adjust. + * src/escapes/tasks.cc: Use the PrintVisitor directly. + * src/bind/tasks.hh, src/bind/tasks.cc (bindings_display) + Implement for real. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1649 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-09-01 Akim Demaille + + 2004-09-01 Akim Demaille + + * config/ast-nodes-gen, config/ast.py: Remove debugging code. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1648 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-31 Akim Demaille + + 2004-08-31 Akim Demaille + + Implement support for several super classes. + + * config/ast.py (formal_ctor_read_decl): Remove. Inline and + simplify its only call into... + (Node.ctor_args): here. + (Node.ctor_init): Adjust to iterate over super classes. + (NodeBuilder): Make super a list. + (Loader.resolve_super): Iterate over super classes. + * config/ast-nodes-gen: Iterate over super classes. + * config/ast-nodes-mk-gen: Consider only the first super class for + indentation matters. + + Factor out escaping features into Escapable. + + * src/ast/ast.xml (Escapable): New. + (Field, VarDec): No longer implement escape and escape_tag + support: derive from Escapable. + * src/ast/vardec.hh, src/ast/vardec.hxx, src/ast/vardec.cc, + * src/ast/field.hh, src/ast/field.hxx, src/ast/field.cc: Regen. + * src/ast/escapable.hh, src/ast/escapable.hxx, + * src/ast/escapable.cc: New (generated). + * src/ast/fwd.hh: Regen. + * src/ast/visitor.hh: Regen. + * src/ast/default-visitor.hh: As a temporary and unsatisfactory + hack, implement a do-nothing visit for Escapable. + * src/cppgen/cppgen-visitor.hh: Likewise. + + * src/escapes/escapes-visitor.cc (var_get): Factor. + * src/parse/parsetiger.yy: Adjust to the new order of ctor + arguments (super class attributes are first). + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1647 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-31 Yoann Fabre + + Fix ChangeLog + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/import@1646 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-30 Yoann Fabre + + 2004-08-31 Arnaud Fabre + + Lot of formatting fixes. Some minor fixes. + + * src/ast/ast.xml (ImportDec): Change comment. + (LetExp): Fix some formattting. + * src/parse/import-visitor.cc (operator() ImportDec): New method. + (operator() LetExp): Fix formatting. Reuse parent method. + * src/misc/path.cc (init): Remove useless path_.clear (). + Fix formatting. + * src/ast/default-visitor.hxx (ImportDecs, ImportDec): Make the + traversal fail with unreached. + * src/parse/import-visitor.hh: Change comment. Fix formatting. + * src/misc/path.hh, src/misc/path.hxx, src/misc/test-path.cc, + * src/parse/libparse.cc, src/parse/parsetiger.yy, + * src/parse/import-visitor.hxx: Fix formatting. + * src/ast/letexp.hh, src/ast/importdec.hh: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/import@1645 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-30 Yoann Fabre + + Fix ChangeLog + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/import@1644 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-30 Akim Demaille + + 2004-08-30 Akim Demaille + + * config/ast-nodes-mk-gen: Take no arg. + * src/ast/Makefile.am: Adjust the invocation. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1643 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-30 Akim Demaille + + 2004-08-30 Akim Demaille + + * config/ast-nodes-mk-gen (files): Consider the output is in + srcdir too. + * src/ast/Makefile.am: Add $(srcdir) where needed. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1642 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-30 Akim Demaille + + 2004-08-30 Akim Demaille + + Finally use all these ast.xml changes: use it for def sites. + + * src/ast/ast.xml (CallExp, SimpleVar, NameTy): Remove the hand + written definition site handling: rather use regular attribute + handling. + Note, btw, that this is more than merely aesthetics: the def_ + members were not initialized (to 0), which upsets valgrind. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1641 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-30 Akim Demaille + + 2004-08-30 Akim Demaille + + * config/ast.py (Handler.boolean_attribute_set): New. + (Handler.startElement): Use it to handle attribute "owned" (new), + and "mandatory" which replaces "necessity". + (Attribute.print_delete): Rename as... + (Attribute.delete): ... this, which does not print, of course. + Adjust callers. + * src/ast/ast.py: Adjust to these new flags. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1640 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-27 Akim Demaille + + 2004-08-27 Akim Demaille + + * config/ast-nodes-gen: Improve the output using ast.decl to join + a type and an id, with a space if needed. + * config/ast.py (attr_decl): Fix a bug: use decl too (so that we + never mix the type and the id together). + (print_decl): Fix a bug: delete pointers, not "not atomic" types. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1639 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-27 Akim Demaille + + 2004-08-27 Akim Demaille + + * config/ast-nodes-gen: No longer test for init=copy, it is + useless. + * config/ast.py (re_init_set): Remove. + Instead of using it, just test whether the init member has a + value, and use it as initial value. + * src/ast/ast.xml: s/init="set:/init="/. + Adjust the documentation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1638 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-27 Akim Demaille + + 2004-08-27 Akim Demaille + + * src/ast/ast.xml: Remove all the uses of init=copy. + This information can be recovered from the type of the attribute. + * config/ast.py (Attribute.pointer_p): New. + (decl): New. + * config/ast-nodes-gen: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1637 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-27 Akim Demaille + + 2004-08-27 Akim Demaille + + And now, enjoy all these ast-nodes-gen changes... + + * src/ast/ast.xml: Declare the type of all the pointer attributes + as... a pointer. + * config/ast.py (Attributes): Adjust all methods checking the type + by checking the root_type (). + Some methods are much simplified. + In particular checking for init=given is no longer needed anywhere. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1636 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-27 Akim Demaille + + 2004-08-27 Akim Demaille + + * config/ast.py (Attribute.attr_decl, Attribute.print_delete): + Take atomicity into account. + * src/ast/ast.xml: Remove init=copy for all atomic types. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1635 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-27 Akim Demaille + + 2004-08-27 Akim Demaille + + * config/ast.py (Attribute.atomic_p): New. + (Attribute.print_delete): New. + * config/ast-nodes-gen: Use them. + Remove "copy:VALUE" support. + * src/ast/ast.xml: Adjust comments. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1634 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-27 Akim Demaille + + 2004-08-27 Akim Demaille + + * config/ast-nodes-gen (print_attributes): Export a part of the + job... + * config/ast.py (Attribute.attr_decl): here. + Adjust callers. + * src/ast/ast.xml: Comment changes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1633 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-27 Akim Demaille + + 2004-08-27 Akim Demaille + + * src/ast/ast.xml: Fix/complete the documentation. + (AssignExp::force): Init as "set", not "copy". + * config/ast-nodes-gen (re_pointer, re_reference) + (re_init_default, re_init_set): Remove useless globals. + (print_ctor_dtor): Simplify the definition of "hide" (no visible + difference in the output). + (need_duplicate): Move to... + * config/ast.py (Node.need_duplicate): here. + Adjust caller. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1632 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-27 Akim Demaille + + 2004-08-27 Akim Demaille + + * src/ast/Makefile.am (ast_gen_deps): New. + Use it to complete the dependencies on ast.py. + * config/ast.py, config/ast-nodes-gen, config/ast-nodes-mk-gen: + Use += when nicer. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1631 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-27 Akim Demaille + + 2004-08-27 Akim Demaille + + * config/ast.py (Loader.resolve_super): New. + Adjust all "Node.super" uses. + (Loader.load): Use it. + * config/ast-nodes-gen (node_map): No longer needed. + (ctor_args, ctor_init): More to... + * config/ast.py (Node.ctor_args, Node.ctor_init): here. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1630 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-27 Akim Demaille + + 2004-08-27 Akim Demaille + + * config/ast.py (Attribute.ctor_init): New, from... + * config/ast-nodes-gen (attribute_init): this. + (ctor_init): Use it. + Use /* */ for student marks instead of //. + Remove unused argument. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1629 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-27 Akim Demaille + + 2004-08-27 Akim Demaille + + * config/ast-nodes-gen (ctor_init): More student_hide + simplifications. The code output is poorer, but ast-nodes-gen is + much clearer. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1628 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-26 Akim Demaille + + 2004-08-26 Akim Demaille + + * config/ast-nodes-gen: Don't be smart about embedded student + marks. That's studentize's job. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1627 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-26 Akim Demaille + + 2004-08-26 Akim Demaille + + Clarify interrelated ifs. + + * config/ast.py (Attribute.r_type, Attribute.W_type): + (Attribute.w_type): New. + * config/ast-nodes-gen: Use them. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1626 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-26 Akim Demaille + + 2004-08-26 Akim Demaille + + * config/tools.py (class_id): Remove, useless. + (warning): Don't trash stdout. + * config/ast.py (Node.fname, Node.guard, Node.cc, Node.hh) + (Node.hxx): New. + * config/ast-nodes-gen: Use them. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1625 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-26 Yoann Fabre + + 2004-08-26 Arnaud Fabre + + Implements ImportVisitor, misc::Path + + * Import_readme: Report changes requested by Akim + * src/ast/alldec.hh, : Add include for ImportDec + * src/ast/anydecs.hh: Add typedef for ImportDecs + * src/ast/print-visitor.hh, src/ast/print-visitor.cc: Add + printing of ImportDec + * src/ast/letexp.hh, src/ast/visitor.hh, src/ast/fwd.hh: Regen + * src/ast/importdec.cc, src/ast/importdec.hh, + * src/ast/importdecs.hxx: New generated files + * src/ast/ast.xml: Add nodes ImportDec, ImportDecs + (LetExp): Add misc function + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx: Add + methods for visiting ImportDec and ImportDecs + * src/misc/path.hh, src/misc/path.hxx, src/misc/path.cc: + New files. Implement class misc::Path + * src/misc/test-path.cc: New file. Test suite for misc::Path + * src/parse/libparse.hh: Remove typedefs for import work list + * src/parse/libparse.cc: Use ImportVisitor to handle import + directives + * src/parse/parsetiger.yy: Create ImportDec and ImportDecs when + parsing import directive. + Remove yyinclude. + * src/parse/import-visitor.hh, src/parse/import-visitor.hxx, + * src/parse/import-visitor.cc: New files. Implement ImportVisitor + * src/cppgen/cppgen-visitor.hh: Add methods for ImportDec and + ImportDecs + * config/ast-visitor-gen, config/ast-fwd-gen: Add support for + ImportDec and ImportDecs + * src/misc/Makefile.am: Add new files to source. Add test-path + to test suite + * src/parse/Makefile.am: Add import visitor files + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/import@1624 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-26 Akim Demaille + + 2004-08-26 Akim Demaille + + ast-nodes-gen: map the nodes. + + * config/ast-nodes-gen (node_map): New global that remove the need + to pass the list of all the nodes to almost all the routines. + It also removes some linear behavior where (almost) constant time + is doable. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1623 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-26 Akim Demaille + + 2004-08-26 Akim Demaille + + Simplify ast-nodes-gen. + It is too hard to understand: there are too many relationships + between attribute attributes, I'm lost. + + * config/ast.py (Attribute.formal_ctor_read_decl): New. + (Attribute.root_type): New. + * config/ast-nodes-gen: Use them. + Use string.join where useful. + * src/ast/ast.xml: Fix the documentation. + Remove "ast::": we're in it! + (AssignExp): Fix a typo. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1622 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-26 Akim Demaille + + 2004-08-26 Akim Demaille + + build != src fix. + + * src/parse/Makefile.am: Specify the path of the parsetiger.stamp + to remove. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1621 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-24 Akim Demaille + + 2004-08-24 Akim Demaille + + * src/Makefile.am (version.cc): Small optimization: quit scanning + ChangeLog once $Id found. + Suggested by Alexandre Duret-Lutz. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1620 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-24 Akim Demaille + + 2004-08-24 Akim Demaille + + * src/Makefile.am (version.cc): Be robust to `/' in $Id. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1619 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-23 Akim Demaille + + Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/import@1618 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-23 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-34 + + Documentation and layout changes + + 2004-08-22 Akim Demaille + + * src/codegen/codegen.hh, src/codegen/mips/codegen.cc, + * src/codegen/mips/codegen.hh, src/symbol/table.hh, + * src/translate/access.hh, src/translate/level.hh: Documentation + and layout changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1617 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-23 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-33 + + Use function bindings in translation. Last use of Table! + + 2004-08-20 Akim Demaille + + Use function bindings in translation. Last use of Table! + + * src/translate/level-env.hh, src/translate/level-env.hxx, + * src/translate/level-env.cc (scope_begin, scope_end): Remove. + (LevelEnv::LevelEnv): Don't store builtins in the table. + (ftable_type): Be a simple std::map. + (fun_put, label_get, level_get): Adjust. + * src/translate/translate-visitor.cc: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1616 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-23 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-32 + + Let the documentation catch up with the introduction of BindVisitor + + 2004-08-20 Akim Demaille + + Let the documentation catch up with the introduction of BindVisitor. + + * src/ast/ast.xml (CallExp, NameTy, SimpleVar): Let their def_ and + def_get store/provide non const information. + * src/ast/callexp.hh, src/ast/namety.hh, src/ast/simplevar.hh: + Regen. + * src/translate/level-env.cc, src/translate/level-env.hh, + * src/translate/level-env.hxx: Comment changes. + * src/translate/translate-visitor.hh: More/better Doxygen. + * src/type/type-env.hh: Fix/update doc. + * src/bind/bind-visitor.hh, src/bind/bind-visitor.cc: + Fix/update document. + (var_put, var_get, fun_put, fun_get, type_put, type_get): + Now that def_get returns non const nodes, propagate that + non-constness. + Adjust callers: remove the now useless const_casts. + * src/bind/libbind.hh: More Doxygen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1615 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-23 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-31 + + Fix function and type scope handling + + 2004-08-19 Akim Demaille + + Fix function and type scope handling. + + * src/ast/print-visitor.cc: Print bindings for functions and types + too. + * src/bind/bind-visitor.cc (scope_begin, scope_end): Handle types + and functions scopes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1614 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-23 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-30 + + Complete the test suite to exercise let-scopes for functions and types + + 2004-08-19 Akim Demaille + + Believe it or not: the test suite passes although I forgot + to implement scopes for types and functions!!! + Complete the test suite to exercise let-scopes for functions and types. + + * tests/good/two-functions-with-the-same-name.tig: Rename as... + * tests/good/let-scope-for-functions.tig: this. + Adjust to provoke a type checking error if scopes are not + properly handled. + * tests/good/let-scope-for-types.tig: New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1613 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-23 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-29 + + There is no need for Main/Outer levels: one is enough + + 2004-08-19 Akim Demaille + + There is no need for Main/Outer levels: one is enough. + + * src/frame/frame.hh: Formatting changes. + * src/translate/level.hh: Comment fixes. + (Level::Level): Change the 1ary version to take a Label as argument + instead of a frame. + * src/translate/level.hxx (Level::Level): Move this 1ary version to... + * src/translate/level.cc (Level::Level): here. + * src/translate/translate-visitor.hh, + * src/translate/translate-visitor.cc + (TranslateVisitor::TranslateVisitor): Now no arguments at all. + Create the top most level here. + And pass it to env_. + (hir_naive_p_): Public. + * src/translate/libtranslate.cc (translate): Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1612 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-20 Yoann Fabre + + 2004-08-20 Arnaud Fabre + + Implementation of basic import directive. + * Import_readme: New file + * src/ast/ast.xml: Add method in LetExp for importing header ast + * src/ast/letexp.hh: Regen + * src/ast/libparse.hh: Add structure and typedef for storing + informations about importation + * src/parse/libparse.cc: Launch parsing of imported files and merge + them in the initial source file + * src/parse/scantiger.ll: Add "import" token. New yylex custom + function. + * src/parse/parsetiger.yy (let.rest): Add rule for import directive + (decs): New non-terminal for header files + (program): Select type of file depending on the seed + (token): Add seed tokens + * src/parse/parse.hh: Change prototype of function yylex for Flex. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/import@1611 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + 2004-08-18 Akim Demaille + + * src/ast/Makefile.am (libast_a_SOURCES): Add position.hh. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1610 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + 2004-08-18 Akim Demaille + + * config/ast-nodes-mk-gen: Use `+' when concatenating strings. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1609 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Add missing files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1608 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-27 + + Use bindings for functions in the TypeVisitor + + 2004-08-17 Akim Demaille + + Use bindings for functions in the TypeVisitor. + + * src/overload/over-table.hh (scope_begin, scope_end): Recycle the + documentation from type-env.hh. + * src/overload/overfun-type-visitor.cc (scope_begin, scope_end): + Don't play scopes with env_. + * src/type/type-env.hh, src/type/type-env.cc (BUILTINS) + (BUILTIN_0ARY, BUILTIN_1ARY, BUILTIN_2ARY, BUILTIN_3ARY): New. + Temporary solution until we have a prelude. + (TypeEnv::TypeEnv): No table (for the outer scope) to initialize. + (~TypeEnv): None to destroy. + (scope_begin, scope_end): Remove. + (ftable_type): Be a std::map, not a symbol::Table. + (fun_put, formals_get, result_get): Adjust. + * src/type/type-visitor.hh, src/type/type-visitor.cc: Adjust. + (scope_begin, scope_end): Remove. + + * tests/type/for-index-in-higher-bound.tig, + * tests/type/fractions-overloaded.tig, + * tests/type/invalid-function-redefinition-1.tig, + * tests/type/invalid-function-redefinition-2.tig, + * tests/type/invalid-type-redefinition.tig, + * tests/type/nonexistent-vardec-type.tig, + * tests/type/nonexistent-vardecrec-type.tig, + * tests/type/overload-function-redefinition.tig, + * tests/type/overload-nil-ambiguity.tig, + * tests/type/print-tree-static.tig, tests/type/test17.tig, + * tests/type/test18.tig, tests/type/test19.tig, + * tests/type/undeclared-variable.tig, + * tests/type/unknown-array-base-type.tig, + * tests/type/unknown-array-type-1.tig, + * tests/type/unknown-array-type-2.tig, + * tests/type/unknown-record.tig, tests/type/unknown-return-type.tig, + * tests/type/void-does-not-exist.tig: Move to... + * tests/bind/for-index-in-higher-bound.tig, + * tests/bind/fractions-overloaded.tig, + * tests/bind/invalid-function-redefinition-1.tig, + * tests/bind/invalid-function-redefinition-2.tig, + * tests/bind/invalid-type-redefinition.tig, + * tests/bind/nonexistent-vardec-type.tig, + * tests/bind/nonexistent-vardecrec-type.tig, + * tests/bind/overload-function-redefinition.tig, + * tests/bind/overload-nil-ambiguity.tig, + * tests/bind/print-tree-static.tig, tests/bind/test17.tig, + * tests/bind/test18.tig, tests/bind/test19.tig, + * tests/bind/undeclared-variable.tig, + * tests/bind/unknown-array-base-type.tig, + * tests/bind/unknown-array-type-1.tig, + * tests/bind/unknown-array-type-2.tig, + * tests/bind/unknown-record.tig, tests/bind/unknown-return-type.tig, + * tests/bind/void-does-not-exist.tig: ... here. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1607 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-26 + + Use the bindings to keep track whether a fn needs a SL + + 2004-08-06 Akim Demaille + + Don't store in the LevelEnv whether a function needs an SL. + Use the bindings to keep track of it. + + * src/translate/level-entry.hh (LevelFunEntry::sl_needed_p_) + (LevelFunEntry::sl_needed_get): Remove. + * src/translate/level-env.hh, src/translate/level-env.cc + (fun_put, BUILTIN_PUT): Adjust. + (sl_needed_get): Remove. + * src/translate/translate-visitor.cc (CallExp): Use def_get to + recover sl_needed from the FunctionDec. + (FunctionDec): Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1606 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + 2004-08-05 Akim Demaille + + Use the bindings for type checking types. + + * src/ast/ast.xml (CallExp): Its def is a FunctionDec (not only an + Ast). + (NameTy): Its def is a TypeDec. + * src/ast/callexp.hh, src/ast/namety.hh: Regen. + * src/bind/bind-visitor.hh, src/bind/bind-visitor.cc (fun_get) + (type_get, funtab_type, typetab_type): Adjust. + * src/type/type-entry.cc, src/type/type-entry.hh, + * src/type/type-entry.hxx (TypeEntry): Remove, really useless. + * src/type/type-env.cc, src/type/type-env.hh (ttable_type): Adjust: + directly point to the NameTy. + And be a map instead of a symbol::Table. + (type_put, type_get): Adjust. + (var_put): Use misc::put. + (scope_begin, scope_end): Remove the case of types. + * src/type/type-visitor.cc: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1605 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Remove files that should already have been removed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1604 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + 2004-08-05 Akim Demaille + + Factor the update of a map. + + * src/misc/containers.hh, src/misc/containers.hxx (put): New. + * src/symbol/table.hh (put): Use it. + And by the way, return an iterator onto the newly inserted element. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1603 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Remove files that should already have been removed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1602 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + 2004-08-04 Akim Demaille + + Remove scope support for variables in the TypeVisitor. + + * src/type/type-env.cc, src/type/type-env.hh (scope_begin, scope_end): + Remove the case of vtable_. + (var_put, var_get, var_writable_set, var_writable_getg): Rewrite to + take Ast nodes instead of Symbols. + (print): Deactivate the case of vtables_. + * src/type/type-visitor.cc: Adjust callers. + (ForExp): Reorder now that we no longer are bound to the binding + order. + Remove scope handling. + (FunctionDec): Remove scope handling. + Adjust to provide Ast nodes to var_put. + * src/overload/overfun-type-visitor.cc: Adjust the FunctionDec + case as above. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1601 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + 2004-08-04 Akim Demaille + + * src/type/type-visitor.cc: Remove code that can no longer be + triggered now that the BindVisitor catches undefined/duplicate + entities before that the TypeVisitor is run. + * tests/type/nonexistent-vardec-type.tig, + * tests/type/nonexistent-vardecrec-type.tig: Move to... + * tests/bind/nonexistent-vardec-type.tig, + * tests/bind/nonexistent-vardecrec-type.tig: here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1600 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-20 + + Let the BindVisitor bind functions and types + + 2004-08-03 Akim Demaille + + Let the BindVisitor bind functions and types. But don't use its + result yet in other visitors, only some exit status change. + + * src/ast/ast.xml (CallExp, NameTy): Add def_set, def_get and def_. + * src/ast/callexp.hh, src/ast/namety.hh: Regen. + * src/bind/bind-visitor.hh, src/bind/bind-visitor.cc + (fun_put, fun_get, type_put, type_get): New. + (decs_visit): New. + Use it to add visit for FunctionDec & CallExp, TypeDec & NameTy. + + Adjust the test suite. + + * tests/type/fractions-overloaded.tig, + * tests/type/invalid-function-redefinition-1.tig, + * tests/type/invalid-type-redefinition.tig, + * tests/type/overload-function-redefinition.tig, + * tests/type/overload-nil-ambiguity.tig, + * tests/type/test17.tig, tests/type/test18.tig, + * tests/type/unknown-array-base-type.tig, + * tests/type/unknown-array-type-1.tig, + * tests/type/unknown-array-type-2.tig, + * tests/type/unknown-record.tig, + * tests/type/unknown-return-type.tig, + * tests/type/void-does-not-exist.tig: Move to... + * tests/bind/fractions-overloaded.tig, + * tests/bind/invalid-function-redefinition-1.tig, + * tests/bind/invalid-type-redefinition.tig, + * tests/bind/overload-function-redefinition.tig, + * tests/bind/overload-nil-ambiguity.tig, + * tests/bind/test17.tig, tests/bind/test18.tig, + * tests/bind/unknown-array-base-type.tig, + * tests/bind/unknown-array-type-1.tig, + * tests/bind/unknown-array-type-2.tig, + * tests/bind/unknown-record.tig, + * tests/bind/unknown-return-type.tig, + * tests/bind/void-does-not-exist.tig: here. + * tests/type/Makefile.am, tests/bind/Makefile.am: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1599 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-19 + + Stylistic changes + + 2004-08-01 Akim Demaille + + * src/overload/overfun-type-visitor.cc: Use error. + * src/type/type-visitor.cc: Stylistic changes. + * tests/tc-check.in: Use overload tests as type error for regular + Tiger. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1598 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-18 + + New overload test + + 2004-08-01 Akim Demaille + + * tests/overload/overload-var-type-inference.tig: New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1597 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-17 + + Clean up the formal argument handling in the Ast + + 2004-07-28 Akim Demaille + + Clean up the formal argument handling in the Ast. + + * src/ast/ast.xml (FunctionDec): Rename params as formals. + * src/ast/functiondec.cc, src/ast/functiondec.hh, + * src/ast/functiondec.hxx: Regen. + * src/ast/default-visitor.hxx: Adjust. + * src/translate/translate-visitor.cc: Adjust. + * src/cppgen/cppgen-visitor.cc: Adjust. + * src/escapes/escapes-check-visitor.cc: Adjust. + * src/escapes/escapes-visitor.cc: Adjust. + * src/ast/print-visitor.cc, src/ast/print-visitor.hh: Add an + operator () for fields to factor common code between FunctionDec + and RecordTy. + * src/type/type-visitor.cc, src/type/type-visitor.hh (type): + New overloaded version to factor the handling of fields_type. + * src/overload/overfun-type-visitor.cc: Use it. + + * src/parse/parsetiger.yy: Formatting changes. + * src/bind/bind-visitor.cc: Simplify the case of FunctionDec. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1596 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Add missing src/bind to repo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1595 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Add HPR files to the repo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1594 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Remove useless files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1593 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + 2004-07-27 Akim Demaille + + Fix most Overloading and SL optimization "failures": fix the + nolimips invocations in tc-check. + + * tests/tc-check.in (nolimips_check_one): Pass --nop-after-branch + here to be sure not to forget a spot. + * src/overload/overfun-type-visitor.cc: Stylistic changes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1592 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Remove test files moved in bind/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1591 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Add HPR files to the repo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1590 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Add HPR files to the repo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1589 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + 2004-07-26 Akim Demaille + + Use the variable bindings to compute the escapes. + + * src/escapes/escapes-visitor.cc, src/escapes/escapes-visitor.hh + (operator ()(ForExp), operator ()(LetExp)): Remove, they + were only handling scope issues. + (scope_begin, scope_end): Likewise. + (var_put, formal_put, escape_get): Remove, we now directly use + the... + (table_): Rename as... + (depths_): this. Store the depth of the definitions. + (operator ()(SimpleVar), operator ()(FunctionDec)): Use it. + + * src/escapes/definition.cc, src/escapes/definition.hh, + * src/escapes/definition.hxx: Remove. + * src/escapes/Makefile.am: Adjust. + + * src/ast/print-visitor.cc (bind_display_p): New hackish #define. + Use it when visiting SimpleVar, VarDec and Field to display bindings. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1588 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Finally checkin tests/bind. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1587 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-12 + + Introduce the BindVisitor + + 2004-07-25 Akim Demaille + + Introduce the BindVisitor, which binds uses to definitions. + At the end it should free other visitors from having to maintain + an environment, as the Ast will be annotated with bindings to + definitions. For a start, only SimpleVar are bound to their + definitions. No Visitor use this annotation yet. The only + visible change is that unbound var identifiers are now caught by + the BindVisitor, not the TypeVisitor. + + * src/bind/Makefile.am, src/bind/tiger_bind.i, + * src/bind/bind-visitor.cc, src/bind/bind-visitor.hh, + * src/bind/libbind.cc, src/bind/libbind.hh, + * src/bind/tasks.cc, src/bind/tasks.hh: New. + * src/Makefile.am, configure.ac: Adjust. + + * src/ast/ast.xml (SimpleVar): Add support for definition site. + * src/ast/simplevar.hh: Regen. + * src/escapes/tasks.hh (escapes-compute): Depend on "bind". + * src/type/tasks.hh (type-check): Depend on "bind". + * src/misc/fail.hh (exit_semant): Split into... + (exit_typecheck, exit_bind): these. + * src/type/tasks.cc: Adjust. + * src/type/type-visitor.cc: Undefined var identifiers are now caught + elsewhere. + + Move tests corresponding to binding errors to tests/bind. + + * tests/type/for-index-in-higher-bound.tig + * tests/type/invalid-function-redefinition-2.tig, + * tests/type/print-tree-static.tig, tests/type/test19.tig, + * tests/type/undeclared-variable.tig: Move to... + * tests/bind/for-index-in-higher-bound.tig + * tests/bind/invalid-function-redefinition-2.tig, + * tests/bind/print-tree-static.tig, tests/bind/test19.tig, + * tests/bind/undeclared-variable.tig: ... here. + * tests/Makefile.am, tests/mk-Makefile-am, tests/tc-check.in, + * tests/type/Makefile.am, configure.ac: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1586 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-11 + + Simplify ast-nodes-gen + + * config/ast-nodes-gen: "delete 0" is valid C++. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1585 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-10 + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1584 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-9 + + Include adjustments. + + 2004-07-25 Akim Demaille + + * src/escapes/libescapes.cc, src/escapes/libescapes.hh, + * src/escapes/tasks.cc: Include adjustments. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1583 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-8 + + Layout changes. + + 2004-07-25 Akim Demaille + + * config/ast-nodes-gen: Fix white space issues. + * src/ast/arrayexp.hxx, src/ast/arrayty.hxx, + * src/ast/assignexp.hxx, src/ast/ast.hxx, src/ast/callexp.hxx, + * src/ast/dec.hxx, src/ast/field.cc, src/ast/field.hxx, + * src/ast/fieldexp.hxx, src/ast/fieldvar.hxx, src/ast/forexp.hxx, + * src/ast/functiondec.hxx, src/ast/ifexp.hxx, src/ast/intexp.hxx, + * src/ast/letexp.hxx, src/ast/namety.hxx, src/ast/opexp.hxx, + * src/ast/recordexp.hxx, src/ast/recordty.hxx, src/ast/seqexp.hxx, + * src/ast/simplevar.hxx, src/ast/stringexp.hxx, + * src/ast/subscriptvar.hxx, src/ast/typedec.hxx, src/ast/vardec.cc, + * src/ast/vardec.hxx, src/ast/whileexp.hxx: Regen. + + * src/ast/print-visitor.cc, src/type/type-visitor.cc: Comment and space + changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1582 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-7 + + Doc fixes + + 2004-07-22 Akim Demaille + + * src/translate/translate-visitor.hh: Fix a strange declaration. + * src/translate/translate-visitor.cc: Var name changes. + * config/ast-visitor-gen: Fix the Doxygen tags. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1581 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-6 + + Better Arch integration + + Checkin missing files, ajust naming conventions. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1580 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-5 + + Rename the template class DefaultVisitor as GenDefaultVisitor + + 2004-07-21 Akim Demaille + + Rename the template class DefaultVisitor as GenDefaultVisitor + (for consistancy with GenVisitor), and define the class DefaultVisitor + and DefaultConstVisitor. That saves subclasses from including + select-const.hh. + + * config/ast-visitor-gen: Comment changes. + * src/ast/visitor.hh: Regen. + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx: Do it. + * src/ast/print-visitor.hh, src/cppgen/cppgen-visitor.hh, + * src/escapes/callgraph-visitor.hh, + * src/escapes/escapes-check-visitor.hh, + * src/escapes/escapes-visitor.hh, src/escapes/parentgraph-visitor.hh, + * src/translate/translate-visitor.hh, src/type/type-visitor.hh: + Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1579 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-4 + + se the constify_traits/id_traits unary traits approach + + 2004-07-20 Akim Demaille + + Make sure ast generation is performed in the src tree. + + * config/ast-fwd-gen, config/ast-nodes-gen, config/ast-nodes-mk-gen, + * config/ast-visitor-gen: Take the srcdir as argument. + * src/ast/Makefile.am: Adjust calls. + + * src/ast/ast.xml: Comment changes. + * src/ast/assignexp.hh, src/ast/ast.hh, src/ast/callexp.hh, + * src/ast/functiondec.hh, src/ast/fwd.hh, src/ast/ifexp.hh, + * src/ast/letexp.hh, src/ast/opexp.hh, src/ast/seqexp.hh, + * src/ast/vardec.hh, src/ast/visitor.hh: Regen. + + Use the constify_traits/id_traits unary traits approach to select + constness instead of the previous binary structsm sorts of if. + + * src/misc/select-const.hh: Remove the old scheme. + (select_iterator): Change the strategy: fetch the const_iterator for + const structures. + Suggested by Raphae"l Poss. + * src/misc/fwd.hh: Adjust. + + * config/ast-visitor-gen: Use the new scheme. + * config/ast-fwd-gen: Adjust. + * src/ast/default-visitor.hh, src/ast/default-visitor.hxx: Adjust. + * src/ast/print-visitor.hh, src/escapes/callgraph-visitor.hh, + * src/escapes/escapes-visitor.hh, src/escapes/parentgraph-visitor.hh, + * src/escapes/escapes-check-visitor.hh, src/type/type-visitor.hh, + * src/translate/translate-visitor.hh: Adjust. + * src/ast/print-visitor.cc: Formatting changes. + Use super_type. + * src/escapes/escapes-visitor.cc: Move the dtor implementation here. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1578 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Revision: akim@freefriends.org--2004-tc/tc--mainline--0.1--patch-3 + + Space changes. + + 004-07-20 Akim Demaille + + * src/ast/ast.xml: Formatting changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1577 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + 2004-07-20 Akim Demaille + + * src/canon/canon.cc: Comment changes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1576 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-18 Akim Demaille + + Remove argp dot files that upset arch's tree-lint. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1575 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-08-15 Yoann Fabre + + Make a new branch for implementing importation of files + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/import@1574 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-13 Akim Demaille + + More TODO. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1573 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-12 Akim Demaille + + Fix ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1572 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-12 Akim Demaille + + Doc changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1571 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-12 Akim Demaille + + 2004-07-12 Akim Demaille + + * src/canon/traces.hh: Doc changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1570 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-12 Akim Demaille + + 2004-07-12 Akim Demaille + + * src/temp/map.hh, src/frame/frame.hh, src/translate/level.hh: Doc + changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1569 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-09 Akim Demaille + + 2004-07-09 Akim Demaille + + * src/tree/binop.hxx, src/tree/eseq.hxx, src/tree/mem.hxx: + Formatting changes. + * src/tree/fwd.hh: Remove spurious semicolons. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1568 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-09 Akim Demaille + + 2004-07-09 Akim Demaille + + Fix the 100% failure on T9. + + Currently there are too many TempMap in use, and of course the + wrong one is used to display the final assembly: the result is as + if regallocation was not performed. + + * src/temp/map.hh, src/temp/map.hcc (clone): New. + Formatting changes. + * src/target/mips-cpu.cc (NolimipsTempMap::clone): New. + * src/target/tasks.cc (target_set): The global tempmap is a clone + of the current target's. + * src/liveness/tasks.cc: Adjust to the global tempmap being a + pointer now. + * src/regalloc/tasks.cc (asm_compute): Likewise. + * src/codegen/tasks.cc (instructions_display): Use the global + tempmap, not the current target's (which is of course insensitive + to regalloc). + * src/temp/tasks.hh, src/temp/tasks.cc (tempmap): Now an + auto_ptr. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1567 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-08 Akim Demaille + + 2004-07-08 Akim Demaille + + Let Cpu have their own TempMap that contains the needed magic to + change fp into $fp etc. In addition, let the MipsCpu become (more + or less) a NolimipsCpu that also knows how to map t4 into $x4. + Note: The same should now be done for Labels, since, for instance, + we sometimes have to change the name of Main etc. + + * src/target/cpu.hh, src/target/cpu.cc (tempmap_, tempmap_get): New. + (target_set): No longer change the global target::tasks::tempmap, + since we use the current target's. + (print): Report it. + * src/codegen/tasks.cc (instructions_display::NolimipsTempMap): + Move... + * src/target/mips-cpu.cc (MipsCpu): into here. + * src/codegen/tasks.cc (instructions_display): Use the TempMap + from the current Cpu. + * src/target/tasks.cc + * src/target/fwd.hh: Extend. + * src/codegen/tasks.hh (nolimips-display): Better documentation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1566 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-08 Akim Demaille + + 2004-07-08 Akim Demaille + + * configure.ac: Bump to 0.75a. + * src/target/ia32-cpu.hh, src/target/ia32-cpu.cc (~Ia32Cpu): + Remove, useless. + * src/target/mips-cpu.hh, src/target/mips-cpu.cc: Likewise. + + * src/temp/map.hcc (print): Use misc::indent. + * src/assem/fragment.cc (print): Simplify. + * src/assem/fragment.hh: Formatting changes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1565 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-08 Akim Demaille + + Remove, dead since long. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1564 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-08 Akim Demaille + + 2004-07-08 Akim Demaille + + * configure.ac: Bump to 0.75a. + * src/target/ia32-cpu.hh, src/target/ia32-cpu.cc (~Ia32Cpu): + Remove, useless. + * src/target/mips-cpu.hh, src/target/mips-cpu.cc: Likewise. + + * src/temp/map.hcc (print): Use misc::indent. + * src/assem/fragment.cc (print): Simplify. + * src/assem/fragment.hh: Formatting changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1563 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-08 Akim Demaille + + 2004-07-08 Akim Demaille + + * configure.ac: Bump to 0.75a. + * src/target/ia32-cpu.hh, src/target/ia32-cpu.cc (~Ia32Cpu): + Remove, useless. + * src/target/mips-cpu.hh, src/target/mips-cpu.cc: Likewise. + + * src/temp/map.hcc (print): Use misc::indent. + * src/assem/fragment.cc (print): Simplify. + * src/assem/fragment.hh: Formatting changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1562 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-07 Nicolas Pouillard + + 2004-07-07 Nicolas Pouillard + + * config/studentize: Fix a bug with nested //<<. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1561 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-07 Akim Demaille + + 2004-07-07 Akim Demaille + + Version 0.76. + For 2006-tc-9.0. + + * doc/Makefile.am (CLEANFILES, EXTRA_DIST): Typos. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1560 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-07 Akim Demaille + + 2004-07-07 Akim Demaille + + * doc/Doxyfile.in (EXCLUDE): New: Skip CPPGen, which is not + documented, and too hard to parse for Doxygen. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1559 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-07 Akim Demaille + + 2004-07-07 Akim Demaille + + * configure.ac: No longer instantiate it. + * doc/Makefile.am: Do it. + * src/regalloc/color.cc: Adjust student marks. + + * src/target/tasks.cc, src/target/fwd.hh, src/ast/tasks.hh, + * src/liveness/libliveness.cc, src/liveness/libliveness.hh, + * src/tree/libtree.hh, src/codegen/libcodegen.hh, + * src/temp/libtemp.hh, src/symbol/fwd.hh, src/assem/libassem.hh: + Adjust documentation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1558 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-07 Akim Demaille + + 2004-07-07 Akim Demaille + + For the n-th time, rewrite the revision control keywords support. + If version.cc does not change, its revision keyword will not + either. Since only ChangeLog is "guaranteed" to change at each + checkin, extract the keywords from there. + + * src/version.cc: Rename as... + * src/version.cc.in: this. + * src/Makefile.am (version.cc): New target. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1557 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-07 Akim Demaille + + Fix keywords. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1556 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-07 Akim Demaille + + 2004-07-07 Akim Demaille + + This patch can change the output in some test cases, since the + move list is loosely ordered (i.e., it is not), and our change + modifies this random order... Something should be done... + + * src/liveness/interference-graph.hh: Comment changes. + * src/liveness/interference-graph.cc (compute_liveness): Make + moves_ pairs such as 1st < 2nd. + (epilogue_print): No banner when nothing to display. + * src/graph/graph.hh: Layout changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1555 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-07 Akim Demaille + + 2004-07-07 Akim Demaille + + * src/graph/graph.hxx (Graph::print): Be sure not to accumulate + labels at each iteration. + + * src/graph/graph.hxx: Rewording. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1554 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-07 Akim Demaille + + 2004-07-07 Akim Demaille + + (Hopefully) fix the Mac OSX bus error: we had a static + initialization depending on another one. In such a case there is + no guarantee on the order, and we should find another way to + perform these initializations. I chose to have a new task making + sure the target is defined. Then, have the other tasks depend + upon it. + + * src/target/tasks.hh (target-default): New task. + (target-display): Depend upon it. + * src/target/tasks.cc (target_default): New. + (target_init, t): Remove. + * src/codegen/tasks.hh (inst-compute, runtime-display) + (nolimips-display): Depend upon target-default. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1553 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-07 Akim Demaille + + 2004-07-06 Akim Demaille + + * config/bison.m4: Use a more Autoconf like wording. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1552 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-06 Akim Demaille + + 2004-07-06 Akim Demaille + + Version 0.75. + For 2006-tc-8.0. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1549 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-06 Akim Demaille + + 2004-07-06 Akim Demaille + + * src/target/tasks.cc (target_init, t): New, used only to + initialize target. + (target_set): No longer accept 0. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1548 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-06 Akim Demaille + + 2004-07-06 Akim Demaille + + * src/graph/graph.hh (OrientedGraph, UndirectedGraph): Remove + epilogue_print, completely useless. + + * src/liveness/flowgraph.hh: + * src/liveness/flowgraph.hxx (FlowGraph::FlowGraph): Move inner + comments for students. + Make timer name more coherent with the rest of the compiler. + * src/liveness/liveness.cc (Liveness::Liveness): Free the edge + labeling code to students. + Move its documentation... + * src/liveness/liveness.hh: here. + * src/liveness/interference-graph.hh: More documentation. + (InterferenceGraph::~InterferenceGraph): Remove. + (InterferenceGraph::epilogue_print): Move in its appropriate + section. + Return an ostream. + * src/liveness/interference-graph.cc: Adjust. + Reword some comments. + * src/regalloc/color.hh (Color::~Color): Remove, useless. + Formatting changes. + * src/regalloc/color.cc: Adjust. + (Color::Color): Remove the useless member initializations. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1547 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-06 Akim Demaille + + 2004-07-06 Akim Demaille + + * config/stagize: Prune the Debian support. + Take the envvar prune into account. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1546 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-06 Akim Demaille + + 2004-07-06 Akim Demaille + + * src/graph/graph.hh (graph::epilogue_print): Return the ostream. + Move its body... + * src/graph/graph.hxx: here. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1545 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-06 Akim Demaille + + 2004-07-06 Akim Demaille + + * tests/tc-check.in (&load_test): Rename as... + (&load_tests): this. + (&help): Call it, and output the test stage labels. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1544 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-05 Julien Roussel + + from Julien Roussel + + * tests/tc-check.in: Replace {g++,gcc}-3.2 by {g++,gcc}-3.4 + as specified in assignments. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1543 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-05 Akim Demaille + + More TODO, fix ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1542 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-05 Nicolas DesprÚs + + 2004-07-05 Nicolas "PoLRoP" DesprÚs + + * src/liveness/interference-graph.cc (liveness): Add a + epilogue_print which print move edges. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1541 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-05 Nicolas Pouillard + + 2004-07-05 Nicolas Pouillard + + * tests/tc-check.in: Print the title or test objects. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1540 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-05 Nicolas DesprÚs + + 2004-07-05 Nicolas "PoLRoP" DesprÚs + + * TODO (T8): Update the TODO list. + * src/graph/graph.hh (graph): Remove node/edge print hook + declaration by epilogue_print declaration. + * src/graph/graph.hxx (graph:print): Replace node/edge print + hook call by epilogue_print call. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1539 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-05 Akim Demaille + + 2004-07-05 Akim Demaille + + * tests/tc-check.in (load_test): Add title to test objects. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1538 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-05 Nicolas Pouillard + + 2004-07-05 Nicolas Pouillard + + * TODO: Update. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1537 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-05 Nicolas Pouillard + + 2004-07-05 Nicolas Pouillard + + * TODO: Update the TODO list. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1536 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-04 Nicolas DesprÚs + + 2004-07-04 Nicolas "PoLRoP" DesprÚs + + * src/graph/graph.hxx (graph::print): Call node/edge print + hook. + * src/graph/graph.hh (graph): Change hook type. Now it is + a virtual method. Remove dummy_hook. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1535 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-02 Nicolas DesprÚs + + 2004-07-02 Nicolas "PoLRoP" DesprÚs + + * src/graph/graph.hxx (graph): Implement print method allowing + a hook and simulate former print method using the dummy_hook. + * src/graph/graph.hh (graph): Add print method declaration + allowing a Hook. Add dummy_hook declaration. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1534 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-02 Nicolas Pouillard + + 2004-07-02 Nicolas Pouillard + + * tests/tc-check.in: Fix a bug with Stick::message_set return value. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1533 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-02 Nicolas DesprÚs + + 2004-07-02 Nicolas "PoLRoP" DesprÚs + + * src/graph/graph.hxx (graph::print): Do not attach label + attribute to edges when it is an empty string. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1532 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-01 Akim Demaille + + 2004-07-01 Akim Demaille + + * config/bison.m4: Simplify, and make it work properly. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1531 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-01 Nicolas DesprÚs + + 2004-07-01 Nicolas "PoLRoP" DesprÚs + + * configure.ac: Add check for bison version >= 1.875b + * config/bison.m4: New. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1530 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-01 Akim Demaille + + 2004-07-01 Akim Demaille + + * src/regalloc/color.cc (Color::combine): After having merged v's + move_list into u's, we should enable_moves for v. See Appel's + original algorithm. I could not find an input file where it makes + a difference. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1529 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-01 Akim Demaille + + 2004-07-01 Akim Demaille + + * tests/mk-Makefile-am (TC, RUN_TC): Remove. + * tests/tests.mk (TC, TCFLAGS): New. + * tests/good/int-comparison.tig: New. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1528 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-01 Akim Demaille + + 2004-07-01 Akim Demaille + + * tests/mk-Makefile-am (TC, RUN_TC): Remove. + * tests/tests.mk (TC, TCFLAGS): New. + * tests/good/int-comparison.tig: New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1527 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-01 Nicolas Pouillard + + 2004-07-01 Nicolas Pouillard + + * tests/tc-check.in: Do not check memory leaks when `--ast-delete' + is not required. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1526 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-07-01 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1525 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-30 Nicolas DesprÚs + + 2004-06-30 Nicolas "PoLRoP" DesprÚs + + * src/tree/trees.cc (tree): Fix misc::print_with_separator call + so that the code compiles. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1524 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-28 Akim Demaille + + 2004-06-28 Akim Demaille + + ostr << tree_list_type fails on an empty list. + Reported by Vincent Cuissard. + + * configure.ac: Bump to 0.74a. + * src/misc/containers.hh, src/misc/containers.hxx + (print_with_separator): Be templated on the second arg type. + Keep a specialization for the default '\n'. + * src/tree/trees.hh, src/tree/trees.cc: Use it, with misc::iendl. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1523 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-25 Clément Vasseur + + 2004-06-26 Clement Vasseur + + Introduce a "make deb" rule for building a package for Debian. + + * debian/control, debian/compat, debian/changelog, + * debian/copyright, debian/rules: New. Debian files. + * debian/Makefile.am: New. Tell how to generate the package. + * Makefile.am: Add debian to SUBDIRS and the `deb' rule. + * configure.ac: Add debian/Makefile. + * NEWS: Update. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1522 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-25 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1519 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-25 Akim Demaille + + 2004-06-25 Akim Demaille + + Version 0.74. + For 2006-tc-7.0. + + * src/temp/map.hcc: Remove debugging traces. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1518 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-25 Akim Demaille + + 2004-06-25 Akim Demaille + + * src/canon/canon.cc (canon): Clarify the comments. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1517 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-25 Akim Demaille + + 2004-06-25 Akim Demaille + + Lift ostream flags handling higher. + + * src/codegen/libcodegen.hh, src/codegen/libcodegen.cc + (instructions_dump): Don't take arguments for the instrs-debugging + state, nor the current TempMap. + * src/codegen/tasks.cc (instructions_display): Do it here. + * src/assem/fragment.hh: Formatting changes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1516 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-25 Akim Demaille + + 2004-06-25 Akim Demaille + + Use more widely the TempMap-in-ostream feature, and add the + debug-instr-flag-in-ostream one. + + * src/regalloc/regallocator.cc: Use < + + 2004-06-25 Nicolas Pouillard + + * tests/tc-check.in: + Change the default behavior when you give a hash to + run and check functions. + Add two functions, run_external, and check_external. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1514 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-25 Akim Demaille + + 2004-06-25 Akim Demaille + + Make sure the Target is properly handled as const. + + * src/target/target.hh, src/target/target.cc: Accessors are const. + * src/regalloc/regallocator.cc: Pass a const target instead of a + codegen. + * src/regalloc/libregalloc.cc: Likewise. + * src/regalloc/tasks.cc: Idem. + * src/regalloc/regallocator.hh: Ditto. + * src/regalloc/libregalloc.hh: Similarly. + * src/codegen/libcodegen.cc: Again. + * src/codegen/tasks.cc: Once more. + * src/codegen/libcodegen.hh: And one last. + * src/regalloc/tasks.hh: Doc change. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1513 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-25 Akim Demaille + + 2004-06-25 Akim Demaille + + Factor all the places where the Target TempMap is declared. + + * src/target/tasks.hh: Fix includes. + * src/target/tasks.cc (target_set): Handle the default case + here. + (target): Use target_set to build it. + (target_display): Use <<. + * src/target/target.cc (print): Print the pointee, not the + pointer. + * src/regalloc/regallocator.hh, src/regalloc/regallocator.cc: + Fix includes. + No longer extend tempmap_ in the ctor, rather use... + (tempmap_): New. + * src/regalloc/libregalloc.cc, src/regalloc/tasks.cc, + * src/regalloc/libregalloc.hh: Adjust, i.e., pass + temp::task::TempMap where it belongs. + * src/codegen/tasks.cc: Remove useless includes. + (Nolimips): No longer needs the Cpu, use temp::task::tempmap. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1512 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-25 Akim Demaille + + 2004-06-25 Akim Demaille + + * tests/tc-check.in (&graph_check, &graph_check_one): New. + Use them to exercise T8. + ($revision): Use '', not "". + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1511 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-24 Akim Demaille + + 2004-06-24 Akim Demaille + + We need a means to propagate changes of target. + This is not sufficient yet, as the initial target is not + propagated: we still need tweaks here and there to set + the tempmap etc. + + * src/target/tasks.cc (target_set): New. + (target_mips, target_ia32): Use it. + + Target and cpu are not compliant with our coding style. + + * src/target/target.hh (operator<<): New. + Move the implementations into... + * src/target/target.cc: this new file. + * src/target/cpu.hh, src/target/cpu.cc (operator<<): New. + * src/target/Makefile.am: Adjust. + + This shook the includes. + + * src/codegen/fwd.hh: Add Assembly. + * src/assem/fwd.hh: Add Instrs. + * src/liveness/tasks.cc, src/regalloc/regallocator.cc, + * src/regalloc/color.cc, src/regalloc/regallocator.hh, + * src/codegen/tasks.cc, src/assem/instrs.hh: Fix includes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1510 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-24 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1509 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-24 Akim Demaille + + Regen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1508 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-24 Akim Demaille + + 2004-06-24 Akim Demaille + + Replace the PRCS keyword handling with Subversion's. + + * config.site: New. + Use GCC 3.4 and -ggdb. + * src/version.hh, src/version.cc: New, extracted from... + * src/common.hh, src/common.cc: these. + * src/Makefile.am: Adjust. + * Makefile.am (version.h): Replace with... + (authors.h): these. + * tests/tc-check.in ($revision): Use $Id: 6fd14ea3cc00828ba50dd56d39eb9c62aca045ae $. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1507 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-24 Akim Demaille + + Add $Rev$, and enable svn:keywords. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1506 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-21 Akim Demaille + + Upgrade. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1505 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-21 Julien Roussel + + from Julien Roussel + + * tests/tests.mk (.lir.sta, .hir.sta): Fix these rules, + there were errors on non-null havm exit status (make + process stops). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1504 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-21 Akim Demaille + + Index: ChangeLog from Akim Demaille + + * tests/mk-Makefile-am: Move constant material into... + * tests/tests.mk: Here. + (MAINTAINERCLEANFILES): New. + (.lir.sta, .hir.sta) Fix these rules, that were no longer + producing correct .out files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1503 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-21 Akim Demaille + + 2004-06-21 Akim Demaille + + * src/liveness/libliveness.cc (LivenessDump::operator()): Remove + debugging code. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1502 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-21 Akim Demaille + + 2004-06-21 Akim Demaille + + Fix the performance loss due to the change "2004-04-28 Akim + Demaille , Avoid having Frame depend on Target". + The interference graph was not built using the current TempMap, + and as a result, rv and $v0 were considered as different by the + IG, which resulted in a conflict between them preventing + coalescing them. + + * src/liveness/interference-graph.hh, + * src/liveness/interference-graph.cc (tempmap_): New. + (node_of): Use it to convert a temp into its current value. + Adjust some verbosity message. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1501 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-21 Akim Demaille + + 2004-06-21 Akim Demaille + + Let the flow and liveness graphs be output using the current Temp + mapping. + + * src/liveness/libliveness.cc (flowgraph_dump, liveness_dump): Use + the TempMap-in-stream to output the result using the current + TempMap. + This code is ugly, and needs refactoring. + + Fix one of the problems that led to the performance loss due to + the change "2004-04-28 Akim Demaille , Avoid having + Frame depend on Target.": because the TempMap used by the liveness + module did not know that rv = $v0, it was not noted that $v0 was + defined when rv is. Since the sink of the function is a use of + $v0, since there was no definition, $v0 was live up to the + function'entry, and therefore, was in conflict with every other + Temp, including rv. Hence rv could not be coalesced with $v0, + hence the performance loss. Now the liveness is properly + computed, but it is the interference graph which still has it + wrong. + + * src/liveness/tasks.cc (liveness_dump): Teach to + temp::tasks::tempmap the actual registers corresponding to fp and + rv on the current architecture. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1500 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-21 Akim Demaille + + Index: ChangeLog from Akim Demaille + + Store in the stream the TempMap used to output Temps in assem::. + Have Identifiers convert themselves directly when output. + + * src/temp/identifier.hh, src/temp/identifier.hcc (map_set) + (map_get, map_index_): New. + (operator<<): Use map_get to see if there is a Map to use to + filter the Identifiers. + + * src/assem/instr.hh, src/assem/oper.hh, src/assem/move.hh, + src/assem/oper.hxx, src/assem/move.hxx, src/assem/instr.cc + (print): Now only has two arguments: the TempMap is no longer + handle here, but directly by operator<< on Identifiers. + * src/assem/instrs.cc (print): Set the TempMap on ostr. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1499 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-21 Julien Roussel + + from Julien Roussel + + * src/regalloc/tiger_regalloc.i, src/temp/tiger_temp.i: Adjust. + + 2004-06-21 Julien Roussel + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1498 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-21 Julien Roussel + + from Julien Roussel + + * src/temp/map.hcc: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1497 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-21 Akim Demaille + + 2004-06-21 Akim Demaille + + * src/liveness/interference-graph.cc: Spare some useless + temp_set_type copy by using a const &. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1496 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-21 Akim Demaille + + 2004-06-21 Akim Demaille + + * src/liveness/flowgraph.hh, src/liveness/flowgraph.hxx: Comment + and white space changes. + + * src/graph/graph.hh (operator<<): Directly return the result of + print. + + * src/codegen/tasks.cc: Wrapping changes. + + * src/assem/instrs.hh: Comment changes. + * src/assem/instrs.hh, src/assem/instrs.cc (print): Return the + ostream, as per coding style. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1495 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-21 Akim Demaille + + Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1494 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-21 Akim Demaille + + Index: ChangeLog from Akim Demaille + + * src/temp/tempmap.cc, src/temp/tempmap.hh: Rename as... + * src/temp/map.hcc, src/temp/map.hh: these. + Rewrite to be templated by the Identifier type (typically Temp or + Label). + * src/temp/temp.cc, src/temp/label.cc: Instantiate the Map code + for Temp and Label. + + * src/regalloc/libregalloc.cc, src/liveness/libliveness.cc, + * src/tree/fragment.hh, src/codegen/mips/spim-assembly.cc, + * src/temp/libtemp.cc, src/temp/tasks.hh, src/temp/tasks.cc, + * src/assem/instrs.hh, src/assem/instr.cc, src/assem/instr.hh, + * src/assem/move.hxx: Adjust includes. + + * src/temp/Makefile.am: Adjust. + + * src/temp/temp.hh (TempMap): New. + * src/temp/fwd.hh: Adjust. + + * src/temp/libtemp.hh: Comment changes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1493 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-19 Akim Demaille + + 2004-06-19 Akim Demaille + + * src/task/libtask.hh (INT_TASK_DECLARE): Accept a default value. + * src/target/tasks.hh: Initialize callee/caller reg nums to 99. + * src/target/mips-cpu.cc (MipsCpu): Accept 0 callee/caller + registers. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1492 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-19 Akim Demaille + + 004-06-19 Akim Demaille + + * src/target/mips-cpu.cc (MipsCpu): Accept 0 callee/caller + registers. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1491 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-18 Nicolas Pouillard + + 2004-06-18 Nicolas Pouillard + + * tests/tc-check.in: Typo and renaming. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1490 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-18 Nicolas Pouillard + + 2004-06-18 Nicolas Pouillard + + Test the supported options. + + * tests/tc-check.in: + Change tests construct, now tests description are in a hash. + You can now specify required options, on tc student. + This section can be skipped if the options are not all supported. + When no specific stages are required, tests are skipped if `tc' doesn't + support it. + If `--stage 3' is passed to tc-check, this flagged as a 0% success. + If not, then we do not count these failures in the summary, but + report `skipped'. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1489 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-18 Akim Demaille + + Check these in to ease tracking output code changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1488 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-18 Akim Demaille + + 2004-06-18 Akim Demaille + + * tests/good/Makefile.am: Decompose the production of output files + with an additional step via .hir files. + Aim at sta files, not out files, because of a Mac OSX weirdness. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1487 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-17 Julien Roussel + + from Julien Roussel + + * src/regalloc/tiger_regalloc.i: Add missing includes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1486 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-16 Akim Demaille + + 2004-06-16 Akim Demaille + + * src/regalloc/regallocator.cc (operator()): Don't build the + fragment entry and exit here by hand. + * src/regalloc/tasks.cc (asm_compute): Do it here using an + existing function. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1485 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-15 Akim Demaille + + 2004-06-15 Akim Demaille + + * tests/escapes/local-escapes.tig, + * tests/good/assign-void.tig, + * tests/good/side-effects-in-sxp.tig, + * tests/good/substring-copy-all.tig, + * tests/overload/overload-builtin.tig, + * tests/overload/overload-function-record-arg.tig, + * tests/overload/overload-function.tig, + * tests/overload/overload-nil-diambiguated.tig: Add new lines in + the output to avoid producing Unix non text files. + * tests/escapes/local-escapes.out, + * tests/good/assign-void.out, + * tests/good/side-effects-in-sxp.out, + * tests/good/substring-copy-all.out, + * tests/overload/overload-builtin.out, + * tests/overload/overload-function.out, + * tests/overload/overload-function-record-arg.out, + * tests/overload/overload-nil-diambiguated.out: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1484 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-15 Akim Demaille + + Missing from the previous patch. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1483 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-15 Akim Demaille + + 2004-06-15 Akim Demaille + + * tests/escapes/for-lower.out, tests/escapes/for-lower.sta, + * tests/escapes/formal-escapes.out, + * tests/escapes/formal-escapes.sta, tests/escapes/for-scope.out, + * tests/escapes/for-scope.sta, tests/escapes/for-upper.out, + * tests/escapes/for-upper.sta, tests/escapes/local-escapes.out, + * tests/escapes/local-escapes.sta, + * tests/escapes/no-functiondec-at-all.out, + * tests/escapes/no-functiondec-at-all.sta, + * tests/escapes/record-escapes.out, + * tests/escapes/record-escapes.sta, tests/escapes/recursion.out, + * tests/escapes/recursion.sta, tests/escapes/redeclaration.out, + * tests/escapes/redeclaration.sta, + * tests/escapes/rhs-of-a-vardec.out, + * tests/escapes/rhs-of-a-vardec.sta, tests/escapes/scopes.out, + * tests/escapes/scopes.sta, tests/escapes/sl-propagation-1.out, + * tests/escapes/sl-propagation-1.sta, + * tests/escapes/sl-propagation-2.out, + * tests/escapes/sl-propagation-2.sta, + * tests/escapes/variable-escapes.out, + * tests/escapes/variable-escapes.sta, + * tests/escapes/variable-inside-for-body.out, + * tests/escapes/variable-inside-for-body.sta, + * tests/escapes/variant-escapes.out, + * tests/escapes/variant-escapes.sta, tests/good/array-of-alias.out, + * tests/good/array-of-alias.sta, tests/good/array.out, + * tests/good/array.sta, + * tests/good/assign-and-array-instantiation.out, + * tests/good/assign-and-array-instantiation.sta, + * tests/good/assign-void.out, tests/good/assign-void.sta, + * tests/good/assign-vs-boolean.out, + * tests/good/assign-vs-boolean.sta, tests/good/assign-vs-rel.out, + * tests/good/assign-vs-rel.sta, tests/good/bempel_j.out, + * tests/good/bempel_j.sta, tests/good/big-exp.out, + * tests/good/big-exp.sta, tests/good/big-lvalue.out, + * tests/good/big-lvalue.sta, tests/good/boolean-1.out, + * tests/good/boolean-1.sta, tests/good/break-in-for.out, + * tests/good/break-in-for.sta, tests/good/break-in-while.out, + * tests/good/break-in-while.sta, tests/good/builtins.out, + * tests/good/builtins.sta, tests/good/call.out, tests/good/call.sta, + * tests/good/chr-256.out, tests/good/chr-256.sta, + * tests/good/chr-minus-1.out, tests/good/chr-minus-1.sta, + * tests/good/chr.out, tests/good/chr.sta, + * tests/good/comments-javalike-nested.out, + * tests/good/comments-javalike-nested.sta, + * tests/good/comments-nested.out, tests/good/comments-nested.sta, + * tests/good/comments-with-comment-chars.out, + * tests/good/comments-with-comment-chars.sta, + * tests/good/comments-with-parens.out, + * tests/good/comments-with-parens.sta, + * tests/good/comments-with-quotes.out, + * tests/good/comments-with-quotes.sta, tests/good/commutation-1.out, + * tests/good/commutation-1.sta, tests/good/commutation-2.out, + * tests/good/commutation-2.sta, + * tests/good/compare-nil-and-record.out, + * tests/good/compare-nil-and-record.sta, + * tests/good/compare-record-and-nil.out, + * tests/good/compare-record-and-nil.sta, + * tests/good/compare-record-and-record.out, + * tests/good/compare-record-and-record.sta, + * tests/good/compare-void.out, tests/good/compare-void.sta, + * tests/good/concat.out, tests/good/concat.sta, + * tests/good/concurrent-arguments.out, + * tests/good/concurrent-arguments.sta, tests/good/donald.out, + * tests/good/donald.sta, tests/good/empty-let-body.out, + * tests/good/empty-let-body.sta, tests/good/empty-record-type.out, + * tests/good/empty-record-type.sta, tests/good/evalexp.out, + * tests/good/evalexp.sta, tests/good/exit-51.out, + * tests/good/exit-51.sta, tests/good/explicit-record-type.out, + * tests/good/explicit-record-type.sta, tests/good/fact.out, + * tests/good/fact.sta, tests/good/field-of-field.out, + * tests/good/field-of-field.sta, + * tests/good/for-high-computed-once.out, + * tests/good/for-high-computed-once.sta, + * tests/good/for-high-same-name-as-index.out, + * tests/good/for-high-same-name-as-index.sta, + * tests/good/for-in-let.out, tests/good/for-in-let.sta, + * tests/good/for-in-while.out, tests/good/for-in-while.sta, + * tests/good/for.out, tests/good/for-scope.out, + * tests/good/for-scope.sta, tests/good/for.sta, + * tests/good/for-up-to-32bits.out, tests/good/for-up-to-32bits.sta, + * tests/good/forward-fun-and-type-decl.out, + * tests/good/forward-fun-and-type-decl.sta, + * tests/good/four-hex-backslash.out, + * tests/good/four-hex-backslash.sta, + * tests/good/fractions-underloaded.out, + * tests/good/fractions-underloaded.sta, tests/good/functions.out, + * tests/good/functions.sta, tests/good/fun-vs-var.out, + * tests/good/fun-vs-var.sta, + * tests/good/getchar-no-static-string.out, + * tests/good/getchar-no-static-string.sta, tests/good/getchar.out, + * tests/good/getchar.sta, tests/good/if-and-bool.out, + * tests/good/if-and-bool.sta, tests/good/if-and-if.out, + * tests/good/if-and-if.sta, tests/good/if-and-rel.out, + * tests/good/if-and-rel.sta, tests/good/if.out, tests/good/if.sta, + * tests/good/if-void-body.out, tests/good/if-void-body.sta, + * tests/good/init-array.out, tests/good/init-array.sta, + * tests/good/initialize-to-nil.out, + * tests/good/initialize-to-nil.sta, tests/good/int-var-ordering.out, + * tests/good/int-var-ordering.sta, + * tests/good/invisible-valid-types.out, + * tests/good/invisible-valid-types.sta, + * tests/good/just-a-simple-for-1.out, + * tests/good/just-a-simple-for-1.sta, + * tests/good/just-a-simple-for-2.out, + * tests/good/just-a-simple-for-2.sta, tests/good/letexp-eseq.out, + * tests/good/letexp-eseq.sta, tests/good/let-in-for-init.out, + * tests/good/let-in-for-init.sta, + * tests/good/local-vs-global-type.out, + * tests/good/local-vs-global-type.sta, tests/good/many-args.out, + * tests/good/many-args.sta, tests/good/many-bool-ops.out, + * tests/good/many-bool-ops.sta, tests/good/many-functions.out, + * tests/good/many-functions.sta, tests/good/many-vars.out, + * tests/good/many-vars.sta, tests/good/merge.out, + * tests/good/merge.sta, tests/good/mutually-recursive-functions.out, + * tests/good/mutually-recursive-functions.sta, + * tests/good/mutually-recursive-procedures.out, + * tests/good/mutually-recursive-procedures.sta, + * tests/good/nil-as-arg.out, tests/good/nil-as-arg.sta, + * tests/good/nil-as-return-value.out, + * tests/good/nil-as-return-value.sta, tests/good/nine.out, + * tests/good/nine.sta, tests/good/non-commutative-move-mem-expr.out, + * tests/good/non-commutative-move-mem-expr.sta, + * tests/good/nul-character.out, tests/good/nul-character.sta, + * tests/good/of-precedence.out, tests/good/of-precedence.sta, + * tests/good/order-strings.out, tests/good/order-strings.sta, + * tests/good/precedence.out, tests/good/precedence.sta, + * tests/good/preincrement.out, tests/good/preincrement.sta, + * tests/good/print-chr-ord.out, tests/good/print-chr-ord.sta, + * tests/good/print-tree.out, tests/good/print-tree.sta, + * tests/good/queens.out, tests/good/queens.sta, + * tests/good/record.out, tests/good/record.sta, + * tests/good/recursive-type.out, + * tests/good/recursive-types-mutual.out, + * tests/good/recursive-types-mutual.sta, + * tests/good/recursive-types.out, tests/good/recursive-types.sta, + * tests/good/recursive-type.sta, tests/good/redefine-print.out, + * tests/good/redefine-print.sta, tests/good/rel.out, + * tests/good/rel.sta, tests/good/scopes-protect-types.out, + * tests/good/scopes-protect-types.sta, + * tests/good/scopes-protect-vars.out, + * tests/good/scopes-protect-vars.sta, + * tests/good/seqexp-arithmetics.out, + * tests/good/seqexp-arithmetics.sta, + * tests/good/shadowing-functions.out, + * tests/good/shadowing-functions.sta, + * tests/good/shadowing-types-separate.out, + * tests/good/shadowing-types-separate.sta, + * tests/good/side-effects-in-init.out, + * tests/good/side-effects-in-init.sta, + * tests/good/side-effects-in-sxp.out, + * tests/good/side-effects-in-sxp.sta, tests/good/side-effects.out, + * tests/good/side-effects.sta, tests/good/single-variable.out, + * tests/good/single-variable.sta, + * tests/good/so-many-args-in-rec-func.out, + * tests/good/so-many-args-in-rec-func.sta, tests/good/strcmp.out, + * tests/good/strcmp.sta, tests/good/string-backslash-char.out, + * tests/good/string-backslash-char.sta, + * tests/good/string-backslash-octal.out, + * tests/good/string-backslash-octal.sta, + * tests/good/string-backslash-tortured.out, + * tests/good/string-backslash-tortured.sta, + * tests/good/string-huge.out, tests/good/string-huge.sta, + * tests/good/string-int-not-keywords.out, + * tests/good/string-int-not-keywords.sta, + * tests/good/string-simple-quotes.out, + * tests/good/string-simple-quotes.sta, + * tests/good/string-var-comparing.out, + * tests/good/string-var-comparing.sta, + * tests/good/string-var-ordering.out, + * tests/good/string-var-ordering.sta, + * tests/good/stupid-array-type.out, tests/good/stupid-array-type.sta, + * tests/good/substring-copy-all.out, + * tests/good/substring-copy-all.sta, + * tests/good/substring-copy-nothing.out, + * tests/good/substring-copy-nothing.sta, tests/good/substring.out, + * tests/good/substring.sta, tests/good/substring-too-high-sum.out, + * tests/good/substring-too-high-sum.sta, + * tests/good/substring-too-low-first.out, + * tests/good/substring-too-low-first.sta, + * tests/good/substring-too-low-length.out, + * tests/good/substring-too-low-length.sta, tests/good/test27.out, + * tests/good/test27.sta, tests/good/test30.out, tests/good/test30.sta, + * tests/good/test37.out, tests/good/test37.sta, tests/good/test42.out, + * tests/good/test42.sta, tests/good/test44.out, tests/good/test44.sta, + * tests/good/three-name-spaces.out, tests/good/three-name-spaces.sta, + * tests/good/two-functions-with-the-same-name.out, + * tests/good/two-functions-with-the-same-name.sta, + * tests/good/types-aliases.out, tests/good/types-aliases.sta, + * tests/good/var-bob-is-another-bob.out, + * tests/good/var-bob-is-another-bob.sta, tests/good/var-override.out, + * tests/good/var-override.sta, tests/good/while-in-while.out, + * tests/good/while-in-while.sta, tests/overload/overload-builtin.out, + * tests/overload/overload-builtin.sta, + * tests/overload/overload-function.out, + * tests/overload/overload-function-record-arg.out, + * tests/overload/overload-function-record-arg.sta, + * tests/overload/overload-function.sta, + * tests/overload/overload-nil-diambiguated.out, + * tests/overload/overload-nil-diambiguated.sta: New. + Used to guarantee we don't change the behavior of the programs. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1482 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-10 Akim Demaille + + 2004-06-10 Akim Demaille + + * src/regalloc/libregalloc.hh, src/regalloc/libregalloc.cc + (allocate_registers): Move all the computation into... + * src/regalloc/tasks.cc: + * src/regalloc/regallocator.hh, src/regalloc/regallocator.cc: + Here. + Make it a real assem::Visitor to save some dynamic_cast. + * src/codegen/mips/codegen.cc: Space changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1481 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-10 Akim Demaille + + 2004-06-10 Akim Demaille + + * src/target/cpu.hh, src/target/cpu.cc (registers_map_) + (registers_map_get): Remove. Replace with... + (registers_get): New. + * src/target/mips-cpu.cc, src/target/ia32-cpu.cc, + * src/regalloc/color.cc: Adjust. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1480 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-10 Akim Demaille + + 2004-06-10 Akim Demaille + + * src/misc/escape.cc (misc): Be sure to preserve the stream state. + * src/misc/indent.cc (iendl): Likewise. + Reported by Benjamin Bargeton. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1479 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-10 Akim Demaille + + 2004-06-10 Akim Demaille + + Version 0.73. + For 2006-tc-6.0. + + * src/canon/traces.hh: Document. + Make it a unary_function. + * src/canon/canon.hh, src/canon/canon.cc: Adjust student tags. + Use `operator()' as method name where appropriate. + * src/canon/traces.cc: Adjust student tags. + * src/canon/libcanon.cc: Adjust. + * src/canon/basic-block.cc: Remove student tags. + * configure.ac: 0.73. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1478 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-10 Akim Demaille + + 2004-06-10 Akim Demaille + + * src/ast/ast.xml: Formatting changes. + * config/stagize: Comment changes. + + * src/canon/basic-block.hh (print): Take an ostream & not *, for + consistency. + Document. + * src/canon/basic-block.hxx: Comment changes. + * src/canon/canon.cc: Use misc::indent for debugging traces. + * src/canon/traces.cc: Likewise. + Fix comments. + * src/canon/canon.hh: Space/comment changes. + * src/canon/basic-block.cc: Use misc::indent and other operator<< + instead of open loops. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1477 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-09 Akim Demaille + + Attribution fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1476 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-09 Akim Demaille + + 2004-06-09 Akim Demaille + + * config/stagize (where): New. + Use it to change to the directory we want to stagize. + * Makefile.am (dist-hook): Pass distdir to stagize, don't + cd to it. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1475 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-09 Julien Roussel + + from Julien Roussel + + * src/canon/basic-block.cc: Fix basic block print. + + 2004-06-09 Julien Roussel + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1474 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-09 Julien Roussel + + from Julien Roussel + + * src/codegen/mips/spim-layout.cc, src/codegen/ia32/codegen.cc, + * src/codegen/mips/spim-assembly.cc, src/codegen/ia32/gas-layout.cc, + * src/codegen/ia32/gas-assembly.cc, src/assem/fragment.cc: Delete + displayed trailing spaces. + * TODO: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1473 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-09 Julien Roussel + + from Julien Roussel + + * src/codegen/tasks.hh, src/codegen/mips/codegen.hh, + * src/codegen/libcodegen.hh, src/codegen/tasks.cc, + * tests/tc-check.in, configure.ac: Use nolimips instead of mipsy. + + 2004-06-09 Julien Roussel + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1472 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-09 Julien Roussel + + from Julien Roussel + + * src/canon/traces.cc: Add explanations in comment. + + 2004-06-09 Julien Roussel + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1471 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-09 Julien Roussel + + from Julien Roussel + + * src/canon/traces.cc (make_traces): Add missing new lines. + * src/canon/basic-block.cc (print): Fix basic blocks trace print. + + 2004-06-09 Julien Roussel + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1470 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-09 Julien Roussel + + from Julien Roussel + + * src/translate/level.hh: Fix comment. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1469 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-08 Julien Roussel + + Correct ChangeLog entry error. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1468 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-08 Julien Roussel + + from Julien Roussel + + No more memory leaks in T9 ! + + * src/codegen/mips/codegen.cc (rewrite_program): Delete a locally + allocated frame. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1467 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-08 Julien Roussel + + from Julien Roussel + + No more memory leaks in T7 ! + + * src/codegen/mips/codegen.cc: Delete allocated slots in frame. + + 2004-06-08 Julien Roussel + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1466 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-08 Julien Roussel + + from Julien Roussel + + * tests/tc-check.in: Do not check mipsy memory leaks. + + 2004-06-08 Julien Roussel + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1465 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-08 Julien Roussel + + from Julien Roussel + + No more memory leaks in T6 ! + + * src/canon/traces.cc (make_trace): Delete useless blocks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1464 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-08 Akim Demaille + + dex: ChangeLog from Akim Demaille + + * src/translate/translate-visitor.hh: Document attributes. + (outer_level_): Remove, unused. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1463 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-08 Akim Demaille + + More TODO. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1462 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-04 Akim Demaille + + 2004-06-04 Akim Demaille + + The interface of Cpu is actually that of MipsCpu (e.g., it refers + to the return address reg which makes no sense for Ia32). + Have MipsCpu and Ia32Cpu have local casted pointers to their own + cpu, and relax the interface of Cpu. + + * src/target/cpu.hh (sp_reg, return_reg): Remove, not needed by tc + per se. + * src/target/fwd.hh (MipsCpu, Ia32Cpu): Fwd decl. + * src/codegen/codegen.hh, src/codegen/codegen.cc (cpu_set): + Virtual. + * src/codegen/mips/codegen.hh, src/codegen/mips/codegen.cc, + * src/codegen/ia32/codegen.hh, src/codegen/ia32/codegen.cc + (mcpu_, cpu_set, super_type): New. + Define it in the ctor. + Use it instead of cpu_ to enjoy the features of the very Cpu + currently targeted. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1461 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-04 Akim Demaille + + 2004-06-04 Akim Demaille + + * src/target/mips-target.cc: New, to stop header deps. + Pass the cpu and assembly to codegen here. + * src/target/mips-target.hh: Adjust. + Simplify includes. + * src/target/Makefile.am: Adjust. + * src/codegen/libcodegen.hh, src/codegen/libcodegen.cc + (target_to_codegen): No longer useful. + * src/codegen/tasks.cc: Don't use it. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1460 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-04 Akim Demaille + + Typo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1459 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-04 Akim Demaille + + -04 Akim Demaille + + * src/misc/ref.hh (operator==, operator!=): Fix doc. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1458 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-06-04 Akim Demaille + + 2004-06-04 Akim Demaille + + Output $x13 for Mipsy/Molimips, and t13 for Havm. + + * src/codegen/tasks.cc (instructions_display): Revamp to create a + derived class from TempMap that maps t13 to $x13 to please Mipsy. + This is a first sketch, improvements, generalizations and cleanups + are needed. + * src/temp/identifier.hh, src/temp/identifier.hcc (prefix_get): + New. + * src/temp/tempmap.hh, src/temp/tempmap.hxx: Make it suitable for + derivation: add zillions of virtual, use protected instead of + private, have a virtual dtor. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1457 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-26 Julien Roussel + + from Julien Roussel + + tc compiles with g++-3.4 ! + + * src/canon/libcanon.cc, src/codegen/libcodegen.cc: Fix 'using' + accessibility. + + 2004-05-26 Julien Roussel + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1456 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-26 Julien Roussel + + from Julien Roussel + + * src/translate/libtranslate.cc: Fix student marks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1455 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-25 Julien Roussel + + from Julien Roussel + + * src/tree/visitor.hxx, src/assem/visitor.hxx: Adjust Dtors again. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1454 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-25 Damien Thivolle + + 2004-05-20 Damien Thivolle + + * src/escapes/escapes-visitor.hh: Fix constructor declaration of + EscapesVisitor class. + * src/frame/access.hh: Fix doxygen comments, \see can't be on a single + line. + * src/frame/frame.hh: Fix doxygen comments, each commented line has to + begin with `**'. + * src/frame/frame.cc: Remove doxygen comments from source file. + * src/misc/fail.cc: Likewise. + * src/misc/fail.hh: Adjust comment. + * src/tree/libtree.cc: Correct filename in doxygen comment. + * src/tree/visitor.hxx: Likewise. + * src/tree/trees.cc: Likewise. + * src/assem/visitor.hxx: Likewise. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1453 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-20 Julien Roussel + + from Julien Roussel + + * src/liveness/tasks.cc (basename): Add comment. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1452 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-19 Julien Roussel + + from Julien Roussel + + * src/liveness/libliveness.cc, src/liveness/libliveness.hh: + No longer access filename directly. + * src/liveness/tasks.cc: Transmit filename to libs. + + 2004-05-19 Julien Roussel + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1451 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-19 Julien Roussel + + from Julien Roussel + + * src/liveness/libliveness.cc: Correct output filenames. + * TODO: Update. + + 2004-05-19 Julien Roussel + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1450 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-19 Julien Roussel + + from Julien Roussel + + * src/tree/visitor.hxx, src/assem/visitor.hxx: Adjust Dtors. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1449 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-18 Akim Demaille + + 2004-05-18 Akim Demaille + + * src/liveness/liveness.hh (temp/temp-set.hh): Do include it, not + just the fwd.hh, so that the dedicated operator<< is used. + * src/liveness/tasks.cc: + * src/codegen/tasks.cc + * src/temp/temp.cc (temp_traits): Output $x0 instead of t0. + * tests/tc-check.in: Remove the sed code to transform from t0 to + $x0, since we do it now. + (&asm_check, &asm_check_one): Remove, now equal to mipsy's routines. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1448 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-14 Akim Demaille + + 2004-05-14 Akim Demaille + + * src/liveness/libliveness.cc (liveness_dump, interference_dump): + Fix the constness of operator() so that the code is really + triggered. + Avoid warnings for name clashes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1447 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-14 Akim Demaille + + * prj: No longer used. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1446 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-14 Akim Demaille + + 2004-05-10 Akim Demaille + + Version 0.72. + For 2006-tc-5.1. + + * configure.ac: Require tc 0.71, instead of forcing perfect + synchronization by tc and tc-check versions. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1445 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-14 Akim Demaille + + 2004-05-10 Benoßt Perrot + + * configure.ac: Increase the requirement over Mipsy. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1444 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-14 Akim Demaille + + 2004-05-10 Julien Roussel + + * src/codegen/libcodegen.cc (lir_to_assem): Build fragments list in + visitor Ctor, add accessor and use it. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1443 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-14 Akim Demaille + + 2004-05-08 Benoßt Perrot + + * tests/tc-check.in (stage_test): Invoke Mipsy with + `--nop-after-branch' to disable emulation of delay slots after branch + instructions. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1442 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 Julien Roussel + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1441 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 Julien Roussel + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1440 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 Julien Roussel + + 2004-05-07 Julien Roussel + + * src/tree/Makefile.am, src/tree/fwd.hh: Adjust. + * src/tree/fragment.hh, src/tree/fragment.cc: Add Visitors entry point. + * src/canon/libcanon.cc, src/codegen/libcodegen.cc: Replace + dynamic_cast by visitors. + * src/assem/visitor.hxx: Change std::for_each to misc::for_each to + avoid copy. + * src/tree/visitor.hxx, src/tree/visitor.hh: New, same as src/assem. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1439 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 Akim Demaille + + * TODO: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1438 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 Akim Demaille + + 2004-05-07 Akim Demaille + + * src/misc/select-const.hh (const_traits, id_traits): Well, don't + report the iterator type, as we might use these traits on classes + that are not containers. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1437 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 Akim Demaille + + 2004-05-07 Akim Demaille + + * src/misc/select-const.hh (const_traits, id_traits): Report the + iterator type. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1436 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 Akim Demaille + + 2004-05-07 Akim Demaille + + * src/codegen/libcodegen.cc, src/liveness/libliveness.cc: Make the + classes bound to a single routine be inner classes of these + routines. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1435 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 Akim Demaille + + 2004-05-07 Akim Demaille + + * src/misc/fwd.hh: New. + * config/ast-fwd-gen: Use it. + * src/misc/Makefile.am: Adjust. + * src/misc/select-const.hh (const_traits, id_traits): New. + * src/ast/fwd.hh, src/assem/fwd.hh: Use misc/fwd.hh. + * src/assem/visitor.hh, src/assem/visitor.hxx: Use const_traits + and id_traits. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1434 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 Akim Demaille + + 2004-05-07 Akim Demaille + + Make assem::Visitor const/non-const, and more powerful. + Actually, MapVisitor is no longer needed. + + * src/assem/visitor.hh (Visitor): Make it template, and rename + as... + (GenVisitor): this. + (ConstVisitor, Visitor): New. + (operator()): By default, do nothing. + No longer const wrt *this. + (operator()): New overloaded versions for pointers, and for lists. + * src/assem/visitor.cc: Rename as... + * src/assem/visitor.hxx: this. + * src/assem/Makefile.am: Adjust. + (map-visitor.hh, map-visitor.hxx): No longer compile them. + + * src/canon/libcanon.cc: Remove useless casts. + * src/codegen/libcodegen.cc (FrameAllocate): Be a assem::Visitor. + Adjust callers. + * src/assem/layout.hh, src/assem/layout.cc, + * src/codegen/ia32/gas-layout.cc, src/codegen/ia32/gas-layout.hh, + * src/codegen/mips/spim-layout.cc, src/codegen/mips/spim-layout.hh: + (operator()): This method is no longer const: Visitors can be + modified during a traversal (although not used here). + * src/liveness/libliveness.cc (progfrag_visit_type): Remove. + (flowgraph_dumpproc): Make it object function and rename as... + (FlowGraphDump): this. + Adjust callers. + (LivenessDump, InterferenceDump): Be an assem::ConstVisitor. + Adjust callers. + * src/assem/fwd.hh: Adjust. + * src/assem/fragment.hh, src/assem/fragment.cc: Support + ConstVisitor and Visitor. + + * src/assem/map-visitor.hh, src/assem/map-visitor.hxx: Be + parameterized by constness. + (make_mapvisitor, make_constmapvisitor): New convenient wrappers + to spare the explicit parameterization. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1433 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-06 Akim Demaille + + 2004-05-06 Akim Demaille + + * configure.ac: 0.71a. + * src/tree/README: Layout changes. + * src/codegen/codegen.hh: Comment changes. + * src/codegen/codegen.cc (FrameAllocate): New. + (frame_allocate): Use it instead of ad hoc for loop. + * src/codegen/libcodegen.cc: Layout changes. + * src/liveness/libliveness.cc: Don't create fake object + functions when plain functions work. + * src/liveness/liveness.hh, src/assem/map-visitor.hh, + * src/assem/map-visitor.hxx: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1432 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-30 Akim Demaille + + 2004-04-30 Akim Demaille + + Version 0.71. + For 2006-tc-5.0. + + * configure.ac: Autoconf 2.59. + Automake 1.8.4. + * Makefile.am (check-local): Pass --valgrind to tc-check. + (dist-stagize): Inline into... + (dist-hook): here. + Fix the path to stagize. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1431 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-30 Akim Demaille + + 2004-04-30 Akim Demaille + + * config/stagize (func_pruned_p): Don't forget src/. + ($distdir): Move its handling into... + * Makefile.am (dist-stagize): here, as a simple preliminary cd. + (CLEANFILES): Removes these &£^$ *.dot files left by make check. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1430 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-30 Akim Demaille + + 2004-04-30 Akim Demaille + + * src/translate/translate-visitor.cc (operator () (IfExp)): Simplify. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1429 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-30 Akim Demaille + + 2004-04-30 Akim Demaille + + * src/translate/translate-visitor.cc (operator () (IfExp)): Simplify. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1428 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-30 Akim Demaille + + * Makefile.am, config/stagize: Remove debugging traces. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1427 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-30 Akim Demaille + + 2004-04-30 Akim Demaille + + * Makefile.am: Apply the changes described in the previous patch. + * config/stagize (func_pruned_p): New. + Use it to save running generate-* scripts, bootstrap and so forth. + This also addresses a problem: when distcheck is run, it also + performs a `make dist' on its read-only source tree, and will + run `dist-hook' on the dist tree _before_ setting back the write + permission. Hence it fails: one is not expected to change the + dist dir if no change it to be made. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1426 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-30 Julien Roussel + + 2004-04-30 Julien Roussel + + * src/frame/frame.cc, src/frame/frame.hh: Add locals desallocation. + * src/translate/level.cc: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1425 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-30 Akim Demaille + + * TODO: Test required options for a test pool. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1424 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-30 Nicolas Pouillard + + Add nested student marks support, add an error function, use IO::File, and correct style. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1423 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-30 Akim Demaille + + 2004-04-29 Akim Demaille + + * config/stagize (stud): New incoming var to be able to ship graph + in T3 for distdir, and in T7 for studir. + * Makefile.am (dist-stagize, studir): Use it. + (studir): Move code removal into... + * config/stagize: here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1422 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-29 Julien Roussel + + 2004-04-29 Julien Roussel + + * src/frame/access.cc, src/frame/access.hh (clone): Use + covariance. + * src/frame/frame.cc, src/frame/frame.hh (formal_alloc): Delete + overloaded method accepting access pointer lists, coded in Dtor. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1421 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-29 Akim Demaille + + 2004-04-29 Akim Demaille + + * Makefile.am (check-local): Don't pass --err-exit for the time + being (since we don't pass 100% tests...). + * src/misc/tiger_misc.i: Fix the module name. + + * src/misc/test-ref.cc, src/misc/test-indent.cc, + * src/misc/test-deref.cc, src/misc/test-escape.cc, + * src/misc/test-timer.cc, src/symbol/test-symbol.cc, + * src/ast/test-ast.cc, src/temp/test-temp.cc, + * src/codegen/mips/test-rw_prg.cc, src/graph/test-graph.cc, + * src/regalloc/test-regalloc.cc: Don't invite Doxygen here, as it + pollutes the real documentation (especially when there are classes + such as `A' which `name' is fairly common in regular sentences...). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1420 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-28 Julien Roussel + + 2004-04-28 Julien Roussel + + * src/frame/access.cc, src/frame/access.hh (clone): New. + * src/frame/frame.cc, src/frame/frame.hh (formal_alloc): New + overloaded method accepting access pointer lists, uses clone. + Use it in Ctor.. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1419 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-28 Akim Demaille + + 2004-04-28 Akim Demaille + + Have distcheck T=5 pass. + + * config/stagize: Ship graph for T3, since we do use it in our + implementation of T3's extensions... + * src/escapes/fundecgraph.hh: Formatting changes. + + * src/translate/libtranslate.hh, src/translate/tiger_translate.i: + Move tree material into... + * src/tree/libtree.cc, src/tree/libtree.hhm src/tree/tiger_tree.i: + These new files. + * src/tree/Makefile.am: Adjust. + + * src/canon/libcanon.hh, src/canon/tiger_canon.i, + * tcsh/generate-swig-mk, tcsh/tc.py: Adjust to using tree. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1418 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-28 Akim Demaille + + 2004-04-28 Akim Demaille + + Have distcheck T=5 pass. + + * src/task/Makefile.am (libtask_a_SOURCES): Typo. + * src/frame/frame.cc (temp/label.hh): Include it to have operator + << over Label. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1417 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-28 Akim Demaille + + 2004-04-28 Akim Demaille + + * src/frame/frame.cc (target/tasks.hh): No longer include it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1416 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-28 Akim Demaille + + 2004-04-28 Akim Demaille + + translate::Fragments are really a part of tree:: (just as + assem::Fragment is bound to assem::Instr), hence move them + there. + + * src/translate/fragment.hh: Rename as... + * src/tree/fragment.hh: this. + * src/translate/fragment.hxx: Rename as... + * src/tree/fragment.hxx: this. + * src/translate/fragment.cc: Rename as... + * src/tree/fragment.cc: this. + * src/translate/fragments.hh: Rename as... + * src/tree/fragments.hh: this. + * src/translate/fragments.cc: Rename as... + * src/tree/fragments.cc: this. + * src/tree/Makefile.am, src/translate/Makefile.am: Adjust. + + * src/tree/fwd.hh, src/translate/libtranslate.cc, + * src/translate/libtranslate.hh, src/translate/tasks.cc, + * src/translate/tasks.hh, src/translate/translate-visitor.hh, + * src/translate/translation.hh, src/translate/fwd.hh, + * src/translate/translate-visitor.cc, src/translate/translation.cc, + * src/canon/tasks.cc, src/canon/libcanon.cc, src/canon/libcanon.hh, + * src/codegen/libcodegen.cc, src/codegen/libcodegen.hh, + * src/codegen/ia32/gas-layout.cc, src/codegen/mips/spim-layout.cc, + * src/codegen/mips/test-rw_prg.cc, src/assem/fragment.hh, + * src/assem/fragment.hxx: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1415 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-28 Akim Demaille + + 2004-04-28 Akim Demaille + + Avoid having Frame depend on Target. + + * src/frame/fwd.hh: Comment changes. + * src/frame/access.cc: Adjust. + * src/frame/frame.cc, src/frame/frame.hh (frame_pointer_get) + (return_value_get): Remove. + Let clients directly build "fp" and "rv". + (static_link_exp): Replace with... + (static_link): this, so that Frame does not depend upon tree::Tree. + + * src/translate/access.hh, src/translate/access.cc (operator<<): + New for access_list_type. + * src/translate/level.cc: Use it. + * src/translate/fragment.hh: Include changes. + * src/translate/translation.cc: Build "rv" here. + * src/codegen/ia32/codegen.cc, src/codegen/mips/codegen.cc: Don't + ask for the fp to a Frame, since anyway the cpu_ is already + available here! + + * src/codegen/tasks.cc (instruction_display): Ugly Q&D hack. + Now the intermediate code (Tree) is self consistent: it uses only "rv" + and "fp". But then the intermediate representation (Assem) too, + which is not what Mipsy expects. So at the last second, set the + TempMap so that "rv" and "fp" find their concrete names. + Note that this is the right approach (via TempMap), but it should + be factored elsewhere (target::Cpu). + * src/regalloc/libregalloc.cc (allocate_registers): Likewise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1414 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-28 Akim Demaille + + 2004-04-28 Akim Demaille + + * doc/Doxyfile.in: Document *.hcc files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1413 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-28 Akim Demaille + + 2004-04-28 Akim Demaille + + Rename tree::Node as tree::Tree, which is more coherent with the + fact that we name this intermediate representation `Tree code'. + Rename all the related names (node_list_type, rNode, etc.). + + * src/tree/node.hh: Rename as... + * src/tree/tree.hh: this. + * src/tree/node.cc: Rename as... + * src/tree/tree.cc: this. + * src/tree/node.hxx: Rename as... + * src/tree/tree.hxx: this. + * src/tree/nodes.cc: Rename as... + * src/tree/trees.cc: this. + * src/tree/nodes.hh: Rename as... + * src/tree/trees.hh: this. + + * src/tree/Makefile.am, src/tree/fwd.hh, src/tree/all.hh, + * src/tree/binop.hh, src/tree/call.hh, src/tree/cjump.hh, + * src/tree/const.hh, src/tree/eseq.hh, src/tree/exp.hh, + * src/tree/iterator.hh, src/tree/jump.hh, src/tree/label.hh, + * src/tree/mem.hh, src/tree/move.hh, src/tree/name.hh, + * src/tree/node.hh, src/tree/tree.hh, src/tree/seq.hh, + * src/tree/stm.hh, src/tree/sxp.hh, src/tree/temp.hh, + * src/tree/node.cc, src/tree/tree.cc, src/tree/name.cc, + * src/tree/mem.cc, src/tree/label.cc, src/tree/const.cc, + * src/tree/cjump.cc, src/tree/binop.cc, src/tree/node.hxx, + * src/tree/tree.hxx, src/tree/iterator.hxx, src/tree/cjump.hxx, + * src/tree/temp.cc, src/tree/sxp.cc, src/tree/seq.cc, + * src/tree/move.cc, src/tree/jump.cc, src/tree/eseq.cc, + * src/tree/call.cc, src/tree/seq.hxx, src/tree/nodes.cc, + * src/tree/trees.cc, src/tree/nodes.hh, src/tree/trees.hh, + * src/canon/basic-block.hh, src/canon/canon.hh, src/canon/canon.cc, + * src/canon/traces.hh, src/canon/traces.cc, + * src/canon/basic-block.cc, src/canon/basic-block.hxx, + * src/codegen/ia32/codegen.cc, src/codegen/ia32/codegen.hh, + * src/codegen/mips/codegen.cc, src/codegen/mips/codegen.hh: + s/node/tree/g;s/Node/Tree/g. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1412 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-28 Akim Demaille + + 2004-04-28 Akim Demaille + + * src/task/fwd.hh: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1411 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-28 Akim Demaille + + 2004-04-28 Akim Demaille + + * src/misc/indent.cc: Documentation. + Use of precondition. + Include adjustments. + * src/misc/test-indent.cc: Rename vars. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1410 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-28 Akim Demaille + + * src/tc.cc: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1409 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-28 Akim Demaille + + 2004-04-28 Akim Demaille + + Clean up the task module. + + * src/task/boolean-task.hxx, src/task/function-task.hxx, + * src/task/int-task.hxx: Remove. + Adjust dependencies. + * src/task/Makefile.am: Adjust. + + * src/task/tasks.cc, src/task/task.hh, src/task/task.hxx, + * src/task/task.cc, src/task/boolean-task.hh, + * src/task/boolean-task.cc, src/task/function-task.hh, + * src/task/function-task.cc, src/task/int-task.hh, + * src/task/int-task.cc, src/task/task-register.cc, + * src/task/task-register.hh: Move everybody into the task + namespace. + Change printing methods to take and return an ostream. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1408 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-28 Akim Demaille + + * TODO: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1407 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-27 Akim Demaille + + * src/temp/test-temp.cc (EXERCISE): Fix the comment. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1406 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-27 Akim Demaille + + 2004-04-27 Akim Demaille + + * src/temp/test-temp.cc (EXERCISE): Restore a comment that should + not have been removed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1405 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-27 Akim Demaille + + 2004-04-27 Akim Demaille + + * src/translate/fragment.hh, src/translate/fragments.hh, + * src/translate/libtranslate.hh: More cleanups and doc changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1404 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-27 Akim Demaille + + 2004-04-27 Akim Demaille + + * src/translate/access.hh, src/translate/exp.hh, + * src/translate/level.cc, src/translate/level.hh, + * src/translate/translation.hh, src/translate/exp.cc, + * src/translate/fwd.hh, src/translate/level.hxx, + * src/translate/translate-visitor.cc, src/translate/translation.cc: + Clean up. + Formatting and documentation changes. + * src/translate/translation.cc (translate): Use goto to factor + (yes, yes...). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1403 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-27 Julien Roussel + + 2004-04-27 Julien Roussel + + * tests/tc-check.in: Fix options. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1402 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-27 Akim Demaille + + * ChangeLog: Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1401 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-27 Akim Demaille + + 2004-04-27 Akim Demaille + + * src/frame/libframe.hh: New. + * src/frame/Makefile.am: Adjust. + * src/frame/access.cc, src/frame/access.hh, src/frame/frame.cc, + * src/frame/frame.hh, src/frame/access.hxx, src/frame/fwd.hh: + Minimize header dependencies. + Less code in hxx files. + More documentation. + * src/frame/frame.hh, src/frame/frame.cc (formal_alloc): New + overloaded method, accepting lists. + Use it in the ctor. + + * src/translate/access.hh, src/translate/fragment.cc, + * src/translate/access.cc, src/translate/access.hxx, + * src/translate/fwd.hh: Adjust includes. + + * src/codegen/mips/codegen.cc, src/codegen/ia32/codegen.cc: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1400 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-26 Julien Roussel + + 2004-04-26 Julien Roussel + + * src/temp/factory.hh, src/temp/factory.hcc: Map keyed over + Symbols, not string. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1399 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-26 Julien Roussel + + 2004-04-26 Julien Roussel + + * src/temp/factory.hh, src/temp/factory.hcc: Add map to create an + unique Identifier for each named Identifier. + * src/temp/test-temp.cc: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1398 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-26 Akim Demaille + + * NEWS, ChangeLog, AUTHORS: Fixes and updates. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1397 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-26 Akim Demaille + + * src/ast/Makefile.am: Comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1396 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-26 Akim Demaille + + 2004-04-26 Akim Demaille + + * src/ast/Makefile.am (LOCAL_BUILT_SOURCES): Rename as... + (BUILT_SOURCES_local): these to avoid Automake warnings. + Suggested by Alexandre Duret-Lutz. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1395 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-23 Akim Demaille + + 2004-04-23 Akim Demaille + + * src/temp/Makefile.am (libtemp_a_SOURCES): Adjust to *.hcc files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1394 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-23 Akim Demaille + + 2004-04-23 Akim Demaille + + * src/temp/fwd.hh, src/temp/identifier.hh, + * src/temp/identifier.hcc, src/temp/label.hh, src/temp/factory.hh, + * src/temp/factory.hcc, src/temp/temp.hh (TagType_): Rename as... + (Tag_): this. + Complete the documentation. + Student marks. + (TaggedIdentifier): Add all the comparison operators. + * src/temp/test-temp.cc: Do a more thorough job. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1393 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-23 Akim Demaille + + 2004-04-23 Akim Demaille + + * src/liveness/Makefile.am (test_flowgraph_LDADD): Complete the + missing libs, and reorder. + * src/liveness/test-flowgraph.cc: Be sure to define all the extern + variables we depend upon. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1392 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-23 Akim Demaille + + 2004-04-23 Akim Demaille + + Before this patch Identifier used to be parameterized by a struct + (say temp_identifier), and it used a traits parameterized by this + struct (say identifier_traits ). Merge + temp_identifier and identifier_traits into a single traits, + temp_traits, that is used to parameterize Identifier. + This will demonstrate template template parameters. + + * src/temp/identifier.hh (identifier_traits): Remove. + (Identifier): Be parameterized by Traits_, a template, instead of + I_, a typename. + (TaggedIdentifier): Be parameterized twice: once by Traits_, and + then by the TagType_. + * src/temp/identifier.hcc: Adjust the code. + * src/temp/factory.hh, src/temp/factory.hcc: Minimize includes. + (Factory): Parameterize by Traits_. + Comment the code. + + * src/temp/label.cc, src/temp/temp.hh, src/temp/temp.cc, + * src/temp/label.hh, src/temp/fwd.hh: Adjust to create temp_traits + and label_traits, and to use them. + + * src/temp/Makefile.am: Stylistic changes. + * src/temp/test-temp.cc: Remove weird code. + * src/liveness/Makefile.am (test_flowgraph_LDADD): Pay attention + to lib order. + * src/liveness/test-flowgraph.cc (temp/label.hh): Include. + * src/misc/set.hxx (ostream): Include. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1391 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-23 Julien Roussel + + 2004-04-23 Julien Roussel + + No memory leaks in T5. + + * src/frame/frame.cc, src/frame/frame.hh: Use pointer in ctor. Add dtor. + * src/translate/fragment.hh, src/translate/fragment.hxx, + * src/translate/fragment.cc: Add ProcFrag dtor. Add frame_ constness and + pointer. + * src/translate/level.hxx, src/translate/level.cc, + * src/translate/level.hh: Add dtor and local allocated accesses list. + Use a frame pointer instead of a frame (to avoid desallocation, needed + in Fragment). + * src/translate/libtranslate.cc, src/translate/translation.hh: Adjust. Add + delete. + * src/translate/level-env.hxx (scope_end): delete levels. + * src/translate/translate-visitor.cc: Add delete and adjust. + * src/translate/translation.cc: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1390 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-23 Akim Demaille + + 2004-04-23 Akim Demaille + + Fight the spreading of the code for identifier and factory + templates: introduce explicit instantiations of these classes in + specified compilation units. + + * src/temp/fwd.hh (identifier_type): Remove. + * src/temp/identifier.hh (fwd.hh): Don't include it: we no longer + rely on identifier_type. Instead, have a regular typename + parameter. + No longer include the .hxx part. + * src/temp/identifier.hxx: Rename as... + * src/temp/identifier.hcc: this. + This file is now to be compiled once. + Remove the `inline'. + Adjust to the identifier_type removal. + * src/temp/factory.hh: Similarly. + * src/temp/factory.hxx: Rename as... + * src/temp/factory.hcc: this. + And do similarly. + + * src/temp/label.hh (label_identifier): New struct, playing the + role of the former eponymous enum values. + * src/temp/label.cc (factory.hcc, identifier.hcc): Include them. + For the template instantiations. + * src/temp/temp.hh, src/temp/temp.cc: Likewise. + + * src/temp/tempmap.cc, src/assem/instr.cc, src/assem/oper.hxx, + * src/temp/label-list.cc: Adjust includes no longer provided by + former hxx files. + * src/frame/frame.hh (operator<<): Move its implementation to... + * src/frame/frame.cc: here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1389 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-22 Akim Demaille + + 2004-04-22 Akim Demaille + + * src/misc/ref.hxx: Remove `this->' when not required. + * src/misc/ref.hh, src/misc/ref.hxx: Complete the documentation. + Adjust student marks. + Make it a class instead of a struct. + Formatting changes. + * src/misc/test-ref.cc (main): Exercise the copy constructor. + Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1388 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-20 Julien Roussel + + 2004-04-20 Julien Roussel + + * tests/tc-check.in: Add leaks check support from T5 to T8. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1387 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-20 Julien Roussel + + 2004-04-20 Julien Roussel + + * src/tree/stm.cc: Implementation for Stm. + * src/tree/exp.cc: Implementation for Exp. + * src/tree/nodes.hh, src/tree/nodes.cc: Intermediate + representation: node_list_type. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1386 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-20 Julien Roussel + + 2004-04-20 Julien Roussel + + * src/assem/layout.hh: Adjust. + * src/liveness/liveness.cc: Use empty. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1385 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-20 Julien Roussel + + 2004-04-20 Julien Roussel + + * config/warning.m4: Fix warning computation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1384 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-20 Julien Roussel + + 2004-04-20 Julien Roussel + + * src/assem/fragment.cc, src/assem/instr.cc, src/assem/instr.hh, + * src/assem/layout.hh, src/canon/basic-block.hh, + * src/codegen/assembly.hh, src/codegen/codegen.hh, + * src/codegen/ia32/gas-layout.cc, src/frame/access.hh, + * src/frame/frame.hh, src/liveness/interference-graph.hh, + * src/liveness/liveness.hh, src/regalloc/color.hh, + * src/translate/exp.cc, src/translate/level-env.cc, + * src/translate/translate-visitor.cc, src/target/cpu.hh, + * src/translate/translation.cc, src/translate/exp.hh, + * src/translate/level.cc, src/translate/libtranslate.cc, + * src/tree/cjump.hh, src/tree/jump.hh, src/tree/label.hh, + * src/tree/temp.hh, src/tree/name.cc, src/tree/label.cc, + * src/tree/temp.cc, src/canon/basic-block.cc: Adjust inclusions. + * src/assem/instrs.hh: Delete empty lines. + * src/assem/visitor.hh: Adjust inclusions and comments. + * src/canon/traces.hh: Adjust typedef. + * src/misc/Makefile.am: Delete set.cc + * src/misc/set.hh: Adjust comments. + * src/misc/set.hxx: Adjust inclusion and operator<<. + * src/misc/set.cc: Deleted. + * src/target/cpu.cc: Adjust brackets. + * src/temp/identifier.hh: Move enum identifier_type ... + * src/temp/fwd.hh: here. Add some classes and typedefs. + * src/assem/fwd.hh: add class Visitor.. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1383 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-20 Julien Roussel + + 2004-04-20 Julien Roussel + + * src/parse/libparse.hh, src/task/libtask.hh, src/task/task.hh, + * src/type/libtype.hh: Add or adjust comments. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1382 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-20 Julien Roussel + + 2004-04-20 Julien Roussel + + * src/translate/fragment.cc: Use indentation functions. + * src/tree/Makefile.am, src/tree/node.hxx: Adjust. + * src/tree/fwd.hh: Simplify nodes declaration. + * src/tree/binop.hh, src/tree/call.hh, src/tree/cjump.hh, + * src/tree/const.hh, src/tree/eseq.hh, src/tree/jump.hh, + * src/tree/label.hh, src/tree/mem.hh, src/tree/move.hh, + * src/tree/name.hh, src/tree/seq.hh, src/tree/sxp.hh, + * src/tree/temp.hh, src/tree/node.hh, src/tree/name.cc, + * src/tree/mem.cc, src/tree/label.cc, src/tree/const.cc, + * src/tree/cjump.cc, src/tree/binop.cc, src/tree/temp.cc, + * src/tree/sxp.cc, src/tree/move.cc, src/tree/jump.cc: Use + ostream. + * src/tree/node.cc, src/tree/seq.cc, src/tree/eseq.cc, + * src/tree/call.cc: Use ostream and indentation functions. + * src/tree/expstm.cc: New. Implementation for tree/exp.hh and + tree/stm.hh. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1381 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-14 Nicolas Pouillard + + 0.1334: studentize: Check unclosed student marks, and handle more comments styles. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1380 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-13 Julien Roussel + + 2004-04-13 Julien Roussel + + * src/ast/ast.xml: Remove unused nested student marks (due to more + restrictive studentize script). + * src/ast/callexp.hh, src/ast/functiondec.hh, + * src/ast/ifexp.hh, src/ast/letexp.hh, + * src/ast/seqexp.hh: Regen. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1379 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-08 Akim Demaille + + 2004-04-08 Akim Demaille + + * src/assem/instrs.hh, src/frame/frame.hh, src/misc/deref.hxx, + * src/type/type-visitor.hh, src/type/types.hh, + * src/type/type-visitor.cc: Comment/style changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1378 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-08 Akim Demaille + + 2004-04-07 Akim Demaille + + * src/type/types.hh (Named::type_): Remove the `const', as it's + somewhat surprising to read `mutable const'. + * src/type/type-visitor.hh: Clarify the documentation. + (visitDecHeader, visitDecBody): Declare the specializations for + Doxygen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1377 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-05 Akim Demaille + + 2004-04-05 Akim Demaille + + * configure.ac: Bump to 0.70a. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1376 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-05 Akim Demaille + + * NEWS: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1375 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-05 Akim Demaille + + 2004-04-05 Akim Demaille + + Version 0.70. + For 2006-tc-4.2. + * config/studentize (&studentize): Don't studentize TODO which can + contain unbalanced student marks. + * configure.ac (AM_INIT_AUTOMAKE): Check-news. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1374 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-02 Akim Demaille + + 2004-04-02 Akim Demaille + + Let tcsh catch up with misc::fail. + + * src/misc/tiger_misc.i: New. + * src/tiger_common.i: Adjust. + * src/misc/Makefile.am: Ditto. + * tcsh/generate-swig-mk: Idem. + + * src/type/type-entry.hxx, src/type/type-entry.hh: Minor changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1373 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-02 Akim Demaille + + 2004-04-02 Akim Demaille + + * src/type/type-visitor.cc (type): Use misc::indent instead of + adhoc indentation. This produces better looking error messages + involving complex types, which are printed using misc::indent. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1372 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-02 Akim Demaille + + 2004-04-02 Akim Demaille + + * src/common.cc, src/common.hh (exit_status, exit_set): Move to... + * src/misc/fail.hh, src/misc/fail.cc: these new files. + (exit_on_error): New, throws an exception instead of using exit + which skips stack unwinding. + * src/misc/Makefile.am: Adjust. + * src/tc.cc: Adjust to catch the runtime errors. + Required for stack unwinding. + * src/escapes/libescapes.cc, src/overload/tasks.cc, + * src/parse/tasks.cc, src/parse/parsetiger.yy, + * src/parse/scantiger.ll, src/task/task.cc, + * src/task/task-register.cc, src/type/tasks.cc: : Adjust. + + * src/ast/test-ast.cc (program_name, exit_status): No longer + needed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1371 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-02 Damien Thivolle + + 2004-04-02 Damien Thivolle * src/translate/fragment.cc: Fix. * src/tree/node.hxx: Fix. * src/misc/test-indent.cc: Replace asser by assertion. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1370 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-02 Akim Demaille + + 2004-04-02 Akim Demaille + + * src/symbol/table.hh (operator<<): Move its definition into... + * src/symbol/table.hxx: here. + (print): Use misc::indent. + * src/type/type-env.cc (TypeEnv::print): Use misc::indent. + * src/type/types.cc, src/type/type-entry.cc: Fix output layout. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1369 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-01 Damien Thivolle + + 2004-04-01 Damien Thivolle * src/translate/fragment.cc: Use indentation functions from misc/indent.hh * src/tree/call.hh: Likewise. * src/tree/eseq.hh: Likewise. * src/tree/node.hh: Likewise. * src/tree/seq.hh: Likewise. * src/tree/node.cc: Likewise. * src/tree/node.hxx: Likewise. * src/tree/seq.cc: Likewise. * src/tree/eseq.cc: Likewise. * src/tree/call.cc: Likewise. * src/misc/indent.cc: Fill the indentation blank with white spaces. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1368 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-01 Akim Demaille + + 2004-04-01 Akim Demaille + + * tests/tc-check.in (&cut): Add a missing newline. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1367 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-04-01 Akim Demaille + + 2004-04-01 Akim Demaille + + * src/ast/test-ast.cc: Doxygenation. + * src/misc/libmisc.hh, src/misc/test-indent.cc: New. + * src/misc/Makefile.am: Adjust. + * src/misc/test-deref.cc: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1366 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-31 Akim Demaille + + 2004-03-31 Akim Demaille + + First pass of T5 cleanup. + + * src/ast/print-visitor.cc: Formatting changes. + * src/frame/access.cc: Idem. + * src/frame/access.hh: Be sure to be "using" publicly. + * src/frame/frame.cc: Formatting changes. + * src/translate/fragment.hh: Idem. + * src/translate/level.hxx: Idem. + * src/translate/fwd.hh (Exp): Add. + * src/translate/translation.hh (translate/fwd.hh): Use it. + * src/translate/level-env.hh: Don't be "using" symbol::Symbol. + * src/translate/level.cc, src/translate/level.hh: Idem. + * src/translate/level-env.cc, src/translate/level-env.hxx: Idem. + * src/translate/translate-visitor.hh (translate): New method + template to work on std::list . + * src/translate/translate-visitor.cc: Use it. + Fix comments referring to the TyV. + Adjust layout. + (~TranslateVisitor): Use procedureDec instead of open coding it. + * src/translate/translation.cc: Complete the includes now that we + use fwd.hh in the headers. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1365 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-31 Akim Demaille + + 2004-03-31 Akim Demaille + + Really implement the simplification for if-then as syntactic + sugar. + + * src/ast/ast.xml (IfExp): Include ast/seqexp.hh. + Let the elseclause member be mandatory. + Add another ctor for IfExp to fill the missing value. + * src/ast/print-visitor.cc, src/ast/default-visitor.hxx, + * src/cppgen/cppgen-visitor.cc, src/parse/parsetiger.yy, + * src/type/type-visitor.cc: Adjust. + * src/ast/assignexp.hh, src/ast/ifexp.cc, src/ast/ifexp.hh, + * src/ast/ifexp.hxx: Regen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1364 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-31 Akim Demaille + + 2004-03-31 Akim Demaille + + Make sure tc-check does not publish too much of the tests. + + * tests/tc-check.in (&cut): New. + (&contents): Use it. + (&report_file): Use it. + (&file_limit): Remove, unused. + (&ast_one_check): Pass -u0 to avoid giving away too much of the + test, and limit the diff output to 4 lines. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1363 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-29 Akim Demaille + + * TODO: More. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1362 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-29 Akim Demaille + + 2004-03-29 Akim Demaille + + * src/type/type-visitor.hh: Close a student mark. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1361 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-26 Akim Demaille + + 2004-03-26 Akim Demaille + + * tests/tc-check.in (&escapes_check_one): Check stderr. + * src/ast/default-visitor.hxx: Remove an embarrassing debugging + output. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1360 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-26 Akim Demaille + + 2004-03-26 Akim Demaille + + Version 0.69. + For 2006-tc-4.0. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1359 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-26 Akim Demaille + + 2004-03-26 Akim Demaille + + * src/type/type-visitor.hh, src/type/types.hh, src/type/types.cc, + * src/type/type-visitor.cc: Adjust student marks. + * src/type/fwd.hh: New. + * src/type/Makefile.am: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1358 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-26 Nicolas Pouillard + + tests/tc-check.in: Correct the return value of `run'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1357 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-26 Akim Demaille + + 2004-03-26 Akim Demaille + + Repair tcsh. + + * src/tc.cc (TC_CC_): Don't define here and no longer include + modules.hh here, but... + * src/modules.cc: in this new file, so that tcsh may directly use + this file to load the tasks. This is needed because the modules + include their tasks in their libraries. This should be fixed in + the future: libraries ought to be independent of the task system. + * tcsh/tiger_common.i: Rename as... + * src/tiger_common.i: this. + * src/Makefile.am, tcsh/Makefile.am: Adjust. + * tcsh/generate-swig-mk: Fix modulepath for common which is now in + src/. + * tcsh/generate-tc-shared-mk (tc_libs): Define it!!! Without + this, no tc code was included in tcsh. + * tcsh/common.cc: Remove. + + * src/escapes/escapes-visitor.cc (misc/contract.hh): Include. + * src/misc/timer.cc: Formatting changes. + * src/canon/libcanon.cc: Idem. + * src/canon/libcanon.hh: Ditto. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1356 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-26 Akim Demaille + + 2004-03-26 Akim Demaille + + Let the EV accepts undeclared arguments again. + + * src/misc/traits.hxx: New. + * src/misc/traits.hh: New. + * src/misc/Makefile.am: Adjust. + * src/symbol/table.hh, src/symbol/table.hxx (get): When the key is + unknown, return 0 if returning a pointer, otherwise throw a + range_error. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1355 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-26 Akim Demaille + + 2004-03-26 Akim Demaille + + * tcsh/generate-swig-mk, tcsh/generate-tc-shared-mk: Fix the test + on present modules. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1354 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-26 Akim Demaille + + 2004-03-26 Akim Demaille + + * src/ast/libast.cc, src/ast/libast.hh, src/codegen/libcodegen.hh, + * src/translate/libtranslate.cc, src/translate/libtranslate.hh, + * src/temp/libtemp.cc, src/temp/libtemp.hh, src/ast/libast.hxx + (print): Return an ostream as per the coding style. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1353 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-26 Akim Demaille + + * ast/libast.hh (ast/libast.hxx): Include. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1352 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-26 Akim Demaille + + 2004-03-26 Akim Demaille + + * src/ast/libast.hh (print, operator<<): Accept an Ast, not just + an Exp, since that can be useful to debug. + * src/ast/libast.hxx: New, for inline implementations. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1351 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-25 Julien Roussel + + 2004-03-25 Julien Roussel + + * src/symbol/symbol.hh: Move ostream inclusion... + * src/symbol/symbol.cc: here. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1350 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-25 Julien Roussel + + 2004-03-25 Julien Roussel + + * src/type/types.hxx: Use type_set to ensure deletion protection. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1349 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-25 Nicolas Pouillard + + tests/tc-check.in: Fix $? in `run'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1348 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-25 Akim Demaille + + 2004-03-25 Akim Demaille + + * tests/escapes/escapes-for-scope.tig, + * tests/escapes/escapes-n-recursion.tig, + * tests/escapes/escapes-scopes.tig: Rename as... + * tests/escapes/for-scope.tig, tests/escapes/recursion.tig, + * tests/escapes/scopes.tig: these. + * tests/escapes/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1347 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-25 Damien Thivolle + + 2004-03-25 Damien Thivolle * src/overload/overfun-type-visitor.cc: Factor code. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1346 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-25 Akim Demaille + + 2004-03-25 Akim Demaille + + * src/type/test-type.cc (ASSERT): New. + Use it. + * src/type/type-visitor.hh: Remove some `entities' into `exp', to + save width. + * src/type/type-visitor.cc: Likewise. + Reinstall my patch reverted below by Julien Roussel. + * src/type/types.cc (print): When printing a Named, display what + it immediately points to, not the end point, let the recursion do + that. + (Nil::comparable_to): Check that the *actual* type is a Record, + not the surface type. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1345 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-24 Julien Roussel + + 2004-03-24 Julien Roussel + + * src/type/type-visitor.cc: Set type_ to record_type instead + of record_named_type in RecordExp visit (the test suite is ok + now). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1344 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-24 Julien Roussel + + 2004-03-24 Julien Roussel + + * src/symbol/symbol.hh: Include ostream to compile on NetBSD. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1343 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-24 Julien Roussel + + 2004-03-24 Julien Roussel + + * src/type/type-env.hh, src/type/type-env.cc: Remove dispatch + parameter in scope_end. + * src/type/types.hh, src/type/types.cc: Replace is_instance by + is_singleton and add Named dtor (was missing and caused leaks + management in type-visitor). + * src/type/types.hxx (Named::type_set): Add deletion protection. + * src/type/type-visitor.cc, src/type/type-visitor.hh: Remove dtor + and leaks_add (no more needed because of Named dtor). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1342 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-24 Julien Roussel + + 2004-03-24 Julien Roussel + + * src/type/type-visitor.cc: Move TypeVisitor::decs_visit after FunctionDecs + and TypeDecs visits because of "specialization before instantiation" problem + with g++-3.2 and g++-3.3 (problem solved with g++-3.4). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1341 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-24 Akim Demaille + + 2004-03-24 Akim Demaille + + * src/translate/translate-visitor.hh, src/translate/translate-visitor.cc + (EXP_FROM): Replace with... + (translate): This. + * src/type/type-visitor.cc: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1340 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-24 Akim Demaille + + 2004-03-24 Akim Demaille + + * src/type/type-visitor.hh, src/type/type-visitor.cc (error): New. + Use it. + This one is overloaded and takes only a single message. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1339 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-24 Akim Demaille + + 2004-03-24 Akim Demaille + + * src/type/type-visitor.hh, src/type/type-visitor.cc (error): New. + Use it. + This dramatically reduces the room taken by error recovery... + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1338 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-24 Akim Demaille + + 2004-03-24 Akim Demaille + + * src/type/type-visitor.cc (type): Even more uses of it. + There are no `accept' left. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1337 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-24 Akim Demaille + + 2004-03-24 Akim Demaille + + * src/type/type-visitor.hh, src/type/type-visitor.cc (type): New. + Use it to simplify this (*&£$ code. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1336 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-24 Akim Demaille + + 2004-03-24 Akim Demaille + + * src/type/type-visitor.hh, src/type/type-visitor.cc (visitTypeDecHeader) + (visitTypeDecBody, visitFunctionDecHeader, visitFunctionDecBody): + Remove, factored into... + (decs_visit, visitDecHeader, visitDecBody): These. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1335 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-24 Akim Demaille + + 2004-03-24 Akim Demaille + + * src/type/type-visitor.hh (type_mismatch, check_types_comparable) + (check_types_assignable): Use an Ast node to find the location, + since that's always how it's used. This saves several location_get. + * src/type/type-visitor.cc: Adjust. + * src/overload/overfun-type-visitor.cc: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1334 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-24 Akim Demaille + + 2004-03-24 Akim Demaille + + * src/type/types.hh (print): Change all the implementation to not + using an additional argument "depth": rather... + * src/type/types.cc (type_nesting_index): New ostream index, used + to store the current depth of record. + * src/type/type-visitor.cc (operator() (RecordExp)): Complain + about the type name, instead of the type value. + * src/misc/indent.hh: Formatting changes. + * src/misc/indent.cc (ostream): Include it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1333 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-22 Damien Thivolle + + from Damien Thivolle * src/type/types.hh: Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1332 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-22 Julien Roussel + + 2004-03-22 Julien Roussel + + * NEWS: Add information on T4 leaks. + * configure.ac: Update to tc 0.68a and automake 1.8.3. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1331 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-20 Damien Thivolle + + 2004-03-20 Damien Thivolle * src/misc/indent.hh, src/misc/indent.cc: Fix. * src/type/types.hh: Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1330 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-19 Damien Thivolle + + 2004-03-19 Damien Thivolle * src/misc/Makefile.am: Add indent.cc and indent.hh to libmisc_a_SOURCES. * src/type/types.hh: Include indent.hh. * src/type/types.cc: New indentation of Record type. * src/misc/indent.hh, src/misc/indent.cc: New indentation relative functions. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1329 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-19 Julien Roussel + + 2004-03-19 Julien Roussel + + * src/type/test-type.cc: Fix. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1328 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-19 Julien Roussel + + 2004-03-19 Julien Roussel + + * tests/tc-check.in: Add --ast-delete in T4 options. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1327 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-19 Julien Roussel + + 2004-03-19 Julien Roussel + + * src/type/type-entry.hh: Replace references by pointers in ctor. + * src/type/type-env.hh: Delete builtins in dtor and in scope_end. + * src/type/type-visitor.hh, src/type/type-visitor.cc: Add dtor and + delete the non deallocate pointers list. + * src/type/types.hh, src/type/types.hxx: Add is_instance method to + know if a class is a singleton. + * src/type/type-env.cc, src/type/type-entry.hxx: Adjust pointers and + references. + * src/type/test-type.cc, src/overload/overfun-type-visitor.cc: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1326 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-19 Akim Demaille + + * NEWS, ChangeLog: Typos. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1325 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-19 Akim Demaille + + 2004-03-19 Akim Demaille + + Version 0.68. + For 2004-tc-3.0. + * Makefile.am, config/stagize: Do not deliver escapes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1324 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-18 Nicolas Pouillard + + src/task/Makefile.am: Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1323 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-18 Nicolas Pouillard + + Some fixes in Makefiles. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1322 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-18 Akim Demaille + + 2004-03-18 Akim Demaille + + * src/parse/tasks.cc (parse): Clarify the missing FIXME. + + * src/escapes/escapes-env.hh, src/escapes/escapes-env.hxx, + * src/escapes/escapes-env.cc: Rename as... + * src/escapes/definition.hh, src/escapes/definition.hxx, + * src/escapes/definition.cc: these. + * src/escapes/Makefile.am: Adjust. + * src/escapes/tasks.hh: Documentation changes. + * src/escapes/escapes-visitor.hh: Adjust, and doc changes. + * src/escapes/libescapes.cc: Doc changes. + * src/escapes/libescapes.hh: Idem. + * src/graph/graph.hh: Ditto. + * src/misc/containers.hxx: Likewise. + * src/misc/timer.hh: Again. + * src/misc/select-const.hh: and so forth. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1321 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-17 Nicolas Pouillard + + Now the --with*-swig option `try' to find swig (by default). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1320 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-16 Nicolas Pouillard + + Mainly a bug fix in timeout system. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1319 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-16 Akim Demaille + + 2004-03-16 Akim Demaille + + * config/ast-nodes-gen: Have the files' brief documentation point + to the corresponding class. + * config/ast-visitor-gen: Add Doxygen documentation. + + * src/ast/alldec.hh, src/ast/allexp.hh, src/ast/all.hh, + * src/ast/allty.hh, src/ast/allvar.hh, src/ast/anydecs.hh, + * src/ast/anydecs.hxx, src/ast/arrayexp.cc, src/ast/arrayexp.hh, + * src/ast/arrayexp.hxx, src/ast/arrayty.cc, src/ast/arrayty.hh, + * src/ast/arrayty.hxx, src/ast/assignexp.cc, src/ast/assignexp.hh, + * src/ast/assignexp.hxx, src/ast/ast.cc, src/ast/ast.hh, + * src/ast/ast.hxx, src/ast/breakexp.cc, src/ast/breakexp.hh, + * src/ast/breakexp.hxx, src/ast/callexp.cc, src/ast/callexp.hh, + * src/ast/callexp.hxx, src/ast/dec.cc, src/ast/dec.hh, + * src/ast/dec.hxx, src/ast/exp.cc, src/ast/exp.hh, src/ast/exp.hxx, + * src/ast/field.cc, src/ast/fieldexp.cc, src/ast/fieldexp.hh, + * src/ast/fieldexp.hxx, src/ast/field.hh, src/ast/field.hxx, + * src/ast/fieldvar.cc, src/ast/fieldvar.hh, src/ast/fieldvar.hxx, + * src/ast/forexp.cc, src/ast/forexp.hh, src/ast/forexp.hxx, + * src/ast/functiondec.cc, src/ast/functiondec.hh, + * src/ast/functiondec.hxx, src/ast/ifexp.cc, src/ast/ifexp.hh, + * src/ast/ifexp.hxx, src/ast/intexp.cc, src/ast/intexp.hh, + * src/ast/intexp.hxx, src/ast/letexp.cc, src/ast/letexp.hh, + * src/ast/letexp.hxx, src/ast/location.hh, src/ast/namety.cc, + * src/ast/namety.hh, src/ast/namety.hxx, src/ast/nilexp.cc, + * src/ast/nilexp.hh, src/ast/nilexp.hxx, src/ast/opexp.cc, + * src/ast/opexp.hh, src/ast/opexp.hxx, src/ast/position.hh, + * src/ast/recordexp.cc, src/ast/recordexp.hh, src/ast/recordexp.hxx, + * src/ast/recordty.cc, src/ast/recordty.hh, src/ast/recordty.hxx, + * src/ast/seqexp.cc, src/ast/seqexp.hh, src/ast/seqexp.hxx, + * src/ast/simplevar.cc, src/ast/simplevar.hh, src/ast/simplevar.hxx, + * src/ast/stringexp.cc, src/ast/stringexp.hh, src/ast/stringexp.hxx, + * src/ast/subscriptvar.cc, src/ast/subscriptvar.hh, + * src/ast/subscriptvar.hxx, src/ast/ty.cc, src/ast/ty.hh, + * src/ast/ty.hxx, src/ast/typedec.cc, src/ast/typedec.hh, + * src/ast/typedec.hxx, src/ast/var.cc, src/ast/vardec.cc, + * src/ast/vardec.hh, src/ast/vardec.hxx, src/ast/var.hh, + * src/ast/var.hxx, src/ast/visitor.hh, src/ast/whileexp.cc, + * src/ast/whileexp.hh, src/ast/whileexp.hxx: Regen. + + * src/liveness/tasks.cc, src/overload/liboverload.hh, + * src/overload/overfun-type-visitor.hh, src/overload/over-table.hh, + * src/symbol/symbol.cc, src/symbol/symbol.hh, src/symbol/symbol.hxx, + * src/task/tasks.cc, src/task/task-register.cc: Documentation changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1318 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-12 Akim Demaille + + 2004-03-12 Akim Demaille + + * src/ast/ast.xml: Move the attribute "name" from FunctionDec, + TypeDec, and VarDec into Dec itself. + * src/ast/dec.cc, src/ast/dec.hh, src/ast/dec.hxx, + * src/ast/functiondec.cc, src/ast/functiondec.hh, + * src/ast/functiondec.hxx, src/ast/typedec.cc, src/ast/typedec.hh, + * src/ast/typedec.hxx, src/ast/vardec.cc, src/ast/vardec.hh, + * src/ast/vardec.hxx: Regen. + * config/ast-visitor-gen: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1317 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-12 Akim Demaille + + 2004-03-12 Akim Demaille + + Introduce a means to write: + misc::for_each (container, visitor) + instead of an explicit iterator over container, plus invocation of + `accept' for each member. + + * src/misc/containers.hh, src/misc/containers.hxx (for_each): New. + * src/ast/default-visitor.hxx, src/ast/default-visitor.hh + (operator() (E *)): New. + Use for_each. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1316 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-11 Julien Roussel + + 2004-03-11 Julien Roussel + + * src/escapes/escapes-visitor.hh, src/escapes/escapes-visitor.cc: Add + memory deallocation in scope_end (to avoid memory leaks). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1315 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-11 Nicolas Pouillard + + 2004-03-11 Nicolas Pouillard + + * tests/tc-check.in: Fix a warning (ARRAY reference undefined). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1314 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-10 Nicolas Pouillard + + * tests/tc-check.in: Add a warnings system, at same level of failures, and an option to consider warnings, as failures. Add a unit conversion to pretty print bytes in kilo, mega... Add a new summary dedicated to memory leaks. Revert some changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1313 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-09 Akim Demaille + + 2004-03-09 Akim Demaille + + * src/ast/Makefile.am: Make sure location.hh and position.hh are + available in src/parse. + * bootstrap: Remove their generation. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1312 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-09 Julien Roussel + + from Julien Roussel + + * bootstrap: Modify invocation of "make" according to POSIX + restrictions. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1311 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-08 Julien Roussel + + from Julien Roussel + + * src/Makefile.am: Revert changes, compile src/ast before src/parse. + * bootstrap: Add src/parse/ files generation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1310 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-08 Akim Demaille + + 2004-03-08 Akim Demaille + + * src/tc.cc (parse/libparse.hh): No longer to be included. + * src/parse/parsetiger.yy (the_program): Rename as yyresult, to + avoid confusion amongst students who have still not understood the + points of namespaces. + * src/parse/libparse.cc, src/parse/tasks.hh: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1309 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-06 Julien Roussel + + from Julien Roussel + + * src/Makefile.am: Compile src/parse before src/ast. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1308 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-06 Nicolas Pouillard + + Consider memory leaks as warning in tc-check. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1307 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-04 Akim Demaille + + 2004-03-04 Akim Demaille + + * src/escapes/tasks.cc (parentgraph, callgraph): Be auto_ptr to + reclaim the memory. + * src/escapes/libescapes.hh: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1306 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-04 Akim Demaille + + 2004-03-04 Akim Demaille + + * src/escapes/callgraph-creator.cc: Rename as... + * src/escapes/callgraph-visitor.cc: this. + * src/escapes/callgraph-creator.hh: Rename as... + * src/escapes/callgraph-visitor.hh: this. + * src/escapes/parentgraph-creator.cc: Rename as... + * src/escapes/parentgraph-visitor.cc: this. + * src/escapes/parentgraph-creator.hh: Rename as... + * src/escapes/parentgraph-visitor.hh: this. + * src/escapes/Makefile.am: Adjust. + + * src/escapes/tasks.hh, src/escapes/tasks.cc: Formatting/wording + changes. + Rename "dump" suffix as "display", for consistency. + * src/escapes/libescapes.cc: Adjust. + * src/escapes/fundecgraph.hh: . + * src/escapes/fundecgraph.hxx: . + * src/escapes/escapes-visitor.cc: Use super_type. + * src/misc/select-const.hh: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1305 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-03 Akim Demaille + + 2004-03-03 Akim Demaille + + * tests/tc-check.in (&summary): Fix the prototype. + Because of this, we used to report the number of errors, instead + of the list of errors. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1304 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-03 Akim Demaille + + 2004-03-03 Akim Demaille + + The DefaultVisitors needs to adjust the iterator type it uses: + const_ or not. + + * config/ast-visitor-gen, src/ast/visitor.hh: No longer generate + the select_const mechanism here. + Move it to... + * src/misc/select-const.hh: this new file. + (select_iterator): New. + * config/ast-visitor-gen: Include and use it. + * src/ast/default-visitor.hxx: Formatting changes. + Use select_iterator. + * config/ast-fwd-gen, src/ast/fwd.hh: Adjust: forward declaration + const_kind and non_const_kind into misc, not ast. + * src/misc/Makefile.am: Adjust. + + + Coding style issues. + + * src/ast/default-visitor.hh (super_type): Define and use. + * src/overload/overfun-type-visitor.hh: Extract the OverTable part + into... + * src/overload/over-table.hh: this new file. + * src/overload/overfun-type-visitor.hxx: Rename as... + * src/overload/over-table.hxx: this. + * src/overload/Makefile.am: Adjust. + * src/symbol/table.hxx: Formatting changes. + * src/task/int-task.cc (end): Initialize to avoid gratuitous + warnings. + + + G++ 3.4 compatibility issues. + + * src/liveness/flowgraph.hh (self_type, super_type): New. + (print): Import publicly. + * src/liveness/liveness.hh (super_type): New. + (print): Import publicly. + * src/graph/graph.hxx: Use self_type, typename, and this-> where + appropriate. + * src/liveness/flowgraph.hxx: Likewise. + * src/misc/containers.hxx (ostream): Include it. + * src/misc/set.hxx: Add this-> where appropriate. + * src/misc/set.cc: Likewise. + (ostream): Include it. + * src/overload/overfun-type-visitor.hh: Define super_type and + import its operator() in a public section. + * src/overload/overfun-type-visitor.cc (sstream): Include it. + * src/overload/overfun-type-visitor.hxx: Rename as... + * src/overload/over-table.hxx: this. + * src/overload/Makefile.am: Adjust. + * src/type/type-visitor.hh (operator()): Import in the public + section, so that the OverfunTypeVisitor may use its ancestors' + functions. + * src/misc/ref.hxx : Include it for std::swap. + * src/temp/factory.hxx (~Factory): Remove the template parameter + from the destructor name. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1303 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-03 Akim Demaille + + 2004-03-03 Akim Demaille + + * configure.ac: Bump to 0.67a. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1302 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-03 Akim Demaille + + 2004-03-03 Akim Demaille + + Version 0.67. + For 2006-tc-2.1. + + * src/symbol/symbol.hh: Remove trailing comments. + (instance): Private. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1301 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-03 Akim Demaille + + 2004-03-03 Akim Demaille + + * src/cppgen/cppgen-visitor.hh, src/cppgen/cppgen-visitor.cc + (visit_chunk, operator() (decs_type): Remove, unused. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1300 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-03 Akim Demaille + + 2004-03-03 Akim Demaille + + * src/codegen/Makefile.am (EXTRA_DIST): Revert the previous + change, as the file tiger_runtime.c was already shipped. Just not + under version control. + * config/ast-fwd-gen (decs_type): Remove, unused, and misleading. + Flag the output as generated. + * src/codegen/tiger_runtime.c: Rename as... + * src/codegen/tiger-runtime.c: this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1299 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-02 Akim Demaille + + 2004-03-02 Akim Demaille + + * src/codegen/tiger-runtime.c: New. + * src/codegen/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1298 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-02 Nicolas Pouillard + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1297 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-02 Akim Demaille + + 2004-03-02 Akim Demaille + + * tests/tc-check.in (&report_file): Fix the default value for + $limit so that 0 means "no limit". + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1296 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-02 Akim Demaille + + 2004-03-02 Akim Demaille + + Fix the destruction of Cppgen. With this reverted patch, we go + from 0% to 17% of passes. + + * src/cppgen/includes/type.hh, src/cppgen/includes/function.hh, + * src/cppgen/includes/env.hh, src/cppgen/includes/explist.hh, + * src/cppgen/includes/lvalue.hh, src/cppgen/includes/arrayty.hh, + * src/cppgen/includes/recordty.hh, src/cppgen/includes/macro.hh, + * src/cppgen/includes/letinend.hh, src/cppgen/includes/stack.hh, + * src/cppgen/includes/builtin.hh, src/cppgen/includes/binop.hh, + * src/cppgen/includes/list.hh, src/cppgen/includes/control.hh: + Revert the brutal renaming of `foo_t' into `foo_type' as there + were already some `foo_type'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1295 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-03-02 Akim Demaille + + 2004-03-02 Akim Demaille + + * tests/escapes/formal-escapes.tig: Make it output something. + * tests/escapes/for-lower.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1294 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-24 Akim Demaille + + 2004-02-24 Akim Demaille + + * config/studentize (&studentize): Reorder the handling of markup + to avoid issuing a FIXME for each <<...>> within <<-...->>. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1293 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-23 Akim Demaille + + Add argp/testsuite/run-tests as a regular file. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1292 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-23 Akim Demaille + + Remove argp/testsuite/run-tests as a symlink. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1291 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-23 Akim Demaille + + (This ChangeLog entry corresponds to changes made in the previous commit.) + + 2004-02-23 Akim Demaille + + * tests/tc-check.in: Don't use version_log with Valgrind, since it + exits (1) on --version. + * src/symbol/symbol.cc: Remove stray "inline". + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1290 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-23 Akim Demaille + + 2004-02-23 Akim Demaille + + * argp: Update from CVS. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1289 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-23 Akim Demaille + + 2004-02-23 Akim Demaille + + * src/codegen/mips/spim-layout.hh (instance): Revert a patch + killing it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1288 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-23 Akim Demaille + + 2004-02-23 Akim Demaille + + * tests/tc-check.in ($TC): Look for `tc', not `TC'. + ($use_valgrind_p): New. + Use it. + ($valgrind): Look for it with &env. + (&version_log): $prereq is optional. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1287 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-23 Akim Demaille + + 2004-02-23 Akim Demaille + + The target set up fails under OS X because of a bad static member + initialization dependency. Remove this dependency with a better + Singleton idiom. + + * src/symbol/symbol.hh, src/symbol/symbol.cc (set_): Remove. + * src/symbol/symbol.hh, src/symbol/symbol.cc (instance): New. + * src/symbol/symbol.hxx (Symbol::Symbol, Symbol::size): Move to... + * src/symbol/symbol.cc: here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1286 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-23 Akim Demaille + + 2004-02-23 Akim Demaille + + * src/type/types.cc: Use fields_type where possible instead of its + value. + Remove `inline' from here! (this caused linking failures on OS X). + * src/types/types.hxx: Use fields_type. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1285 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-23 Akim Demaille + + 2004-02-23 Akim Demaille + + * src/escapes/callgraph-creator.cc, src/escapes/callgraph-creator.hh, + * src/escapes/parentgraph-creator.cc, src/escapes/parentgraph-creator.hh, + * src/translate/translate-visitor.cc, src/type/type-visitor.cc: + Use the super_type to access superclass methods. + * src/target/cpu.hh (Cpu::Cpu): Move its implementation... + * src/target/cpu.cc: to here. + * src/escapes/tasks.hh (escapes-tags-display): Depends on `parse'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1284 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-23 Akim Demaille + + 2004-02-23 Akim Demaille + + * src/ast/print-visitor.cc: Fix the precedence btw ?: and <<. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1283 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-23 Akim Demaille + + 2004-02-23 Akim Demaille + + * src/assem/fragment.cc, src/assem/layout.hh, src/assem/layout.cc, + * src/assem/map-visitor.hh, src/assem/map-visitor.hxx, + * src/assem/visitor.hh, src/codegen/libcodegen.cc, + * src/codegen/ia32/gas-layout.cc, src/codegen/ia32/gas-layout.hh, + * src/codegen/mips/spim-layout.cc, src/codegen/mips/spim-layout.hh, + * src/escapes/escapes-check-visitor.hh, + * src/escapes/escapes-visitor.hh, + * src/escapes/escapes-check-visitor.cc, src/liveness/libliveness.cc + (visit): Rename as... + (operator ()): this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1282 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-23 Akim Demaille + + 2004-02-23 Akim Demaille + + Portability to Mac OS X. + + * argp/argp-help.c: Check that malloc.h exists before including it. + * argp/Makefile.am (libargp_a_SOURCES): Remove the duplicate + inclusion of argp-eexst.c. + * argp/argp-ba.c, argp/argp-pv.c, argp/argp-pvh.c: Initialize the + variables, otherwise on Darwin linking fails if the user does not + define these variables. + * argp/argp-fmtstream.h (putc_unlocked): Define only if not + defined yet. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1281 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-23 Akim Demaille + + Revert the previous patch, applied too early. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1280 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-23 Akim Demaille + + 2004-02-23 Akim Demaille + + Portability to Mac OS X. + + * argp/argp-help.c: Check that malloc.h exists before including it. + * argp/Makefile.am (libargp_a_SOURCES): Remove the duplicate + inclusion of argp-eexst.c. + * argp/argp-ba.c, argp/argp-pv.c, argp/argp-pvh.c: Initialize the + variables, otherwise on Darwin linking fails if the user does not + define these variables. + * argp/argp-fmtstream.h (putc_unlocked): Define only if not + defined yet. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1279 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-18 Akim Demaille + + 2004-02-18 Akim Demaille + + * tests/tc-check.in ($npass, $ntests, &try_files): Remove. + (&many_check_files): Merge into... + (&many_check): this. + (&interface_check): Use check directly. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1278 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-18 Akim Demaille + + 2004-02-18 Akim Demaille + + * configure.ac: Bump to 0.66a. + * src/tc.cc (config.h): not needed. + * tests/tc-check.in: More factoring. + (&summary): Last arg is an array. + (&exit_check_one): New. + (&run_tests): Renane as... + (&exit_check): this. + Use &exit_check_one and &many_check. + Fix all the &*check routines to accept the %summary_ref by $, not + by %. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1277 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-18 Akim Demaille + + 2004-02-18 Akim Demaille + + Version 0.66. + For 2006-tc-2.0. + + * config/studentize (studentize): When backing up, preserve the + permissions, especially to preserve executables such as + move_if_change. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1276 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-18 Akim Demaille + + 2004-02-18 Akim Demaille + + Take comments from Claire Calméjane into account. + + Don't include visitor.hh in each ast/*.hh file. + + * config/ast-fwd-gen: Add Visitors forward declarations. + * config/ast-nodes-gen: include visitor.hh in cc files for accept + methods. + Fix `// <<-' into `//<<-'. + * config/ast.py (Attribute.description): New. + Use it where appropriate. + + * config/ast-visitor-gen: Flag the output as generated. + + * src/ast/ast.xml (ast.hh): Include ast/fwd.hh, not ast/visitor.hh. + (Var, RecordTy, SeqExp): Now hidden from students. + + * src/ast/anydecs.hh (decs_): A pointer, not a reference. + Keep a single constructor with a default value instead of two. + * src/ast/anydecs.hxx: Adjust. + + * src/ast/arrayexp.hh, src/ast/arrayty.hh, src/ast/assignexp.hh, + * src/ast/ast.hh, src/ast/breakexp.cc, src/ast/breakexp.hh, + * src/ast/breakexp.hxx, src/ast/callexp.hh, src/ast/dec.cc, + * src/ast/dec.hh, src/ast/dec.hxx, src/ast/fwd.hh, src/ast/exp.cc, + * src/ast/exp.hh, src/ast/exp.hxx, src/ast/field.cc, + * src/ast/field.hh, src/ast/field.hxx, src/ast/fieldexp.cc, + * src/ast/fieldexp.hh, src/ast/fieldexp.hxx, src/ast/fieldvar.cc, + * src/ast/fieldvar.hh, src/ast/fieldvar.hxx, src/ast/forexp.cc, + * src/ast/forexp.hh, src/ast/forexp.hxx, src/ast/functiondec.cc, + * src/ast/functiondec.hh, src/ast/functiondec.hxx, src/ast/ifexp.cc, + * src/ast/ifexp.hh, src/ast/ifexp.hxx, src/ast/intexp.cc, + * src/ast/intexp.hh, src/ast/intexp.hxx, src/ast/letexp.cc, + * src/ast/letexp.hh, src/ast/letexp.hxx, src/ast/namety.cc, + * src/ast/namety.hh, src/ast/namety.hxx, src/ast/nilexp.cc, + * src/ast/nilexp.hh, src/ast/nilexp.hxx, src/ast/opexp.cc, + * src/ast/opexp.hh, src/ast/opexp.hxx, src/ast/recordexp.cc, + * src/ast/recordexp.hh, src/ast/recordexp.hxx, src/ast/recordty.cc, + * src/ast/recordty.hh, src/ast/recordty.hxx, src/ast/seqexp.cc, + * src/ast/seqexp.hh, src/ast/seqexp.hxx, src/ast/simplevar.cc, + * src/ast/simplevar.hh, src/ast/simplevar.hxx, src/ast/stringexp.cc, + * src/ast/stringexp.hh, src/ast/stringexp.hxx, + * src/ast/subscriptvar.cc, src/ast/subscriptvar.hh, + * src/ast/subscriptvar.hxx, src/ast/ty.cc, src/ast/ty.hh, + * src/ast/ty.hxx, src/ast/typedec.cc, src/ast/typedec.hh, + * src/ast/typedec.hxx, src/ast/var.cc, src/ast/var.hh, + * src/ast/var.hxx, src/ast/vardec.cc, src/ast/vardec.hh, + * src/ast/vardec.hxx, src/ast/visitor.hh, src/ast/whileexp.cc, + * src/ast/whileexp.hh, src/ast/whileexp.hxx, src/ast/ast.hxx, + * src/ast/arrayty.hxx, src/ast/arrayexp.hxx, src/ast/assignexp.hxx, + * src/ast/callexp.cc, src/ast/ast.cc, src/ast/assignexp.cc, + * src/ast/arrayty.cc, src/ast/arrayexp.cc, src/ast/callexp.hxx: + Regen. + + * src/misc/test-timer.cc (main): Now longer output on cout, as it + spoils the "make check" logs. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1275 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-17 Julien Roussel + + 2004-02-17 Julien Roussel + + * config/ast-nodes-gen, config/ast-visitor-gen, + * src/ast/breakexp.cc, src/ast/default-visitor.hh, + * src/ast/field.cc, src/ast/fieldexp.cc, src/ast/fieldvar.cc, + * src/ast/forexp.cc, src/ast/functiondec.cc, src/ast/ifexp.cc, + * src/ast/intexp.cc, src/ast/letexp.cc, src/ast/namety.cc, + * src/ast/nilexp.cc, src/ast/opexp.cc, src/ast/print-visitor.hh, + * src/ast/recordexp.cc, src/ast/recordty.cc, src/ast/seqexp.cc, + * src/ast/simplevar.cc, src/ast/stringexp.cc, src/ast/subscriptvar.cc, + * src/ast/typedec.cc, src/ast/vardec.cc, src/ast/visitor.hh, + * src/ast/whileexp.cc, src/ast/anydecs.hxx, src/ast/callexp.cc, + * src/ast/assignexp.cc, src/ast/arrayty.cc, src/ast/arrayexp.cc, + * src/ast/print-visitor.cc, src/ast/default-visitor.hxx, + * src/cppgen/cppgen-visitor.hh, src/cppgen/cppgen-visitor.cc, + * src/escapes/callgraph-creator.cc, src/escapes/callgraph-creator.hh, + * src/escapes/escapes-check-visitor.hh, src/escapes/escapes-visitor.hh, + * src/escapes/parentgraph-creator.cc, + * src/escapes/parentgraph-creator.hh, + * src/overload/overfun-type-visitor.cc, + * src/overload/overfun-type-visitor.hh, + * src/translate/translate-visitor.hh, src/type/type-visitor.hh, + * src/type/type-visitor.cc, src/escapes/escapes-visitor.cc, + * src/translate/translate-visitor.cc: Add operator () in visitors. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1274 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-17 Akim Demaille + + 2004-02-17 Akim Demaille + + Version 0.65. + For 2006-tc-2.0. + + * src/ast/README: Remove. + * src/ast/ast.xml: Hide StringExp, RecordExp, CallExp, IfExp, + LetExp, FieldVar. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1273 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-17 Akim Demaille + + 2004-02-17 Akim Demaille + + Version 0.65. + For 2006-tc-2.0. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1272 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-17 Akim Demaille + + 2004-02-17 Akim Demaille + + * configure.ac (version.h): Move its creation from here, to... + * Makefile.am (version.h): here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1271 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-17 Akim Demaille + + 2004-02-17 Akim Demaille + + * tests/tc-check.in (&many_check_files): Extract from... + (&many_check): here. + To prepare the factoring of try_files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1270 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-17 Julien Roussel + + 2004-02-17 Julien Roussel + + * src/ast/decs.hh, src/parse/parsetiger.yy, + * src/ast/print-visitor.cc, src/ast/default-visitor.hxx, + * config/ast/ast-visitor-gen, src/ast/ast.xml: Remove decs_type. + * src/ast/default-visitor.hh, + * src/ast/letexp.cc, src/ast/letexp.hh, + * src/ast/letexp.hxx, src/ast/visitor.hh: Adjust. + * src/ast/test-ast.cc: Adjust test. + * src/cppgen/cppgen-visitor.cc: Fix visitor. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1269 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-17 Akim Demaille + + 2004-02-17 Akim Demaille + + * src/ast/ast.xml, config/ast-nodes-gen: Comments end with a period. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1268 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-16 Julien Roussel + + 2004-02-16 Julien Roussel + + * src/ast/ast.xml: Add changes from Yakas for T2. + * src/ast/assignexp.hh, src/ast/breakexp.cc, + * src/ast/breakexp.hh, src/ast/functiondec.cc, + * src/ast/functiondec.hh, src/ast/functiondec.hxx, + * src/ast/typedec.cc, src/ast/typedec.hh, + * src/ast/typedec.hxx, src/ast/assignexp.hxx, + * src/ast/assignexp.cc: Adjust (by script). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1267 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-16 Julien Roussel + + 2004-02-16 Julien spip Roussel + + * config/ast.py: Add student="hide" tag to Node. + * config/ast-nodes-gen: Hide a full class (.cc, .hh and .hxx). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1266 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-16 Julien Roussel + + 2004-02-16 Julien Roussel + + * config/ast-nodes-gen: Correct commas usage. + * src/ast/field.cc, src/ast/fieldexp.cc, + * src/ast/fieldvar.cc, src/ast/forexp.cc, + * src/ast/functiondec.cc, src/ast/ifexp.cc, + * src/ast/intexp.cc, src/ast/letexp.cc, + * src/ast/namety.cc, src/ast/opexp.cc, + * src/ast/recordexp.cc, src/ast/recordty.cc, + * src/ast/seqexp.cc, src/ast/simplevar.cc, + * src/ast/stringexp.cc, src/ast/subscriptvar.cc, + * src/ast/typedec.cc, src/ast/vardec.cc, + * src/ast/whileexp.cc, src/ast/callexp.cc, + * src/ast/assignexp.cc, src/ast/arrayty.cc, + * src/ast/arrayexp.cc: Adjust (by script). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1265 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-16 Julien Roussel + + 2004-02-16 Julien Roussel + + * config/ast-nodes-gen: Display constructors in implementation + file (.cc). + * src/ast/breakexp.cc, src/ast/breakexp.hxx + * src/ast/dec.cc, src/ast/dec.hxx + * src/ast/exp.cc, src/ast/exp.hxx + * src/ast/field.cc, src/ast/field.hxx + * src/ast/fieldexp.cc, src/ast/fieldexp.hxx + * src/ast/fieldvar.cc, src/ast/fieldvar.hxx + * src/ast/forexp.cc, src/ast/forexp.hxx + * src/ast/functiondec.cc, src/ast/functiondec.hxx + * src/ast/ifexp.cc, src/ast/ifexp.hh + * src/ast/ifexp.hxx, src/ast/intexp.cc + * src/ast/intexp.hxx, src/ast/letexp.cc + * src/ast/letexp.hh, src/ast/letexp.hxx + * src/ast/namety.cc, src/ast/namety.hxx + * src/ast/nilexp.cc, src/ast/nilexp.hxx + * src/ast/opexp.cc, src/ast/opexp.hxx + * src/ast/recordexp.cc, src/ast/recordexp.hxx + * src/ast/recordty.cc, src/ast/recordty.hxx + * src/ast/seqexp.cc, src/ast/seqexp.hh + * src/ast/seqexp.hxx, src/ast/simplevar.cc + * src/ast/simplevar.hxx, src/ast/stringexp.cc + * src/ast/stringexp.hxx, src/ast/subscriptvar.cc + * src/ast/subscriptvar.hxx, src/ast/ty.cc + * src/ast/ty.hxx, src/ast/typedec.cc + * src/ast/typedec.hxx, src/ast/var.cc + * src/ast/var.hxx, src/ast/vardec.cc + * src/ast/vardec.hxx, src/ast/whileexp.cc + * src/ast/whileexp.hxx, src/ast/ast.hxx + * src/ast/arrayty.hxx, src/ast/arrayexp.hxx + * src/ast/assignexp.hxx, src/ast/callexp.cc + * src/ast/ast.cc, src/ast/assignexp.cc + * src/ast/arrayty.cc, src/ast/arrayexp.cc + * src/ast/callexp.hxx: Adjust (by script). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1264 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-16 Akim Demaille + + * ChangeLog: Fix a comment. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1263 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-16 Akim Demaille + + 2004-02-16 Akim Demaille + + * config/ast-nodes-gen, src/ast/ast.xml: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1262 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-16 Akim Demaille + + 2004-02-16 Akim Demaille + + * config/ast-nodes-gen (attribute_init): New. + (ctor_init): Use it. + Make sure there is a space before opening parentheses. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1261 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-13 Julien Roussel + + 2004-02-13 Julien Roussel + + * src/ast/ast.xml: Modify for T2. + * src/ast/assignexp.hh, src/ast/callexp.hh + * src/ast/field.hh, src/ast/field.hxx + * src/ast/functiondec.cc, src/ast/functiondec.hh + * src/ast/functiondec.hxx, src/ast/ifexp.hh + * src/ast/ifexp.hxx, src/ast/letexp.hh + * src/ast/letexp.hxx, src/ast/opexp.hh + * src/ast/opexp.hxx, src/ast/seqexp.hh + * src/ast/seqexp.hxx, src/ast/typedec.cc + * src/ast/typedec.hh, src/ast/typedec.hxx + * src/ast/vardec.hh, src/ast/vardec.hxx: Adjust (by script). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1260 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-13 Julien Roussel + + 2004-02-13 Julien Roussel + + * config/ast.py: Support , and student="hide". + * config/ast-nodes-gen: Add unnecessary code hiding. + * src/ast/ast.xml: Add usage information. + * src/ast/field.hxx, src/ast/fieldexp.hxx, + * src/ast/fieldvar.hxx, src/ast/forexp.hxx, + * src/ast/functiondec.hxx, src/ast/ifexp.hxx, + * src/ast/intexp.hxx, src/ast/letexp.hxx, + * src/ast/namety.hxx, src/ast/opexp.hxx, + * src/ast/recordexp.hxx, src/ast/recordty.hxx, + * src/ast/seqexp.hxx, src/ast/simplevar.hxx, + * src/ast/stringexp.hxx, src/ast/subscriptvar.hxx, + * src/ast/typedec.hxx, src/ast/vardec.hxx, + * src/ast/whileexp.hxx, src/ast/arrayty.hxx, + * src/ast/arrayexp.hxx, src/ast/assignexp.hxx, + * src/ast/callexp.hxx: Adjust (by script). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1259 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-13 Julien Roussel + + 2004-02-13 Julien Roussel + + * src/parse/parsetiger.yy: Reduce chunks of variable declarations + to a single variable. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1258 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-13 Akim Demaille + + 2004-02-13 Akim Demaille + + * Makefile.am: Typo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1257 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-13 Akim Demaille + + 2004-02-13 Akim Demaille + + * tests/tc-check.in (&ia32_check, &ia32_check): Pass a reference + to @dir to &many_check. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1256 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-13 Akim Demaille + + 2004-02-13 Akim Demaille + + * src/cppgen/Makefile.am, src/overload/Makefile.am, + * src/type/Makefile.am (EXTRA_DIST): Ship the Swig interface + files. + From Marco Tessari. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1255 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-13 Akim Demaille + + 2004-02-13 Akim Demaille + + * tests/tc-check.in (&escapes_check_one): New, extracted from... + (&escapes_check): here. + Use &many_check. + (&ia32_check, &asm_check): Restore the use of @dir lost in the + previous patch. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1254 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-13 Akim Demaille + + 2004-02-13 Akim Demaille + + * tests/tc-check.in (&many_check): New. + (&ast_check, &ir_check, &mipsy_check, &asm_check, &cppgen_check) + (&ia32_check): Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1253 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-12 Akim Demaille + + 2004-02-12 Akim Demaille + + * tests/tc-check.in (&asm_check, &cppgen_check, &ia32_check) + (&asm_check_one, &cppgen_check_one, &ia32_check_one): As in the + previous patch. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1252 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-12 Akim Demaille + + 2004-02-12 Akim Demaille + + * tests/tc-check.in (&ir_one_check, &mipsy_one_check, &ast_one_check): + Return an error message instead of a Boolean. + Don't deal with $test, $i, and @failures: let... + (&ir_one, &mipsy_one, &ast_one): these do. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1251 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-12 Akim Demaille + + 2004-02-12 Akim Demaille + + * tests/tc-check.in (&ast_check_one): New, extracted from... + (&ast_check): here, to exhibit similarities with other routines. + (&parse_arguments): Set GLIBCXX_FORCE_NEW and GLIBCPP_FORCE_NEW. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1250 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-12 Akim Demaille + + 2004-02-12 Akim Demaille + + * tests/tc-check.in: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1249 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-12 Akim Demaille + + 2004-02-12 Akim Demaille + + First prototype of using Valgrind to catch memory leaks. + + * tests/tc-check.in ($stdvgd, &contents, &valgrind_leaks): New. + (&run, &check): Support the 'check-leak' option. + (&check): Accumulate error messages instead of keeping a single + one. + (&ir_check_one): Rename "$tig_file" as "$i" since that's the name + that's used elsewhere. + (&ast_check): Pass 'check-leak' to &check. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1248 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-12 Akim Demaille + + * src/ast/print-visitor.cc: Fix typo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1247 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-12 Akim Demaille + + 2004-02-12 Akim Demaille + + * tests/tc-check.in: Use "&check" instead of "&run". + Use the error message. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1246 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-12 Akim Demaille + + 2004-02-12 Akim Demaille + + * tests/tc-check.in: Use a hash "option" instead of a binary coded + mask of options. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1245 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-12 Akim Demaille + + 2004-02-12 Akim Demaille + + * src/tc.cc (timer, exit_status, program_name, filename): Move + these, ... + * src/task/task-register.cc (argp_program_version) + (argp_program_bug_address): and these,... + * src/common.hh (program_version, program_bug_report_address) + (program_doc, program_args_doc): ... to here. + * src/common.cc: New. + Define them. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1244 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-09 Akim Demaille + + 2004-02-09 Akim Demaille + + * config/ast-nodes-gen (print_inline_code): New. + * ast/ast.xml (inside-header): Rename as... + (header-inside): this, for consistency. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1243 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-09 Akim Demaille + + 2004-02-09 Akim Demaille + + Make this stuff readable :( + + * config/ast-nodes-gen (class_generate): Extract... + (print_banner, print_guard_open, print_guards_open) + (print_guard_close, print_guards_close, print_includes) + (print_namespace_class_open, print_namespace_class_close) + (print_ctor_dtor, print_attributes, print_visitor): these. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1242 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-09 Akim Demaille + + 2004-02-09 Akim Demaille + + * tests/tc-check.in (stage_test): Pass `--ast-delete' to each + tested invocation of tc. + * src/ast/tasks.hh (ast-delete): Add '-D' as shortcut. + Depend on the parse task. + * src/ast/tasks.cc (ast_display): Precondition: a value for + `the_program'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1241 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-09 Akim Demaille + + 2004-02-09 Akim Demaille + + * bootstrap: Make it useful to students. + * Makefile.am (EXTRA_DIST): Ship it. + * config/stagize: Use it. + * tcsh/generate-tc-shared-mk, tcsh/generate-swig-mk: Adjust so + that it works when there are less modules than the full tarball. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1240 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-09 Akim Demaille + + 2004-02-09 Akim Demaille + + Student tarball creation overhaul: first make sure we can + distcheck a slice of the tarball with complete modules, but fewer + modules. + + * Makefile.am (studir): Move the modules removal from here to... + * config/stagize: this new file. + Make sure the resulting tarball (well, distdir) is functional. + * Makefile.am (dist-hook, dist-stagize): New, use it. + * config/Makefile.am: Adjust. + * config/studentize ($me): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1239 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-06 Akim Demaille + + 2004-02-06 Akim Demaille + + * config/studentize: Use File::Find to walk the hierarchy. + Use Pod::Usage to document. + * Makefile.am (studir): Adjust. + * configure.ac: Bump to 0.64a, and reactivate Swig by default. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1238 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-06 Akim Demaille + + 2004-02-06 Akim Demaille + + Version 0.64. + For 2006-tc-1.0. + + * config/Makefile.am (dist_noinst_SCRIPTS): Ship bison++. + * config/ast-makefile-gen: Generate ast.mk, not Makefile.am. + Rename as... + * config/ast-nodes-mk-gen: this. + * bootstrap, src/ast/Makefile.am: Adjust. + * Makefile.am (studir): Don't ship ast generators. + * configure.ac: Default the use of Swig to false. + * src/Makefile.am (BUILT_SOURCES): Add modules.hh. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1237 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-06 Akim Demaille + + 2004-02-06 Akim Demaille + + * src/parse/tasks.cc (parse): Rewrite so that T1 is easier. + * src/parse/parsetiger.yy: Better student mark comments. + * src/symbol/symbol.hh, src/symbol/symbol.hxx (Symbol ()): + Remove this default constructor that makes no sense. + Adjust student marks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1236 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-05 Akim Demaille + + 2004-02-05 Akim Demaille + + * configure.ac (MODULES): New AC_SUBST. + (modules.hh): No longer built here, but... + * src/Makefile.am (modules.hh): here, directly. + * src/ast/Makefile.am (EXTRA_DIST): Add tiger_ast.i. + * tcsh/generate-swig-mk: The generated SWIG code is nodist_. + (swig_python, swig_built_files): Remove, now useless. + Directly assign to Automake variables instead of going via other + variables. + * tcsh/generate-tc-shared-mk: Likewise. + * tcsh/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1235 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-05 Akim Demaille + + 2004-02-05 Akim Demaille + + * tcsh/generate-swig-mk: The generated SWIG code is nodist_. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1234 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-05 Akim Demaille + + 2004-02-05 Akim Demaille + + * src/parse/parsetiger.yy: Pass %locations as it eases T1. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1233 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-05 Akim Demaille + + 2004-02-05 Akim Demaille + + * src/parse/libparse.hh: Add students marks to cut T2 material + from T1. + * src/parse/parsetiger.yy: Likewise. + * swig/: Rename as... + * tcsh/: this. + * Makefile.am, bootstrap, configure.ac: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1232 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-05 Akim Demaille + + 2004-02-05 Akim Demaille + + * swig/Makefile.am (CLEANFILES): New. + * swig/generate-tc-shared-mk.sh: Rename as... + * swig/generate-tc-shared-mk: this. + Don't set CLEANFILES. + * swig/generate-swig-mk.sh: Rename as... + * swig/generate-swig-mk: this. + Don't set CLEANFILES. + * src/Makefile.am (SUBDIRS): Add `.' last so that cutting lines is + valid. + * src/parse/Makefile.am: Rewording. + * bootstrap.sh: Rename as... + * bootstrap: this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1231 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-05 Akim Demaille + + 2004-02-05 Akim Demaille + + * configure.ac: Fix student marks. + Add tests/Makefile as config file. + * Makefile.am (studir): Ship a tests/Makefile.am. + * config/bison++: New, to save compile time. + * src/parse/Makefile.am: Revamp the generation of the bison output + files to save cycles and be safer: use move-if-change and depend + upon a timestamp to avoid running bison several times. + Based on an Automake FAQ from Alexandre Duret-Lutz. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1230 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-04 Akim Demaille + + 2004-02-04 Akim Demaille + + * config/studentize: Skip ChangeLog too, since it contains + unbalanced student marks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1229 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-04 Akim Demaille + + 2004-02-04 Akim Demaille + + * AUTHORS: Update. + * Makefile.am (version.h): New BUILT_SOURCES. + + * src/parse/tasks.cc: Support the envvar PARSE and SCAN. + * src/parse/scantiger.ll: When complaining about an escape, don't + escape the escape as it issues two backslashes. + + Precedence is misleading: the higher the value of "precedence" + was, the lower the precedence was... As a result, the opposite + result was produced. Rename as rank. + + * src/temp/identifier.hh, src/temp/identifier.hxx, + * src/temp/label.hh, src/temp/label.cc, src/temp/temp.hh, + * src/temp/temp.cc (precedence, precedence_get): Rename as... + (rank, rank_get): these. + Be sure to set them so that Symbols are sorted before numbers. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1228 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-03 Akim Demaille + + 2004-02-03 Akim Demaille + + * config/studentize: Remove an embarrassing debugging trace. + Drop "#id STUDENT" support. + * src/misc/ref.hxx: Studentize it completely. + * src/parse/parsetiger.yy: Provide more skeleton than during the + last years. + Provide better comments for code that was removed. + * src/parse/scantiger.ll: Likewise. + Rename STATE_STRING and STATE_COMMENT as SC_STRING and SC_COMMENT, + as they are more conventional (Start Condition) and less + confusing. + (misc::escape): Do "using" it: qualify the uses. + * src/symbol/table.hxx: Better student marks. + * src/misc/ref.hxx: Studentize all the code, they might have to + implement it completely. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1227 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-03 Akim Demaille + + 2004-02-03 Akim Demaille + + * config/Makefile.am (SPECIFIC_MACROS, STANDARD_MACROS): Remove, + Automake 1.8.2 finds them all by itself. + (SPECIFIC_TOOLS): Inline into EXTRA_DIST. + * config/studentize: Use "next" instead of $printit to decide + whether to print a line. + Receive the files on STDIN instead of @ARGV to cope with argument + number limitations. + * Makefile.am (studist): Run studentize on all the files. + Remove our code generators from the output. + * config/ast-visitor-gen.py, config/ast-nodes-gen.py, + * config/ast-makefile-gen.py, config/ast-fwd-gen.py: Rename as... + * config/ast-visitor-gen, config/ast-nodes-gen, + * config/ast-makefile-gen, config/ast-fwd-gen: these. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1226 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-03 Akim Demaille + + 2004-02-03 Akim Demaille + + * src/tc.mk: New. + * configure.ac: Formatting changes. + * src/Makefile.am, src/assem/Makefile.am, src/ast/Makefile.am, + * src/canon/Makefile.am, src/codegen/Makefile.am, + * src/codegen/ia32/Makefile.am, src/codegen/mips/Makefile.am, + * src/escapes/Makefile.am, src/frame/Makefile.am, + * src/graph/Makefile.am, src/liveness/Makefile.am, + * src/misc/Makefile.am, src/overload/Makefile.am, + * src/parse/Makefile.am, src/regalloc/Makefile.am, + * src/symbol/Makefile.am, src/target/Makefile.am, + * src/task/Makefile.am, src/temp/Makefile.am, + * src/translate/Makefile.am, src/tree/Makefile.am, + * src/type/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1225 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-02 Akim Demaille + + 2004-02-02 Akim Demaille + + * configure.ac: Autoconf 2.58, Automake 1.8.2. + Add no-dist-gzip. + Student out the test snippet. + (Swig): Reword. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1224 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-02-02 Akim Demaille + + 2004-02-02 Akim Demaille + + * config/tiger.el: New, from Benoßt Perrot. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1223 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-30 Nicolas Burrus + + Remove swig/TODO, added erroneously by the previous patch. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1222 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-30 Nicolas Burrus + + Index: ChangeLog from Nicolas Burrus * src/assem/map-visitor.cc: Remove. * src/assem/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1221 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-30 Nicolas Burrus + + Index: ChangeLog from Nicolas Burrus * src/assem/map-visitor.hh: Use STL-like functors instead of function pointers. * src/assem/map-visitor.hxx: Adjust. + + * src/liveness/libliveness.cc, src/liveness/libliveness.hh: New. + * src/liveness/tasks.cc: Use libliveness functions. + * src/liveness/tiger_liveness.i: New Swig interface. + * src/liveness/Makefile.am: Ship new files. + + * swig/tc.py: Adjust. + * swig/generate-swig-mk.sh: Adjust. + * swig/test.py: Test new functions. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1220 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-30 Nicolas Burrus + + Index: ChangeLog from Nicolas Burrus * src/codegen/libcodegen.cc, src/codegen/libcodegen.hh: Unify the naming scheme. * src/codegen/tasks.cc: Adjust. * swig/test.py: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1219 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-30 Nicolas Burrus + + Index: ChangeLog from Nicolas Burrus * src/regalloc/tiger_regalloc.i: New. * src/regalloc/Makefile.am: Ship it. * swig/generate-swig-mk.sh: Adjust. + + * src/temp/libtemp.cc, src/temp/libtemp.hh: New. + * src/temp/tiger_temp.i: Use libtemp.hh. + + * swig/tc.py: Adjust. + * swig/test.py: Test new functions. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1218 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-30 Nicolas Burrus + + Index: ChangeLog from Nicolas Burrus + + * src/codegen/libcodegen.hh (target_to_codegen): New. + (allocate_frames): New. + (dump_runtime): New. + (dump_instructions): New. + * src/codegen/libcodegen.hh: Adjust. + * src/codegen/tasks.cc: Adjust. + * src/codegen/tiger_codegen.i: New. + * src/codegen/Makefile.am: Ship it. + + * src/target/target.hh: Rename print as dump for Swig. + * src/target/tiger_target.i: New. + * src/target/Makefile.am: Ship it. + + * src/target/fwd.hh: New. + * src/temp/tiger_temp.i: New. + * src/temp/Makefile.am: Ship them. + + * swig/tc.py: Adjust. + * swig/generate-swig-mk.sh: Adjust. + + * swig/test.py: Test new modules. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1217 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-17 Akim Demaille + + 2003-12-17 Akim Demaille + + * src/canon/traces.hh, src/translate/fragments.hh, + * src/canon/libcanon.cc, src/translate/fwd.hh, + * src/translate/fragments.cc, src/translate/libtranslate.hh: Adjust + to using fwd.hh. + + * swig/README: Emphasize that dash cannot be part of a module + name. + Learned the hard way... + + * swig/generate-tc-shared-mk.sh: Don't use dashes in file names. + * swig/generate-swig-mk.sh: Likewise. + + * src/escapes/tiger-escapes.i: Rename as... + * src/escapes/tiger_escapes.i: this. + * src/cppgen/tiger-cppgen.i: Rename as... + * src/cppgen/tiger_cppgen.i: this. + * src/translate/tiger-translate.i: Rename as... + * src/translate/tiger_translate.i: this. + * src/canon/tiger-canon.i: Rename as... + * src/canon/tiger_canon.i: this. + + * src/canon/Makefile.am, src/codegen/Makefile.am, + * src/escapes/Makefile.am, src/parse/Makefile.am, + * src/translate/Makefile.am, swig/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1216 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-17 Akim Demaille + + 2003-12-17 Akim Demaille + + * src/target/fwd.hh: New. + * src/symbol/fwd.hh: New. + * src/frame/fwd.hh: New. + * src/canon/Makefile.am, src/frame/Makefile.am, src/symbol/Makefile.am, + * src/target/Makefile.am: Adjust. + * src/codegen/tasks.hh, src/codegen/codegen.hh, + * src/overload/liboverload.hh, src/parse/libparse.hh, + * src/target/cpu.cc, src/temp/factory.hh, src/type/libtype.hh: Use + these fwd.hh files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1215 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-17 Akim Demaille + + 2003-12-17 Akim Demaille + + * src/assem/fwd.hh: More fwd decls. + * src/assem/visitor.hh, src/ast/tasks.hh: More fwd.hh use. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1214 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-17 Akim Demaille + + 2003-12-17 Akim Demaille + + * src/translate/fwd.hh: Extend. + * src/assem/fwd.hh, src/codegen/fwd.hh: New. + * src/assem/Makefile.am: Adjust. + * src/assem/instrs.hh, src/codegen/assembly.hh, + * src/codegen/libcodegen.hh, src/translate/level.hh, + * src/translate/libtranslate.hh, src/translate/translate-visitor.hh: + Use these fwd files instead of local forward declarations. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1213 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-17 Akim Demaille + + 2003-12-17 Akim Demaille + + * bootstrap.sh: More adjustment to file-name. + * swig/Makefile.am, swig/generate-tc-shared-mk.sh, swig/README: Idem. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1212 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-17 Akim Demaille + + 2003-12-17 Akim Demaille + + Prefer file-name to file_name. + + * swig/generate_swig_mk.sh: Rename as... + * swig/generate-swig-mk.sh: this. + * src/escapes/tiger_escapes.i: Rename as... + * src/escapes/tiger-escapes.i: this. + * src/cppgen/tiger_cppgen.i: Rename as... + * src/cppgen/tiger-cppgen.i: this. + * src/translate/tiger_translate.i: Rename as... + * src/translate/tiger-translate.i: this. + * src/canon/tiger_canon.i: Rename as... + * src/canon/tiger-canon.i: this. + * src/canon/Makefile.am, src/escapes/Makefile.am, bootstrap.sh, + * swig/Makefile.am, src/parse/Makefile.am, + src/translate/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1211 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-17 Akim Demaille + + 2003-12-17 Akim Demaille + + * src/translate/fwd.hh: New. + * src/translate/Makefile.am: Ship it. + * src/canon/libcanon.hh: Use it. + * src/canon/tiger_canon.i: New. + * src/canon/Makefile.am: Ship it. + * src/escapes/Makefile.am: Ship tiger_escapes.i. + * swig/generate_swig_mk.sh, swig/tc.py: Add canon. + * swig/test.py: Likewise. + * swig/README: Various. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1210 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-15 Akim Demaille + + 2003-12-15 Akim Demaille + + * src/parse/scantiger.ll (parse): Call yyrestart to allow several + runs of the scanner (e.g., from the tc shell). + From Nicolas Burrus. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1209 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-12 Akim Demaille + + * ChangeLog: Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1208 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-12 Akim Demaille + + 2003-12-12 Akim Demaille + + * src/parse/scantiger.ll (scan_open): Schedule a call to + yylex_destroy at exit. + Use yyrestart. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1207 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-12 Nicolas Burrus + + * src/translate/tiger_translate.i: New Swig interface. * src/translate/libtranslate.cc (print): New function. * src/translate/libtranslate.hh: Adjust for swig. Workaround auto_ptr difficulties. * swig/tc.py, swig/generate_swig_mk.sh: Adjust. + + * swig/test.py: Update. + + * swig/DOC: New. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1206 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-12 Nicolas Burrus + + * src/cppgen/tiger_cppgen.i: New Swig interface. * src/cppgen/libcppgen.hh (generate_cpp): Make std::cout the default ostr parameter. * swig/tc.py, swig/generate_swig_mk.sh: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1205 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-12 Nicolas Burrus + + * src/overload/tiger_overload.i: New Swig interface. * swig/common.cc, swig/tc.py, swig/generate_tc_shared_mk.sh, * swig/generate_swig_mk.sh: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1204 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-12 Nicolas Burrus + + * src/temp/identifier.hh: Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1203 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-12 Nicolas Burrus + + * swig/tiger_common.i (Ofstream): New class. * src/ast/libast.cc (dump): Remove. * src/ast/libast.hh: Adjust to make print available for Swig. * src/ast/tiger_ast.i: Import useful headers. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1202 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-12 Nicolas Burrus + + * configure.ac: Fix variable tests. * swig/README: Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1201 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1200 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1199 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-11 Akim Demaille + + 2003-12-11 Akim Demaille + + * AUTHORS, NEWS, TODO: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1198 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-11 Akim Demaille + + 2003-12-11 Akim Demaille + + * src/canon/Makefile.am: Adjust. + * src/canon/tasks.cc: Move some code into... + * src/canon/libcanon.hh, src/canon/libcanon.cc (canonicalize) + (make_traces): ...these new files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1197 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-09 Nicolas Burrus + + * src/type/tiger_type.i: New swig interface. * swig/tc.py: Adjust. * swig/common.cc: Adjust. * swig/generate_tc_shared_mk.sh: Adjust. * swig/generate_swig_mk.sh: Adjust. + + * swig/Makefile.am: Distribute generate_tc_shared_mk.sh and + generate_swig_mk.sh. + * swig/README: Deal with compilation on netbsd. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1196 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-09 Akim Demaille + + 2003-12-09 Akim Demaille + + * src/assem/fragment.cc, src/assem/instr.cc, src/assem/instr.hh, + * src/assem/instr.hxx, src/assem/move.hh, src/assem/move.hxx, + * src/assem/oper.hh, src/assem/oper.hxx, src/ast/Makefile.am, + * src/escapes/escapes-env.hh, src/graph/graph.hh, + * src/graph/graph.hxx, src/misc/set.hh, src/misc/set.hxx, + * src/misc/set.cc, src/overload/overfun-type-visitor.hh, + * src/overload/overfun-type-visitor.hxx, src/symbol/table.hh, + * src/symbol/table.hxx, src/target/cpu.cc, src/target/cpu.hh, + * src/target/target.hh, src/temp/tempmap.hh, src/temp/tempmap.cc, + * src/temp/tempmap.hxx, src/tree/call.hh, src/tree/eseq.hh, + * src/tree/node.hh, src/tree/seq.hh, src/tree/node.cc, + * src/tree/node.hxx, src/tree/seq.cc, src/tree/eseq.cc, + * src/tree/call.cc, src/type/types.cc, src/escapes/escapes-env.cc, + * src/escapes/escapes-env.hxx, src/translate/level.hxx: Have all the + print functions return an ostream. + + * bootstrap.sh: Make sure to make Automake files before using them. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1195 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-09 Nicolas Burrus + + * src/escapes/tiger_escapes.i: New swig interface. * src/escapes/libescapes.hh: Adjust for swig. * src/escapes/Makefile.am: Adjust consequently. * swig/common.cc: Adjust consequently. * swig/tc.py: Adjust consequently. * swig/generate_tc_shared_mk.sh: Adjust consequently. * swig/generate_swig_mk.sh: Adjust consequently. + + * swig/README: New. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1194 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-09 Nicolas Burrus + + * swig/generate_tc_shared_mk.sh: Do not use `echo -e'. * swig/generate_swig_mk.sh: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1193 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-09 Nicolas Burrus + + * swig/tc_shared.mk: Remove. Now generated by... * swig/generate_tc_shared_mk.sh: ... this new script. * swig/swig.mk: Remove. Now generated by... * swig/generate_swig_mk.sh: ... this new script. * bootstrap.sh: Call these new scripts. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1192 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-09 Nicolas Burrus + + 2003-12-09 Nicolas Burrus + + * config/swig.m4: Remove header. + * configure.ac: Change naming scheme. + (SHARED_LIBRARY_LDFLAGS): Use AC_ARG_VAR. + + 2003-12-09 Nicolas Burrus + + Move /src/swig into /swig. + + * src/swig/Makefile.am: Move... + * swig/Makefile.am: ... here. + * src/swig/common.cc: Move... + * swig/common.cc: ... here. + * src/swig/swig.mk: Move... + * swig/swig.mk: ... here. + * src/swig/tc_shared.mk: Move... + * swig/tc_shared.mk: ... here. + * src/swig/tiger_common.i: Move... + * swig/tiger_common.i: ... here. + * src/swig/tc.py: Move... + * swig/tc.py: ... here. + * src/swig/test.py: Move... + * swig/test.py: ... here. + * src/Makefile.am: Adjust consequently. + * Makefile.am: Adjust consequently. + * configure.ac: Adjust consequently. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1191 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-09 Nicolas Burrus + + * src/temp/identifier.hh: Remove `enum' before identifier_type template parameters. (TaggedIdentifier): Factory is a friend template. + + * src/temp/identifier.hxx: Remove `enum' before identifier_type + template parameters. + * src/temp/factory.hh: Likewise. + * src/temp/factory.hxx: Likewise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1190 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1189 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1188 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-09 Akim Demaille + + 2003-12-09 Akim Demaille + + * src/parse/Makefile.am (running bison): Comment changes redux. + From Alexandre Duret-Lutz. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1187 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-09 Akim Demaille + + 2003-12-09 Akim Demaille + + * src/parse/Makefile.am (running bison): Comment changes. + From Alexandre Duret-Lutz. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1186 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-09 Akim Demaille + + 2003-12-09 Akim Demaille + + * src/parse/Makefile.am (running bison): Don't pass a path that + might be absolute to bison. + Reported by Alexandre Duret-Lutz. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1185 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-09 Akim Demaille + + 2003-12-09 Akim Demaille + + Factor temp::Temp and Label. Also, stop using hand written + dispatching as this is bad practice: rely on the regular + mechanism, inheritance. + + * src/temp/identifier.hh (identifier_type): New. + (Identifier): Rewrite to depend upon this enum type instead of a + "char *" parameter. + Make it an abstract class. + (TaggedIdentifier): New parameterized sub-class. + Two instantiations, one for unsigned and the other for + symbol::Symbol, now replace the former faked union: Identifier + used to have two fields, one of each type, and dispatch by hand. + Use a traits, identifier_traits, to cope with two issues: the + label to prepend in some cases (e.g. Temp 12 => t12, not 12), and + the order between subclasses (sort Symbol first, then unsigned ints). + * src/temp/identifier.hxx: Adjust. + * src/temp/label.hh, src/temp/temp.hh: Adjust. + * src/temp/label.cc, src/temp/temp.cc (identifier_traits): + Implement the static members. + * src/temp/factory.hh, src/temp/factory.hxx: Adjust to the new + parameter type. + + * src/assem/fragment.cc, src/assem/label.hh, src/assem/label.hxx, + * src/canon/traces.hh, src/canon/traces.cc, src/temp/test-temp.cc, + * src/liveness/flowgraph.hxx: Adjust to temp::Label that is now + abstract and must be handled as a pointer. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1184 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-09 Akim Demaille + + 2003-12-09 Akim Demaille + + * src/symbol/symbol.hxx (Symbol::operator<): Really sort + lexicographically. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1183 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-09 Akim Demaille + + 2003-12-09 Akim Demaille + + * src/symbol/symbol.hxx (Symbol::operator<): Sort + lexicographically. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1182 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-08 Nicolas Burrus + + Index: ChangeLog from Nicolas Burrus * configure.ac: Detect python and swig. Handle --without-swig. Support shared libraries. * src/Makefile.am: Enter into swig directory if swig is enabled. * config/swig.m4: New. + + * src/parse/Makefile.am: Prevent double inclusion of parsetiger.o + into libparse.a. + + * src/ast/tiger_ast.i: New swig interface. + * src/ast/Makefile.am: Adjust consequently. + * src/ast/libast.cc (dump): New function. + * src/ast/libast.hh (dump): New function. + (print): Hide to swig. + + * src/parse/tiger_parse.i: New swig interface. + * src/parse/Makefile.am: Adjust consequently. + * src/parse/libparse.hh: Specify that parse returns a new object + to swig. + + * src/swig/tiger_common.i: Likewise. + + * src/swig/Makefile.am: New. + * src/swig/common.cc: New. + * src/swig/swig.mk: New. + * src/swig/tc_shared.mk: New. + * src/swig/tc.py: New. + * src/swig/test.py: New test. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1181 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-08 Nicolas Burrus + + * src/parse/scantiger.ll (scan_close): Flush the buffer, do not destroy it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1180 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-08 Nicolas Burrus + + * src/misc/containers.hxx: Include algorithm. * src/misc/set.hxx: Fix compilation with ICC. * src/temp/factory.hxx: Likewise. * src/temp/identifier.hxx: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1179 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1178 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1177 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-07 Astrid Wang + + 2003-12-08 Astrid Wang + + * src/doc.hh: Typo. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1176 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-04 Akim Demaille + + *tests/tc-check.in: Restore. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1175 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-04 Akim Demaille + + 2003-12-04 Akim Demaille + + * src/temp/label-list.hh (label_list_type): Just as we make lists + of Temp *, make lists of Label *. + * src/assem/instr.cc, src/ast/decs.hh, src/ast/default-visitor.hh, + * src/canon/traces.cc, src/codegen/ia32/codegen.cc, + * src/codegen/ia32/gas-assembly.cc, src/codegen/mips/codegen.cc, + * src/codegen/mips/spim-assembly.cc, src/liveness/test-flowgraph.cc, + * src/temp/identifier.hh, src/temp/identifier.hxx, + * src/temp/label.hh, src/tree/cjump.hxx, src/tree/jump.hxx, + * tests/tc-check.in, src/liveness/flowgraph.hxx, + * src/temp/label-list.cc: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1174 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-04 Akim Demaille + + 2003-12-04 Akim Demaille + + * src/temp/identifier.cc: Remove unused. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1173 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-04 Akim Demaille + + 2003-12-04 Akim Demaille + + * src/Makefile.am (SUBDIRS): Try to be smarter: since parse:: + depends upon ast::, go there first. + * config/ast-visitor-gen.py: Fix the generated comments. + * config/ast-nodes-gen.py: Likewise. + * config/ast-fwd-gen.py: Likewise. + * src/ast/arrayexp.hh, src/ast/arrayty.hh, src/ast/assignexp.hh, + * src/ast/ast.hh, src/ast/breakexp.hh, src/ast/callexp.hh, + * src/ast/dec.hh, src/ast/exp.hh, src/ast/field.hh, + * src/ast/fieldexp.hh, src/ast/fieldvar.hh, src/ast/forexp.hh, + * src/ast/functiondec.hh, src/ast/ifexp.hh, src/ast/intexp.hh, + * src/ast/letexp.hh, src/ast/namety.hh, src/ast/nilexp.hh, + * src/ast/opexp.hh, src/ast/recordexp.hh, src/ast/recordty.hh, + * src/ast/seqexp.hh, src/ast/simplevar.hh, src/ast/stringexp.hh, + * src/ast/subscriptvar.hh, src/ast/ty.hh, src/ast/typedec.hh, + * src/ast/var.hh, src/ast/vardec.hh, src/ast/visitor.hh, + * src/ast/whileexp.hh: Regen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1172 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-04 Akim Demaille + + 2003-12-04 Akim Demaille + + * src/ast/anydecs.hh, src/ast/anydecs.hxx (push_back): New. + Needed by test-ast. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1171 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-04 Akim Demaille + + 2003-12-03 Akim Demaille + + * src/temp/temp-list.hh: Move inline code into... + * src/temp/temp-list.hxx: this new file. + * src/temp/label.hh: Move list code into.... + * src/temp/label-list.hh, src/temp/label-list.cc: this new file. + * src/temp/Makefile.am: Adjust. + * src/assem/instr.hh, src/canon/basic-block.hh, + * src/canon/traces.cc, src/temp/identifier.hh, src/temp/temp.hh, + * src/tree/cjump.hh, src/tree/jump.hh, src/tree/jump.hxx, + * src/canon/basic-block.cc: Adjust. + * src/Makefile.am (tc_LDADD): Be sure to link libtemp after + libassem. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1170 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-12-03 Akim Demaille + + 2003-12-03 Akim Demaille + + * src/doc.hh: s/scholarship/curriculum/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1169 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-11-20 Akim Demaille + + 2003-11-20 Akim Demaille + + * config/studentize: Simplify. + Output the number and average size of fixme chunks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1168 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-11-18 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/parse/parsetiger.yy: + Consider chunk as syntactic sugar, building a new LetExp on each + chunk. + * src/ast/anydecs.hh, src/ast/anydecs.hxx (push_front): + Make list constructor match the parser needs. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1167 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-11-17 Akim Demaille + + Bump to 0.63a + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1166 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-11-17 Akim Demaille + + 2003-11-17 Akim Demaille + + * configure.ac: Version 0.63. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1165 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-11-17 Akim Demaille + + 2003-11-17 Akim Demaille + + * src/type/tasks.cc (type): Call ast_delete to avoid having to + exhibit the definition of the_program (needed by delete). + * src/overload/tasks.cc (overload): Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1164 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-11-15 Akim Demaille + + 2003-11-14 Akim Demaille + + * src/temp/test-temp.cc: Adjust to the Temp Factories. + Gosh, this style is heavy :( + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1163 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-11-14 Akim Demaille + + 2003-11-14 Akim Demaille + + Escape checks are reporting millions of (false) errors. + + * src/escapes/escapes-check-visitor.cc + (EscapesCheckVisitor::EscapesCheckVisitor): Be sure to initialize + all the members... + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1162 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-11-13 Akim Demaille + + 2003-11-13 Akim Demaille + + Fix many problems reported by Julian Noblanc. + + * tests/tc-check.in (File::Copy): Use it. + Use "&move" instead of "system 'mv'"; + ($testdir): Adjust path now that it's no longer a subpackage. + (&escapes_check): Move $stdout as $stdtig *before* using it, not + after... + (&version_split, &version_cmp): New, stolen from + Automake::Version.pm (which requires Channels...). + (&log_Version): Rename as... + (&version_log): this. + * src/escapes/escapes-visitor.cc: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1161 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-11-07 Akim Demaille + + 2003-11-07 Akim Demaille + + * src/canon/canon.hh: Include tree/fwd.hh, not all.hh. + * src/canon/canon.cc: Include all.hh. + * src/codegen/codegen.hh: Extract... + * src/codegen/codegen.hh, src/codegen/codegen.hh: these new files. + * src/codegen/Makefile.am: Adjust. + * src/codegen/assembly.hh: Include tree/fwd.hh and tree/binop/hh, + not tree/all.hh. + * src/codegen/mips/codegen.cc (target/cpu.hh): Include. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1160 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-31 Akim Demaille + + 2003-10-31 Akim Demaille + + * configure.ac: Use AC_INIT's $4 to set the tarball name. + From Alexandre Duret-Lutz. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1159 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-29 Akim Demaille + + 2003-10-29 Akim Demaille + + No longer consider the test suite as a subpackage. First it used + to confuse the students who see their test directory being + "removed" between delivered tarballs, and second the test suite + alone does not make sense, since it is highly dependent upon the + "reference" compiler, Havm etc. + + * tests/configure.ac: Remove, merged into... + * configure.ac: here. + * Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1158 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-29 Akim Demaille + + 2003-10-29 Akim Demaille + + Bump to 0.62a. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1157 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-29 Akim Demaille + + 2003-10-29 Akim Demaille + + Version 0.62. + * tests/configure.ac (HAVM_PREREQ): Bump to 0.21. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1156 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-28 Akim Demaille + + 2003-10-28 Akim Demaille + + * src/translate/access.hh: Don't "using Symbol". + * src/type/type-visitor.hh: Don't include symbol.hh. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1155 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-28 Akim Demaille + + 2003-10-28 Akim Demaille + + * config/ast-nodes-gen.py (class_generate): Add a banner to avoid + confusion between generated and hand-written files. + * src/ast/arrayexp.hh, src/ast/arrayty.hh, src/ast/assignexp.hh, + * src/ast/ast.hh, src/ast/breakexp.cc, src/ast/breakexp.hh, + * src/ast/breakexp.hxx, src/ast/callexp.hh, src/ast/dec.cc, + * src/ast/dec.hh, src/ast/dec.hxx, src/ast/exp.cc, src/ast/exp.hh, + * src/ast/exp.hxx, src/ast/field.cc, src/ast/field.hh, + * src/ast/field.hxx, src/ast/fieldexp.cc, src/ast/fieldexp.hh, + * src/ast/fieldexp.hxx, src/ast/fieldvar.cc, src/ast/fieldvar.hh, + * src/ast/fieldvar.hxx, src/ast/forexp.cc, src/ast/forexp.hh, + * src/ast/forexp.hxx, src/ast/functiondec.cc, + * src/ast/functiondec.hh, src/ast/functiondec.hxx, src/ast/ifexp.cc, + * src/ast/ifexp.hh, src/ast/ifexp.hxx, src/ast/intexp.cc, + * src/ast/intexp.hh, src/ast/intexp.hxx, src/ast/letexp.cc, + * src/ast/letexp.hh, src/ast/letexp.hxx, src/ast/namety.cc, + * src/ast/namety.hh, src/ast/namety.hxx, src/ast/nilexp.cc, + * src/ast/nilexp.hh, src/ast/nilexp.hxx, src/ast/opexp.cc, + * src/ast/opexp.hh, src/ast/opexp.hxx, src/ast/recordexp.cc, + * src/ast/recordexp.hh, src/ast/recordexp.hxx, src/ast/recordty.cc, + * src/ast/recordty.hh, src/ast/recordty.hxx, src/ast/seqexp.cc, + * src/ast/seqexp.hh, src/ast/seqexp.hxx, src/ast/simplevar.cc, + * src/ast/simplevar.hh, src/ast/simplevar.hxx, src/ast/stringexp.cc, + * src/ast/stringexp.hh, src/ast/stringexp.hxx, + * src/ast/subscriptvar.cc, src/ast/subscriptvar.hh, + * src/ast/subscriptvar.hxx, src/ast/ty.cc, src/ast/ty.hh, + * src/ast/ty.hxx, src/ast/typedec.cc, src/ast/typedec.hh, + * src/ast/typedec.hxx, src/ast/var.cc, src/ast/var.hh, + * src/ast/var.hxx, src/ast/vardec.cc, src/ast/vardec.hh, + * src/ast/vardec.hxx, src/ast/whileexp.cc, src/ast/whileexp.hh, + * src/ast/whileexp.hxx, src/ast/ast.hxx, src/ast/arrayty.hxx, + * src/ast/arrayexp.hxx, src/ast/assignexp.hxx, src/ast/callexp.cc, + * src/ast/ast.cc, src/ast/assignexp.cc, src/ast/arrayty.cc, + * src/ast/arrayexp.cc, src/ast/callexp.hxx: Regen. + + * src/ast/all.hh: Don't include "symbol/symbol.hh". + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1154 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-28 Akim Demaille + + 2003-10-28 Akim Demaille + + * src/misc/ref.hh: Formatting changes. + (ref::ref (T*, long*)): New. + * src/misc/ref.hh (ref::cast, ref::unsafe_cast): Use it to avoid + useless construction/deletion of a count_ cell. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1153 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-27 Akim Demaille + + 2003-10-27 Akim Demaille + + * src/ast/location.hh (ast): Declare Location in ast::. + * src/type/type-visitor.cc (type): Adjust. + * src/overload/overfun-type-visitor.cc (overload): Likewise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1152 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-27 Akim Demaille + + 2003-10-27 Akim Demaille + + * src/ast/default-visitor.hxx: Include "ast/all.hh". + * src/escapes/escapes-check-visitor.hh: Don't. + * src/type/type-visitor.hh: Don't. + * src/type/type-visitor.cc: Do it. + * src/escapes/escapes-check-visitor.cc: Do it. + * src/type/libtype.cc: Do it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1151 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-27 Akim Demaille + + 2003-10-27 Akim Demaille + + * src/cppgen/cppgen-visitor.cc: New, extracted from... + * src/cppgen/cppgen-visitor.hh: here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1150 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-27 Akim Demaille + + 2003-10-27 Akim Demaille + + * src/ast/default-visitor.cc: Don't ast/all.hh. + * src/ast/print-visitor.cc: Include ast/all.hh. + * src/translate/translate-visitor.hh: Don't. + Rename ast/decls.hh as ast/fwd.hh. + + * src/ast/decls.hh: Rename as... + * src/ast/fwd.hh: this. + * src/ast/Makefile.am: Adjust. + * src/ast/all.hh: Regen. + * src/ast/visitor.hh: Regen. + * src/translate/translate-visitor.hh: . + * config/ast-visitor-gen.py: Use fwd, not decls. + * config/ast-makefile-gen.py: Use fwd.. + * config/ast-decls-gen.py: Rename as... + * config/ast-fwd-gen.py: this. + * config/Makefile.am: Adjust. + * config/ast-decls-gen.py (fwd_hh): Output fwd.hh, not decls.hh. + + * src/assem/instr.hh: Don't include common.hh. + * src/canon/basic-block.hh: Likewise. + * src/liveness/interference-graph.cc: Do it. + * src/liveness/liveness.cc: Idem. + * src/liveness/flowgraph.hxx: Idem. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1149 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-27 Akim Demaille + + 2003-10-27 Akim Demaille + + * src/cppgen/includes/binop.hh: Formating changes. + * src/escapes/tasks.cc: Don't include common.hh. + * src/translate/translate-visitor.hh: Likewise. + * src/tree/fwd.hh: Cleanb up. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1148 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-27 Akim Demaille + + 2003-10-27 Akim Demaille + + * src/codegen/tasks.cc (assem/layout.hh): Include. + + Reduce the dependency onto tree::. To this end, + introduce tree/fwd.hh that forward declares all the classes of + tree. Do not "using misc::ref", just qualify the uses properly. + Remove the typedef of the referenced nodes from the node + definition classes, just rely on fwd.hh doing it. + + * src/tree/binop.hh, src/tree/call.hh, src/tree/cjump.hh, + * src/tree/const.hh, src/tree/eseq.hh, src/tree/exp.hh, + * src/tree/jump.hh, src/tree/label.hh, src/tree/mem.hh, + * src/tree/move.hh, src/tree/name.hh, src/tree/node.hh, + * src/tree/seq.hh, src/tree/stm.hh, src/tree/sxp.hh, + * src/tree/temp.hh: Do that. + * src/tree/fwd.hh: New. + + * src/canon/basic-block.hh: Include fwd.hh, not all. + * src/frame/access.hh: Likewise. + * src/frame/access.cc (tree/all.hh): Include. + * src/translate/fragment.hxx: Likewise. + * src/translate/level.cc: Likewise. + * src/translate/access.hxx: Idem. + * src/canon/basic-block.hxx (BasicBlock::label_in_get): Move to . + * src/canon/basic-block.cc: here. + (tree/all.hh): Include. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1147 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-27 Akim Demaille + + 2003-10-27 Akim Demaille + + * src/codegen/assembly.hh: Avoid useless includes thanks to fwd dcl. + * src/translate/exp.hh: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1146 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-27 Akim Demaille + + 2003-10-27 Akim Demaille + + * src/canon/canon.hh, src/canon/canon.cc: Don't use the namespace + tree. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1145 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-27 Akim Demaille + + 2003-10-27 Akim Demaille + + * src/temp/label.hh (labels_type): Rename as... + (label_list_type): this. + * src/assem/instr.cc, src/assem/instr.hh, src/assem/instr.hxx, + * src/assem/oper.hh, src/assem/oper.hxx, src/canon/traces.cc, + * src/codegen/ia32/gas-assembly.cc, + * src/codegen/mips/spim-assembly.cc, src/liveness/test-flowgraph.cc, + * src/tree/cjump.hxx, src/liveness/flowgraph.hxx: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1144 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-27 Akim Demaille + + 2003-10-27 Akim Demaille + + * src/temp/temps.cc (temps_type): Rename as... + * src/temp/temp-list.cc (temp_list_type): this. + * src/temp/temps.hh (temps_type): Rename as... + * src/temp/temp-list.hh (temp_list_type): this. + * src/assem/instr.cc, src/assem/instr.hh, src/assem/instr.hxx, + * src/assem/oper.hh, src/assem/oper.hxx, src/codegen/assembly.hh, + * src/codegen/ia32/codegen.cc, src/codegen/ia32/gas-assembly.cc, + * src/codegen/ia32/gas-assembly.hh, src/codegen/mips/codegen.cc, + * src/codegen/mips/spim-assembly.cc, + * src/codegen/mips/spim-assembly.hh, + * src/codegen/mips/test-rw_prg.cc, + * src/liveness/interference-graph.cc, + * src/liveness/test-flowgraph.cc, src/regalloc/test-regalloc.cc, + * src/target/cpu.cc, src/target/cpu.hh, src/target/mips-cpu.cc, + * src/temp/Makefile.am, src/temp/tempmap.hh, src/temp/tempmap.cc, + * src/temp/temp-set.cc, src/regalloc/color.cc: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1143 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-27 Akim Demaille + + 2003-10-27 Akim Demaille + + * src/canon/basic-block.hh, src/canon/canon.hh, + * src/canon/canon.cc, src/canon/traces.hh, src/canon/traces.cc, + * src/codegen/ia32/codegen.cc, src/codegen/mips/codegen.cc, + * src/tree/node.hh, src/tree/seq.hh, src/tree/stm.hh, + * src/tree/node.cc, src/tree/node.hxx, src/tree/iterator.hxx, + * src/tree/seq.cc, src/tree/call.cc, src/tree/seq.hxx, + * src/canon/basic-block.hxx, src/canon/basic-block.cc (nodes_type): + Rename as... + (node_list_type): this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1142 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-27 Akim Demaille + + 2003-10-27 Akim Demaille + + * src/canon/traces.cc (label_to_p): New. + (label_p, block_frontier_p, jump_name_p): Be functors. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1141 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-27 Akim Demaille + + 2003-10-27 Akim Demaille + + * src/misc/set.hxx (SET, SET_TEMPLATE): Remove. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1140 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-27 Akim Demaille + + 2003-10-27 Akim Demaille + + * src/misc/set.cc, src/misc/set.hxx (SET, SET_TEMPLATE): Remove. + Dubious, and Doxygen fails to parse them. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1139 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-24 Akim Demaille + + 2003-10-24 Akim Demaille + + Introduce temp::Identifier which is a template class used to + factor temp::Temp and temp::Label. More is needed to really clean + up, but I have to go... + + * AUTHORS, NEWS: Update. + * src/temp/identifier.hh: New. + * src/temp/identifier.hxx: New. + * src/temp/identifier.cc: New. + * src/temp/label.hxx: Remove. + * src/temp/temp.hxx: Remove. + * src/temp/Makefile.am: Adjust. + * src/temp/label.hh, src/temp/label.cc, src/temp/temp.hh, + * src/temp/temp.cc: Implement using Identifier. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1138 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-22 Akim Demaille + + 2003-10-22 Akim Demaille + + * config/rebox.el: New. + * config/Makefile.am, configure.ac: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1137 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-21 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * bootstrap.sh: Add a file that launches the generator of src/ast/Makefile.am, then autoreconf. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1136 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-21 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/escapes/callgraph-creator.cc: Do not search for builtin functions in environment. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1135 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-21 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/ast/ast.xml: Add XML description of the AST. * config/tools.py, * config/ast.py, * config/ast-visitor-gen.py, * config/ast-nodes-gen.py, * config/ast-makefile-gen.py, * config/ast-decls-gen.py, * config/Makefile.am * src/ast/Makefile.am: Add AST files generators. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1134 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-21 Benoßt Perrot + + 2003-10-21 Benoßt Perrot + + * src/ast/arrayexp.hh, src/ast/arrayty.hh, src/ast/assignexp.hh, + * src/ast/ast.hh, src/ast/breakexp.cc, src/ast/breakexp.hh, + * src/ast/callexp.hh, src/ast/dec.hh, src/ast/decls.hh, + * src/ast/decs.hh, src/ast/exp.hh, src/ast/field.hh, + * src/ast/fieldexp.hh, src/ast/fieldvar.hh, src/ast/forexp.hh, + * src/ast/functiondec.hh, src/ast/ifexp.hh, src/ast/intexp.hh, + * src/ast/letexp.hh, src/ast/namety.hh, src/ast/nilexp.hh, + * src/ast/opexp.hh, src/ast/recordexp.hh, src/ast/recordty.hh, + * src/ast/seqexp.hh, src/ast/simplevar.hh, src/ast/stringexp.hh, + * src/ast/subscriptvar.hh, src/ast/ty.hh, + * src/ast/typedec.hh, src/ast/var.hh, src/ast/vardec.hh, + * src/ast/visitor.hh, src/ast/whileexp.hh, src/ast/decs.hxx, + * src/ast/ast.hxx, src/ast/arrayty.hxx, src/ast/arrayexp.hxx, + * src/ast/assignexp.hxx, src/ast/callexp.cc, src/ast/ast.cc, + * src/ast/assignexp.cc, src/ast/arrayty.cc, src/ast/arrayexp.cc + * src/ast/callexp.hxx: + Use pointers instead of references for attributes. + * src/ast/breakexp.hxx, + * src/ast/dec.cc, src/ast/dec.hxx, + * src/ast/decs.cc, + * src/ast/exp.cc, src/ast/exp.hxx, + * src/ast/field.cc, src/ast/field.hxx, + * src/ast/fieldexp.cc, src/ast/fieldexp.hxx, + * src/ast/fieldvar.cc, src/ast/fieldvar.hxx, + * src/ast/forexp.cc, src/ast/forexp.hxx, + * src/ast/functiondec.cc, src/ast/functiondec.hxx, + * src/ast/ifexp.cc, src/ast/ifexp.hxx, + * src/ast/intexp.cc, src/ast/intexp.hxx, + * src/ast/letexp.cc, src/ast/letexp.hxx, + * src/ast/namety.cc, src/ast/namety.hxx, + * src/ast/nilexp.cc, src/ast/nilexp.hxx, + * src/ast/opexp.cc, src/ast/opexp.hxx, + * src/ast/recordexp.cc, src/ast/recordexp.hxx, + * src/ast/recordty.cc, src/ast/recordty.hxx, + * src/ast/seqexp.cc, src/ast/seqexp.hxx, + * src/ast/simplevar.cc, src/ast/simplevar.hxx, + * src/ast/stringexp.cc, src/ast/stringexp.hxx, + * src/ast/subscriptvar.cc, src/ast/subscriptvar.hxx, + * src/ast/ty.cc, src/ast/ty.hxx, + * src/ast/typedec.cc, src/ast/typedec.hxx, + * src/ast/var.cc, src/ast/var.hxx, + * src/ast/vardec.cc, src/ast/vardec.hxx, + * src/ast/whileexp.cc, src/ast/whileexp.hxx: + New files providing implementation of corresponding interface. + * src/ast/Makefile.am: Distribute new files. + * src/parse/parsetiger.yy, src/ast/test-ast.cc: + Do not dereference fresh-allocated object. + * src/escapes/escapes-env.hxx: Use a convenient accessor. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1133 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-21 Akim Demaille + + 2003-10-21 Akim Demaille + + * src/type/types.hh: Don't "use" symbol::Symbol. + Adjust dependencies. + * src/type/test-type.cc: Fix headers. + * src/type/type-entry.hh: Don't include types.hh, use + forward declarations. + * src/type/type-env.cc, src/type/type-entry.cc: Do it. + Don't use symbol::Symbol in the name space either. + * src/type/types.cc, src/type/types.hxx, src/type/type-entry.hxx: + Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1132 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-17 Akim Demaille + + 2003-10-17 Akim Demaille + + * src/codegen/mips/codegen.cc (free_callee_save): Make sure the + temps are saved and restored in the same order. More tests need + to be performed to see whether LIFO or FIFO is preferred by the + allocator. + * src/codegen/ia32/codegen.hh, src/codegen/ia32/codegen.cc + (free_callee_save): New, as in Mips. + * src/temp/temp.cc (operator<): Beware that operator< on Symbol + performs a pointer comparison, hence it is "human-meaningless". + * src/temp/label.cc (operator<): Likewise. + * src/temp/temp.hh, src/temp/temp.hxx: Name adjustments. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1131 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-17 Akim Demaille + + * src/misc/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1130 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-17 Akim Demaille + + 2003-10-17 Akim Demaille + + * src/misc/set.hxx, src/misc/set.cc: New. + * src/misc/set.hh: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1129 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-16 Akim Demaille + + 2003-10-16 Akim Demaille + + * src/translate/level-env.cc (translate): s/not_/_not/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1128 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-15 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/symbol/table.hh, src/symbol/table.hxx: + Change design of symbol tables. + * src/translate/level-entry.hh + * src/type/type-entry.hh, src/type/type-entry.hxx + * src/type/type-entry.cc: + Permit and define copy operators needed by new table design. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1127 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-14 Akim Demaille + + 2003-10-14 Akim Demaille + + * src/misc/test-timer.cc (iostream): Include. + * src/symbol/test-symbol.cc: Adjust to the current interface. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1126 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-13 Akim Demaille + + * TODO: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1125 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-13 Akim Demaille + + 2003-10-13 Akim Demaille + + Private and protected members should be "member_", not "_member". + + * src/assem/fragment.hh, src/assem/fragment.hxx, + * src/assem/fragment.cc, src/assem/instr.cc, src/assem/instr.hh, + * src/assem/instr.hxx, src/assem/label.hh, src/assem/label.hxx, + * src/assem/layout.hh, src/assem/layout.hxx, src/assem/layout.cc, + * src/assem/move.hxx, src/ast/anydecs.hh, src/ast/arrayexp.hh, + * src/ast/arrayty.hh, src/ast/assignexp.hh, src/ast/ast.hh, + * src/ast/callexp.hh, src/ast/field.hh, src/ast/fieldexp.hh, + * src/ast/fieldvar.hh, src/ast/forexp.hh, src/ast/functiondec.hh, + * src/ast/ifexp.hh, src/ast/intexp.hh, src/ast/letexp.hh, + * src/ast/namety.hh, src/ast/opexp.hh, src/ast/print-visitor.hh, + * src/ast/recordexp.hh, src/ast/recordty.hh, src/ast/seqexp.hh, + * src/ast/simplevar.hh, src/ast/stringexp.hh, + * src/ast/subscriptvar.hh, src/ast/typedec.hh, src/ast/vardec.hh, + * src/ast/whileexp.hh, src/ast/ast.hxx, src/ast/arrayty.hxx, + * src/ast/arrayexp.hxx, src/ast/anydecs.hxx, src/ast/assignexp.hxx, + * src/ast/callexp.cc, src/ast/assignexp.cc, src/ast/arrayty.cc, + * src/ast/arrayexp.cc, src/ast/callexp.hxx, + * src/ast/print-visitor.cc, src/canon/basic-block.hh, + * src/canon/canon.hh, src/canon/canon.cc, src/canon/traces.hh, + * src/canon/traces.cc, src/codegen/assembly.hh, + * src/codegen/codegen.hh, src/codegen/ia32/codegen.cc, + * src/codegen/ia32/gas-layout.cc, src/codegen/mips/codegen.cc, + * src/codegen/mips/spim-layout.cc, src/codegen/mips/test-rw_prg.cc, + * src/cppgen/cppgen-visitor.hh, src/cppgen/includes/arrayty.hh, + * src/cppgen/includes/builtin.hh, src/cppgen/includes/env.hh, + * src/cppgen/includes/function.hh, src/cppgen/includes/list.hh, + * src/cppgen/includes/recordty.hh, src/cppgen/includes/type.hh, + * src/escapes/escapes-check-visitor.hh, src/escapes/escapes-env.hh, + * src/escapes/escapes-visitor.hh, src/frame/access.cc, + * src/frame/access.hh, src/frame/frame.cc, src/frame/frame.hh, + * src/liveness/interference-graph.cc, + * src/liveness/interference-graph.hh, src/misc/deref.cc, + * src/misc/deref.hh, src/misc/deref.hxx, src/misc/escape.cc, + * src/misc/escape.hh, src/misc/escape.hxx, src/misc/timer.cc, + * src/misc/timer.hh, src/overload/overfun-type-visitor.cc, + * src/overload/overfun-type-visitor.hh, + * src/overload/overfun-type-visitor.hxx, src/regalloc/color.hh, + * src/regalloc/libregalloc.cc, src/regalloc/regallocator.hh, + * src/symbol/symbol.cc, src/symbol/symbol.hh, src/symbol/symbol.hxx, + * src/symbol/table.hh, src/symbol/table.hxx, src/target/cpu.cc, + * src/target/cpu.hh, src/target/mips-cpu.cc, src/target/target.hh, + * src/task/task.hh, src/task/task.hxx, src/task/task.cc, + * src/task/boolean-task.hh, src/task/boolean-task.hxx, + * src/task/boolean-task.cc, src/task/function-task.hh, + * src/task/function-task.hxx, src/task/function-task.cc, + * src/task/int-task.hh, src/task/int-task.hxx, src/task/int-task.cc, + * src/task/task-register.cc, src/task/task-register.hh, + * src/temp/label.hh, src/temp/label.hxx, src/temp/label.cc, + * src/temp/factory.hh, src/temp/factory.hxx, src/temp/temp.hh, + * src/temp/temp.hxx, src/temp/temp.cc, src/temp/tempmap.hh, + * src/temp/tempmap.cc, src/temp/tempmap.hxx, + * src/translate/access.hh, src/translate/exp.hh, + * src/translate/fragment.hh, src/translate/fragment.hxx, + * src/translate/fragment.cc, src/translate/level-entry.hh, + * src/translate/level-env.hh, src/translate/level.cc, + * src/translate/level.hh, src/translate/translate-visitor.hh, + * src/tree/cjump.hh, src/tree/const.hh, src/tree/iterator.hh, + * src/tree/label.hh, src/tree/name.hh, src/tree/node.hh, + * src/tree/temp.hh, src/tree/node.cc, src/tree/name.cc, + * src/tree/label.cc, src/tree/const.cc, src/tree/cjump.cc, + * src/tree/node.hxx, src/tree/name.hxx, src/tree/label.hxx, + * src/tree/iterator.hxx, src/tree/const.hxx, src/tree/cjump.hxx, + * src/tree/temp.cc, src/tree/seq.cc, src/tree/eseq.cc, + * src/tree/call.cc, src/tree/temp.hxx, src/type/type-entry.hh, + * src/type/type-env.hh, src/type/type-visitor.hh, src/type/types.hh, + * src/type/types.cc, src/type/types.hxx, src/type/type-env.cc, + * src/type/type-entry.cc, src/type/type-entry.hxx, + * src/type/type-visitor.cc, src/escapes/escapes-visitor.cc, + * src/escapes/escapes-check-visitor.cc, src/escapes/escapes-env.hxx, + * src/frame/access.hxx, src/translate/exp.hxx, + * src/translate/access.hxx, src/translate/exp.cc, + * src/translate/level.hxx, src/translate/level-env.hxx, + * src/translate/translate-visitor.cc, src/translate/level-env.cc, + * src/canon/basic-block.hxx, src/canon/basic-block.cc, + * src/regalloc/regallocator.cc, src/regalloc/color.cc, + * src/target/ia32-cpu.cc + (_a, _access, _active_moves, _alias, _arg, _argname, _arg_offset) + (_args, _argument_registers, _asm_proc_frag, _assem, _assembly, _b) + (_base_type, _body, _callee_save_registers, _caller_save_registers) + (_check_necessary, _check_sufficient, _children, _clean_) + (_clocks_per_sec, _close, _co, _coalesced_moves, _coalesced_nodes) + (_coalesce_p, _codegen, _color, _colored_nodes, _commute_p, _cond) + (_constrained_moves, _counter, _cpu, _d_, _data, _data_frag) + (_debug, _dec, _dec_endl, _decs, _def, _degree, _dependencies) + (_depth, _desc, _do, _elseclause, _endl, _entry, _env, _equal_) + (_error_number, _escape, _escapes_display_p, _escapes_p) + (_escapes_sl_display_p, _escapes_tags_display_p, _escape_tag) + (_excessive_escapes, _execute, _exp, _exp_eval, _exps, _exp_type) + (_field, _fields, _flag, _force, _formals, _fragments, _frame) + (_freeze_work_list, _frozen_moves, _ftable, _func, _func_num) + (_func_table, _fundecs, _generate_const_str, _get, _head, _hi) + (_hir_naive_p, _home, _id, _iffalse, _iftrue, _ig, _inc, _inc_endl) + (_index, _init, _initial, _in_loop, _instance, _instrs, _jumps) + (_key, _kind, _label, _last_type, _layout, _left, _level, _list) + (_location, _loop_end_label, _max, _min, _missing_escapes) + (_module_name, _move_list, _moves, _n_, _name, _nb_regs, _next) + (_nodes, _not, _not_, _number, _offset, _old, _op, _open, _oper) + (_ostr, _out, _outer_level, _overftable, _oversymtab, _params) + (_parent, _postr, _precolored, _ptempmap, _ptr, _put) + (_registers_map, _relop, _result, _right, _save_fp, _sc_clk_tck) + (_scope_begin, _scope_end, _select_stack, _set) + (_simplify_work_list, _size, _sl_compute_p, _sl_escapes_p) + (_sl_needed_p, _special_registers, _spilled_nodes) + (_spill_work_list, _static_list, _stm, _str, _strictness, _symtab) + (_tab, _table, _tail, _tailhd, _tailt, _target, _task_keys) + (_task_list, _task_order, _temp, _tempmap, _temps_priority, _test) + (_the, _thenclause, _trace, _trace_p, _ts, _ttable, _ty, _type) + (_type_name, _type_num, _type_table, _uncx, _unex, _unnx, _use, _v) + (_value, _var, _vardec, _var_num, _var_table, _vtable) + (_work_list_moves, _writable): + Rename as... + (access_, active_moves_, alias_, arg_, argname_, arg_offset_) + (args_, argument_registers_, asm_proc_frag_, assem_, assembly_) + (base_type_, body_, callee_save_registers_, caller_save_registers_) + (check_necessary_, check_sufficient_, children_, _clean_, clean__) + (clocks_per_sec_, close_, co_, coalesced_moves_, coalesced_nodes_) + (coalesce_p_, codegen_, color_, colored_nodes_, commute_p_, cond_) + (constrained_moves_, counter_, cpu_, _d_, d__, data_, data_frag_) + (debug_, dec_, dec_endl_, decs_, def_, definevars_, degree_) + (dependencies_, depth_, desc_, do_, elseclause_, endl_, entry_) + (env_, _equal_, equal__, error_number_, escape_) + (escapes_display_p_, escapes_p_, escapes_sl_display_p_) + (escapes_tags_display_p_, escape_tag_, excessive_escapes_) + (execute_, exp_, exp_eval_, exps_, exp_type_, field_, fields_) + (flag_, force_, formals_, fragments_, frame_, freeze_work_list_) + (frozen_moves_, ftable_, func_, func_num_, func_table_, fundecs_) + (generate_const_str_, get_, getchar_, head_, hi_, hir_naive_p_) + (home_, id_, iffalse_, iftrue_, ig_, inc_, inc_endl_, index_) + (init_, initial_, in_loop_, instance_, instrs_, jumps_, key_) + (kind_, label_, last_type_, layout_, left_, level_, list_) + (listequal_, location_, loop_end_label_, max_, min_) + (missing_escapes_, module_name_, move_list_, moves_, _n_, n__) + (name_, nb_regs_, next_, nodes_, _not_, not_, not__, number_) + (offset_, old_, op_, open_, oper_, ostr_, out_, outer_level_) + (overftable_, oversymtab_, params_, parent_, postr_, precolored_) + (printint_, ptempmap_, ptr_, put_, registers_map_, relop_, result_) + (right_, save_fp_, scope_begin_, scope_end_, select_stack_, set_) + (simplify_work_list_, size_, sl_compute_p_, sl_escapes_p_) + (sl_needed_p_, special_registers_, spilled_nodes_) + (spill_work_list_, static_list_, stm_, str_, strictness_, symtab_) + (tab_, table_, tail_, tailhd_, tailt_, target_, task_keys_) + (task_list_, task_order_, tc_, temp_, tempmap_, temps_priority_) + (test_, the_, thenclause_, trace_, trace_p_, ts_, ttable_, ty_) + (type_, type_name_, type_num_, type_table_, uncx_, unex_, unnx_) + (use_, value_, var_, vardec_, var_num_, var_table_, vtable_) + (work_list_moves_, writable_): + these. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1124 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-13 Akim Demaille + + 2003-10-13 Akim Demaille + + Typedefs should be foo_type, not foo_t. + + * src/parse/parsetiger.yy (decs_t, exps_t, fieldexps_t, fields_t): + Rename as... + (decs_type, exps_type, fieldexps_type, fields_type): these. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1123 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-13 Akim Demaille + + 2003-10-13 Akim Demaille + + Typedefs should be foo_type, not foo_t. + + * src/common.hh, src/tc.cc, src/assem/instr.cc, + * src/assem/instr.hh, src/assem/instr.hxx, src/assem/instrs.cc, + * src/assem/instrs.hh, src/assem/map-visitor.hh, + * src/assem/map-visitor.hxx, src/assem/move.hh, src/assem/oper.hh, + * src/assem/oper.hxx, src/ast/callexp.hh, src/ast/decls.hh, + * src/ast/decs.hh, src/ast/default-visitor.hh, src/ast/exp.hh, + * src/ast/field.hh, src/ast/fieldexp.hh, src/ast/functiondec.hh, + * src/ast/letexp.hh, src/ast/print-visitor.hh, src/ast/recordexp.hh, + * src/ast/recordty.hh, src/ast/seqexp.hh, src/ast/test-ast.cc, + * src/ast/visitor.hh, src/ast/callexp.cc, src/ast/callexp.hxx, + * src/ast/print-visitor.cc, src/ast/default-visitor.hxx, + * src/canon/basic-block.hh, src/canon/canon.hh, src/canon/canon.cc, + * src/canon/traces.hh, src/canon/traces.cc, src/codegen/assembly.hh, + * src/codegen/codegen.hh, src/codegen/ia32/codegen.cc, + * src/codegen/ia32/codegen.hh, src/codegen/ia32/gas-assembly.cc, + * src/codegen/ia32/gas-assembly.hh, src/codegen/mips/codegen.cc, + * src/codegen/mips/codegen.hh, src/codegen/mips/spim-assembly.cc, + * src/codegen/mips/spim-assembly.hh, + * src/codegen/mips/test-rw_prg.cc, src/cppgen/cppgen-visitor.hh, + * src/cppgen/includes/arrayty.hh, src/cppgen/includes/binop.hh, + * src/cppgen/includes/builtin.hh, src/cppgen/includes/control.hh, + * src/cppgen/includes/env.hh, src/cppgen/includes/explist.hh, + * src/cppgen/includes/function.hh, src/cppgen/includes/letinend.hh, + * src/cppgen/includes/list.hh, src/cppgen/includes/lvalue.hh, + * src/cppgen/includes/macro.hh, src/cppgen/includes/recordty.hh, + * src/cppgen/includes/stack.hh, src/cppgen/includes/type.hh, + * src/escapes/escapes-check-visitor.hh, + * src/escapes/escapes-visitor.hh, src/escapes/fundecgraph.hh, + * src/escapes/fundecgraph.hxx, src/escapes/libescapes.cc, + * src/frame/frame.cc, src/frame/frame.hh, src/graph/graph.hh, + * src/graph/graph.hxx, src/graph/handler.hh, src/graph/iterator.hh, + * src/graph/test-graph.cc, src/liveness/flowgraph.hh, + * src/liveness/interference-graph.cc, + * src/liveness/interference-graph.hh, src/liveness/liveness.cc, + * src/liveness/liveness.hh, src/liveness/test-flowgraph.cc, + * src/misc/containers.hxx, src/misc/set.hh, src/misc/timer.cc, + * src/misc/timer.hh, src/overload/overfun-type-visitor.cc, + * src/overload/overfun-type-visitor.hh, + * src/overload/overfun-type-visitor.hxx, src/regalloc/color.hh, + * src/regalloc/test-regalloc.cc, src/symbol/table.hh, + * src/symbol/table.hxx, src/target/cpu.cc, src/target/cpu.hh, + * src/target/mips-cpu.cc, src/task/task.hh, src/task/task.hxx, + * src/task/task.cc, src/task/task-register.cc, + * src/task/task-register.hh, src/temp/label.hh, src/temp/label.cc, + * src/temp/tempmap.hh, src/temp/temps.cc, src/temp/temps.hh, + * src/temp/tempmap.cc, src/temp/tempmap.hxx, src/temp/temp-set.hh, + * src/temp/temp-set.cc, src/translate/exp.hh, + * src/translate/fragment.cc, src/translate/level-env.hh, + * src/translate/level.cc, src/translate/level.hh, + * src/translate/translate-visitor.hh, src/tree/binop.hh, + * src/tree/call.hh, src/tree/cjump.hh, src/tree/const.hh, + * src/tree/eseq.hh, src/tree/jump.hh, src/tree/label.hh, + * src/tree/mem.hh, src/tree/move.hh, src/tree/name.hh, + * src/tree/node.hh, src/tree/seq.hh, src/tree/stm.hh, + * src/tree/sxp.hh, src/tree/temp.hh, src/tree/node.cc, + * src/tree/name.cc, src/tree/mem.cc, src/tree/label.cc, + * src/tree/const.cc, src/tree/cjump.cc, src/tree/binop.cc, + * src/tree/node.hxx, src/tree/iterator.hxx, src/tree/cjump.hxx, + * src/tree/temp.cc, src/tree/sxp.cc, src/tree/seq.cc, + * src/tree/move.cc, src/tree/jump.cc, src/tree/eseq.cc, + * src/tree/call.cc, src/tree/seq.hxx, src/type/type-env.hh, + * src/type/type-visitor.hh, src/type/types.hh, src/type/type-env.cc, + * src/type/type-visitor.cc, src/escapes/escapes-visitor.cc, + * src/escapes/escapes-check-visitor.cc, src/translate/exp.cc, + * src/translate/level.hxx, src/translate/level-env.hxx, + * src/translate/translate-visitor.cc, src/canon/basic-block.hxx, + * src/canon/basic-block.cc, src/liveness/flowgraph.hxx, + * src/regalloc/color.cc, src/target/ia32-cpu.cc, + * src/misc/test-ref.cc (accesses_t, access_list_t, alias_map_t) + (bool_list_t, color_map_t, const_moves_t, decorated_edge_label_t) + (decorated_node_label_t, decs_t, deps_t, edge_label_t) + (edges_of_node_t, edges_set_t, exit_t, exps_t, fieldexps_t) + (fields_t, field_t, flowgraph_t, formals_t, ftable_t, graph_t) + (head_t, hedge_t, hfundecs_t, hnode_t, indexed_modules_t, instrs_t) + (iter_t, kind_node_t, label_map_t, labels_t, _last_t, livemap_t) + (map_t, mmap_t, move_list_map_t, move_set_t, moves_t, move_t) + (neighbors_of_node_t, node_label_t, node_list_t, node_set_t) + (nodes_set_t, nodes_t, node_t, op_t, outer_t, oversymtab_t) + (program_t, range_t, rA_t, rB_t, record_t, self_t, set_t, size_t) + (strictness_t, strings_t, super_t, symtab_t, T_array_t, task_map_t) + (tasks_by_key_t, tasks_by_name_t, T_cond_t, tempmap_t, temp_set_t) + (temps_t, T_eval_t, T_exp_t, tlist_t, T_lval_t, T_lvalue_t) + (tprogram_t, T_record_t, ttable_t, T_t, _t, _type_name value_t) + (var_t, visit_data_frag_t, visit_proc_frag_t, vtable_t): + Rename as... + (accesses_type, access_list_type, alias_map_type, bool_list_type) + (color_map_type, const_moves_type, decorated_edge_label_type) + (decorated_node_label_type, decs_type, deps_type, edge_label_type) + (edges_of_node_type, edges_set_type, exit_type, exps_type) + (fieldexps_type, fields_type, field_type, flowgraph_type) + (formals_type, ftable_type, graph_type, head_type, hedge_type) + (hfundecs_type, hnode_type, indexed_modules_type, instrs_type) + (iter_type, kind_node_type, label_map_type, labels_type) + (_last_type, livemap_type, map_type, mmap_type, move_list_map_type) + (move_set_type, moves_type, move_type, neighbors_of_node_type) + (node_label_type, node_list_type, node_set_type, nodes_set_type) + (nodes_type, node_type, op_type, outer_type, oversymtab_type) + (program_type, range_type, rA_type, rB_type, record_type) + (self_type, set_type, size_type, strictness_type, strings_type) + (super_type, symtab_type, T_array_type, task_map_type) + (tasks_by_key_type, tasks_by_name_type, T_cond_type, tempmap_type) + (temp_set_type, temps_type, T_eval_type, T_exp_type, tlist_type) + (T_lval_type, T_lvalue_type, tprogram_type, T_record_type) + (ttable_type, T_type, _type, _type_name, value_type, var_type) + (visit_data_frag_type, visit_proc_frag_type, vtable_type): + these. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1122 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-10 Akim Demaille + + 2003-10-10 Akim Demaille + + Except in AST, don't "new" the Symbols, just use them by copy. + This does save a number of "new" and does diminish our memory + footprint, since Symbol are already as wide as pointers. + + * src/symbol/symbol.hh, src/symbol/symbol.hxx: Add a default ctor. + * src/assem/fragment.cc: Adjust. + * src/overload/overfun-type-visitor.cc, + * src/overload/overfun-type-visitor.hh (mangle): Return a Symbol + instead of a string. + Adjust all callers. + * src/temp/temp.hh, src/temp/temp.hxx, src/temp/temp.cc (_name): + Be a Symbol, not a pointer to Symbol. + Hence, use number == -1 to discriminate numbered from named. + * src/temp/label.hh, src/temp/label.hxx, src/temp/label.cc: Make + it more like Temp. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1121 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-10 Akim Demaille + + 2003-10-10 Akim Demaille + + * doc/Doxyfile.in: Upgrade to Doxygen 1.3.4. + + * src/doc.hh, src/assem/fragments.cc, src/assem/instr.hxx, + src/assem/instrs.hh, src/ast/callexp.cc, src/canon/canon.hh, + src/frame/frame.cc, src/frame/frame.hh, + src/liveness/interference-graph.hh, src/misc/containers.hxx, + src/regalloc/libregalloc.cc, src/regalloc/libregalloc.hh, + src/temp/factory.hh, src/temp/factory.hxx, + src/translate/fragments.cc, src/translate/level-env.hh: Fix typos + in Doxygen comments. + * src/assem/instr.hh, src/assem/instrs.hh: Don't have twice the + contents in the file, once should be enough for most compilers. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1120 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-09 Akim Demaille + + 2003-10-09 Akim Demaille + + * src/ast/functiondec.hh (~FunctionDec): Don't forget to reclaim + the memory of the fields. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1119 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-09 Akim Demaille + + 2003-10-09 Akim Demaille + + * src/translate/level-env.hh, src/translate/level-env.hxx: Store + Entries, not pointers to Entries. Same benefits as immediately + below. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1118 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-09 Akim Demaille + + 2003-10-09 Akim Demaille + + * src/symbol/table.hxx (Table::put): Pay special attention not to + use map::operator[] as it requires a default ctor, which is wrong + here. + (print): Don't dereference something that might not be a pointer. + * src/type/type-entry.hh, src/type/type-entry.hxx: Formatting + changes. + * src/type/type-env.hh, src/type/type-env.cc (ttable_t, ftable_t) + (vtable_t): New. + Store Entries, not pointers to Entries. + Remove the now usless "new", and err... well, don't remove the + missing, but now useless, deletes. + Use "find" to lookup in the map. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1117 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-09 Akim Demaille + + 2003-10-09 Akim Demaille + + Start converting the interface of symbol::Table to something more + STL-like. + + * src/symbol/table.hh, src/symbol/table.hxx (map_t): Actually + contains data of the parameter type, not pointers to this data + type. + (iterator, const_iterator, begin, end, find): New, const and non + const. + + * src/cppgen/cppgen-visitor.hh, src/escapes/callgraph-creator.cc, + * src/escapes/callgraph-creator.hh, src/escapes/escapes-visitor.hh, + * src/translate/level-env.hh, src/type/type-env.hh, + * src/type/type-env.cc, src/escapes/escapes-visitor.cc, + * src/translate/level-env.hxx: Adjust: When needed pass a pointer + parameter, and strip now useless dereferences. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1116 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-08 Akim Demaille + + 2003-10-08 Akim Demaille + + * src/translate/translate-visitor.cc (visit (ForExp)): Another + useless allocation for a local Symbol. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1115 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-08 Akim Demaille + + 2003-10-08 Akim Demaille + + * src/ast/functiondec.hh (name_set): Don't forget to free the + previous name. + * src/ast/callexp.hxx (func_set): Likewise. + * src/translate/fragment.hh (_name): Have your own copy instead of + aliasing another. + * src/translate/level.cc, src/translate/level.hh: Likewise. + * src/translate/translate-visitor.cc: Don't new symbols that are + not going to be freed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1114 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-08 Akim Demaille + + 2003-10-08 Akim Demaille + + Clarify the interface of T5, the translation to HIR. + + * src/translate/translation.hh, src/translate/translation.cc + (procedureDec, functionDec): Return a fragment, not an + expression. + Don't have an argument only to return this fragment as a side + effect. + * src/translate/translate-visitor.hh, + * src/translate/translate-visitor.cc (fragments_get): New. + (TranslateVisitor::~TranslateVisitor): No longer return the + result by side effect on a reference. + (TranslateVisitor::TranslateVisitor): Hence don't take such a + reference: create _fragments locally. + (_outer_level): You're const. + * src/translate/level-env.hh, src/translate/level-env.cc: constify. + * src/translate/libtranslate.cc: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1113 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-08 Akim Demaille + + 2003-10-08 Akim Demaille + + * src/type/tasks.cc (types_check): Don't be stupid: return with + error if there is an error, not conversely. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1112 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-08 Akim Demaille + + 2003-10-08 Akim Demaille + + * src/assem/instr.hh, src/assem/instrs.hh, src/assem/layout.hh, + * src/ast/libast.hh, src/ast/test-ast.cc, src/canon/basic-block.hh, + * src/canon/tasks.cc, src/canon/canon.cc, src/canon/traces.cc, + * src/codegen/tasks.cc, src/codegen/codegen.hh, + * src/codegen/mips/codegen.cc, src/cppgen/libcppgen.hh, + * src/cppgen/includes/common.hh, src/escapes/tasks.cc, + * src/escapes/libescapes.hh, src/frame/access.hh, + * src/frame/frame.hh, src/graph/graph.hh, + * src/liveness/interference-graph.cc, src/liveness/liveness.cc, + * src/liveness/test-flowgraph.cc, src/misc/deref.hh, + * src/misc/escape.hh, src/misc/containers.hh, src/misc/set.hh, + * src/misc/timer.cc, src/misc/timer.hh, src/parse/tasks.cc, + * src/regalloc/test-regalloc.cc, src/symbol/symbol.hh, + * src/symbol/table.hh, src/symbol/test-symbol.cc, + * src/target/tasks.cc, src/task/tasks.cc, src/temp/label.hh, + * src/temp/tasks.cc, src/temp/temp.hh, src/temp/temp.hxx, + * src/temp/temps.cc, src/temp/tempmap.cc, src/temp/temp-set.cc, + * src/translate/access.hh, src/translate/exp.hh, + * src/translate/fragment.hh, src/translate/level.cc, + * src/translate/level.hh, src/translate/tasks.cc, src/tree/binop.hh, + * src/tree/call.hh, src/tree/cjump.hh, src/tree/const.hh, + * src/tree/eseq.hh, src/tree/jump.hh, src/tree/label.hh, + * src/tree/mem.hh, src/tree/move.hh, src/tree/name.hh, + * src/tree/node.hh, src/tree/seq.hh, src/tree/sxp.hh, + * src/tree/temp.hh, src/tree/node.cc, src/tree/name.cc, + * src/tree/mem.cc, src/tree/label.cc, src/tree/const.cc, + * src/tree/cjump.cc, src/tree/binop.cc, src/tree/sxp.cc, + * src/tree/seq.cc, src/tree/move.cc, src/tree/jump.cc, + * src/tree/eseq.cc, src/tree/call.cc, src/type/types.cc, + * src/type/type-env.cc, src/type/type-entry.cc, + * src/translate/exp.cc, src/canon/basic-block.cc, + * src/regalloc/regallocator.cc, src/regalloc/color.cc, + * src/misc/ref.hxx: Adjust headers, especially use iosfwd or ostream + where more appropriate than iostream. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1111 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-08 Akim Demaille + + 2003-10-08 Akim Demaille + + * src/escapes/escapes-check-visitor.hh (super_t, _missing_escapes) + (_excessive_escapes, missing_escapes_get, excessive_escapes_get): New. + * src/escapes/escapes-check-visitor.cc: Use them to no longer have + side effects on the exit status. + * src/ast/print-visitor.hh, src/ast/print-visitor.cc, + * src/escapes/escapes-visitor.hh, src/escapes/libescapes.cc, + * src/translate/translate-visitor.hh, + * src/escapes/escapes-visitor.cc, src/translate/translate-visitor.cc + (super_t): New. + Use it. + * src/type/type-visitor.hh, src/type/type-visitor.cc + (error_number_get): Is const. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1110 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-08 Akim Demaille + + 2003-10-08 Akim Demaille + + Avoid side effects in visitors, rather provide methods to query + the visitor. + + * src/type/type-visitor.hh, src/type/type-visitor.cc: Don't change + the exit_status directly. + (_error_number, error_number_get): New. + * src/type/libtype.cc, src/type/libtype.hh (type_check): Return a + Boolean instead of having side effects. + * src/type/tasks.cc: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1109 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-08 Akim Demaille + + 2003-10-08 Akim Demaille + + Use the temp::Factory for Labels too, so that Label's be + deallocated properly. + + * src/temp/label.hxx: New. + * src/temp/label.hh, src/temp/label.cc: Adjust a Factory. + Make the ctors private. + + * src/canon/traces.hh, src/canon/traces.cc, + * src/codegen/ia32/gas-layout.cc, src/temp/temp.hh, + * src/temp/temp.hxx, src/translate/exp.hh, src/translate/level.cc, + * src/translate/libtranslate.cc, src/translate/translate-visitor.hh, + * src/translate/translation.hh, src/tree/cjump.hh, + * src/tree/cjump.hxx, src/translate/exp.hxx, src/translate/exp.cc, + * src/translate/translation.cc, src/translate/translate-visitor.cc, + * src/translate/level-env.cc: Adjust: spread const where + * appropriate, and invoke the factory to get a Label. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1108 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-08 Akim Demaille + + 2003-10-08 Akim Demaille + + * src/temp/Makefile.am: Adjust. + * src/temp/factory.hh: New. + * src/temp/temp-factory.hh, src/temp/temp-factory.hxx: Rename as... + * src/temp/factory.hh, src/temp/factory.hxx: these. + Make it template. + * src/temp/temp.hh: Adjust. + * src/canon/canon.cc, src/codegen/ia32/codegen.cc, + * src/codegen/mips/codegen.cc, src/frame/access.cc, + * src/target/cpu.cc, src/target/mips-cpu.cc, + * src/translate/fragment.hxx, src/frame/access.hxx, + * src/translate/exp.cc, src/translate/translation.cc, + * src/target/ia32-cpu.cc: Adjust: include temp.hh not temp-factory.hh. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1107 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-08 Akim Demaille + + 2003-10-08 Akim Demaille + + Since the Temp's management is performed by the TempFactory, + they ought to be const outside. + + * src/temp/temp-factory.hh, src/temp/temp-factory.hxx (create): + Return const Temp. + * src/canon/canon.cc, src/codegen/ia32/codegen.cc, + * src/codegen/mips/codegen.cc, src/frame/access.hh, + * src/target/cpu.cc, src/target/mips-cpu.cc, + * src/translate/fragment.hh, src/frame/access.hxx, + * src/translate/exp.cc, src/translate/translation.cc, + * src/target/ia32-cpu.cc: Adjust: add const where appropriate. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1106 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-08 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/temp/temp-factory.hh, src/temp/temp-factory.cc: Populate. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1105 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-06 Benoßt Perrot + + Index: ChangeLog from Akim Demaille Introduce a TempFactory, in charge of deleting the temporaries at the end. + + * src/temp/temp-factory.hh, src/temp/temp-factory.cc: New. + * src/canon/canon.cc, + * src/codegen/ia32/codegen.cc, src/codegen/mips/codegen.cc, + * src/codegen/mips/test-rw_prg.cc, + * src/frame/access.cc, src/frame/access.hxx, + * src/regalloc/test-regalloc.cc, + * src/temp/Makefile.am, src/temp/temp.hh, + * src/target/ia32-cpu.cc, + * src/translate/fragment.hh, src/translate/fragment.hxx + * src/translate/exp.cc, src/translate/translation.cc: Use it. + * src/target/cpu.cc (~Cpu): Do not delete the Temps, since now + that's the job of the factory. + + * src/codegen/mips/codegen.cc (codegen): Do not heap allocate + the list of temps. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1104 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-06 Benoßt Perrot + + Index: ChangeLog from Akim Demaille * src/type/type-visitor.cc, src/type/type-visitor.hh: Formatting changes. Adjust header inclusions. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1103 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-06 Benoßt Perrot + + Index: ChangeLog from Akim Demaille * src/codegen/ia32/gas-assembly.cc: Do not allocate heap memory for lists of labels since anyway a copy is used by assem::Instr::Instr (). * src/codegen/mips/spim-assembly.cc: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1102 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-06 Benoßt Perrot + + Index: ChangeLog from Akim Demaille * src/misc/ref.hxx (ref::cast, ref::unsafe_cast): Be sure to deallocate the newly allocated count_ member. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1101 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-06 Benoßt Perrot + + Index: ChangeLog from Akim Demaille * src/misc/ref.hxx: Formatting changes. Use "res", not "ret". Remove useless header inclusions. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1100 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-06 Benoßt Perrot + + Index: ChangeLog from Akim Demaille * src/canon/traces.cc (make_traces): Deallocate the blocks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1099 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-06 Benoßt Perrot + + Index: ChangeLog from Akim Demaille Free the Instructions. + + * src/codegen/mips/codegen.cc: Replace all the uses of `insert + (..., foo.front ())' with `splice (...)' because using "front" + allows to get a pointer, but the pointee will be automatically + destroyed when the list itself is destroyed. Therefore extracting + the pointer from the list is mandatory, which is precisely what + splice does. + * src/assem/fragment.hh (instrs_set): Get the value by reference. + * src/assem/fragment.cc (instrs_set): Exchange the old value with + the new value. + * src/assem/instrs.cc (~Instrs): Free the pointees. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1098 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-06 Benoßt Perrot + + Index: ChangeLog from Akim Demaille Don't allocate lists of temps and return them as references. + + * src/temp/temps.hh (L): Change all the instances to return by + copy instead of by reference. + Use stack allocation, not the heap. + * src/assem/label.hh: The list of labels is by aggregation, not by + reference. + * src/assem/oper.hh: The lists are aggregated, not referenced. + * src/codegen/ia32/gas-assembly.cc: Don't "duplicate" arguments + handled by copy. + * src/codegen/mips/spim-assembly.cc: Likewise. + + Instroduce Instrs instead of list . + + * src/assem/instr.hxx: New. + * src/assem/instrs.hh: New. + * src/assem/instrs.cc: New. + * src/assem/fragment.hh: Use Instrs. + * src/assem/fragment.hxx: Likewise. + * src/assem/fragment.cc: Likewise. + * src/assem/instr.hh: Add members and (non virtual) accessors for + _def, _use, and _jump. + * src/assem/instr.cc: Remove instrs_t related code. + * src/assem/label.hh: Adjust to the new Instr. + * src/assem/label.cc: Rename as... + * src/assem/label.hxx: this. + * src/assem/move.hh: Adjust to the new Instr. + * src/assem/move.hxx: Likewise. + * src/assem/oper.hh: Idem. + * src/assem/oper.cc: Rename as... + * src/assem/oper.hxx: this. + * src/assem/Makefile.am: Adjust. + * src/codegen/assembly.hh: Use Instrs. + * src/codegen/codegen.hh: Likewise. + * src/codegen/ia32/codegen.cc: Likewise. + * src/codegen/ia32/gas-assembly.cc: Likewise. + * src/codegen/ia32/gas-assembly.hh: Likewise. + * src/codegen/ia32/gas-layout.cc: Likewise. + * src/codegen/mips/codegen.cc: Likewise. + * src/codegen/mips/spim-assembly.cc: Likewise. + * src/codegen/mips/spim-assembly.hh: Likewise. + * src/codegen/mips/spim-layout.cc: Likewise. + * src/liveness/flowgraph.hh: Likewise. + * src/liveness/flowgraph.hxx: Likewise. + * src/assem/move.cc: Remove. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1097 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-06 Benoßt Perrot + + Index: ChangeLog from Akim Demaille + + * src/doc.hh: Update the links. + * src/misc/list.hh, src/misc/list.hxx: Merge into... + * src/misc/containers.hh, src/misc/containers.hxx: here. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1096 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-03 Akim Demaille + + 2003-10-03 Akim Demaille + + * src/assem/instr.hh (operator<<): Is not inline. + * src/regalloc/libregalloc.cc (UselessMove::operator()): Delete + those that are indeed useless. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1095 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-03 Akim Demaille + + 2003-10-03 Akim Demaille + + Use functors instead of Boolean function members. + + * src/canon/canon.hh (is_nop, commute_p, _commute_p): Remove. + * src/canon/canon.cc: Make them functors. + Adjust the code. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1094 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-03 Akim Demaille + + 2003-10-03 Akim Demaille + + * src/tree/name.hh (_label): This is a const ref to a uniquely + allocate temp::Label. Otherwise, we have a copy that share the + Symbol, and therefore a double destruction of it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1093 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-03 Akim Demaille + + 2003-10-03 Akim Demaille + + Introduce translate::Fragments instead of using std::list + directly, and free the memory. Use auto_ptr. + + * src/translate/fragment.hh (fragments_t): Remove. + * src/translate/fragment.hh: Adjust and fix includes. + * src/translate/fragment.cc: Idem. + * src/translate/fragments.hh, src/translate/fragments.cc: New. + * src/translate/Makefile.am: Adjust. + * src/assem/fragment.cc: Fix includes. + * src/codegen/libcodegen.cc: Adjust and fix includes. + * src/codegen/libcodegen.hh: Lower the number of includes. + * src/codegen/ia32/gas-assembly.cc: Fix includes. + * src/codegen/ia32/gas-layout.cc: Ditto. + * src/codegen/mips/spim-assembly.cc: Ditto. + * src/codegen/mips/spim-layout.cc: Idem. + * src/translate/access.hh: Do not qualify with the currently + opened name space, as then it refers to yet another namespace + translate::translate... + I do not know how it used to compile... + * src/translate/exp.hh: Ditto. + * src/translate/level.hh: Ditto. + * src/translate/libtranslate.hh: Adjust. + * src/translate/libtranslate.cc: Adjust. + * src/translate/translate-visitor.hh: Adjust. + * src/translate/translate-visitor.cc: Idem. + * src/translate/exp.hxx: Remove incorrect namespace qualifiers. + * src/translate/access.hxx: Idem. + * src/translate/level.hxx: Idem. + * src/translate/tasks.cc (fragment): Now an auto_ptr. + * src/translate/tasks.hh: Adjust. + * src/canon/tasks.cc: Adjust. + * src/codegen/tasks.cc: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1092 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-03 Akim Demaille + + 2003-10-03 Akim Demaille + + Free the assembly code. + + * src/assem/fragment.hh (Fragment::instrs_get, Fragment::instrs_set) + (Fragment::_instrs): In general, there is no use for instructions + here, so move these into... + (ProcFrag::instrs_get, ProcFrag::instrs_set, ProcFrag::_instrs): here. + * src/assem/fragment.cc (ProcFrag::~ProcFrag): Deep clear _instr. + * src/assem/fragment.hxx: Adjust. + * src/codegen/mips/codegen.cc: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1091 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-03 Akim Demaille + + 2003-10-03 Akim Demaille + + * src/misc/has.hh: Rename as... + * src/misc/containers.hh: this. + * src/misc/containers.hxx: New. + * src/misc/Makefile.am: Adjust. + * src/assem/fragments.cc (Delete): Remove, use deep_clear. + * src/target/cpu.cc: Likewise. + * src/graph/graph.hxx: Adjust to the renaming. + * src/liveness/interference-graph.cc, src/task/task-register.cc, + * src/tree/node.cc, src/regalloc/color.cc: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1090 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-03 Akim Demaille + + 2003-10-03 Akim Demaille + + * src/assem/visitor.cc: New. + * src/assem/fragment.cc, src/assem/fragment.hxx: Adjust. + And formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1089 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-03 Akim Demaille + + 2003-10-03 Akim Demaille + + * src/assem/visitor.cc: New. + * src/assem/fragment.cc, src/assem/fragment.hxx: Adjust. + And formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1088 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-03 Akim Demaille + + 2003-10-03 Akim Demaille + + Have a type assem::Fragments instead of std::list , + and use this class to deallocate the memory. + + * src/assem/fragments.hh: New. + * src/assem/fragments.cc: New. + * src/assem/Makefile.am: Adjust. + + * src/assem/fragment.hh (fragments_t): Remove. + * src/assem/fragment.cc (asm_print): Remove. + * src/assem/fragment.hxx: Adjust. + * src/assem/libassem.hh (fragments.hh): Include. + * src/assem/layout.hh: s/fragments_t/Fragments/. + * src/assem/map-visitor.hh: Idem. + * src/assem/visitor.hh: Likewise. + * src/codegen/tasks.cc: Adjust. + * src/codegen/tasks.hh: Similarly. + * src/codegen/libcodegen.cc: Ditto. + * src/codegen/libcodegen.hh: Reditto. + * src/codegen/ia32/gas-layout.cc: Again. + * src/codegen/ia32/gas-layout.hh: And again. + * src/codegen/mips/spim-layout.cc: Etc. + * src/codegen/mips/spim-layout.hh: Etc. + * src/liveness/tasks.cc: Guess what. + * src/regalloc/libregalloc.cc: Yeah, right. + * src/regalloc/libregalloc.hh: Bla blah. + * src/assem/map-visitor.hxx: Foo bar. + * src/assem/layout.cc: Same as above. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1087 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-02 Akim Demaille + + 2003-10-02 Akim Demaille + + * src/target/cpu.cc (Delete): New. + (~Cpu): Delete the argument, callee save, and caller save + registers. + Do not free special registers since some are statically allocated. + * src/target/tasks.cc (target): Be an auto_ptr, so that we don't + have to delete at the end of the program. + (target_mips, target_ia32): Adjust. + * src/target/tasks.hh: Adjust. + * src/temp/temp.cc (~Temp): No need to "if" a delete. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1086 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-02 Akim Demaille + + Index: ChangeLog from Akim Demaille Handle memory leaks from the translation process: free the translate::Exps when used. + + * src/translate/exp.hh, src/translate/exp.cc, src/translate/exp.hxx + (unCx, unEx, unNx): For the four classes (Nx, Cx, Ex, Ix), rename + them as.... + (_unCx, _unEx, _unNx): this. + (Exp::unCx, Exp::unEx, Exp::unNx): New, after calling the + corresponding _unXX, calls delete to free the memory. + (Cx::_unEx): No longer redirect to unCx, but to _unCx. + * src/translate/translation.cc (translate): Introduce "indice" to + store the result of a single unXx call on indice_exp. + Do not use assignExp to translate the increment, since that would + require to duplicate indice_exp, which is not possible. + So to remain linear, inline the call to assignExp. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1085 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-02 Akim Demaille + + 2003-10-02 Akim Demaille + + * src/misc/ref.hh: Formatting changes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1084 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-02 Akim Demaille + + 2003-10-02 Akim Demaille + + * src/misc/escape.cc (Escape::_escape): No longer use the locale + to please Valgrind. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1083 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-01 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * Merge the following changes: + + + 2003-10-01 Raphaël Poss + + + + * src/translate/translation.cc: Fix bug where reference to + + temporaries were stored in the heap. + + + + * src/canon/basic-block.cc: Fix bug where dynamic_cast was checked + + for correctness too early. + + + + 2003-09-30 Raphaël Poss + + + + * Synchronize with main project. + + + + 2003-09-30 Raphaël Poss + + + + * src/codegen/mips/test-rw_prg.cc: Attempt to fix. + + + + * src/codegen/mips/Makefile.am: Remove test-rw_prg temporarily + + since it does not compile any more. + + + + 2003-09-30 Raphaël Poss + + + + * src/codegen/libcodegen.cc, src/codegen/codegen.hh: Update for + + counted references. + + + + 2003-09-30 Raphaël Poss + + + + * src/codegen/ia32/codegen.cc, src/codegen/ia32/codegen.hh, + + * src/codegen/ia32/gas-layout.cc: Update for counted references. + + + + 2003-09-30 Raphaël Poss + + + + * src/canon/traces.cc, src/canon/canon.cc: Remove unneeded + + assertions, replace cast() by unsafe_cast() wherever needed. + + + + 2003-09-30 Raphaël Poss + + + + * src/tree/cjump.hxx, src/tree/jump.hxx, src/tree/eseq.hxx: Remove + + unneeded assertions. + + + + * src/misc/ref.hh, src/misc/ref.hxx: Add new unsafe_cast() method. + + * src/misc/test-ref.cc: Test it. + + + + 2003-09-30 Raphaël Poss + + + + * src/codegen/mips/codegen.cc: Remove DOWN_CAST again since it is + + now uneeded. + + + + 2003-09-30 Raphaël Poss + + + + * src/misc/ref.hxx: Make method cast() throw an exception on bad + + casts. + + + + * src/misc/ref.hh: Document accordingly. + + * src/misc/test-ref.cc: Update accordingly. + + + + 2003-09-29 Raphaël Poss + + + + * src/codegen/mips/codegen.cc, src/codegen/mips/codegen.hh, + + * src/codegen/mips/spim-layout.cc: Use counted references instead + + of pointers for tree::Nodes. + + + + 2003-09-29 Raphaël Poss + + + + * src/assem/fragment.cc, src/assem/fragment.hxx: Use counted + + references instead of pointers for tree::Nodes. + + + + 2003-09-29 Raphaël Poss + + + + * src/canon/basic-block.hh src/canon/tasks.cc, src/canon/canon.cc, + + * src/canon/traces.cc, src/canon/basic-block.hxx, + + * src/canon/basic-block.cc, src/canon/canon.hh, src/canon/traces.hh: Use + + counted references instead of pointers for tree::Nodes. + + + + 2003-09-29 Raphaël Poss + + + + * src/translate/access.hh, src/translate/exp.hh, + + * src/translate/fragment.hh src/translate/level.cc, + + * src/translate/level.hh src/translate/exp.hxx, + + * src/translate/access.hxx src/translate/exp.cc, + + * src/translate/translation.cc src/translate/fragment.hxx, + + * src/translate/fragment.cc src/translate/translate-visitor.cc: Use + + counted references instead of pointers for tree::Nodes. + + + + 2003-09-29 Raphaël Poss + + + + * src/frame/access.hh, src/frame/acces.cc, src/frame/frame.hh, + + * src/frame/frame.cc: Use counted references instead of pointers for + + tree::Nodes. + + + + 2003-09-29 Raphaël Poss + + + + * Merge the following changes: + + + + 2003-09-03 Raphaël Poss + + + + * src/tree/binop.hh, src/tree/call.hh, src/tree/cjump.hh, + + * src/tree/const.hh, src/tree/eseq.hh, src/tree/exp.hh, + + * src/tree/iterator.hh, src/tree/jump.hh, src/tree/mem.hh, + + * src/tree/move.hh, src/tree/name.hh, src/tree/node.hh, + + * src/tree/seq.hh, src/tree/stm.hh, src/tree/sxp.hh, + + * src/tree/node.cc, src/tree/node.hxx, src/tree/mem.hxx, + + * src/tree/iterator.hxx, src/tree/cjump.hxx, src/tree/binop.hxx, + + * src/tree/eseq.cc, src/tree/call.cc, src/tree/sxp.hxx, + + * src/tree/seq.hxx, src/tree/move.hxx, src/tree/jump.hxx, + + * src/tree/eseq.hxx: Use counted references instead of pointers for + + inter-node references. + + + + 2003-09-29 Raphaël Poss + + + + * src/misc/ref.hh, src/misc/ref.hxx: Add is_a(), operator bool() + + and swap() methods. + + * src/misc/test-ref.cc: Test them. + + + + * Merge the following changes: + + + + 2003-09-03 Raphaël Poss + + + + * src/misc/ref.hh, src/misc/ref.hxx: Add cast() method. Add + + missing copy constructor and assignment operators. Add missing + + difference operators. Fix operator-> (). + + + + * src/misc/test-ref.cc: Update accordingly. + + + + 2003-09-03 Raphaël Poss + + + + * src/misc/ref.hh, src/misc/ref.hxx: New class for counted + + references. + + + + * src/misc/test-ref.cc: Test code for counted references. + + + + * src/misc/Makefile.am: Mention the new files. + + + 2003-09-26 Akim Demaille + + * src/assem/layout.cc (Layout::visit): Do use the visitor to print + @@ -628,23 +764,6 @@ + + 2003-09-03 Raphaël Poss + + - * src/misc/ref.hh, src/misc/ref.hxx: Add cast() method. Add + - missing copy constructor and assignment operators. Add missing + - difference operators. Fix operator-> (). + - + - * src/misc/test-ref.cc: Update accordingly. + - + -2003-09-03 Raphaël Poss + - + - * src/misc/ref.hh, src/misc/ref.hxx: New class for counted + - references. + - + - * src/misc/test-ref.cc: Test code for counted references. + - + - * src/misc/Makefile.am: Mention the new files. + - + -2003-09-03 Raphaël Poss + - + * src/ast/arrayexp.hh, src/ast/arrayexp.hxx, + * src/ast/print-visitor.cc, src/ast/default-visitor.hxx, + * src/cppgen/cppgen-visitor.hh, src/parse/parsetiger.yy, + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1082 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1081 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-10-01 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/translate/translation.cc: Fix bug where reference to + temporaries were stored in the heap. + + * src/canon/basic-block.cc: Fix bug where dynamic_cast was checked + for correctness too early. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1080 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-30 Raphaël Poss + + 2003-09-30 Raphaël Poss + + * Synchronize with main project. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1079 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-30 Raphaël Poss + + 2003-09-30 Raphaël Poss + + * src/codegen/mips/test-rw_prg.cc: Attempt to fix. + + * src/codegen/mips/Makefile.am: Remove test-rw_prg temporarily + since it does not compile any more. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1078 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1077 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-30 Raphaël Poss + + 2003-09-30 Raphaël Poss + + * src/codegen/libcodegen.cc, src/codegen/codegen.hh: Update for + counted references. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1076 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-30 Raphaël Poss + + 2003-09-30 Raphaël Poss + + * src/codegen/ia32/codegen.cc, src/codegen/ia32/codegen.hh, + * src/codegen/ia32/gas-layout.cc: Update for counted references. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1075 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-30 Raphaël Poss + + 2003-09-30 Raphaël Poss + + * src/canon/traces.cc, src/canon/canon.cc: Remove unneeded + assertions, replace cast() by unsafe_cast() wherever needed. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1074 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-30 Akim Demaille + + * TODO: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1073 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-30 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/tree/cjump.hxx, src/tree/jump.hxx, src/tree/eseq.hxx: Remove unneeded assertions. + + * src/misc/ref.hh, src/misc/ref.hxx: Add new unsafe_cast() method. + * src/misc/test-ref.cc: Test it. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1072 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-30 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/codegen/ia32/codegen.cc: Remove DOWN_CAST again since it is now uneeded. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1071 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-30 Raphaël Poss + + 2003-09-30 Raphaël Poss + + * src/misc/ref.hxx: Make method cast() throw an exception on bad + casts. + + * src/misc/ref.hh: Document accordingly. + * src/misc/test-ref.cc: Update accordingly. + . + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1070 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1069 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-29 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/codegen/mips/codegen.cc, src/codegen/mips/codegen.hh, + * src/codegen/mips/spim-layout.cc: Use counted references instead + of pointers for tree::Nodes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1068 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-29 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/assem/fragment.cc, src/assem/fragment.hxx: Use counted + references instead of pointers for tree::Nodes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1067 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-29 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/canon/basic-block.hh src/canon/tasks.cc, src/canon/canon.cc, + * src/canon/traces.cc, src/canon/basic-block.hxx, + * src/canon/basic-block.cc, src/canon/canon.hh, src/canon/traces.hh: Use + counted references instead of pointers for tree::Nodes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1066 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-29 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/translate/access.hh, src/translate/exp.hh, + * src/translate/fragment.hh src/translate/level.cc, + * src/translate/level.hh src/translate/exp.hxx, + * src/translate/access.hxx src/translate/exp.cc, + * src/translate/translation.cc src/translate/fragment.hxx, + * src/translate/fragment.cc src/translate/translate-visitor.cc: Use + counted references instead of pointers for tree::Nodes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1065 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-29 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/frame/access.hh, src/frame/acces.cc, src/frame/frame.hh, + * src/frame/frame.cc: Use counted references instead of pointers for + tree::Nodes. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1064 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-29 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * Merge the following changes: + + + 2003-09-03 Raphaël Poss + + + + * src/tree/binop.hh, src/tree/call.hh, src/tree/cjump.hh, + + * src/tree/const.hh, src/tree/eseq.hh, src/tree/exp.hh, + + * src/tree/iterator.hh, src/tree/jump.hh, src/tree/mem.hh, + + * src/tree/move.hh, src/tree/name.hh, src/tree/node.hh, + + * src/tree/seq.hh, src/tree/stm.hh, src/tree/sxp.hh, + + * src/tree/node.cc, src/tree/node.hxx, src/tree/mem.hxx, + + * src/tree/iterator.hxx, src/tree/cjump.hxx, src/tree/binop.hxx, + + * src/tree/eseq.cc, src/tree/call.cc, src/tree/sxp.hxx, + + * src/tree/seq.hxx, src/tree/move.hxx, src/tree/jump.hxx, + + * src/tree/eseq.hxx: Use counted references instead of pointers for + + inter-node references. + + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1063 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-29 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/misc/ref.hh, src/misc/ref.hxx: Add is_a(), operator bool() + and swap() methods. + * src/misc/test-ref.cc: Test them. + + * Merge the following changes: + + + 2003-09-03 Raphaël Poss + + + + * src/misc/ref.hh, src/misc/ref.hxx: Add cast() method. Add + + missing copy constructor and assignment operators. Add missing + + difference operators. Fix operator-> (). + + + + * src/misc/test-ref.cc: Update accordingly. + + + + 2003-09-03 Raphaël Poss + + + + * src/misc/ref.hh, src/misc/ref.hxx: New class for counted + + references. + + + + * src/misc/test-ref.cc: Test code for counted references. + + + + * src/misc/Makefile.am: Mention the new files. + + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1062 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1061 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-26 Akim Demaille + + 2003-09-26 Akim Demaille + + * src/assem/layout.cc (Layout::visit): Do use the visitor to print + the instructions... + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1060 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-26 Akim Demaille + + 2003-09-26 Akim Demaille + + * src/target/ia32-cpu.hh (instance): Remove. + (Ia32Cpu): Public. + * src/target/mips-cpu.cc (MipsCpu::MipsCpu): Take callee_max, and + caller_max as argument. + Use them. + * src/target/mips-cpu.hh: Adjust. + (instance): Remove. + * src/target/target.hh: Members are pointers, not references. + (~Target): Delete them. + Adjust accessors. + * src/target/ia32-target.hh: Adjust. + * src/target/mips-target.hh: Adjust. + * src/target/tasks.cc: Use caller_save and callee_save. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1059 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-26 Akim Demaille + + 2003-09-26 Akim Demaille + + Support command line options with integers in a range. + + * src/task/tasks.cc: Include task-register.hh. + * src/task/task.hh (check, argname_set, argname_get, _argname) + (arg_set, arg_get, _arg): New. + * src/task/task.hxx: Adjust. + * src/task/task.cc: Adjust. + * src/task/boolean-task.hh, src/task/boolean-task.hxx, + * src/task/boolean-task.cc, src/task/function-task.hh, + * src/task/function-task.cc: Add a check method that does nothing + but agreeing. + * src/task/task-register.cc, src/task/task-register.hh: Use + argname and arg. + * src/misc/ref.hxx: Comment changes. + * src/task/int-task.hh: New. + * src/task/int-task.hxx: New. + * src/task/int-task.cc: New. + * src/task/Makefile.am: Adjust. + * src/task/libtask.hh: Don't include "task-register", useless. + Include int-task.hh. + (INT_TASK_DECLARE): New. + * src/target/tasks.cc: No need to protect delete from 0. + * src/target/tasks.hh: Add "--callee-save" and "--caller-save". + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1058 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-25 Akim Demaille + + 2003-09-25 Akim Demaille + + * src/temp/temp.hh (temp_compare): Derives from binary_function. + Rename as... + (temp_ptr_less): this. + * src/task/task-register.cc (lt_str): Likewise. + Rename as... + (char_ptr_less): this. + * src/liveness/interference-graph.hh, src/temp/temp-set.hh + * src/temp/tempmap.hh, src/temp/temp.hxx: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1057 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-24 Akim Demaille + + 2003-09-24 Akim Demaille + + * src/misc/list.hh, src/misc/list.hxx (print_with_separator): New. + * src/misc/Makefile.am: Adjust. + * src/translate/fragment.cc, src/assem/layout.cc, + * src/regalloc/color.cc: Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1056 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-22 Akim Demaille + + 2003-09-22 Akim Demaille + + * src/translate/exp.hh: Comment changes. + * src/translate/level-env.hh: Use consistently `hir_navei@, not + `hir_uses_ix'. + * src/translate/libtranslate.cc, src/translate/tasks.cc, + * src/translate/translate-visitor.hh: Likewise. + * src/translate/translate-visitor.cc: likewise. + * src/translate/level-env.cc (BULITIN_PUT): New. + Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1055 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-22 Akim Demaille + + 2003-09-22 Akim Demaille + + * src/type/types.hh (Record::fields_t, Record::const_iterator): + (Record::begin, Record::end): New. + (Record::_fields): Be a list of Field, not a list of pointers. + Adjust all dependencies. + As a consequence, there are no memory leaks for Fields now (just + for Records). + * src/type/type-visitor.cc: Use them. + * src/overload/overfun-type-visitor.cc (overload): Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1054 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-22 Akim Demaille + + 2003-09-22 Akim Demaille + + * src/task/task-register.cc (parse_arg): Don't new when not needed. + * src/parse/scantiger.ll (yylex_destroy): New, if needed. + (scan_close): Use it to delete the current Flex buffer. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1053 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-22 Akim Demaille + + 2003-09-22 Akim Demaille + + * src/temp/temp.hh, src/temp/temp.cc (~Temp): New. + * src/temp/label.hh, src/temp/label.cc (~Label): New. + * src/misc/timer.cc (~Timer): Delete the TimeVar we new'd. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1052 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-19 Akim Demaille + + 2003-09-19 Akim Demaille + + * src/task/task.hh, src/task/task.hxx, src/task/task.cc: Move the + non Task definitions to the following files. + * src/task/boolean-task.hh: New. + * src/task/boolean-task.hxx: New. + * src/task/boolean-task.cc: New. + * src/task/function-task.hh: New. + * src/task/function-task.hxx: New. + * src/task/function-task.cc: New. + * src/task/libtask.hh: New. + * src/task/task_register.cc: Rename as... + * src/task/task-register.cc: this. + * src/task/task_register.hh: Rename as... + * src/task/task-register.hh: this. + * src/tc.cc, src/ast/tasks.hh, src/canon/tasks.hh, + * src/codegen/tasks.hh, src/cppgen/tasks.hh, src/escapes/tasks.hh, + * src/liveness/tasks.hh, src/overload/tasks.hh, src/parse/tasks.hh, + * src/regalloc/tasks.hh, src/target/tasks.hh, src/task/Makefile.am, + * src/task/tasks.hh, src/temp/tasks.hh, src/translate/tasks.hh, + * src/type/tasks.hh: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1051 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-19 Akim Demaille + + 2003-09-19 Akim Demaille + + * config/reheader: New, based on work from Vaucanson. + * config/Makefile.am: Cleanup. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1050 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-19 Akim Demaille + + 2003-09-19 Akim Demaille + + Let foo/foo-tasks be simply foo/tasks. + + * src/ast/ast-tasks.cc: Rename as... + * src/ast/tasks.cc: this. + * src/ast/ast-tasks.hh: Rename as... + * src/ast/tasks.hh: this. + * src/canon/canon-tasks.cc: Rename as... + * src/canon/tasks.cc: this. + * src/canon/canon-tasks.hh: Rename as... + * src/canon/tasks.hh: this. + * src/codegen/codegen-tasks.cc: Rename as... + * src/codegen/tasks.cc: this. + * src/codegen/codegen-tasks.hh: Rename as... + * src/codegen/tasks.hh: this. + * src/cppgen/cppgen-tasks.cc: Rename as... + * src/cppgen/tasks.cc: this. + * src/cppgen/cppgen-tasks.hh: Rename as... + * src/cppgen/tasks.hh: this. + * src/escapes/escapes-tasks.cc: Rename as... + * src/escapes/tasks.cc: this. + * src/escapes/escapes-tasks.hh: Rename as... + * src/escapes/tasks.hh: this. + * src/liveness/liveness-tasks.cc: Rename as... + * src/liveness/tasks.cc: this. + * src/liveness/liveness-tasks.hh: Rename as... + * src/liveness/tasks.hh: this. + * src/overload/overload-tasks.cc: Rename as... + * src/overload/tasks.cc: this. + * src/overload/overload-tasks.hh: Rename as... + * src/overload/tasks.hh: this. + * src/parse/parse-tasks.cc: Rename as... + * src/parse/tasks.cc: this. + * src/parse/parse-tasks.hh: Rename as... + * src/parse/tasks.hh: this. + * src/regalloc/regalloc-tasks.cc: Rename as... + * src/regalloc/tasks.cc: this. + * src/regalloc/regalloc-tasks.hh: Rename as... + * src/regalloc/tasks.hh: this. + * src/target/target-tasks.cc: Rename as... + * src/target/tasks.cc: this. + * src/target/target-tasks.hh: Rename as... + * src/target/tasks.hh: this. + * src/task/task-tasks.cc: Rename as... + * src/task/tasks.cc: this. + * src/task/task-tasks.hh: Rename as... + * src/task/tasks.hh: this. + * src/temp/temp-tasks.cc: Rename as... + * src/temp/tasks.cc: this. + * src/temp/temp-tasks.hh: Rename as... + * src/temp/tasks.hh: this. + * src/translate/translate-tasks.cc: Rename as... + * src/translate/tasks.cc: this. + * src/translate/translate-tasks.hh: Rename as... + * src/translate/tasks.hh: this. + * src/type/type-tasks.cc: Rename as... + * src/type/tasks.cc: this. + * src/type/type-tasks.hh: Rename as... + * src/type/tasks.hh: this. + * configure.ac (src/modules.hh): Adjust. + * src/ast/Makefile.am, src/canon/Makefile.am, + * src/codegen/Makefile.am, src/cppgen/Makefile.am, + * src/escapes/Makefile.am, src/liveness/Makefile.am, + * src/overload/Makefile.am, src/parse/Makefile.am, + * src/regalloc/Makefile.am, src/target/Makefile.am, + * src/task/Makefile.am, src/temp/Makefile.am, + * src/translate/Makefile.am, src/type/Makefile.am: Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1049 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-19 Akim Demaille + + 2003-09-19 Akim Demaille + + Implement BooleanTask that only sets a Boolean variable to true + when called. This simplifies places where we create a function + just to this end. + + * src/task/task.cc, src/task/task.hh, src/task/task.hxx + (BooleanTask, BOOLEAN_TASK_DECLARE): New. + * src/canon/canon-tasks.cc, src/canon/canon-tasks.hh, + * src/codegen/codegen-tasks.cc, src/codegen/codegen-tasks.hh, + * src/escapes/escapes-tasks.cc, src/escapes/escapes-tasks.hh, + * src/parse/parse-tasks.cc, src/parse/parse-tasks.hh, + * src/regalloc/regalloc-tasks.cc, src/regalloc/regalloc-tasks.hh, + * src/translate/translate-tasks.cc, + * src/translate/translate-tasks.hh: Use them. + * src/ast/libast.hh: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1048 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-18 Akim Demaille + + 2003-09-18 Akim Demaille + + * src/doc.hh: Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1047 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-16 Akim Demaille + + * NEWS: Detail the release dates. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1046 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-16 Akim Demaille + + 2003-09-16 Akim Demaille + + * src/assem/libassem.cc: Remove. + * src/assem/libassem.hh: Adjust. + * src/assem/Makefile.am: Adjust. + * src/assem/instr.cc (print): Move the print for instrs_t here. + (operator<<): Use it. + * src/assem/instr.hh: Adjust. + * src/codegen/ia32/gas-layout.cc: Adjust to `print' swapping of + arguments. + * src/codegen/mips/spim-layout.cc: Likewise. + * src/liveness/liveness.cc: Comment changes. + * src/regalloc/color.hh: Likewise. + * src/temp/temp-tasks.hh: Ditto. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1045 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-16 Akim Demaille + + 2003-09-16 Akim Demaille + + Purify the interface of temp: the global TempMap is now passed + from hand to hand. + + * src/temp/libtemp.cc: Remove. + * src/temp/libtemp.hh: Remove. + * src/temp/temp-tasks.cc (tempmap): New. + * src/temp/temp-tasks.hh: Adjust. + * src/temp/temp.cc (Temp::_counter): Define it here. + * src/temp/Makefile.am: Adjust. + + * src/assem/fragment.hh (Fragment::print): Provide a default value + for the tempmap argument, for operator<<. + * src/assem/fragment.hxx: Adjust. + * src/assem/instr.hh (Instr::print): Likewise. + * src/codegen/codegen-tasks.cc: Find the global tempmap in + temp::tasks. + * src/liveness/interference-graph.cc: The ctor wants a tempmap for + the Liveness. + * src/liveness/interference-graph.hh: Adjust. + * src/liveness/liveness.cc: The ctor wants a tempmap argument. + * src/liveness/liveness.hh: Adjust. + * src/liveness/liveness-tasks.cc: Adjust. + * src/regalloc/color.hh: The ctor wants a tempmap argument for the + RegisterAllocator. + * src/regalloc/color.cc: Adjust. + * src/regalloc/regallocator.cc (operator ()): Take a tempmap as + argument, to give to Color. + * src/regalloc/regallocator.hh: Adjust. + * src/regalloc/regalloc-tasks.cc (coalesce_enable_p): Rename as... + (coalesce_disable_p): this. + * src/translate/fragment.hh (print): Provide a default value + for the tempmap argument, for operator<<. + * src/translate/fragment.hxx: Adjust. + * src/regalloc/libregalloc.cc (allocate_registers): Add a tempmap + argument. + * src/regalloc/libregalloc.hh: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1044 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-15 Akim Demaille + + 2003-09-15 Akim Demaille + + Purify the interface of regalloc. + + * src/regalloc/libregalloc.hh (coalesce_enable_p) + (regalloc_trace_p, trace_flowgraph_p): Remove. + (allocate_registers): Take coalesce_enable_p and regalloc_trace_p + as arguments. + * src/regalloc/libregalloc.cc: Adjust. + * src/regalloc/regalloc-tasks.cc (coalesce_enable_p) + (regalloc_trace_p, trace_flowgraph_p): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1043 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-15 Akim Demaille + + 2003-09-15 Akim Demaille + + Purify the interface of canon. To make this easier, the Canon and + Traces class are created as wrappers around the canonicalization + and construction of the traces processes. + + * src/canon/canon-tasks.cc (canon_trace_p, trace_trace_p): New. + (canonicalize, make_traces): Adjust to calling the corresponding + objects. + * src/canon/canon.hh: New. + * src/canon/canon.cc: Adjust to transform functions in methods. + * src/canon/traces.hh: New. + * src/canon/traces.cc: Adjust to transform functions in methods. + * src/canon/libcanon.hh: Remove. + * src/canon/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1042 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-15 Akim Demaille + + 2003-09-15 Akim Demaille + + Purify the interface of codegen. I wish I could have gone + further, but because we cannot forward declare a typedef, we still + have to exhibit the definition of assem::fragments_t in the + codegen tasks, hence we have to include assem/fragment.h. + + * src/codegen/libcodegen.cc (fragments): Remove. + (lir_to_assem): Return the allocated result instead of assigning + the result to one of the input arguments. + * src/codegen/libcodegen.hh: Adjust. + * src/codegen/assembly.hh: Remove the argument names to pacify the + "not used" warnings. + Of course work is still needed here. + * src/codegen/codegen-tasks.cc (fragments): New. + Adjust to lir_to_assem changes. + Adjust to fragments being a pointer now. + * src/codegen/codegen-tasks.hh: Adjust. + * src/liveness/liveness-tasks.cc: Adjust to `fragments' being a + pointer in codegen::tasks. + * src/regalloc/regalloc-tasks.cc: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1041 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-15 Akim Demaille + + 2003-09-15 Akim Demaille + + Kill the warnings about "function without return" when we end with + die. + + * src/misc/contract.hh (ATTRIBUTION): New. + Use it on __Terminate and __FailedCondition. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1040 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-14 Nicolas Burrus + + * src/overload/Makefile.am (INCLUDES): Include build directory. * src/translate/Makefile.am (INCLUDES): Likewise. * src/type/Makefile.am (INCLUDES): Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1039 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-14 Nicolas Burrus + + * src/canon/canon-tasks.cc: fragments_t is still in translate::. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1038 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-12 Akim Demaille + + 2003-09-12 Akim Demaille + + * src/canon/canon-tasks.cc, src/codegen/codegen-tasks.cc, + * src/codegen/libcodegen.cc: translate::fragments are now in + translate::tasks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1037 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-12 Akim Demaille + + 2003-09-12 Akim Demaille + + Use `///' instead of `/// brief'. + + * src/ast/default-visitor.hh, src/misc/timer.hh, + * src/temp/libtemp.hh, src/translate/translate-tasks.cc, + * src/translate/translate-tasks.hh: Comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1036 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-12 Akim Demaille + + 2003-09-12 Akim Demaille + + Purify the interface of translate/. + + * src/translate/libtranslate.cc, + * src/translate/libtranslate.hh (hir_use_ifexp_p, fragments): + Move to... + * src/translate/translate-tasks.cc: here. + * src/translate/translate-visitor.hh, + * src/translate/translate-visitor.cc (TranslateVisitor): Accept + hir_use_ifexp_p as additional argument, for the new _hir_use_ix_p + member. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1035 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-12 Akim Demaille + + 2003-09-12 Akim Demaille + + Purify the interface of escapes/. + + * src/escapes/libescapes.cc, src/escapes/libescapes.hh + (escapes_sl_display_p, escapes_tags_display_p): Move to... + * src/escapes/escapes-tasks.cc: here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1034 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-12 Akim Demaille + + 2003-09-12 Akim Demaille + + Purify the interface of parse/. + + * src/parse/libparse.cc (filename, scan_trace_p, parse_trace_p): + Remove. + (parse): Takes scan_trace_p, parse_trace_p as arguments. + * src/parse/libparse.hh: Adjust. + * src/tc.cc, src/common.hh (filename): Move it here. + * src/parse/parse-tasks.cc (scan_trace_p, parse_trace_p): New + locals. + Adjust calls to parse (). + * src/parse/scantiger.ll (scan_open): Takes scan_trace_p as + argument. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1033 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-12 Akim Demaille + + 2003-09-12 Akim Demaille + + Use `/// ...' instead of `/** ... */'. + + * src/ast/arrayexp.hh, src/ast/default-visitor.hh, + * src/ast/seqexp.hh, src/ast/subscriptvar.hh, + * src/codegen/codegen.hh, src/codegen/ia32/gas-assembly.hh, + * src/codegen/mips/spim-assembly.hh, src/escapes/escapes-tasks.hh, + * src/regalloc/color.hh: Comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1032 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-12 Akim Demaille + + 2003-09-12 Akim Demaille + + * src/ast/libast.cc, src/ast/libast.hh (the_program): Move to... + * src/ast/ast-tasks.cc, src/ast/ast-tasks.hh: here. + * src/ast/libast.hh (escapes_sl_display_p, escapes_tags_display_p) + (escapes_sufficient_check_p, escapes_necessary_check_p): Remove. + * src/escapes/escapes-tasks.cc: Reorder, comment. + * src/escapes/escapes-tasks.hh: Likewise.. + * src/parse/parsetiger.yy (the_program): New. + + * src/misc/timer.cc (unistd.h): Include to provide sysconf. + + * src/overload/overload-tasks.cc, src/parse/parse-tasks.cc + * src/parse/parsetiger.yy, src/translate/translate-tasks.cc + * src/type/type-tasks.cc: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1031 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-11 Akim Demaille + + 2003-09-11 Akim Demaille + + * src/regalloc/color.cc, src/type/type-env.cc: Remove trailing + comments. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1030 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-11 Akim Demaille + + Fix ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1029 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-11 Akim Demaille + + 2003-09-11 Akim Demaille + + Use `/// ...' instead of `/** brief ... */'. + + * src/common.hh, src/tc.cc, src/assem/instr.hh, + * src/canon/canon.cc, src/canon/traces.cc, + * src/escapes/escapes-check-visitor.hh, src/escapes/libescapes.cc, + * src/liveness/interference-graph.hh, src/misc/set.hh, + * src/regalloc/color.hh, src/regalloc/test-regalloc.cc, + * src/task/task_register.hh, src/temp/label.hh, + * src/temp/temp-set.hh, src/temp/temp.hh, src/temp/temps.hh, + * src/translate/exp.hh: + perl -pi -e 's,/** ([^\].*) */$,/// $1,g' **/*.{hh,hxx,cc} + + * src/escapes/parentgraph-creator.hh: Fix the Doxygen header. + * src/frame/access.hxx: Likewise. + * src/translate/translation.cc: Ditto. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1028 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-11 Akim Demaille + + 2003-09-11 Akim Demaille + + * configure.ac: Automake 1.7.7 is out! + + Use `/// ...' instead of `/** brief ... */'. + + * src/common.hh, src/assem/fragment.hh, src/assem/layout.hh, + * src/assem/map-visitor.hh, src/assem/visitor.hh, + * src/ast/anydecs.hh, src/ast/arrayexp.hh, src/ast/arrayty.hh, + * src/ast/assignexp.hh, src/ast/ast-tasks.hh, src/ast/ast.hh, + * src/ast/breakexp.hh, src/ast/callexp.hh, src/ast/dec.hh, + * src/ast/decs.hh, src/ast/default-visitor.hh, src/ast/exp.hh, + * src/ast/field.hh, src/ast/fieldexp.hh, src/ast/fieldvar.hh, + * src/ast/forexp.hh, src/ast/functiondec.hh, src/ast/ifexp.hh, + * src/ast/intexp.hh, src/ast/letexp.hh, src/ast/libast.hh, + * src/ast/namety.hh, src/ast/nilexp.hh, src/ast/opexp.hh, + * src/ast/recordexp.hh, src/ast/recordty.hh, src/ast/seqexp.hh, + * src/ast/simplevar.hh, src/ast/stringexp.hh, + * src/ast/subscriptvar.hh, src/ast/ty.hh, src/ast/typedec.hh, + * src/ast/var.hh, src/ast/vardec.hh, src/ast/visitor.hh, + * src/ast/whileexp.hh, src/canon/traces.cc, src/codegen/assembly.hh, + * src/codegen/codegen-tasks.hh, src/codegen/codegen.hh, + * src/codegen/libcodegen.hh, src/codegen/ia32/codegen.cc, + * src/codegen/ia32/codegen.hh, src/codegen/ia32/gas-assembly.hh, + * src/codegen/ia32/gas-layout.hh, src/codegen/mips/codegen.cc, + * src/codegen/mips/codegen.hh, src/codegen/mips/spim-assembly.hh, + * src/codegen/mips/spim-layout.hh, src/escapes/callgraph-creator.hh, + * src/escapes/escapes-env.hh, src/escapes/escapes-tasks.hh, + * src/escapes/escapes-visitor.hh, src/escapes/libescapes.hh, + * src/escapes/parentgraph-creator.hh, src/frame/access.hh, + * src/frame/frame.cc, src/frame/frame.hh, + * src/liveness/interference-graph.hh, + * src/liveness/liveness-tasks.hh, + * src/overload/overfun-type-visitor.hh, + * src/overload/overload-tasks.hh, src/parse/libparse.hh, + * src/parse/parse-tasks.hh, src/parse/parse.hh, + * src/regalloc/color.hh, src/regalloc/libregalloc.hh, + * src/regalloc/regallocator.hh, src/symbol/symbol.hh, + * src/target/cpu.hh, src/target/ia32-cpu.hh, + * src/target/ia32-target.hh, src/target/mips-cpu.cc, + * src/target/mips-cpu.hh, src/target/mips-target.hh, + * src/target/target-tasks.hh, src/target/target.hh, + * src/task/task-tasks.hh, src/task/task.cc, src/task/task.hh, + * src/task/task_register.cc, src/task/task_register.hh, + * src/type/type-entry.hh, src/type/type-env.hh, + * src/type/type-tasks.hh, src/type/types.hh, src/type/types.cc: + perl -pi -e 's,/** brief (.*) */$,/// $1,g'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1027 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-10 Akim Demaille + + * src/misc/contract.hh (postconditio): Rename as... (postcondition): this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1026 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-10 Akim Demaille + + 2003-09-10 Akim Demaille + + * src/tc.cc, src/assem/fragment.cc, src/assem/fragment.hh, + * src/assem/layout.hh, src/assem/libassem.cc, src/ast/arrayexp.hh, + * src/ast/breakexp.hh, src/ast/callexp.hh, src/ast/field.hh, + * src/ast/fieldexp.hh, src/ast/forexp.hh, src/ast/functiondec.hh, + * src/ast/ifexp.hh, src/ast/letexp.hh, src/ast/recordty.hh, + * src/ast/seqexp.hh, src/ast/subscriptvar.hh, src/ast/test-ast.cc, + * src/ast/typedec.hh, src/ast/vardec.hh, src/ast/whileexp.hh, + * src/ast/arrayexp.hxx, src/ast/anydecs.hxx, src/ast/callexp.cc, + * src/ast/callexp.hxx, src/ast/print-visitor.cc, + * src/ast/default-visitor.hxx, src/codegen/ia32/codegen.cc, + * src/codegen/ia32/gas-assembly.cc, + * src/codegen/ia32/gas-assembly.hh, + * src/codegen/mips/spim-assembly.hh, + * src/codegen/mips/spim-layout.cc, src/codegen/mips/test-rw_prg.cc, + * src/cppgen/includes/arrayty.hh, src/cppgen/includes/binop.hh, + * src/cppgen/includes/builtin.hh, src/cppgen/includes/control.hh, + * src/cppgen/includes/env.hh, src/cppgen/includes/explist.hh, + * src/cppgen/includes/function.hh, src/cppgen/includes/letinend.hh, + * src/cppgen/includes/list.hh, src/cppgen/includes/lvalue.hh, + * src/cppgen/includes/macro.hh, src/cppgen/includes/recordty.hh, + * src/cppgen/includes/stack.hh, src/cppgen/includes/type.hh, + * src/escapes/callgraph-creator.cc, + * src/escapes/callgraph-creator.hh, src/escapes/escapes-env.hh, + * src/escapes/escapes-tasks.cc, src/escapes/escapes-visitor.hh, + * src/escapes/fundecgraph.hh, src/escapes/fundecgraph.hxx, + * src/escapes/libescapes.cc, src/escapes/libescapes.hh, + * src/escapes/parentgraph-creator.cc, + * src/escapes/parentgraph-creator.hh, src/frame/frame.cc, + * src/frame/frame.hh, src/graph/handler.hh, src/graph/iterator.hh, + * src/graph/iterator.hxx, src/graph/test-graph.cc, + * src/misc/contract.hh, src/misc/escape.hh, src/misc/timer.cc, + * src/misc/timer.hh, src/misc/test-deref.cc, src/misc/escape.hxx, + * src/misc/escape.cc, src/misc/test-escape.cc, src/misc/deref.cc, + * src/misc/contract.cc, src/misc/deref.hxx, + * src/regalloc/libregalloc.cc, src/symbol/symbol.hh, + * src/symbol/symbol.hxx, src/symbol/table.hxx, + * src/target/ia32-target.hh, src/target/mips-target.hh, + * src/target/target-tasks.cc, src/target/target.hh, + * src/task/task.cc, src/task/task.hh, src/task/task_register.cc, + * src/task/task_register.hh, src/temp/tempmap.hh, + * src/temp/tempmap.cc, src/translate/exp.hh, src/tree/binop.hh, + * src/tree/eseq.hh, src/tree/exp.hh, src/tree/jump.hh, + * src/tree/move.hh, src/tree/node.hh, src/tree/node.cc, + * src/tree/mem.hxx, src/tree/iterator.hxx, src/tree/binop.hxx, + * src/tree/sxp.hxx, src/tree/move.hxx, src/tree/jump.hxx, + * src/tree/eseq.hxx, src/type/type-entry.hh, + * src/type/type-visitor.hh, src/type/types.hh, src/type/types.cc, + * src/type/types.hxx, src/type/type-env.cc, src/type/type-entry.hxx, + * src/type/type-visitor.cc, src/escapes/escapes-visitor.cc, + * src/escapes/escapes-env.hxx, src/frame/access.hxx, + * src/translate/translation.cc, src/translate/fragment.cc, + * src/translate/translate-visitor.cc, src/assem/fragment.hxx, + * src/assem/layout.cc, src/misc/test-ref.cc, src/misc/ref.hxx, + * src/misc/ref.hh, src/ast/arrayexp.hh: There is a space before + parentheses for functions. + * src/misc/timer.hh: Adjust Doxygen directive style. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1025 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-09 Raphaël Poss + + prcs: Producing diffs from 0.1001 to 0.1001(w). Index: ChangeLog from Raphaël Poss + + * src/type/type-visitor.cc: Fix bug in printing the error message + for invalid ArrayExp. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1024 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-09 Akim Demaille + + 2003-09-09 Akim Demaille + + * src/canon/canon-tasks.cc: Use dynamic_cast on reference where + better than pointers. + * src/canon/canon.cc: Likewise. + * src/codegen/ia32/codegen.cc: Likewise. + (DOWN_CAST): Remove. + * src/codegen/mips/codegen.cc: Ditto. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1023 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-09 Akim Demaille + + 2003-09-09 Akim Demaille + + * tests/good/many-functions.tig: New. + From Cédric Bail. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1022 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-05 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/misc/escape.hh, src/misc/escape.hxx, src/misc/escape.cc, + * src/misc/deref.hh, src/misc/deref.hxx, src/misc/deref.cc: + Beautify. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1021 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-05 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * AUTHORS: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1020 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-05 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * AUTHORS: Update. + * src/escapes/escapes-visitor.hh, src/escapes/escapes-visitor.cc: + Document and simplify escaping static link computation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1019 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-05 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/ast/print-visitor.cc (ast): Use accept () more often for NameTy. + + * src/type/type-visitor.hh (type): Remove check_type_exists (). + * src/type/type-visitor.cc: Update accordingly. + + * NEWS: Update. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1018 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-05 Raphaël Poss + + prcs: Producing diffs from 0.996 to 0.996(w). Index: ChangeLog from Raphaël Poss * src/graph/graph.hxx (graph): Typo fix. * src/target/ia32-cpu.cc (target): Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1017 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-05 Raphaël Poss + + prcs: Producing diffs from 0.995 to 0.995(w). Index: ChangeLog from Raphaël Poss * src/misc/contract.hh: Typo fix. * src/misc/contract.cc (__Terminate): Use the arguments. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1016 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-05 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/misc/contract.hh, src/misc/contract.cc: Add new macros die() + and unreached(). + + * src/assem/instr.cc src/codegen/assembly.hh, + * src/codegen/ia32/codegen.cc, src/codegen/ia32/gas-assembly.cc, + * src/codegen/mips/codegen.cc, src/codegen/mips/spim-assembly.cc, + * src/cppgen/cppgen-visitor.hh, src/frame/Makefile.am, + * src/graph/graph.hxx, src/temp/tempmap.cc, src/tree/seq.cc, + * src/tree/eseq.cc, src/tree/call.cc, src/type/type-visitor.cc, + * src/translate/exp.cc, src/translate/translation.cc, + * src/translate/translate-visitor.cc, src/target/ia32-cpu.cc: Use + them. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1015 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-04 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/frame/Makefile.am: Distribute access.hxx. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1014 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-04 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/overload/overfun-type-visitor.cc + * src/overload/overfun-type-visitor.hxx: + Populate new files. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1013 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-03 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/temp/label.hh, src/temp/temp-set.hh, src/temp/temp.hh, * src/temp/tempmap.hh, src/temp/temps.hh, src/temp/temp.hxx, * src/temp/tempmap.cc, src/temp/tempmap.hxx: Use counted references instead of pointers. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1012 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-03 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/tree/binop.hh, src/tree/call.hh, src/tree/cjump.hh, * src/tree/const.hh, src/tree/eseq.hh, src/tree/exp.hh, * src/tree/iterator.hh, src/tree/jump.hh, src/tree/mem.hh, * src/tree/move.hh, src/tree/name.hh, src/tree/node.hh, * src/tree/seq.hh, src/tree/stm.hh, src/tree/sxp.hh, * src/tree/node.cc, src/tree/node.hxx, src/tree/mem.hxx, * src/tree/iterator.hxx, src/tree/cjump.hxx, src/tree/binop.hxx, * src/tree/eseq.cc, src/tree/call.cc, src/tree/sxp.hxx, * src/tree/seq.hxx, src/tree/move.hxx, src/tree/jump.hxx, * src/tree/eseq.hxx: Use counted references instead of pointers for inter-node references. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1011 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Make a new branch. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/tree_cref@1010 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-03 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/misc/ref.hh, src/misc/ref.hxx: Add cast() method. Add missing copy constructor and assignment operators. Add missing difference operators. Fix operator-> (). + + * src/misc/test-ref.cc: Update accordingly. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1009 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-03 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/misc/ref.hh, src/misc/ref.hxx: New class for counted references. * src/misc/test-ref.cc: Test code for counted references. + + * src/misc/Makefile.am: Mention the new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1008 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-03 Raphaël Poss + + Fix ChangeLog entries. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1007 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-03 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/ast/arrayexp.hh, src/ast/arrayexp.hxx, src/ast/print-visitor.cc, src/ast/default-visitor.hxx, src/cppgen/cppgen-visitor.hh, src/parse/parsetiger.yy, src/type/type-visitor.cc: Use NameTy instead of Symbol for naming base type of ArrayExp. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1006 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-03 Raphaël Poss + + 2003-09-03 Raphaël Poss + + * TODO: Update according to last changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1005 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-02 Raphaël Poss + + 2003-09-03 Raphaël Poss + + * src/cppgen/cppgen-visitor.hh: Simplify yet more as allowed by + previous change. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1004 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-02 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/ast/arrayty.hh, src/ast/field.hh, src/ast/recordexp.hh, src/ast/arrayty.hxx, src/ast/print-visitor.cc, src/ast/default-visitor.hxx, src/cppgen/cppgen-visitor.hh, src/parse/parsetiger.yy, src/type/type-visitor.hh, src/type/type-visitor.cc: Use NameTy instead of Symbol for naming types in RecordExp, ArrayTy and Field. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1003 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-02 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/translate/exp.hxx, src/translate/level.hxx: Fix preprocessor tags. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1002 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-02 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/cppgen/cppgen-visitor.hh, src/cppgen/includes/arrayty.hh, * src/cppgen/includes/binop.hh, src/cppgen/includes/builtin.hh, * src/cppgen/includes/control.hh, src/cppgen/includes/dec.hh, * src/cppgen/includes/env.hh, src/cppgen/includes/explist.hh, * src/cppgen/includes/function.hh, src/cppgen/includes/letinend.hh, * src/cppgen/includes/list.hh, src/cppgen/includes/lvalue.hh, * src/cppgen/includes/macro.hh, src/cppgen/includes/recordty.hh, * src/cppgen/includes/type.hh, src/escapes/escapes-env.hh, * src/graph/graph.hh, src/graph/graph.hxx, src/graph/handler.hh, * src/graph/handler.hxx, src/graph/iterator.hh, * src/graph/iterator.hxx, src/liveness/flowgraph.hh, * src/misc/has.hh, src/misc/set.hh, * src/overload/overfun-type-visitor.hh, src/symbol/table.hh: Unify template syntax. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1001 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-02 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/overload/overfun-type-visitor.hh: Move inline methods and template implementations to... * src/overload/overfun-type-visitor.hxx: ... this new file. + + * src/overload/overfun-type-visitor.hh: Move implementations to... + * src/overload/overfun-type-visitor.cc: ... this new file. + + * src/overload/Makefile.am: Mention new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1000 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-02 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/target/cpu.hh: Move more implementations to ... * src/target/cpu.cc: ... this file. + + * src/target/mips-cpu.hh, src/target/mips-cpu.cc: Likewise. + + * src/target/ia32-cpu.hh, src/target/ia32-cpu.cc: Likewise. + + * src/target/Makefile.am: Mention new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@999 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-02 Raphaël Poss + + ndex: ChangeLog from Raphaël Poss * src/regalloc/regallocator.hh, src/regalloc/color.hh: Move implementations to... * src/regalloc/regallocator.cc, src/regalloc/color.cc: ... these new files. + + * src/regalloc/Makefile.am: Mention new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@998 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-02 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/liveness/flowgraph.hh: Move implementations to... * src/liveness/flowgraph.hxx: ... this new file. + + * src/liveness/Makefile.am: Mention new file. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@997 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/assem/visitor.hh: Move destructor to... + * src/assem/fragment.cc: ... this file. + + * src/assem/oper.hh, src/assem/label.hh: Move implementations to... + * src/assem/oper.cc, src/assem/label.cc: ... these new files. + + * src/assem/instr.hh: Move implementation of ~Instr to... + * src/assem/instr.cc: ... this file. + + * src/assem/fragment.hh, src/assem/move.hh, + * src/assem/map-visitor.hh, src/assem/layout.hh: Move inline + methods to... + + * src/assem/fragment.hxx, src/assem/move.hxx, + * src/assem/map-visitor.hxx, src/assem/layout.hxx: ... these new + files. + + * src/assem/fragment.hh, src/assem/move.hh, + * src/assem/map-visitor.hh, src/assem/layout.hh: Move + implementations to... + + * src/assem/fragment.cc, src/assem/move.cc, + * src/assem/map-visitor.cc, src/assem/layout.cc: ... these new + files. + + * src/assem/Makefile.am: Mention new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@996 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/canon/basic-block.hh: Move inline methods to... * src/canon/basic-block.hxx: ... this new file. * src/canon/basic-block.hh: Move implementation to... * src/canon/basic-block.cc: ... this new file. + + * src/canon/Makefile.am: Mention new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@995 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/translate/access.hh, src/translate/exp.hh, * src/translate/fragment.hh, sec/level/level.hh, * src/level/level-env.hh: Move inline methods to... + + * src/translate/access.hxx, src/translate/exp.hxx, + * src/translate/fragment.hxx, sec/level/level.hxx, + * src/level/level-env.hxx: ... these new files. + + * src/translate/access.hh, src/translate/exp.hh, + * src/translate/translation.hh, src/translate/fragment.hh, + * src/translate/level.hh, src/translate/level-env.hh, + * src/translate/translate-visitor.hh: Move implementations to... + + * src/translate/access.cc, src/translate/exp.cc, + * src/translate/translation.cc, src/translate/fragment.cc, + * src/translate/level.cc, src/translate/level-env.cc, + * src/translate/translate-visitor.cc: ... these new files. + + * src/translate/Makefile.am: Mention new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@994 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/frame/access.hh: Move inline methods to... * src/frame/access.hxx: ... this new file. * src/frame/access.hh: Move more implementations to... * src/frame/access.cc: ... this file. + + * src/frame/Makefile.am: Mention new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@993 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/assem/fragment.cc, src/assem/fragment.hh, * src/assem/instr.cc, src/assem/instr.hh, src/assem/layout.hh, * src/assem/libassem.cc, src/assem/move.hh, src/ast/fieldvar.hh, * src/ast/functiondec.hh, src/ast/ifexp.hh, src/ast/letexp.hh, * src/ast/opexp.hh, src/ast/print-visitor.hh, src/ast/recordexp.hh, * src/ast/recordty.hh, src/ast/seqexp.hh, src/ast/callexp.hxx, * src/codegen/ia32/codegen.cc, src/codegen/mips/codegen.cc, * src/codegen/mips/test-rw_prg.cc, src/cppgen/cppgen-visitor.hh, * src/frame/frame.cc, src/graph/graph.hxx, * src/liveness/interference-graph.cc, src/liveness/liveness.cc, * src/overload/overfun-type-visitor.hh, src/parse/parse-tasks.cc, * src/regalloc/libregalloc.cc, src/translate/level-env.hh: Replace 'assert' by 'assertion', 'precondition' and 'invariant' where appropriate. Add missing include "misc/contract.hh" when needed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@992 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/assem/fragment.hh, + * src/cppgen/cppgen-visitor.hh, + * src/overload/overfun-type-visitor.hh, + * src/translate/exp.hh, + * src/translate/translate-visitor.hh, + * src/translate/translation.hh: Fix namespaces. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@991 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Raphaël Poss + + Project file cleanup. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@990 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/codegen/ia32/gas-layout.cc: Use correct x86 directive for null-terminated ascii strings. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@989 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/liveness/interference-graph.hh: Be sure to compare the content of temporaries, not their addresses. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@988 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/frame/frame.cc, src/frame/frame.hh, * src/translate/level.hh: Do not use static links when they are not needed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@987 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * tests/tc-check.in: Test escaping static link computation. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@986 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/liveness/flowgraph.hh, + * src/liveness/interference-graph.cc, + * src/liveness/liveness.cc, + * src/regalloc/color.hh, + * src/regalloc/libregalloc.cc: More detailed task names. + + * src/misc/timer.hh, src/misc/timer.hxx, + * src/misc/timer.cc: Compute and use _clocks_per_sec. Compute + cumulated times. Dump cumulated times. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@985 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/escapes/escapes-visitor.hh, src/escapes/escapes-visitor.cc, * src/escapes/libescapes.hh, src/escapes/libescapes.cc: Implement static link escaping. * src/escapes/escapes-tasks.hh, src/escapes/escapes-tasks.cc: Declare and define escapes-sl-compute and escapes-sl-display tasks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@984 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/escapes/parentgraph-creator.hh, + * src/escapes/parentgraph-creator.cc: + Add ParentGraph creator. + * src/escapes/libescapes.hh, src/escapes/libescapes.cc: + Grant access to ParentGraph creation. + * src/escapes/escapes-tasks.hh, src/escapes/escapes-tasks.cc: + Declare and define parentgraph-build and parentgraph-dump tasks. + * src/escapes/Makefile.am: + Distribute new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@983 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/escapes/fundecgraph.hxx: Typo fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@982 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/escapes/fundecgraph.hh: Add missing include. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@981 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/escapes/callgraph-creator.hh: Do not include .hxx. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@980 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/ast/functiondec.hh: Add a print operator. + * src/escapes/callgraph.hh: Move to... + * src/escapes/fundecgraph.hh: ... this new file. + * src/escapes/fundecgraph.hxx: Define inline methods of FundecGraph. + * src/escapes/callgraph-builder.cc: Move to... + * src/escapes/callgraph-creator.cc, ... this new file. + * src/escapes/callgraph-builder.hh: Move to... + * src/escapes/callgraph-creator.hh, ... this new file. + * src/escapes/callgraph-builder.hxx: Remove. + * src/escapes/Makefile.am: Propagate files renaming. + * src/escapes/libescapes.cc, src/escapes/libescapes.hh, + * src/escapes/escapes-tasks.cc: + Re-declare callgraph-dump and callgraph-build tasks. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@979 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/overload/overfun-type-visitor.hh: Add missing "ast::". + + * src/type/type-visitor.hh: Move implementations to... + * src/type/type-visitor.cc: ... this new file. + + * src/type/type-entry.hh: Move inline methods to... + * src/type/type-entry.hxx: ... this new file. + * src/type/type-entry.hh: Move implementations to... + * src/type/type-entry.cc: ... this new file. + + * src/type/Makefile.am: Mention new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@978 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/type/types.hh: Move inline methods to... * src/type/types.hxx: ... this new file. * src/type/types.hh: Move implementations to... * src/type/types.cc: ... this new file. + + * src/type/Makefile.am: Mention new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@977 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-09-01 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/doc.hh, src/ast/anydecs.hxx, src/tree/node.hxx, * src/tree/name.hxx, src/tree/cjump.hxx: Preprocessor tags tweaks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@976 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-31 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/ast/vardec.hh: Replace 'assert' by 'precondition'. Add + missing include of 'misc/contract.hh'. + + * src/escapes/callgraph-builder.hh, + * src/escapes/escapes-env.hh: Move inline methods to... + * src/escapes/callgraph-builder.hxx, + * src/escapes/escapes-env.hxx: ... these new files. + + * src/escapes/escapes-env.hh, + * src/escapes/callgraph-builder.hh, + * src/escapes/escapes-visitor.hh, + * src/escapes/escapes-check-visitor.hh: Move implementation to... + * src/escapes/escapes-env.cc, + * src/escapes/callgraph-builder.cc, + * src/escapes/escapes-visitor.cc, + * src/escapes/escapes-check-visitor.cc: ... these new files. + + * src/escapes/Makefile.am: Mention new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@975 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-31 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/ast/default-visitor.hh, * src/ast/visitor.hh: Typo rearrangements. + + * src/ast/default-visitor.hh: Move implementation to... + * src/ast/default-visitor.hxx: ... this new file. + + * src/ast/print-visitor.hh: Move implementation to... + * src/ast/print-visitor.cc: ... this new file. + + * src/ast/Makefile.am: Mention new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@974 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-31 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/canon/basic-block.hh, src/canon/canon.cc, + * src/canon/traces.cc, src/tree/call.hh, src/tree/cjump.hh, + * src/tree/eseq.hh, src/tree/iterator.hh, src/tree/jump.hh, + * src/tree/node.hh, src/tree/seq.hh: Replace 'assert' by 'assertion' + and 'precondition'. + + * src/tree/node.hh, src/tree/cjump.hh, src/tree/label.hh, + * src/tree/name.hh, src/tree/binop.hh, src/tree/const.hh, + * src/tree/mem.hh, src/tree/sxp.hh, src/tree/eseq.hh, + * src/tree/jump.hh, src/tree/move.hh, src/tree/seq.hh, + * src/tree/temp.hh, src/tree/iterator.hh: Move inline methods to... + + * src/tree/node.hxx, src/tree/cjump.hxx, src/tree/label.hxx, + * src/tree/name.hxx, src/tree/binop.hxx, src/tree/const.hxx, + * src/tree/mem.hxx, src/tree/sxp.hxx, src/tree/eseq.hxx, + * src/tree/jump.hxx, src/tree/move.hxx, src/tree/seq.hxx, + * src/tree/temp.hxx, src/tree/iterator.hxx: ... these new files. + + * src/tree/node.hh, src/tree/cjump.hh, src/tree/label.hh, + * src/tree/name.hh, src/tree/binop.hh, src/tree/const.hh, + * src/tree/mem.hh, src/tree/sxp.hh, src/tree/eseq.hh, + * src/tree/jump.hh, src/tree/move.hh, src/tree/seq.hh, + * src/tree/temp.hh, src/tree/call.hh: Move implementations to... + + * src/tree/node.cc, src/tree/cjump.cc, src/tree/label.cc, + * src/tree/name.cc, src/tree/binop.cc, src/tree/const.cc, + * src/tree/mem.cc, src/tree/sxp.cc, src/tree/eseq.cc, + * src/tree/jump.cc, src/tree/move.cc, src/tree/seq.cc, + * src/tree/temp.cc, src/tree/call.cc: ... these new files. + + * src/tree/expstm.cc: New. + + * src/tree/Makefile.am: Create new target 'libtree.a'. Mention new + files. + + * src/Makefile.am (tc_LDADD), + * src/codegen/mips/Makefile.am (test_rw_prg_LDADD): Mention + missing dependency to tree/libtree.a. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@973 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-26 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/Makefile.am: Re-order libraries. * src/ast/callexp.cc, * src/ast/breakexp.cc, * src/ast/ast.cc, * src/ast/assignexp.cc, * src/ast/arrayty.cc, * src/ast/arrayexp.cc, * src/ast/callexp.hxx: Actually add the files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@972 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-26 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/ast/callexp.hh: Move inline methods to... * src/ast/callexp.hxx: ... this new file. * src/ast/callexp.hh: Move static implementations to... * src/ast/callexp.cc: ... this new file. + + * src/ast/breakexp.hh: Move static implementations to... + * src/ast/breakexp.cc: ... this new file. + + * src/ast/assignexp.hh: Replace 'assertion' by 'precondition'. + + * src/ast/assignexp.hh: Move inline methods to... + * src/ast/assignexp.hxx: ... this new file. + * src/ast/assignexp.hh: Move static implementations to... + * src/ast/assignexp.cc: ... this new file. + + * src/ast/Makefile.am: Mention new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@971 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-26 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/ast/ast.hh: Move inline methods to... * src/ast/ast.hxx: ... this new file. * src/ast/ast.hh: Move static implementations to... * src/ast/ast.cc: ... this new file. + + * src/ast/decs.hh: Move inline methods to... + * src/ast/decs.hxx: ... this new file. + + * src/ast/anydecs.hh: Move implementation to... + * src/ast/anydecs.hxx: ... this new file. + + * src/ast/arrayexp.hh: Move inline methods to... + * src/ast/arrayexp.hxx: ... this new file. + * src/ast/arrayexp.hh: Move static implementations to... + * src/ast/arrayexp.cc: ... this new file. + + * src/ast/arrayty.hh: Move inline methods to... + * src/ast/arrayty.hxx: ... this new file. + * src/ast/arrayty.hh: Move static implementations to... + * src/ast/arrayty.cc: ... this new file. + + * src/ast/Makefile.am: Mention new files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@970 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-26 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * reheader.pl: Add. + + * src/common.hh, src/doc.hh, src/assem/instr.hh, src/assem/label.hh, + * src/assem/move.hh, src/assem/oper.hh, src/ast/alldec.hh, + * src/ast/allexp.hh, src/ast/allty.hh, src/ast/ast-tasks.hh, + * src/ast/default-visitor.hh, src/ast/intexp.hh, src/ast/libast.hh, + * src/ast/location.hh, src/ast/position.hh, + * src/canon/basic-block.hh, src/canon/canon-tasks.hh, + * src/canon/libcanon.hh, src/codegen/codegen-tasks.hh, + * src/cppgen/cppgen-tasks.hh, src/cppgen/cppgen-visitor.hh, + * src/cppgen/libcppgen.hh, src/cppgen/includes/arrayty.hh, + * src/cppgen/includes/binop.hh, src/cppgen/includes/builtin.hh, + * src/cppgen/includes/common.hh, src/cppgen/includes/control.hh, + * src/cppgen/includes/cppgen_all.hh, src/cppgen/includes/dec.hh, + * src/cppgen/includes/env.hh, src/cppgen/includes/explist.hh, + * src/cppgen/includes/function.hh, src/cppgen/includes/letinend.hh, + * src/cppgen/includes/list.hh, src/cppgen/includes/lvalue.hh, + * src/cppgen/includes/macro.hh, src/cppgen/includes/recordty.hh, + * src/cppgen/includes/stack.hh, src/cppgen/includes/type.hh, + * src/escapes/callgraph-builder.hh, src/escapes/escapes-env.hh, + * src/escapes/escapes-tasks.hh, src/escapes/escapes-visitor.hh, + * src/escapes/libescapes.hh, src/frame/access.hh, + * src/graph/graph.hh, src/graph/graph.hxx, + * src/liveness/liveness-tasks.hh, src/misc/contract.hh, + * src/misc/escape.hh, src/misc/set.hh, src/misc/timer.hh, + * src/overload/overload-tasks.hh, src/parse/libparse.hh, + * src/parse/parse-tasks.hh, src/parse/parse.hh, + * src/regalloc/libregalloc.hh, src/regalloc/regalloc-tasks.hh, + * src/symbol/table.hh, src/target/target-tasks.hh, + * src/task/task-tasks.hh, src/task/task.hh, + * src/task/task_register.hh, src/temp/label.hh, src/temp/libtemp.hh, + * src/temp/temp-tasks.hh, src/temp/tempmap.hh, + * src/translate/access.hh, src/translate/exp.hh, + * src/translate/fragment.hh, src/translate/level-entry.hh, + * src/translate/level-env.hh, src/translate/level.hh, + * src/translate/translate-visitor.hh, src/translate/translation.hh, + * src/tree/all.hh, src/tree/binop.hh, src/tree/call.hh, + * src/tree/cjump.hh, src/tree/const.hh, src/tree/eseq.hh, + * src/tree/exp.hh, src/tree/iterator.hh, src/tree/jump.hh, + * src/tree/label.hh, src/tree/mem.hh, src/tree/move.hh, + * src/tree/name.hh, src/tree/node.hh, src/tree/seq.hh, + * src/tree/stm.hh, src/tree/sxp.hh, src/tree/temp.hh, + * src/type/type-env.hh, src/type/type-tasks.hh, src/type/types.hh, + * src/temp/tempmap.hxx, src/misc/timer.hxx, src/symbol/table.hxx, + * src/task/task.hxx: Cleanup preprocessor tags. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@969 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@968 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@967 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-26 Akim Demaille + + * TODO: More on Temp and Label. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@966 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-26 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/task/task-tasks.cc: Typo fix. + + * src/task/task_register.hh: Move private constructor + implementation to... + * src/task/task_register.cc: ... this file. + + * src/task/task.hh: Move inline methods to... + * src/task/task.hxx: ... this new file. + * src/task/task.hh: Move static code to... + * src/task/task.cc: ... this file. + + * src/task/Makefile.am: Mention task.hxx. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/cleanup@965 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-26 Akim Demaille + + 2003-08-26 Akim Demaille + + * src/assem/fragment.cc, src/ast/print-visitor.hh, + * src/codegen/ia32/gas-layout.cc, src/codegen/mips/spim-layout.cc, + * src/codegen/mips/test-rw_prg.cc, src/cppgen/cppgen-visitor.hh, + * src/graph/graph.hxx, src/misc/deref.hh, src/misc/escape.hh, + * src/misc/timer.cc, src/misc/timer.hh, src/parse/scantiger.ll, + * src/symbol/symbol.hh, src/symbol/symbol.hxx, src/symbol/table.hh, + * src/symbol/test-symbol.cc, src/task/task-tasks.cc, + * src/task/task-tasks.hh, src/temp/label.cc, src/temp/label.hh, + * src/temp/libtemp.cc, src/temp/libtemp.hh, src/temp/temp-set.hh, + * src/temp/temp-tasks.cc, src/temp/temp-tasks.hh, src/temp/temp.hh, + * src/temp/tempmap.hh, src/temp/temps.cc, src/temp/temps.hh, + * src/temp/test-temp.cc, src/translate/fragment.hh, + * src/type/test-type.cc, src/misc/test-timer.cc, + * src/misc/test-deref.cc, src/misc/escape.hxx, src/misc/escape.cc, + * src/misc/test-escape.cc, src/temp/temp.cc, src/temp/temp.hxx, + * src/temp/tempmap.cc, src/temp/tempmap.hxx, src/temp/temp-set.cc, + * src/misc/deref.cc, src/misc/contract.cc, src/misc/timer.hxx, + * src/misc/deref.hxx, src/symbol/table.hxx: + sed -i -e '/^#.*include.*//s/[<>]/"/g' **/*.{cc,hh,hxx,yy,ll}. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@964 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-26 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/ast/print-visitor.hh, + * src/cppgen/cppgen-visitor.hh, + * src/misc/deref.hh, + * src/misc/escape.hh, + * src/misc/timer.hh, + * src/symbol/symbol.hh, + * src/symbol/table.hh, + * src/task/task-tasks.hh, + * src/temp/label.hh, + * src/temp/libtemp.hh, + * src/temp/temp-set.hh, + * src/temp/temp-tasks.hh, + * src/temp/temp.hh, + * src/temp/tempmap.hh, + * src/temp/temps.hh, + * src/translate/fragment.hh, + * src/graph/graph.hxx, + * src/misc/deref.hxx, + * src/misc/escape.hxx, + * src/misc/timer.hxx, + * src/symbol/symbol.hxx, + * src/symbol/table.hxx, + * src/temp/temp.hxx, + * src/temp/tempmap.hxx: Revert to legacy include policy. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/cleanup@963 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/cleanup@962 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-26 Akim Demaille + + 2003-08-26 Akim Demaille + + Merge the following clean up changes from Raphaël Poss. + + 2003-08-26 Raphaël Poss + + * src/symbol/table.hxx: Actually add file. + + 2003-08-25 Raphaël Poss + + * src/frame/frame.hh: Fix bug involving erroneous "inline" + specification. + + * src/task/task-tasks.cc: Change include policy. + * src/task/task-tasks.hh: Likewise. + + 2003-08-25 Raphaël Poss + + * src/Makefile.am (SUBDIRS): Reorder. + + * src/ast/Makefile.am: Fix library paths. + * src/type/Makefile.am, src/graph/Makefile.am, + * src/codegen/mips/Makefile.am: Likewise. + + * src/codegen/ia32/gas-layout.cc: Typo fix. + * src/assem/instr.hh: Add missing include. + + 2003-08-25 Raphaël Poss + + * src/temp/test-temp.cc, src/temp/tempmap.hh, src/temp/temps.hh, + * src/temp/temps.cc, src/temp/temp.hh, src/temp/temp-tasks.hh, + * src/temp/temp-tasks.cc, src/temp/temp-set.hh, src/temp/libtemp.cc, + * src/temp/libtemp.hh, src/temp/label.hh, src/temp/label.cc: Change + include policy. + + * src/temp/temp.hh: Move inline methods to... + * src/temp/temp.hxx: ... this new file. + * src/temp/temp.hh: Move static implementation to... + * src/temp/temp.cc: ... this new file. + + * src/temp/tempmap.hh: Move inline methods to... + * src/temp/tempmap.hxx: ... this new file. + * src/temp/tempmap.hh: Move static implementation to... + * src/temp/tempmap.cc: ... this new file. + + * src/temp/temp-set.hh: Move static implementation to... + * src/temp/temp-set.cc: ... this new file. + + * src/temp/Makefile.am: Mention temp-set.cc, tempmap.cc, + tempmap.hxx, temp.cc and temp.hxx. + + * src/misc/contract.cc: Actually create the file. + * src/misc/timer.hxx: Likewise. + * src/misc/deref.hxx: Likewise. + + 2003-08-25 Raphaël Poss + + * src/translate/fragment.hh, src/parse/scantiger.ll, + * src/cppgen/cppgen-visitor.hh, src/codegen/mips/spim-layout.cc, + * src/ast/print-visitor.hh, src/codegen/ia32/gas-layout.cc, + * src/assem/fragment.cc: Update for new "escape" mechanism. + + * src/codegen/ia32/gas-layout.cc (codegen): Fix potential bug due + to faulty ".asciiz" spelling. + + 2003-08-25 Raphaël Poss + + * src/misc/deref.hh, src/misc/deref.hxx: Add 'const' where appropriate. + + * src/misc/escape.hh: Change the escape system to resemble + "Deref". + + * src/misc/escape.hh: Move inline methods to... + * src/misc/escape.hxx: ... this new file. + * src/misc/escape.hh: Move static code to... + * src/misc/escape.cc: ... this new file. + * src/misc/test-escape.cc: Add. + * src/misc/Makefile.am: Mention test-escape.cc, escape.cc and + escape.hxx. + + * src/misc/deref.hh, src/misc/deref.hxx, src/misc/escape.hh, + * src/misc/escape.hxx: Replace 'class' by 'typename'. + + 2003-08-25 Raphaël Poss + + * src/codegen/mips/test-rw_prg.cc: "deref" update. + * src/graph/graph.hxx: Likewise. + + 2003-08-25 Raphaël Poss + + * src/misc/deref.hh: Remove ugly global 'deref' macro. Replace + 'assertion' calls by 'precondition'. + ! + * src/misc/deref.hh: Move inline methods to... + * src/misc/deref.hxx: ... this new file. + * src/misc/deref.hh: Move static code to... + * src/misc/deref.cc: ... this new file. + * src/misc/test-deref.cc: Add. + * src/misc/Makefile.am: Mention test-deref.c, deref.cc and + deref.hxx. + + * src/misc/set.hh: Replace 'class' by 'typename'. Move operators + to the appropriate namespace since Koenig lookup now works. + + 2003-08-25 Raphaël Poss + + * src/misc/timer.hh: Move inline methods to... + * src/misc/timer.hxx: ... this new file. + + * src/misc/timer.cc: Move test code to... + * src/misc/test-timer.cc: ... this new file. + + * src/misc/Makefile.am: Mention test-timer.cc and timer.hxx. + + * src/misc/timer.hh, src/misc/timer.hxx, src/misc/timer.cc: Change + include policy. + + * src/misc/timer.cc, src/misc/timer.hxx: Replace assert() calls by + precondition(). + + 2003-08-25 Raphaël Poss + + * src/symbol/symbol.hh, + src/symbol/symbol.hxx: Simplify unicity mechanism. + + * src/symbol/table.hh: Move implementations to... + * src/symbol/table.hxx: ... this new file. + + * src/symbol/symbol.hh: Change include policy. + * src/symbol/symbol.hxx, src/symbol/table.hh, + * src/symbol/table.hxx, src/misc/contract.hh: Likewise. + + * src/misc/contract.cc: Add. + * src/misc/Makefile.am (libmisc_a_SOURCES): Mention contract.cc. + * src/misc/Makefile.am: Add INCLUDES. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@961 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@960 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-26 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/symbol/table.hxx: Actually add file. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/cleanup@959 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-25 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/frame/frame.hh: Fix bug involving erroneous "inline" specification. + + * src/task/task-tasks.cc: Change include policy. + * src/task/task-tasks.hh: Likewise. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/cleanup@958 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-25 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/Makefile.am (SUBDIRS): Reorder. + + * src/ast/Makefile.am: Fix library paths. + * src/type/Makefile.am, + src/graph/Makefile.am, + src/codegen/mips/Makefile.am: Likewise. + + * src/codegen/ia32/gas-layout.cc: Typo fix. + * src/assem/instr.hh: Add missing include. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/cleanup@957 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-25 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/temp/test-temp.cc, src/temp/tempmap.hh, src/temp/temps.hh, src/temp/temps.cc, src/temp/temp.hh, src/temp/temp-tasks.hh, src/temp/temp-tasks.cc, src/temp/temp-set.hh, src/temp/libtemp.cc, src/temp/libtemp.hh, src/temp/label.hh, src/temp/label.cc: Change include policy. + + * src/temp/temp.hh: Move inline methods to... + * src/temp/temp.hxx: ... this new file. + * src/temp/temp.hh: Move static implementation to... + * src/temp/temp.cc: ... this new file. + + * src/temp/tempmap.hh: Move inline methods to... + * src/temp/tempmap.hxx: ... this new file. + * src/temp/tempmap.hh: Move static implementation to... + * src/temp/tempmap.cc: ... this new file. + + * src/temp/temp-set.hh: Move static implementation to... + * src/temp/temp-set.cc: ... this new file. + + * src/temp/Makefile.am: Mention temp-set.cc, tempmap.cc, + tempmap.hxx, temp.cc and temp.hxx. + + * src/misc/contract.cc: Actually create the file. + * src/misc/timer.hxx: Likewise. + * src/misc/deref.hxx: Likewise. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/cleanup@956 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-25 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/translate/fragment.hh, src/parse/scantiger.ll, src/cppgen/cppgen-visitor.hh, src/codegen/mips/spim-layout.cc, src/ast/print-visitor.hh, src/codegen/ia32/gas-layout.cc, src/assem/fragment.cc: Update for new "escape" mechanism. + + * src/codegen/ia32/gas-layout.cc (codegen): Fix potential bug due + to faulty ".asciiz" spelling. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/cleanup@955 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-25 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/misc/deref.hh, src/misc/deref.hxx: Add 'const' where appropriate. + + * src/misc/escape.hh: Change the escape system to resemble + "Deref". + + * src/misc/escape.hh: Move inline methods to... + * src/misc/escape.hxx: ... this new file. + * src/misc/escape.hh: Move static code to... + * src/misc/escape.cc: ... this new file. + * src/misc/test-escape.cc: Add. + * src/misc/Makefile.am: Mention test-escape.cc, escape.cc and + escape.hxx. + + * src/misc/deref.hh, + src/misc/deref.hxx, + src/misc/escape.hh, + src/misc/escape.hxx: Replace 'class' by 'typename'. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/cleanup@954 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-25 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/codegen/mips/test-rw_prg.cc: "deref" update. * src/graph/graph.hxx: Likewise. + + +. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/cleanup@953 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-25 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/misc/deref.hh: Remove ugly global 'deref' macro. + + * src/misc/deref.hh: Move inline methods to... + * src/misc/deref.hxx: ... this new file. + * src/misc/deref.hh: Move static code to... + * src/misc/deref.cc: ... this new file. + * src/misc/test-deref.cc: Add. + * src/misc/Makefile.am: Mention test-deref.c, deref.cc and + deref.hxx. + + * src/misc/set.hh: Replace 'class' by 'typename'. Move operators + to the appropriate namespace since Koenig lookup now works. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/cleanup@952 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-25 Raphaël Poss + + Index: ChangeLog from Raphaël Poss * src/misc/timer.hh: Move inline methods to... * src/misc/timer.hxx: ... this new file. + + * src/misc/timer.cc: Move test code to... + * src/misc/test-timer.cc: ... this new file. + + * src/misc/Makefile.am: Mention test-timer.cc and timer.hxx. + + * src/misc/timer.hh, + src/misc/timer.hxx, + src/misc/timer.cc: Change include policy. + + * src/misc/timer.cc, + src/misc/timer.hxx: Replace assert() calls by precondition(). + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/cleanup@951 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-25 Raphaël Poss + + Index: ChangeLog from Raphaël Poss + + * src/symbol/symbol.hh, + src/symbol/symbol.hxx: Simplify unicity mechanism. + + * src/symbol/table.hh: Move implementations to... + * src/symbol/table.hxx: ... this new file. + + * src/symbol/symbol.hh: Change include policy. + * src/symbol/symbol.hxx, + src/symbol/table.hh, + src/symbol/table.hxx, + src/misc/contract.hh: Likewise. + + * src/misc/contract.cc: Add. + * src/misc/Makefile.am (libmisc_a_SOURCES): Mention contract.cc. + * src/misc/Makefile.am: Add INCLUDES. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/cleanup@950 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Make a new branch. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/branches/cleanup@949 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-22 Akim Demaille + + ChangeLog typo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@948 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-22 Akim Demaille + + 2003-08-22 Akim Demaille + + * src/canon/traces.cc, src/canon/canon.cc: Documentation changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@947 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-22 Benoßt Perrot + + Add callgraph build and dump tasks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@946 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-20 Akim Demaille + + 2003-08-20 Akim Demaille + + * src/codegen/mips/codegen.cc: Recognize "move (temp, const)" to + use li directly. This save a lot of useless work in our compiler + that used to introduce a temp for the li, and them a move for the + real destination. Needless moves, needless coalescing etc. etc. + Remove the $zero dedicated code, it seems useless, and + adds complexity to the code that _needs_ to depend on _cpu to be a + MipsCpu (to get $zero)... + (munchBinop): Handle right being a literal. + (munchCjump): New. + * src/codegen/assembly.hh (cjump_build): New for (Reg, Int) arguments. + * src/codegen/mips/codegen.hh: Adjust. + * src/codegen/mips/spim-assembly.cc (binop_inst, cjump_inst): New. + Adjust to support literal for binops and cjumps. + * src/codegen/mips/spim-assembly.hh: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@945 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-20 Akim Demaille + + * TODO: More. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@944 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-19 Akim Demaille + + * TODO: More. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@943 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-14 Benoßt Perrot + + Do not coalesce when coalesce_p is false. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@942 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-14 Akim Demaille + + 2003-08-14 Akim Demaille + + * tests/configure.ac: Require Havm 0.20. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@941 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-14 Benoßt Perrot + + Normalize runtime error messages. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@940 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-14 Akim Demaille + + 2003-08-14 Akim Demaille + + * tests/mk-Makefile-am: Ship the sta files. + * tests/good/chr-256.tig, tests/good/chr-minus-1.tig, + * tests/good/exit-51.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@939 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-14 Akim Demaille + + 2003-08-14 Akim Demaille + + * tests/tc-check.in (&check): New, eved from... + (&try_files): here. + (&env): Simplify invocations. + (cc, cxx): Log them, and spread their use. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@938 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-14 Akim Demaille + + 2003-08-14 Akim Demaille + + 2005-tc-9.2. + Version 0.61. + + * tests/configure.ac: Require Havm 0.19 and Mipsy 0.4. + * src/codegen/tiger-runtime.c: Express expectations, not + invalid situations. + * src/codegen/ia32/codegen.cc: Adjust student marks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@937 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-14 Akim Demaille + + 2003-08-14 Akim Demaille + + Be sure that distcheck runs the test suite! + + * configure.ac: Add the missing $srcdir to AUTHORS and tests/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@936 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-14 Akim Demaille + + 2003-08-14 Akim Demaille + + * tests/tc-check.in (&stages_extract): Don't use $stage before + checking that it is defined. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@935 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-14 Akim Demaille + + 2003-08-14 Akim Demaille + + * tests/tc-check.in (&log_version): New. + Factor the checking of tc, mipsy, and havm. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@934 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-14 Akim Demaille + + 2003-08-14 Akim Demaille + + * tests/tc-check.in (&stages_extract): Run as many tests as + possible. + (&grade_output): Use "defined" when checking whether $stage is + defined. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@933 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-13 Benoßt Perrot + + Compare expected and obtained exit codes in tc-check. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@932 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-13 Benoßt Perrot + + Exit when assertion fails at runtime. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@931 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-13 Benoßt Perrot + + Test substring limits. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@930 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-12 Akim Demaille + + 2003-08-12 Akim Demaille + + * tests/tc-check.in: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@929 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-12 Akim Demaille + + 2003-08-12 Akim Demaille + + * tests/tc-check.in: More changes to get correct summary including + when using stages numbered 100+. + (&cppgen_check_one, &ia32_check_one): Use return, not next, to + exit a routine. + Normalize error messages. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@928 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-12 Akim Demaille + + 2003-08-12 Akim Demaille + + * tests/tc-check.in (&stage_test): Properly label the additional + tests with a stage number. + Using $me in `die's. + (&grade_output): Be more robust by accepting wider forms of stage + names. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@927 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-12 Akim Demaille + + 2003-08-12 Akim Demaille + + * src/cppgen/cppgen-visitor.hh: Formatting changes. + Use 0, not NULL. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@926 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-12 Akim Demaille + + 2003-08-12 Akim Demaille + + * Makefile.am (studir): Move the default removed modules from here + to... + (2005): here, so that install-doc documents cppgen, ia32 etc. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@925 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-05 Benoßt Perrot + + from Benoßt Perrot * src/codegen/ia32/runtime.s: Respect new calling conventions (Pascal-like). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@924 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-05 Benoßt Perrot + + from Benoßt Perrot * tests/tc-check.in: Test ia32 assembly code generation. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@923 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-05 Benoßt Perrot + + * src/target/ia32-cpu.hh: Forbid use of inexistent return register. * src/codegen/ia32/gas-assembly.cc: Use two-address instructions efficiently. * src/codegen/ia32/codegen.cc: Normalize calling conventions. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@922 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-08-05 Benoßt Perrot + + from Benoßt Perrot + + * tests/good/big-exp.s: New (related to register allocation). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@921 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-29 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * tests/tc-check.in: Specify --unlimited-regs to mipsy + on T7 check. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@920 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-25 Akim Demaille + + * NEWS, TODO: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@919 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-24 Akim Demaille + + 2003-07-24 Akim Demaille + + * src/tree/all.hh, src/tree/binop.hh, src/tree/call.hh, + * src/tree/cjump.hh, src/tree/const.hh, src/tree/eseq.hh, + * src/tree/exp.hh, src/tree/iterator.hh, src/tree/jump.hh, + * src/tree/label.hh, src/tree/mem.hh, src/tree/move.hh, + * src/tree/name.hh, src/tree/node.hh, src/tree/seq.hh, + * src/tree/stm.hh, src/tree/sxp.hh, src/tree/temp.hh: Fix the + Doxygen documentation. + * src/doc.hh: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@918 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-24 Akim Demaille + + 2003-07-24 Akim Demaille + + 2005-tc-9.1. + + * src/codegen/mips/Makefile.am (test_rw_prg_LDADD): Adjust the + order of libraries, since now libframe depends upon libtarget. + * src/graph/test-graph.cc (consistency): Rename a var to avoid + name clashes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@917 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-24 Akim Demaille + + 2003-07-24 Akim Demaille + + * src/misc/escape.hh, src/misc/contract.hh, src/misc/deref.hh, + * src/ast/print-visitor.hh, src/tree/all.hh, src/tree/binop.hh, + * src/tree/call.hh, src/tree/cjump.hh, src/tree/const.hh, + * src/tree/eseq.hh, src/tree/exp.hh, src/tree/iterator.hh, + * src/tree/jump.hh, src/tree/label.hh, src/tree/mem.hh, + * src/tree/move.hh, src/tree/name.hh, src/tree/node.hh, + * src/tree/seq.hh, src/tree/stm.hh, src/tree/sxp.hh, + * src/tree/temp.hh: Doxygen comments. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@916 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-24 Akim Demaille + + 2003-07-24 Akim Demaille + + Get rid of _color_registers: all the registers participate in + register allocation. + + * src/target/cpu.hh (_color_registers, color_regs): Remove. + (nb_regs): Virtual, but not pure. + * src/target/mips-cpu.cc (nb_regs): Move from here, to... + * src/target/cpu.cc (nb_regs): ... here. + * src/target/mips-cpu.cc, src/target/ia32-cpu.hh: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@915 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-24 Akim Demaille + + 2003-07-24 Akim Demaille + + * src/regalloc/color.hh (regalloc): Let ok_colors be a list rather + than a set, so that we can express some preferences such as: use + the callee fisrt, then callers, then args, and finally the special + regs. + * src/target/mips-cpu.hh (nb_regs): Take all the declared + registers into account. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@914 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-24 Akim Demaille + + 2003-07-24 Akim Demaille + + * tests/tc-check.in (&test_files): New. + Use it everywhere instead of hard coded calls to glob. + Factor out the loops over the directories where possible. + (&mipsy_check_one): Do not output our runtime, it is up to the + students to provided one. + (&asm_check): Factor the loops into a single one. + Instead, provide a default value for the list of directories. + * src/codegen/codegen-tasks.cc: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@913 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-24 Akim Demaille + + 2003-07-24 Akim Demaille + + * src/frame/frame.hxx: Merge into... + * src/frame/frame.cc: here. + (Frame::frame_pointer_get, Frame::return_value_get): Use the + current target's Cpu's information. + * src/target/mips-cpu.hh (fp_reg, result_reg): Do not rely on the + definitions of the Frame module, rather restore the Mips' + definitions. + * src/frame/access.cc, src/frame/access.hh, src/frame/frame.hh, + * src/frame/frame.cc: Comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@912 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-24 Akim Demaille + + 2003-07-24 Akim Demaille + + * tests/tc-check.in (log_open): Report Mipsy version in the logs. + (project_untar): Verbosely display the contents of the tarball. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@911 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-23 Akim Demaille + + 2003-07-23 Akim Demaille + + * src/misc/set.hh (operator-=, operator-, operator+=, operator+): + Add missing const. + * src/regalloc/color.hh: Add some missing const. + (assign_color): List the available colors. + (coalesce_george_p): Use adjacent. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@910 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-23 Akim Demaille + + 2003-07-23 Akim Demaille + + Do not take the risk to lie: the number of registers is the size + of _color_registers. + + * src/target/mips-cpu.hh (MipsCpu::MipsCpu): Move to... + * src/target/mips-cpu.cc: here. + * src/target/mips-cpu.hh (nb_regs): Use _color_registers instead + of hard coding. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@909 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-23 Akim Demaille + + 2003-07-23 Akim Demaille + + * src/temp/tempmap.hh (operator()(temps_t)): New. + * src/liveness/liveness.cc (liveness): Use it. + Extend the documentation. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@908 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-23 Akim Demaille + + 2003-07-23 Akim Demaille + + * src/liveness/flowgraph.hh (FlowGraph): Fix a huge bug that + caused a branching instruction to be pointing onto the next + instruction including if it could never reach it (e.g., a jump). + This resulted in fake control flow path, hence extended temporary + liveness, therefore incorrect additional conflicts, thus poorer + register allocation. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@907 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-23 Akim Demaille + + 2003-07-23 Akim Demaille + + * src/regalloc/color.hh (adjacent): Actually, since I'm no longer + sure this is truly needed, make it an assertion. + Remove stray debugging code. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@906 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-23 Akim Demaille + + 2003-07-23 Akim Demaille + + * src/regalloc/color.hh (adjacent): New. + Tests the adjacency according to the _current_ state of the + graph, not the original state. + (coalesce): Use it. + (print (node_t)): Report its color if it has one. + (trace (node_t)): Use print. + (trace (move_t)): New. + Use them through out this class. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@905 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-23 Akim Demaille + + 2003-07-23 Akim Demaille + + * doc/Doxyfile.in (GENERATE_TREEVIEW, PDF_HYPERLINKS) + (USE_PDFLATEX, LATEX_BATCHMODE): Set. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@904 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-22 Akim Demaille + + 2003-07-22 Akim Demaille + + * doc/Doxyfile.in: Enable more features, especially the various + graphs, and the index. + * src/regalloc/color.hh: Be more Doxygen compliant. + * src/misc/timer.cc: Fix doc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@903 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-22 Akim Demaille + + 2003-07-22 Akim Demaille + + * configure.ac, tests/configure.ac: Bump to 0.61. + Require Havm 0.18, and Mipsy 0.3. + And Automake 1.7.6. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@902 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-22 Akim Demaille + + 2003-07-22 Akim Demaille + + Version 0.60. + 2005-tc-9.0. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@901 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-22 Akim Demaille + + 2003-07-22 Akim Demaille + + * src/regalloc/color.hh (tempmap_get): That's really what I + thought originally: there is no need to initial the result with + the CPU's hard registers, since they are part of the colored nodes + anyway. There was something broken in my dependencies. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@900 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-22 Akim Demaille + + 2003-07-22 Akim Demaille + + * src/regalloc/libregalloc.cc, src/regalloc/color.hh: Student + marks. + More documentation. + * Makefile.am (studir): Run seq up to 10, not 9. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@899 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-22 Akim Demaille + + 2003-07-22 Akim Demaille + + * src/regalloc/color.hh (tempmap_get): Be sure to include the + CPU's register map. + * src/regalloc/regallocator.hh (operator ()): Don't be so + stupid... Be sure to define res before reading it... + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@898 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-22 Akim Demaille + + 2003-07-22 Akim Demaille + + * src/codegen/mips/codegen.cc (append_sink): s/cpu/_cpu/. + Apparently I have been working with improperly compiled sources, + and tc currently severely fails... + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@897 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-22 Akim Demaille + + 2003-07-22 Akim Demaille + + * src/codegen/mips/test-rw_prg.cc, src/common.hh, src/tc.cc, + * src/frame/frame.hxx: Document changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@896 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-22 Akim Demaille + + 2003-07-22 Akim Demaille + + * src/regalloc/color.hh (regalloc): Doesn't need a TempMap as + argument. + (apply): Rename as... + (operator ()): this. + Return true on success. + * src/regalloc/regallocator.hh (Regalloc): Likewise. + * src/regalloc/libregalloc.cc (regalloc): Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@895 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-22 Akim Demaille + + 2003-07-22 Akim Demaille + + * src/codegen/mips/codegen.cc (append_sink): Use the special_regs. + * src/target/cpu.hh (special_reg): Document. + (special_reg (Temp)): New + * src/target/mips-cpu.hh (MipsCpu): Register all the special + registers. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@894 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-22 Akim Demaille + + 2003-07-22 Akim Demaille + + * src/frame/frame.hh, src/frame/frame.hxx: Fix Doxygen tags. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@893 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-22 Akim Demaille + + 2003-07-22 Akim Demaille + + * src/liveness/interference-graph.hh: Fix doc. + * src/regalloc/color.hh: More documentation. + Remove dead using. + Fix Doxygen groups. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@892 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-22 Akim Demaille + + 2003-07-22 Akim Demaille + + * src/regalloc/color.hh: More documentation. + (print (move_t)): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@891 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-22 Akim Demaille + + 2003-07-22 Akim Demaille + + Taylor the InterferenceGraph to our register allocator. + + * src/liveness/interference-graph.hh (hnode_t, temp2hnode_t) + (temp2node): Rename as... + (node_t, temp2node_t, temp2node): these. + (move_t): New. + (move_map_t, _move_map, move_map_get): Replace this mapping from + node to nodes with... + (move_set_t, _moves, moves_get): this list of moves. + (get_node_from_data, is_move_related, is_in_move_list): Remove. + (has): New, as a replacement for get_node_from_data with a clearer + semantics. + * src/liveness/interference-graph.cc: Adjust. + * src/regalloc/color.hh (node_t, node_set_t, node_list_t, move_t) + (move_set_t): Import from InterferenceGraph. + (Color::Color): Initialize _work_list_moves with the list of moves + from the InterferenceGraph. + (import_moves): Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@890 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + * src/codegen/mips/codegen.cc (munchCall): The argument registers + are trashed across a call, so declare them as def of a call. + Note that I have seen no mention of this fact in Appel. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@889 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + * src/codegen/mips/codegen.cc, src/codegen/mips/codegen.hh + (append_sink, view_shift, free_callee_save): New. + (build_fragment_entry_exit): Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@888 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + * src/codegen/mips/codegen.cc (codegen): Comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@887 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + * src/regalloc/color.hh (decrement_degree): Don't be too strict on + the checks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@886 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + * src/regalloc/color.hh (degree_compute): Precolored have infinite + degree. + This kills a significant number of errors where precolored nodes + were duplicated into other node sets: their degree was becoming + insignificant. + (adjacent): New. + Use it where appropriate. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@885 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + The current register allocator is confused by registers having two + different names. This modification might be temporary or + permanent, this is still unclear to me. But at least it helps me + proceed. Maybe later, keeping two sets of names for RV and FP + will be restored. + + * src/frame/frame.hxx (frame_pointer_get): Its name is "$fp", not + "fp". + (return_value_get): Its name is "$v0", not "rv". + * src/target/mips-cpu.hh (fp_reg, result_reg): Use them so that a + single Temp designate each register. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@884 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + * src/misc/set.hh (operator-=, operator-): Make sure the element + was part of the set. + This is a very significant help for development. + (operator+=, operator+): When adding an element, make sure it was + not already part of the set. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@883 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + * src/regalloc/color.hh (tempmap_get): When traced, display it. + (print): Don't print the hnode number of the temps, just the temp + name itself. + Report the interference graph name in the traces, to help finding + out the function being studied. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@882 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + * src/codegen/ia32/codegen.cc, src/codegen/mips/codegen.cc + (rewrite_program, build_fragment_entry_exit): Use "ins" as a + convenient variable. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@881 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + For the time being, tc no longer works when there are user + functions. + + * src/target/cpu.hh (_non_coalescable_registers) + (non_coleasceable_regs): Rename as... + (_special_registers, special_registers): these. + (special_reg): New. + * src/target/cpu.cc (print): Adjust. + * src/target/mips-cpu.hh: Adjust. + Do not prevent argument registers from being coalesced. + * src/liveness/interference-graph.cc: Simplify includes. + * src/liveness/interference-graph.hh (hnodes_t): Rename as... + (node_set_t): this. + * src/regalloc/color.hh: Complete rewrite. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@880 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + * src/regalloc/regallocator.hh: Alpha conversion of some + variables. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@879 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + * src/misc/set.hh (operator-, operator-=, operator%, operator&) (operator&=, operator|, operator|=): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@878 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + * src/liveness/interference-graph.cc (interfere): Remove, wrong: if two nodes are related by a move, they are not in interference. * src/regalloc/color.hh: Adjust: use ig_edge_exist directly. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@877 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + * src/assem/instr.cc (print): Be sure to output the debugging information passed through the tempmap. * src/target/mips-cpu.hh, src/target/ia32-cpu.hh: Formatting changes. * tests/escapes/sl-propagation-1.tig: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@876 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + * src/ast/ast-tasks.cc: Fix comment. * src/codegen/codegen-tasks.hh, src/codegen/codegen-tasks.hh (instructions_debug_p, instructions_debug): New (inst-debug): New task. * src/assem/layout.hh (_debug, debug_set): New. * src/codegen/ia32/spim-layout.cc, src/codegen/ia32/gas-layout.cc (visit (ProcFrag)): Pass _debug to assem::print. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@875 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + * src/assem/oper.hh, src/assem/move.hh (print): Output the missing + tab. + * src/assem/instr.cc (print): Dereference the temp*. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@874 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + * src/assem/oper.hh, src/assem/move.hh (print): Output the missing + tab. + * src/assem/instr.cc (print): Dereference the temp*. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@873 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + * src/temp/temps.cc, src/temp/label.cc, * src/target/cpu.cc: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@872 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + * src/assem/instr.cc, src/assem/instr.hh (format): Remove, + useless. + (print): Rewrite, including what used to be format's job. + * src/temp/label.hh (string_get, operator<, operator==, operator<<): + Move to.. + * src/temp/label.cc: this new file. + (operator<< (labels_t)): New. + * src/temp/libtemp.cc (Label::_counter): Move to... + * src/temp/label.cc: here. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@871 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + $message + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@870 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-21 Akim Demaille + + 2003-07-21 Akim Demaille + + * src/liveness/Makefile.am (test_flowgraph_LDADD): Add libassem.a. + * src/cppgen/includes/Makefile.am: Remove: unused, useless and + wrong anyway. + * tests/Makefile.am (EXTRA_DIST): Ship mips-runtime.s. + * src/cppgen/Makefile.am (noinst_HEADERS): Be sure to ship the + includes/ files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@869 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-18 Akim Demaille + + 2003-07-18 Akim Demaille + + * tests/mk-Makefile-am: Remove the directory that is about to be + created instead of trying to change its rights, since the latter + depends on its existence. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@868 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-16 Akim Demaille + + 2003-07-16 Akim Demaille + + * src/regalloc/color.hh: Remove glue code no longer needed now + that there is a single temp_set_t type. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@867 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-16 Akim Demaille + + 2003-07-16 Akim Demaille + + * src/temp/temp-set.hh (temp_set_t): Remove. + (temp_set2_t): Rename as... + (temp_set_t): this. + * src/codegen/codegen.hh, src/codegen/ia32/codegen.cc, + * src/codegen/ia32/codegen.hh, src/codegen/mips/codegen.hh, + * src/codegen/mips/codegen.cc, src/target/cpu.hh, + * src/target/mips-cpu.hh, src/liveness/liveness.cc, + * src/liveness/liveness.hh, src/regalloc/color.hh, + * src/target/ia32-cpu.hh: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@866 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-16 Akim Demaille + + 2003-07-16 Akim Demaille + + * src/temp/temp.hh (operator<<): Use string_get. + * src/liveness/liveness.hh, src/liveness/liveness.cc: Use + temp_set2_t, not temp_set_t. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@865 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-16 Akim Demaille + + 2003-07-16 Akim Demaille + + * src/misc/set.hh (set_difference, set_union, set_intersection): + Specify the Key_compare to use for the resulting set. + (operator-, operator+): Use set_difference and set_union. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@864 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-16 Benoßt Perrot + + Test function overload. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@863 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-16 Akim Demaille + + * src/assem/Makefile.am: Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@862 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-16 Benoßt Perrot + + Fix some cppgen features. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@861 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-16 Akim Demaille + + 2003-07-16 Akim Demaille + + * src/assem/instr.hh (Instr::format): Move its implementation to... + * src/assem/instr.cc: this new file, to save compilation cycles. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@860 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-16 Akim Demaille + + 2003-07-16 Akim Demaille + + * src/codegen/codegen-tasks.cc: Comment changes. + * src/liveness/interference-graph.cc: Be independent of + liveout_get return value type. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@859 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-16 Akim Demaille + + 2003-07-16 Akim Demaille + + * src/target/ia32-cpu.hh, src/target/mips-cpu.hh + (_registers_map, registers_map_get): Move to... + * src/target/cpu.hh: here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@858 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-16 Akim Demaille + + 2003-07-16 Akim Demaille + + Caller and callee save registers have no reason to be lists. + + * src/target/cpu.hh (_callee_save_registers, _caller_save_registers): + Be temp_set2_t, not temps_t. + Adjust dependencies. + * src/codegen/ia32/codegen.cc, src/target/mips-cpu.hh: Adjust. + * src/codegen/mips/codegen.cc: Comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@857 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-16 Akim Demaille + + 2003-07-16 Akim Demaille + + * src/target/mips-cpu.hh (arg_regs, callee_save_regs) + (caller_save_regs, non_coleasceable_regs, _color_registers) + (_callee_save_registers, _caller_save_registers) + (_argument_registers, _non_coalescable_registers): Move to... + * src/target/cpu.hh: here. + * src/target/ia32-cpu.hh: Likewise. + * src/target/cpu.hh (arg_reg, caller_save_reg, callee_save_reg): + New. + * src/target/mips-cpu.hh: Use them. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@856 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-10 Akim Demaille + + 2003-07-11 Akim Demaille + + * src/regalloc/color.hh (regalloc): Let unused_colors be + temp_set2_t. + This changes the names of the allocated registers, but that only + an alpha-conversion. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@855 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-10 Akim Demaille + + 2003-07-10 Akim Demaille + + * src/assem/instr.hh: Formating changes. + * src/assem/map-visitor.hh: New. + * src/liveness/liveness-tasks.cc: Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@854 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-10 Akim Demaille + + 2003-07-10 Akim Demaille + + * src/temp/label.hh (operator==, operator<): Move as part of the + class Label instead of freelance operators. + * src/temp/temp.hh, src/temp/temps.hh, src/temp/temp-set.hh: + Comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@853 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-09 Akim Demaille + + 2003-07-09 Akim Demaille + + * src/target/cpu.hh (non_coleasceable_regs, color_regs): Return + temp_set_2_t, not temp_set_t. + * src/target/mips-cpu.hh, src/target/ia32-cpu.hh: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@852 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-09 Akim Demaille + + 2003-07-09 Akim Demaille + + * src/temp/temp-set.hh: Remove accidental duplicate of the + sources. + (operator<< (temp_set2_t)): New. + * src/regalloc/color.hh: Remove debugging code. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@851 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-09 Akim Demaille + + 2003-07-09 Akim Demaille + + * src/regalloc/color.hh (trace): Produce a more detailed + message. + (push): New argument: why it was pushed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@850 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-09 Akim Demaille + + 2003-07-09 Akim Demaille + + * src/codegen/codegen.hh: Use temp_set2_t for spilled nodes, not + temp_set_t. + * src/codegen/ia32/codegen.cc, src/codegen/ia32/codegen.hh, + * src/codegen/mips/codegen.hh, src/codegen/mips/codegen.cc, + * src/regalloc/color.hh: Adjust. + * src/temp/temp.hh, src/temp/temps.hh: Fix included headers. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@849 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-09 Akim Demaille + + 2003-07-09 Akim Demaille + + * src/temp/temps.hh (temp_set_t): Move to... + * src/temp/temp-set.hh: this new file. + * src/target/cpu.hh: Adjust. + * src/liveness/liveness.hh: Ditto. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@848 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-09 Akim Demaille + + 2003-07-09 Akim Demaille + + * src/misc/set.hh (set): Template for any kind of Iterator. + From Raphaël Poss. + * src/temp/temp.hh (Temp::operator<, Temp::operator==): New + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@847 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-09 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * tests/tc-check.in: Search mips-runtime.s in "$testdir/". + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@846 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-09 Akim Demaille + + 2003-07-09 Akim Demaille + + * src/codegen/ia32/codegen.cc (rewrite_program): Fix the handling + of def spills. + Remove useless variables. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@845 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-09 Akim Demaille + + 2003-07-09 Akim Demaille + + * src/codegen/codegen.hh (rewrite_program): Take a temp_set_t, not + a temps_t. + * src/codegen/ia32/codegen.cc (rewrite_program): Adjust, and use + misc::set::has.. + * src/codegen/ia32/codegen.hh, src/codegen/mips/codegen.hh, + * src/codegen/mips/codegen.cc: Likewise. + * src/regalloc/color.hh: Adjust. + (regalloc): New. + * src/regalloc/regallocator.hh: Adjust. + * src/codegen/mips/test-rw_prg.cc (test_rewrite_program): Adjust. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@844 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-09 Akim Demaille + + [Originally by akim on Wed, 09 Jul 2003 07:29:24 +0200] 2003-07-09 Akim Demaille + + * src/temp/temp.hh (temps_t, temp_set_t): Move to... + * src/temp/temps.hh: this new file. + * src/codegen/assembly.hh (L): Move to... + * src/temp/temps.hh: here. + * src/target/cpu.hh, src/codegen/ia32/gas-assembly.cc, + * src/codegen/mips/spim-assembly.cc: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@843 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-08 Akim Demaille + + 2003-07-08 Akim Demaille + + * src/temp/temp.hh (temp_compare): New. + (operator<< (temp_set_t)): Use it to ensure a consistent order of + output temp_set_ts. + * src/temp/tempmap.hh (operator<< (TempMap)): Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@842 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-08 Akim Demaille + + 2003-07-08 Akim Demaille + + * src/regalloc/color.hh: Use temp_set_t. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@841 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-08 Akim Demaille + + 2003-07-08 Akim Demaille + + * TODO: Update. + * src/ast/ast-tasks.cc: Document. + * src/target/cpu.hh: Use temp::temp_set_t. + * src/target/mips-cpu.hh, src/target/ia32-cpu.hh: Likewise. + * src/temp/temp.hh: Document. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@840 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-08 Akim Demaille + + 2003-07-08 Akim Demaille + + * src/assem/oper.hh, src/assem/move.hh, src/assem/label.hh, + * src/assem/instr.hh, src/assem/libassem.cc, src/assem/libassem.hh, + * src/assem/fragment.hh, src/parse/parse-tasks.cc, + * src/translate/level-entry.hh, src/translate/level-env.hh, + * src/temp/test-temp.cc, src/regalloc/test-regalloc.cc: Comment + changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@839 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-07 Akim Demaille + + [Originally by akim on Mon, 07 Jul 2003 22:42:18 +0200] 2003-07-07 Akim Demaille + + * src/escapes/escapes-tasks.cc, + * src/escapes/escapes-check-visitor.hh, src/escapes/libescapes.cc, + * src/canon/basic-block.hh, src/canon/canon-tasks.hh, + * src/canon/canon.cc, src/canon/traces.cc, src/canon/libcanon.hh, + * src/type/type-visitor.hh, src/overload/overload-tasks.cc, + * src/overload/overfun-type-visitor.hh, src/overload/liboverload.cc: + Comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@838 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-07 Akim Demaille + + [Originally by akim on Mon, 07 Jul 2003 22:12:16 +0200] 2003-07-07 Akim Demaille + + * src/common.hh, src/tc.cc, src/misc/has.hh, src/misc/timer.cc, + * src/misc/timer.hh, src/misc/set.hh, src/graph/graph.hxx, + * src/graph/handler.hh, src/graph/handler.hxx, + * src/graph/iterator.hh, src/graph/iterator.hxx, + * src/graph/test-graph.cc, src/graph/graph.hh, + * src/type/type-tasks.cc, src/symbol/symbol.hxx, + * src/symbol/table.hh, src/symbol/test-symbol.cc, + * src/translate/level-entry.hh, src/translate/level-env.hh, + * src/translate/libtranslate.cc, src/translate/libtranslate.hh, + * src/translate/translate-tasks.cc, + * src/translate/translate-tasks.hh, src/translate/level.hh, + * src/translate/access.hh, src/translate/exp.hh, + * src/translate/fragment.hh, src/translate/translation.hh, + * src/temp/libtemp.hh, src/temp/libtemp.cc, src/temp/label.hh, + * src/temp/temp.hh, src/temp/tempmap.hh, src/temp/test-temp.cc, + * src/liveness/flowgraph.hh, src/liveness/interference-graph.cc, + * src/liveness/interference-graph.hh, src/liveness/liveness.cc, + * src/liveness/liveness.hh, src/regalloc/color.hh: White space + and comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@837 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-07 Akim Demaille + + More information. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@836 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-07 Akim Demaille + + Bump to 0.60. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@835 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-07 Akim Demaille + + 2003-07-07 Akim Demaille + + Version 0.59. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@834 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-07 Akim Demaille + + 2003-07-07 Akim Demaille + + * tests/tc-check.in (&escapes_check): Don't pipe the result of a + TC, since that hide failures and therefore the reports of the + failures. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@833 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-07 Benoßt Perrot + + Check the existence of and use exclusively Mipsy as MIPS emulator. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@832 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-07 Akim Demaille + + 2003-07-07 Akim Demaille + + * tests/tc-check.in (r_check_one): Use return, not next: there are + no loops here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@831 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-07 Akim Demaille + + 2003-07-07 Akim Demaille + + * src/codegen/tiger-runtime.c: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@830 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-06 Benoßt Perrot + + * tests/good/getchar-no-static-string: Check that getchar does not update a static string but uses one of the constant strings defined at runtime. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@829 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-06 Benoßt Perrot + + * src/codegen/mips/runtime.s: Make getchar return one of the constant strings. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@828 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-04 Benoßt Perrot + + Fix initialization of argp structure. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@827 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-03 Benoßt Perrot + + Copy mips-runtime.s + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@826 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-03 Benoßt Perrot + + Adjust tc-check --help + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@825 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-03 Benoßt Perrot + + Use mipsy to check T7 output. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@824 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-02 Benoßt Perrot + + Rename allocate_frame as build_fragment_entry_exit. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@823 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-02 Benoßt Perrot + + Fix a perl prototype. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@822 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-02 Benoßt Perrot + + Test C++ code generation. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@821 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-02 Akim Demaille + + 2003-07-02 Akim Demaille + + * src/codegen/libcodegen.cc:, src/codegen/mips/codegen.cc: . + * src/graph/graph.hxx, src/graph/graph.hh: More comments, adjust + student marks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@820 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-01 Akim Demaille + + * TODO: Mistakes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@819 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-01 Akim Demaille + + * tests/good/Makefile.am: There is not test05.tig. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@818 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-01 Akim Demaille + + [Originally by akim on Tue, 01 Jul 2003 00:04:22 +0200] 2003-07-01 Akim Demaille + + * src/assem/fragment.hh, src/assem/fragment.cc, + * src/codegen/codegen-tasks.cc, src/codegen/ia32/codegen.cc, + * src/codegen/ia32/codegen.hh, src/codegen/ia32/gas-assembly.cc, + * src/codegen/ia32/gas-assembly.hh, + * src/codegen/ia32/gas-layout.cc, src/codegen/ia32/gas-layout.hh: + Reformatting and comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@817 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-01 Akim Demaille + + [Originally by akim on Mon, 30 Jun 2003 23:52:23 +0200] 2003-06-30 Akim Demaille + + * src/codegen/codegen.hh, src/codegen/codegen-tasks.cc, + * src/codegen/ia32/codegen.cc, src/codegen/ia32/codegen.hh, + * src/codegen/mips/spim-assembly.cc, src/codegen/mips/spim-layout.cc, + * src/codegen/mips/spim-layout.hh, src/codegen/mips/codegen.hh, + * src/codegen/mips/codegen.cc: Formatting and comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@816 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-01 Akim Demaille + + [Originally by akim on Mon, 30 Jun 2003 23:29:10 +0200] 2003-06-30 Akim Demaille + + * tests/tc-check.in (&ir_check_one): $Main::timeout, not $timeout. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@815 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-07-01 Akim Demaille + + [Originally by akim on Mon, 30 Jun 2003 17:20:08 +0200] 2003-06-30 Akim Demaille + + * src/Makefile.am (modules.hh): New target. + (nodist_tc_SOURCES): Add it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@814 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-27 Akim Demaille + + * Makefile.am (install-doc): Fix the www directory. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@813 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-27 Akim Demaille + + 2003-06-27 Akim Demaille + + * config/warning.m4 (TC_COMPILER_OPTION_IF): Catch some of GCC's + cc1plus warnings. + Be sure to restore the FLAGS before the user action, so that... + she can modify the FLAGS. + Use AC_CACHE_CHECK. + (TC_CXX_WARNINGS): Accept an m4-list of options as $1. + * configure.ac: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@812 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-26 Akim Demaille + + 2003-06-26 Akim Demaille + + * Makefile.am (install-doc): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@811 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-26 Akim Demaille + + Fix ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@810 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-26 Akim Demaille + + 2003-06-26 Akim Demaille + + Bump 0.59. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@809 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-26 Akim Demaille + + 2003-06-26 Akim Demaille + + * tests/tc-check.in (&tarball_test_wrapper): s/tiger/tc/. + From Stéphane Molina. + * configure.ac (WARNINGS_CLAGS): Add ICC warnings 111, 279, 444, + 810 and 1418. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@808 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-25 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/type/types.hh, src/frame/frame.hh: + Force function inlining. + * src/cppgen/cppgen-tasks.cc: + De-nest file inclusion. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@807 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-25 Akim Demaille + + 2003-06-25 Akim Demaille + + * src/graph/graph.hxx, src/graph/graph.hh, src/liveness/flowgraph.hh + * src/liveness/interference-graph.cc,src/liveness/liveness.cc: + Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@806 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-25 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/misc/has.hh, * src/cppgen/cppgen-visitor.hh, src/cppgen/libcppgen.cc * src/graph/graph.hh * src/canon/basic-block.hh, src/canon/canon.cc * src/temp/libtemp.hh, src/temp/libtemp.cc * src/task/task.hh: Forward declare all static function. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@805 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-25 Akim Demaille + + * NEWS: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@804 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-25 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/misc/timer.cc, src/misc/timer.hh * src/assem/oper.hh, src/assem/move.hh * src/ast/libast.cc, src/ast/print-visitor.hh * src/codegen/libcodegen.cc, src/codegen/mips/codegen.cc * src/translate/translate-visitor.hh * src/liveness/liveness.cc * src/regalloc/color.hh * src/task/task.hh: Rename shadowing variables. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@803 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-25 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/ast/default-visitor.hh, + * src/cppgen/cppgen-visitor.hh, + * src/escapes/escapes-visitor.hh: + Add virtual destructor to derivated classes. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@802 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-25 Akim Demaille + + 2003-06-25 Akim Demaille + + * configure.ac: Add -wd193,383 to WARNING_CXXFLAGS. + * src/regalloc/regalloc-tasks.hh: Add a missing semicolon. + * src/task/task.hh: Remove spurious semicolon. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@801 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-25 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/assem/label.hh, src/assem/fragment.cc + * src/ast/default-visitor.hh, src/ast/print-visitor.hh, + * src/codegen/ia32/codegen.cc, src/codegen/ia32/gas-assembly.cc , + * src/cppgen/cppgen-visitor.hh + * src/frame/access.cc + * src/translate/translate-visitor.hh, src/translate/exp.hh, + * src/translate/fragment.hh + * src/type/types.hh, src/type/type-visitor.hh, + * src/tree/call.hh, src/tree/eseq.hh, src/tree/seq.hh: + Fix "unused parameter" warnings. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@800 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-25 Akim Demaille + + 2003-06-25 Akim Demaille + + * config/warning.m4: Make a single grep invocation, not four. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@799 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-25 Akim Demaille + + 2003-06-25 Akim Demaille + + * configure.ac: Neutralize ICC warning 981. + * config/warning.m4 (TC_COMPILER_OPTION_IF): Pass -e to grep where + needed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@798 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-25 Akim Demaille + + 2003-06-25 Akim Demaille + + * config/warning.m4 (TC_COMPILER_FLAGS_NAME) + (TC_COMPILER_OPTION_IF): New. + (TC_CXX_WARNINGS): Use the latter. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@797 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-24 Akim Demaille + + 2003-06-24 Akim Demaille + + * config/warning.m4: New. + * configure.ac: Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@796 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-24 Akim Demaille + + 2003-06-24 Akim Demaille + + * src/liveness/test-flowgraph.cc (main): Invoke the flowgraph ctor + properly. + * src/codegen/ia32/Makefile.am, src/codegen/mips/Makefile.am: Use + the newly discovered nodist_..._SOURCES to avoid shipping + runtime.cc. + (INCLUDES): Since runtime.cc is now compiled (not included), we no + longer need to go into builddir. + * src/codegen/mips/spim-assembly.cc (codegen): Fix "res" + conflicts. + * config/studentize: Don't understand "<<-" as a "<<" comment with + a synopsis equal to "-". + * tests/tc-check.in (&ir_check_one): s/4/10/ seconds of timeout. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@795 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-24 Akim Demaille + + 2003-06-24 Akim Demaille + + * src/codegen/ia32/gas-assembly.cc, + * src/codegen/mips/spim-assembly.cc: Use consistently "res" for + the variable holding the result of a function. + * src/codegen/mips/spim-assembly.cc (codegen): Move the student + marks to ease compilation from stock. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@794 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-24 Akim Demaille + + 2003-06-24 Akim Demaille + + * src/canon/canon.cc (canon_default): More comments. + Make the "if" cascade more readable, and hopefully more understandable. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@793 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-24 Akim Demaille + + 2003-06-24 Akim Demaille + + * tests/good/concurrent-arguments.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@792 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-23 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/codegen/mips/runtime.s, src/type/type-visitor.hh: Remove over-comments. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@791 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-23 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/codegen/mips/runtime.s: Add comments and prefer native instructions to pseudo. * src/codegen/mips/spim-assembly.cc: Use Jump to register native instruction. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@790 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-23 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/type/type-visitor.hh: Add comments. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@789 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-23 Akim Demaille + + 2003-06-23 Akim Demaille + + * src/misc/escape.hh (operator<<): Support v. + Suggested by Matthieu Louis-Ferdinand. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@788 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-20 Akim Demaille + + 2003-06-20 Akim Demaille + + * src/target/cpu.hh, src/target/mips-cpu.hh, + * src/target/ia32-cpu.hh (constant_regs): Remove all the support + for this. + * src/codegen/ia32/codegen.cc, src/codegen/mips/codegen.cc: + Adjust. + (DOWNCAST): New. + Use it to simplify the introduction of downcasts. + Remove the useless "temp::" as this namespace is used. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@787 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-20 Akim Demaille + + 2003-06-20 Akim Demaille + + * TODO: Update. + * src/codegen/ia32/codegen.cc, src/codegen/mips/codegen.cc: Update + comments. + * src/target/cpu.hh: Remove misleading comments. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@786 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-20 Akim Demaille + + 2003-06-20 Akim Demaille + + * tests/good/side-effects.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@785 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-19 Akim Demaille + + 2003-06-19 Akim Demaille + + * src/ast/field.hh (ast): Hide the escape_tag management from + students. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@784 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-18 Akim Demaille + + 2003-06-18 Akim Demaille + + * src/liveness/interference-graph.cc (liveness): Student marks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@783 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-18 Akim Demaille + + 2003-06-18 Akim Demaille + + * src/regalloc/regallocator.hh (operator ()): Make the notations + more consistent. + * src/liveness/liveness-tasks.cc (interference_dump): New. + * src/liveness/liveness-tasks.hh: Fix comments and guards. + (interference-dump): New task. + * src/canon/canon.cc, src/canon/traces.cc: Comment changes. + * src/liveness/flowgraph.hh, src/liveness/flowgraph.cc, + * src/liveness/liveness.hh, src/liveness/liveness.hh: Add "name" + as argument to the ctor. + Fix CPP guards. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@782 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-16 Akim Demaille + + 2003-06-16 Akim Demaille + + * Makefile.am (studir): Skip "overload". + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@781 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-16 Akim Demaille + + 2003-06-16 Akim Demaille + + * Makefile.am (studir): Adjust to liveness, not flowgraph. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@780 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-16 Akim Demaille + + 2003-06-16 Akim Demaille + + * src/translate/translation.hh (forExp): Hide the signature from + students. + + * src/flowgraph/flowgraph.hh: Rename as... + * src/liveness/flowgraph.hh: this. + * src/regalloc/interference_graph.cc: Rename as... + * src/liveness/interference-graph.cc: this. + * src/regalloc/interference_graph.hh: Rename as... + * src/liveness/interference-graph.hh: this. + * src/flowgraph/liveness.cc: Rename as... + * src/liveness/liveness.cc: this. + * src/flowgraph/liveness.hh: Rename as... + * src/liveness/liveness.hh: this. + * src/flowgraph/flowgraph-tasks.cc: Rename as... + * src/liveness/liveness-tasks.cc: this. + * src/flowgraph/flowgraph-tasks.hh: Rename as... + * src/liveness/liveness-tasks.hh: this. + * src/flowgraph/Makefile.am: Rename as... + * src/liveness/Makefile.am: this. + * src/flowgraph/test-flowgraph.cc: Rename as... + * src/liveness/test-flowgraph.cc: this. + * configure.ac, src/Makefile.am, + * src/regalloc/Makefile.am, src/regalloc/color.hh: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@779 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-13 Akim Demaille + + Renamed the project as tc, not tiger. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@778 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-13 Akim Demaille + + 2003-06-12 Akim Demaille + + * tests/good/test05.tig: Rename as... + * tests/good/forward-fun-and-type-decl.tig: this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@777 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-12 Akim Demaille + + * TODO: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@776 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-12 Akim Demaille + + 2003-06-12 Akim Demaille + + * src/codegen/ia32/codegen.cc (muchExp): Allocate temp::Temp only + when needed. + Return the Temp allocated by munchCall. + (munchCall): Studentize the code for frame resident arguments. + * src/codegen/mips/codegen.cc: Likewise. + Suggested by Cédric Bail. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@775 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-10 Akim Demaille + + * src/translate/level.hh: Typo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@774 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-04 Akim Demaille + + 2003-06-04 Akim Demaille + + * src/tree/seq.hh (left_set, letf_get, right_get, right_set): + Remove. + * src/tree/README (Seq): Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@773 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-03 Benoßt Perrot + + Index: ChangeLog from Beno?t Perrot * configure.ac, src/Makefile.am: Use new module "overload". * src/overload/overload-tasks.{hh,cc}: New: overload related tasks (--overfun-types-check). * src/overload/overfun-type-visitor.hh: New: type-checker visitor that allows function overloading * src/overload/liboverload.{hh,cc}: New: define and declare type-check with overload interface. * src/overload/Makefile.am: New: liboverload build instructions. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@772 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-03 Benoßt Perrot + + Prepare overload Index: ChangeLog from Beno?t Perrot * src/ast/callexp.hh, src/ast/functiondex.hh: Allow symbols name and func (respectively) to be dynamically reset. * src/type/types.hh: Force operator==(Type, Type) inlining. * src/type/type-visitor: Abstract scope manipulation. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@771 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-03 Benoßt Perrot + + Index: ChangeLog from Benot Perrot + + * tests/type/overload-builtin.tig, + * tests/type/overload-function.tig, + * tests/type/overload-function-redefinition.tig, + * tests/type/overload-function-record-arg.tig, + * tests/type/overload-nil-ambiguity.tig, + * tests/type/overload-nil-diambiguated.tig: New. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@770 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-02 Akim Demaille + + 2003-06-02 Akim Demaille + + * config/studentize: Support comments in student marks. + * src/codegen/mips/codegen.cc: Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@769 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-02 Akim Demaille + + 2003-06-02 Akim Demaille + + * src/misc/has.hh (find): Specify std:: where appropriate. + (algorithm): Include. + (has): Fix the clash reported by ICC. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@768 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-02 Akim Demaille + + 2003-06-02 Akim Demaille + + * src/frame/frame.hxx: New, extracted from... + * src/frame/frame.hh: here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@767 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-02 Akim Demaille + + 2003-06-02 Akim Demaille + + * README: New. + * NEWS: Readme. + * config/studentize: Output the number of removed lines. + Modernize (Basename, IO::File, etc.). + * Makefile.am (studir): Reorder from esiest and widest removals to + longest. + * src/regalloc/color.hh: Really add it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@766 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-02 Akim Demaille + + * TODO: Update + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@765 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-02 Akim Demaille + + 2003-06-02 Akim Demaille + + Don't mix Temp and hnode_t during colorization. + + * src/regalloc/interference_graph.hh (livemap_t, _livemap): + Remove, unused. + (hnodes_t): New. + (move_map_t): Use it instead of temp::temp_set_t. + (_moves_map, moves_map_get): Rename as... + (_move_map, move_map_get): these. + (is_in_move_list): Work on hnode_t. + (merge): New, extracted from... + * src/regalloc/color.hh (coalesce): here. + Adjust to the new move_map_t. + (degree_compute): New. + * src/regalloc/interference_graph.cc: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@764 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-02 Akim Demaille + + 2003-06-02 Akim Demaille + + * src/regalloc/regallocator.hh (Color): Extract to... + * src/regalloc/color.hh: here. + * src/misc/set.hh (has): New. + * src/misc/has.hh: New. + * src/task/task_register.cc, src/regalloc/interference_graph.cc, + * src/flowgraph/liveness.cc, src/graph/test-graph.cc, + * src/graph/graph.hxx, src/graph/graph.hh, + * src/graph/iterator.hh, src/tree/node.hh: Use them. + * src/misc/timer.hh: Ditto. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@763 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-02 Akim Demaille + + 2003-06-02 Akim Demaille + + * src/codegen/mips/codegen.cc: Use it. + In particular, remove a stupid assert that was responsible for the + allocation of unused slots in the frames. + * src/codegen/ia32/codegen.cc: Ditto. + Also, comment out the allocation of a slot for ra, as it is not used. + * src/codegen/codegen.hh: Space changes. + * src/frame/frame.hh (frame_alloc): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@762 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-02 Akim Demaille + + 2003-06-02 Akim Demaille + + * src/task/task.hh (deps_t): New. + * src/task/task_register.cc (print_task_graph): Also report tasks + with no dependencies. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@761 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-06-02 Akim Demaille + + 2003-06-02 Akim Demaille + + * src/regalloc/regallocator.hh (get_node_from_data, is_move_related) + (interfere, node_of, temp2hnode_t, is_in_movelist): Move to... + * src/regalloc/interference_graph.hh, + * src/regalloc/interference_graph.cc: here. + (temp2hnode): New. + (node_of, is_move_related): Use it to cache the results instead of + recomputing repeatedly. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@760 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-28 Akim Demaille + + 2003-05-28 Akim Demaille + + Versions 2004-tc-8.0 and 2005-tc-6.1. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@759 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-28 Akim Demaille + + 2003-05-28 Akim Demaille + + * src/escapes/escapes-tasks.cc, src/graph/graph.hxx, + * src/canon/basic-block.hh, src/canon/canon.cc, + * src/translate/translate-visitor.hh, src/flowgraph/flowgraph.hh, + * src/flowgraph/liveness.cc: Student marks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@758 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-27 Akim Demaille + + 2003-05-27 Akim Demaille + + * src/assem/label.hh, src/assem/instr.hh, + * src/assem/libassem.cc, src/assem/libassem.hh, + * src/assem/fragment.hh, src/assem/fragment.cc, + * src/regalloc/interference_graph.cc (print): Support an extra + argument for debugging. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@757 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-27 Akim Demaille + + 2003-05-27 Akim Demaille + + * src/regalloc/regalloc-tasks.hh: Group 9, not 8. + * tests/tc-check.in (stage_test): Implement T8 evaluation. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@756 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-27 Akim Demaille + + 2003-05-27 Akim Demaille + + * src/temp/temp.hh (temp_set_t, operator<< (temp_set_t)): New. + * src/flowgraph/liveness.hh (temp_set_toperator<< (temp_set_t))): + Remove. + Adjust. + * src/flowgraph/liveness.cc: Adjust. + * src/regalloc/interference_graph.cc: Ditto. + * src/regalloc/interference_graph.hh, src/regalloc/regallocator.hh: + (moves_map_t): Rename as... + (move_map_t): this. + (temps_set_t): Remove, use temp::temp_set_t instead. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@755 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-27 Akim Demaille + + 2003-05-27 Akim Demaille + + * src/ast/ast-tasks.hh, src/codegen/codegen-tasks.hh, + * src/cppgen/cppgen-tasks.hh, src/escapes/escapes-tasks.hh, + * src/parse/parse-tasks.hh, src/type/type-tasks.hh, + * src/canon/canon-tasks.hh, src/translate/translate-tasks.hh, + * src/target/target-tasks.hh, src/temp/temp-tasks.hh, + * src/regalloc/regalloc-tasks.hh, src/task/task-tasks.hh: + perl -000 -pi.bak -e 's(^# ifdef TC[^"]+("[^"]+")[^#]+#s*endifs+) + (TASK_GROUP ($1);nn)gm'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@754 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-27 Akim Demaille + + 2003-05-27 Akim Demaille + + * src/symbol/table.hh (cassert): Include. + * src/symbol/test-symbol.cc: Strengthen. + * src/translate/translation.hh: Use std:: for strings, not using. + * src/temp/label.hh, src/temp/temp.hh: Likewise. + * src/flowgraph/flowgraph-tasks.hh: Fix tasks descriptions. + Use TASK_GROUP. + * src/flowgraph/liveness.cc: Use timer. + * src/regalloc/interference_graph.cc: Fix output file name. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@753 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-27 Akim Demaille + + 2003-05-27 Akim Demaille + + * src/misc/set.hh: Be generic wrt Compare and Alloc too. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@752 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-27 Akim Demaille + + 2003-05-27 Akim Demaille + + * src/task/task.hh (TASK_GROUP): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@751 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-27 Akim Demaille + + 2003-05-27 Akim Demaille + + * src/graph/test-graph.cc: Remove debugging code. + * src/graph/graph.hh (print): Make all the overloaded methods + virtual. + * src/flowgraph/test-flowgraph.cc: Remove stdout output. + * src/flowgraph/flowgraph-tasks.hh (liveness-dump): New. + * src/flowgraph/flowgraph-tasks.cc: (liveness_dump): New. + * src/flowgraph/flowgraph.hh: Add the using clause for overloaded + virtual methods. + * src/flowgraph/liveness.cc, src/flowgraph/liveness.hh: New + * src/regalloc/interference_graph.cc, + * src/regalloc/interference_graph.hh: Adjust to use Liveness. + * src/flowgraph/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@750 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-27 Akim Demaille + + 2003-05-27 Akim Demaille + + * src/graph/test-graph.cc: Augment the number of edges. + Dump the graph before the removal too. + Stop displaying it on stdout, it is useless and annoying. + * src/graph/graph.hh, src/graph/graph.hxx (edge_decorator::label): + New accessors (const and non const). + (operator<< (ostream, empty): New. + (print): Add missing quote. + Actual, re-merge the oriented and undirected versions. + Report the edge labels too. + * src/misc/set.hh (operator<<): Move from the misc namespace, to + the top level. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@749 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-26 Akim Demaille + + 2003-05-26 Akim Demaille + + * tests/tc-check.in: Remove stray debugging code. + + * src/flowgraph/flowgraph.hh: Make it an actual class. + Actually, a class template. + Make "make_flowgraph" be simply the ctor. + * src/flowgraph/flowgraph-tasks.cc: Adjust. + * src/flowgraph/libflowgraph.hh, src/flowgraph/libflowgraph.cc: + Remove. + * src/regalloc/interference_graph.hh, + * src/regalloc/interference_graph.cc: Adjust. + + * src/flowgraph/Makefile.am (check_TESTS): Reactivate. + * src/flowgraph/test-flowgraph.cc: Update the includes. + (timer): New. + Adjust to FlowGraph. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@748 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-26 Akim Demaille + + 2003-05-26 Akim Demaille + + * tests/tc-check.in: When the order of the stage is specified via + the command line, run the test in that order, and compute the + grades according to it. + (&stage_test): New. + (&tarball_test): Use it. + (%stage): Rename as... + (@stage): this. + (&stages_extract): Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@747 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-26 Akim Demaille + + 2003-05-26 Akim Demaille + + * tests/tc-check.in (&tarball_parse): Be sure not to have $date = + undef. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@746 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-25 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/escapes/escapes-tasks.cc: Fix sufficient- and necessary- + escaping. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@745 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-23 Akim Demaille + + 2003-05-23 Akim Demaille + + Bump to 0.58. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@744 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-23 Akim Demaille + + 2003-05-23 Akim Demaille + + * tests/tc-check.in (&escapes_check): Don't pass --escapes-check. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@743 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-23 Akim Demaille + + 2003-05-23 Akim Demaille + + tc-check does not check the escapes since the change of the task + system. + + * src/escapes/escapes-tasks.hh (escapes-necessary-check) + (escapes-sufficient-check): Have them really perform the test, not + merely setting a variable that is not used properly. + Remove useless prototypes. + (escapes_necessary_check_p, escapes_sufficient_check_p): Remove. + * tests/tc-check.in (escapes_check): Don't pass --escape-compute + to TC, as it is enabled by --escapes-*-check. + * tests/mk-Makefile-am (ext): Don't ask for hpr and lpr, as we + don't use them. + * tests/good/for-high-escapes.tig: Rename as... + * tests/escapes/for-upper.tig: this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@742 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-23 Akim Demaille + + 2003-05-23 Akim Demaille + + Fix the incorrect handling of the for, reported by Fabrice Hesling + and diagnosed by Sébsatien Broussaud. + + * src/translate/translate-visitor.hh (visit (ForExp)): Address the + upper bound before introducing a new scope, to avoid capturing the + index in the environment in which the upper bound is evaluated. + * src/type/type-visitor.hh: Likewise. + * src/type/escapes-visitor.hh: Likewise. + * tests/good/for-high-same-name-as-index.tig: + * tests/good/for-high-escapes.tig: + * tests/type/unknown-return-type.tig, + * tests/type/for-index-in-higher-bound.tig: + New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@741 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-22 Akim Demaille + + 2003-05-19 Akim Demaille + + * src/parse/parsetiger.yy, src/parse/scantiger.ll: + Clean up white spaces. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@740 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-22 Akim Demaille + + 2003-05-19 Akim Demaille + + * src/frame/frame.hh, tests/escapes/redeclaration.tig, + * tests/escapes/rhs-of-a-vardec.tig, + * tests/escapes/local-escapes.tig, + * tests/escapes/escapes-n-recursion.tig, tests/good/concat.tig, + * tests/good/donald.tig, tests/good/evalexp.tig, + * tests/good/for-in-let.tig, tests/good/fractions-underloaded.tig, + * tests/good/if-and-if.tig, tests/good/if.tig, + * tests/good/letexp-eseq.tig, tests/good/let-in-for-init.tig, + * tests/good/many-vars.tig, tests/good/merge.tig, + * tests/good/mutually-recursive-functions.tig, + * tests/good/print-tree.tig, tests/good/queens.tig, + * tests/good/shadowing-functions.tig, + * tests/good/so-many-args-in-rec-func.tig, tests/good/test05.tig, + * tests/good/test27.tig, tests/good/test44.tig, + * tests/syntax/multi-vars.tig, tests/syntax/multi-types.tig, + * tests/syntax/multi-functions.tig, tests/syntax/vehicle.tig, + * tests/syntax/syntax-vs-type-1.tig, + * tests/type/break-in-vardec-in-while.tig, + * tests/type/field-in-not-record.tig, + * tests/type/fractions-overloaded.tig, tests/type/test21.tig, + * tests/type/test22.tig, tests/type/test23.tig, + * tests/type/test24.tig, tests/type/test31.tig, + * tests/type/test40.tig, tests/type/types-endless-recursion.tig, + * tests/type/unconstrained-nil.tig, tests/good/many-args.tig: + Clean up white spaces. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@739 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-22 Akim Demaille + + 2003-05-19 Akim Demaille + + * TODO, src/misc/contract.hh, src/ast/anydecs.hh, + * src/ast/arrayty.hh, src/ast/callexp.hh, src/ast/decs.hh, + * src/ast/exp.hh, src/ast/fieldexp.hh, src/ast/field.hh, + * src/ast/forexp.hh, src/ast/functiondec.hh, src/ast/ifexp.hh, + * src/ast/letexp.hh, src/ast/namety.hh, src/ast/nilexp.hh, + * src/ast/opexp.hh, src/ast/print-visitor.hh, src/ast/recordexp.hh, + * src/ast/seqexp.hh, src/ast/simplevar.hh, src/ast/subscriptvar.hh, + * src/ast/typedec.hh, src/ast/vardec.hh, src/ast/visitor.hh, + * src/ast/whileexp.hh, src/codegen/codegen-tasks.hh, + * src/graph/handler.hh, src/graph/handler.hxx, + * src/graph/iterator.hh, src/canon/traces.cc, src/frame/frame.hh, + * src/parse/parse.hh, src/symbol/table.hh, src/type/type-entry.hh, + * src/type/type-env.hh, src/type/types.hh, src/target/cpu.hh, + * src/target/target-tasks.cc, src/tree/node.hh, + * src/regalloc/test-regalloc.cc, src/task/task-tasks.cc, + * tests/tc-check.in, src/codegen/ia32/gas-assembly.cc, + * src/frame/frame.cc: Clean up white spaces. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@738 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-19 Akim Demaille + + 2003-05-19 Akim Demaille + + * src/target/mips-cpu.hh, src/target/ia32-cpu.hh: Formatting + changes. + * src/regalloc/regallocator.hh (trace): Reformat the trace + message. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@737 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-19 Akim Demaille + + 2003-05-19 Akim Demaille + + * src/assem/libassem.cc: Add it for real. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@736 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-19 Benoßt Perrot + + Index: ChangeLog from Akim Demaille * src/regalloc/interference_graph.cc (temp2hnode_t,_node_of) (node_of): New. (compute_liveness): Don't insert interference from one temp to itself. Don't insert "t1 <- t1" in _moves_map. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@735 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-19 Benoßt Perrot + + Index: ChangeLog from Akim Demaille * src/graph/graph.hh, src/graph/graph.hxx (print): Make a different implementations for oriented and undirected graphs. (~Graph): New. (self_t): New for subclasses. * src/regalloc/interference_graph.hh: Remove unused ctor. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@734 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-19 Benoßt Perrot + + Index: ChangeLog from Akim Demaille + + * src/regalloc/interference_graph.cc (topological_sort) + (topological_sort_rec): Move to... + * src/graph/graph.hh, src/graph/graph.hxx (OrientedGraph): here. + (dump): Rename as... + (print): this. + Make it a method. + Adjust callers. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@733 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-19 Benoßt Perrot + + Index: ChangeLog from Akim Demaille * src/graph/graph.hxx (print): Rewrite the output so that we number the nodes, and provide their labels, instead of leaving dotty dealing with nodes named with their labels, which can be equal for different nodes. This gave incorrect rendering of correct graphs. Don't specify too much material (e.g., the color etc.). Use the graph name when possible. Don't issue a "size" parameter, specially with an incorrect content (designates the BBox...). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@732 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-19 Benoßt Perrot + + Index: ChangeLog from Akim Demaille * src/codegen/libcodegen.cc (lir_to_assem): Simplify. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@731 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-19 Benoßt Perrot + + Index: ChangeLog from Akim Demaille * src/assem/libassem.cc, src/assem/libassem.hh (print): New. * src/assem/instr.hh (format): Use `+=' where more elegant than append. Also report the jumps. * src/assem/layout.hh (visit): Provide a valid implementation to visit fragments. * src/codegen/mips/spim-layout.cc, src/codegen/ia32/gas-layout.cc: Use them to factor. * src/codegen/codegen-tasks.cc: Use variables to factor the code. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@730 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-19 Benoßt Perrot + + Index: ChangeLog from Akim Demaille * src/Makefile.am, src/ast/libast.cc, src/ast/libast.hh, * src/cppgen/cppgen-tasks.cc, src/translate/translate-tasks.cc, * src/type/type-tasks.cc, src/escapes/escapes-tasks.cc, * src/parse/parse-tasks.cc (the_program): Move into ast::. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@729 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-19 Benoßt Perrot + + Index: ChangeLog from Akim Demaille + + * src/parse/scantiger.ll: Use misc/escape to quote the bad + characters. + Use `string +=' instead of `append' where nicer. + * tests/good/four-hex-backslash.tig: Output something. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@728 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-17 Akim Demaille + + Fix ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@727 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-16 Akim Demaille + + 2003-05-16 Akim Demaille + + * tests/good/test05.tig: New. + From Richad Idris. + * tests/good/so-many-args-in-rec-func.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@726 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-16 Akim Demaille + + 2003-05-16 Akim Demaille + + * src/codegen/mips/test-rw_prg.cc: Adjust to recent changes. + * src/codegen/mips/Makefile.am: Be sure to use libassem.a. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@725 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-16 Akim Demaille + + 2003-05-16 Akim Demaille + + * src/regalloc/interference_graph.cc, + * src/regalloc/interference_graph.hh (dump_flowgraph): Remove def + and use. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@724 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-16 Akim Demaille + + 2003-05-16 Akim Demaille + + * src/Makefile.am, src/assem/Makefile.am, src/assem/instr.hh, + * src/assem/libassem.hh, src/assem/fragment.hh, + * src/assem/fragment.cc, src/assem/layout.hh, src/assem/visitor.hh, + * src/codegen/libcodegen.hh, src/codegen/libcodegen.cc, + * src/codegen/codegen.hh, src/codegen/Makefile.am, + * src/codegen/codegen-tasks.cc, src/codegen/assembly.hh, + * src/codegen/mips/spim-layout.cc, src/codegen/mips/spim-layout.hh, + * src/codegen/mips/test-rw_prg.cc, src/codegen/mips/codegen.hh, + * src/codegen/mips/codegen.cc, src/flowgraph/flowgraph-tasks.cc, + * src/flowgraph/libflowgraph.cc, + * src/regalloc/interference_graph.cc, + * src/regalloc/interference_graph.hh, src/regalloc/libregalloc.cc, + * src/regalloc/libregalloc.hh, src/regalloc/regallocator.hh, + * src/regalloc/regalloc-tasks.cc, src/codegen/ia32/codegen.hh, + * src/codegen/ia32/codegen.cc, src/codegen/ia32/gas-layout.hh, + * src/codegen/ia32/gas-layout.cc: Move all the Assem fragment + material from codegen into assem/. + Remove the useless "Asm" or "asm_" prefixes. + Move assem/all.hh as assem/libassem.hh. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@723 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-16 Akim Demaille + + 2003-05-16 Akim Demaille + + * src/graph/graph.hxx (graph): Shape is box, not rectangle, and + size 12, not 14. + * src/translate/translate-visitor.hh: Rename the "Main Program" as + a simple "Main" to avoid producing white spaces in file names, + since they confuse dotty. + * src/flowgraph/flowgraph-tasks.cc: Use the label of the proc + frags, so that two different routines with the same name do not + share the same output file name. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@722 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-16 Akim Demaille + + 2003-05-16 Akim Demaille + + * src/ast/ast-tasks.hh: Fix comments. + * src/flowgraph/flowgraph-tasks.hh, + * src/flowgraph/flowgraph-tasks.cc: New. + * src/flowgraph/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@721 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-16 Akim Demaille + + 2003-05-16 Akim Demaille + + * src/canon/traces.cc (make_trace): Move the normalization of the + cjump as a postprocessing stage, once all the blocks put into a + single trace, to make sure that even the last CJUMP is properly + normalized. + Fixes the failures observed since Ix is enabled by default. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@720 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-16 Akim Demaille + + 2003-05-16 Akim Demaille + + * src/canon/libcanon.cc: Rename as... + * src/canon/traces.cc: this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@719 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-16 Akim Demaille + + 2003-05-16 Akim Demaille + + * src/canon/canon.hh: Rename as... + * src/canon/canon.cc: this. + * src/canon/libcanon.cc (canonicalize): Move to... + * src/canon/canon.cc: here. + * src/canon/libcanon.cc (canon): Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@718 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-16 Akim Demaille + + Remove, unused. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@717 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-15 Akim Demaille + + 2003-05-15 Akim Demaille + + * src/codegen/mips/spim-assembly.hh, src/ast/print-visitor.hh, + * src/cppgen/cppgen-visitor.hh, src/ast/default-visitor.hh: Typo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@716 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-15 Akim Demaille + + 2003-05-15 Akim Demaille + + * src/regalloc/set.hh (Set): Rename as... + * src/misc/set.hh (set): this. + Adjust dependencies. + * src/regalloc/regallocator.hh (limits.h): Don't include it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@715 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-15 Akim Demaille + + 2003-05-15 Akim Demaille + + * config/studentize: No longer display the count of removed lines. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@714 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-12 Akim Demaille + + 2003-05-12 Akim Demaille + + * src/codegen/mips/spim-layout.cc (codegen): Remove spurious end + of lines. + Output them only when actually separating fragments. + This improves the quality of the generated documents. + * src/translate/fragment.hh (translate): Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@713 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-12 Akim Demaille + + 2003-05-12 Akim Demaille + + Restore the old code with inefficient "if" handling, as it is + useful to generate material for lectures. But make it disabled by + default. + + * configure.ac, tests/configure.ac: Bump to 0.57. + * src/translate/libtranslate.hh, src/translate/libtranslate.cc + (hir_use_ifexp_p): Welcome back. + * src/translate/translate-tasks.cc, src/translate/translate-tasks.hh + (hir_naive): New. + * src/translate/translation.hh (ifExpNonVoid, ifExpVoid): Restore + * src/translate/translate-visitor.hh: Use them. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@712 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-12 Akim Demaille + + 2003-05-12 Akim Demaille + + * tests/tc-check.in (&run): Adjust the prototype to the recent + changes, and adjust calls. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@711 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-07 Akim Demaille + + 2003-05-07 Akim Demaille + + * src/translate/exp.hh (translate): Adjust the comments: Ix are + now mandatory. + * src/translate/translation.hh (ifExpNonVoid, ifExpVoid): Remove. + * src/translate/translate-visitor.hh (translate): Adjust. + * src/translate/libtranslate.hh, + * src/translate/libtranslate.cc (hir_use_ifexp_p): Remove. + * src/translate/translate-task.hh, + * src/translate/translate-task.cc: Remove the corresponding task + and routine. + * src/translate/level-env.hh: Remove student marks: give all the + code. + * src/canon/libcanon.cc (canon_trace_p, trace_trace_p): They are + Booleans. + Adjust student marks. + * tests/tc-check.in (tarball_test): Adjust: --hir-use-ix no longer + exists. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@710 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-07 Akim Demaille + + 2003-05-07 Akim Demaille + + * Makefile.am (%.diff): New. + (studir): "target" is now in T7. + * src/canon/canon-tasks.cc (canon): Formatting and comment changes. + * src/translate/translate-visitor.hh (EXP_FROM): New. + Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@709 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-07 Benoßt Perrot + + src/frame/frame.cc: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@708 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-07 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/frame/frame.hh, src/frame/frame.cc, src/frame/Makefile.am: + Make word_size a global. + * src/codegen/mips/codegen.cc, src/translate/translation.hh: + Use it. + * src/target/target-tasks.cc: + Update it. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@707 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-07 Akim Demaille + + 2003-05-07 Akim Demaille + + * Makefile.am (200%): Support version numbers with minor. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@706 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-07 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/frame/mips: Remove. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@705 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-07 Akim Demaille + + 2003-05-07 Akim Demaille + + * Makefile.am (200%): New. + * config/studentize: When cutting code, count the number of lines + cut. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@704 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-07 Benoßt Perrot + + Index: ChangeLog from Benot Perrot * src/codegen/ia32/codegen.cc: Do not save manually the return address. * src/codegen/ia32/gas-assembly.cc, src/codegen/ia32/gas-layout.cc: Fix assembly syntax. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@703 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-07 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/translate/libtranslate.cc: Remove "translate-tasks.hh" inclusion. + * src/task/task_register.cc, src/task/task_register.hh: + Add task graph's dump. + * src/task/task-tasks.cc, src/task/task-tasks.hh: + Make graph's dump accessible through "--task-graph" option. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@702 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-05-05 Akim Demaille + + 2003-05-05 Akim Demaille + + * tests/tc-check.in: Use long option names with GNU Tar, since -j + on Debian GNU/Linux is -y on NetBSD. + Fix the banner and log name. + From Stéphane Molina. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@701 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-30 Akim Demaille + + 2003-04-30 Akim Demaille + + * src/codegen/mips/spim-assembly.hh, + * src/codegen/ia32/gas-assembly.hh: Import overloaded methods. + * src/codegen/ia32/codegen.hh: Comment changes. + * src/codegen/mips/codegen.hh, src/codegen/mips/codegen.cc, + * src/codegen/ia32/codegen.hh, src/codegen/ia32/codegen.cc: Remove + useless "inline". + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@700 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-30 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/frame/frame.hh, * src/codegen/mips/codegen.cc, src/codegen/ia32/codegen.cc: Use a separate offset to store arguments in frame. * tests/good/many-args.tig: Test arguments storage. + + * src/codegen/mips/spim-assembly.cc: Add student marks. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@699 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-30 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/codegen/codegen.hh, * src/codegen/mips/codegen.hh, * src/codegen/ia32/codegen.hh: Codegen IS NOT a MunchCodegen by default. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@698 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-30 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/codegen/codegen.hh: Remove dead code. * src/codegen/assembly.hh: Abstract builder's methods. * src/codegen/mips/codegen.cc: Cosmetics. * src/codegen/ia32/codegen.cc: Use Assembly builder. * src/codegen/ia32/gas-assembly.hh, src/codegen/ia32/gas-assembly.cc: Implement GasAssembly. + + +. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@697 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-30 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/codegen/assembly.hh: Extend Assembly builder's interface. + * src/codegen/mips/spim-assembly.hh: Propagate it. + * src/codegen/mips/codegen.hh: Remove dead code. + * src/codegen/mips/codegen.cc: Use Assembly builder. + * src/codegen/mips/spim-assembly.hh: Implement SpimAssembly. + * src/codegen/Makefile.am: Distribute it. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@696 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-28 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * configure.ac, src/codegen/Makefile.am: Add src/codegen/ia32/. * src/codegen/ia32/Makefile.am, * src/codegen/ia32/codegen.hh, src/codegen/ia32/codegen.cc, * src/codegen/ia32/gas-assembly.hh, src/codegen/ia32/gas-assembly.cc, * src/codegen/ia32/runtime.s, * src/codegen/ia32/gas-layout.hh, src/codegen/ia32/gas-layout.cc: New. * src/target/ia32-target.hh: Ia32Target use Ia32 code generator and assembly language. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@695 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-28 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/codegen/assembly.hh: Extend Assembly interface. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@694 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-28 Akim Demaille + + * ChangeLog: Fix again the Perl program. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@693 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-28 Akim Demaille + + * ChangeLog: Fix the Perl program. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@692 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-28 Akim Demaille + + Index: ChangeLog from Akim Demaille + + * configure.ac, tests/configure.ac: Bump to 0.56. + (AM_INIT_AUTOMAKE): Version 1.7.4 is out. + * src/task/task.hh (TASK_DECLARE): Fix the definition to really + use the task name 8-)=). + (FunctionTask::FunctionTask): Remove useless ctors. + * src/ast/ast-tasks.hh, src/codegen/codegen-tasks.hh, + * src/cppgen/cppgen-tasks.hh, src/escapes/escapes-tasks.hh, + * src/type/type-tasks.hh, src/canon/canon-tasks.hh, + * src/translate/translate-tasks.hh: Fix the incorrect attribution + of short option names into the description. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@691 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-28 Akim Demaille + + 2003-04-28 Akim Demaille + + * src/task/task.hh (Task::Task): Move implementation to... + * src/task/task.cc (Task::Task): this new file. + Support names such as "h|help" a la Perl's GetOpt. + * src/task/task.hh (TASK_DECLARE): New. + * src/task/task-tasks.hh (task): Use it. + * src/regalloc/regalloc-tasks.hh: Ditto. + * src/ast/ast-tasks.hh, src/codegen/codegen-tasks.hh, + * src/cppgen/cppgen-tasks.hh, src/escapes/escapes-tasks.hh, + * src/parse/parse-tasks.hh, src/type/type-tasks.hh, + * src/canon/canon-tasks.hh, src/translate/translate-tasks.hh, + * src/target/target-tasks.hh, src/temp/temp-tasks.hh, + * src/regalloc/regalloc-tasks.hh, src/task/task-tasks.hh: + Run "perl -000 -pi.bak /tmp/foo.pl **/*-tasks.hh", with + "foo.pl" being: + + # Short option and deps. + s/FunctionTask[^(]*\( # Object name + &?(\w+) # 1 Function name + ,\s*group_name # Group name + ,\s*\"([^\"]+)\" # 2 Help string without " + ,\s*(\"[^\"]+\") # 3 Task name + ,\s*\'([^\']+)\' # 4 Short option without ' + ,\s*(\"[^\"]+\") # 5 Dependencies + \)/TASK_DECLARE ($3, "$4|$2", + $1, $5)/smgx; + + # short opt no deps. + s/FunctionTask[^(]*\( # Object name + &?(\w+) # 1 Function name + ,\s*group_name # Group name + ,\s*\"([^\"]+)\" # 2 Help string without " + ,\s*(\"[^\"]+\") # 3 Task name + ,\s*\'([^\']+)\' # 4 Short option without ' + \)/TASK_DECLARE ($3, "$4|$2", + $1, "")/smgx; + + # No option and deps. + s/FunctionTask[^(]*\( # Object name + &?(\w+) # 1 Function name + ,\s*group_name # Group name + ,\s*\"([^\"]+)\" # 2 Help string without " + ,\s*(\"[^\"]+\") # 3 Task name + ,\s*(\"[^\"]+\") # 4 Dependencies + \)/TASK_DECLARE ($3, "$2", + $1, $4)/smgx; + + # No opt no deps. + s/FunctionTask[^(]*\( # Object name + &?(\w+) # 1 Function name + ,\s*group_name # Group name + ,\s*\"([^\"]+)\" # 2 Help string without " + ,\s*(\"[^\"]+\") # 3 Task name + \)/TASK_DECLARE ($3, "$2", + $1, "")/smgx; + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@690 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-24 Akim Demaille + + 2003-04-24 Akim Demaille + + * tests/tc-check.in (&help): Augment. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@689 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-24 Akim Demaille + + 2003-04-24 Akim Demaille + + Compute correct scores, even if some Ts are skipped. + + * tests/tc-check.in (&grade_output): Eved out from... + (&tarball_test): here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@688 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-23 Akim Demaille + + 2003-04-23 Akim Demaille + + * tests/tc-check.in (tarball_test_wrapper): Pass -f to bzip2. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@687 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-23 Akim Demaille + + 2003-04-23 Akim Demaille + + * tests/good/fractions-underloaded.tig, + * tests/type/fractions-overloaded.tig: New. + From Valentin David. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@686 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-23 Akim Demaille + + Fix previous checkin + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@685 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-23 Akim Demaille + + 2003-04-23 Akim Demaille + + Support long tarball names with upload time stamps, such as: + LOGIN-tc-2-rendu1-1047612643.tar.bz2. + + * tests/tc-check.in (&tarball_parse, &tarball_base): New. + Use them instead of calls to fileparse. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@684 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-22 Akim Demaille + + 2003-04-22 Akim Demaille + + * tests/tc-check.in: Error messages should be properly formatted: + starting with the file name. + (NO_CONTROL, CHECK_STDOUT, CHECK_STDERR, DISPLAY_STDOUT) + (DISPLAY_STDERR): New. + (&run, &run_tests): Use it. + + * src/parse/scantiger.ll (parse): Fix the error message: display + the program name. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@683 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-17 Benoßt Perrot + + Index: ChangeLog from Benot Perrot + + * src/target/ia32-cpu.hh, src/target/ia32-target.hh: New. + * src/target/Makefile.am: Distribute them. + * src/target/target-tasks.hh, src/target/target-tasks.cc: + Add "--target-ia32". + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@682 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-10 Benoßt Perrot + + Index: ChangeLog from Beno?t Perrot * src/misc/deref.hh: New. * src/misc/Makefile.am: Distribute deref.hh * src/graph/graph.hxx (print): Use deref. + + * src/codegen/mips/Makefile.am, src/codegen/mips/test-rw_prg.cc: + Adapt mips's test to new back-end. + * tests/tc-check.in: run fails with 0, and there is not a T8 stage. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@681 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-10 Benoßt Perrot + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@680 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-10 Benoßt Perrot + + Index: ChangeLog from Beno?t Perrot + + * src/codegen/assembly.hh, src/codegen/codegen.hh: + Prepare assembly builder interface. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@679 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-10 Akim Demaille + + 2003-04-10 Akim Demaille + + * src/codegen/libcodegen.hh, src/codegen/libcodegen.cc, + * src/codegen/codegen.hh, src/codegen/mips/test-rw_prg.cc, + * src/codegen/mips/codegen.hh, src/target/target.hh: Finish the + previous patch: Rename DefaultCodegen as Codegen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@678 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-10 Akim Demaille + + 2003-04-10 Akim Demaille + + * src/codegen/libcodegen.hh, src/codegen/codegen.hh, + * src/codegen/Makefile.am, src/codegen/mips/codegen.hh, + * src/target/target.hh: Rename DefaultCodegen as Codegen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@677 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-10 Akim Demaille + + * tests/tc-check.in: Remove debugging trace. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@676 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-10 Akim Demaille + + 2003-04-10 Akim Demaille + + * tests/tc-check.in (env, load_configuration): New. + Use it to load a configuration file, and use its values for TC, + havm, etc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@675 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-10 Benoßt Perrot + + Index: ChangeLog from Beno?t Perrot * src/target/target.hh, src/target/mips-target.hh: Use references, clean non const accessors. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@674 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-10 Benoßt Perrot + + Index: ChangeLog from Beno?t Perrot + + * src/codegen/default-codegen.hh, + * codegen/mips/codegen.cc, src/codegen/mips/codegen.hh: + Cpu becomes a pointer. + * src/codegen/codegen-tasks.cc: + Link cpu to codegen dynamically. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@673 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-10 Akim Demaille + + 2003-04-10 Akim Demaille + + * src/codegen/mips/Makefile.am (runtime.cc): Fix the include. + * src/codegen/assembly.hh: Use qualified includes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@672 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-10 Akim Demaille + + 2003-04-10 Akim Demaille + + * src/codegen/asm_fragment.hh, src/codegen/asm_fragment.cc: Rename + as... + * src/codegen/asm-fragment.hh, src/codegen/asm-fragment.cc: these + for consistency. + * src/codegen/libcodegen.hh, src/codegen/default-codegen.hh, + * src/codegen/Makefile.am, src/codegen/mips/spim-layout.cc: + Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@671 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-10 Akim Demaille + + 2003-04-10 Akim Demaille + + * tests/tc-check.in (tarball_test): Bump to 10s of timeout because + of the slowness of --parse-trace. + * src/codegen/mips/spim-layout.hh: Add the missing namespace mips. + * src/codegen/mips/Makefile.am (runtime.cc): Output a qualified + include. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@670 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-10 Benoßt Perrot + + Index: ChangeLog from Beno?t Perrot * src/codegen/libcodegen.hh: Do not include "runtime.hh" anymore, but "spim-assembly.hh". * src/codegen/mips/asm_fragment.cc, src/codegen/mips/asm_fragment.hh: Remove unused files. * src/codegen/asm_fragment.hh: Constify AsmVisitor, add const accessors. * src/codegen/asm-layout.hh: New. * src/codegen/Makefile.am: Distribute "asm-layout.hh" * src/codegen/assembly.hh: An assembly IS NOT an AsmLayout but aggregates one. * src/codegen/mips/spim-layout.hh, src/codegen/mips/spim-layout.cc: New (fragments's layout). * src/codegen/mips/Makefile.am: Distribute spim-layout.{cc,hh} * src/codegen/mips/spim-assembly.hh: Use SpimLayout. * src/codegen/codegen-tasks.cc: Use target's assembly layout to display fragments. * src/Makefile.am: Sort librairies to fix dependency problem. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@669 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-10 Benoßt Perrot + + Index: ChangeLog from Beno?t Perrot * src/codegen/asm-visitor.hh: Include std::list ! + + * src/codegen/assembly.hh: New. + * src/codegen/Makefile.am: Distribute "assembly.hh". + * src/codegen/mips/spim-assembly.hh: New. + * src/codegen/mips/Makefile.am: Distribute "spim-assembly.hh", + generate "runtime.cc" used by SpimAssembly. + * src/target/target.hh, src/target/mips-target.hh: + A target uses its own assembly language. + * src/codegen/codegen-tasks.cc (display_runtime): Use target's + assembly's runtime. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@668 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-09 Benoßt Perrot + + Index: ChangeLog from Beno?t Perrot + + * src/codegen/asm-visitor.hh: New. + * src/codegen/Makefile.am: Distribute "asm-visitor.hh". + * src/codegen/asm_fragment.hh: Add visitor's entry point to fragments. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@667 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-09 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/codegen/mips/codegen.cc (munchLoad, munchStore): Simplify. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@666 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-08 Akim Demaille + + 2003-04-08 Akim Demaille + + * src/common.hh: Do not include config.h. + * src/task/task_register.cc: Do it. + * configure.ac, tests/configure.ac: Bump to 0.55 + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@665 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-08 Akim Demaille + + * tests/tc-check.in: Fix the error message on bad HAVM version. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@664 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-08 Akim Demaille + + 2003-04-08 Akim Demaille + + * src/task/task_register.cc (argp_program_version): Use + PACKAGE_AUTHORS. + * configure.ac (PACKAGE_TIMESTAMP): Fix the oversimplification + that resulted in PRCS rekeying configure.ac. + (authors.h): Replace with... + (version.h): this. + Put PACKAGE_TIMESTAMP in here to avoid massive recompilation via + config.h. + * tests/configure.ac (HAVM_PREREQ): New. + * tests/tc-check.in (havm_version): New. + Check it against HAVM_PREREQ. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@663 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-08 Akim Demaille + + 2003-04-08 Akim Demaille + + * Makefile.am (studir-check, studir): Support MODULES that allows + to add other modules to ignore (e.g., escapes). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@662 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-06 Akim Demaille + + 2003-04-06 Akim Demaille + + * configure.ac (authors.h): New. + * AUTHORS: Update. + * Makefile.am (DISTCLEANFILES): New. + * src/task/task_register.cc (authors.h): Include it. + (argp_program_version): Use PACKAGE_AUTHORS so that this file is + no longer to be changed by students. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@661 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-06 Benoßt Perrot + + Index: ChangeLog from Beno?t Perrot + + * src/codegen/Makefile.am, src/codegen/mips/Makefile.am: + Do not use mips/asm_fragment.hh nor compile mips/asm_fragment.cc . + * src/codegen/asm_fragment.cc, src/codegen/asm_fragment.cc: + Move the code from codegen/mips/asm_fragment.* to codegen/. + * src/codegen/libcodegen.cc, src/codegen/default-codegen.hh, + * src/codegen/mips/codegen.hh, src/codegen/mips/codegen.cc, + * src/regalloc/interference_graph.hh, src/regalloc/libregalloc.cc, + * src/regalloc/regallocator.hh: + Use codegen::'s Asm{Proc,Data}Frag instead of mips::'s. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@660 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-05 Akim Demaille + + 2003-04-05 Akim Demaille + + * Makefile.am (studir): Update for target, and other Ts. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@659 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-05 Akim Demaille + + 2003-04-05 Akim Demaille + + * src/common.hh (exit_t): Hide the exit status that the student + won't need (those related to checking the escapes). + * src/tc.cc, src/common.hh (time_report_p): Remove. + (main): No longer try to remove the AST, that's a job for + --ast-delete. + * src/misc/timer.hh (task_map_t): New. + (iter): Remove. + (pop): Be public. + (dump_on_destruction, dump_stream): New. + (Timer::~Timer): New. + * src/misc/timer.cc:Clean up. + (TimerVar::is_zero): New. + (main): Don't "new" when useless. + * src/task/task-tasks.cc (tasks_time_report): Use dump_on_destruction. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@658 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-05 Benoßt Perrot + + Index: ChangeLog from Benot Perrot + + * src/target/mips-cpu.hh: Inline init_registers. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@657 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-05 Akim Demaille + + 2003-04-05 Akim Demaille + + * src/canon/canon-tasks.hh, src/regalloc/regalloc-tasks.hh, + * src/codegen/codegen-tasks.hh: Fix group names. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@656 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-05 Akim Demaille + + 2003-04-05 Akim Demaille + + * src/target/mips-cpu.hh: Simplify a few constructor calls. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@655 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-05 Benoßt Perrot + + Index: ChangeLog from Beno?t Perrot * src/target: New. * src/target/cpu.hh, src/target/mips-cpu.hh: New. * src/target/target.hh, src/target/mips-target.hh: New. * src/target/target-tasks.cc, src/target/target-tasks.hh: New. + + * src/frame/frame.hh: Restore old Frame, making it more + achitecure independant. + * src/frame/Makefile.am: Disable src/frame/mips. + + * configure.ac: Generate src/target/Makefile, skip src/frame/mips. + * src/Makefile.am (SUBDIRS): Add target + * src/Makefile.am (tc_LDADD): Add libtarget.a + + * src/codegen/default-codegen.hh: A DefaultCodegen aggregates a Cpu. + * src/codegen/codegen-tasks.cc (instruction_selection): Use the + global target to get a Codegen. + * src/codegen/mips/codegen.hh: mips::Codegen aggregates a MipsCpu. + * src/codegen/mips/codegen.cc: Use the aggregated Cpu to access + target's registers. + + * src/regalloc/libregalloc.cc, src/regalloc/libregalloc.cc + (allocate_registers): Target's dependant. + * src/regalloc/regallocator.hh: Color need a Cpu for target's + registers's description and RegisterAllocator need a Codegen for + rewriting program when spilling. + * src/regalloc/regalloc-tasks.cc: The task asm_compute must use + global Target for calling allocate_registers. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@654 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-05 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/regalloc/regallocator (select): Do not access to unallocated + vector _is_coalesced when coalesce_enable is not set. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@653 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-04 Akim Demaille + + 2003-04-04 Akim Demaille + + * configure.ac (AC_PACKAGE_TARNAME): Removing an unwanted output. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@652 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-04 Akim Demaille + + 2003-04-04 Akim Demaille + + * src/codegen/mips/codegen.cc (munchMove): Split into three, based + on the dst kind. + * src/translate/fragment.hh: Comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@651 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-04 Akim Demaille + + 2003-04-04 Akim Demaille + + * src/codegen/codegen-tasks.cc (instructions_display): Use ASM + comments, not C++ comments. + src/codegen/mips/asm_fragment.cc (asm_print_header): Remove. + (asm_print): Move to... + * src/codegen/asm_fragment.cc: here, new. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@650 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-04 Benoßt Perrot + + Add. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@649 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-04 Akim Demaille + + 2003-04-04 Akim Demaille + + * src/codegen/fragment.hh,, src/codegen/mips/fragment.hh: Remove. + * src/codegen/libcodegen.hh, src/codegen/libcodegen.cc: Adjust. + * src/codegen/Makefile.am, src/codegen/mips/Makefile.am: Adjust. + * src/codegen/mips/asm_fragment.hh: Namespace is codegen::mips. + (asm_fragments_t): Move it, and the related code, into... + * src/codegen/asm_fragment.hh: here. + * src/codegen/default-codegen.hh, + * src/codegen/codegen-tasks.cc: Adjust. + * src/codegen/mips/asm_fragment.cc: Namespace is codegen::mips. + * src/codegen/mips/codegen.hh: Likewise. + * src/codegen/mips/codegen.cc: Likewise. + * src/regalloc/interference_graph.hh: Exhibit the dependency on + mips. + * src/regalloc/libregalloc.cc, src/regalloc/libregalloc.hh, + * src/regalloc/regallocator.hh, src/regalloc/regalloc-tasks.cc: + Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@648 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-04 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/misc, src/misc/Makefile.am: New. + * configure.ac, src/Makefile.am: + Add misc directory and libmisc.a to tc. + * src/contract.hh, src/escape.hh, src/timer.cc, src/timer.hh: + Move to src/misc. + * src/common.hh, src/ast/print-visitor.hh, src/codegen/libcodegen.cc, + * src/codegen/default-codegen.hh, src/codegen/mips/asm_fragment.cc, + * src/graph/graph.hxx, src/translate/fragment.hh, + * src/flowgraph/libflowgraph.cc: + Change inclusion of {contract,escape,timer}.hh to + misc/{contract,escape,timer}.hh + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@647 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-04 Akim Demaille + + 2003-04-04 Akim Demaille + + * src/codegen/libcodegen.hh (code/mips/runtime.hh): Include. + * src/codegen/codegen-tasks.cc (runtime_display_p): Remove. + (instructions_display): Adjust to asm_print changes. + * src/codegen/mips/asm_fragment.cc (asm_print): Don't display the + runtime, hence, don't accept a "runtime_display" argument. + * src/codegen/mips/asm_fragment.hh: Adjust. + * src/regalloc/regalloc-tasks.cc, src/regalloc/regalloc-tasks.hh + (asm_display): Replace with... + (asm_dummy): this, as... + (task_asm_display): Do it only via dependencies. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@646 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-04 Akim Demaille + + 2003-04-04 Akim Demaille + + * src/task/task.hh (Task::Task): find returns a position, and + substr wants a length. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@645 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-04 Akim Demaille + + 2003-04-04 Akim Demaille + + * src/task/task_register.cc: Comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@644 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-04 Akim Demaille + + 2003-04-04 Akim Demaille + + * src/task/task_register.hh: Comment changes. + * src/task/task.hh: Simplify some error messages. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@643 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-03 Benoßt Perrot + + Index: ChangeLog from Beno?t Perrot + + * src/codegen/mips/asm_fragment.cc, src/codegen/mips/asm_fragment.hh: + Add a flag to asm_print() that control the display of runtime library. + * src/codegen/codegen-tasks.cc, src/codegen/codegen-tasks.hh: + Add task "runtime-display". + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@642 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-03 Akim Demaille + + 2003-04-03 Akim Demaille + + Read the fucking diff... This would have a stupid s/_data//. + + * src/codegen/mips/Makefile.am (dist_noinst): Rename as... + (dist_noinst_DATA): this... + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@641 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-03 Akim Demaille + + 2003-04-03 Akim Demaille + + * src/codegen/mips/Makefile.am (runtime.hh): Fix the guard name. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@640 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-03 Akim Demaille + + 2003-04-03 Akim Demaille + + * src/codegen/mips/runtime_data.s, src/codegen/mips/runtime_data.hh: + Rename as... + * src/codegen/mips/runtime.s, src/codegen/mips/runtime.hh: these. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@639 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-03 Akim Demaille + + 2003-04-03 Akim Demaille + + * config/studentize: Support the `#' comments in addition to `//'. + * Makefile.am (studir): Adjust to handle .s files. + * src/codegen/mips/runtime_data.s: Add student marks. + Comment changes. + * src/codegen/mips/Makefile.am (runtime_data.hh): Skip student marks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@638 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-03 Akim Demaille + + 2003-04-03 Akim Demaille + + * src/codegen/mips/codegen.cc: Simplify some notations + (s/temp_//). + (munchMove): That's a nice place for student marks. + (allocate_frame, rewrite_program): Comment out, as anyway that's + T9. + * src/codegen/libcodegen.cc: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@637 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-03 Akim Demaille + + 2003-04-03 Akim Demaille + + * tests/tc-check.in: Support --valgrind. + * src/ast/ast-tasks.hh (ast_delete, task_ast_delete): New. + * src/parse/parse-tasks.hh: Adjust group name. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@636 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-03 Akim Demaille + + 2003-04-03 Akim Demaille + + * src/codegen/default-codegen.hh (L): Many new overloaded versions + of this function, to allocate temps_t. + * src/codegen/mips/codegen.cc: Use them instead of the previous, + memory leaking, version. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@635 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-03 Akim Demaille + + 2003-04-03 Akim Demaille + + * src/codegen/mips/codegen.cc (munchBinop): Simplify. + * Makefile.am (studir): When making T(n), the stuff from T(n+1) + and higher must be removed, not from T(n). + The Type modules is "type", not "types". + * src/temp/libtemp.hh: Fix comments. + * src/codegen/mips/codegen.hh (_temp_op_instr, _temp_relop_map): + Rename as... + (_op_instr, _relop_instr): these. + Don't include the tab, let the callers do it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@634 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-03 Akim Demaille + + 2003-04-03 Akim Demaille + + * src/codegen/mips/mips.hh: Remove. + * src/codegen/mips/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@633 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-03 Akim Demaille + + 2003-04-03 Akim Demaille + + Simplify the handling of targets and make easier to move to a + dynamic choice: stop using cascades of conditional includes. + + * src/codegen/libcodegen.hh (mips/codegen.hh): Include. + * src/codegen/default-codegen.hh (allocate_frame) + (rewrite_program): New const pure virtuals. + * src/codegen/mips/codegen.hh, src/codegen/mips/codegen.cc: + Adjust, as these used to be static methods. + Simplify argument names. + Don't let "using namespace" escape! + * src/codegen/mips/runtime_data.s: Space changes. + * src/codegen/target.hh: Remove. + * src/codegen/Makefile.am: Adjust. + * src/codegen/codegen-tasks.cc: Adjust. + * src/regalloc/regalloc-tasks.hh: Comment changes. + * src/regalloc/regalloc-tasks.cc: Adjust to allocate_registers now + wanting a codegen. + * src/regalloc/libregalloc.hh, src/regalloc/libregalloc.cc + (allocate_registers): Now take a codegen to allocate the frame, + and rewrite the code upon spills. + * src/regalloc/regallocator.hh: Take a codegen, to be able to + rewrite spills. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@632 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/codegen/libcodegen.hh, src/codegen/libcodegen.cc: + Treat code-generator as an argument of lir_to_assem. + * src/codegen/default-codegen.hh, src/codegen/mips/codegen.hh:=20 + Move build_fragment_context() from mips/Codegen to DefaultCodegen. + * src/codegen/codegen-tasks.cc: Build architecture-dependent=20 + code-generator in instruction_selection() and pass it to lir_to_assem. + The aim is to provide the possibility to choose dynamicaly the=20 + code-generator (i.e. the target). + + I. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@631 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Akim Demaille + + 2003-04-02 Akim Demaille + + * Makefile.am: Be sure to rename the directory, not to store it + into the possibly existing previous one. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@630 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Akim Demaille + + 2003-04-02 Akim Demaille + + * src/tc.cc (tempmap): Remove. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@629 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Akim Demaille + + 2003-04-02 Akim Demaille + + * Makefile.am (studir): Support "make studir T=t". + * src/Makefile.am (SUBDIRS): Reorder so that it works cleanly. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@628 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/codegen/mips/asm_fragment.cc, src/codegen/mips/asm_fragment.cc: + AsmProcFrag is not a translate::ProcFrag but aggregates one; + AsmDataFrag is not a translate::DataFrag but aggregates one. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@627 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Akim Demaille + + 2003-04-02 Akim Demaille + + * tests/good/many-vars.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@626 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/codegen/libcodegen.hh, src/codegen/libcodegen.cc: + Remove some useless includes, move asm_fragments to codegen namespace. + * src/regalloc/regalloc-tasks.cc: Propagate the use of + asm_fragments::codegen. + * src/codegen/default-codegen.hh: Add doxygen comments and + protect some accessors. + * src/codegen/fragments.hh, src/codegen/mips/fragment.hh: Cosmetics. + + * TODO: asm_fragments should be declared/defined in lib, not in task. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@625 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Akim Demaille + + 2003-04-02 Akim Demaille + + * Makefile.am (studir): Handle AUTHORS. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@624 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Akim Demaille + + 2003-04-02 Akim Demaille + + * Makefile.am (studir): Handle AUTHORS. + * src/escapes/escapes-tasks.hh, src/type/type-tasks.hh, + * src/translate/translate-tasks.hh: Fix task group numbers. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@623 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot * src/regalloc/libregalloc.hh: Host flag of regalloc.hh. * src/regalloc/regalloc.hh: Unused so disabled. * src/assem/instr.hh: Do not need regalloc.hh. * src/regalloc/colorgraph.hh: Unused so disabled. * src/regalloc/Makefile.am: Do not distribute disabled files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@622 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Benoßt Perrot + + Index: ChangeLog from Benot Perrot * src/regalloc/interference_graph.hh: Doxygen comments added. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@621 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/regalloc/regallocator.hh: Doxygen comments added. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@620 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Akim Demaille + + 2003-04-02 Akim Demaille + + * src/temp/tempmap.hh: Be "using" clean. + Remove useless namespace qualifiers. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@619 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Akim Demaille + + 2003-04-02 Akim Demaille + + * src/regalloc/libregalloc.hh, src/regalloc/libregalloc.cc, + (regalloc::tempmap): Move to... + * src/temp/libtemp.cc (temp::tempmap): here. + * src/temp/temp-tasks.hh, src/temp/temp-tasks.cc, + * src/temp/libtemp.hh: New. + * src/temp/tempmap.hh (TempMap::print, operator << (TempMap)): New. + * src/temp/Makefile.am: Adjust. + * src/assem/instr.hh: Use the global tempmap to print instr. + * src/codegen/asm_fragment.hh: Likewise. + * src/codegen/mips/asm_fragment.hh: Likewise. + * src/translate/fragment.hh: Likewise. + * src/regalloc/regallocator.hh: Likewise. + * src/regalloc/regalloc-tasks.cc: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@618 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Benoßt Perrot + + Index: ChangeLog from Benoßt Perrot + + * src/regalloc/libregalloc.cc: Call register allocation with + coalesce and trace flags. + * src/regalloc/regallocator.hh (Color, RegisterAllocator::()): + Propagate coalesce and trace flags. + + * src/regalloc/libregalloc.hh (dump_livemap): Print instruction + list with liveness informations. + * src/regalloc/regallocator.hh: Improve trace. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@617 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Akim Demaille + + 2003-04-02 Akim Demaille + + * src/assem/oper.hh: Cosmetics. + * src/assem/label.hh (print (ostr)): Remove. + * src/assem/instr.hh (format ()): Remove. + (format (TempMap)): The tempmap is const ref. + (print (ostr)): Remove. + (operator <<): Use an empty TempMap. + * src/codegen/asm_fragment.hh: Likewise. + * src/codegen/mips/asm_fragment.cc (print): Keep only the version + using a const ref to TempMap. + * src/codegen/mips/asm_fragment.hh: Adjust. + * src/temp/tempmap.hh (strictness, _strictness, operator [] const): + New. + (operator ()): Adjust to handle the strictness. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@616 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-02 Akim Demaille + + 2003-04-02 Akim Demaille + + * src/regalloc/regallocator.hh (regalloc): Spread "const" where it + belongs. + * src/regalloc/colorgraph.hh, src/regalloc/libregalloc.cc: + Cosmetic changes. + (fstream, cstdlib): Don't include them, useless. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@615 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-01 Akim Demaille + + 2003-04-01 Akim Demaille + + * src/graph/test-graph.cc: Fix (partially). + * src/graph/graph.hxx: s/string/std::&/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@614 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-01 Akim Demaille + + 2003-04-01 Akim Demaille + + * src/regalloc/regallocator.hh (operator ()): Remove the spurious + 2nd argument. + * src/frame/mips/frame.hh, src/regalloc/libregalloc.cc, + * src/regalloc/regallocator.hh: Use temp::temps_t when possible. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@613 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-01 Benoßt Perrot + + Index: ChangeLog from Beno?t Perrot + + * src/regalloc/regallocator.hh: Use a vector insted of a map + to store coalesce informations. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@612 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-01 Akim Demaille + + * ChangeLog: Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@611 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-01 Akim Demaille + + 2003-04-01 Akim Demaille + + * src/regalloc/regalloc-tasks.hh (task_asm_flowgraph_trace): New. + * src/regalloc/regalloc-tasks.hh, src/regalloc/regalloc-tasks.cc + (asm_flowgraph_trace): New. + * src/regalloc/libregalloc.hh, src/regalloc/libregalloc.cc + (trace_flowgraph_p): New. + * src/codegen/mips/asm_fragment.cc (AsmProcFrag::print): Add the + missing std::endl; + * src/codegen/mips/codegen.cc (mips): Remove all the spurious "n" + in the emitted instructions. + * src/graph/graph.hh (dump): Its argument string is not optional, + and is not passed by ref, but by copy. + * src/graph/graph.hxx (dump): Append the ".dot" extension. + * src/graph/graph.hh, src/graph/graph.hxx (name_, name_get, name_set): + New. + * src/assem/instr.hh (operator<< (Instr*)): Remove, pointers are + not to be printed specially. + * src/regalloc/colorgraph.hh (display_body): Reactivate the code. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@610 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-01 Benoßt Perrot + + Index: ChangeLog from Beno?t Perrot + + * src/regalloc/interference_graph.hh, src/regalloc/regallocator.hh: + Color is not an InterferenceGraph but aggregates one. + Some cosmetics. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@609 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-01 Akim Demaille + + 2003-04-01 Akim Demaille + + * src/translate/translate-visitor.hh: Make the "using" of + overloaded functions public. + * src/canon/libcanon.cc (make_traces): Move the tracing (in the + sense of debugging) code here, instead of... + (make_basic_blocks): Here. + (useless_jump_p): Make sure not to use a destroyed temporary. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@608 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-01 Benoßt Perrot + + Cosmetics. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@607 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-01 Benoßt Perrot + + Index: ChangeLog from Benot Perrot + + * src/Makefile.am: parse module must be compiled before ast, because + it generates some headers used by ast. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@606 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-01 Akim Demaille + + 2003-04-01 Akim Demaille + + * src/regalloc/regallocator.hh: Use const_iterator where + appropriate. + * src/codegen/mips/codegen.hh, src/tree/binop.hh: Remove useless + qualifiers. + * src/frame/access.hh: Make sure overloaded methods are + "using"'ed in sub classes. + Suggested by icc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@605 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-01 Akim Demaille + + 2003-04-01 Akim Demaille + + * src/temp/tempmap.hh (TempMap::insert): Take a TempMap as arg, + instead of iterators. + * src/regalloc/libregalloc.cc: Simplify a couple of useless + namespace qualifiers. + * src/regalloc/regallocator.hh (Color::_colored_nodes) Does not + need to be a reference. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@604 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-01 Akim Demaille + + 2003-04-01 Akim Demaille + + * src/regalloc/regallocator.hh (get_optimized_color): Remove, + perfectly useless. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@603 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-01 Akim Demaille + + 2003-04-01 Akim Demaille + + * src/temp/tempmap.hh: New. + Will be used to introduce the TempMapId temp maps. + * src/tc.cc, src/assem/label.hh, src/assem/instr.hh, + * src/codegen/asm_fragment.hh, src/codegen/mips/asm_fragment.cc, + * src/codegen/mips/asm_fragment.hh, src/frame/mips/frame.hh, + * src/temp/Makefile.am, src/regalloc/libregalloc.hh, + * src/regalloc/libregalloc.cc, src/regalloc/regalloc.hh, + * src/regalloc/colorgraph.hh, src/regalloc/regallocator.hh: + Replace regalloc.hh uses by temp::TempMap uses. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@602 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-04-01 Akim Demaille + + 2003-04-01 Akim Demaille + + * src/assem/README: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@601 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-31 Akim Demaille + + * ChangeLog: Cosmetics. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@600 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-26 Benoßt Perrot + + from Benoßt Perrot * src/regalloc/regallocator.hh: Inline some tiny functions. Propagate use of Appel's interface. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@599 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-26 Benoßt Perrot + + 2003-03-26 Benoßt Perrot + + * src/regalloc/regallocator.hh: Use a vector instead of a map for + simplified state. Propagate use of Appel's interface. + * src/flowgraph/Makefile.am, src/regalloc/Makefile.am: Disable + tests that indirectly use a "timer" without having declared it. + Must be fixed. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@598 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-26 Benoßt Perrot + + from Benoßt Perrot * src/regalloc/regallocator.hh: Use a vector instead of a map for degrees storage. Propagate use of Appel's interface. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@597 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-26 Benoßt Perrot + + from Benoßt Perrot + + * src/regalloc/regallocator.hh: Progressive use of Appel's interface + for register allocation. + * src/regalloc/libregalloc.cc: Use RegisterAllocator instead of + ColorGraph. + * src/regalloc/Makefile.am: Distribute regallocator.hh + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@596 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-26 Akim Demaille + + 2003-03-26 Akim Demaille + + * src/flowgraph/libflowgraph.cc (flowgraph): Install the time var + "flow graph generation". + * src/regalloc/libregalloc.cc (regalloc): Use the time var + "register allocation". + * src/regalloc/interference_graph.hh: Remove dead comments. + * src/regalloc/interference_graph.cc: Install the timer "liveness + analysis". + * src/regalloc/colorgraph.hh: Install the timer "rewriting from + spill". + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@595 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-26 Akim Demaille + + 2003-03-26 Akim Demaille + + * src/timer.hh, src/timer.cc: Update from upstream. + * src/common.hh, src/tc.cc (time_report_p): New. + * src/tc.cc (main): Display the time report on demand. + * src/task/task_register.cc (execute): Pop timer with the name of + the task. + * src/task/task-tasks.hh (task_tasks_time_report): New. + * src/task/task-tasks.cc (tasks_time_report): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@594 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-25 Akim Demaille + + 2003-03-25 Akim Demaille + + * tests/good/stupid-array-type.tig: New. + * src/type/types.hh: Fix some misleading comments. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@593 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-24 Akim Demaille + + 2003-03-24 Akim Demaille + + * src/timer.hh, src/timer.cc: Update from upstream. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@592 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-24 Akim Demaille + + 2003-03-24 Akim Demaille + + * Makefile.am: Remove generated files to avoid useless conflicts + in patches. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@591 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-20 Akim Demaille + + * config/studentize: Reverse an incorrect change. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@590 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-20 Akim Demaille + + 2003-03-20 Akim Demaille + + * src/escapes/escapes-tasks.hh: Move the tasks into the tasks + namespaces. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@589 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-20 Akim Demaille + + 2003-03-20 Akim Demaille + + * config/studentize: Make it stricter so that it becomes apparent + that... + ($printit): needs to be initialized, otherwise the first line is + skipped. + Alexis Brouard. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@588 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-20 Akim Demaille + + 2003-03-20 Akim Demaille + + * src/translate/exp.hh (IfThenElseExp): Rename as + (Ix): this. + * src/translate/translate-tasks.cc, + * src/translate/translate-tasks.hh, + * src/translate/libtranslate.cc, + * src/translate/libtranslate.hh, + * src/translate/translate-visitor.hh, + * src/translate/translation.hh: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@587 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-20 Akim Demaille + + 2003-03-20 Akim Demaille + + * src/task/task_register.hh (TASK_ACTIVATE): Remove, unused. + * src/ast/ast-tasks.hh, src/parse/parse-tasks.hh, + * src/type/type-tasks.hh: Move the tasks into the tasks + namespaces. + * tests/tc-check.in (tarball_test): Adjust to --hir-use-ifexp + being now --hir-use-ix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@586 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-20 Akim Demaille + + 2003-03-20 Akim Demaille + + * src/codegen/codegen-tasks.hh: Move the task objects into the + codegen::tasks namespace. + Use '-i' and '-I' as shortcuts. + * src/regalloc/regalloc-tasks.hh (regalloc): Likewise. + Use '-s' and '-S' as shortcuts, not '-r' and '-R'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@585 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-20 Akim Demaille + + 2003-03-20 Akim Demaille + + * configure.ac (src/modules.hh): Having a libfoo.hh is no longer + accepted. + * src/cppgen/libcppgen.hh, src/cppgen/libcppgen.cc: + Move tasks handling to... + * src/cppgen/cppgen-tasks.hh, src/cppgen/cppgen-tasks.cc: + these new files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@584 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-20 Akim Demaille + + 2003-03-20 Akim Demaille + + * src/translate/translate-tasks.hh: Move the tasks into the + translate::tasks namespace. + * src/canon/libcanon.hh, src/canon/libcanon.cc: + Move tasks handling to... + * src/canon/canon-tasks.hh, src/canon/canon-tasks.cc: + these new files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@583 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-20 Akim Demaille + + 2003-03-20 Akim Demaille + + * src/common.hh, src/tc.cc (tempmap): Move to... + * src/regalloc/libregalloc.hh, src/regalloc/libregalloc.cc: here. + Move tasks handling to... + * src/regalloc/regalloc-tasks.hh, src/regalloc/regalloc-tasks.cc: + these new files. + * src/task/task_register.cc (register_task): Display the short + option name when complaining about duplicates. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@582 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-20 Akim Demaille + + 2003-03-20 Akim Demaille + + * src/tc.cc (parse/libparse.hh): Include. + * src/common.hh, src/tc.cc (fragments): Move to... + * src/translate/libtranslate.hh, src/translate/libtranslate.cc: + Here. + Move tasks handling to... + * src/translate/translate-tasks.hh, + * src/translate/translate-tasks.cc: here. + * src/canon/libcanon.hh, src/codegen/codegen-tasks.cc: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@581 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-20 Benoßt Perrot + + from Benot Perrot + + * src/type/libtype.hh, src/type/type-env.hh, src/type/types.hh: + Doxygen comments added. + * src/task/task_register.cc: + Correct memory leaks of singleton model and argp options table + generation. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@580 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-19 Akim Demaille + + * TODO: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@579 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-19 Akim Demaille + + 2003-03-19 Akim Demaille + + * tests/good/test01.tig, tests/good/test02.tig, + * tests/good/test03.tig, tests/good/test08.tig, + * tests/good/test12.tig: Rename as... + * tests/good/array.tig, tests/good/array-of-alias.tig, + * tests/good/record.tig, tests/good/if.tig, + * tests/good/for-in-let.tig: these. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@578 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-19 Akim Demaille + + 2003-03-19 Akim Demaille + + * src/type/types.hh (operator==, assignable_to, comparable_to): + Embed the necessary "actual ()" dereferencing, so that callers to + these functions/methods do not have to worry about "actual ()". + Work on references instead of pointers. + (Named::comparable_to, Named::assignable_to): New, now required as + the callers do not invoke "actual ()", so that treatment for Named + is different. + * src/type/type-visitor.hh (check_types_equal) + (check_types_comparable, check_types_assignable, visit (OpExp)): + Remove now useless "actual" invocations. + (visit (RecordExp)): Remove a useless duplicate "actual" invocation. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@577 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-19 Akim Demaille + + 2003-03-19 Akim Demaille + + * tests/configure.ac, configure.ac: Bump to 0.53. + * src/task/task_register.cc (parse_arg): Be sure to initialize all + the members of the tc_options struct. + Suggested by Valgrind. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@576 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-19 Akim Demaille + + 2003-03-19 Akim Demaille + + * src/type/type-visitor.hh (type): No transitive "using". + * src/translate/translate-visitor.hh (translate): Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@575 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-17 Akim Demaille + + 2003-03-17 Akim Demaille + + * src/ast/ast-tasks.hh (task_ast_display): Fix the support for -A. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@574 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-17 Akim Demaille + + 2003-03-17 Akim Demaille + + * src/ast/ast-tasks.hh (task_ast_display): Support '-A'. + * src/tc.cc (main): For the time being, don't dump the timing. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@573 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-17 Akim Demaille + + 2003-03-17 Akim Demaille + + * src/timer.cc, src/timer.hh: New. + * src/common.hh (timer.hh): Include. + * src/common.hh, src/tc.cc (timer): New. + * src/tc.cc (main): Use it. + * src/task/task_register.cc (execute): Time each task. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@572 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-17 Akim Demaille + + 2003-03-17 Akim Demaille + + * configure.ac, tests/configure.ac: Version 0.52. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@571 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-13 Akim Demaille + + 2003-03-13 Akim Demaille + + * configure.ac: Remove the "set +x". + * src/ast/recordty.hh: Fix a student mark. + * src/type/types.hh (Named::name_get): Remove, as the name of a Type + should never be known (except for error messages, handled by << + anyway). + * src/symbol/symbol.cc, src/symbol/symbol.hh: Qualify the includes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@570 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-12 Benoßt Perrot + + * src/regalloc/interference_graph.hh, * src/regalloc/interference_graph.cc: Use map structure intensively to speed up register allocation. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@569 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-12 Benoßt Perrot + + Add new files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@568 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-11 Benoßt Perrot + + from Beno?t Perrot + + * src/graph/graph.hh, src/graph/graph.hxx: Split the graph file for + lisibility. + * src/graph/handler.hh, src/graph/handler.hxx, + * src/graph/iterator.hh, src/graph/iterator.hxx: New. + * src/graph/Makefile.am: Propagate the split by distributing the new + files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@567 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-10 Akim Demaille + + 2003-03-10 Akim Demaille + + * configure.ac (PACKAGE_TIMESTAMP): New. + * src/task/task_register.cc (argp_program_version): Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@566 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-06 Akim Demaille + + 2003-03-06 Akim Demaille + + * src/graph/Makefile.am (CLEANFILES): Add the test outputs. + * src/Makefile.am (SUBDIRS): Going into assem once is better. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@565 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-06 Akim Demaille + + 2003-03-06 Akim Demaille + + * src/Makefile.am (tc_SOURCES): Add contract.hh. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@564 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-06 Akim Demaille + + 2003-03-06 Akim Demaille + + * src/codegen/asm_fragment.hh (print_label_framesize): Remove. + * src/frame/mips/frame.hh (label_framesize_get): Remove. + * src/codegen/mips/asm_fragment.cc (AsmProcFrag::print): + Don't use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@563 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-06 Akim Demaille + + 2003-03-06 Akim Demaille + + * src/type/test-type.cc (cassert): Include. + * src/codegen/mips/asm_fragment.cc (AsmDataFrag::print): Use + "escape" to output strings. + * configure.ac (modules.hh): Don't avoid regalloc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@562 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-05 Benoßt Perrot + + * configure.ac, src/Makefile.am: Re-enable register allocation. + + * src/flowgraph/test-flowgraph.cc: test new register allocation. + + * src/regalloc/libregalloc.hh, src/codegen/codegen-tasks.hh: + redefine register allocation tasks. + * src/task/task_register.cc: fix error messages. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@561 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-05 Benoßt Perrot + + * src/regalloc/libregalloc.cc, * src/regalloc/interference_graph.hh, * src/regalloc/interference_graph.cc, * src/regalloc/colorgraph.hh: Use new graph class. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@560 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-05 Akim Demaille + + Index: ChangeLog from Akim Demaille + + * tests/good/substring.tig: No need to over quote now. + * src/flowgraph/test-flowgraph.cc (assem/all.hh): Include. + * src/graph/graph.hxx (cassert): Include. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@559 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-05 Akim Demaille + + 2003-03-05 Akim Demaille + + * configure.ac, src/Makefile.am: Comment and formatting changes to + sync with the slides of the lecture. + * tests/escapes/escapes-n-recursion.tig: The whole body of "one" + depends on input > 0. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@558 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-03 Benoßt Perrot + + * src/flowgraph/libflowgraph.cc: Adapt flowgraph creation algorithm to new graph class. * src/flowgraph/flowgraph.hh: Include only "assem/instr.hh" instead of "assem/instr.hh". + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@557 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-03 Benoßt Perrot + + * src/graph/graph.hh, src/graph/graph.hxx: Fix some oriented graph's features. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@556 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-01 Benoßt Perrot + + Add new tasks related files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@555 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-03-01 Benoßt Perrot + + * src/graph/graph.hh, src/graph/graph.hxx: Add graph print and dump. * src/graph/test-graph.hh: Test dump. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@554 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-28 Akim Demaille + + Index: ChangeLog from Akim Demaille + + Tasks for instruction selection. + + * src/codegen/libcodegen.hh: Move the declaration of the Tasks + to... + * src/codegen/codegen-tasks.cc, src/codegen/codegen-tasks.hh: + these new files, using FunctionTasks. + Number as 7, to match with T numbers. + + Move global vars into their module. + + * src/tc.cc, src/common.hh (asm_fragment): Move to... + * src/codegen/libcodegen.cc,src/codegen/libcodegen.hh: here. + + Some T7 checks. + + * tests/good/getchar.tig: Disabled, for the time being. + * tests/tc-check.in (tarball_test): Have a minimal check for + --instructions-display. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@553 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-28 Benoßt Perrot + + * src/graph/graph.hh, src/graph/graph.hxx: Add brutal predecessors computation, correct some typo mistakes. * src/graph/test-graph.hh: Test the predecessors. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@552 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-28 Akim Demaille + + Index: ChangeLog from Akim Demaille + + * src/task/libtask.hh: Remove. + * src/task/task-tasks.cc, src/task/task-tasks.hh: New, using + FunctionTasks. + Number from 0, to match with T numbers. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@551 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-28 Akim Demaille + + 2003-02-28 Akim Demaille + + * src/parse/parse-tasks.hh, src/ast/ast-tasks.hh: Comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@550 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-28 Benoßt Perrot + + Some graph's functionnalities should be checked or (re-)implemented. + + * configure.ac, src/Makefile.am: Enable flowgraph, codegen and assem. + * src/type/type-tasks.cc, src/type/type-tasks.hh: New task desing. + + * src/graph/graph.hh, src/graph/graph.hxx: + Add graph orientation. Use aggregation instead of mixin class + for hedge and hnode(for the moment). + * src/flowgraph/flowgraph.hh, + * src/flowgraph/libflowgraph.hh, src/flowgraph/libflowgraph.cc: + Use new graphs. + + * src/codegen/mips/runtime_data.s: Comment getchar + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@549 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-28 Akim Demaille + + 2003-02-28 Akim Demaille + + * src/codegen/mips/codegen.cc (munchCall): Remove a loop remaining + from a patch incorrectly applied. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@548 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-28 Akim Demaille + + 2003-02-28 Akim Demaille + + * src/translate/fragment.hh (ProcFrag::frame_get const): New. + + Import the following patch: + 2003-01-27 Daniel Gazard + + * src/frame/mips/frame.hh (arg_add): New. Resize the frame (if + needed) to make slots for arguments passed on the stack. + (get_current_frame_size): Adjust. Now the frame size is '_offset + + _arg_offset'. + + * src/codegen/mips/codegen.cc (munchCall): Adjust to handle + correctly function call which have more than 4 arguments. + (build_fragment_context): Adjust to move arguments passed on the + stack to their dedicated locations. + + * src/codegen/mips/asm_fragment.cc (print): Call + 'print_label_framesize' before displaying the fragment asm output. + + * src/codegen/mips/asm_fragment.hh (print_label_framesize): New. + + * src/codegen/libcodegen.cc (lir_to_assem): Adjust the 'codegen' + method call. + + * src/codegen/default-codegen.hh (codegen): Add a new parameter + 'frame::Frame&'. The frame is needed to get the name of the label + which hold the frame size of the current fragment. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@547 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-28 Yann Régis-Gianas + + 2003-02-28 Yann Régis-Gianas + + * src/graph/graph.hh: Re-design the Graph class. + * src/graph/graph.hxx: Implement it. + * src/graph/test-graph.cc: New. + * src/graph/node.hh: Remove. + * src/contract.hh: New. + * src/graph/Makefile.am: Add test-graph. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@546 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-28 Akim Demaille + + 2003-02-28 Akim Demaille + + * src/escape.hh (operator<<): Make it inline. + * src/translate/fragment.hh: Escape strings fragments. + * tests/good/getchar.tig: Use double quotes, not simple quotes. + * tests/good/string-escapes.tig, tests/good/string-octal.tig + * tests/good/string-backslash.tig: Rename as... + * tests/good/string-backslash-tortured.tig, + * tests/good/string-backslash-octal.tig, + * tests/good/string-backslash-char.tig: these. + Use call print to check the runtime result. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@545 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-28 Akim Demaille + + 2003-02-28 Akim Demaille + + * tests/good/getchar.in, tests/good/getchar.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@544 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-28 Akim Demaille + + Adjust the ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@543 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-28 Akim Demaille + + 2003-02-28 Akim Demaille + + * tests/tc-check.in (ir_check_one): Admit an additional argument + for the input to provide, as now it is not necessarily at the same + place as the Tiger file (e.g., when compiling an unparsed file). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@542 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-27 Akim Demaille + + 2003-02-27 Akim Demaille + + * tests/tc-check.in ($stdtig): New. + (&ast_check): Run 'tc -A', 'tc -A | tc -A' and compare the + outputs. + Check that this output gives the same result at runtime than the + original file, using the reference compiler and havm. + No longer compare against a reference AST. + Prototype it, as it is used before being defined. + * tests/mk-Makefile-am: Remove '*.ast' targets. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@541 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-27 Yann Régis-Gianas + + 2003-02-27 Yann Régis-Gianas + + * configure.ac: Disable codegen, flowgraph, regalloc modules. + * src/Makefile.am: Likewise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@540 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-27 Akim Demaille + + 2003-02-27 Akim Demaille + + * config/studentize: Be sure to remove the original file. + Add Emacs style comments. + * Makefile.am (studir): Remove existing files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@539 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-26 Akim Demaille + + 2003-02-26 Akim Demaille + + * src/ast/libast.hh: Really include all.hh: too many modules use + *the_program, and therefore need some understanding of Ast classes. + * src/escapes/libescapes.hh: Include libast.hh. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@538 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-26 Akim Demaille + + 2003-02-26 Akim Demaille + + Rename task-foo as foo-tasks. + + * parse/task-parse.hh, ast/task-ast.hh, escapes/task-escapes.hh, + * parse/task-parse.cc, ast/task-ast.cc, escapes/task-escapes.cc: + Rename as... + * parse/parse-tasks.hh, ast/ast-tasks.hh, escapes/escapes-tasks.hh, + * parse/parse-tasks.cc, ast/ast-tasks.cc, escapes/escapes-tasks.cc: + These. + + Adjust modules.hh. + + * configure.ac (modules.hh): Adjust to prefer foo-tasks files over + libfoo.hh. + * src/tc.cc: Adjust. + + Fix include dependency issues. + + * src/ast/decls.hh: Complete. + * src/ast/all.hh: Include it to have it checked. + * src/ast/libast.hh: Include decls.hh which is simpler than + all.hh, and enough in most cases, except... + * src/parse/parsetiger.yy: Include all.hh. + * src/cppgen/libcppgen.hh: Include libast.hh to get the_program. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@537 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-26 Benoßt Perrot + + Add dedicated tasks files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@536 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-26 Benoßt Perrot + + Index: ChangeLog from +2003-02-26 Benoßt Perrot + + * src/tc.cc: Move global variables' definition to + corresponding modules. + + For each task, use a FunctionTask object instead of + derivating and instanciating a new class. + + * src/task/task.hh: Add class FunctionTask. + * src/parse/libparse.hh, src/parse/libparse.cc, + * src/parse/task-parse.hh, src/parse/task-parse.cc: + Move 'parse' related tasks from libparse to dedicated files. + * src/ast/libast.hh, src/ast/libast.cc, + * src/ast/task-ast.hh, src/ast/task-ast.cc: + Move 'ast' related tasks from libparse to dedicated files. + * src/escapes/libescapes.hh, src/escapes/libescapes.cc, + * src/escapes/task-escapes.hh, src/escapes/task-escapes.cc: + Move 'escapes' related tasks from libescapes to dedicated files. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@535 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-25 Akim Demaille + + Index: ChangeLog from 2003-02-25 Akim Demaille + + * src/ast/arrayexp.hh, src/ast/assignexp.hh, src/ast/breakexp.hh, + * src/ast/fieldvar.hh, src/ast/intexp.hh, src/ast/stringexp.hh: + Add student marks. + * tests/tc-check.in: Extend timeouts. + Add style comments. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@534 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-25 Akim Demaille + + 2003-02-25 Akim Demaille + + * tests/tc-check.in: Adjust $timeout uses to 4s and 10s. + src/ast/Makefile.am (libast_a_SOURCES): Remove escapes and cppgen + files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@533 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-25 Akim Demaille + + 2003-02-25 Akim Demaille + + * src/canon/libcanon.hh (class TaskLIRDisplay): Activate it. + * src/codegen/libcodegen.hh: Use TASK_ACTIVATE. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@532 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-25 Akim Demaille + + 2003-02-25 Akim Demaille + + Remains of the previous patch. + + * src/ast/escapes-check-visitor.hh (ast): Adjust "using" uses. + + Student marks. + + * src/ast/print-visitor.hh: Widely extend the student marks: + remove the whole content of PrintVisitor... + * config/studentize: Modernize. + * Makefile.am (studir): Adjust. + + Escapes module. + + * src/ast/libast.cc (escapes_sl_display_p, escapes_tags_display_p) + (escapes_sufficient_check_p, escapes_necessary_check_p, escapes_find) + (escapes_check): Move to... + * src/escapes/libescapes.hh: this new file. + * src/ast/libast.hh (TaskEscapesCheck, TaskEscapesCompute) + (TaskEscapesDisplay, TaskEscapesNecessaryCheck) + (TaskEscapesSlDisplay, TaskEscapesSufficientCheck) + (TaskEscapesTagsDisplay): Move to... + * src/escapes/libescapes.cc: this new file. + * src/ast/escapes-check-visitor.hh, src/ast/escapes-visitor.hh: + Move to... + * src/escapes/escapes-check-visitor.hh, + * src/escapes/escapes-visitor.hh: here. + + + C++ gen module. + + * src/ast/libast.cc (generate_cpp): Move to... + * src/cppgen/libcppgen.cc: this new file. + * src/ast/libast.hh (TaskCppGen): Move to... + * src/cppgen/libcppgen.hh: this new file. + * src/ast/cppgen-visitor.hh: Move to... + * src/cppgen/cppgen-visitor.hh: here. + + Various. + + * src/canon/libcanon.hh: Use TASK_ACTIVATE. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@531 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-25 Akim Demaille + + 2003-02-25 Akim Demaille + + * src/regalloc/libregalloc.hh (class TaskAsmTrace): Fix helping + string. + * src/parse/libparse.hh: Use TASK_ACTIVATE. + * src/parse/Makefile.am (FROM_PARSETIGER_YY): Add position.hh. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@530 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-25 Akim Demaille + + 2003-02-25 Akim Demaille + + * src/ast/default-visitor.hh, src/ast/print-visitor.hh, + * src/ast/escapes-visitor.hh: Don't "using" overloaded methods + from grand parents, just parents. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@529 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-20 Akim Demaille + + 2003-02-20 Akim Demaille + + Use the location as in the latest CVS Bison version instead of our + own. + + * src/ast/position.hh (Position): Define as yy::Position. + * src/ast/location.hh (Location): Define as yy::Location. + * src/parse/parsetiger.yy (location_type): Remove. + * src/parse/scantiger.ll: Adjust to the new Location method names: + lines instead of line, and columns instead of column. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@528 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-19 Akim Demaille + + Index: ChangeLog from +2003-02-19 Akim Demaille + + * src/ast/location.hh: Simplification, to prepare integration into + upstream Bison. + * src/parse/parsetiger.yy (Parser::error_): Call exit_set instead + of using errors. + * src/parse/libparse.hh, src/parse/libparse.cc (errors): Remove, + now useless. + * src/parse/parsetiger.yy: Adjust students marks. + * src/parse/scantiger.ll: Use exit_set. + * src/task/task.hh (class Task): This class is abstract, no need + for a private default ctor. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@527 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-16 Benoßt Perrot + + Add cppgen-visitor.hh to the repository. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@526 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-15 Benoßt Perrot + + Index: ChangeLog from 2003-02-07 Benoßt Perrot * ast/cppgen-visitor.hh, ast/libast.hh, ast/libast.cc: Add Tree As Type generation, provided by Francis Maes. * ast/: Comment visitors and remove some header inclusions. + + +2003-02-07 Benoßt Perrot + + + * ast/: Add last doxygen comments to Ast hierarchy. + + 2003-02-05 Benoßt Perrot + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@525 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-07 Benoßt Perrot + + Index: ChangeLog from +2003-02-07 Benot Perrot + + * ast/: Add last doxygen comments to Ast hierarchy. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@524 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-05 Benoßt Perrot + + Index: ChangeLog from +2003-02-05 Benot Perrot + + * ast/: Add doxygen comments. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@523 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-05 Akim Demaille + + 2003-02-05 Akim Demaille + + * src/escape.hh (operator<<): Be sure to set the width to 2, so + that "0" be printed "00". + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@522 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-05 Akim Demaille + + 2003-02-05 Akim Demaille + + Make sure the strings with weird characters are properly escaped + in the displayed AST. + + * src/escape.hh (operator<<): New. + * tests/cannot-reparse/merge.in, tests/cannot-reparse/merge.tig, + * tests/cannot-reparse/nul-character.tig, + * tests/cannot-reparse/substring.tig, + * tests/cannot-reparse/string-backslash.tig: Move to... + * tests/good/merge.in, tests/good/merge.tig, + * tests/good/nul-character.tig, tests/good/substring.tig, + * tests/good/string-backslash.tig: here. + * tests/cannot-reparse: Remove. + * tests/configure.ac, tests/Makefile.am, tests/tc-check.in: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@521 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-05 Akim Demaille + + Comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@520 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-05 Akim Demaille + + 2003-02-05 Akim Demaille + + * tests/tc-check.in (tarball_test): Be sure to pass --parse when + no action is selected. + * src/parse/libparse.hh (TaskScanTrace::TaskScanTrace) + (TaskParseTrace::TaskParseTrace): Do not depend upon "parse" as it + results in running the parser before setting the option. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@519 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-05 Akim Demaille + + 2003-02-05 Akim Demaille + + * configure.ac: Quote properly. + * src/Makefile.am: Make it fit on a slide. + * src/parse/parsetiger.yy (biglvalue): Define it with a single + lhs. + Minor reformatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@518 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-05 Akim Demaille + + 2003-02-05 Akim Demaille + + * argp/argp-parse.c (parser_parse_next): Add a missing exchange + invocation that cause trailing options to be considered as + arguments. + From Niels Möller. + * argp/argp-help.c (uparam_names): Complete its initialization to + avoid warnings. + * argp/argp-parse.c (argp_default_options, argp_version_options): + Likewise. + * argp/argp-test.c (sub_options, sub_argp, options, argp_children) + (argp): Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@517 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-04 Akim Demaille + + 2003-02-04 Akim Demaille + + * src/parse/scantiger.ll (active_str): Remove, useless (the point + was merely efficiency: winning an indirection per string + manipulation. That's weak). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@516 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-03 Benoßt Perrot + + Index: ChangeLog from +2003-02-03 Benot Perrot + + * parse/: Add doxygen comments. + * ast/: Add doxygen comments. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@515 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-03 Akim Demaille + + 2003-02-03 Akim Demaille + + * tests/type/type-nil.tig: Remove, duplicate with + unconstrained-nil.tig. + * TODO: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@514 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-03 Akim Demaille + + 2003-02-03 Akim Demaille + + * src/canon/test-canon.cc: Remove, useless. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@513 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-03 Akim Demaille + + 2003-02-03 Akim Demaille + + * tests/tc-check.in (interface_check): Exit status is 64 for + unknown option. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@512 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-03 Akim Demaille + + 2003-02-03 Akim Demaille + + * src/regalloc/libregalloc.hh: Some efforts for Doyxgen. + * src/regalloc/libregalloc.cc: Likewise. + (regalloc::RemovePred): Rename as... + (rename::UselessMove): this. + Adjust for the tempmap to be const. + * src/task/task.hh: Comment change. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@511 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-03 Akim Demaille + + 2003-02-03 Akim Demaille + + Wrong file... + + * tests/cannot-reparse/builtins.in, tests/cannot-reparse/builtins.tig: + Move to... + * tests/good/builtins.in, tests/good/builtins.tig: here. + * tests/good/substring.tig: Move to... + * tests/cannot-reparse/substring.tig: here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@510 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-03 Akim Demaille + + 2003-02-03 Akim Demaille + + * tests/good/builtins.in, tests/good/builtins.tig: Move to... + * tests/cannot-reparse/builtins.in, tests/cannot-reparse/builtins.tig: + here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@509 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-03 Akim Demaille + + 2003-02-03 Akim Demaille + + * tests/tc-check.in (tarball_test): Be sure to pass + --escapes-compute early enough (i.e., before -H, -S etc.). + (&run): Specify the timeout value when it's over. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@508 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-03 Akim Demaille + + 2003-02-03 Akim Demaille + + * src/graph/node.hh: Formatting changes. + (goes_to): Simplify the code. + (come_from): Likewise. + Rename as... + (comes_from): this. + * src/regalloc/colorgraph.hh: Formatting/comment changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@507 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-02-03 Akim Demaille + + 2003-02-03 Akim Demaille + + * tests/good/fact.tig: Display the result. + * tests/mk-Makefile-am: Make the Makefile.am read only. + Be sure to pass --escapes-compute before -H/-L. + Format the output so that we fit in 80cols. + Have the output files depend upon Makefile.am. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@506 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-31 Akim Demaille + + 2003-01-31 Akim Demaille + + * Makefile.am (studir): Add .hxx. + * src/parse/Makefile.am (MAINTAINERCLEANFILES): New. + * src/symbol/symbol.hxx (symbol): Add student marks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@505 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-31 Akim Demaille + + 2003-01-31 Akim Demaille + + * tests/escapes/escapes-n-recursion.tig: New. + * src/ast/test-ast.cc (exit_status): Is exit_t. + * src/codegen/mips/test-rw_prg.cc (program_name): Is const. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@504 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-31 Akim Demaille + + 2003-01-31 Akim Demaille + + * src/tc.cc (exit_set): Move it back to... + * src/common.hh (exit_set): here, so that test files can use it. + * configure.ac (CXXFLAGS): Set them instead of extending them. + * src/ast/test-ast.cc (program_name): Is const. + * src/task/task_register.cc (parse_opt): Let the switch be the + outer most instruction to match argp usage. + * src/ast/libast.hh, src/canon/libcanon.hh, src/parse/libparse.hh, + * src/translate/libtranslate.hh, src/type/libtype.hh, + * src/regalloc/libregalloc.hh, src/codegen/libcodegen.hh, + * src/task/libtask.hh: Remove the useless inclusions of + task_register.hh. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@503 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-30 Akim Demaille + + 2003-01-30 Akim Demaille + + * src/common.hh, src/tc.cc (program_name): Be const. + Be initialized before main is called. + * src/common.hh (exit_set): Declare it here, and move the + definition into.. + * src/tc.cc: here. + * src/regalloc/libregalloc.cc, src/regalloc/interference_graph.cc: + Comment changes. + * tests/tc-check.in: Invoke G++ 3.2, not 3.0. + * src/task/libtask.hh (TaskPrintTaskOrder::TaskPrintTaskOrder): + Don't register yourself, as it's already done in the parent ctor. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@502 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-30 Akim Demaille + + 2003-01-30 Akim Demaille + + * src/regalloc/set.hh (regalloc): Fix CPP guard name. + * src/graph/node.hh, src/flowgraph/libflowgraph.hh, + * src/regalloc/set.hh, src/assem/move.hh, src/assem/label.hh: + Remove RCS keywords. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@501 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-29 Akim Demaille + + 2003-01-29 Akim Demaille + + Register in Task. + Suggested by Nicolas Tisserand. + + * src/task/task_register.hh: Don't include task.hh. + (class Task): New forward declaration. + * src/task/task_register.cc: Include task.hh. + * src/task/task.hh (Task::Task): Register the task once + instantiated. + * src/ast/libast.hh, src/canon/libcanon.hh, src/parse/libparse.hh, + * src/translate/libtranslate.hh, src/type/libtype.hh, + * src/regalloc/libregalloc.hh, src/codegen/libcodegen.hh, + * src/task/libtask.hh: Don't register the task in the ctors, as + it's done in Task. + + Portability to NetBSD. + + * src/codegen/mips/asm_fragment.cc (mips): Don't display the + time. + * src/task/Makefile.am (INCLUDES): Don't forget to -I argp/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@500 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-29 Benoßt Perrot + + Index: ChangeLog from +2003-01-27 Benot Perrot + + * src/task/task_register.hh, + * src/task/task_register.cc: Need argp only in .cc, + other files that include task_register.hh do not need + "argp.h" any more. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@499 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-29 Akim Demaille + + 2003-01-29 Akim Demaille + + It finally (seems to) works under NetBSD. + + * configure.ac, tests/configure.ac: Bump to 0.51. + * src/ast/Makefile.am, src/canon/Makefile.am, + * src/frame/Makefile.am, src/parse/Makefile.am, + * src/type/Makefile.am, src/symbol/Makefile.am, + * src/temp/Makefile.am, src/translate/Makefile.am, + * src/flowgraph/Makefile.am, src/regalloc/Makefile.am, + * src/assem/Makefile.am, src/codegen/Makefile.am, + (INCLUDES): Add -I $(top_srcdir)/argp. + * src/task/task_register.hh (struct argp_state): Remove. + Include argp.h. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@498 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-29 Akim Demaille + + 2003-01-29 Akim Demaille + + * src/task/task_register.cc (argp_program_version): Use + PACKAGE_STRING. + (argp_program_bug_address): New. + * src/task/libtask.hh (TASK_ACTIVATE): Use it. + * src/task/task_register.hh: Don't actually include argp.h, + just... + (struct argp_state): Forward declare. + Now, we need -I argp/ only in task/. + * Makefile.am (SUBDIRS): Don't forget to go into argp/... + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@497 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-29 Akim Demaille + + 2003-01-29 Akim Demaille + + We don't need getopt, so we no longer need lib/. + + * configure.ac: Adjust, and remove the checks for a C compiler. + * src/Makefile.am (tc_LDADD): Remove lib.a. + * lib/Makefile.am, lib/getopt1.c, lib/getopt.c, lib/getopt.h: Remove. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@496 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-29 Akim Demaille + + 2003-01-29 Akim Demaille + + * src/task/Makefile.am (INCLUDES): Look into argp/. + * src/task/task.hh: Don't include getopt.h, as we no longer use + it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@495 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-29 Akim Demaille + + 2003-01-29 Akim Demaille + + Import argp-standalone-1.1, plus some modifications. + + * argp/Makefile.am, argp/configure.in, argp/mempcpy.c, + * argp/strchrnul.c, argp/strndup.c, argp/argp-ba.c, + * argp/argp-eexst.c, argp/argp-fmtstream.c, argp/argp-help.c, + * argp/argp-parse.c, argp/argp-pv.c, argp/argp-pvh.c, + * argp/argp-test.c, argp/argp.h, argp/argp-fmtstream.h, + * argp/argp-namefrob.h, argp/Versions: New. + * configure.ac: Adjust. + * src/Makefile.am (tc_LDADD): Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@494 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-29 Akim Demaille + + 2003-01-29 Akim Demaille + + * src/ast/libast.hh, src/canon/libcanon.hh, src/parse/libparse.hh, + * src/translate/libtranslate.hh, src/type/libtype.hh, + * src/regalloc/libregalloc.hh, src/codegen/libcodegen.hh + * src/task/libtask.hh: s/(d)>/$1./, i.e., use `1. title' instead + of `1> title'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@493 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-29 Akim Demaille + + 2003-01-29 Akim Demaille + + * src/ast/libast.hh (class TaskEscapesNecessaryCheck) + (class TaskEscapesSufficientCheck): Remove useless --help + information. + Use TASK_ACTIVATE instead of hard coded instantiations. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@492 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-29 Akim Demaille + + 2003-01-29 Akim Demaille + + Implement --asm-trace and --asm-coalesce-disable. + + * src/task/task_register.hh (TASK_ACTIVATE): New. + * src/common.hh, src/tc.cc (coalesce_enable_p, regalloc_trace_p): + Move to... + * src/regalloc/regalloc.hh, src/regalloc/libregalloc.cc: here. + Let them be bool now that we no longer use getopt. + Enable coalescence by default! + * src/regalloc/libregalloc.hh (class TaskAsmTrace) + (class TaskCoalesceDisable): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@491 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-29 Akim Demaille + + 2003-01-29 Akim Demaille + + * src/ast/libast.cc (print): Don't issue an ending newline. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@490 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-28 Akim Demaille + + 2003-01-28 Akim Demaille + + distcheck passes again. + + * src/Makefile.am (DISTCLEANFILES): New. + * src/codegen/mips/Makefile.am (CLEANFILES): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@489 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-28 Akim Demaille + + 2003-01-28 Akim Demaille + + * src/codegen/mips/Makefile.am: Be sure to distribute runtime_data.s. + (INCLUDES): Be sure to look for it there. + * tests/tc-check.in: Remove all the references to `-l' as + `--locations-display' as it's dead now. + * configure.ac (PACKAGE_TARNAME): Rename as... + (AC_PACKAGE_TARNAME): this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@488 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-28 Akim Demaille + + 2003-01-28 Akim Demaille + + * src/translate/libtranslate.hh (class TaskHIRUseIfExp): It does + *not* depend upon hir-compute, since that means that the HIR will + be computed *before* that we decide to use the IfThenElseExp. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@487 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-28 Akim Demaille + + 2003-01-28 Akim Demaille + + * src/options/liboptions.hh: Rename as... + * src/task/libtask.hh: this. + Remove dead comments. + Adjust the CPP guard. + * src/options: Remove this directory. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@486 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-28 Akim Demaille + + 2003-01-28 Akim Demaille + + * src/codegen/mips/Makefile.am (noinst_DATA): Don't forget to ship + runtime_data.s. + * src/tc.cc, src/ast/location.hh, src/ast/test-ast.cc + (locations_display_p): Remove. + * src/options/liboptions.hh (TaskLocations): Remove. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@485 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-28 Akim Demaille + + 2003-01-28 Akim Demaille + + * src/options/Makefile.am (EXTRA_DIST): There is no README. + (noinst_LIBRARIES): There is no liboptions.a to build, as there is + no code in it. + Reported by Nicolas Tisserand. + * src/Makefile.am (tc_LDADD): Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@484 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-28 Akim Demaille + + 2003-01-28 Akim Demaille + + * src/task/task.hh (Task::Task): Fix the documentation. + * doc/Makefile.am, doc/Doxyfile.in: New. + * configure.ac: Have a better package name. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@483 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-28 Akim Demaille + + 2003-01-28 Akim Demaille + + * config/tc-check.in: Move to... + * tests/tc-check.in: here. + Die if you can't find the test files. + * config/Makefile.am, tests/Makefile.am (bin_SCRIPTS): Adjust. + * tests/configure.ac, configure.ac: Adjust. + Rename the packages as `tc' and `tc-tests'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@482 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-27 Benoßt Perrot + + Index: ChangeLog from +2003-01-27 Benot Perrot + + * src/task/task_register.cc, + * src/task/task_register.hh: Use argp instead of getopt. + * src/task/task.hh: Define argp compliant interface. + * src/ast/libast.hh, + * src/canon/libcanon.hh, + * src/codegen/libcodegen.hh, + * src/options/liboptions.hh, + * src/parse/libparse.hh, + * src/regalloc/libregalloc.hh, + * src/translate/libtranslate.hh, + * src/type/libtype.hh: Use new interface of Task class. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@481 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-27 Akim Demaille + + 2003-01-27 Akim Demaille + + * src/type/libtype.hh (TaskTypesCheck): Does depend upon parse. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@480 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-27 Akim Demaille + + Index: ChangeLog from +2003-01-27 Akim Demaille + + * src/type/libtype.hh (class TaskTypesCheck): Does *not* depend + upon escapes-compute. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@479 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-24 Akim Demaille + + 2003-01-24 Akim Demaille + + * src/codegen/mips/runtime_data.s: Remove what was related to the + fact that this file was embedded into a C++ string, i.e., replace + \" with ". + * src/codegen/mips/Makefile.am (runtime_data.hh): Escape / and ". + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@478 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-24 Akim Demaille + + Remove depcomp and the others. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@477 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-24 Akim Demaille + + 2003-01-24 Akim Demaille + + * tests/good/evalexp.tig, tests/good/evalexp.in: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@476 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-24 Akim Demaille + + 2003-01-24 Akim Demaille + + * tests/good/chr.tig, tests/good/concat.tig, + * tests/good/substring.tig: New. + * src/codegen/mips/runtime_data.s (substring, concat): Make sure + to allocate strlen + 5 bytes: 4 for the length of the string, and + 1 byte to let `print' put the ending `0' is requires. This is + because we rely on a C-string print service. + (substring): Fix many bugs. In particular, be sure to store the + correct length of the string. + (alloc): New. + Make sure we always allocate multiples of 4, otherwise we might + create non aligned memory, which guarantees failures (for instance + when accessing the size of a string). + Make sure no one use the sbrk call, but only this alloc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@475 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-24 Benoßt Perrot + + Index: ChangeLog from +2003-01-24 Benoßt Perrot + + * src/task/task.hh, + * src/task/task_register.cc, + * src/task/task_register.hh: Add doxygen comments. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@474 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-23 Akim Demaille + + 2003-01-23 Akim Demaille + + * src/translate/level-env.hh (translate): Don't use "not" as label + name, since that clashes with the MIPS assembly `not' instruction. + * src/codegen/mips/runtime_data.s (_not): Rename as... + (not): this. + * tests/good/builtins.tig: Really fix this test. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@473 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-23 Akim Demaille + + 2003-01-23 Akim Demaille + + * src/codegen/mips/runtime_data.s (strcmp): Reimplement + completely: the code was just comparing whether two strings are + equal. + (getchar): Return the empty string on EOF. + * src/translate/translation.hh (translate): Fix a huge bug that + caused all the ordering of the strings to be reversed. + Note that HAVM had it wrong too, so the results were correct! + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@472 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-23 Akim Demaille + + 2003-01-23 Akim Demaille + + * config/tc-check.in (tarball_test): Be really nice on the timeout + when generating the asm. + * src/codegen/mips/Makefile.am (runtime_data.hh): New target, + built from runtime_data.s. + * src/codegen/mips/runtime_data.s: New, from the former + runtime_data.hh. + (exit): New. + * tests/good/builtins.tig (my_int): Be smaller, so that the + substring called be valid. + * src/codegen/mips/codegen.cc (Codegen::munchCall): Fix the + counting of the number of arguments passed to the functions. + * tests/good/big-lvalue.tig, tests/good/field-of-field.tig: Fix: + make sure we don't dereference `nil'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@471 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-19 Akim Demaille + + 2003-01-19 Akim Demaille + + * config/tc-check.in ($spim, &asm_check, &asm_check_one): New. + * src/ast/test-ast.cc (program_name): New. + * src/codegen/mips/test-rw_prg.cc: Comments changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@470 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-19 Akim Demaille + + 2003-01-19 Akim Demaille + + * configure.ac (CXXFLAGS): Fix a typo that caused its definition + to be skipped. + * tests/Makefile.am (EXTRA_DIST): Add mk-Makefile-am. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@469 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-19 Akim Demaille + + 2003-01-18 Akim Demaille + + Finish the integration of the code from Daniel Gazard & Co. + Warning: The previous checkin was broken. + + * src/graph/Makefile.am, src/graph/node.hh, src/graph/graph.hh: + New. + + * src/flowgraph/test-flowgraph.cc, src/flowgraph/libflowgraph.hh, + * src/flowgraph/libflowgraph.cc, src/flowgraph/flowgraph.hh, + * src/flowgraph/Makefile.am: New. + + * src/regalloc/test-regalloc.cc, src/regalloc/libregalloc.hh, + * src/regalloc/libregalloc.cc, src/regalloc/regalloc.hh, + * src/regalloc/interference_graph.hh, + * src/regalloc/interference_graph.cc, src/regalloc/colorgraph.hh, + * src/regalloc/Makefile.am, src/regalloc/set.hh: New. + + * src/assem/Makefile.am, src/assem/oper.hh, src/assem/move.hh, + * src/assem/label.hh, src/assem/instr.hh, src/assem/all.hh: New. + + * src/codegen/libcodegen.hh, src/codegen/libcodegen.cc, + * src/codegen/default-codegen.hh, src/codegen/Makefile.am, + * src/codegen/asm_fragment.hh, src/codegen/fragment.hh, + * src/codegen/target.hh: New. + + * src/codegen/mips/test-rw_prg.cc, + src/codegen/mips/asm_fragment.cc, + * src/codegen/mips/asm_fragment.hh, src/codegen/mips/codegen.hh, + * src/codegen/mips/codegen.cc, src/codegen/mips/Makefile.am, + * src/codegen/mips/fragment.hh, src/codegen/mips/runtime_data.hh, + * src/codegen/mips/mips.hh: New. + + * configure.ac (CFLAGS, CXXFLAGS): Pass -pipe. + Adjust to the new directories. + Bump to version 0.50. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@468 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-19 Akim Demaille + + 2003-01-18 Akim Demaille + + * src/translate/level.hh (frame_get, frame_size_get): New. + * src/translate/fragment.hh (DataFrag::label_get, DataFrag::data_get) + (ProcFrag::label_get, ProcFrag::name_get, ProcFrag::frame_get): + New. + * src/translate/translation.hh (procedureDec, functionDec): The + frame argument is no longer const. + * src/translate/libtranslate.hh, src/translate/libtranslate.cc + (translate): Takes an ast::Exp, not an ast::Ast. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@467 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-19 Akim Demaille + + 2003-01-19 Akim Demaille + + * src/canon/libcanon.hh, src/parse/libparse.hh: Cleanup. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@466 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-19 Akim Demaille + + 2003-01-19 Akim Demaille + + * src/frame/access.hh (temp_get): New. + * src/temp/label.hh (string_get, labels_t): New. + * src/temp/temp.hh (string_get, temps_t): New. + * src/frame/frame.hh: Move most of its body into.. + * src/frame/mips/frame.hh: here. + (return_value_get, register_nb_get, asm_zero_get, + (asm_frame_pointer_get, asm_stack_pointer_get, + (asm_return_value_get, asm_return_address_get, word_size_get) + (get_current_frame_size, callee_save_registers_get) + (caller_save_registers_get, argument_registers_get) + (registers_map_get, color_registers_set_get) + (argument_registers_list_get, non_coleasceable_reg_get) + (argument_registers_size_get): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@465 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-19 Akim Demaille + + 2003-01-19 Akim Demaille + + Equip Tree with a quick means to detect the kind of the nodes. + + * src/tree/node.hh: (kind_note_t): New. + * src/tree/binop.hh, src/tree/call.hh, src/tree/cjump.hh, + * src/tree/const.hh, src/tree/eseq.hh, src/tree/jump.hh, + * src/tree/label.hh, src/tree/mem.hh, src/tree/move.hh, + * src/tree/name.hh, src/tree/seq.hh, src/tree/sxp.hh, + * src/tree/temp.hh (kind_get): New. + * src/tree/binop.hh (oper_get): New. + * src/tree/cjump.hh (relop_get): New. + Use `const' and `&' appropriately. + * src/tree/temp.hh (temp_get): New. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@464 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-19 Akim Demaille + + 2003-01-19 Akim Demaille + + * src/task/task_register.cc (register_task, build_options_struct) + (add_task_to_execute, resolve_dependency): Try to provide + informative messages instead of dummy abort. + More is needed. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@463 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-17 Akim Demaille + + 2003-01-17 Akim Demaille + + * config/tc-check.in ($timeout): Bump to 4. + * src/tc.cc: Include common.hh, but not options/liboptions.hh. + Condition the declaration of the_program and fragments with the + inclusion of the appropriate modules. + * src/ast/libast.hh: Fix the name of the guard. + * tests/good/print-tree.tig: Do output something! + * src/options/liboptions.hh: Include common.hh. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@462 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-15 Akim Demaille + + 2003-01-15 Akim Demaille + + * src/tc.cc (escapes_compute_p, escapes_display_p): Remove, dead. + (escapes_sl_display_p, escapes_tags_display_p) + (escapes_sufficient_check_p, escapes_necessary_check_p): Move to... + * src/ast/libast.cc, src/ast/libast.hh: here. + * src/tc.cc (hir_use_ifexp_p): Move to... + * src/translate/libtranslate.hh, src/translate/libtranslate.cc: here. + * src/common.hh: Adjust: remove dead declarations. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@461 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-15 Akim Demaille + + 2003-01-15 Akim Demaille + + * src/tc.cc (types_check_p, hir_compute_p, hir_display_p) + (lir_compute_p, canon_display_p, lir_display_pint, ast_display_p): + Remove, dead. + (scan_trace_p, parse_trace_p): Move to... + * src/parse/libparse.h, src/parse/libparse.cc: here. + Move global functions into the `parse' namespace. + Adjust dependencies. + * src/parse/parsetiger.yy: Include libparse.hh. + Don't declare the_program and errors. + * src/options/liboptions.hh: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@460 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-13 Akim Demaille + + 2003-01-13 Akim Demaille + + * src/ast/print-visitor.hh (PrintVisitor::print (const StringExp): + Likewise. + * src/translate/fragment.hh (DataFrag::print): Don't forget to + include the quotes when outputing strings. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@459 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-10 Akim Demaille + + 2003-01-10 Akim Demaille + + Version 0.20. + + * configure.ac (modules.hh): Don't include src/ in the paths. + Don't use `tempdir' which is not portable (to NetBSD for instance). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@458 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-10 Akim Demaille + + 2003-01-10 Akim Demaille + + Remove the uses of quotearg which is too demanding for a simple + C++ project (it requires xmalloc, mbrtowc, error, gettext etc.). + + * m4/Makefile.am, m4/c-bs-a.m4, m4/malloc.m4, m4/mbrtowc.m4 + * m4/mbstate_t.m4, m4/prereq.m4, m4/realloc.m4, m4: Remove. + * configure.ac, Makefile.am: Adjust. + * configure.ac (modules.hh): Fix the location of move-if-change. + Do not include "src/" in the header location. + Make sure "src/" exists (this is not the case when src != build). + Don't hard code the list of possible modules. + Don't rely on src = build when looking for libfoo.hh. + (jm_PREREQ_QUOTEARG, jm_FUNC_MALLOC, jm_FUNC_REALLOC): Remove + invocations. + Require Autoconf 2.57. + * lib/quotearg.h, lib/quotearg.c, lib/xalloc.h, lib/xmalloc.c: + Remove. + * lib/Makefile.am, src/ast/print-visitor.hh, + * src/translate/fragment.hh: Adjust. + * config/Makefile.am (spy-macro): Remove. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@457 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-09 Akim Demaille + + 2003-01-09 Akim Demaille + + * config/tc-check.in ($timeout): Bump to 3. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@456 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2003-01-09 Akim Demaille + + 2003-01-09 Akim Demaille + + * tests/mk-Makefile-am (RUN_TC): --display-locations is dead, use + -l. + * tests/tests.mk (Makefile.am): New target. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@455 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-11-14 Yann Régis-Gianas + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@454 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-11-14 Yann Régis-Gianas + + modules.hh generation. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@453 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-11-06 QuÎc Peyrot + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@452 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-11-06 Akim Demaille + + 2002-11-06 Akim Demaille + + * src/parse/parsetiger.yy (%pure-parser): Remove, makes no sense + for C++. + (%error-verbose): Use it, it's cleaner that YYERROR_VERBOSE. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@451 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-10-30 Akim Demaille + + 2002-10-30 Akim Demaille + + * src/task/task_register.cc (usage): exit 0 on --help, not 1. + (usage): New: mod_task_t, mod_tasks_t. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@450 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-10-29 QuÎc Peyrot + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@449 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-10-29 Akim Demaille + + 2002-10-29 Akim Demaille + + * src/task/task_register.cc: Include `algorithm' so that the code + compiles. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@448 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-10-29 Akim Demaille + + Fix the ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@447 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-10-29 Akim Demaille + + Fix the ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@446 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-10-29 Akim Demaille + + 2002-10-24 Akim Demaille + + * config/tc-check.in (ast_check): Replace a trailing + `location-display' with -l. + (&log_open, &log_close): Receive the $log_name instead of + computing it. + (&tarball_test_wrapper): Adjust, compute band use $log_name. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@445 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-10-29 QuÎc Peyrot + + 2002-10-29 QuÎc Peyrot + + * src/tc.cc: Remove useless function usage(). + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@444 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-10-29 QuÎc Peyrot + + 2002-10-29 QuÎc Peyrot + + * Task system for command line options (see src/task/README): + * src/options/task_help.hh: New. + * src/options/task_help.cc: Likewise. + * src/options/task_printtaskorder.hh: Likewise. + * src/options/task_printtaskorder.cc: Likewise. + * src/options/task_printtasklist.hh: Likewise. + * src/options/task_printtasklist.cc: Likewise. + * src/options/liboptions.hh: Likewise. + * src/options/task_version.hh: Likewise. + * src/options/task_version.cc: Likewise. + * src/options/task_locations.hh: Likewise. + * src/options/task_locations.cc: Likewise. + * src/options/Makefile.am: Likewise. + * src/task/README: Likewise. + * src/task/Makefile.am: Likewise. + * src/task/task_register.cc: Likewise. + * src/task/task_register.hh: Likewise. + * src/task/task.hh: Likewise. + * src/type/task_typescheck.hh: Likewise. + * src/type/task_typescheck.cc: Likewise. + * src/translate/task_hiruseifexp.hh: Likewise. + * src/translate/task_hiruseifexp.cc: Likewise. + * src/translate/task_hirdisplay.hh: Likewise. + * src/translate/task_hirdisplay.cc: Likewise. + * src/translate/task_hircompute.hh: Likewise. + * src/translate/task_hircompute.cc: Likewise. + * src/parse/task_parsetrace.hh: Likewise. + * src/parse/task_parsetrace.cc: Likewise. + * src/parse/task_scantrace.hh: Likewise. + * src/parse/task_scantrace.cc: Likewise. + * src/parse/task_parse.cc: Likewise. + * src/parse/task_parse.hh: Likewise. + * src/canon/task_tracetrace.hh: Likewise. + * src/canon/task_canontrace.hh: Likewise. + * src/canon/task_tracetrace.cc: Likewise. + * src/canon/task_lirdisplay.hh: Likewise. + * src/canon/task_lirdisplay.cc: Likewise. + * src/canon/task_canontrace.cc: Likewise. + * src/canon/task_maketraces.hh: Likewise. + * src/canon/task_maketraces.cc: Likewise. + * src/canon/task_canondisplay.hh: Likewise. + * src/canon/task_canondisplay.cc: Likewise. + * src/canon/task_canonicalize.hh: Likewise. + * src/canon/task_canonicalize.cc: Likewise. + * src/canon/task_lircompute.hh: Likewise. + * src/canon/task_lircompute.cc: Likewise. + * src/ast/task_escapesnecessarycheck.hh: Likewise. + * src/ast/task_escapesnecessarycheck.cc: Likewise. + * src/ast/task_escapessufficientcheck.cc: Likewise. + * src/ast/task_escapessufficientcheck.hh: Likewise. + * src/ast/task_escapestagsdisplay.hh: Likewise. + * src/ast/task_escapestagsdisplay.cc: Likewise. + * src/ast/task_escapescheck.hh: Likewise. + * src/ast/task_escapescompute.hh: Likewise. + * src/ast/task_escapescompute.cc: Likewise. + * src/ast/task_escapescheck.cc: Likewise. + * src/ast/task_escapesdisplay.hh: Likewise. + * src/ast/task_escapesdisplay.cc: Likewise. + * src/ast/task_escapessldisplay.hh: Likewise. + * src/ast/task_astdisplay.cc: Likewise. + * src/ast/task_astdisplay.hh: Likewise. + * src/ast/task_escapessldisplay.cc: Likewise. + * src/common.hh: Add some external declarations. + * src/tc.cc: Now use task system. + * ast/libast.hh: Add task instanciations + * parse/libparse.hh: Likewise. + * type/libtype.hh: Likewise. + * translate/libtranslate.hh: Likewise. + * canon/libcanon.hh: Likewise. + * AUTHORS: Add QuÎc Peyrot. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@443 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-10-24 Akim Demaille + + Index: ChangeLog from Akim Demaille + + * src/parse/parsetiger.yy (ltype): Rename as `location_type'. + Reported by Quoc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@442 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-10-22 Akim Demaille + + 2002-10-22 Akim Demaille + + * configure.ac: Autoconf 2.54 and Automake 1.7.1. + (tc-check): Make it readonly so that I stop editing it instead of + tc-check.in :(. + * src/tc.cc (main): Remove dead options. + * config/logeval-to-csv ($debug): New. + (@files): Catch .log.bz2. + Adjust the main loop. + * config/tc-check.in: Adjust to new options. + Use `-l' for --locations-print. + Comment out the optional parts checking. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@441 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-10-04 Akim Demaille + + 2002-10-04 Akim Demaille + + * config/tc-check.in: Simplify the syntax. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@440 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-10-04 Akim Demaille + + 2002-10-04 Akim Demaille + + * config/tc-check.in (&test_failure): New. + Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@439 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-10-04 Akim Demaille + + 2002-10-04 Akim Demaille + + * config/tc-check.in: Put `sort' before all `keys'. + Use consistenly `@failures' and `%summary', no mixes such as + `@summary'. + Display the file names first in error messages. + Create the log files in /tmp instead of the current directory. + (&summary): The list of failures in a... list, not a string. + (&run): Strip the path to tests. + (@res): Remove. + (&try_files): Return the list of failures. + Have a different error message for wrong exit status and signals. + No Longer try to classify failures. + (&run_tests): It takes a list of dirs, not a hash! + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@438 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-09-06 Akim Demaille + + 2002-09-06 Akim Demaille + + * config/logeval-to-csv, config/tc-check.in: Many changes to make + the handling of the various stages more uniform. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@437 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-09-06 Akim Demaille + + More best-of. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@436 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-30 Nicolas Burrus + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@435 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-29 Akim Demaille + + 2002-07-29 Akim Demaille + + * config/tc-check.in (&summary): New. + Use it everywhere instead of adhoc schemes. + (&try_dir): Remove. + (&run_tests): Now that each run_tests invocation has a single + expected exit status, take a list of directories as argument, + instead of a hash. + Adjust all invocations. + * src/canon/basic-block.hh: Fix the nodes_t ctor invocation. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@434 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-29 Akim Demaille + + 2002-07-29 Akim Demaille + + * configure.ac: Adjust to using other C++ compilers than G++. + * src/ast/escapes-check-visitor.hh, src/ast/print-visitor.hh, + * src/translate/translate-visitor.hh, src/type/type-visitor.hh + [!__COMO__]: Do not import methods from grand parents, just + immediate parents. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@433 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-25 Nicolas Tisserand + + 2002-07-25 Nicolas Tisserand + + * tools/toc.php: support for new canonicalization options + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@432 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-25 Akim Demaille + + 2002-07-25 Akim Demaille + + * src/common.hh (lir_trace_p): Remove. + * src/canon/libcanon.cc (canon_trace_p, trace_trace_p): New, + replace + (lir_trace_p): this. + Adjust dependencies. + * src/canon/canon.hh: Include libcanon.hh. + * src/tc.cc (canon_display_p): New. + Remove --lir-trace support. + Implement -C, --canon-display, --canon-trace, --trace-trace + support. + (hir_to_lir): Replace with... + (canonicalize, make_traces): these. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@431 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-24 Akim Demaille + + 2002-07-24 Akim Demaille + + * tests/type/order-arrays.tig: New. + * config/logeval-to-csv: Accept .log.gz files. + * config/tc-check.in (ast_check): Don't create .ast files... + * tests/mk-Makefile-am: do it. + * tests/good/for-up-to-32bits.tig: Don't exit != 0, since that + looks like HAVM is rejecting the file. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@430 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-17 Akim Demaille + + 2002-07-17 Akim Demaille + + * tests/good/queens.tig (N): From 6 to 5: the timeout is sometimes + trigerred too violently. + * config/tc-check.in (&run): Better timeout message. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@429 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-17 Akim Demaille + + 2002-07-17 Akim Demaille + + * tests/good/scopes-protect-types.tig: New. + * src/parse/Makefile.am (parsetiger.cc): Use -ra instead of -v. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@428 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-16 Raphaël Poss + + 2002-07-16 Raphaël Poss + + * src/parse/scantiger.ll: Beat me hard. There was no memory + leak, and "EOF in string" errors happen only once. Now nearly + back to normal. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@427 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-16 Akim Demaille + + 2002-07-16 Akim Demaille + + * m4/Makefile.am, m4/c-bs-a.m4, m4/malloc.m4, m4/mbrtowc.m4, + * m4/mbstate_t.m4, m4/prereq.m4, m4/realloc.m4, lib/quotearg.h, + * lib/quotearg.c, lib/xalloc.h, lib/xmalloc.c: New. + * configure.ac, Makefile.am, lib/Makefile.am, src/Makefile.am: Adjust. + + * src/ast/print-visitor.hh, src/translate/fragment.hh: Use + quotearg, not out_string. + + * config/tc-check.in: Use a better regex to check a tarball + content. + + * src/parse/parse.hh: Include parsetiger.hh. + * src/parse/parsetiger.yy: Include parse.hh *after* yystype was + defined. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@426 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-16 Raphaël Poss + + 2002-07-16 Raphaël Poss + + * src/parse/scantiger.ll: Fix a memory leak occuring when + many "EOF in string" errors happen. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@425 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-15 Raphaël Poss + + ChangeLog: fix + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@424 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-15 Raphaël Poss + + 2002-07-15 Raphaël Poss + + Make distcheck works again. + + * src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, + * src/parse/scan.hh, + * src/parse/location.hh: Add, because a special non-public bison + version is needed to generate these. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@423 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-15 Raphaël Poss + + 2002-07-15 Raphaël Poss + + Make distcheck works again. + + * src/Makefile.am, + * src/ast/print-visitor.hh, + * src/translate/fragment.hh, + * src/out_string.hh: Factorize string output. Escape special + characters ('n', dquote) + * src/parse/parsetiger.cc, + * src/parse/parsetiger.hh, + * src/parse/scan.hh, + * src/parse/location.hh, + * config/tc-check.in: Look for havm in environment variable. + Improper havm behaviour no longer aborts the testsuite (the + testsuite can still be run with a bogus havm wrapper). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@422 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-11 Raphaël Poss + + 2002-07-11 Raphaël Poss + + * src/ast/print-visitor.hh, + * src/ast/libast.cc: Enhance the AST pretty-printer. + * TODO: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@421 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-11 Raphaël Poss + + 2002-07-11 Raphaël Poss + + * src/ast/default-visitor.hh, + * src/ast/escapes-visitor.hh, + * src/ast/escapes-check-visitor.hh, + * src/ast/print-visitor.hh, + * src/translate/translate-visitor.hh, + * src/type/type-visitor.hh: Tweak to compile with gcc 2.95 again. + * src/canon/canon.hh: Fix a missing 'const' cast warned by gcc + 2.95. + * src/parse/Makefile.am: Make the parsetiger.yy relative to + $(srcdir) (fix make distcheck). Use lalr1.cc instead of bison.c++ + as the bison skeleton file. + * src/parse/parsetiger.yy: Fix to compile with recent bison 1.49b. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@420 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-11 Akim Demaille + + 2002-07-11 Akim Demaille + + * config/tc-check.in (parse_arguments): More wrapping. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@419 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-11 Akim Demaille + + 2002-07-11 Akim Demaille + + * src/tc.cc: Support standard short options. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@418 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-11 Akim Demaille + + 2002-07-11 Akim Demaille + + * config/tc-check.in (tarball_test): Make better summaries. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@417 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-11 Akim Demaille + + 2002-07-11 Akim Demaille + + `Main' does not need a static link. + Version 0.18. + + * src/translate/level.hh, src/translate/level.cc (Level::Level): + Remove the naive constructor: one must specify if a sl is needed + and whether it escapes for all the functions. + * src/translate/translate-visitor.hh + (TranslateVisitor::TranslateVisitor): `Main' does not need a + static link. + * src/translate/fragment.hh (translate): Don't ``allocate'' a + frame when not needed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@416 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-11 Akim Demaille + + 2002-07-11 Akim Demaille + + * config/tc-check.in (&escapes_check): Split into two invocations: + one for default escapes, another for computed escapes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@415 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-11 Akim Demaille + + 2002-07-11 Akim Demaille + + * config/tc-check.in (&run): Return $?. + (&interface_check, &log_open, &log_close): New. + * tests/escapes/redeclaration.tig: Output something. + * tests/escapes/rhs-of-a-vardec.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@414 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-11 Akim Demaille + + 2002-07-10 Akim Demaille + + * tests/good/assign-and-array-instantiation.tig, + * tests/good/two-functions-with-the-same-name.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@413 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-10 Akim Demaille + + 2002-07-10 Akim Demaille + + * config/tc-check.in (&run): $display_stdout, $display_stderr are + arguments. + Return a boolean as success value. + (&try): Rename as... + (&try_dir): this. + (&try_files): New, extracted from the above. + (&run_tests): $display_stdout, $display_stderr are arguments... + (&run): they have default values. + (&option_check): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@412 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-09 Akim Demaille + + Remove src/canon/check.hh. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@411 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-09 Nicolas Tisserand + + 2002-07-09 Nicolas Tisserand + + * src/canon/libcanon.cc: Removed check.hh include. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@410 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-09 Akim Demaille + + 2002-07-09 Akim Demaille + + * tests/good/for-up-to-32bits.tig, tests/good/strcmp.tig: New. + * src/parse/Makefile.am: Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@409 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-04 Akim Demaille + + 2002-07-04 Akim Demaille + + * tests/escapes/sl-propagation-2.tig, + * tests/escapes/variable-inside-for-body.tig, + * tests/escapes/sl-propagation-1.tig: New. + * config/tc-check.in: Cleanup error messages. + (&ir_check): Don't pass --escapes-compute. + (&tarball_test): Do it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@408 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-03 Nicolas Tisserand + + 2002-07-03 Nicolas Tisserand + + * tools/toc.php: New file (Tiger Online Compiler) + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@407 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-03 Akim Demaille + + 2002-07-03 Akim Demaille + + * src/canon/libcanon.cc (strip_useless_jumps): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@406 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-03 Akim Demaille + + 2002-07-03 Akim Demaille + + * src/canon/check.hh: Remove, that's HAVM's job now. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@405 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-03 Nicolas Tisserand + + 2002-07-03 Nicolas Tisserand + + * src/parse/scantiger.ll: enabled scan-trace feature. + * src/common.hh: Likewise. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@404 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-07-01 Akim Demaille + + 2002-07-01 Akim Demaille + + * config/tc-check.in: Adjust to HAVM 0.4. + * src/canon/canon.hh (valid_call): New. + MOVE (MEM, CALL) is invalid. + * tests/good/redefine-print.tig: Define :) + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@403 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-28 Nicolas Tisserand + + 2002-06-28 Nicolas Tisserand + + * tests/mk-Makefile-am + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@402 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-28 Nicolas Tisserand + + 2002-06-28 Nicolas Tisserand + + * tests/good/Makefile.am + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@401 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-28 Akim Demaille + + 2002-06-28 Akim Demaille + + * tiger.prj (Populate-Ignore): Make the patterns more robust. + * tests/good/var-override.tig: Add. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@400 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-28 Nicolas Tisserand + + 2002-06-28 Nicolas Tisserand + + * tests/cannot-reparse/Makefile.am: Fix + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@399 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-28 Akim Demaille + + 2002-06-28 Akim Demaille + + * tests/good/queens.tig: Use N. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@398 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-28 Akim Demaille + + 2002-06-28 Akim Demaille + + * tests/good/print-chr-ord.tig, tests/good/nine.tig: New. + * src/canon/canon.hh (canon): Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@397 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-28 Akim Demaille + + 2002-06-28 Akim Demaille + + * src/canon/canon.hh (canon_default): Adjust to handle properly + `MOVE (MEM FOO, ...)'. + * tests/good/non-commutative-move-mem-expr.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@396 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-28 Akim Demaille + + 2002-06-28 Akim Demaille + + * src/canon/canon.hh (_commute_p): Extract from... + (commute_p): here. + (commutes_with_all_eseq): New. + (lir_seq, lir_eseq, lir_default): Rename as... + (canon_seq, canon_eseq, canon_default): these. + (canon_default): Fix its rotten logic. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@395 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-28 Akim Demaille + + 2002-06-28 Akim Demaille + + * src/tests/canon/call.tig, src/tests/canon/commutation-1.tig, + * src/tests/canon/commutation-2.tig, src/tests/canon/functions.tig, + * src/tests/canon/side-effects-in-init.tig, + * src/tests/canon/side-effects-in-sxp.tig: Move to... + * src/tests/good: here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@394 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-28 Akim Demaille + + 2002-06-28 Akim Demaille + + * tests/canon/commutation-1.tig, tests/canon/commutation-2.tig: + Adjust to really test the output. + * tests/good/of-precedence.tig: Don't depend on VarDec. + * tests/good/for-high-computed-once.tig, + * tests/type/empty-decs-type.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@393 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-28 Akim Demaille + + 2002-06-28 Akim Demaille + + * src/ast/test-ast.cc: Symbols are now destroyed, so new'd symbols. + * config/tc-check.in (&tarball_test_wrapper): Send the log to the + leader. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@392 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-17 Akim Demaille + + 2002-06-17 Akim Demaille + + * config/tc-check.in: Adjust so that several tc-check can run + concurrently. + Always display the file that does not pass. + Avoid extra nl between a test run, and its error message. + ($file_base, $stdir): New. + ($stdout, $stderr): Use $file_base. + (&ir_check): Use --compute-escapes. + (&report_file): Limit to 2Kb, not 10Kb. + * config/logeval-to-csv: Take a promotion as $1. + (@files): New. + Fetch the students.list, *.log and *.eval files automatically. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@391 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-10 Akim Demaille + + 2002-06-10 Nicolas Burrus + + * configure.ac: Automake required version fixed. + * src/ast/arrayexp.hh, src/ast/arrayty.hh, ast/astcallexp.hh, + * src/ast/field.hh, src/ast/fieldvar.hh, src/ast/fieldexp.hh, + * src/ast/functiondec.hh, src/ast/namety.hh, src/ast/recordexp.hh, + * src/ast/simplevar.hh, src/ast/typedec.hh, src/ast/vardec.hh : Memory + leaks with symbols fixed. + * src/tc.cc : Destroy the_program on exit. + * src/ast/anydecs.hh: Destructor updated, Ds become reference. + * src/ast/stringexp.hh: Keep string as reference to destroy it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@390 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-10 Akim Demaille + + * src/translate/access.hh (translate): + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@389 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-10 Akim Demaille + + 2002-06-10 Akim Demaille + + * config/logeval-to-csv: Use `1,7', not `1.7'. + * tests/mk-Makefile-am: Create foo.hpr and foo.lpr. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@388 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-06 Akim Demaille + + 2002-06-06 Akim Demaille + + * tests/escapes/escapes-scopes.tig, + * tests/escapes/variable-escapes.tig: Output something. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@387 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-06 Akim Demaille + + 2002-06-06 Akim Demaille + + * config/logeval-to-csv: Handle bonus in T4. + * config/tc-check.in (&report_file): Add an extra eol, as some + people don't seem to be handle to create a file AUTHORS with a + ending eol. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@386 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-05 Akim Demaille + + 2002-06-05 Akim Demaille + + * src/translate/translate-visitor.hh (translate): Fix a broken + student mark. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@385 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-05 Akim Demaille + + 2002-06-05 Akim Demaille + + * config/logeval-to-csv: Use `;' as separator for functions, as + with `,', I'm always rejected by Gnumeric. + Fix the computation of T4 grades. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@384 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-05 Akim Demaille + + 2002-06-05 Akim Demaille + + * config/logeval-to-csv: Implement support for T4. + Implement `super_patch', `bonus'. + Be case insensitive where benign. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@383 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-05 Akim Demaille + + 2002-06-05 Akim Demaille + + * tests/mk-Makefile-am: Update so that it builds and distributes + the .out files. + * tests/lexical/Makefile.am, tests/canon/Makefile.am, + * tests/escapes/Makefile.am, tests/good/Makefile.am, + * tests/syntax/Makefile.am, tests/type/Makefile.am, + * tests/cannot-reparse/Makefile.am: Rebuild. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@382 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-03 Nicolas Burrus + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@381 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-03 Akim Demaille + + 2002-06-03 Akim Demaille + + The TranslateVisitor cannot use a list of bulitin names to decide + what functions need a static link, as anyway the names are not + reserved. + Reported by Cédric Bail. + + * src/ast/functiondec.hh (sl_mode_t): Remove. + (FunctionDec::_sl_mode): Remove, replaced by... + (FunctionDec::_sl_needed_p, FunctionDec::_sl_escapes_p): these. + Adjust accessors and callers. + * src/ast/print-visitor.hh: Adjust to display + `foo (/* sl */ x: int)', or `foo (/* escaping sl */ x: int)'. + * src/translate/level-entry.hh (LevelFunEntry): Equip with + sl_needed. + * src/translate/level-env.hh (LevelEnv::LevelEnv): The bulitins + take no SL. + (LevelEnv::fun_put): Adjust to have a sl_needed. + * src/translate/translate-visitor.hh + (TranslateVisitor::_builtins): Remove. + (TranslateVisitor::visit (CallExp &)): Decide to pass the static + link here, instead of... + * src/translate/translation.hh (callExp): here. + Simplify the interface. + Adjust all callers. + * src/translate/level.hh, src/translate/level.cc (Level::_sl): + Remove, useless. + * tests/good/redefine-print.tig: Be sure to catch that case. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@380 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-06-03 Akim Demaille + + 2002-06-03 Akim Demaille + + * config/logeval-to-csv: Better error messages. + FIx the output of T3 formulas. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@379 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-31 Akim Demaille + + 2002-05-31 Akim Demaille + + * src/canon/libcanon.cc: Update student tags. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@378 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-31 Akim Demaille + + 2002-05-31 Akim Demaille + + * src/canon/libcanon.cc (make_trace): New. + (hir_to_lir): Call it. + * src/tree/cjump.hh (label_false_set): New. + * tests/good/many-bool-ops.tig: Add it for real. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@377 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-31 Akim Demaille + + 2002-05-31 Akim Demaille + + * tests/good/many-bool-ops.tig: New. + * config/tc-check.in (&try, &ir_check): Call failure. + * src/canon/basic-block.hh (BasicBlock::nodes_get ()): Don't + return const. + * src/temp/label.hh (operator== (const Label&, const Label&)): + New. + * src/tree/cjump.hh (label_true_get, label_false_get): New. + (labels_get): Rewrite. + (flip): New. + (relop): Rename as... + (_relop): this. + * src/tree/node.hh: children are protected, not private, since for + bad reasons, CJump wants to play tricks with them. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@376 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-31 Akim Demaille + + 2002-05-31 Akim Demaille + + * src/tree/nodes.hh (Node::Node (nodes_t)), child_get (int)): New. + Use to simplify some other methods. + * src/tree/stm.hh (Stm::Stm (nodes_t)): New. + * src/tree/seq.hh (Seq::Seq (nodes_t)): New. + * src/tree/cjump.hh (Cjump::labels_get): New. + * src/tree/jump.hh (Jump::label_get): New. + * src/tree/name.hh (Name::label_get): New. + * src/canon/basic-block.hh: Really add to the repo :( + (label_get): Rename as... + (label_in_get): this. + (labels_out_get): New. + * src/canon/libcanon.cc (canonicalize, block_frontier_p) + (make_basic_blocks): They are static. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@375 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-31 Akim Demaille + + 2002-05-31 Akim Demaille + + * src/canon/libcanon.cc (block_frontier_p, make_basic_blocks) + (block_map, hir_to_lir): New. + (canonicalize): You take a tree::Stm and return another one, + not Nodes. + * src/canon/libcanon.hh (canonicalize): No longer export it. + (hir_to_lir): Export this one. + * src/canon/basic-block.hh: New. + * src/tc.cc (canonicalization): Rename as... + (hir_to_lir): this. + (main): Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@374 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-31 Akim Demaille + + 2002-05-31 Akim Demaille + + * src/canon/libcanon.cc, src/canon/libcanon.cc (canonicalize): + Move into canon::. + * src/tc.cc (canonicalization): Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@373 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-31 Akim Demaille + + 2002-05-31 Akim Demaille + + * src/translate/fragment.hh (Fragment::~Fragment): New. + * src/temp/label.hh (operator< (const Label&, const Label&): New. + * src/tree/label.hh (Label::label_get): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@372 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-31 Akim Demaille + + 2002-05-31 Akim Demaille + + * Makefile.am (studist): Use AMTAR. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@371 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-31 Akim Demaille + + 2002-05-31 Akim Demaille + + Version 0.17. + + * src/tc.cc, src/ast/libast.cc, src/ast/libast.hh, + * src/ast/print-visitor.hh, src/frame/access.cc, + * src/translate/translate-visitor.hh, src/translate/level.hh, + * src/translate/level.cc, src/translate/access.hh: Adjust student + marks. + * configure.ac: Require Automake 1.6.1. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@370 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-31 Akim Demaille + + 2002-05-31 Akim Demaille + + * tests/mk-Makefile-am: New. + Use to generate all the tests/*/Makefile.am. + Some files were not shipped. + * tests/tests.mk, tests/good/var-bob-is-another-bob.tig, + * tests/good/four-hex-backslash.tig: Relate add to the archive. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@369 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-30 Akim Demaille + + 2002-05-30 Akim Demaille + + * src/translate/level.hh (Level::fp_exp (const Level &use_level)): + New. + * src/translate/access.hh (Access::exp (const Level &use_level)): + Use it. + * src/translate/translation.hh (callExp): Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@368 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-30 Akim Demaille + + 2002-05-30 Akim Demaille + + * src/translate/translation.hh (is_descendant_of): Remove, useless. + (callExp): Don't use is_descendant_of since we want to know if the + function is a child, not a grandchild. + Merge the two other cases (higher, or same level) in a single one: + higher or same level. Let the `for' loop handle the difference. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@367 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-29 Akim Demaille + + 2002-05-29 Akim Demaille + + Prepare frame to work collaboratively with static links. + + * src/frame/access.hh, src/frame/access.cc + (Access::exp (tree::Exp &fp_access)): New. + (In_Frame::exp (tree::Exp &fp_access)): Optimize the case OFFSET = + 0. + * src/translate/access.hh (Access::exp (tree::Exp &fp_access)): + Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@366 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-29 Akim Demaille + + 2002-05-29 Akim Demaille + + * src/translate/level.hh, src/translate/level.cc (Level::print): New. + (operator<< (ostream&, level &)): Use it. + * src/translate/access.hh (Access::exp): New, based on the model + given by frame::Access::exp. + * src/translate/translation.hh (simpleVar): Use it instead of + computing the access yourself. + (callExp): Factor the declaration/appending of `sl' to ease + forthcoming changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@365 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-28 Akim Demaille + + 2002-05-28 Akim Demaille + + GCC 3.0 and 3.1 don't like `using GrandParent::function'. + + * src/ast/escapes-visitor.hh, src/ast/escapes-check-visitor.hh, + * src/ast/print-visitor.hh, src/translate/translate-visitor.hh, + * src/type/type-visitor.hh [__GNUC__]: Protect the second using. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@364 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-28 Akim Demaille + + 2002-05-28 Akim Demaille + + * src/parse/parsetiger.yy: Don't include stdio.h, nor stdlib.h. + * src/ast/default-visitor.hh, src/ast/escapes-visitor.hh, + * src/ast/escapes-check-visitor.hh, src/ast/print-visitor.hh, + * src/type/type-visitor.hh, src/translate/translate-visitor.hh: + Import overloaded vitrual functions. + * src/translate/exp.hh, src/translate/translation.hh: Put + `/*NOTREACHED*/ after `abort' since ICC doesn't seem to know that + abort does not return, and complains for functions returning + nothing. + * src/level.hh: Don't prepend `Level::' when we already are in + Level. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@363 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-24 Akim Demaille + + 2002-05-24 Akim Demaille + + Kill (most) ICC warnings. + + * src/ast/fieldvar.hh, src/ast/print-visitor.hh, + * src/frame/access.cc, src/frame/access.hh, src/frame/frame.hh, + * src/type/types.hh, src/temp/label.hh, src/temp/temp.hh, + * src/tree/iterator.hh, src/tree/node.hh, src/translate/level.hh: + Include cassert, not assert.h. + Don't return `const' bools or ints: bool or int is enough. + Don't compare unsigned with 0. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@362 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-24 Akim Demaille + + 2002-05-24 Akim Demaille + + Kill (most) ICC warnings. + + * src/ast/fieldvar.hh, src/ast/print-visitor.hh, + * src/frame/access.cc, src/frame/access.hh, src/frame/frame.hh, + * src/type/types.hh, src/temp/label.hh, src/temp/temp.hh, + * src/tree/iterator.hh, src/tree/node.hh: Include cassert, not + assert.h. + Don't return `const' bools or ints: bool or int is enough. + Don't compare unsigned with 0. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@361 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-24 Akim Demaille + + 2002-05-24 Akim Demaille + + * config/tc-check.in: Add support for --stages and --errexit. + * Makefile.am (check-local): Pass --errexit to tc-check. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@360 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-24 Akim Demaille + + 2002-05-24 Akim Demaille + + * config/tc-check.in (&failure): New. + Use it to normalize the failure messages. + * tests/tests.mk: New. + (CLEANFILES): Remove *.out and *.ast. + Include this file in all the tests Makefile.am. + Ship it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@359 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-23 Akim Demaille + + 2002-05-23 Akim Demaille + + * config/tc-check.in (&run_tests): Use Text::Wrap. + * tests/good/let-in-for-init.tig, + * tests/type/break-in-for-high.tig, + * tests/type/break-in-for-init.tig, + * tests/type/not-enough-args.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@358 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-23 Robert Anisko + + 2002-05-23 Robert Anisko + + * tests/good/queens.tig: Reduce the board's size. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@357 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-23 Robert Anisko + + 2002-05-23 Robert Anisko + + * tests/good/mutually-recursive-procedures.tig: Avoid infinite loop. + * tests/good/mutually-recursive-functions.tig: Avoid infinite loop. + * tests/good/while-in-while.tig: Avoid infinite loop. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@356 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-20 Akim Demaille + + 2002-05-20 Akim Demaille + + * tests/good/Makefile.am (EXTRA_DIST): Ship builtins.in. + * tests/cannot-reparse/Makefile.am (EXTRA_DIST): Ship + merge.in. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@355 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-20 Akim Demaille + + 2002-05-20 Akim Demaille + + * src/ast/functiondec.hh (FunctionDec::_sl_mode): You idiot! It + must be initialized to sl_inout, not sl_none! + Reported by Robert Anisko. + * src/ast/escapes-visitor.hh: Disable the code looking for + function requiring a SL, as it does not work, and cannot be + repaired to work: more seems to be needed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@354 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-17 Akim Demaille + + 2002-05-17 Akim Demaille + + * tests/good/for-in-while.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@353 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-17 Akim Demaille + + 2002-05-17 Akim Demaille + + * tests/good/redefine-print.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@352 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-17 Akim Demaille + + 2002-05-17 Akim Demaille + + * src/translate/level.hh (Level): Add a `_sl' member. + Adjust the ctors. + Move the `<< Level' operator to... + * src/translate/level.cc: here, so that we can also print the list + of accesses held by this level. + (formal_alloc): Not only allocate the formal, also store it in + _formals. + Adjust callers. + * src/translate/access.hh (<<): Don't display the whole Level to + avoid infloops, the name --well, Label-- is enough. + * src/translate/translate-visitor.hh (visit (const CallExp& e)): + Don't invoke callExp with levels for functions that have no SL + (i.e., do as for bulitins). + (visitFunctionDecHeader): Adjust Level creation to pass SL + information. + (visitFunctionDecBody): Adjust the code to skip the formal which + is the static link _only_ when there is such an sl. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@351 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-17 Akim Demaille + + 2002-05-17 Akim Demaille + + * config/tc-check.in (&ir_check): Compute the escapes for this + test. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@350 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-16 Akim Demaille + + 2002-05-16 Akim Demaille + + * src/translate/level.hh: Remove useless `inline's and `Level::'. + (_sl, sl_get): New. + * src/translate/translation.hh (simpleVar): Use sl_get. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@349 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-16 Akim Demaille + + 2002-05-16 Akim Demaille + + * src/frame/frame.hh (Frame::Frame (Label &)): New. + (Frame::formal_alloc): New. + * src/translate/level.hh, src/translate/level.cc + (Level::formal_alloc): New. + (Level::Level (Level, Symbol, bool_list_t)): Create the frame in + the code part, not the member initialization part. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@348 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-16 Akim Demaille + + 2002-05-16 Akim Demaille + + * src/tc.cc: --escapes-sl-display is a new option. + * src/ast/functiondec.hh (sl_mode_t): New type. + (_sl_mode, sl_mode_get, sl_mode_set): New. + * src/ast/escapes-visitor.hh (_fundecs): New. + (visit (FunctionDec), visit (SimpleVar)): Compute the function + that need the static link. + * src/ast/print-visitor.hh: Adjust to display a function's sl mode. + * src/ast/vardec.hh (_escapes): Rename as... + (_escapes_p): this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@347 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-16 Akim Demaille + + 2002-05-16 Akim Demaille + + * configure.ac (CFLAGS): Don't -ggdb, as... gdb is lost with newer + gcc's gdb innformation! + * config/tc-check.in: Adjust the path to AUTHORS. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@346 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-14 Akim Demaille + + 2002-05-14 Akim Demaille + + * TODO: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@345 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-14 Akim Demaille + + 2002-05-14 Akim Demaille + + * src/translate/translation.hh, + * src/translate/translate-visitor.hh: Adjust student marks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@344 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-14 Akim Demaille + + 2002-05-14 Akim Demaille + + * src/translate/access-level.hh: Split into... + * src/translate/level.hh, src/translate/level.cc, + * src/translate/access.hh: these. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@343 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-13 Akim Demaille + + 2002-05-13 Akim Demaille + + * tests/good/fact.tig: Fix. + * tests/good/donald.tig: Don't infloop. + Display something. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@342 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-13 Akim Demaille + + 2002-05-13 Akim Demaille + + * src/translate/fragment.hh (ProcFrag::_save_fp): New. + (ProcFrag::print): Use it to expose proper fp, sp handling. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@341 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-13 Akim Demaille + + 2002-05-13 Akim Demaille + + * config/tc-check.in (&tarball_test): Check for havm and TC. + * tests/good/fact.tig: Display the output. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@340 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-13 Robert Anisko + + 2002-05-13 Robert Anisko + + * src/type/type-env.hh (TypeEnv::TypeEnv): Add `print_int' as a + standard library function. + * src/translate/level-env.hh (translate): Likewise. + * src/translate/translate-visitor.hh + (TranslateVisitor::TranslateVisitor): Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@339 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-13 Robert Anisko + + 2002-05-13 Robert Anisko + + * src/translate/fragment.hh (ProcFrag::print): Output `label end.' + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@338 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-13 Akim Demaille + + 2002-05-13 Akim Demaille + + * src/frame/frame.hh (frame_pointer_get, return_value_get): Lower + case. + * src/tree/binop.hh, src/tree/call.hh, src/tree/cjump.hh, + * src/tree/const.hh, src/tree/eseq.hh, src/tree/jump.hh, + * src/tree/label.hh, src/tree/mem.hh, src/tree/move.hh, + * src/tree/name.hh, src/tree/seq.hh, src/tree/sxp.hh, + * src/tree/temp.hh, src/translate/fragment.hh: Display tree in + lower case, there is no reason to shout. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@337 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-13 Akim Demaille + + 2002-05-13 Akim Demaille + + * src/translate/fragment.hh (ProcFrag::print): Allocate the frame, + map the incoming arguments to the local temporaries/frame slots. + (ProgFrag::_name): New. + * src/translate/translation.hh (procedureDec, functionDec): Name + the fragments. + * src/translate/translate-visitor.hh (~TranslateVisitor): Give the + name of the main fragment. + (visitFunctionDecBody): Name the functions/procedures. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@336 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-13 Akim Demaille + + 2002-05-13 Akim Demaille + + * config/logeval-to-csv (by_aid): Fix to put anonymous persons + last. + Adjust T3 output to take mali (err... malus :) into account. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@335 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-13 Akim Demaille + + 2002-05-13 Akim Demaille + + * config/tc-check.in ($tc): Take src/ into account. + (&project_make): Don't cd in src. + (&ir_check): Remove tc-check.ir. + (&tarball_test): Remove temp files. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@334 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-13 Akim Demaille + + 2002-05-13 Akim Demaille + + * src/frame/frame.hh (frame): Produce negative offsets. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@333 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-13 Akim Demaille + + 2002-05-13 Akim Demaille + + * config/tc-check.in: `tests/segv' no longer exists. + (&ast_check): Use `.ast' as extension for the + reference output. + (&ir_check): New. + (&tarball_test): Use it for T5 and T6 tests. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@332 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-13 Akim Demaille + + 2002-05-13 Akim Demaille + + Include the tests in the tarball. + Now running `make distcheck' is required for us too. + + * configure.ac: AC_CONFIG_SUBDIRS tests/ if present. + * Makefile.am (SUBDIRS): Adjust. + (studir): Be sure to remove tests/ when delivering code to the + students. + (check-local): New. + (AUTOMAKE_OPTIONS): Move to... + * configure.ac (AM_INIT_AUTOMAKE): here. + * config/tc-check.in: Use abs_top_srcdir to find the tests. + Avoid creating a `..log' file, make it `tc.log'. + * tests/configure.ac, tests/Makefile.am, + * tests/cannot-reparse/Makefile.am, tests/canon/Makefile.am, + * tests/escapes/Makefile.am, tests/good/Makefile.am, + * tests/lexical/Makefile.am, tests/syntax/Makefile.am, + * type/Makefile.am: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@331 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-11 Akim Demaille + + 2002-05-11 Akim Demaille + + * tirt: Remove, please use havm. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@330 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-11 Akim Demaille + + 2002-05-11 Akim Demaille + + Equip tc-check with means to provide the ADM with the grades + sorted as they expect. + + * config/tc-check.in (by_aid, list_file_read): New. + Adjust the tables. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@329 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-08 Robert Anisko + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@328 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-06 Akim Demaille + + 2002-05-06 Akim Demaille + + * src/tc.cc, src/common.hh: Rename all the ir_* and ir-* to hir*, + all the canon_* and canon-* to lir*. + Add support for --lir-compute and --hir-compute. + Have decent relationships between options. + * config/tc-check.in (tarball_test): Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@327 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-06 Akim Demaille + + 2002-05-06 Akim Demaille + + * src/translate/translation.hh (higherLevel): Rename as... + (is_descendant_of): this. + Adjust the code to match the name (reverse false and true). + (callExp): Adjust. + Fix the passing of static links in almost all the cases. + * src/tc.cc (main): Use the IR implies --types-check, not + --escapes-compute! + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@326 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-06 Akim Demaille + + 2002-05-06 Akim Demaille + + * src/tc.cc (trace_canon_p): Rename as... + (canon_trace_p): this. + Adjust dependencies. + (main): Use the IR implies --types-check. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@325 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-06 Akim Demaille + + 2002-05-06 Akim Demaille + + * config/tc-check.in (tarball_test): First sketch of T5 and T6 + testing. But we still need a VM. + * tests/good/preincrement.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@324 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-06 Robert Anisko + + 2002-05-06 Robert Anisko + + * src/translate/translate-visitor.hh (visit (CallExp)): Fix. + (_outer_level): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@323 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-06 Raphaël Poss + + 2002-05-06 Raphaël Poss + + * configure.ac: Fix. Beat me hard. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@322 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-06 Raphaël Poss + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@321 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-06 Raphaël Poss + + 2002-05-06 Raphaël Poss + + * src/frame/frame.hh: new accessor get_current_frame_size. + It is used in the IR dumper to show the function frame size + after the label. + * src/translate/fragment.hh: print the frame size after + the label. + * tirt/*: added. + * configure.ac: modified to recurse through tirt/. + * Makefile.am: likewise. + * AUTHORS: typo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@320 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-03 Robert Anisko + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@319 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-03 Robert Anisko + + 2002-05-03 Robert Anisko + + * src/translate/translation.hh (translate::simpleVar): Follow static + links. + * src/frame/access.hh (frame::Frame::offset_get): New method. + * src/parse/libparse.hh: Fix. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@318 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-03 Raphaël Poss + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@317 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-02 Akim Demaille + + 2002-05-02 Akim Demaille + + * src/tc.cc (display_ast_p, display_ir_p, display_canon_p) + (use_ifexp_p): Rename as... + (ast_display_p, ir_display_p, canon_display_p) + (ir_use_ifexp_p): these. + Adjust the options names. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@316 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-02 Akim Demaille + + 2002-05-02 Akim Demaille + + * config/logeval-to-csv ($stage): New. + Adjust the code to use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@315 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-05-02 Robert Anisko + + 2002-05-02 Robert Anisko + + * src/tc.cc (main): Do not use fprintf. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@314 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-04-25 Akim Demaille + + 2002-04-25 Akim Demaille + + * config/logeval-to-csv (default): New: we cannot always use `foo + || bar', since sometimes foo == 0, and we want to keep the 0. + (@field, %value): Split into... + (@fieldT2, %valueT2, @fieldT3, %valueT3): these. + * tests/escapes/redeclaration.tig: Don't use empty lets. + * tests/good/invisible-valid-types.tig, + * tests/type/empty-let-type.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@313 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-04-23 Akim Demaille + + 2002-04-23 Akim Demaille + + * config/logeval-to-csv: Use dirname to work properly with full + filenames. + Instead of hard coding the formulas, use a combination of hash and + list. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@312 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-04-19 Akim Demaille + + 2002-04-19 Akim Demaille + + * config/logeval-to-csv (eval): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@311 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-04-19 Akim Demaille + + 2002-04-19 Akim Demaille + + Kill G++ 3.1 warnings. + + * src/ast/libast.cc (ast::print): Don't specify the default + values, as, per C++, the declaration should include these + defaults, not the definition of the function. + * src/frame/access.hh, src/tree/iterator.hh: Use list, not slist. + * src/symbol/table.hh: Use `typename' where appropriate. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@310 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-04-19 Akim Demaille + + 2002-04-19 Akim Demaille + + * config/Makefile.am (bin_SCRIPTS): Add tc-check. + * config/tc-check.in: Check that the reference compiler is recent + enough. + (&report_file): Be robust to missing files. + (&project_make): Use G++ 3.1. + (&ast_check): Fix the ordering observed/expected. + (&tarball_test): Display the AUTHORS. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@309 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-04-11 Akim Demaille + + 2002-04-11 Akim Demaille + + * AUTHORS: New. + * config/tc-check: Replace with + * config/tc-check.in: this. + Make sure tc-check and TC have the same version number. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@308 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-04-05 Akim Demaille + + 2002-04-05 Akim Demaille + + * src/parse/scantiger.ll: Remove a stray yylloc->word. + * src/tc.cc: Fix the handling of options. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@307 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-26 Akim Demaille + + 2002-03-26 Akim Demaille + + * config/tc-check ($version): Made by PRCS keywords. + Deep revamp: now each test routine must fill a hash ref named + %SUMMARY. + * src/tc.cc (main): Unknown options are a error. + (option_e): Redefine. + * tests/syntax/multi-vars.tig: New. + From Pascal Guedon. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@306 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-26 Akim Demaille + + 2002-03-26 Akim Demaille + + * config/tc-check ($version): Made by PRCS keywords. + Deep revamp: now each test routine must fill a hash ref named + %SUMMARY. + * src/tc.cc (main): Unknown options are a error. + (option_e): Redefine. + * tests/syntax/multi-vars.tig: New. + From Pascal Guedon. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@305 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-25 Akim Demaille + + 2002-03-25 Akim Demaille + + * config/tc-check: New. + * src/tc.cc (options_e): Remove. + (long_options): Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@304 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-21 Akim Demaille + + 2002-03-21 Akim Demaille + + * src/canon/test-canon.cc (main): Prepend std:: where needed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@303 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-21 Akim Demaille + + 2002-03-21 Akim Demaille + + * src/ast/escapes-check-visitor.hh (ast): Add missing endl. + Prepend std:: where needed. + * src/symbol/test-symbol.cc (main): Likewise. + * src/ast/test-ast.cc (main): Likewise. + * src/type/test-type.cc (main): Likewise. + * src/temp/test-temp.cc (main): Likewise. + * src/canon/test-canon.cc (main): Likewise. + * src/tc.cc (usage): Don't use multi line strings. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@302 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-20 Akim Demaille + + 2002-03-20 Akim Demaille + + * src/ast/test-ast.cc (exit_status, locations_display_p): Add the + missing variables (referenced by libast). + * src/ast/vardec.hh: Add another ctor, that does not include + _escape_tag, so that students are not confused. + Add removal marks. + * config/studentize: Support //<<-, //->> standing for removal. + * src/ast/README-student: Remove. + * Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@301 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-20 Akim Demaille + + 2002-03-20 Akim Demaille + + * src/common.hh, src/tc.cc, src/ast/libast.cc, src/ast/libast.hh, + * src/ast/location.hh, src/ast/print-visitor.hh, src/parse/libparse.cc + (compute_escapes_p): Rename as... + (escapes_compute_p): this. + (display_escapes_p): Rename as... + (escapes_display_p/): this. + (display_locations_p): Rename as... + (locations_display_p/): this. + (trace_scan_p): Rename as... + (scan_trace_p): this. + (trace_parse_p): Rename as... + (parse_trace_p): this. + * src/tc.cc: --escape-*-check implies --escapes-compute. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@300 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-20 Akim Demaille + + 2002-03-20 Akim Demaille + + * src/tc.cc: Implement --types-check support. + * src/type/libtype.cc, src/type/libtype.hh: Take an ast::Exp, not + an ast::Ast. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@299 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-20 Raphaël Poss + + 2002-03-20 Raphaël Poss * src/type/types.hh, src/type/type-entry.hh: made two attributes mutable in order to get rid of unwanted const_cast occurences. Explanation given as comments. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@298 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-20 Akim Demaille + + 2002-03-20 Akim Demaille + + * src/type/types.hh, src/type/type-visitor.hh: Adjust student + marks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@297 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-19 Akim Demaille + + 2002-03-19 Akim Demaille + + * src/parse/scantiger.ll (escaping): Fix it. + * src/ast/escapes-check-visitor.hh: Add the missing endls. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@296 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-19 Akim Demaille + + 2002-03-19 Akim Demaille + + * src/parse/scantiger.ll (escaping): New abbreviation. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@295 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-19 Akim Demaille + + 2002-03-19 Akim Demaille + + * src/parse/parsetiger.yy (exps): Remove, unused. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@294 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-18 Akim Demaille + + Bump to 0.16. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@293 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-18 Akim Demaille + + 2002-03-18 Akim Demaille + + Version 0.15. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@292 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-18 Akim Demaille + + 2002-03-18 Akim Demaille + + Separate test files that can be reparsed, from the others. + (Mainly because of `n' etc.). + + * tests/good/string-backslash.tig, tests/good/nul-character.tig, + * tests/good/merge.tig: Move to... + * tests/cannot-reparse: to this new directory. + + * src/ast/escapes-check-visitor.hh: Don't visit Fields, rather, + visit FunctionDecs to avoid interferences between record fields + and arguments. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@291 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-18 Akim Demaille + + 2002-03-18 Akim Demaille + + * src/ast/escapes-check-visitor.hh: Handle the fields now. + * src/tc.cc: Provide a better escaping checking interface: split + --escapes-check into --escapes-necessary-check and + --escapes-sufficient=check. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@290 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-18 Akim Demaille + + 2002-03-18 Akim Demaille + + Don't stack parens in the action part of a LetExp. + + * src/parse/parsetiger.yy (exps.0.2): New. + Use it for SeqExps and LetExps. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@289 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-18 Akim Demaille + + 2002-03-18 Akim Demaille + + * src/parse/scantiger.ll (scan_open): Recognize `-' as standing + for the standard input. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@288 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-18 Akim Demaille + + 2002-03-18 Akim Demaille + + * src/common.hh (exit_missing_escapes, exit_excessive_escapes) + (exit_set): New. + * src/tc.cc (escapes_tags_display_p, escapes_check_p): New + (long_options): Add support for `--escapes-compute', + `--escapes-display', `--escapes-tags-display', `--escapes-check'. + (main): Adjust. + Display titles (`Intermediate representation' etc.) using C + comments. + (main::the_program): Use an ast::Exp instead of an ast::Ast. + Adjust all dependencies. + + * src/ast/vardec.hh (_escape_tag, escape_tag_get, + _escape_tag_set): New. + * src/ast/field.hh: Likewise. + * src/ast/libast.hh, src/ast/libast.cc (print): Adjust to + `escapes_tags_display_p'. + * src/ast/print-visitor.hh: Adjust to `escapes_tags_display_p'. + Change the handling of reporting whether a field escapes or not, + as it is certainly not robust to vardec inside a field. + + * src/ast/escapes-check-visitor.hh: New. + * src/ast/libast.hh, src/ast/libast.cc (escapes_check): New. + + * src/parse/scantiger.ll: Recognize `/* escaping */'. + * src/parse/parsetiger.yy: Handle ESCAPING for VarDec and all the + Fields. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@287 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-18 Akim Demaille + + 2002-03-18 Akim Demaille + + * src/parse/parsetiger.yy: More uses of string literals. + * tests/type/break-in-vardec-in-while.tig: Don't depend on `()' + support. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@286 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-13 Akim Demaille + + 2002-03-13 Akim Demaille + + * src/ast/escapes-visitor.hh (EscapeVisitor::visit(VarDec)): Do + not declare the variable before visiting the body. + * tests/escapes/redeclaration.tig: New. + From Darks Bob. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@285 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-12 Akim Demaille + + 2002-03-12 Akim Demaille + + * src/parse/parsetiger.yy: Partial replacement of token symbol + with token strings. E.g. NIL => "nil". + (exp: lvalue): Remove a useless Bison cast ($<...>1). + * best-of: Some more. + * src/ast/var.hh: Student marks. + * src/translate/translate-visitor.hh: Fix guard name. + * tests/lexical/backslash-n-not-in-string.tig, + * tests/lexical/backslash-oct-not-in-string.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@284 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-05 Akim Demaille + + 2002-03-05 Akim Demaille + + * configure.ac: Bump to 0.15. + * src/symbol/table.hh: Install much stricter //<< //>> marks. + Use STL lists, instead of SGI slists. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@283 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-03-04 Akim Demaille + + 2002-02-28 Akim Demaille + + Newest Bison wants rules to be `;'-ended. + + * src/parse/parsetiger.yy: Do that. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@282 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-28 Akim Demaille + + 2002-02-28 Akim Demaille + + Newest Bison outputs a single header file. + + * src/parse/scantiger.ll: s/parsetiger.h/parsetiger.hh/. + * src/parse/libparse.cc: s/parsetiger-class.hh/parsetiger.hh/. + * src/parse/Makefile.am (FROM_PARSETIGER_YY): New, to adjust to + newest Bison. + * src/ast/README: s/Position/Location/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@281 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-26 Akim Demaille + + 2002-02-26 Akim Demaille + + * tests/good/recursive-types-mutual.tig, tests/good/if-and-bool.tig, + * tests/good/recursive-type.tig, + * tests/type/incompatible-record-comparison.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@280 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-26 Akim Demaille + + 2002-02-26 Akim Demaille + + * src/ast/libast.cc (escapes_find): Minor simplification. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@279 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-14 Akim Demaille + + 2002-02-14 Akim Demaille + + * configure.ac: Bump to 0.14. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@278 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-13 Akim Demaille + + 2002-02-13 Akim Demaille + + * src/ast/default-visitor.hh: Typo: s/this_visit/decs_visit/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@277 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-13 Akim Demaille + + 2002-02-13 Akim Demaille + + * src/ast/default-visitor.hh (visit_decs): Typo, rename as... + (decs_visit): this. + + * src/tc.cc, src/ast/ast.hh, src/ast/dec.hh, + * src/ast/default-visitor.hh, src/ast/exp.hh, src/ast/field.hh, + * src/ast/libast.cc, src/ast/libast.hh, src/ast/README, + * src/ast/ty.hh, src/parse/libparse.cc, src/parse/libparse.hh, + * src/parse/parsetiger.yy, src/translate/libtranslate.cc, + * src/translate/libtranslate.hh, src/type/libtype.cc, + * src/type/libtype.hh, src/ast/decs.hh: s/Absyn/Ast/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@276 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-13 Akim Demaille + + 2002-02-13 Akim Demaille + + * src/ast/visitor.hh, src/ast/default-visitor.hh: Add some + comments. + * src/ast/default-visitor.hh (visit_decs): New template method to + factor the visiting of declarations chunks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@275 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-13 Akim Demaille + + Remove ast/varexp.hh, which was empty anyway. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@274 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-12 Akim Demaille + + 2002-02-12 Akim Demaille + + Have `distcheck' work. + + * src/parse/Makefile.am (libparse_a_SOURCES): Add stack.hh, + location.hh, and parsetiger-class.hh. + * src/ast/Makefile.am (noinst_HEADERS): Add decls.hh. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@273 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-12 Akim Demaille + + 2002-02-12 Akim Demaille + + * src/ast/test-ast.cc (main): Catch up with the recent changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@272 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-12 Akim Demaille + + 2002-02-12 Akim Demaille + + * src/absyn: Rename as... + * src/ast: this. + Adjust all the class and namespace names and usage. + Note that files such as libabsyn.cc etc. are now named libast.cc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@271 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-12 Robert Anisko + + 2002-02-12 Robert Anisko + + * src/parse/parsetiger.yy: In tydecs, fundecs, and vardecs, use + 'AnyDecs's instead of lists of 'Dec's. + + * src/absyn/anydecs.hh (AnyDecs::push_back): New. + * src/absyn/absyn.hh (Absyn::location_set): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@270 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-12 Akim Demaille + + 2002-02-12 Akim Demaille + + * src/parse/parsetiger.yy (DECS): New priority place holder. + Use it to solve the ambiguity of parsing lists of Function, Var, + and Type decs. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@269 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-12 Robert Anisko + + 2002-02-12 Robert Anisko + + * src/translate/translate-visitor.hh (visit (VarDecs), + visit (TypeDecs), visit (FunctionDecs)): New. + * src/type/type-visitor.hh (visit (VarDecs), visit (TypeDecs), + visit (FunctionDecs)): New. + + * src/absyn/default-visitor.hh: Remove visit for lists of VarDecs, + TypeDecs, and FunctionDecs, which have been replaced by nodes in + Absyn. + * src/absyn/visitor.hh (visit (decs_t)): New. Until now, it was + implemented in DefaultVisitor, but never declared in Visitor. + + * src/parse/parsetiger.yy: Add three rules (tydecs, fundecs, vardecs) + to parse declarations by chunks. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@268 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-12 Robert Anisko + + 2002-02-12 Robert Anisko + + Tiger is now broken. + + * src/parse/parsetiger.yy: Build lists of 'Decs's rather that lists + of 'Dec's. + + * src/absyn/default-visitor.hh (visit (VarDecs), visit (TypeDecs), + visit (FunctionDecs)): New. + * src/absyn/visitor.hh (visit (VarDecs), visit (TypeDecs), + visit (FunctionDecs)): New. + + * src/absyn/anydecs.hh (AnyDecs): Use a list of pointers on + declarations. + * src/absyn/letexp.hh (LetExp): Use a list of 'Decs's rather than a list + of 'Dec's. + + * src/absyn/allvar.hh: Update. + * src/absyn/decls.hh: Update. + * src/absyn/decs.hh: Update. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@267 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-11 Robert Anisko + + 2002-02-11 Robert Anisko + + * src/absyn/Makefile.am: Adjust. + * src/absyn/alldec.hh: Adjust. + + * src/absyn/anydecs.hh: New file. + * src/absyn/decs.hh: New file. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@266 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-11 Robert Anisko + + 2002-02-11 Robert Anisko + + * src/type/type-visitor.hh (visit (BreakExp)): Argument is not const + anymore. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@265 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-08 Robert Anisko + + 2002-02-08 Robert Anisko + + * src/parse/libparse.cc (parse): Give an initial location to the + parser class. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@264 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-07 Robert Anisko + + 2002-02-07 Robert Anisko + + * src/parse/parsetiger.yy (print_): Update. Some names have changed + in Bison. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@263 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-07 Robert Anisko + + 2002-02-07 Robert Anisko + + * src/parse/libparse.cc (parse): Instantiate the parser class with + trace_parse_p rather than yydebug. + * src/common.hh (trace_parse_p): Use trace_parse_p instead of yydebug, + which is not provided by Bison anymore. + * src/tc.cc (trace_parse_p): New variable. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@262 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-07 Robert Anisko + + 2002-02-07 Robert Anisko + + * src/parse/parsetiger.yy (yyprint): Turn into a member of the parser + class. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@261 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-07 Robert Anisko + + 2002-02-07 Robert Anisko + + * src/parse/parsetiger.yy (yy::Parser::error_): Uncomment. CVS Bison + can handle this now. + * src/parse/libparse.cc (parse): Use command line options to enable + parse tracing. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@260 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-07 Raphaël Poss + + 2002-02-07 Raphael Poss * src/absyn/decls.hh: (forward declarations) added. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@259 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-07 Raphaël Poss + + 2002-02-07 Raphael Poss * access rights fixed. (oops...) + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@258 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-07 Raphaël Poss + + 2002-02-06 Raphael Poss + + * src/absyn/visitor.hh (Visitors): Visitor was remplaced + by template GenVisitor. ConstVisitor and Visitor are instances of this + template (resp. params: const_kind and non_const_kind). + Methods of GenVisitor use type function select_const to choose + const or non-const versions of arguments depending on template parameter. + * src/absyn/default-visitor.hh: DefaultVisitor was + remplaced by a template counterpart. + * src/absyn/escapes-visitor.hh: some Definition attributes see their + constness removed. Visitor converted to new scheme. + * src/absyn/print-visitor.hh: Visitor converted to new scheme. + * src/type/type-visitor.hh: likewise + * src/translate/translate-visitor.hh: likewise + * src/absyn/absyn.hh (accept): there are now 2 'accept' methods. + * src/absyn/arrayexp.hh: likewise, more useful accessors added. + * src/absyn/arrayty.hh: likewise + * src/absyn/assignexp.hh: likewise + * src/absyn/breakexp.hh: likewise + * src/absyn/callexp.hh: likewise + * src/absyn/field.hh: likewise + * src/absyn/fieldvar.hh: likewise + * src/absyn/forexp.hh: likewise + * src/absyn/functiondec.hh: likewise + * src/absyn/ifexp.hh: likewise + * src/absyn/intexp.hh: likewise + * src/absyn/letexp.hh: likewise + * src/absyn/namety.hh: likewise + * src/absyn/nilexp.hh: likewise + * src/absyn/opexp.hh: likewise + * src/absyn/recordty.hh: likewise + * src/absyn/seqexp.hh: likewise + * src/absyn/simplevar.hh: likewise + * src/absyn/stringexp.hh: likewise + * src/absyn/subscriptvar.hh: likewise + * src/absyn/typedec.hh: likewise + * src/absyn/vardec.hh: likewise + * src/absyn/whileexp.hh: likewise + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@257 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-06 Raphaël Poss + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@256 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-06 Robert Anisko + + 2002-02-06 Robert Anisko + + * src/parse/parsetiger.yy (yyerror, parse_error): Turn into a member + of the parser class. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@255 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-02-06 Robert Anisko + + 2002-02-06 Robert Anisko + + * src/parse/libparse.cc (parse): Do not call yyparse anymore. Include + parsetiger-class.hh. Instantiate a parser class and use it. + * src/parse/parsetiger.yy: Use %define ltype. Add a missing ';' to an + action. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@254 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-01-25 Akim Demaille + + 2002-01-25 Akim Demaille + + * src/common.hh (display_locations_p): New. + * src/absyn/location.hh (operator<<): Use it. + * src/tc.cc (version, trace_scan_p, display_locations_p): New. + (long_options): Handle --display-location and --trace-scan. + (usage): Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@253 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-01-25 Akim Demaille + + 2002-01-25 Akim Demaille + + * src/parse/parsetiger.yy: Add an ending `;' to all the actions + that lacked one. That's better for newer Bisons. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@252 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-01-22 Akim Demaille + + 2002-01-22 Akim Demaille + + * src/parse/parsetiger.yy: Use %debug. + * tests/good/assign-vs-boolean.tig: Number changes. + * configure.in: Rename as... + * configure.ac: this. + * config/depcomp, config/missing: Update from Automake. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@251 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2002-01-22 Akim Demaille + + 2002-01-22 Akim Demaille + + * src/parse/parsetiger.yy: Use %debug. + * tests/good/assign-vs-boolean.tig: Number changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@250 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-11-02 Akim Demaille + + 2001-11-02 Akim Demaille + + * Makefile.am (AUTOMAKE_OPTIONS): Add dist-bzip2. + + 2001-11-02 Akim Demaille + + * src/absyn/location.hh (operator<<): When referring to the + location char 12 to char 15, display 12-14, not 12-15. + When referring to a single char, display a single column, not + twice the same. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@249 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-11-02 Akim Demaille + + 2001-11-02 Akim Demaille + + * src/parse/parsetiger.yy: Improve the error messages: map the + tokens to their most representative string. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@248 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-11-02 Akim Demaille + + 2001-11-02 Akim Demaille + + Completely revamp the location tracking. + + * src/parse/scantiger.ll: Set `nounput'. + Each time yylex is invoked, make a location step. + (YY_USER_ACTION): New. + Each time a pattern is recognized, adjust the last position. + Each time newlines are recognized, adjust the last position. + Each time a meaningless white space is recognized, step (this + includes the end of comments). + Simplify all the rules. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@247 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-11-01 Akim Demaille + + 2001-11-01 Akim Demaille + + * configure.in: Set aux dir before running AM_INIT_AUTOMAKE. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@246 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-11-01 Akim Demaille + + 2001-11-01 Akim Demaille + + * src/canon/libcanon.cc (canonicalize): For the time being, don't + check the output is canonical, as it breaks test-canon. + * config/: New directory, for GNU Build System tools. + * src/parse/parsetiger.yy (YYLLOC_DEFAULT): Adjust to Bison 1.30. + * bootstrap.sh: Remove, use autoreconf instead. + * Makefile.am (AUTOMAKE_OPTIONS): 1.5. + * src/canon/test-canon.cc (main): Run all the tests. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@245 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-10-16 Pierre-Yves Strub + + 2001-10-16 Pierre-Yves Strub + + Remove hash_map from Tiger. + The build of Tiger v0.239 failed with the GCC 3.0 of the + LRDE. Finish the port with it. + + * src/symbol/symbol.{hh,hxx}: remove the specialisation of the + hash functor. Add a comparison order on symbols. + * src/symbol/table.hh: replace hash_maps by maps. + * src/types/type-visitor.hh: likewise. + + * src/tc.cc: port file to gcc 3.0 (namespace `std', correct + definition of the print operator (In the namespace of the class it + relies to), standard headers -slist and hash_map are now slist.h + and hash_map.h) + * check.hh : likewise + * canon.hh : likewise + * libcanon.cc : likewise + * fragment.hh : likewise + * access-level.hh: likewise + * exp.hh : likewise + * frame.hh : likewise + * access.hh : likewise + * cjump.hh : likewise + * jump.hh : likewise + * sxp.hh : likewise + * move.hh : likewise + * eseq.hh : likewise + * seq.hh : likewise + * call.hh : likewise + * mem.hh : likewise + * binop.hh : likewise + * label.hh : likewise + * name.hh : likewise + * temp.hh : likewise + * type-visitor.hh: likewise + * types.hh : likewise + * scantiger.ll: likewise + * parsetiger.yy: likewise + * libabsyn.cc : likewise + * print-visitor.hh: likewise + * table.hh : likewise + * symbol.hh : likewise + * symbol.hxx : likewise + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@244 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-10-15 Pierre-Yves Strub + + 2001-10-16 Pierre-Yves Strub + + Kill some old bugs revealed (Segmentation fault) by GCC 3.0 + + * src/absyn/default-visitor.hh: invalid iteration on a + list. (dynamic_cast < T* > (list < U >::end () is *not* NULL since + we don't known the value of list < U >::end ())) + * src/translate/translate-visitor.hh: likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@243 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-10-15 Pierre-Yves Strub + + 2001-10-15 Pierre-Yves Strub + + Port Tiger to gcc 3.0 + + * depcomp: regenerate file with automake 1.5 since automake 1.4 + provides bugged file for gcc 3.0 + + * src/tree/node.hh: port file to gcc 3.0 (namespace `std', correct + definition of the print operator (In the namespace of the class it + relies to), standard headers -slist and hash_map are now slist.h + and hash_map.h) + * src/translate/access-level.hh: likewise + * src/translate/level-entry.hh: likewise + * src/tree/iterator.hh: likewise + * src/frame/access.hh: likewise + * src/type/type-visitor.hh: likewise + * src/parse/scantiger.ll: likewise + * src/parse/parsetiger.yy: likewise + * src/absyn/position.hh: likewise + * src/symbol/table.hh: likewise + * src/symbol/symbol.hxx: likewise + * src/symbol/symbol.hh: likewise + * src/absyn/print-visitor.hh: likewise + * src/absyn/default-visitor.hh: likewise + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@242 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-10-15 Pierre-Yves Strub + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@241 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-10-10 Akim Demaille + + 2001-10-08 Akim Demaille + + * src/translate/exp.hh (IfThenElseExp): Remove some useless jumps. + * src/parse/scantiger.ll: Support all the valid eol. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@240 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-09-21 Akim Demaille + + 2001-09-20 Akim Demaille + + * tests/good/recursive-comments.tig: Rename as... + * tests/good/comments-nested.tig: this. + * src/translate/exp.hh (IfThenElseExp:unCx): No need for a `join'. + From Fabien Stepho. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@239 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-09-18 Akim Demaille + + 2001-09-18 Akim Demaille + + * src/translate/translation.hh (whileExp): unCx the condition + instead of making it by hand, inefficiently. + Reported by Arnaud Raes, Vivien Vigot and some others. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@238 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-09-18 Akim Demaille + + 2001-09-17 Akim Demaille + + * tests/good/comments-with-comment-chars.tig: New test. + * src/parse/scantiger.ll : Catch `*' and `/' in + comments. + Reported by Yoann Jean. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@237 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-09-17 Akim Demaille + + 2001-09-17 Akim Demaille + + * tests/type/test20.tig: Rename as... + * tests/type/undeclared-variable.tig: this. + * tests/type/break-in-vardec.tig: Rename as... + * tests/type/break-in-vardec-in-while.tig: this. + * tests/good/for.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@236 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-09-13 Akim Demaille + + 2001-09-13 Akim Demaille + + * configure.in: Bump to 0.13. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@235 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-09-13 Akim Demaille + + 2001-09-13 Akim Demaille + + * src/type/type-visitor.hh (visit (const RecordExp& e)): Use + type_recovery. + (const AssignExp &e): Ditto. + * tests/syntax/syntax-vs-type-1.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@234 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-09-13 Akim Demaille + + 2001-09-13 Akim Demaille + + * src/type/type-visitor.hh (visitFunctionDecHeader) + (visit (const RecordTy& e)): Keep on checking even if there are + errors. + (visitFunctionDecBody): Looping on actually registered formals is + now enough, and avoids problems when the AST and formals_type + don't have the same set of formals (if duplicate formals were + discarded). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@233 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-09-13 Akim Demaille + + 2001-09-13 Akim Demaille + + * src/translate/translation.hh (forExp): The inner test if strict. + Reported by Laurent Mascherpa. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@232 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-09-10 Akim Demaille + + 2001-09-10 Akim Demaille + + * configure.in: Bump to 0.12. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@231 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-09-10 Akim Demaille + + 2001-09-10 Akim Demaille + + * tests/type/duplicate-arg.tig: New. + * src/type/type-visitor.hh (visitFunctionDecHeader): Be sure names + are unique amongst formals. + + 2001-09-10 Akim Demaille + + * src/translate/level-env.hh (LevelEnv::LevelEnv): Use the name of + the builtins as names of their labels. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@230 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-09-05 Akim Demaille + + 2001-09-05 Akim Demaille + + * src/translate/level-env.hh (LevelEnv::LevelEnv): `flush' was + forgotten. + (var_access_get, level_get, label_get): Now that type checking and + translation are separated, it is no longer valid to return `0'. + Hence, assert we have something, and return a reference, not a + pointer. + * src/translate/translate-visitor.hh (visit (SimpleVar &)) + (visit (CallExp &), visit (ForExp &), visitFunctionDecBody): + Adjust. + * src/translate/translation.hh (callExp): Receive LABEL as a + reference. + * tests/good/builtins.tig: New. + Reported by Sébastien Lagarde and many others. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@229 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-07-27 Akim Demaille + + Bump to 0.10. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@228 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-07-26 Akim Demaille + + 2001-07-26 Akim Demaille + + Give nice names to RV and FP. + + * bootstrap.sh: Adjust to Automake 1.4p[0-9]. + * src/temp/temp.hh: Basically, be copy of label.hh so that we can + give actual names to some temporaries. + * src/frame/frame.hh (frame_pointer_get): Name the FP. + (return_value_get): Name the RV. + (<< frame::Frame): No need to dump them as the name is in clear + now. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@227 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-07-24 Akim Demaille + + 2001-07-24 Akim Demaille + + * src/translate/translation.hh: Cleanups. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@226 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-07-24 Akim Demaille + + Bump to 0.9. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@225 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-07-24 Akim Demaille + + 2001-07-24 Akim Demaille + + * src/translate/libtranslate.cc (::semantic_analysis): Rename as... + (translate::translate): this. + Return the list instead of requiring an initialized list as + argument. + * src/translate/libtranslate.hh: Adjust. + * src/tc.cc: Likewise. + * src/translate/translate-visitor.hh: Studentize. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@224 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-07-24 Akim Demaille + + 2001-07-24 Akim Demaille + + No longer consider `for' is syntactic sugar. + + * src/absyn/escape-visitor.hh (visit (ForExp&)): New. + * src/absyn/vardec.hh (writable): Remove, this hack is no longer + needed. + * src/parse/parsetiger.yy (FOR ID ASSIGN exp TO exp DO exp): + Produce a ForExp. + * src/translate/translate-visitor.hh (visit (ForExp &)): + Reactivate, and implement missing bits. + (visit (BreakExp &)): No user checking to be done here, merely use + assert just in case. + * src/type/type-entry.hh (VarEntry::writable_set): New. + * src/type/type-env.hh (var_writable_set): New. + * src/type/type-visitor.hh (visit (ForExp&)): Reactivate and + adjust. + * src/translate/translation.hh (forExp): New. + * tests/good/break-in-for.tig: Use distinct literal value to ease + translation debugging. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@223 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-07-05 Akim Demaille + + 2001-07-05 Akim Demaille + + Version 0.8. + + * src/parse/scantiger.ll: Fix the handling of various escapes. + + * tests/escapes/for-scope.tig: Rename as... + * tests/escapes/escapes-for-scope.tig: this. + * tests/escapes/scopes.tig: Rename as... + * tests/escapes/escapes-scopes.tig: this. + * tests/good/shadowing-var.tig: Rename as... + * tests/good/scopes-protect-vars.tig: this. + * tests/syntax/compare-non-assoc-2.tig: Rename as... + * tests/syntax/less-than-non-assoc-with-uminus.tig: this. + * tests/syntax/compare-non-assoc.tig: Rename as... + * tests/syntax/less-than-non-assoc.tig: this. + * tests/segv/unknown-array-type-2.tig: Rename as... + * tests/type/unknown-array-type-2.tig: this. + + * best-of: New. + * tests/good/while-in-while.tig: New. + * tests/syntax/vehicle.tig: New. + * tests/type/order-nil-with-record.tig: New. + * tests/type/multiple-instances-types-2.tig: New. + * tests/type/nonexistent-vardecrec-type.tig: New. + * tests/type/for-var-string.tig: New. + * tests/type/nil-arithmetics.tig: New. + * tests/type/break-in-while-cond.tig: New. + + * src/absyn/escape-visitor.hh: Delete empty dtor definitions. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@222 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-26 Akim Demaille + + 2001-06-23 Akim Demaille + + Ease the parsing of IR: put an end marker for CALL. + + * configure.in: Version 0.7. + * src/tree/call.hh (Call::tag_print): Abort. + (Call::print): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@221 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-23 Akim Demaille + + 2001-06-23 Akim Demaille + + * src/type/type-visitor.hh (BreakExp): Be sure to properly set + _type even upon errors. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@220 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-20 Akim Demaille + + 2001-06-20 Akim Demaille + + * src/type/type-visitor.hh (visitTypeDecBody): `sound' needs the + circular definition to detect it. + Fixes tests/type/unsound-types-uses.tig. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@219 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-20 Akim Demaille + + 2001-06-20 Akim Demaille + + * src/type/type-visitor.hh (visit (TypeDec)): Catch multiple + type definitions, and work only on the first. + Fixes tests/type/invalid-type-redefinition.tig. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@218 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-20 Akim Demaille + + 2001-06-20 Akim Demaille + + * test/types/invalid-function-redefinition.tig: Rename as... + * test/types/invalid-function-redefinition-1.tig: this. + * test/types/invalid-function-redefinition-2.tig: new + * src/symbol/table.hh (hash ): Move from here... + * src/symbol/symbol.hh: to here. + * src/type/type-visitor.hh (visit (LetExp)): Use + `DefaultVisitor::visit (decs_t)'. + (visit (list )): New. + Catch multiple function definitions, and work only on the first. + Fixes test/types/invalid-function-redefinition-1 and + test/types/invalid-function-redefinition-2. + (visit (list )): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@217 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-20 Akim Demaille + + 2001-06-20 Akim Demaille + + * src/absyn/default-visitor.hh (visit (decs_t)): New. + Branch to... + (visit (list), visit (list)) + (visit (list)): these new methods. + (visit (LetExp)): Use `visit (decs_t)'. + * src/absyn/print-visitor.hh (visit (LetExp)): Rely on the + DefaultVisitor. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@216 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-20 Akim Demaille + + 2001-06-20 Akim Demaille + + Restore the `break' control in the TypeVisitor. + Failed experiment. + Fixes type/break-in-function-in-while.tig, + type/break-in-vardec.tig, and type/break-alone.tig + + * src/type/type-visitor.hh (TypeVisitor::_in_loop): New. + (visit (WhileExp), visit (LetExp), visit (BreakExp)): Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@215 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-20 Akim Demaille + + 2001-06-20 Akim Demaille + + * src/parse/scantiger.ll (id): Cannot start with an underscore. + * tests/good/underscore.tig: Move to... + * tests/lexical/underscore.tig: here. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@214 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-20 Akim Demaille + + 2001-06-20 Akim Demaille + + * tests/good/shadowing-types-consecutive.tig: Rename as... + * tests/type/invalid-types-redefinition.rig: this. + * tests/good/test39.tig: Rename as... + * tests/type/invalid-function-redefinition.rig: this. + + * tests/escapes/for-scope.tig: New. + * tests/escapes/no-functiondec-at-all.tig: New. + * tests/good/break-in-for.tig: New. + * tests/good/explicit-record-type.tig: New. + * tests/good/field-of-field.tig: New. + * tests/good/for-scope.tig: New. + * tests/good/int-var-ordering.tig: New. + * tests/good/just-a-simple-for-1.tig: New. + * tests/good/just-a-simple-for-2.tig: New. + * tests/good/nil-as-return-value.tig: New. + * tests/good/string-var-comparing.tig: New. + * tests/type/break-alone.tig: New. + * tests/type/break-in-function-in-while.tig: New. + * tests/type/break-in-vardec.tig: New. + * tests/type/nonexistent-vardec-type.tig: New. + * tests/type/type-nil.tig: New. + * tests/type/void-does-not-exist.tig: New. + + * Makefile.am (install-epita): Typo. + + * src/type/type-visitor.hh (CallExp): Rename `args' as `formals'. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@213 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-11 Akim Demaille + + 2001-06-11 Akim Demaille + + Version 0.6. + + * bootstrap.sh: Fix mv invocation. + Run configure. + * Makefile.am (install-epita): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@212 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-11 Akim Demaille + + 2001-06-11 Akim Demaille + + * src/type/type-visitor.hh (visit (AssignExp)): When a read only + var is modified, complain, but proceed. + * bootstrap.sh: Improve for students. + * src/absyn/print-visitor.hh (SeqExp): Don't print new lines + when there were none inside the SeqExp. + * src/parse/parsetiger.yy (ForExp): Add explanatory comments. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@211 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-11 Akim Demaille + + 2001-06-11 Akim Demaille + + * src/tests/types/unsound-types-uses.tig: New. + * src/type/type-visitor.hh (visitTypeDecBody): Don't insert + recursive type declarations, let them point to Int. + Fixes src/tests/types/unsound-types-uses.tig. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@210 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-09 Akim Demaille + + 2001-06-08 Akim Demaille + + * src/tc.cc (main): Output --version. + * configure.in: Version 0.5. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@209 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-08 Akim Demaille + + 2001-06-08 Akim Demaille + + Printing recursive types carelessly causes infloops. + + * tests/types/recursive-type.tig: New. + * src/type/types.hh (Type::print): Accept a second argument, + `depth'. + Propagate its use. + (Named::print): If `depth' is negative, don't print the actual + type. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@208 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-08 Akim Demaille + + 2001-06-08 Akim Demaille + + * tests/type/duplicate-field.tig: New. + * src/type/type-visitor.hh (RecordTy): Catch multiply defined + fields. + Fixes tests/type/duplicate-field.tig. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@207 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-08 Akim Demaille + + 2001-06-08 Akim Demaille + + * src/type/type-visitor.hh (FieldVar): Improve the message. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@206 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-08 Akim Demaille + + 2001-06-08 Akim Demaille + + * tests/good/compare-void.tig: New. + * src/absyn/opexp.hh (Kind): Add `void_kind'. + * src/type/type-visitor.hh (OpExp): When comparing (= and <>) two + void objects, tags the OpExp as void_kind for the TranslateVisitor. + * src/translate/translate-visitor.hh (OpExp): Consider expressions + of `void_kind' as simple ESEQ which evaluates its arguments, and + return true. + Fixes tests/good/compare-void.tig. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@205 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-08 Akim Demaille + + 2001-06-08 Akim Demaille + + * tests/type/unknown-array-type.tig: Rename as... + * tests/type/unknown-array-type-1.tig: this. + * tests/type/unknown-array-type-1.tig: New. + * src/type/type-visitor.tig (ArrayExp): Typo: check the + array_type, not `_type' which is still unset. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@204 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-08 Akim Demaille + + 2001-06-08 Akim Demaille + + * tests/good/nil-as-arg.tig: New. + * src/type/type-visitor.hh (CallExp): Use check_types_assignable, + not check_types_equal when checking actual arguments and formal + arguments. + Fixes tests/good/nil-as-arg.tig. + + * tests/type/for-body-non-void.tig: New. + * src/parse/parsetiger.yy (FOR): Be sure to avoid the overflow + issues. + Compare the body to `()' to make sure it is type checked against + Void. + Fixes tests/type/for-body-non-void.tig. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@203 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-07 Akim Demaille + + 2001-06-07 Akim Demaille + + * src/translate/translate-visitor.hh: Formatting changes. + (type_recovery): Inline its body and remove. + * src/type/type-env.hh: Formatting changes. + * src/type/type-visitor.hh (check_type_exists): New. + Use it. + (visit (NameTy)): Use it. + Fixes the abort on `let type foo = undefined in 0 end'. + (visit (OpExp)): Be sure to check the equality of actual types. + Fixes the type checking on`let var a : int := 0 in a = 0 end'. + * src/translate/exp.hh: Formatting changes. + * src/translate/translation.hh: Likewise. + * tests/good/var-ordering.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@202 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-06-05 Akim Demaille + + 2001-06-05 Akim Demaille + + Display user types in error messages. + This amounts to stop using `actual' by default, just invoke it + when actual computation on types is needed. + + * src/type/type-visitor.hh (check_types_equal) + (check_types_comparable, check_types_assignable): Don't display + the actual type, but its user name. + (visit (const SimpleVar& e), visit (const FieldVar& e)) + (visit (const ArrayExp& e)): Set the type to the user name, not + the actual type. + (visitTypeDecBody): No longer use _actual_type, just invoke + `actual' on _type. + (visit (const NameTy& e)): Don't invoke actual. + (_actual_type): Remove, no longer used. + * src/canon/Makefile.am (test-canon): `check' not `noinst'. + * tests/syntax/compare-non-assoc-2.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@201 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-05-30 Akim Demaille + + 2001-05-30 Akim Demaille + + * src/translate/fragment.hh (ostream& << fragments_t&): New. + * src/absyn/libabsyn.hh (ostream& << absyn&): New. + * src/tc.cc: Use it. + (display_ir): Remove. + * src/type/type-visitor.hh: Fix a student mark. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@200 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-05-29 Akim Demaille + + 2001-05-29 Akim Demaille + + Work around the same linker bug as two patches below. + + * src/temp/libtemp.cc: New. + Adjust the whole project. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@199 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-05-29 Akim Demaille + + 2001-05-29 Akim Demaille + + * src/type/type-env.hh, src/type/type-visitor.hh, + * src/type/types.hh: Student marks. + * src/symbol/Makefile.am, src/type/Makefile.am: Link with + libsymbol.a. + * tests/escapes/record-escapes.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@198 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-05-22 Akim Demaille + + 2001-05-22 Akim Demaille + + Work around the dirty NetBSD linker bug. + + * src/symbol/symbol.hh (_map ()): Remove, replaced by... + * src/symbol/symbol.cc: New file. + (_map): New. + * src/type/Makefile.am (test_type_LDADD): Add libsymbol.a. + * src/temp/Makefile.am (test_temp_LDADD): Add libsymbol.a. + * src/canon/Makefile.am (test_canon_LDADD): Add libsymbol.a. + * src/Makefile.am (tc_LDADD): Add libsymbol.a. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@197 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-04-18 Akim Demaille + + 2001-04-18 Akim Demaille + + * src/type/type-visitor.hh: Various cleanups. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@196 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-04-05 Akim Demaille + + 2001-04-05 Akim Demaille + + * src/type/test-type.hh: New. + * src/type/types.hh: Insert student marks. + (Named::print): Remove a stupid `return' which prevents the + display of the actual type. + (Named::Named (Symbol)): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@195 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-04-05 Akim Demaille + + 2001-04-05 Akim Demaille + + * src/absyn/escapes-visitor.hh (scope_begin, scope_end): Remove. + (visit (LetExp), visit (FunctionDec)): Adjust. + Reported by Arnaud Dumont. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@194 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-28 Akim Demaille + + 2001-03-28 Akim Demaille + + Implement the symbols table as suggested by Yann Régis-Gianias. + + * src/symbol/table.hh (slist_t, _dist_stack): Rename as symtab_t + and _symtab. + (scope_begin): Duplicate the top dict instead of starting from a + fresh table. + (get): Don't iterate, just look at the top symtab. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@193 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-28 Akim Demaille + + 2001-03-28 Akim Demaille + + * src/translate/level-entry.hh (LevelTypeEntry): Remove, useless. + Define << for LevelVarEntry and LevelFunEntry. + * src/translate/level-env.hh (LevelEnv): No longer inherit from + symbol::Env. + (scope_begin, scope_end, print): New methods. + * src/symbol/env.hh: Remove. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@192 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-28 Akim Demaille + + 2001-03-28 Akim Demaille + + * src/absyn/print-visitor.hh (visit (RecordTy), visit (Field)): + Don't display pseudo escapes for Field. + Display `escaping', not `escapes'. + * src/type/type-entry.hh: Define << for TypeEntry, VarEntry and + FunEntry. + * src/type/type-env.hh (TypeEnv): No longer inherit from + symbol::Env. + (scope_begin, scope_end, print): New methods. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@191 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-23 Akim Demaille + + 2001-03-23 Akim Demaille + + * src/absyn/escapes-visitor.hh (visit (LetExp)): New. + * tests/escapes/scopes.tig, tests/escapes/variant-escapes.tig: + New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@190 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-20 Akim Demaille + + 2001-03-20 Akim Demaille + + * src/temp/label.hh (Label::Label (Symbol)): `new' the symbol. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@189 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-20 Akim Demaille + + 2001-03-20 Akim Demaille + + * src/translate/access-level.hh, src/translate/access-level.hh, + * src/type/types.hh: Don't `new' Symbols, don't pass + them by reference: they are small enough. + * src/translate/access-level.hh: Use symbol::Symbol. + * src/type/types.hh: Use `using' *in* the name space. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@188 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-20 Akim Demaille + + 2001-03-20 Akim Demaille + + * src/type/type-entry.hh, src/type/type-visitor.hh, src/symbol/env.hh, + * src/symbol/table.hh: Fix the #include guard names. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@187 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-20 Akim Demaille + + 2001-03-20 Akim Demaille + + * tests/good/comments-javalike-nested.tig, + * tests/good/comments-with-parens.tig, + * tests/good/comments-with-quotes.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@186 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-20 Akim Demaille + + 2001-03-20 Akim Demaille + + * src/type/type-env.hh, src/type/type-visitor.hh, + * src/symbol/env.hh: Don't `new' Symbols, don't pass them by + reference: they are small enough. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@185 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-17 Akim Demaille + + 2001-03-17 Akim Demaille + + * src/semant/entry.hh: Remove. + * src/semant/level-entry.hh: Rename as... + * src/translate/level-entry.hh: this. + Be in the translate name space. + Don't use the former Entry base class. + * src/type/type-entry.hh: Don't use Entry. + + * src/semant/level-env.hh: Rename as... + * src/translate/level-env.hh: this. + Be in the translate name space. + * src/semant/libsemant.cc: Rename as... + * src/translate/libtranslate.cc: this. + * src/semant/libsemant.hh: Rename as... + * src/translate/libtranslate.hh: this. + * src/semant/semant-visitor.hh (SemantVisitor): Rename as... + * src/translate/translate-visitor.hh (TranslateVisitor): this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@184 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-17 Akim Demaille + + 2001-03-17 Akim Demaille + + * src/type/type-entry.hh (VarEntry): No longer store an Acces + to the variable. + (FunEntry): No Level, nor Label needed in the type visitor, remove. + * src/type/type-env.hh: Adjust. + * src/type/type-visitor.hh: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@183 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-16 Akim Demaille + + 2001-03-16 Akim Demaille + + * tests/syntax/seqexp-1.tig, tests/syntax/seqexp-2.tig, + * tests/syntax/seqexp-3.tig, tests/syntax/seqexp-4.tig, + * tests/escapes/local-escapes.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@182 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-16 Akim Demaille + + 2001-03-16 Akim Demaille + + * src/types: Rename as... + * src/type: this, for consistency with the name space. + * src/semant/typecheck.cc: Rename as... + * src/type/libtype.cc: this. + Use the `type' namespace, not `semant'. + Remove the various `type::'. + * src/semant/type-entry.hh, src/semant/type-env.hh: Likewise. + * src/type/libtype.hh: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@181 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-15 Akim Demaille + + 2001-03-15 Akim Demaille + + * src/symbol/symbol_test.cc: Rename as... + * src/symbol/symbol-test.cc: this. + * src/absyn/escapes-visitor.hh (Escape, VariableEscape) + (FormalEscape): Rename as... + (Definition, VariableDefinition, FormalDefinition): these. + * src/absyn/functiondec.hh (escapes_get): Return a list instead of + requiring a reference to the list holding the result. + * src/absyn/print-visitor.hh (visit (SeqExp)): Always display the + parens. + (visit (VarDec), visit (Field)): Display the escaping status as a + comment, not a new keyword. + * src/parse/scantiger.ll (id): Can start with an underscore. + * src/semant/semant-visitor.hh (visit (VarDec)): Fix a stupid + typo: invoke `translate::assignExp' when it is an assignment, not + when it is not :). + * tests/good/types-aliases.tig: Typo. + * tests/good/string-int-not-keywords.tig: Rearrange the + definitions of string and int so that they are not mutually + recursive, but are both based on the predefined `int' type. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@180 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-03-06 Akim Demaille + + 2001-03-06 Akim Demaille + + Esthetic issues. + + * src/absyn/print-visitor.hh (visit RecordTy): Initialize `i' + once. + * src/absyn/typedec.hh, src/parse/scantiger.ll: Formatting + changes. + * src/symbol/table.hh: Arguments passed by value don't need to be + const. + In symbol::, don't use symbol::. + Remove useless `typename's. + (print): Fix the output of the delimiter. + + + Upgrade the Autoconfiscation. + + * depcomp: New. + * bootstrap.sh: Install depcomp in the top dir. + + + Update the test suite. + + * tests/good/initialize-to-nil.tig, + * tests/good/string-int-not-keywords.tig, + * tests/good/types-aliases.tig: Don't depend on working empty + records to keep different issues unrelated. + * tests/good/string-backslash.tig: Check `\' support. + * tests/good/string-huge.tig: Don't test -escapes. + * tests/lexical/string-comma-escape.tig: New. + * tests/good/assign-vs-rel.tig: New. + * tests/good/string-octal.tig: New. + * tests/good/string-simple-quotes.tig: New. + * tests/good/nul-character.tig: New. + * tests/good/underscore.tig: New. + * tests/good/assign-vs-boolean.tig: New. + * tests/good/donald.tig: New. + * tests/syntax/call-separator-1.tig: New. + * tests/syntax/call-separator-2.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@179 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-09 Akim Demaille + + 2001-02-09 Akim Demaille + + * configure.in, boostrap.sh, Makefile.am: Adjust to Automake + 1.4b. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@178 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-09 Akim Demaille + + 2001-02-09 Akim Demaille + + Stop using std::list everywhere. + + * src/absyn/exp.hh : New. + * src/absyn/dec.hh : New. + * src/absyn/field.hh : New. + * src/absyn/fieldexp.hh : New. + Use them. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@177 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-09 Akim Demaille + + TODO. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@176 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-09 Akim Demaille + + Update TODO. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@175 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-09 Akim Demaille + + 2001-02-09 Akim Demaille + + * src/absyn/README (VarExp): Remove. + * configure.in: Clean up. + * bootstrap.sh: New. + * src/semant/type-entry.hh: Add to the repository, forgotten from + the previous patch. + * src/semant/level-env.hh: Likewise. + * src/semant/level-entry.hh: Likewise. + * src/semant/temp-env.hh: Likewise. + * tests/good/string-backslash.tig: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@174 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-09 Akim Demaille + + 2001-02-09 Akim Demaille + + Get rid of the last types needed. + + * src/absyn/vardec.hh (enum Kind, _kind, kind_get, kind_set): New. + * src/semant/type-visitor.hh (visit VarDec): Set the kind. + * src/semant/semant-visitor.hh (visit VarDec): Use the kind + instead of the type. + + We no longer need tagging absyn with types. + + * src/absyn/exp.hh, src/absyn/field.hh, src/absyn/functiondec.hh, + * src/absyn/vardec.hh: Don't include code to tag with Type. + * src/semant/type-visitor.hh: No longer use type_set. + * src/semant/semant-visitor.hh: No longer include type.hh. + + * src/semant/level-entry.hh (TypeLevelEntry): Don't require a + type. Was left by mistake. + * src/types/types.hh (Named::actual): Assert _type. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@173 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + Fix ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@172 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + * src/absyn/assignexp.hh (enum Kind, _kind, kind_get, kind_set): New. * src/semant/type-visitor.hh (visit AssignExp): Set the kind. * src/semant/semant-visitor.hh (visit AssignExp): Use the kind instead of the type. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@171 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + Yipee! It seems to be going to be great... And the test suite is still happy. I start wondering if it works :) + + * src/semant/entry.hh: Just declare `Entry', move the former + definition of `TypeEntry', `VarEntry' and `FunEntry' as are in... + * src/semant/type-entry.hh: This new file. + * src/semant/type-env.hh: Use these. + * src/semant/semant-visitor.hh: Use only a LevelEnv, which means + removing type related code interacting with _env. + * src/semant/level-entry.hh: New file, very much inspired from the + former entry.hh, but old type related code is removed. Class are + named `LevelTypeEntry', `LevelVarEntry' and `LevelFunEntry' to + avoid clashes. But some day, they should move into different name + spaces... + * src/semant/level-entry.hh: New file, strongly inspired from + former `entry.hh', but type related code is removed. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@170 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + Let Env be a class template, and TypeEnv be the env used by type checking. For the time being, SemantVisitor is still using the TypeEnv, to make the patch smaller, hence TypeEnv still contains accesses etc. + + * src/semant/env.hh (Env): Rename as... + * src/semant/type-env.hh (TypeEnv): this. + Adjust all dependencies. + + I'd like to name this new file `env.hh', but PRCS does not like it + at all (well, I'm not kind with it: renaming a former `env.hh' and + creating a new one...). + + * src/semant/temp-env.hh: No longer ask for a translate::Level. + Don't fill the initial environment. + Change all the `type_put', `type_get' into `typeentry_put' + etc. which *only* puts or gets entries. + Remove all the methods which were specialized in accessing some + fields of the Entries. + * src/semant/type-env.hh (TypeEnv): Inherit from Env. + Use its methods to put, to get, to instantiate, to print, to play + with the scope. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@169 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + * src/absyn/letexp.hh (enum Kind, _kind, kind_get, kind_set): New. * src/semant/type-visitor.hh (visit LetExp): Set the kind. * src/semant/semant-visitor.hh (visit LetExp): Use the kind instead of the type. + + Also adjust the SeqExp kind code to use also expression_kind and + instruction_kind instead of ad hoc eseq_kind and seq_kind. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@168 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + * src/absyn/ifexp.hh (enum Kind, _kind, kind_get, kind_set): New. * src/semant/type-visitor.hh (visit IfExp): Set the kind. * src/semant/semant-visitor.hh (visit IfExp): Use the kind instead of the type. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@167 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + * src/absyn/seqexp.hh (enum Kind, _kind, kind_get, kind_set): New. * src/semant/type-visitor.hh (visit SeqExp): Set the kind. * src/semant/semant-visitor.hh (visit SeqExp): Use the kind instead of the type. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@166 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + * src/absyn/opexp.hh (enum Kind, _kind, kind_get, kind_set): New. * src/semant/type-visitor.hh (visit OpExp): Set the kind. * src/semant/semant-visitor.hh: Use the kind instead of the type. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@165 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + * src/semant/semant-visitor.hh (visit (const AssignExp& e)): Don't check for read only variables, the TypeVisitor did it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@164 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + * src/semant/semant-visitor.hh (visit (const CallExp& e)): Just as below. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@163 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + * src/semant/semant-visitor.hh (visit (const RecordExp& e)): Get rid of type related entities, useless. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@162 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + * src/semant/type-visitor.hh, src/semant/semant-visitor.hh: Variable declaration cleanups: try to make sure all the definitions have a default value. Avoid introducing a variable without an init value by moving definition to the first assignment. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@161 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + Now remove the type checking code from the SemantVisitor. + + * src/absyn/README: Adjust: Var inherits from Exp now. + + We need to store some more types/data in Absyn. + And avoid other name clashes. + + * src/absyn/default-visitor.hh, src/absyn/print-visitor.hh): + s/type_get/type_name_get/. + * src/absyn/fieldvar.hh (_index, index_get, index_set): New. + * src/absyn/functiondec.hh (_result_type, result_type_get) + (result_type_set, _formals_type, formals_type_get) + (formals_type_set): New. + * src/absyn/vardec.hh: s/type/type_name/g. + (_type, type_set, type_get): New. + * src/semant/type-visitor.hh (FieldVar): Store the `index' in + absyn. + (FunctionDec): Store the signature in absyn. + (VarDec): Store type in absyn. + Adjust to the renaming of former `type_get' into `type_name_get'. + + Remove type checking from SemantVisitor. + + * src/semant/semant-visitor.hh (type_recovery): Just set + `exit_status'. + (type_mismatch, check_types_equal, check_types_comparable) + (check_types_assignable): Remove. + For most `visit' methods, simply remove all type related code. + When the type is needed (to distinguish a procedure from a + function, to distinguish strings comparison from integer + comparison, to differentiate a SeqExp from an EseqExp, to store a + function signature or a variable in the Env), just invoke + `e.type_get ()' to recover it from absyn. + + The more I think about it, the more I'm convince we really don't + need the type here... More work to come. + + + Some configury adjustments. + + * src/semant/Makefile.am: Don't use noinst_HEADERS, list in + SOURCES. + * src/semant/libsemant.cc: Parsimony in #includes. + * src/semant/libsemant.hh: Declare `type_check'. + * src/tc.cc (main): Call `type_check', and exit before semantic + analysis if there were errors. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@160 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + Create a type checking phase. + + * src/semant/type-visitor.hh: New, based on semant-visitor.hh. + + I'm not yet sure of the following changes which might be reverted + in the future. First I want the TypeVisitor to work. + + * src/semant/entry.hh (FunEntry::_level): Pointer, not reference. + * src/semant/env.hh: Receive a pointer a `outer', not a reference. + * src/semant/libsemant.cc: Run the TypeVisitor. + * src/semant/semant-visitor.hh: `outer_level' is a pointer, not a + reference. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@159 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + Let Exp (and therefore Var) and Field have a type::Type field. + + * src/absyn/exp.hh (type_get, type_set, _type): New. + * src/absyn/field.hh (type_get, type_set, _type): New. + * src/semant/semant-visitor.hh: Adjust all the visitors of Exp and + Field to set the type once computed. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@158 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + Don't use `type' when referring to the name of a type, there is too many risks of shooting in our foot. + + * src/absyn/arrayexp.hh: s/type/type_name/g. + * src/absyn/field.hh: Likewise. + * src/absyn/recordexp.hh: Likewise. + * src/absyn/arrayty.hh: s/type/base_type/g. + * src/absyn/print-visitor.hh: Adjust to these changes. + * src/semant/semant-visitor.hh: Likewise. + + + Let Var inherit from Exp. + + * src/absyn/var.hh: Inherit from Exp, not Absyn. + * src/absyn/varexp.hh: Remove. + * src/parse/parsetiger.yy (exp: lvalue): Don't use a VarExp, just + assign $1 to $$, but be careful to assist Bison's type checking. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@157 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-06 Akim Demaille + + * lib/getopt.c, lib/getopt1.c, lib/getopt.h: Sync with CVS GNU libc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@156 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-05 Akim Demaille + + 2001-02-05 Akim Demaille + + * lib/getopt.c: Really do what is stated below. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@155 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-05 Akim Demaille + + 2001-02-05 Akim Demaille + + * lib/getopt.c, lib/getopt1.c: ANSIfy, so that it compiles + properly in C++. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@154 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-02-05 Akim Demaille + + 2001-02-05 Akim Demaille + + * src/absyn/intexp.hh (IntExp::IntExp): Use explicit to avoid bad + surprises. I lost quite some time because of this `feature'. + * src/absyn/print-visitor.hh (_tab): Be a simple member, there is + no need for a method! + * src/symbol/symbol.hh: Likewise. + * src/tree/const.hh: Likewise. + * src/tree/label.hh: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@153 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-01-24 Akim Demaille + + 2001-01-24 Akim Demaille + + * src/semant/semant-visitor-template.hh: Remove, obsolete. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@152 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-01-24 Akim Demaille + + 2001-01-24 Akim Demaille + + * src/translate/exp.hh: Student delimiters. + * src/translate/exp.hh-template: Kaboom. + * src/absyn/libabsyn.cc: Don't `new' the visitors, let + them be stack objects. + * src/absyn/print-visitor.hh (_dec): Fix the assertion. + * src/semant/libsemant.cc (semantic_analysis): Allocate properly + all the fields of the `outer_level'. + * src/semant/semant-visitor.hh (SemantVisitor): Let _exp and + _level be pointers. + Adjust the code. + (~SemantVisitor): New. + Push the main program in the fragments. + * src/tc.cc (dispay_ir): Don't check if `fragments' can be empty: + it can't now that it includes the main program. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@151 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-01-23 Akim Demaille + + 2001-01-23 Akim Demaille + + Let the program be a fragment. + + * src/semant/analysis.cc, src/semant/analysis.hh: Rename as... + * src/semant/libsemant.cc, src/semant/libsemant.hh: these. + * src/semant/libsemant.cc (semantic_analysis): Store the program + in a new ProcFrag, `$Main'. + * src/tc.cc (canonicalization, dispay_ir, main): There is no + `the_tree' any longer, just fragments. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@150 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-01-15 Akim Demaille + + 2001-01-15 Akim Demaille + + * lib/getopt.c, lib/getopt.h, lib/getopt1.c: New. + * src/absyn/escapes-visitor.hh (absyn): Suppress more code for + students. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@149 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2001-01-15 Akim Demaille + + 2001-01-15 Akim Demaille + + * tests/good/initialize-to-nil.tig: Normalize the body. + * tests/good/letexp-eseq.tig: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@148 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-12-19 Alexandre Duret-Lutz + + 2000-12-19 Alexandre Duret-Lutz + + Use a hash_map table to store symbols and use their _name's address + as hash keys. + + * src/symbol/table.hh (std::hash): New. + (map_t): Define as a hash_map, with const Symbol as key. + * src/symbol/symbol.hh (Symbol::operator<): Remove (now useless). + + Misc fixes. + + * src/absyn/callexp.hh: Comment extra characters after #endif. + * src/absyn/functiondec.hh: Likewise. + * src/absyn/ifexp.hh: Likewise. + * src/absyn/letexp.hh: Likewise. + * src/absyn/recordexp.hh: Likewise. + * src/absyn/recordty.hh: Likewise. + * src/absyn/seqexp.hh: Likewise. + + * src/tc.cc (exit_status): Update comment. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@147 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-12-18 Akim Demaille + + 2000-12-18 Akim Demaille + + * src/absyn/README: s/position/location/. + * src/symbol/symbol.hh: Formatting and comment changes. + * src/symbol/table.hh: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@146 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-12-18 Akim Demaille + + 2000-12-18 Akim Demaille + + * tests/good/string-int-not-keywords.tig: New. + * tests/syntax/nil-keyword.tig: New. + * src/parse/parsetiger.yy: Prefer `%nonassoc' to `%left' when it + doesn't matter. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@145 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-12-14 Akim Demaille + + 2000-12-14 Akim Demaille + + * src/absyn/location.hh (initial_column, initial_line): Remove. + (<<): Fix. + * src/parse/parse.hh (yyerror): Don't prototype, nobody uses it. + * src/parse/parsetiger.hh (yyerror): #define as a call to + parse_error. + (parse_error): Improve version of former `yyerror'. + * src/scantiger.ll (initial_column, initial_line): Remove. + (YY_USER_INIT): Set end's filename too. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@144 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-12-14 Akim Demaille + + 2000-12-14 Akim Demaille + + * src/absyn/location.hh: New file, for pairs of positions. + * src/absyn/position.hh: A position is just one point now. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@143 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-11-07 Akim Demaille + + 2000-11-07 Akim Demaille + + * src/absyn/position.hh (column, line, word): New. + (<<): Don't issue twice the line number when the range is on a + single line. + * src/parse/scantiger.ll: Use them. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@142 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-11-07 Akim Demaille + + 2000-11-07 Akim Demaille + + * src/common.hh: Protect against multiple inclusion. + (exit_t): New type. + Change all the occurrences of hard coded exit values into members + of exit_t. + Shift the exit values to follow the new rules. + + * src/parse/parse.hh: New file. + * src/parse/scantiger.ll, parse/parsetiger.yy: Use it. + * src/parse/scantiger.ll: Use directly yylloc to compute the + locations. + + * src/absyn/position.hh: Declare as a class, not struct. + (step, Position, operator+, operator+=): New. + + * src/parse/scantiger.ll: Catch invalid octal escapes. + Display the guilty input when something goes wrong. + + * tests/lexical/invalid-character.tig: New. + * tests/lexical/unterminated-comment.tig: Likewise. + * tests/lexical/unterminated-string.tig: Likewise. + * tests/lexical/string-octal-escape.tig: Likewise. + * tests/syntax/charset.tig: Remove. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@141 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-10-20 Alexandre Duret-Lutz + + 2000-10-20 Alexandre Duret-Lutz + + * src/parse/parsetiger.yy: Cosmetic changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@140 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-10-19 Alexandre Duret-Lutz + + 2000-10-19 Alexandre Duret-Lutz + + Introduce concatenation of positions for better error reporting. + + * src/absyn/position.hh (operator+): New. + * src/parse/parsetiger.yy (exp): Use it in the `for' expression. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@139 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-10-19 Alexandre Duret-Lutz + + 2000-10-19 Alexandre Duret-Lutz + + * src/parse/parsetiger.yy (exp): Transform the `for' expression + into an infinite while loop that breaks when the upper limit is + reached. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@138 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-10-19 Alexandre Duret-Lutz + + 2000-10-19 Alexandre Duret-Lutz + + * src/absyn/vardec.hh (VarDec::VarDec): Remove duplicate + constructor, `writable' defaults to true instead. + * src/absyn/assignexp.hh (AssignExp::AssignExp): Likewise, + `force' defaults to false. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@137 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-10-19 Alexandre Duret-Lutz + + 2000-10-19 Alexandre Duret-Lutz + + * src/absyn/default-visitor.hh: Cosmetic change in comment. + * src/absyn/escapes-visitor.hh: Reword a comment. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@136 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-10-18 Akim Demaille + + 2000-10-18 Akim Demaille + + * src/absyn/arrayexp.hh: Replace `visitArrayExp' with just + `visit'. Overloading takes care of it all. + * src/absyn/arrayty.hh: Likewise. + * src/absyn/assignexp.hh: Likewise. + * src/absyn/breakexp.hh: Likewise. + * src/absyn/callexp.hh: Likewise. + * src/absyn/default-visitor.hh: Likewise. + * src/absyn/escapes-visitor.hh: Likewise. + * src/absyn/fieldexp.hh: Likewise. + * src/absyn/field.hh: Likewise. + * src/absyn/fieldvar.hh: Likewise. + * src/absyn/forexp.hh: Likewise. + * src/absyn/functiondec.hh: Likewise. + * src/absyn/ifexp.hh: Likewise. + * src/absyn/intexp.hh: Likewise. + * src/absyn/letexp.hh: Likewise. + * src/absyn/namety.hh: Likewise. + * src/absyn/nilexp.hh: Likewise. + * src/absyn/opexp.hh: Likewise. + * src/absyn/print-visitor.hh: Likewise. + * src/absyn/recordexp.hh: Likewise. + * src/absyn/recordty.hh: Likewise. + * src/absyn/seqexp.hh: Likewise. + * src/absyn/simplevar.hh: Likewise. + * src/absyn/stringexp.hh: Likewise. + * src/absyn/subscriptvar.hh: Likewise. + * src/absyn/typedec.hh: Likewise. + * src/absyn/vardec.hh: Likewise. + * src/absyn/varexp.hh: Likewise. + * src/absyn/visitor.hh: Likewise. + * src/absyn/whileexp.hh: Likewise. + * src/semant/semant-visitor.hh: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@135 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-10-18 Akim Demaille + + 2000-10-18 Akim Demaille + + * src/canon/canon.hh: Better comments. + (canon_sxp): Remove, unused. + + * tests/type/test16.tig: Rename as... + * tests/type/types-endless-recursion.tig: this. + * tests/type/test45.tig: Rename as... + * tests/type/unconstrained-nil.tig: this. + + * tests/canon: New directory, containing typical failures of + canonization. + * tests/canon/functions.tig: New file. + * tests/canon/side-effects-in-sxp.tig: Likewise. + * tests/canon/side-effects-in-init.tig: Likewise. + * tests/canon/commutation-2.tig: Likewise. + * tests/canon/commutation-1.tig: Likewise. + * tests/canon/call.tig: Likewise. + + * tests/segv/bempel_j.tig: Likewise. + + * tests/good/compare-nil-and-record.tig: Likewise. + * tests/good/assign-void.tig: Likewise. + * tests/good/initialize-to-nil.tig: Likewise. + * tests/good/letexp-eseq.tig: Likewise. + * tests/syntax/type-nil.tig: Likewise. + * tests/type/string-arithmetics.tig: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@134 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-11 Akim Demaille + + 2000-08-10 Akim Demaille + + Start normalizing and studentizing the parse module. + + * src/parse/scantiger.ll: Studentize. + * src/parse/scantiger.hh: Remove. + * src/parse/parsetiger.yy: Put some student marks. + (parse): Move to... + * src/parse/libparse.cc: here, new file. + * src/parse/parse.hh: Rename as... + * src/parse/libparse.hh: this. + * src/parse/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@133 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-09 Akim Demaille + + 2000-08-09 Akim Demaille + + * src/absyn/print-visitor.hh: Adjust so that student can compile + absyn/ without modification. + * src/absyn/default-visitor.hh: Likewise. + * src/absyn/callexp.hh [STUDENT]: Add a fake ctor which only makes + it possible to compile, but is not functional. + * src/absyn/functiondec.hh: Likewise. + * src/absyn/ifexp.hh: Likewise. + * src/absyn/letexp.hh: Likewise. + * src/absyn/recordexp.hh: Likewise. + * src/absyn/recordty.hh: Likewise. + * src/absyn/seqexp.hh: Likewise. + * studentize: Handle #if STUDENT properly. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@132 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-09 Akim Demaille + + 2000-08-09 Akim Demaille + + * src/semant/env.hh: Insert student marks. + More comments. + (_tenv, _venv, _fenv): Rename as _ttable, _vtable, _ftable, since + these are tables of symbols, not environments. + (var_put): Use a default value for `writable' instead of having + two methods. + * src/semant/env-template.hh: Remove, now useless. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@131 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-09 Akim Demaille + + 2000-08-09 Akim Demaille + + * src/absyn/test_absyn.cc: Rename as... + * src/absyn/test-absyn.cc: this. + Update. + * src/absyn: Put the student marks. + + Include a target `studist' which builds the student distribution. + + * studentize: New file. + * Makefile.am (studist): New target. + * src/absyn/Makefile: Remove the old studentizing mechanism. + * src/semant/Makefile: Likewise. + * src/canon/Makefile: Likewise. + + Clean up a few messy things. + + * src/absyn/functiondec.hh (_functionDecs): Remove, useless and + unused. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@130 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-09 Akim Demaille + + 2000-08-09 Akim Demaille + + * src/canon/canon.hh (is_nop): SXP (TEMP (t)) is a nop too. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@129 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-09 Akim Demaille + + 2000-08-09 Akim Demaille + + * src/absyn/default-visitor.hh: Out the students marks. + Make the `for' loops uniform. + * src/absyn/escapes-visitor.hh: New file. + * src/absyn/simplevar.hh: Formatting changes. + * src/absyn/vardec.hh (VarDec::escape_set): New. + * src/absyn/field.hh (Field::escape_set): New. + + * tests/good/escapes.tig: Rename as... + * tests/good/string-escapes.tig: this. + * tests/good/huge-string.tig: Rename as... + * tests/good/string-huge.tig: this. + * tests/escapes/formal-escapes.tig: this. + * tests/escapes/variable-escapes.tig: this. + * tests/escapes/formal-escapes.tig: New. + * tests/escapes/variable-escapes.tig: New. + * tests/good/compare-strings.tig: New. + * tests/good/single-variable.tig: New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@128 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-09 Akim Demaille + + 2000-08-09 Akim Demaille + + Install the basis for a computation of the escapes. + + * src/absyn/absyn.hh (print): Remove. + * src/absyn/print-visitor.hh (PrintVisitor::_display_escapes_p): + New. + Use it. + * src/absyn/absyn.cc: Rename as... + * src/absyn/libabsyn.cc: this. + Provide functions instead of methods. + (print): Pass display_escapes_p to the visitor. + * src/absyn/libabsyn.hh: New. + * src/tc.cc (main): Adjust to support --compute-escapes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@127 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-08 Akim Demaille + + 2000-08-08 Akim Demaille + + Emit the proper `MOVE (rv, body_value)' for function calls. + + * src/translate/translation.hh (procedureDec): New. + (functionDec): Use it. + * src/semant/semant-visitor.hh (visitFunctionDec): Distinguish + the case of procedures and functions. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@126 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-08 Akim Demaille + + 2000-08-08 Akim Demaille + + * src/semant/semant-visitor.hh (SemantVisitor): Inherit from + DefaultVisitor instead of Visitor. + (visitVarExp, visitFieldExp): Remove, useless. + Some stylistic changes. + Handle some FIXME:s. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@125 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-08 Akim Demaille + + 2000-08-08 Akim Demaille + + * src/absyn/tigervisitor.hh-template: Remove, since now + tiger-visitor.hh is equipped with //<<, //>> pairs. + * src/absyn/visitor.hh-template: Remove, since there is + default-visitor.hh now. + * src/absyn/tiger-visitor.hh (TigerVisitor): Inherit from the + DefaultVisitor rather than the Visitor. + Rename as PrintVisitor. + Rename the file as... + * src/absyn/print-visitor.hh: this. + (visitVarExp): Remove, it is handled by DefaultVisitor. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@124 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-08 Akim Demaille + + 2000-08-08 Akim Demaille + + * src/absyn/default-visitor.hh: New file. + * src/absyn/tigervisitor.hh: Rename as... + * src/absyn/tiger-visitor.hh: this. + Normalize all the loops to `for', not `while'. + * src/absyn/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@123 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-08 Akim Demaille + + 2000-08-08 Akim Demaille + + Give a means to display the escaping variables. + + * src/tc.cc (display_escapes_p): New. + * src/common.hh: Adjust. + * src/absyn/tigervisitor.hh: Formatting changes. + (visitField, visitVarDec): Display the escapes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@122 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-08 Akim Demaille + + 2000-08-08 Akim Demaille + + * src/temp/label.hh (Label::_name): Be a symbol::Symbol, not a + string. + (Label::Label (const string &)): New. + * src/translate/translation.hh (callExp): Use the new facilities + from Label. + (callExp (const temp::Label label, Exp &arg1), + callExp (const temp::Label label, Exp &arg1, Exp &arg2)): New. + Use them. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@121 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-07 Akim Demaille + + 2000-08-07 Akim Demaille + + * src/translate/translation.hh: Add some //<<, //>> pairs. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@120 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-07 Akim Demaille + + 2000-08-07 Akim Demaille + + Comparison between strings requires using an auxiliary function, + one cannot not just use opExp. + + * src/translate/translation.hh (stringOpExp): New. + * src/semant/semant-visitor.hh (visitOpExp): Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@119 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-07 Akim Demaille + + 2000-08-07 Akim Demaille + + Augment the documentation, and fix a bug: each formal parameter of + a function was allocated twice, and only the latest was used. + + * src/tc.cc (main): Set `program_name'. + * src/frame/access.cc: More comments. + * src/frame/access.hh: Likewise. + * src/frame/frame.hh: Likewise. + (Frame::formals_get): New member function. Added in order to have + the following items implementable. + * src/translate/access-level.hh: More comments. + (Level::_formals): New. + (Level::Level): Use Frame::formals_get to build Level::_formals. + + * src/semant/semant-visitor.hh (visitFunctionDecHeader): Minor + reformatting., + (visitFunctionDecBody): Do not allocate for the formals again, + instead, fetch the accesses to the formals via the level of the + function. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@118 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-02 Akim Demaille + + 2000-08-02 Akim Demaille + + * src/tc.cc (canonicalization): Work on the objects themselves, + not on copies! + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@117 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-02 Akim Demaille + + 2000-08-02 Akim Demaille + + * src/tc.cc: Revamping the options in order to display the various + intermediate steps on demand. + + * tests/good/test06.tig: Rename as... + * tests/good/mutually-recursive-functions.tig: this. + * tests/good/test07.tig: Rename as... + * tests/good/mutually-recursive-procedures.tig: this. + * tests/good/test38.tig: Rename as... + * tests/good/shadowing-types-consecutive.tig: this. + * tests/good/test47.tig: Rename as... + * tests/good/shadowing-types-separate.tig: this. + * tests/good/test48.tig: Rename as... + * tests/good/shadowing-functions.tig: this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@116 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-01 Akim Demaille + + 2000-08-01 Akim Demaille + + * tests/good/test06.tig: Rename as... + * tests/good/mutually-recursive-functions.tig: this. + * tests/good/test07.tig: Rename as... + * tests/good/mutually-recursive-procedures.tig: this. + * tests/good/test38.tig: Rename as... + * tests/good/shadowing-types-consecutive.tig: this. + * tests/good/test47.tig: Rename as... + * tests/good/shadowing-types-separate.tig: this. + * tests/good/test48.tig: Rename as... + * tests/good/shadowing-functions.tig: this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@115 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-01 Akim Demaille + + 2000-08-01 Akim Demaille + + * src/canon/libcanon.cc (trace_canon_p): New variable. + * src/canon/canon.hh: Insert student marks. + Trace only when trace_canon_p; + * src/canon/Makefile.am (.hh.HH, .cc.CC): New rule. + * src/tc.cc: Revamp the getopt use so that variables are handled + directly by getopt. + (usage): New function. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@114 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-08-01 Akim Demaille + + 2000-08-01 Akim Demaille + + * src/canon/canon.hh: Revamp. + * src/canon/check.hh: Do check for something. + * src/tc.cc (canonicalization): New function. + * src/translate/fragment.hh (ProgFrag::_body): is a pointer, not a + reference. + Adjust dependencies. + * src/tree/sxp.hh (exp_get): Don't assert your result. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@113 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-07-26 Akim Demaille + + 2000-07-26 Akim Demaille + + The variables of `for' loops are read-only. + + * src/absyn/assignexp.hh (force): New attribute. + * src/absyn/field.hh: Formatting changes. + * src/absyn/vardec.hh (writable): New attribute. + * src/parse/parsetiger.hh: Adjust, so that the variable of `for' + loop is not readable, but the `for' loop may increment it. + * src/semant/entry.hh (VarEntry): Adjust to handle `writable'. + * src/semant/env.hh (var_put): Provide a version with `writable'. + (var_writable_get): New. + * src/semant/semant-visitor.hh (visitVarDec, visitAssignExp): + Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@112 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-07-24 Akim Demaille + + 2000-07-24 Akim Demaille + + * src/canon/check.hh: New file. + * src/canon/libcanon.cc: Use it. + * src/tree/node.hh (_child): Rename as + (_children): this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@111 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-07-24 Akim Demaille + + 2000-07-24 Akim Demaille + + * src/canon/canon.hh: Full rewrite. + * src/tc.cc: Rename the --use-rewrite option as --rewrite. + * src/tree/node.hh (second_child_set): Remove the spurious + assignment (the value was set twice). + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@110 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-07-21 Akim Demaille + + 2000-07-21 Akim Demaille + + * src/semant/semant-visitor.hh (visitVarDec): Remove tracing code. + + * src/tree/node.hh (nodes_t): New type. + Use it everywhere instead of vector. + + * src/tree/cjump.hh: The two label are children, not extra + attributes. + * src/tree: Globally, avoid using child_get (int). + * src/node.hh (Node::tag_print): New virtual method. + (Node::print): Use it. + Adjust all the dependencies, i.e., remove all the `print' (but in + ESEQ and SEQ), and implement `tag_print'. + * src/translate/exp.hh (RelCx::unCx): Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@109 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-07-21 Akim Demaille + + 2000-07-21 Akim Demaille + + `let var a := () in end' is legal. + + * src/semant/semant-visitor.hh (visitVarDec, visitAssignExp): + Don't try to issue an assignment when the variable is of type + void. + + Factor the handling of the translation of SeqExp and EseqExp. + + * src/translate/translation.hh (seqExp, eseqExp): Rewrite so that + they have some optimizations builtin. This allows to simplify the + calling code. + * src/semant/semant-visitor.hh (visitSeqExp, visitLetExp): Use + them. + + * src/canon/libcanon.cc (canonicalization): Remove, replaced by... + (canoncalize): New. + Adjust dependencies. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@108 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-07-13 Akim Demaille + + 2000-07-13 Akim Demaille + + * src/canon/libcanon.hh: New file. + * src/canon/libcanon.cc: Likewise. + * src/canon/test-canon: Likewise. + * src/canon/Makefile.am: Likewise. + * src/translate/translation.hh-student: Likewise. + * src/translate/exp.hh-template: Likewise. + * src/tree/rewrite.hh: Likewise. + * src/tree/test-tree.cc: Delete, since canon/test-canon.cc + performs this. + + * src/canon/canon.hh (rewrite_bubble_seq, is_nop, rewrite_nop): + New functions. + * src/tree/node.hh: More code for canon/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@107 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-07-07 Akim Demaille + + 2000-07-07 Akim Demaille + + Import the suggestions from Johan Baltie. + + * src/frame/frame.hh (frame_pointer_get, return_value_get): + Converted into class methods. + (local_alloc): Use word_size_get. + * src/frame/access.cc (In_Frame::exp): Directly ask Frame for the + FP. + Its arg is no longer needed. + (In_Register): Likewise. + * src/frame/access.hh: Adjust. + * src/translate/translation.hh (simpleVar): Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@106 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-07-07 Akim Demaille + + 2000-07-07 Akim Demaille + + Implement IR translation of `break'. + + * src/translate/translation.hh (breakExp): New method. + (whileExp): Take an new argument, the label of the current to + break from. + * src/semant/semant-visitor.hh (SemantVisitor) <_in_loop_p>: + Replace with... + <_loop_end_label>: this. + : Adjust. + + * tests/types/test51.tig: Rename as... + * tests/types/break-outside-loop.tig: this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@105 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-07-07 Akim Demaille + + 2000-07-07 Akim Demaille + + Some more simplifications in order to produce the code delivered + to the students. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@104 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-07-06 Akim Demaille + + 2000-07-06 Akim Demaille + + * src/semant/analysis.cc (semantic_analysis): Use `fragments'. + * src/semant/analysis.hh: Adjust. + * src/translate/translation.hh: More comments for students. + (functionDec): New method. + * src/semant/semant-visitor.hh (SemantVisitor) : New + attribute. + : Use `unctionDec' and + `fragments'. + * src/tc.cc (main): Create, set and display "fragments". + * src/translate/fragment.hh: Better "print" methods. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@103 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-07-06 Akim Demaille + + 2000-07-06 Akim Demaille + + * src/semant/entry.hh: Formatting changes. + * src/semant/env.hh: Likewise. + * src/semant/semant-visitor.hh: Likewise. + * src/translate/translation.hh: Likewise. + + * src/translate/translate.hh: Rename as... + * src/translate/access-level.hh: this. + Formatting changes. + * src/translate/Makefile.am: Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@102 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-07-05 Akim Demaille + + 2000-07-05 Akim Demaille + + * src/common.hh: New file. + * src/tc.cc: Use getopt. + * src/translate/exp.hh: Describe precisely the content of the + file. + (Cx): Delete. + (RelCx): Adjust, and rename as Cx. + * src/translate/translate.hh: Adjust. + (ifExpVoid, ifExpNonVoid): New. + * src/semant/semant-visitor.hh: Depending upon a runtime option, + use either ifExp or ifExpVoid and ifExpNonVoid. + * tests/good/empty-record-type.tig: New file. + * tests/good/empty-let-body.tig: New file. + * tests/type/invalid-array-base-type.tig: New file. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@101 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-07-03 Akim Demaille + + 2000-07-03 Akim Demaille + + * src/semant/semant-visitor.hh (type_recovery): New method. + (type_mismatch): Use it. + (SemantVisitor): Use them instead of adhoc error recovery. + (check_types_equal, check_types_comparable, + check_types_assignable): Return a bool (true when was 0, and false + when was 1, the logic was reversed). + Adjust all the dependencies. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@100 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-06-28 Akim Demaille + + 2000-06-28 Akim Demaille + + * src/semant/semant-visitor.hh: Prefer + if (!OK) + fail (); + proceed (); + over + if (OK) + proceed (); + else + fail (); + + * src/translate/exp.hh (IfThenElseExp): In unEx and unNx, don't + build the CJump yourself: the whole point of this construct is + precisely to use _cond.unCx. + + * src/translate/translation.hh (forExp): Remove, dead. + * src/translate/exp.hh: Fix IfThenElseExp. + + * tests/good/test50.tig: Rename as... + * tests/good/break.tig: this. + + * src/parse/parsetiger.yy: Set exit_status on error. + + * src/semant/analysis.cc: New file. + * src/semant/analysis.hh: Ditto. + + * tests/good/compare-record-and-record.tig: New test. + * tests/good/huge-string.tig: Likewise. + * tests/good/if-and-if.tig: Likewise. + * tests/good/if-and-rel.tig: Likewise. + * tests/good/if-void-body.tig: Likewise. + * tests/good/of-precedence.tig: Likewise. + * tests/good/rel.tig: Likewise. + * tests/good/seqexp-arithmetics.tig: Likewise. + * tests/good/shadowing-var.tig: Likewise. + * tests/good/types-aliases.tig: Likewise. + * tests/syntax/charset.tig: Likewise. + * tests/syntax/compare-non-assoc.tig: Likewise. + * tests/syntax/record-exp-1.tig: Likewise. + * tests/syntax/record-exp-2.tig: Likewise. + * tests/syntax/single-top-exp.tig: Likewise. + * tests/type/assign-non-assoc.tig: Likewise. + * tests/type/compare-records.tig: Likewise. + * tests/type/compare-record-with-nil.tig: Likewise. + * tests/type/dangling-else.tig: Likewise. + * tests/type/funarg-type-mismatch.tig: Likewise. + * tests/type/missing-arg.tig: Likewise. + * tests/type/multiple-instances-types.tig: Likewise. + * tests/type/not-enough-fields.tig: Likewise. + * tests/type/too-many-args.tig: Likewise. + * tests/type/too-many-fields.tig: Likewise. + + * tests/type/test34.tig: Delete. + * tests/type/test35.tig: Likewise. + * tests/type/test36.tig: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@99 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-06-08 Akim Demaille + + 2000-06-08 Akim Demaille + + * tests/type/test25.tig: Rename as... + * tests/type/field-in-not-record.tig: this. + * tests/type/test33.tig: Rename as... + * tests/type/unknown-record.tig: this. + + * src/absyn/arrayexp.hh: Formatting changes. + + Be more robust to type mismatches. + + * src/semant/semant-visitor.hh (visitFieldVar, visitRecordExp, + visitArrayExp): When there is an error, set _exp:_type to `0:int' + and return. + (visitArrayExp): Be sure the type exists before `actual ()'izing + it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@98 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-06-07 Akim Demaille + + 2000-06-07 Akim Demaille + + Fix the problems of handling `if' with a `void' type. + + * src/translate/exp.hh (IfThenElseExp): Its members are actually + translate::Exp, not tree:Exp. + All dependencies adjusted. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@97 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-06-06 Akim Demaille + + 2000-06-06 Akim Demaille + + Support the `for' loops. + + * src/absyn/assignexp.hh: Formatting changes. + * src/absyn/forexp.hh: Likewise. + * src/parse/parsetiger.yy: Don't create a ForExp, but directly a + WhileExp. + Condition out the old code. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@96 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-05-15 Akim Demaille + + 2000-05-15 Akim Demaille + + Implement support of FieldExp and StringExp. + Don't fail on LetExp of type void. + + * src/semant/env.hh (semant): Use `using' inside the namespace. + * src/semant/semant-visitor.hh: Implement FieldVar. + More intelligent default values for `_exp' when in error. + (visitLetExp, visitSeqExp): Build a Seq instead of an Eseq when + the last item is of void type. + * src/translate/fragment.hh: New + * src/translate/Makefile.am (noinst_HEADERS): Adjust. + * src/translate/translation.hh (fieldVar): New. + (stringExp): Use a DataFrag. + * src/types/types.hh (Record::field_index): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@95 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-05-11 Akim Demaille + + 2000-05-11 Akim Demaille + + * src/semant/env.hh (typeentry_table_t, varentry_table_t, + funentry_table_t): Remove, it confuses the students. + Adjust the code. + (tenv_get, venv_get, fenv_get): Remove: dead code. + * src/semant/semant-visitor.hh (visitSubscriptVar): Get the actual + type of the var. + (visitArrayExp): Use a list of `translate::Exp *' to build the + first part of the eseqExp. + * src/translate/translation.hh + (eseqExp (std::list &exps, Exp &second)): New. + (arrayExp): Fix to use `init_array'. + * src/tree/eseq.hh (print): Avoid an additional indentation when + first child is a `Seq'. + * src/tree/seq.hh (print): Mark the end of the `SEQ'. + * tests/good/big-lvalue.tig: Be correct wrt type checking. + * src/translate/exp.hh (Cx::unNx, RelCx::unNx): New. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@94 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-05-09 Akim Demaille + + 2000-05-09 Akim Demaille + + * src/translate/translation.hh (nilExp, recordExp, whileExp): + Implement. + * src/semant/semant-visitor.hh: Use them. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@93 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-05-04 Akim Demaille + + 2000-05-04 Akim Demaille + + It's much easier to have tree::Seq use lists. + + * src/tree/seq.hh (ctor, push_back): New, to support nary + arguments. + * src/translate/exp.hh: Use it. + * src/semant/semant-visitor.hh (visitSeqExp): Use it. + * src/translate/exp.hh: Adjust. + * src/tree/jump.hh: Implement. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@92 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-05-04 Akim Demaille + + 2000-05-04 Akim Demaille + + * configure.in (CXXFLAGS): Set to `-ggdb -Wall'. + + * src/semant/semant-visitor.hh: Some support for function call. + * src/translate/translation.hh (callExp): New. + * src/tree/all.hh: Include call.hh. + * src/tree/binop.hh: Use the accessors to `_child'. + * src/tree/cjump.hh: Likewise. + * src/tree/eseq.hh: Likewise. + * src/tree/mem.hh: Likewise. + * src/tree/move.hh: Likewise. + * src/tree/seq.hh: Likewise. + * src/tree/sxp.hh: Likewise. + * src/tree/node.hh: Don't fix the size of the vector to 2. + Be ready to have it grow. + (children_get, child_push_back): New. + (_parent, _child): Private. + * src/tree/call.hh: Implement. + * src/tree/jump.hh: Likewise. + Limited to a single destination. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@91 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-04-28 Akim Demaille + + 2000-04-28 Akim Demaille + + * src/tree/test-tree.cc: Renamed `tree-test' for consistency. + * src/tree/Makefile.am: Adjust. + * src/tree: Explicitly mention the module of the headers. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@90 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-04-28 Akim Demaille + + 2000-04-28 Akim Demaille + + All the files in absyn/ shall explicitly include files from this + module via "absyn/". + + * src/absyn: Explicitly specify the module of headers. + + + Improve separate compilation. + + * src/absyn/absyn.cc: New file. + * src/absyn/Makefile.am (libabsyn): New lib. + * src/Makefile.am: link this lib. + * src/tc.cc: Adjust. + + * src/semant/semant-visitor.hh (VarDec): Handle `_exp'. + (visitLetExp): Handle the code of the declarations. + + * tests/good/precedence.tig: New file. + * tests/type/void.tig: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@89 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-04-26 Akim Demaille + + 2000-04-26 Akim Demaille + + Moved under Automake and Autoconf. + + * configure.in: New file. + * src/parse/Makefile.am: New file. + * src/Makefile.am: New file. + * src/canon/test-canon.cc: New file. + * src/canon/canon.hh: New file. + * src/translate/Makefile.am: New file. + * src/temp/Makefile.am: New file. + * src/absyn/tigervisitor.hh-template: New file. + * src/absyn/README-student: New file. + * src/absyn/Makefile.am: New file. + * src/types/Makefile.am: New file. + * src/types/README: New file. + * src/frame/Makefile.am: New file. + * src/semant/Makefile.am: New file. + * src/semant/env-template.hh: New file. + * src/semant/semant-visitor-template.hh: New file. + * src/tree/Makefile.am: New file. + * src/symbol/Makefile.am: New file. + * mkinstalldirs: New file. + * install-sh: New file. + * missing: New file. + * Makefile.am: New file. + * tests/good/big-lvalue.tig: New file. + * tests/good/print-tree-static.tig: New file. + * tests/good/boolean-1.tig: New file. + * tests/good/escapes.tig: New file. + + * src/parse/parsetiger.y: Rename as... + * src/parse/parsetiger.yy: this. + * src/parse/scantiger.y: Rename as... + * src/parse/scantiger.yy: this. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@88 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-04-20 Akim Demaille + + 2000-04-20 Akim Demaille + + Factoring. + + * src/semant/entry.hh (Entry): New class, to factor `print'. + (TypeEntry, VarEntry, FunEntry): Inherit from `Entry'. + Remove the three definitions of `<<': implement one for `Entry' + which uses `print'. + * src/semant/env.hh (Env::Print): New method. + (ostream << Env): Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@87 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-04-13 Akim Demaille + + 2000-04-13 Akim Demaille + + Use `%pure_parser'. + + * src/parse/parsetiger.y (yyprint): Expect a `Position &' as first + argument. + (preamble): Tune YYPRINT. + Define yylex with its arguments. + Specify `%pure_parser'. + * src/parse/scantiger.l (YY_DECL): Define. + (adj_file, adj_column, adj_line, adj_first, adj_last, adj_token): + Transformed into macros. + Replace all the uses of `yylval.' into `yylval->' and `yylloc.' + into `yylloc->'. + + * src/translate/exp.hh (IfThenElseExp): New class. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@86 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-04-07 Akim Demaille + + 2000-04-07 Akim Demaille + + Start support of Cx expressions. Support comparisons. + + * src/semant/semant-visitor.hh (SemantVisitor::visitOpExp): Use + translate::opExp. + (SemantVisitor::visitSeqExp): Use translate::seqExp. + (SemantVisitor::visitIntExp): Use translate::intExp. + * src/tc.cc (main): Display the unEx of the tree. + * src/translate/exp.hh: unCx takes two references. + (RelCx): New class. + + * src/translate/translate.hh (simpleVar, subscriptVar): Move to... + * src/translate/translation.hh: here. + (intExp, opExp, seqExp, eseqExp, assignExp, ifExp): New functions. + * src/tree/cjump.hh: You use Name not Label. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@85 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-04-04 Akim Demaille + + 2000-04-04 Akim Demaille + + * src/tree/main.cc: Rename as... + * src/tree/test-tree.cc: this. + Update to newer names. + * src/translate/translate.hh (subscriptVar): New function. + * src/semant/semant-visitor.hh (visitSubscriptVar): Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@84 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-04-04 Akim Demaille + + 2000-04-04 Akim Demaille + + Weak support of IR for simple variables. + + * src/frame/access.cc (In_Frame::Exp): Rename as... + (In_Frame::exp): this. + Don't build an arbitrary fp, use your argument. + * src/frame/access.hh: Adjust. + * src/frame/frame.hh (frame_pointer_get): Is const. + (_frame_pointer): New attribute. + (ostream << Frame): Print fp. + * src/semant/semant-visitor.hh (visitSimpleVar): Compute _exp. + (visitLetExp): Simplify the loop handling. + * src/translate/translate.hh (Access::_home): Is a reference. + This is important, otherwise, because of the copy, Level, hence a + new frame is created, hence a new frame pointer etc. + (simpleVar): New function. + * src/tree/label.hh (_label): Is reference, for consistency. + Hence the arg of the ctor is not const. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@83 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-03-28 Akim Demaille + + 2000-03-28 Akim Demaille + + * src/semant/semant-visitor.hh (visitSeqExp): Build the _exp. + * src/translate/exp.hh: Un-const the `un?x' methods, we need to be + able to modify the `tree'. + * src/tree/sxp.hh (print): Display "Sxp", not "Seq". + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@82 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-03-27 Akim Demaille + + 2000-03-27 Akim Demaille + + Fix a warning which is actually an error: a Named type needs to be + changed although in a `const' context. + + * src/types/types.hh (Named::set_type): Rename as + (Named::type_set): this. + (Named::type_set const): New method. + * src/semant/semant-visitor.hh (visitTypeDecBody): Use it. + + * src/Makefile (CXXFLAGS): Don't -pedantic -ansi, as some errors + become warnings. + + * src/absyn/test_symbol.cc: Move to... + * src/symbol/test_symbol.cc: here. Adjust. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@81 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-03-20 Akim Demaille + + Typo in ChangeLog. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@80 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-03-20 Akim Demaille + + 2000-03-20 Akim Demaille + + * src/frame/access.hh: No longer use temp::Label and temp::Temp: + some ambiguities can arise. Fully qualify each occurrence. + (Access::Exp, In_Frame::Exp, In_Reg::Exp): New methods. + * src/frame/access.cc: New file. + Implement those methods. + Created in order to avoid mutual dependence problems. + * src/Makefile: Adjust. + * src/tree/label.hh: Use temp::Lavel, not a string. + * src/tree/name.hh: Use temp::Label, not tree::Label. + * src/tree/temp.hh (_temp): New attribute. + Adjust ctor. + (print): New method. + * src/tree/call.hh: New file. + * src/tree/jump.hh: New file. + * src/tests/good/print-tree.tig: New file. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@79 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-03-14 Akim Demaille + + 2000-03-14 Akim Demaille + + * src/semant/semant-visitor.hh: Moved into the namespace `semant', + as required in the book. + Using namespace absyn though. + (_env): Removed `semant::'. + (_exp): Be a reference in fact. Initialize this pointer via an + additional argument of the ctor. + * src/tc.cc (the_tree): New var. Pass it to the visitor. + Dump it afterwards. + * src/translate/exp.hh (Ex, Cx, Nx): New classes, still + incomplete. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@78 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-03-13 Akim Demaille + + 2000-03-10 Akim Demaille + + Fix a bug and test it. + + * tests/type/unknown-array-type.tig: New test. + * src/semant/semant-visitor.hh (visitArrayTy): Check the type + exists, instead of dumping core. + + Invisible bug. + + * src/semant/env.hh (semant): Don't declare the type `nil', it + does not exist. In addition, `nil' is a reserved word. + + More uniform type checking. + + * src/semant/semant-visitor.hh (type_mismatch, check_types_equal, + check_types_comparable, check_types_assignable): New methods. + Use it in various places of the visitor. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@77 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-03-07 Akim Demaille + + 2000-03-07 Akim Demaille + + * src/absyn/absyn.hh: s/get_foo/foo_get/g. + * src/absyn/arrayexp.hh: Likewise. + * src/absyn/arrayty.hh: Likewise. + * src/absyn/assignexp.hh: Likewise. + * src/absyn/callexp.hh: Likewise. + * src/absyn/fieldexp.hh: Likewise. + * src/absyn/field.hh: Likewise. + * src/absyn/fieldvar.hh: Likewise. + * src/absyn/forexp.hh: Likewise. + * src/absyn/ifexp.hh: Likewise. + * src/absyn/intexp.hh: Likewise. + * src/absyn/letexp.hh: Likewise. + * src/absyn/opexp.hh: Likewise. + * src/absyn/recordexp.hh: Likewise. + * src/absyn/recordty.hh: Likewise. + * src/absyn/stringexp.hh: Likewise. + * src/absyn/subscriptvar.hh: Likewise. + * src/absyn/test_symbol.cc: Likewise. + * src/absyn/tigervisitor.hh: Likewise. + * src/absyn/typedec.hh: Likewise. + * src/absyn/vardec.hh: Likewise. + * src/absyn/varexp.hh: Likewise. + * src/absyn/visitor-template.hh: Likewise. + * src/absyn/whileexp.hh: Likewise. + * src/semant/entry.hh: Likewise. + * src/semant/env.hh: Likewise. + * src/semant/semant-visitor.hh: Likewise. + * src/tree/binop.hh: Likewise. + * src/tree/cjump.hh: Likewise. + * src/tree/eseq.hh: Likewise. + * src/tree/iterator.hh: Likewise. + * src/tree/main.cc: Likewise. + * src/tree/mem.hh: Likewise. + * src/tree/move.hh: Likewise. + * src/tree/node.hh: Likewise. + * src/tree/seq.hh: Likewise. + * src/tree/sxp.hh: Likewise. + * src/types/types.hh: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@76 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-03-07 Akim Demaille + + 2000-03-07 Akim Demaille + + * src/absyn/fieldexp.hh: s/get_name/name_get/g. + * src/absyn/field.hh: Likewise. + * src/absyn/namety.hh: Likewise. + * src/absyn/simplevar.hh: Likewise. + * src/absyn/tigervisitor.hh: Likewise. + * src/absyn/typedec.hh: Likewise. + * src/absyn/vardec.hh: Likewise. + * src/absyn/visitor-template.hh: Likewise. + * src/parse/parsetiger.y: Likewise. + * src/semant/semant-visitor.hh: Likewise. + * src/symbol/symbol.hh: Likewise. + * src/temp/label.hh: Likewise. + * src/types/types.hh: Likewise. + * src/Makefile (tests.tgz): New target. + * src/parse/parsetiger.y (funid, varid): New non terminal, to + parallel with typeid. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@75 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-03-06 Akim Demaille + + 2000-03-06 Akim Demaille + + Separate parse errors from type checking errors. + + * src/semant/semant-visitor.hh (SemantVisitor): Exit 3 for type + errors. + * src/tc.cc (main): Exit 2 on parse errors. + * src/Makefile (check): Check the value of the exit status. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@74 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-03-06 Akim Demaille + + 2000-03-06 Akim Demaille + + * src/absyn/functiondec.hh (escapes_get): New method. + * src/frame/frame.hh (local_alloc): Fixed a sever bug: don't pass + a temporary... + * src/parse/scantiger.l: Don't append the closing quote in + strings... + * src/semant/entry.hh (FunEntry::_level, _label): New attr. + * src/semant/env.hh: Adjust to these new attr. + * src/semant/semant-visitor.hh (SemantVisitor) {SemantVisitor}: Use + the outer_level. + * src/tc.c (main): Create the outer_level. + * src/translate/translate.hh (Level::Level): Fix a severe bug, + storing a reference to a temporary. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@73 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-03-03 Akim Demaille + + 2000-03-03 Akim Demaille + + * types/table.hh: Move to... + * symbol/table.hh: here. + All callers changed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@72 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-03-01 Akim Demaille + + 2000-03-01 Akim Demaille + + Formatting changes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@71 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-03-01 Akim Demaille + + 2000-03-01 Akim Demaille + + * src/translate/translate.hh (Access::home_get, access_get): New. + (<< Level): Report more information on the structure. + * src/semant/env.hh (<< Env): Report the fenv too. + * src/absyn/field.hh (Field::Field): escapes is true by default, + not false. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@70 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-29 Akim Demaille + + 2000-02-29 Akim Demaille + + Start working on the frame and translate modules. + Beginning with variables and arguments only. + Move Symbol in its proper place. + + * absyn/symbol.hh: Renamed as... + * symbol/symbol.hh: this. This is its name space too. + All callers changed. + * translate/translate.hh: New file. + * frame/frame.hh: New file. + * frame/access.hh: New file. + * src/semant/entry.hh: (VarEntry::access): New attr. + (VarEntry::access_get): New method. + * src/semant/env.hh (VarEntry): Store the accesses. + * src/semant/semant-visitor.hh (_level): New attr. + (visitFunctionDecBody): Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@69 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-25 Akim Demaille + + 2000-02-25 Akim Demaille + + * tests/good/merge.tig (isdigit): Use `s' not `buffer'. + * src/parse: New directory. + * src/parsetiger.y: Moved in parse/. + * src/parse.h: Likewise. + * src/scantiger.hh: Likewise. + * src/scantiger.l: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@68 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-23 Akim Demaille + + 2000-02-23 Akim Demaille + + * src/absyn/README: Updated + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@67 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-23 Akim Demaille + + 2000-02-23 Akim Demaille + + Don't use `list' nor `_list' in SeqExp, it is inconsistent with + the other classes. + + * src/absyn/seqexp.hh (SeqExp::list, _list, get_list): Renamed + exps, _exps and args_get. + All callers changed. + * src/absyn/hierarchy.txt: Updated and renamed as... + * src/absyn/README: this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@66 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-23 Akim Demaille + + 2000-02-23 Akim Demaille + + * tests/good/test04.tig: Renamed as... + * tests/good/fact.tig: this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@65 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-23 Akim Demaille + + 2000-02-23 Akim Demaille + + * src/absyn/intexp.hh (IntExp::clone): Removed. + * /src/absyn/absyn.hh (Absyn::_position): Protected -> private. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@64 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-22 Akim Demaille + + 2000-02-22 Akim Demaille + + * src/semant/semant-visitor.hh: Fixed a typo introduced by the + previous patch. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@63 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-22 Akim Demaille + + 2000-02-22 Akim Demaille + + Avoid using a attribute to visit the nodes in different modes: as + much as possible, instead of calling `accept', call directly the + visitor we are interested in. + + * src/semant/semant-visitor.hh (SemantVisitor::_state): Removed. + (SemantVisitor::_actual_type): New attribute. + (SemantVisitor::visitLetExp): Stop playing with _state and accept, + call directly the right methods. + (SemantVisitor::ProcessFunctionDecHeader, processFunctionDecBody): + Renamed as... + (SemantVisitor::visitFunctionDecHeader, visitFunctionDecBody, + visitTypeDecHeader, visitTypeDecBody): New methods. + (SemantVisitor::visitTypeDec, visitFunctionDec): Neutralized via + abort. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@62 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-22 Akim Demaille + + 2000-02-22 Akim Demaille + + Use only C++ strings to grow yllval.str. + + * src/scantiger.l (string_buf, string_buf_len): Removed. + All callers adjusted to grow directly into the C++ string. + Added support for escapes. + s/adjust_/adj_/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@61 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-22 Akim Demaille + + 2000-02-22 Akim Demaille + + * src/parsetiger.y: More `error' rules. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@60 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-22 Akim Demaille + + 2000-02-22 Akim Demaille + + * src/parsetiger.y: Formatting changes. + Introduced new `error' rules. + (sequence): Renamed exps.2. + * src/minitiger.y: Removed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@59 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-18 Akim Demaille + + 2000-02-18 Akim Demaille + + * src/absyn/exp.hh (Exp::~Exp): virtual, since Exp is abstract. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@58 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-18 Akim Demaille + + 2000-02-18 Akim Demaille + + Escape fields were missing in the abstract syntax. + + * src/absyn/vardec.hh (_escape, escape_get): Added. + * src/absyn/field.hh (_escape, escape_get): Added. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@57 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-18 Akim Demaille + + 2000-02-18 Akim Demaille + + * src/types/types.hh (Named::print): Fixed a typo. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@56 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-18 Akim Demaille + + 2000-02-18 Akim Demaille + + Fix test46. + + * tests/good/test46.tig: Renamed as: + * tests/good/compare-record-and-nil.tig: this. + * src/semant/semant-visitor.hh (visitVarDec): Use VAR_TYPE for the + nv, since when defined, it is more precise (in particular, if the + declared type is a record, and the init is nil, don't register the + var as of type Nil). + + * src/types/types.hh (Named::print): When available, report the + type held. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@55 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-18 Akim Demaille + + 2000-02-18 Akim Demaille + + Refine the previous patch so that we don't have an additional + attribute. + + * src/absyn/tigervisitor.hh (_in_for_declaration): Removed. + (visitVarDec/2): New method with a second parameter, bool. + (visitVarDec/1, visitForDec): Use it. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@54 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-18 Akim Demaille + + 2000-02-18 Akim Demaille + + Avoid that the pretty printer displays `for i := 0' as + `for var i := 0'. + + * src/absyn/tigervisitor.hh (_in_for_declaration): New attr, set + to false. + (visitForExp): Saved and set _in_for_declaration to true before + entering... + (visitVarDec): Output "var" if !_in_for_declaration. Restore it + to false. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@53 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-18 Akim Demaille + + 2000-02-18 Akim Demaille + + * src/Makefile: Adjusted to tests/. + * src/tests/good/test05.tig: Renamed as... + * src/tests/good/recursive-types.tig: this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@52 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-18 Akim Demaille + + 2000-02-18 Akim Demaille + + * testcases/good/test41.tig: Renamed as: + * testcases/good/local-vs-global-type.tig: this. + * testcases: Renamed as... + * tests: this. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@51 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-17 Alexandre Duret-Lutz + + 2000-02-17 Alexandre Duret-Lutz + + nil should not be comparable to nil. + + * src/types/types.hh (Nil::comparable_to): Fixed. + * testcases/bad/nil-equal-nil.tig: Added. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@50 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-17 Alexandre Duret-Lutz + + 2000-02-17 Alexandre Duret-Lutz + + Make type::comparable() and type::assignable() be methods + of type::Type(). This save tests and dynamic_casts. + + * src/types/types.hh (comparable): Removed. + (assignable): Removed. + (Type::comparable_to): Added. + (Type::assignable_to): Added. + (Nil::comparable_to): Added. + (Nil::assignable_to): Added. + (Record::comparable_to): Added. + (Record::assignable_to): Added. + * src/semant/semant-visitor.hh: Callers adjusted. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@49 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-16 Akim Demaille + + 2000-02-16 Akim Demaille + + We have decided that there are three name spaces in Tiger, + therefore fun-vs-var is actually a test which must succeed, not + fail. + + * testcases/bad/fun-vs-var.tig: Move to... + * testcases/good/fun-vs-var.tig: here. Complexified a bit to + exercise the three name space, and two scopes. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@48 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-16 Akim Demaille + + 2000-02-16 Akim Demaille + + * src/types/table.hh (Table::begin_scope): Renamed scope_begin for + consistency. + (Table::end_scope): Likewise. + All callers changed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@47 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-16 Akim Demaille + + 2000-02-16 Akim Demaille + + * testcases/bad/fun-vs-var.tig: New test file. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@46 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-15 Alexandre Duret-Lutz + + 2000-02-15 Alexandre Duret-Lutz + + Split VarEntry into VarEntry and FunEntry. + + * src/types/env.hh (Env::_fvar): Added. + * src/semant/entry.hh (class Entry): Removed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@45 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-15 Alexandre Duret-Lutz + + 2000-02-15 Alexandre Duret-Lutz + + * src/types/table.hh (class Table): Made template. + * src/semant/env.hh: Adjusted. + + * src/Makefile (check): Depend on tc. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@44 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-15 Alexandre Duret-Lutz + + 2000-02-15 Alexandre Duret-Lutz + + * src/types/table.hh (class Table): rewrote the class Table + using a stack of dictionnaries. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@43 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-15 Alexandre Duret-Lutz + + 2000-02-15 Alexandre Duret-Lutz + + * src/semant/env.hh: Added std:: in many places. + * src/semant/semant-visitor.hh: Likewise. + * src/tc.cc (main): print argv[0] instead of a.out for usage help. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@42 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-11 Akim Demaille + + 2000-02-11 Akim Demaille + + * src/temp/main.cc: New file. + * src/temp/label.hh: New file. + * src/temp/temp.hh: New file. + * src/tree/Makefile: New file. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@41 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-02-08 Thierry Géraud + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@40 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-01-31 Thierry Géraud + + 2000-01-31 Thierry Geraud + + Modify the tree hierarchy: + class Node is now a stand-alone abstraction ; + concrete classes have new methods set_xxx. + + * src/tree/*: modified. + * src/tree/iterator.hh: New file. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@39 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-01-31 Akim Demaille + + 2000-01-31 Akim Demaille + + Use the brand new features of Bison: $@. + + * src/parsetiger.y: s/@1/@$ in most places. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@38 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-01-29 Akim Demaille + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@37 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-01-17 Akim Demaille + + 2000-01-17 Akim Demaille + + * testcases/good/recursive-comments.tig: New file. + * testcases/bad/assign-loop-var.tig: New file. + + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@36 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-01-17 Akim Demaille + + 2000-01-17 Akim Demaille + + Support comments within comments. + + * src/scantiger.l (comment_level): New variable. + (%option noyywrap): set. + (yywrap): removed. + (STATE_COMMENT): handle `/*' and `*/' for recursive comments.. + + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@35 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-01-12 Akim Demaille + + 2000-01-12 Akim Demaille + + * src/scantiger.l: Used abbreviation to improve readibility. + * testcases/bad/test53.tig: New test. Currently, tc fails to + fail. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@34 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-01-07 Thierry Géraud + + 2000-01-07 Thierry Geraud + + First attempt of a tree hierarchy for the intermediate syntax. + + * src/tree/all.hh: New file + * src/tree/cjump.hh: Likewise. + * src/tree/binop.hh: Likewise. + * src/tree/seq.hh: Likewise. + * src/tree/sxp.hh: Likewise. + * src/tree/move.hh: Likewise. + * src/tree/eseq.hh: Likewise. + * src/tree/mem.hh: Likewise. + * src/tree/temp.hh: Likewise. + * src/tree/name.hh: Likewise. + * src/tree/label.hh: Likewise. + * src/tree/const.hh: Likewise. + * src/tree/stm.hh: Likewise. + * src/tree/node.hh: Likewise. + * src/tree/exp.hh: Likewise. + * src/tree/main.cc: Likewise. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@33 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-01-06 Akim Demaille + + 2000-01-06 Akim Demaille + + Normalization of the error messages. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@32 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-01-06 Akim Demaille + + 2000-01-06 Akim Demaille + + * src/semant/semant-visitor.hh (visitRecordExp): Don't call + `actual' before checking the type exists. + (visitIfExp): If there is no else clause, there is no position to + print. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@31 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-01-06 Alexandre Duret-Lutz + + 2000-01-06 Alexandre Duret-Lutz + + * src/Makefile (check): Explicit check for $$?!=1 in + badtest cases. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@30 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2000-01-06 Akim Demaille + + 2000-01-06 Akim Demaille + + Exit 1 when there is an error during type checking. + + * src/Makefile (check): Check for expected failures too. + * src/semant/semant-visitor.hh: Spread use of exit_status a bit + everywhere. + (visitFieldVar, visitRecordExp, visitArrayExp): Use actual (). + (visitWhileExp, visitForExp): Check the nesting of `break'. + (visitVarDec): Check that when assigning `nil', the var has a + record type. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@29 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-29 Akim Demaille + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@28 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-20 Akim Demaille + + 1999-12-20 Akim Demaille + + No warnings at compile time. + No core dump at `make check'. + Handle recursive functions typing. + + * src/absyn/tigervisitor.hh (visitSubscriptVar): Don't coredump + when the variable is not an array. + (visitFunctionCall): Use the position of the expression when you + want report missing arguments. + (visitLetExp): Split the loop over declarations in loops for + contiguous var decs, func decs and type decs, to allow recursivity + of types and funcs. + Use processFunctionDecBody and processFunctionDecHead. + (processFunctionDecBody, processFunctionDecHead): New method. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@27 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-17 Akim Demaille + + 1999-12-17 Akim Demaille + + * src/types/types.hh (Record): Don't use a ref to _fields, but + itself directly. + (Record::field_add): New methods. + * src/semant/env.hh: Use this new interface. + * src/semant/semant-visitor.hh: Likewise. + Fixed several warnings. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@26 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-16 Akim Demaille + + 1999-12-16 Akim Demaille + + Non recursive type checking works. + + * src/semant/env.hh (Env): Insert the builtins functions. + * src/semant/semant-visitor.hh (visitRecordExp, visitCallExp, + visitFieldExp, visitField): Implemented. + (visitIfExp): Propagate the type of the body. + (visitFunctionDec): First put in the env, then enter the new + scope. + A bit of `const' everywhere. + + * src/types/types.hh (Field): Renamed from RecordField. + All callers changed. + A bit of `const' everywhere. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@25 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-16 Akim Demaille + + 1999-12-16 Akim Demaille + + * src/absyn/tigervisitor.hh (visitFieldExp): Display `=', not `:'. + (visitRecordTy): Use accept to visit the childs, not by hand. + + * src/semant/semant-visitor.hh (visitSimpleVar): Robust to + undeclared vars. + (visitFieldVar, visitFunctionDec): Implemented. + (visitSeqExp): Robust to `()'. + (visitForExp): Enter a new scope. + (visitField): Don't actually do anything. Use abort () to forbid + its use. We'll see later if there is a means to use it. + (visitRecordTy): Adapted to the change above. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@24 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-13 Akim Demaille + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@23 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-13 Akim Demaille + + 1999-12-13 Akim Demaille + + * src/semant/semant-visitor.hh (visitSimpleVar, visitAssignExp, + visitWhileExp, visitVarDec, visitTypeDec): Implemented/updated. + + * src/semant/env.hh (class Env, type_put, type_get, var_put, + var_get, fun_put, formals_get, result_get): New methods. + (Env::Env): Insert the base types in tenv. + (Env::tenv, venv): Private again. + All callers changed. + + * src/absyn/simplevar.hh (SimpleVar::get_symbol): Renamed as... + * src/absyn/simplevar.hh (SimpleVar::get_name): this. + All callers changed. + + * src/absyn/forexp.hh (absyn): Changed `var' to `vardec'. + All callers changed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@22 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-10 Akim Demaille + + 1999-12-10 Akim Demaille + + * src/semant/entry.hh: Providing a means to << an entry. + (TypeEntry): New class. + * src/semant/env.hh (_tenv, _venv): No longer private. Renamed + tenv and venv. Allows to use them directly without having to + duplicate code into Env. + (<<) New operator. + * src/semant/semant-visitor.hh (All clauses): Use `void' as a + default type, instead of NULL. This allows to display the symtab + without SEGV. + * src/types/table.hh (<<): New operator, to display symtabs. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@21 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-10 Akim Demaille + + 1999-12-10 Akim Demaille + + * src/semant/semant-visitor.hh (absyn): Fixed a typo. + Implemented type checking for comparison. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@20 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-10 Akim Demaille + + 1999-12-10 Akim Demaille + + * src/absyn/opexp.hh: Reformatting. + * src/absyn/visitor.hh (~Visitor): Declared as virtual. + * src/semant/semant-visitor.hh (_exp, _type): New attributes. + Fill all the subvistors with default clauses to set _exp and + _type to NULL. + (visitOpExp, visitIfExp): Starting checking. + * src/types/types.hh (Type::~Type): Made virtual to forbid + instanciation of class Type. + (Nil, Int, String, Void): Equipped with mecahisms for Singleton. + * src/semant/env.hh: New file, holding type and var/func + environements. + * src/translate/exp.hh: New file, in charge of handling the + intermediate code. Currently only a fake. + * testcases/test50.tig: New test with a valid break. + * testcases/test51.tig: New test with an invalid break. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@19 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-09 Akim Demaille + + 1999-12-09 Akim Demaille + + All the files in absyn/ now have a tag against doublie inclusion + which starts with `ABSYN_'. There will be another exp.hh which + needs to be diferentiated. + + * src/absyn/recordexp.hh (get_type): Is const. + * src/absyn/tigervisitor.hh (visitRecordExp, visitBreakExp, + visitFieldExp): Completed. + + * testcases/: Many indentation changes to ease testing. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@18 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-09 Akim Demaille + + 1999-12-09 Akim Demaille + + * src/semant/table.hh: Moved to... + * src/types/table.hh: here, because of the `types' name space. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@17 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-09 Akim Demaille + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@16 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-08 Akim Demaille + + 1999-12-08 Akim Demaille + + * src/symbols/symbol.hh: Moved to... + * src/absyn/symbol.hh: here, since it belongs to the name space + `absyn'. + + * src/symbols/table.hh: Moved to... + * src/semant/table.hh: here, for the same reasons. + + * src/semant/entry.hh: New file. + * src/semant/table.hh: Adapted to the file above. + * src/semant/types.hh: New file. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@15 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-07 Akim Demaille + + 1999-12-07 Akim Demaille + + * src/absyn/template-visitor.hh: New file. Basically a frame work + for visiting. + * src/semant/semant-visitor.hh: New file, currently a pure copy of + the one above. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@14 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-07 Akim Demaille + + 1999-12-07 Akim Demaille + + Stick to the name spaces given by Appel. + + * src/misc/symbols.h: Moved to... + * src/symbols/symbols.h: here. + All dependencies changed. + + Use `type' and neither `typ' not `ty' in various places. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@13 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-12-06 Akim Demaille + + 1999-12-06 Akim Demaille + + Import the new symbol.hh from Theo. + + * src/absyn/symbol.hh: Moved to... + * src/misc/symbol.h: here. + * src/position.hh: Move to... + * src/absyn/position.hh: here. + * src/Makefile: Tuned to support this. + All callers changed to include from misc/. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@12 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-11-26 Akim Demaille + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@11 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-11-26 Akim Demaille + + 1999-11-26 Akim Demaille + + * src/parsetiger.y: The abstract syntax is fully supported. The + test cases are correctly parsed and displayed. + * src/absyn/tigervisitor.hh: Added support for NilExp. + Fixed handling of zero length SeqExp. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@10 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-11-26 Akim Demaille + + 1999-11-25 Akim Demaille + + * src/parsetiger.y (yystype): Added fields, exps and decs. + Removed namety. + More items supported. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@9 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-11-25 Akim Demaille + + 1999-11-25 Akim Demaille + + * src/tcc.c: Renamed as... + * src/tc.c: this. + All dependencies changed. + + * src/parsetiger.y (yystype): Added symbol and ty. + More expressions covered. + + * src/scantiger.l: Simplified useless braces. Use Symbol instead + of strdup for ID. + + * src/position.hh: Made it a class. + (<<) Implemented. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@8 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-11-16 Akim Demaille + + 1999-11-16 Akim Demaille + + Use the @n feature from bison to track the extent of expressions. + + * src/position.hh: New file, implements type Position. + * src/absyn.hh: Replaced lpos and cpos with Position position. + All subclasses updated. + * src/scantiger.l: Renamed NEQ as NE. All dependencies changed. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@7 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@6 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Only merge branches, conflicts will be resolved later. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@5 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-11-10 Thierry Géraud + + Included the absyn hierarchy. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@4 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-11-09 Thierry Géraud + + 1999-11-09 GERAUD Thierry + + * src/absyn: New directory. + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@3 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +1999-11-04 Akim Demaille + + Initial checkin + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@2 1f7e7f5b-0dda-0310-9018-85e83a419b00 + +2004-05-07 prcs2svn + + Initialize repository structure + + git-svn-id: https://svn.lrde.epita.fr/svn/tc/trunk@1 1f7e7f5b-0dda-0310-9018-85e83a419b00 + diff --git a/tiger-compiler/Makefile.am b/tiger-compiler/Makefile.am new file mode 100644 index 0000000..a1b0c87 --- /dev/null +++ b/tiger-compiler/Makefile.am @@ -0,0 +1,64 @@ +# We use GNU Make features, and that's OK. +AUTOMAKE_OPTIONS = -Wno-portability subdir-objects +ACLOCAL_AMFLAGS = -I build-aux/m4 + +# We work on C++ only. This way we don't have to list the sources of +# programs foo whose sources are exactly foo.cc. A common pattern for +# tests. +AM_DEFAULT_SOURCE_EXT = .cc + +BUILT_SOURCES = +FORMAT_IGNORE = +CLEANFILES = $(EXTRA_PROGRAMS) +EXTRA_DIST = $(dist_TESTS) +MAINTAINERCLEANFILES = +TESTS = $(check_PROGRAMS) $(dist_TESTS) +check_PROGRAMS = +dist_TESTS = +dist_noinst_DATA = + +# Our tests should be run only if the sources are updated: they are +# self contained, and two runs in a row cannot differ. +override RECHECK_LOGS = + +include build-aux/local.am +include data/local.am + +SUBDIRS = . tests +if ENABLE_TCSH +SUBDIRS += tcsh +endif + +# Most headers are to be shipped and to be found in src/, e.g. +# tasks/tasks.hh is shipped in $(top_srcdir)/src/task/tasks.hh. Some +# are *built* in src, e.g., $(top_builddir)/src/modules.hh. +AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/src -I$(top_builddir)/src +AM_CPPFLAGS += $(BOOST_CPPFLAGS) +# Find the prelude. +AM_CPPFLAGS += -DPKGDATADIR="\"$(pkgdatadir)\"" +AM_CXXFLAGS = $(WARNING_CXXFLAGS) + + +# Find configuration headers. +AM_CPPFLAGS += -I$(top_builddir) + +include lib/local.am +include src/local.am +include doc/local.am + +EXTRA_DIST += bootstrap AUTHORS.txt NEWS.txt THANKS.txt .clang-format flake.nix flake.lock + +## --------------------- ## +## Version and authors. ## +## --------------------- ## + +BUILT_SOURCES += authors.h +CLEANFILES += authors.h tc.log.bz2 +# Improve --version. +AUTHORS_H_GEN = $(srcdir)/build-aux/bin/authors.h-gen +EXTRA_DIST += AUTHORS.txt $(AUTHORS_H_GEN) +authors.h: AUTHORS.txt $(AUTHORS_H_GEN) + $(AM_V_GEN)$(AUTHORS_H_GEN) $< >$@.tmp + $(AM_V_at)$(top_srcdir)/build-aux/bin/move-if-change $@.tmp $@ + + diff --git a/tiger-compiler/NEWS.txt b/tiger-compiler/NEWS.txt new file mode 100644 index 0000000..19dd463 --- /dev/null +++ b/tiger-compiler/NEWS.txt @@ -0,0 +1,2332 @@ +Bump 1.94.e, 2025-04-14 for tc-EXTS + +Bump 1.94.d, 2025-04-07 for tc-L + +Bump 1.94.c, 2025-03-25 for tc-4 + +Bump 1.94.b, 2025-03-19 for tc-3 + +Bump 1.94.a, 2025-03-10 for tc-1/2 + +* General + - TC-1 and TC-2 are now shipped as one single step + - switch to llvm-18 for LLVM-IR codegen + - multiple small fixes to objects, translate, escapes and liveness + - various updates to nix flake + +Bump 1.93.k, 2024-06-11 for tc-9 + +Bump 1.93.j, 2024-06-10 for tc-8 + +Bump 1.93.i, 2024-06-03 for tc-7 + +Bump 1.93.h, 2024-05-27 for tc-6 + +Bump 1.93.g, 2024-05-13 for tc-5 + +Bump 1.93.f, 2024-04-15 for tc-EXTS + +Bump 1.93.e, 2024-04-08 for tc-L + +Bump 1.93.d, 2024-03-28 for tc-4 + +Bump 1.93.c, 2024-03-21 for tc-3 + +Bump 1.93.b, 2024-03-18 for tc-2 + +Bump 1.93.a, 2024-03-05 for tc-1 + +* General + - rework the escaper to be useful for both the llvm and tree IR + - save if the escaper is enabled in order to perform it again after cloning + - rename TigerParser to TigerDriver and TigerDriver to TigerFactory + - fix bugs regarding the inliner and mutually recursive nested functions + - switch from shared ptrs to raw ptrs in back-end variants + +* Distribution + - distribute the implementation of all AST nodes + - distribute extensions separately from TC-4 and TC-L + +* Internal + - migrate the internal testsuite from perl to python + +Bump 1.92.k, 2023-06-17 for tc-9 + +Bump 1.92.i, 2023-06-11 for tc-8 + +Bump 1.92.h, 2023-06-05 for tc-7 + +Bump 1.92.g, 2023-05-30 for tc-6 + +Bump 1.92.f, 2023-05-15 for tc-5 + +Bump 1.92.e, 2023-04-16 for tc-L + +Bump 1.92.d, 2023-04-01 for tc-4 + +Bump 1.92.c, 2023-03-26 for tc-3 + +Bump 1.92.b, 2023-03-18 for tc-2 + +Bump 1.92.a, 2023-03-02 for tc-1 + +* General + - switch from range-v3 to C++20 ranges + - extend misc::contract to use it as a stream + - improve tweasts and metavar errors + - add dumping of types to dumper-dot + - use C++ raw literal strings + - ship given tests directly with tc-base + +* Lexer + - change lexer generator to RE-flex + - remove obsolete wrappers and headers + +* Build + - split runtime generation scripts from buildsystem + - bump to llvm15 + - silence bison warnings + - update deprecated llvm overloads + - replace obsolete autoconf macros + +Bump 1.91.i, 2022-06-15 for tc-9 + +Bump 1.91.i, 2022-06-13 for tc-8 + +* General + + - Add support for swig / python + +Bump 1.91.h, 2022-05-25 for tc-7 + +Bump 1.91.g, 2022-05-16 for tc-6 + + - Fix canon-matchers + +Bump 1.91.f, 2022-05-05 for tc-5 + +Bump 1.91.e, 2022-03-31 for tc-L + +Bump 1.91.d, 2022-03-21 for tc-4 + +Bump 1.91.c, 2022-03-10 for tc-3 + +Bump 1.91.b, 2022-03-03 for tc-2 + +Bump 1.91.a, 2022-02-18 for tc-1 + +* General + - silent LLVM warning + - remove misc/pair + - Nolimips is mandatory to compile TC-7 + - use pure functions in libcombine.cc + - symbol: always pass by copy + - ast: use misc::symbol as value type + +* Builfarm + - add support for nix + - fix update-Changelog + - fix caches for docker + - remove distcheck on TC-0 + - fix gawk regexp escape sequences for arm + +* Parser + - rework precedences and nonassocs + - enable warnings + - move to stable bison + - clarify for students + +* Dev + - rewritte stagize script in python + +Bump 1.90.h, 2021-06-07 + +Bump 1.90.g, 2021-05-31 + +Bump 1.90.f, 2021-05-20 + +* Register allocator: + - Fix infinite loop + +Bump 1.90.e, 2021-05-17 + +Bump 1.90.d, 2021-03-28 + +Bump 1.90.c, 2021-03-08 + +Bump 1.90.b, 2021-03-01 + +Bump 1.90.a, 2021-02-22 + +New in 1.90, 2021-02-12 + +* Parser + - Remove expect 2, the GLR is now determinist (so you can + also use LALR1) + - add driver to ensure sepration between paser and AST + - remove obsolete generated files + - do not track location files + +* Object + - Rework overfun + - Rework task mechanim for overfun + - add combine task combine in order to properly compute + function calls, depending on whether we activated overloading. + - reword binding of `self' + +* Monoburg + - Remove dependency on monoburg + - Use now tree variant style + - Remove get_kind + +* AST + - rename Decs to Chunk for clarity + - generate ast node destructors with override instead of virtual + +* Buildfarm + - pre-commit: add pre-commit hooks + +* Languages + - C++ + - add a *lot* of concepts + - pass by const reference + - singleton: implement generic crtp singletons + - more explicit constructor + + - Python + - respect several PEP recommendations + +* Bug fixes + - bounds-checking: fix expected output of bounds checking tests + containing a segfault + - Fix comparison of Void expressions resulted in 1 + +Bump 1.88, 2020-06-15 for tc-9 +Bump 1.87, 2020-06-08 for tc-8 + +New in 1.86, 2020-05-25 + +* General Maintainance + - Use python3 rather than python2 + - Inliner: bug fixes + +New in 1.85, 2020-04-11 + +* General Maintainance + - object: (type-checker) fix binding spurious members + - enable static linking with LLVM + +Bump 1.84, 2020-03-23 for tc-4 +Bump 1.83, 2020-02-24 for tc-3 +Bump 1.82, 2020-02-17 for tc-2 + +New in 1.81, 2020-02-09 + +* General Maintainance + - gitlab-ci: produce static binary + - reformat code + - move to C++20 + +Bump 1.80, 2019-06-24 for tc-9 +Bump 1.79, 2019-06-03 for tc-8 +Bump 1.78, 2019-05-27 for tc-7 + +New in 1.77, 2019-05-06 + +* General Maintainance + - gitlab-ci: split different phases + +New in 1.76.1, 2019-04-29 + +* General Maintainance + - TypeBuilder has been removed (see https://reviews.llvm.org/D56573) + +New in 1.76, 2019-04-19 + +* General Maintainance + - configure: fix compiler version check + +New in 1.75, 2019-03-01 + +* General Maintainance + - gitlab-ci: build pdf for assignment + +* IA31 + - rewrite_program: ia32: handle simultaneous use and def + +Bump 1.74, 2019-02-15 for tc-3 + +New in 1.73, 2019-02-09 + +* General Maintainance + - buildfarm: fix minors details + +New in 1.72, 2019-02-03 + +* General Maintainance + - style: + - unordered_map is preferred when sorting is not required + - remove useless virtual destructors + - add static const qualifiers + - no virtual with override + - more nested namespaces + - prefer std::numeric to INT_MAX + - reserve vectors size when known beforehand + - fix memory leak in tc.cc + - Boost: cleanup legacy and replace by c++17 features + - parse: + - upgrade bison requirements + - remove deprecated elements + - regen parser + - gitlab-ci: + - require LLVM 7 + - triggers for building assignments website. + +* Object + - Handle corner case for binding + - fix dispatched method call and upcasted return type + - add meth_find method + +New in 1.71, 2018-06-25 + +* Fix Maintenance + - fix broken make dist + - add gitlab-ci support + +New in 1.70, 2018-05-31 + +* General Maintenance + +New in 1.69, 2018-05-20 + +* General Maintenance + +New in 1.68, 2018-05-14 + +* General Maintenance + - fix style + +New in 1.67, 2018-04-16 + +* General Maintenance + +New in 1.66, 2018-03-09 + +* General Maintenance + - remove useless misc::set + +New in 1.65, 2018-02-12 + +* General Maintenance + +New in 1.64, 2018-02-01 + +* General Maintenance + +New in 1.63, 2018-01-25 + +* More C++17 features + - use structured bindings + - use std::variant instead of boost::variant + - use class template argument deduction + - use if(init; condition) + +* General Maintenance + - swap callee-save and caller-save order + - add desugar implementation for ArrayExp during TC-O + - replace enums with enum classes + - ensure _main existence and correct prototype in the AST + - remove MetavarExp and Metavariable AST nodes + - use nested namespaces + - replace some raw pointers with unique_ptr or shared_ptr + - add alternative rewrite_program implementation + +New in 1.62, 2017-06-26 + +* General Maintenance + - fix typos + +New in 1.61, 2017-06-05 + +* General Maintenance + +New in 1.60, 2017-05-19 + +* General Maintenance + - regenerate backends + - clean code + +New in 1.59, 2017-05-12 + +* General Maintenance + - tests: remove duplicate tests + - fix typos + - fix function call conventions + - generalize registers to multiple targets + - clean code + +New in 1.58, 2017-04-12 + +* General Maintenance + - style: put tree constructors in .cc + - fix typos + - cleanify code + +New in 1.57, 2017-03-03 + +* General Maintenance + +New in 1.56, 2017-02-13 + +* Fix documentation + +New in 1.55, 2017-02-02 + +* General Maintenance + - Remove unnecessary/deprecated Fixmes + - Clean code + - use more c++11 features + +New in 1.54, 2017-01-24 + +* Style and General maintenance + - Add maintainers + - Propagate use of pragma once + - Add missing override + - Remove comnination between override and virtual + - Use more STL algorithms + - Add useful warning + - Modernize tc-a + - Fix typos + - Propagate use of vector rather than lists + - Add more tests + - Add namespace indication at the end of scope + - Prefer nullptr to NULL + - Remove useless implementations thanks to =default + - Don't repeat the same access qualifier + - Tools to replace Fixmes by warnings + +* Inline + - More verification about return type + +* Object + - Clarify comments + - Fix use of self inside of functions + +* LLVM + - Improve escape-collector + - Do not construct type when no record is set + - Don't include runtime in the distribution + - Use native types + - Remove useless return values + - More explanation about the translator + - Fix compatibility issues with 3.9 + +* Type + - Do not provide files to student before needed + - Simplify record-exp + - Improve type_set + - Move constructor and destructor in implementation files + +* Binder + - Fix displays + - Adjust bindings for vardecs + - Update definition for self + +* C++1z + - Add comments to suggest how to use new features + +New in 1.53, 2016-06-24 + +* General maintenance + +New in 1.52, 2016-06-06 + +* General maintenance + +New in 1.51, 2016-05-30 + +* Remove useless typedef + +New in 1.50, 2016-05-19 + +* General maintenance + - Simplify code + - Updates according to coding-style + - Remove useless hidden block + - Simplify type checker for classes + - Update llvm dependencies to please gcc + +New in 1.49, 2016-05-03 + +* General maintenance of LLVM + +New in 1.48, 2016-04-18 + +* General maintenance + - replace list by vector int type/class + - Ajust given code + - Remove nested annotations + +New in 1.47, 2016-04-08: + +* Add support for LLVM + - add llvm translate module + - replace the dump method with a visitor + - add a record_type to the Nil type + - add --llvm-runtime-display and --llvm-display + +* General Maintenance + - arm: fix dependencies and use correct cross compiler + - llvm: require llvm-3.8 + + +New in 1.46, 2016-03-07: + +* General Maintenance + + - Add missing FIXMEs + +New in 1.45, 2016-02-18: + +* General Maintenance + + - Propagate changes for new version of Havm and Monoburg + - Remove useless FIXME + +New in 1.44, 2016-02-05: + +* General Maintenance + + - Generalize use of pragma once + - Support for boost 1.58 + - Use `unique_ptr` instead of `auto_ptr` + - Adjust compatibility with gcc 5 + - Adjust compatibility with flex 2.6 + - Fix typos + - Remove useless declarations + - Start to promote C++14 + +* Use type alias template in all the visitors + + - End the work started at 1.39 before the new + release for students. + +* Finalize integration with ARM + +* Compatibility with overload and object + + - Support for bindings + - Support for type checking + - Support for desugar and renamer + - Tests + +New in 1.43, 2015-06-26: + +* Fix error when computing object type inside ifexp + +* Update comments to fit iplemntation + +New in 1.42, 2015-06-05: + +* Fix pruning of unused function declarations + +* Add tests for bounds-checking + +New in 1.41, 2015-05-27: + +* Maintenance for arm backend + +New in 1.40, 2015-05-25: + +* No significant changes + +New in 1.39, 2015-04-30: + +* Start upgrading visitor + + Use a type alias template to shorten type names. Nonetheless + since it may lead to conflicts with students codes, it's just + an introduction. + +* Fix check routines + + - Fix marks for studistcheck + - Fix distcheck + +New in 1.38, 2015-03-19: + +* Support Python 3 + + Fix compatibility with python 3. + +* Update pretty printer + + Print attributes bindings. + +New in 1.37, 2015-02-26: + +* More targets + + - Clean ia32, mips target files + - Add arm backend files + - Initializer lits for cpu class + +New in 1.36, 2015-02-12: + +* More C++17 features + + - More uses of Boost.FileSystem's path. + +New in 1.35, 2015-02-04: + +* More C++11/14 features + + - type aliases with 'using'; + - moving away from std::list to promote std::vector; + - misc::variant is now always variadic, implemented with variadic + templates instead of dark magic incantations with Boost.Preprocessor. + +* Bounds Checking + + The official name is 'bounds checking', not 'bound checking'. So + everything was renamed to include that plural. + +* Simpler Build System + + The build system was simplified to be both simpler and faster: we no + longer build local libraries for the modules, rather object files + are directly linked together into libtc. + +* Safer and Faster Build System + + We also have reduced the number of Makefiles to... one. This is by + far the best approach to development. Have a look at this: + . + +* Compilable Code with Gaps + + The code delivered to students now compiles cleanly. + +* More C++17 features + + Some libraries, such as Boost.Optional, Boost.ProgramOptions, and + Boost.FileSystem, are expected to be adopted by the forthcoming C++ + standard. As a consequence, we started to use them liberally, + instead of alternative implementations (e.g., argp is no longer used + at all for command line option processing). + + + +New in 1.34, 2014-02-17: + +* Even more C++ 2011 features + + The Tiger compiler uses some more features from the C++ 2011 + ISO/IEC standard: + + - (standard) smart pointers (std::unique_ptr, std::shared_ptr); + - general-purpose initializer lists; + - lambda expressions; + - explicit overrides; + - template aliases; + - new function declarator syntax; + - delegating constructors; + - non-static data member initializers; + - inherited constructors. + + These changes require at least g++ 4.8 or clang++ 3.3. + +* Moved to using Bison 3 + + A special version of Bison 3 is required to build the parser. + +* C++ scanner + + The scanner has been turned into a C++ class, still generated by + Flex. + +* ast::ObjectVisitor + + A visitor performing default traversal of object nodes, + ast::ObjectVisitor, has been introduced. + +* Allow `nil' as valid value for objects + + Objects (class instances) can now be initialized to `nil' or + assigned `nil', like records. + +* Repaired TCSH + + TCSH was broken due to SWIG 2 not understanding C++ 2011 constructs. + These constructions have been hidden to SWIG so that TCSH can be + built again. + +* Style + + Many stylistics changes have been performed, mainly to match the + EPITA Coding Style. + + + +New in 1.33, 2013-02-11: + +* Maintenance release + + More test cases, more documentation and tools to manage the test + suite, some bug fixes, some updates to catch up with recent versions + of tools, minor improvements, and various stylistic changes + (especially with respect to spacing). + +* More C++ 2011 features + + Explicit template instantiation declarations are introduced to + replace the ad hoc mechanism used so far, based on *.hcc files + that were included once. + + + +New in 1.32, 2012-01-27: + +* Text files renamed as *.txt. + + This enables more features from tools (such as Mac OS X's Finder and + so forth). + +* Fixed location handling in the scanner/parser. + + The new scheme (make_SYMBOL) broke the transmission of the current + location from the parser to the scanner (via yylloc). We actually + had two "current" locations: the scanner's and the parser's. Only + the latter was properly initialized (with the current file name). + "Fortunately" the standard default constructor also made the + scanner's location work properly wrt lines and columns, but, of + course, had an empty file name. + + The TigerParser featured a useless location_ member. We now use it + to exchange the current location betwenn the parser and the scanner. + + To summarize: + + - TigerParser::location_ is now the current (scanner and parser) + location; + + - TigerParser::parse_ initializes this location with the right file + name; + + - the parser no longer needs to initialize its $@; + + - the scanner no longer uses a (static) variable loc, but + tp.location_, tp being the TigerParser, provided to it via %param. + +* Better support for x86-64 architectures + +* Improved support for clang + + The clang C and C++ front ends to the LLVM infrastructure are better + supported. The only real limitation is now the Argp library, which + is not compatible with the C99 standard and must be compiled using a + C89 compiler (using option `-std=c89' or `-std=gnu89'). + +* C++ 2011 features + + The Tiger compiler uses some new features from the latest C++ + ISO/IEC standard, including: + + - explicitly defaulted and deleted functions; + - consecutive right angle brackets allowed in templates; + - auto-typed variables; + - template metaprogramming traits provided by the standard library; + - the `nullptr' literal constant; + - range-based for-loops (``for (type val : container) ...''). + + The current changes are compatible with g++ 4.6 and clang 3.0. + + + +New in 1.31, 2011-01-30: + +* Style changes for inheritance and constructors. + + Instead of + + class Foo + : public Bar, + public Baz + { + Foo() + : Bar(), + Baz() + { } + }; + + write + + class Foo + : public Bar + , public Baz + { + Foo() + : Bar() + , Baz() + {} + }; + +* Style change in #include. + + When used with double-quotes, the included header is looked-up for + relatively to the including file. This is not how we use #include, + since we all qualify our included files. Hence, for consistency with + the semantics and for safety, convert to using <>. + + + +New in 1.30, 2011-01-13: + +* Moved to using Bison's api.tokens.prefix + + Instead of: + + %token TOK_STRING "string" + + and using TOK_STRING in the grammar, we now use: + + %define api.tokens.prefix "TOK_" + %token STRING "string" + + and use STRING in the grammar, but still TOK_STRING elsewhere (i.e., + the token enumeration generated in the header still defines + TOK_STRING, not STRING). + +* Moved to using Bison's %param + + Instead of: + + %parse-param { ::parse::TigerParser& tp } + %lex-param { ::parse::TigerParser& tp } + + we now use: + + %param { ::parse::TigerParser& tp } + +* Moved to using Bison's named references + + Instead of: + + "for" escaping ID ":=" exp "to" exp "do" exp + { + $$ = new ast::ForExp (@$, + new ast::VarDec (@3, $3, $2, 0, $5), + $7, $9); + } + + we now use: + + "for" escaping ID[var] ":=" exp[lo] "to" exp[hi] "do" exp[body] + { + $$ = new ast::ForExp (@$, + new ast::VarDec (@var, $var, $escaping, 0, $lo), + $hi, $body); + } + +* Moved to using Bison's make_SYMBOL functions + + By specifying "%define lex_symbol", we can change the scanner to use + a type-safe interface: instead of handling the tokens in three parts + (the return value is the type, the incoming arguments yylval and + yylloc for the semantic value and the location), return an object of + the type symbol_type with aggregates these three components) + . + + Instead of: + + {number} { + yylval->ival = strtol (yytext, 0, 0); + return parse::parser::token::INT; + } + + we now use: + + {number} return parse::parser::make_INT(strtol (yytext, 0, 0), loc); + + It is now impossible to return a INT, and yet assign the wrong + semantic value. Using some macro, the scanner can be reduced to: + + {number} return TOKEN_VAL(INT, strtol (yytext, 0, 0)); + +* Moved to using Bison's variant interface + + Instead of: + + %union { + int ival; + std::string* sval; + }; + %token STRING "string" + %token INT "integer" + + we now use: + + %token STRING "string" + %token INT "integer" + + and use genuine objects, instead of pointers to objects. Change the + scanner accordingly. + +* Moved to using Automake 1.11's silent-rules + + By default, running "make" no longer displays the (longish) + compilation commands. Rather, it displays: + + CXXLD transform/libtransform.la + CXX astclone/tasks.o + CXX overload/tasks.o + CXX desugar/tasks.o + CXX inlining/tasks.o + CXXLD tc + + Errors and warnings are therefore much easier to see. If you need a + verbose run, use "make V=1". See "Silent rules" in the Automake + documentation for more. + +* Avoid recursive Makefile.am's + + Since "Recursive Makefiles are considered harmful" (they hide + dependencies, they hinder performances by preventing concurrent + compilation in nested directories, they force Make to read large + repetitive files instead of a larger but unique one), nested + Makefiles have been replaced by "local.mk" files. These are + included by the parent Makefile, which therefore yield to a single + Makefile in the end. + + + +New in 1.29, 2010-01-15: + +* Fix a bug in unique objects' pretty-printer + +* More developer documentation on the distribution process + + + +New in 1.28, 2010-01-11: + +* Maintenance release + + Bug fixes, updates to catch up with modern tools, minor + improvements, aesthetic changes. + + The repository has also been converted to Git. + + + +New in 1.27, 2009-02-27: + +* Support for the Boehm-Demers-Weiser Garbage Collector on IA-32 + + On IA-32, option `--garbage-collection' generates code relying on + the Boehm-Demers-Weiser garbage collector for memory management + (see http://www.hpl.hp.com/personal/Hans_Boehm/gc/). Such code is + to be linked against the garbage collector's library + (gcc -lgc out.s). + + + +New in 1.26, 2009-01-16: + +* Tiger Interpreter in C++ + + In addition to the TCSH-based Tiger Interpreter in Python, an + interpreter written in C++ is available. It uses either HAVM, the + MIPS back end (and Nolimips) or the IA-32 back end (and GCC). + +* The Bistromatig + + The project features a large example of code written in Tiger, the + Bistromatig, an arbitrary-radix infinite-precision calculator. + + + +New in 1.25, 2008-05-19: + +* All escape sequences in literal strings are compatible with the GNU Assembler + + + +New in 1.24, 2008-03-10: + +* No significant change. + + + +New in 1.23, 2008-02-25: + +* misc::unique, a generalization of misc::symbol + +* Use a new set of Autoconf macros for the Boost libraries by Benoßt Sigoure + +* Merge more code with Gostai's code base w.r.t. code generators + + + +New in 1.22, 2007-12-10: + +* Concrete-syntax run-time program transformations + + A new module, namely `transform', provides rewriting services to the + compiler. Rewrite rules are expressed using concrete syntax. Most + of the current services are directly exposed through the language, + using the `rule' keyword. + +* Factor some code using BOOST_FOREACH and boost::lexical_cast + +* Miscellaneous renaming, mostly in lib/misc/. + + + +New in 1.21, 2007-07-04: + +* Object desugaring + + Object desugaring is working, though the implementation needs + some refactoring. + +* TWEASTs embedded in TWEASTs + + Allow a TWEAST to carry other TWEASTs as metavariables. Such a + structure is like a tree, which must be ``flattened'' before the + parsing. This feature is useful to build complex TWEASTs. For + instance, one can populate a TWEAST ``non linearly'' (reserving a + slot for a TWEAST that will be filled later). + + + +New in 1.20, 2007-06-12: + +* Some more (little) work on object desugaring, with no user-visible changes + + + +New in 1.19, 2007-06-06: + +* First step towards object desugaring + + The option --object-desugar can translate some object constructs + into plain Tiger. Method calls and accesses to attributes are not + handled yet, though. + + + +New in 1.18, 2007-05-15: + +* No significant change. + + + +New in 1.17, 2007-04-27: + +* Improve the type-checking of types and class definitions. + + object::TypeChecker now allows the use of every type defined in a + block of types from any location of this block (for instance, create + an object of a class defined later, in the same block). The + invariance of methods is checked. + + + +New in 1.16, 2007-04-23: + +* Object-aware type-checking. + + The visitor object::TypeChecker allows the computation of types on + an AST with objects. + +* Enforce STL coding style in lib/misc/. + +* Emacs major mode for Leopard + + The distribution comes with an Emacs major mode for the Leopard + language. The Tiger mode has been updated as well to highlight + Leopard's specific syntactic elements. + + + +New in 1.15, 2007-04-06: + +* Object-aware bindings. + + The visitor object::Binder allows the computation of bindings on an + AST with objects. + + + +New in 1.14, 2007-03-30: + +* Two forms of class declarations. + + Two forms of syntax for class declarations are allowed. The first + one, known as the ``canonical'' one, is similar to other type + declarations in Leopard (notably, array and records). The second + one, known as the ``alternative'' one (or ``Appel's'') was the + original syntax, described in Appel's ``Modern Compiler + Implementation'' books. + + + +New in 1.13, 2007-03-29: + +* No significant change. + + + +New in 1.12, 2007-03-28: + +* Introduce Leopard + + From now on, the Tiger project is known as the Leopard project. This + reflects the changes made to the language, which is also now called + Leopard (see below). + +* Add object-oriented syntactic constructions + + The language is extended with simple object-related constructions + (class and method declarations, inheritance, object construction, + method calls). This extension of the Tiger language gives birth to + a new dialect, called Leopard. + +* Visitor renaming + + Visitors are renamed with ``actor'' names (e.g., Binder, + TypeChecker, etc.). + + + +New in 1.11, 2007-03-23: + +* Tiger Interpreter + + A Tiger interpreter, written in Python and using TCSH, HAVM and + Nolimips, is available. It is installed along with the Tiger + compiler when TCSH is built. + + + +New in 1.10, 2006-09-04: + +* Ruby Tcsh + + The Tiger Compiler Shell is available for the Ruby language, in + addition to Python. + + + +New in 1.9, 2006-06-21: + +* Improve compatibility with NetBSD. + + +New in 1.8, 2006-06-15: + +* Fix the distribution about the target module. + + +New in 1.7, 2006-05-31: + +* Testing renamings and runtime errors + + The test suite is augmented to check the renaming pass and the + runtime errors. + + +New in 1.6, 2006-05-03: + +* Casts + + The keyword for casts is now "_cast" and no longer "cast". "_cast" + is valid only when syntactic extensions are enabled, and "cast" is + no longer special in any circumstance. + +* Tcsh + + The instruction selection has been improved so that the register + allocation works again. + + +New in 1.5, 2006-04-13: + +* Literal integers + + The semantics for literal is clarified, and the compiler matches + this definition. + + +New in 1.4, 2006-04-05: + +* Tcsh is functional again. + + + +New in 1.3, 2006-03-31: + +* No significant change. + + + +New in 1.2, 2006-03-21: + +* Tcsh is fixed (almost) + + The liveness analysis inside the register allocation is broken, but + the other stages work fine in tcsh. + +* The codegen module is merged into the target module + +* Mac OS X 10.3 (Panther) compatibility + + Have the project distcheck on Panther (in particular, be nice to + g++ 3.3 and work around missing utilities). + + + +New in 1.1, 2006-03-17: + +* Desugaring in concrete syntax within the parser + + The parser desugars some constructions (logic ``and'', logic ``or'', + unary minus) in concrete syntax. + +* misc::variant + + A simple wrapper around boost::variant is provided. It only support + two parameters, but it has conversion operators to these types. + Hence, misc::variant can be assigned to one of its ``real'' type + without using boost::get (an exception is thrown when there is + a conversion to a bad type). + +* libparse interface + + Thanks to variants, the interface of libparse is simpler. The main + parse function returns an ast_type -- a misc::variant holding either + an ast::Exp* or a ast::DecsList* + + + +New in 1.0, 2006-03-10: + +* Desugaring of the implicit Main function + + When the user types in + + + + as an input program, this is desugared as + + primitive print (string : string) + ... + function _main () = (; ()) + +* Overload and desugar + + Formerly, desugar::desugar used to call bind::bind and + type::types_check after it cloned the AST and removed the syntactic + sugar. It was thus impossible to go further in the compiler chain + with OverTiger programs, since the bindings computation and the + type-checking triggered errors on programs with overloaded + functions. + + The task system now allows the user to desugar a program with + overloaded functions and to proceed to the translation and the next + steps, thanks to a new task, overfun-desugar. The translation no + longer depends on desugar, but on a disjunctive task, + desugar-default. + +* Dynamic array bound checking and BoundCheckingVisitor + + The desugar step can perform a new program transformation that add + checks on the bounds of an array subscript at runtime, when reading + from (de-referencing) or writing to (assignment) the cell of an + array. + + When a subscript is out of bounds, an error message is written on + the standard error output and the program exits with error code 120. + + This transformation is done by a new visitor, BoundCheckingVisitor, + and triggered by the --bound-checks-add and --overfun-bound-checks-add + options. + +* TigerInput and parser metavariables + + Rather than using plain strings, chunks of concrete syntax are + stored in a dedicated container, TigerInput. + + Program transformations from the desugar module using concrete + syntax can save some time thanks to metavariables. A metavariable + is a named abstract syntax subtree stored in an instance of + TigerInput. Formerly, to use an AST node within a piece of concrete + syntax, one had to pretty-print this node and re-parse it. Now, the + parser can accept nodes as actual subtrees, and ``re-attach'' them + at the right place in the produced AST. + +* TigerParser + + The interface of TigerParser is refactored and uses template `parse' + methods. + +* Casts + + The extended Tiger language supports casts. This feature is not + meant to be used in program written by humans, but by the compiler + within program transformations. For instance, BoundCheckingVisitor + uses it to simulate generic arrays in the _check_bounds builtin. + +* Conversion to Boost's shared_ptr + + The implementation of misc::ref uses boost::shared_ptr. + +* GLR Parser + + tc uses a GLR Parser instead of the previous LALR(1) parser. Bison + 2.2 is required to generate this parser. + +* Renaming + + As soon as the bindings are computed, every identifier can be + renamed with a unique name thanks to RenameVisitor. + + For instance, the renaming facility is used to turn a Tiger program + with overloaded functions into a program with no overloaded + functions. This simplifies post-type-checking tasks such as + desugaring or inlining. + +* Inlining + + The compiler supports the inline expansion of functions as a program + transformation. Identifiers must have been renamed to unique names to + avoid name capture (RenameVisitor); then the bodies of non recursive + user functions are expanded (InlineVisitor); finally, unused + functions are optionally removed (PruneVisitor). + +* Containers refactoring + + Syntactic sugar for misc::Map is refactored and misc::Endomap is a + renaming mapping defaulting to identity. + + misc::ScopedMap is a generalization of the previous symbol::Table, + used in InliningVisitor. The former is used to refactor the latter. + + Symbols are no longer constructed with a `create' class (static) + member; the constructor is used instead, which is much more natural. + An automatic conversion to `const std::string&' is introduced. + +* CppGen + + This module has been in a broken state for a long time, and is + removed from the project. + +* IA32 back-end + + The IA32 back-end has been rewritten and uses MonoBURG to generate + its code generator (as does the Mips back-end). + +* Runtime errors + + The runtime errors are reported on the standard error ouput. + tc-check is aware of this new convention, and checks the standard + error ouput messages too. + +* TC-1 distribution + + The distribution machinery can now generate valid teacher tarballs. + + + +New in 0.92, 2005-06-27: + +* Use MonoBURG's named subtrees + + Since MonoBURG 1.0.2, subtrees in the right-hand side of a rule can + be named so that the user can refer to them in the corresponding + action block. The MIPS code generator uses this feature to simplify + its actions. + + + +New in 0.91, 2005-06-20: + +* Conversion of graphs to Boost Graphs + + Graphs (CallGraph, ParentGraph, InterferenceGraph, FlowGraph, + Liveness) are now implemented with the Boost Graph Library (BGL). + The graph::Graph abstraction inherits from boost::adjacency_list, + and all its subclasses handle graphs à la Boost. + +* First attempts in MIPS code generator refactoring + + The grammar of the code emitter is smaller, thanks to MonoBURG's + multiple rules feature. + + + +New in 0.90, 2005-06-14: + +* Task name normalization + + Tasks can be named like-this or like_this, but their real names only + use dashes (foo_bar is just an alias for foo-bar). + +* Computing cycles executed in Nolimips + + Tc-check's --profile option computes cycles of execution on Nolimips + tests (thanks to its --profile option). + +* misc::list + + The temp::List class, used to store temps and labels, becomes a more + general container, misc::list. + +* Better integration of MonoBURG + + The build system is more robust w.r.t MonoBURG. + + + +New in 0.89, 2005-06-07: + +* Generation of the code generator + + The code generator for Mips is now generated, thanks to MonoBURG. + Grammar files (src/codegen/mips/*.brg) describe the tree rewriting + patterns used in the translation from LIR (expressed in the Tree + language) to Assem. + + An extended version of MonoBURG is required to produce this Mips + code generator. + +* Argument passing registers + + Their number can now be bounded using --argument=LIMIT. + +* Raw desugaring + + To ease the development of DesugarVisitor, the desugar module + provides a new task, raw-desugar, which performs just desugaring, + without recomputing the bindings nor checking the types of the AST. + Thus, a desugared tree which has bind- or type-related errors can + still be pretty-printed for debugging purpose. + +* Profiling in tc-check + + Tc-check supports a --profile option which reports the number of + cycles of execution of the tested compiler. + + +New in 0.88, 2005-05-11: + +* Desugaring before translating + + configure supports the option --enable-desugar that makes the task + hir-compute depend on the task desugar, rather than just type. + +* temp::Temp and temp::Label use boost::variant + + temp::Identifier are implemented using boost::variant instead of + inclusion polymorphism. Factories are no longer needed to build and + manage these objects. + + The path to the headers of the Boost C++ Libraries can be given at + configuration time using the option --with-boost. + +* Symbols + + Due to the new implementation of temp::Identifier, symbols need to + be assignable. Thus symbol::Symbol no longer carries a reference to + the string representation of a symbol, but a pointer. + +* Timers + + Module objects (in liveness and regalloc) have their own timers, and + tasks merge them to the global timer. + + +New in 0.87, 2005-04-26: + +* TempMap + + TempMap are independent of Temp, they have moved to misc/. + +* Driver options and tasks + + Catch up with the TLRM: -B/--bindings-display does not imply + -b/--bind; -O is a shortcut for --overfun-types-compute. + + New option: --no-prelude (same as --prelude=""). + +* Symbols and strings + + A symbol::Symbol can be compared to a std::string directly, without + Symbol::create(). + +* Tcsh and studentize + + Tcsh files are no longer stripped at dist time by + stagize/studentize. Python's introspection mechanisms are used + instead to check tc's available modules. + +* Astclone and desugar are delivered + + These modules are now part of TC-4, and are shipped in student + tarballs. + + +New in 0.86, 2005-04-14: + +* Binding of formals + + The formals are bound by the BindVisitor. Binding record fields + remains a task for the TypeVisitor. + + +New in 0.85, 2005-04-14: + +* Builtin prelude + + To make tc self contained, the TigerParser now includes a hard copy + of the standard prelude. + +* Type checking options + + The disjunctive option --types-check-default is now -T/--type. + Former -T/--types-check is now --types-compute. + + +New in 0.84, 2005-04-08: + +* String parsing + + TigerParser::parse_string allows to parse a string instead of a + file. + +* Concrete syntax desugaring + + Early experiments have started. + +* Error handlers + + They now also support member manipulator. This is the first use of + member function pointers in the Tiger Project. + + +New in 0.83, 2005-04-01: + +* Visitors are functors + + The visitors now really have a top level operator() for Ast, and + derive from unary_function. This also simplifies/clarifies the + calling conventions. + +* Error handling + + The former global exit_status and free functions working on it are + replaced by the Error class, implementing error handlers. Not only + this is better OO programming, but this also improves the pureness + of the library: they no longer make side effects on cerr and + exit_status, they have there own error handler into which error are + logs, and the top level retrieves these errors, and merge them + within the top level error handler. + + More specifically, instead of writing + + if (!yyin) + { + std::cerr + << program_name + << ": cannot open `" << name << "': " + << strerror (errno) << std::endl; + misc::exit_set (misc::exit_failure); + misc::exit_on_error (); + } + + now write + + if (!yyin) + error << misc::Error::failure + << program_name << ": cannot open `" << name << "': " + << strerror (errno) << std::endl; + error.exit_on_error (); + + or even + + if (!yyin) + error << misc::Error::failure + << program_name << ": cannot open `" << name << "': " + << strerror (errno) << std::endl + << exit; + + where error is your local error handler. + +* The scanner is purer + + The TigerParser is now passed to yylex. The static variables from + the scanner and its free functions are now members of the + TigerParser. + +* Overloaded Tiger + + Support for overloaded Tiger is back, using overload aware + subclasses from the BindVisitor and the TypeVisitor. + + +New in 0.82, 2005-03-22: + +* AST file names + + The file names in the AST follow the coding style: var-dec.hh + instead of vardec.hh, etc. + +* Function overloading + + A visitor computing the bindings of OverTiger programs has been set + up. This OverfunBindVisitor does the same job as BindVisitor, but + doesn't compute function's bindings, since some type-checking is + needed to resolve function calls. These function's bindings are now + handled by OverfunTypeVisitor, which has been repaired (it uses the + same interface as the TypeVisitor). + + +New in 0.81, 2005-03-16: + +* Boolean + + Boolean operators & and | now return only 1 or 0. + +* Tasks + + It is now possible to define a task which requires only one of its + dependencies, allowing alternatives. This is done thanks to a new + task, DisjunctiveTask. + +* Symbols + + Symbols are now handled by a factory. Before one unique of the + string value was stored, now one Symbol suffice. Many + allocations/deallocations are saved. + +* Swig 1.3.24 + + Dependency tracking is enabled. We no longer use the obsoleted + -runtime. + +* misc::separator + + This auxiliary function provides sugar to print separated lists. + For convenience, it dereferences list of pointers. It replaces the + functions print_with_separator. + +* Parsing module + + The parsing module has been completely overhauled. The handling of + "import" directive is now performed when found: the scanner and + parser are recursively called. The new class TigerParser + coordinates the scanner and parser, and caries the results. The + debatable "using namespace ast" has been removed. + +* tcsh + + Libtool is now used to compile a top level dynamic library, libtc, + containing all the modules. The tc executable is linked statically + against this dynamic library on platforms that support it. This + considerably simplifies tcsh which only needs to be linked against + the dynamic libtc. + + More natural translations are provided, especially thanks to __str__ + methods. + + The Python bindings are moved in tcsh/python. + +* break checks + + The BindVisitor now also binds the break's to their loop construct. + Hence incorrect breaks now trigger a bind-error instead of a + type-error. + +* Clone Visitor + + This new visitor makes a deep copy of an AST. It also serves as a + basis for the construction of the following visitor. + +* Desugar Visitor + + A new visitor, removing syntactic sugar from an AST while cloning it. + It currently handles the following sugar: + + - String operators (<, <=, >, >=, =, !=) + Using strcmp and streq (new primitives), change these operators + into integer operators: + + ... a < b ... + + where a and b are strings + + ... strcmp (a, b) < 0 ... + + and so forth. + + - ForExp + For's can be desugared as while's, as the former is a particular + case of the latter. + + +New in 0.80, 2004-11-10: + +* Swig files + + The handling of Swig files has changed again: they are no longer + shipped, hence Swig is required to build tcsh. This release was + tested with Swig 1.3.22. + + This change was prompted by the fact that some of tc's sources are + generated (version.cc). Since Swig input is tc's sources, even if + one shipped Swig output files, they had a missing dependency + (version.cc) which `make' tried to satisfy. Hence Swig was + relaunched, trying to overwrite shipped files. + +* Call and parent graphs + + The call graph (what functions are called by a function), and the + parent graph (what functions are nested in another) have moved into + the callgraph module. + +* Type Checking + + Type checking is vastly simplified using a better set of auxiliary + functions. The handling of types themselves, especially + comparisons, is also simplified. For loop indexes processing is + simplified using a misc::set. + + +New in 0.79, 2004-10-26: + +* Typable + + The ``typable'' nodes of the AST inherit from a new abstract base + class, ast::Typable, which holds a pointer to the type (type::Type) + of the node. + +* TypeVisitor and type labelling + + Typable AST nodes are labelled with their type by the TypeVisitor, + as well as type declaration holders (ast::Dec nodes). Type + environments have become useless, as type definitions are retrieved + directly from the AST nodes using their type labels and their + definition sites (set by the BindVisitor). + +* Function overloading + + Since the new TypeVisitor no longer uses environments to store the + type information, the old interface used by the OverfunTypeVisitor + is broken. Hence, function overloading has been disabled, waiting + for a future repair. + +* AST display + + The display of the AST has changed: the options --bindings-display, + --escapes-display etc. no longer display the AST, rather they enable + features from -A. Hence, when one used to run -E, now run -EA. + +* Type and Translate Visitors + + They are vastly simplified thanks to (i) the BindVisitor, and (ii) + the type annotations. The so-called "Entries" and "Env" have + disappeared, replaced by much simpler std::maps. Kinds have + disappeared: type annotations suffice. + + +New in 0.78, 2004-10-13: + +* Prelude + + Full prelude support is implemented, and activated. New options + --library-append and --library-prepend, and new envvar, + TC_PKGDATADIR. + +* Memory leaks + + Many leaks are solved. There remains memory that STL does not free + when there are many xallocs. + +* PrintVisitor + + The PrintVisitor is revamped and uses operator<< internally, instead + of accept. This was done thanks to misc::xalloc to pass flags to the + PrintVisitor. + + +New in 0.77, 2004-10-06: + +* Coding Style + + The coding style for type is finally defined, and the code was + normalized. + +* Streams extentions + + misc::xalloc provides a convenient wrappers around xalloc and pword. + +* Prelude + + Preliminary support for a prelude is implemented: + + - import "FILE" + Inclusion a library file from a Tiger source file is enabled. + The syntax of the FILE is + + let + DECS + end + + To support the two different syntaxes with a single parser, we use + a "seed": an initial fake token that branches the start symbol on + one of the two "sub-grammars" (declaration file, or source file). + + - primitive + The new keyword "primitive", similar to "function" allows for the + introduction of function signatures, without bodies. + + - --prelude=PRELUDE + The definitions included in the file PRELUDE are automatically put + "around" the source file. Technically, when PRELUDE is not null, + it is equivalent to parsing + + let + import "PRELUDE" + in + FILE + end + + where FILE is the source file to compile. + + Support for a library search path will soon be included. This will + enable the definition of a standard Tiger prelude defining (via + "primitive") the Tiger primitives (builtins). + +* LetExp + + Second change in the handling of declarations: "let" are no longer + de-sugared into homogeneous nested "let"s. Rather, a "let" is an + heterogeneous list of homogeneous lists of declarations. + +* FieldInit + + Replaces the FieldExp, which no longer derives from Exp. + +* Default Visitor + + The machinery to select a const or non const iterator is fixed, and + spread on the whole Visitor hierarchy. The selection of const/non + const Visitor is also cleaner, using a template template argument. + + Also, the former Defaultvisitor class template is renamed + GenDefaultvisitor for consistency with the Visitor hierarchy itself. + DefaultVisitor and DefaultConstVisitor are now classes. + +* Bind Visitor + + This new visitor is in charge of binding names, i.e., linking every + identifier use (function call, type name, variable name) to its + definition. As a result, no other Visitor now uses a scoped symbol + table: using the address of the definition site is enough (it plays + the role of a unique global name, free from scopes). + +* Escapable + + Multiple inheritance is used to factor the possibility of being + escaped. + +* Cpu + + They own a TempMap that contains the needed magic to change fp into + $fp etc. In addition, MipsCpu becomes (more or less) a NolimipsCpu + that also knows how to map t4 into $x4. This allows to transform + local hacks into a general feature. + +* Levels + + Andrew W. Appel suggests the use of two system levels: the "outer" + level, the one containing the primitives and the main function, and + of course the "main" level, that of the "main" function. We now + only have a single level, that of "main". + +* Parser adjustments + + %destructor and %printer are used: the parser is more verbose, and + no longer leaks. + +* PrintVisitor + + It nows uses misc::indent instead of local code. + +New in 0.76, 2004-07-07: + +* New option: --target-default + + This task was introduced to work around a design issue: + interdependent global variables initialization. Some architectures + failed at launching because of this issue. + + +New in 0.75, 2004-07-06: + +* Debian package + + A package for Debian GNU/Linux can be automatically generated using + `make deb'. The package version is deduced from the version of TC and + the repository revision. + +* Interference Graph + + The move related nodes are now reported. + +* Graph output + + Empty labels are no longer produced. This improves rendering with, + e.g., OmniGrafle. + + +New in 0.74, 2004-06-25: + +* Identifiers Mapping + + The old class TempMap was recycled into Map . The + Identifier<> class template is now equipped with means to + store/retrieve one such Map on a stream, using xalloc and pword. It + also now enjoys a magical operator<< which uses such a Map to format + Identifiers during the output. + +* Code Pessimization + + Some code pessimization was identified and fixed. + +* Callee/caller save registers + + 0 now stands for 0 such registers, whereas before it meant "the + default number". Use 99 or whatever to revert. + +* Testing framework + + tc-check now distinguishes unsupported features from broken + implementations. + + Test files are properly shipped, thereby freeing the user from the + formerly mandatory available... tc compiler. + +* Stream modifiers + + misc/escape and misc/indent now properly save/restore the state of + the stream. + +* Assem + + The printing is assem instructions is simplified thanks to using + TempMap in ostream, together with the debugging flag. + + +New in 0.73, 2004-06-10: + +* Fixes + + Distcheck, now properly works. Errors in comments/documentation + were fixed. + +* Memory leaks + + Memory leaks from T6 to T9 were handled and removed. + +* Targets: Nolimips + + Mipsy is now replaced with Nolimips. + +* Targets: Overhaul + + The overhaul of the target modules has started to let code generator + enjoys the specific features of the target processor. In a + forthcoming version, Nolimips will considered as an architecture, + and there will be TempMap derived classes to cope with architecture + register name specificities. + +New in 0.72, 2004-05-10: + +* Fragments and Visitors. + + Tree and Assem fragments now support Visitors to provide a cleaner + alternative to dynamic_cast. Assem Visitors are clarified: + MapVisitor is removed, and Visitor is extended (to parallel with + a GenDefaultVisitor for the ast module). + +* Inner classes + + Function Inner classes are now demonstrated to call single use + Fragment visitors. + +* Less dependencies. + + More fwd.hh files were introduced. + + +New in 0.71, 2004-04-30: + +* Tasks. + + They are finally moved into their own namespace, task. + Printing functions are standardized. + +* Identifier redesign. + + The implementation of temp::Identifier was simplified by merging the + parameter and the parameter's traits. As a result, the Identifier, + TaggedIdentifier, and Factory class templates are now parameterized + by a class template (the traits). + +* Compilation warning flags. + + They are no longer used to compile SWIG output files. + +* Less dependencies. + + More fwd.hh files were introduced. Newly introduced *.hcc files + help reducing compilation dependencies. + +* Memory leaks. + + Intermediate code leaks were fixed. The test suite now checks for + memory leaks at every stage of the compiler (except when recovering + from parse errors). + +* More unit tests. + + More independent library files are checked, and existing tests have + been improved, in order to help independent development of these + auxiliary (but fundamental) files. + +* Indenting ostream. + + (Intermediate) fragments now use misc::indent. + +* Wrapping sliced tarballs. + + Studentize check that its input has balanced student marks: + it should now be impossible to produce student tarballs with + missing files. + + Stagize is smarter, and allows to distcheck sliced tarballs. + +* Tree code. + + The class tree::Node was renamed as tree::Tree which is more + meaningful, since that's how this intermediate representation is + called (Tree code). + + The fragments are finally part of tree::, instead of translate:: as + Andrew Appel suggests. The clarity of this layout seems to + outweigh the benefits of sticking to Appel's design. + +* Independence from target. + + The target module is not needed in T5: the frame module is truly + independent from the name of the real target fp and rv register + names. There remains a dependency on the word size. It is + considered to always be 4 bytes. + + +New in 0.70, 2004-04-05: + +* Memory is properly reclaimed when reporting an error. + This required getting rid of all `std::exit' invocations, since they + exit immediately, without stack unwinding. The functions from + common.cc that used to call `std::exit' are replaced by the functions + from misc/fail.* that throw exceptions. + + Then, the driver is changed to catch exceptions. Without `catch' + clauses, the standard specifies that performing or not performing + stack unwinding is undefined. + + Note that *there must not be any invocation of `exit'*, as it skips + stack unwinding, i.e., it skips memory reclaiming. Every explicit + call to `exit' must be replaced by a `throw', either direct, or via + a call to `error_on_exit'. + +* Wider use of misc::indent. + Indented output is extremely convenient if most routines use it. + Its use was generalized in symbol tables, type checking, and + intermediate code. + +* tc-check. + + - Recent changes in tc-check caused it to be insensitive to some + failures, this is fixed. Now, it is also checking memory leaks in + type checking (including when there are type errors). + + - Diffs are less verbose, in order to keep some privacy over the + test suite. + + - Standard error output is checked when auditing escape computation. + +* Translation to intermediate code is cleaned up. + +* `if then' is finally implemented as syntactic sugar. + +New in 0.69, 2004-03-26: + +* ios::xalloc is used to control the depth of record type pretty printing. + +* New indentation relative functions added. + Two new files: src/misc/indent.hh and src/misc/indent.cc. + +* No memory leaks in T4. + +* More traits available. + misc::traits provides some information about types. + +* The Type module was revised. + Many simplifications are introduced such as: + + - use of the method `type' as a sort of `accept' with a return + value. + + - use of the overloaded template methods `error' to factor error + reporting and recovery. + +* Similarly in the Translate and Overload modules. + +* Tcsh is repaired. + Tcsh was broken in the latest releases. It is up and running + again. + + +New in 0.68, 2004-03-19: + +* The function misc::for_each allows for pseudo functional programming + using function objects. For instance, instead of + + for (list_t::const_iterator i = l.begin (); i != l.end (); ++i) + f (*i); + + one may write + + misc::for_each (l, f); + + The difference with std::for_each is that `f' is not copied, it is + passed by reference, so it is not sliced. + +* The DefaultVisitor has a template method for arbitrary pointer + types, so that + + i->accept (visitor); + + can now be replaced with + + visitor (*i); + + Combined with misc::for_each, one may now replace + + for (list_t::const_iterator i = l.begin (); i != l.end (); ++i) + i->accept (v); + + with + + misc::for_each (l, v); + +* The attributes `name' from FunctionDec, VarDec, and TypeDec are now + factored into a single attribute `name' in Dec. As a result, more + code can be factored (e.g., checking that a name is defined only + once). + +* The documentation is undergoing a full overhaul to be more + effective. + +* The configuration of Swig is softened: + - --with-swig mandates Swig, i.e., if Swig is not available, it is a + hard error. + - without-swig disables it completely. + - If not specified (or --with=swig=auto), Swig support is built if + available. + +* The files parse/location.hh and parse/position.hh are built if + missing when building src/ast (which requires them). + +* The file misc/select_const.hh provides support for const vs. non + const iterators. This is most useful in the DefaultVisitor + template. + + +New in 0.67, 2004-03-03: + +* The Singleton idiom used for Symbols is more robust to dependencies. + That solves a portability problem on Mac OS X, where the module + Target tried to create a Symbol before its class member `set_' was + constructed. + +* The AST module is cleaned up. + - The outdated file src/ast/README is removed. + - A trailing, unused, misleading definition of decs_type is removed. + +* CppGen is somewhat repaired (23 passes over 128 tests as compared + to... 0), but a lot remains to be done. + +* The argp library is updated to its latest release, to improve + Mac OS X compatibility. + +* Many Doxygen warnings are removed. + +New in 0.66, 2004-02-18: +* All the visitors now use `operator()' instead of `visit' as method + name. This is more compliant with other C++ programming groups, such + as Boost (e.g., http://www.boost.org/libs/graph/doc/visitor_concepts.html). + +New in 0.65, 2004-02-17: +* Declarations in "let" are reduced to a single kind (function, + type, or variable). Only one variable can be introduced at a time. + Mixed "let" are de-sugared as nested "let"s. +* Constructors of AST nodes are moved in the implementation file, + as for the destructors. +* Hooks for escapes, kinds etc. are no longer delivered during T2. + +New in 0.64, 2004-02-06: +* Symbols are sorted lexicographically. +* temp::Temp and Label share the same implementation, based upon + (natural) dynamic polymorphism instead of an ad hoc implementation. +* Traits are (finally) demonstrated: they help implement the common + framework for temp::Temp and Label. +* "print" functions always return an ostream. +* tcsh: The Tiger Compiler Shell... + Swig is used to import the Tiger libraries into a Python shell. + Thanks to Nicolas Burrus. +* The compilation of Bison files is safer and lazy. +* Autoconf 2.58. +* Automake 1.8.2. +* Gzip archives are no longer built by default. +* The Tiger Emacs mode is now shipped (config/tiger.el). + +New in 0.63, 2003-11-17: +* The test suite is no longer a sub package, it is a regular sub + directory. +* Fix tc-check file location. +* Fix escape checks. +* Automake 1.7.9. + +New in 0.62, 2003-10-29: +* Tree memory management is handled by reference counting. +* --callee-save and --caller-save allow to address fake limited + architectures. +* BooleanTasks and IntTasks. +* foo/foo-tasks.* are renamed as foo/tasks.*. +* Compute escaping static link. +* Compute and dump call and parent graphs. +* More code moved out of the headers. +* Use NameTy instead of Symbol for RecordExp, ArrayExp, ArrayTy, + Field. +* The transformation from HIR to LIR is performed by objects + instead of stand-alone functions. +* The AST is rewritten to use pointers instead of reference: "*new" + has disappeared from the parser. +* Rebox is provided to build nice boxed comments. +* Temp now uses a factory, which is also in charge of memory deallocation. +* Coding style is standardized. For instance private members are + "foo_"-like, no longer "_foo". +* temp::Label and temp::Temp are factored into the class template + temp::Identifier. +* Heavy use of forward declarations as compiler firewalls. +* The ast is generated. +* Automake 1.7.8, Havm 0.21 are required. + +New in 0.61, 2003-08-14: +* The Cpu class no longer includes a "color register" category. +* Register allocation is improved. +* The runtime functions are fixed and tested for failures. +* Calls to the "exit" syscall set the status. +* Ia32 back-end is improved, but still fails on some cases. + +New in 0.60, 2003-07-22: +* List of temporaries are sorted. This should help regression tests. +* misc::set have properly working version of set_union, operator+ etc. +* --target-display describes the current target. +* --inst-debug enables verbose output of the instructions, i.e., + with the "use", "def", and "jump" lists. +* The register allocator was rewritten from scratch. The results + are much better, and the code is much closer to Appel's. + +New in 0.59, 2003-07-07: +* src/codegen/tiger-runtime presents the C source of the Tiger + runtime. +* The MIPS getchar implementation is fixed. +* Mipsy support (-Y/--mipsy-display). +* The C++ generation is now checked. + +New in 0.58, 2003-06-26: +* Compiler warnings are enabled during the build. +* Lots of these warnings are removed. +* Using Bison 1.875c is recommended (to neutralize some warnings). +* Function overload added. +* This file. +* Count of removed lines in README. +* Refixed escape checks. +* Register allocation speed up. +* No longer wastes frame slots when spilling. + +New in 0.57, 2003-05-23: +* Escape checks fixed. +* Handling of for loop upper bounds fixed. +* Error messages normalized. +* Support for --liveness/-V +* Ix is enabled by default, use --hir-naive to disable. +* tc-check works on NetBSD as is. + +New in 0.56, 2003-05-12: +* --task-graph. +* Translate, canon and codegen clean up. + +New in 0.55, 2003-04-28: +* Simplified declaration of tasks. +* Extended tc-check, with tarball time stamp support. +* tc-check supports a configuration file. +* --target-ia32. +* misc/deref.hh provides a magic means to output the contents of + containers of pointers. +* Complete revamping of the back end. + +FIXME: Continue the extraction from the ChangeLog. +Be careful that "Bump to 0.54" means "Release 0.53". + + +New in 0.54, 2003-04-08: + +New in 0.52, 2003-03-19: + +New in 0.50, 2003-01-29: + +New in 0.20, 2003-01-10: + +New in 0.18, 2002-07-11: + +New in 0.17, 2002-05-31: + +New in 0.15, 2002-05-18: + +New in 0.14, 2002-03-05: + +New in 0.13, 2002-02-14: + +New in 0.12, 2001-09-13: + +New in 0.11, 2001-09-10: + +New in 0.8, 2001-07-05: + +New in 0.7, 2001-06-23: + +New in 0.5, 2001-06-08: + +Local Variables: +coding: utf-8 +mode: outline +ispell-local-dictionary: "american" +End: diff --git a/tiger-compiler/README.md b/tiger-compiler/README.md new file mode 100644 index 0000000..fae77fa --- /dev/null +++ b/tiger-compiler/README.md @@ -0,0 +1,93 @@ +# tiger-compiler + + + +## Getting started + +To make it easy for you to get started with GitLab, here's a list of recommended next steps. + +Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! + +## Add your files + +- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files +- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: + +``` +cd existing_repo +git remote add origin https://gitlab.cri.epita.fr/martial.simon/tiger-compiler.git +git branch -M main +git push -uf origin main +``` + +## Integrate with your tools + +- [ ] [Set up project integrations](https://gitlab.cri.epita.fr/martial.simon/tiger-compiler/-/settings/integrations) + +## Collaborate with your team + +- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) +- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) +- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) +- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) +- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) + +## Test and Deploy + +Use the built-in continuous integration in GitLab. + +- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) +- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) +- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) +- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) +- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) + +*** + +# Editing this README + +When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template. + +## Suggestions for a good README + +Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. + +## Name +Choose a self-explaining name for your project. + +## Description +Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. + +## Badges +On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. + +## Visuals +Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. + +## Installation +Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. + +## Usage +Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. + +## Support +Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. + +## Roadmap +If you have ideas for releases in the future, it is a good idea to list them in the README. + +## Contributing +State if you are open to contributions and what your requirements are for accepting them. + +For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. + +You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. + +## Authors and acknowledgment +Show your appreciation to those who have contributed to the project. + +## License +For open source projects, say how it is licensed. + +## Project status +If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. diff --git a/tiger-compiler/README.txt b/tiger-compiler/README.txt new file mode 100644 index 0000000..6802a9b --- /dev/null +++ b/tiger-compiler/README.txt @@ -0,0 +1,120 @@ + +Number of suppressed lines, suppressed chunks, average chunks size: +. : 3598 331 10 + lib : 249 15 16 + misc : 249 15 16 + scoped-map.hh : 65 2 32 + scoped-map.hxx : 152 1 152 + singleton.hh : 16 1 16 + symbol.hxx : 6 4 1 + test-symbol.cc : 1 1 1 + unique.hxx : 8 5 1 + variant.hxx : 1 1 1 + src : 3349 316 10 + ast : 464 42 11 + break-exp.hh : 4 2 2 + break-exp.hxx : 2 2 1 + call-exp.hh : 4 2 2 + call-exp.hxx : 2 2 1 + default-visitor.hxx: 20 11 1 + dumper-dot.hxx : 1 1 1 + escapable.cc : 1 1 1 + escapable.hh : 36 1 36 + escapable.hxx : 13 1 13 + method-call-exp.hh: 4 2 2 + method-call-exp.hxx: 2 2 1 + object-visitor.hxx: 9 5 1 + pretty-printer.cc : 260 3 86 + pretty-printer.hh : 30 1 30 + typable.cc : 1 1 1 + typable.hh : 30 1 30 + typable.hxx : 3 1 3 + type-constructor.cc: 3 1 3 + type-constructor.hh: 30 1 30 + type-constructor.hxx: 9 1 9 + astclone : 53 17 3 + cloner.cc : 53 17 3 + bind : 524 17 30 + binder.cc : 194 1 194 + binder.hh : 63 3 21 + binder.hxx : 76 1 76 + libbind.cc : 14 1 14 + libbind.hh : 15 1 15 + renamer.cc : 24 1 24 + renamer.hh : 32 4 8 + renamer.hxx : 37 2 18 + tasks.cc : 25 1 25 + tasks.hh : 43 1 43 + test-bind.cc : 1 1 1 + callgraph : 6 1 6 + call-graph-visitor.cc: 6 1 6 + combine : 114 8 14 + binder.cc : 29 1 29 + binder.hh : 30 1 30 + libcombine.cc : 11 3 3 + tasks.cc : 4 1 4 + type-checker.cc : 14 1 14 + type-checker.hh : 26 1 26 + desugar : 212 5 42 + bounds-checking-visitor.cc: 131 1 131 + bounds-checking-visitor.hh: 7 1 7 + desugar-visitor.cc: 73 2 36 + libdesugar.hxx : 1 1 1 + escapes : 43 2 21 + escapes-visitor.cc: 33 1 33 + escapes-visitor.hh: 10 1 10 + inlining : 176 4 44 + inliner.cc : 79 1 79 + inliner.hh : 1 1 1 + pruner.cc : 87 1 87 + pruner.hh : 9 1 9 + llvmtranslate : 260 40 6 + escapes-collector.cc: 35 5 7 + llvm-type-visitor.cc: 6 5 1 + translator.cc : 219 30 7 + object : 398 76 5 + binder.cc : 40 9 4 + desugar-visitor.cc: 150 39 3 + libobject.cc : 7 2 3 + libobject.hh : 4 1 4 + renamer.cc : 35 7 5 + tasks.cc : 5 1 5 + tasks.hh : 6 1 6 + test-bind.cc : 1 1 1 + type-checker.cc : 150 15 10 + overload : 150 7 21 + binder.cc : 26 4 6 + binder.hh : 5 1 5 + type-checker.cc : 108 1 108 + type-checker.hh : 11 1 11 + parse : 257 29 8 + parsetiger.yy : 211 8 26 + scantiger.ll : 26 3 8 + tasks.cc : 1 1 1 + tiger-driver.cc : 5 3 1 + tiger-factory.hxx : 14 14 1 + type : 692 68 10 + array.cc : 7 1 7 + array.hh : 23 1 23 + array.hxx : 1 1 1 + attribute.hxx : 1 1 1 + builtin-types.cc : 23 1 23 + builtin-types.hh : 74 1 74 + class.cc : 41 6 6 + class.hh : 1 1 1 + default-visitor.hxx: 11 5 2 + function.cc : 26 1 26 + function.hh : 1 1 1 + method.cc : 10 1 10 + method.hh : 1 1 1 + method.hxx : 1 1 1 + named.cc : 16 4 4 + named.hxx : 2 1 2 + nil.cc : 2 1 2 + pretty-printer.cc : 52 7 7 + record.cc : 25 2 12 + record.hh : 1 1 1 + type-checker.cc : 341 20 17 + type-checker.hh : 12 2 6 + type-checker.hxx : 18 5 3 + type.hxx : 2 2 1 diff --git a/tiger-compiler/THANKS.txt b/tiger-compiler/THANKS.txt new file mode 100644 index 0000000..7b43faf --- /dev/null +++ b/tiger-compiler/THANKS.txt @@ -0,0 +1,302 @@ +This package was written by and with the assistance of + +* Adrien Houpert adrien.houpert@epita.fr + - Translation of perl scripts into python3. + +* Adrien Langou adrien.langou@epita.fr + +* Akim Demaille akim@lrde.epita.fr + - Project inception. + - Intensive maintenance of the whole compiler. + - Manipulation of concrete syntax improved thanks to parser metavariables. + - Sixth redesign of the AST (can be an expression or a list of + declarations; creation of a _main function in the former case). + - Conversion to GLR parser. + - Concrete syntax desugaring within the parser. + +* Alain Vongsouvanh vongso_a@epita.fr + - Type-checking of object constructions. + +* Aleksandar Radojicic aleksandar.radojicic@epita.fr + - Make use of C++20 ranges and concepts. + - Translation of perl scripts into python3. + +* Alexandre Duret-Lutz adl@lrde.epita.fr + +* Alexis Brouard brouar_a@epita.fr + - Portability of tc-check to NetBSD. + +* Arnaud Fabre fabre_a@epita.fr + - "import" support. + - Disjunctive tasks. + +* Arthur Hugonnot arthur.hugonnot@epita.fr + - Translation of the perl testsuite into python3. + +* Ashkan Kiaie-Sandjie kiaies_a@epita.fr + - Add LLVM debug information. + +* Axel Manuel manuel_c@epita.fr + +* Axel Ribon axel.ribon@epita.fr + +* Benoßt Perrot benoit@lrde.epita.fr + - Extensive documentation. + - Redesign of the Task system. + - Design and implementation of target handling. + - Deep clean up of every single module. + - Third redesign of the AST, and actually, automatic generation of the AST. + - IA-32 back-end. + - Dissociate generation of frame allocation/deallocation statements + from generation of procedure entry/exit statements in code + generators. + - Move general tools into lib/ and enforce the STL coding style for these. + +* Benoßt Sigoure tsuna@lrde.epita.fr + - Rename the visitors using imperative class names. + - Coding style clean-up. + - Renaming from Tiger to Leopard (through codenamize). + - Access to the concrete-syntax rewriter from the Tiger language. + +* Benoßt Tailhades tailha_b@epita.fr + - Tiger Interpreter in Python. + - Binding of object constructions. + +* Bruno Belanyi bruno.belanyi@epita.fr + +* Cédric Bail bail_c@epita.fr + - Initial escaping static link computation framework. + +* Christophe Duong chris@epita.fr + - symbol::Symbol simplification. + - Refactoring of maps. + +* Clément Vasseur clement.vasseur@lrde.epita.fr + - Debian packaging. + +* Cyprien Orfila orfila_c@epita.fr + - First draft on a functional stage. + +* Daniel Gazard gazard_d@epita.fr + - Initial framework from LIR to MIPS. + +* Dylan Innou dylan.innou@epita.fr + +* Fabien Ouy fabien@epita.fr + - String parsing refactoring. + - Conversion to boost::shared_ptr. + - Seventh AST refactoring (use VarDecs for formal parameters instead of + Fields). + +* Elsa Keirouz elsa.keirouz@epita.fr + - SSA & related optimizations. + +* Ethan Zouzoulkowsky ethan.zouzoulkowsky@epita.fr + +* Etienne Renault renault@lrde.epita.fr + - Intensive maintenance of the whole compiler. + +* Francis Maes francis@lrde.epita.fr + - Generation of static C++ Tree As Types. + +* Francis Visoiu Mistrih francis@epita.fr + - Implementation of a new stage for LLVM IR generation (TC-L). + +* Gaëtan Dupont gaetan.dupont@epita.fr + +* Ghiles Ziat ghiles.ziat@epita.fr + +* Ghislain Bonnard ghislain.bonnard@epita.fr + +* Gilles Walbrou walbro_g@epita.fr + - Completion of misc::xalloc. + +* Guillaume Duhamel duhame_u@epita.fr + - Unify dev/ with Gostai's version. + +* Guillaume Marques marque_o@epita.fr + - Replacement of lists with vectors. + - Cleanup of the documentation and removal of its warnings. + +* HélÚne Chelin helene.chelin@epita.fr + - Documentation for LLVM on assignments. + - Addition of SSA to the middle-end. + +* Jérémie Simon simon_j@epita.fr + +* Julien Nicolle julien.nicolle@epita.fr + +* Julien Roussel spip@lrde.epita.fr + - "let" desugaring. + - A lot of memory leak hunting. + +* Julien Grall julien.grall@gmail.com + - Support for TC-0 tarballs in tc-check. + +* Kerian Allaire kerian.allaire@epita.fr + +* Killian Siou killian.siou@epita.fr + +* Laurent Gourvénec laurent.gourvenec@epita.fr + - FreeBSD support. + +* Léo Ercolanelli ercola_l@epita.fr + +* Loïc Banet banet_l@epita.fr + - Introduction to C++17. + +* Louis Dufeu louis.dufeu@epita.fr + +* Mael Cravero mael.cravero@epita.fr + - Rework of TC-6 and TC-7 to use C++ variants based matching. + +* Michaël Cadilhac michael.cadilhac@lrde.epita.fr + - Conversion to MonoBurg. + +* Matthieu Simon simon_f@epita.fr + +* Mathieu Merienne mathieu.merienne@epita.fr + +* Moray Baruh moray.baruh@epita.fr + - First draft on a functional stage. + +* Nicolas Burrus + - Generation of a Swig bindings of the tc libraries to Python. + - Implementation of a tc shell. + +* Nicolas Fidel nicolas.fidel@epita.fr + +* Nicolas Pouillard pouill_n@lrde.epita.fr + - Massive revisions of studentize and tc-check. + - Fourth AST generation change: conversion to using YAML. + - Massive coding style normalizations. + - VCS support. + +* Nicolas Teck teck_n@epita.fr + - Conversion to BOOST_FOREACH. + - Many tests for the Bistromatig. + +* Pablo Oliveira pablo.oliveira@prism.uvsq.fr + - Mandelbrot set plotting test and mini-morpho test correction. + +* Pierre Brandone pierre.brandone@epita.fr + - Make use of Bison warnings and counterexamples. + - Balance the workloads of TC-1 and TC-2. + +* Pierre-Olivier Rey pierre-olivier.rey@epita.fr + - Include Nix as a package manager for the project. + +* Pierre-Louis Dagues dagues_p@epita.fr + - Redesign of the Pruner. + +* Pierre-Yves Strub strub_p@epita.fr + - Second redesign of the AST. + - Second redesign of Symbol. + +* Pierre De Abreu deabre_p@epita.fr + +* QuÎc Peyrot chojin@lrde.epita.fr + - Initial Task implementation. + +* Raphaël Dias--Monteiro raphael.dias-monteiro@epita.fr + +* Raphaël Montes raphael.montes@epita.fr + - Fixed a bug in LLVM. + +* Raphaël Poss r.poss@online.fr + - Conversion of AST to using pointers instead of references. + - Breakup between interfaces and implementations (.hh only -> .hxx, .cc) + - Miscellaneous former TODO items. + - Implementation of reference counting for Tree. + +* Razik Yousfi yousfi_r@epita.fr + - Parsing and abtract syntax of objects constructions. + +* Roland Levillain roland@lrde.epita.fr + - Intensive maintenance of the whole compiler. + - Maintenance of the package (SWIG, statistics, generators, + studentification etc.). + - Revival of the overloading support. + - Fifth AST refactoring (multiple inheritance for Typable, + TypeConstructor, etc.). + - AST cloning and desugaring. + - Conversion to boost::variant. + - Conversion to Boost Graph Library. + - Dynamic array bounds checking. + - Inline expansion of function bodies. + - misc::variant. + - Revamp the TCSH-based Tiger Interpreter. + - Parsing and abtract syntax of objects constructions. + - Desugaring of object constructions. + - Concrete-syntax rewrite engine. + - The Simple Tiger Compiler (stc). + - The Bistromatig. + - Conversion to C++ 2011. + +* Robert Anisko anisko_r@epita.fr + +* Romain Foucher romain.foucher@epita.fr + - Rename Decs and DecsList to Chunk. + +* Sarasvati Moutoucomarapoulé moutou_s@epita.fr + - First draft on a functional stage. + +* Serval Martinot-Lagarde serval.martinot-lagarde@epita.fr + - Create and ship a dumper dot for AST visual representation. + - Revive and ship SWIG bindings for python. + +* Sébastien Broussaud brouss_s@epita.fr + - Escapes torture tests. + +* Sébastien Piat spiat@lrde.epita.fr + - Support for overload and object at the same time. + +* Stéphane Molina molina_s@epita.fr + - Configuration files in tc-check. + +* Théophile Ranquet ranquet@lrde.epita.fr + - Stylistic changes. + +* Thierry Géraud theo@epita.fr + - Initial idea for visitors. + - Initial idea for tasks. + - Initial implementation of AST. + - Initial implementation of Tree. + +* Timothée Desveaux timothee.desveaux@epita.fr + +* Timothée Strouk timothee.strouk@epita.fr + +* Valentin David david_v@epita.fr + - Some additional tests. + +* Victor Hognon victor.hognon@epita.fr + - Initial work on the AST driver. + +* Vinh-Toàn Phan vinh-toan.phan@epita.fr + +* Viviane GarÚse viviane.garese@epita.fr + - Documentation for LLVM on assignments. + - Cleanup of the Bison grammar. + +* Yann Grandmaßtre grandm_y@epita.fr + - Use boost::lexical_cast for integer-to-string conversions. + - Clean up lib/misc/. + - Tiger Interpreter in C++. + - Support for the Boehm-Demers-Weiser garbage collector on IA-32. + - Support for TC-0 tarballs in tc-check. + +* Yann Popo popo_y@epita.fr + - Implementation of the Timer class. + +* Yann Régis-Gianas yann@lrde.epita.fr + - Reimplementation of graphs. + +Copyright (C) 2004-2017 LRDE. + +-- +Local Variables: +mode: text +coding: utf-8 +ispell-local-dictionary: "american" +End: diff --git a/tiger-compiler/bootstrap b/tiger-compiler/bootstrap new file mode 100755 index 0000000..84bd56d --- /dev/null +++ b/tiger-compiler/bootstrap @@ -0,0 +1,203 @@ +#! /bin/sh + + +fatal () +{ + echo >&2 "$0: $@" + exit 1 +} + +usage () +{ + cat < +EOF +} + +# Run make at the end of the bootstraping? +run_make_p=false + +awk_strverscmp=' + # Use only awk features that work with 7th edition Unix awk (1978). + # My, what an old awk you have, Mr. Solaris! + END { + while (length(v1) || length(v2)) { + # Set d1 to be the next thing to compare from v1, and likewise for d2. + # Normally this is a single character, but if v1 and v2 contain digits, + # compare them as integers and fractions as strverscmp does. + if (v1 ~ /^[0-9]/ && v2 ~ /^[0-9]/) { + # Split v1 and v2 into their leading digit string components d1 and d2, + # and advance v1 and v2 past the leading digit strings. + for (len1 = 1; substr(v1, len1 + 1) ~ /^[0-9]/; len1++) continue + for (len2 = 1; substr(v2, len2 + 1) ~ /^[0-9]/; len2++) continue + d1 = substr(v1, 1, len1); v1 = substr(v1, len1 + 1) + d2 = substr(v2, 1, len2); v2 = substr(v2, len2 + 1) + if (d1 ~ /^0/) { + if (d2 ~ /^0/) { + # Compare two fractions. + while (d1 ~ /^0/ && d2 ~ /^0/) { + d1 = substr(d1, 2); len1-- + d2 = substr(d2, 2); len2-- + } + if (len1 != len2 && ! (len1 && len2 && substr(d1, 1, 1) == substr(d2, 1, 1))) { + # The two components differ in length, and the common prefix + # contains only leading zeros. Consider the longer to be less. + d1 = -len1 + d2 = -len2 + } else { + # Otherwise, compare as strings. + d1 = "x" d1 + d2 = "x" d2 + } + } else { + # A fraction is less than an integer. + exit 1 + } + } else { + if (d2 ~ /^0/) { + # An integer is greater than a fraction. + exit 2 + } else { + # Compare two integers. + d1 += 0 + d2 += 0 + } + } + } else { + # The normal case, without worrying about digits. + if (v1 == "") d1 = v1; else { d1 = substr(v1, 1, 1); v1 = substr(v1,2) } + if (v2 == "") d2 = v2; else { d2 = substr(v2, 1, 1); v2 = substr(v2,2) } + } + if (d1 < d2) exit 1 + if (d1 > d2) exit 2 + } + } +' + +version_compare () +{ + ( + # Locally ignore failures, otherwise we'll exit whenever $1 and $2 + # are not equal! + set +e + + awk "$awk_strverscmp" v1="$1" v2="$2" /dev/null + case $? in + 1) echo '<';; + 0) echo '=';; + 2) echo '>';; + esac + ) +} + +# require TOOL REQUIREMENT +# ------------------------ +# Test that TOOL exists, and its version is at least REQUIREMENT. +# Check whether the environment contains a variable named like TOOL, +# but upper-cased, and use it instead of TOOL if so. +require () +{ + envvar_name=$(echo $1 | tr '[:lower:]' '[:upper:]') + tool=$(printenv $envvar_name || echo $1) + local version=$($tool --version | \ + sed -n 's/[^0-9.]*\([0-9][0-9.]*\).*/\1/p;q') + test x"$version" != x || + fatal "$tool is required" + case $(version_compare "$2" "$version") in + '>') fatal "$1 $2 or better is required: this is $tool $version";; + esac +} + + +# Failures do matter. +set -e + +for arg in "$@"; do + case "$arg" in + -h|--help) usage; exit 0 ;; + -m|--make) run_make_p=true ;; + *) fatal "error: unrecognized option: $1" ;; + esac +done + +# The ast/ is generated, including its Makefile. +if test -f dev/ast-nodes-mk-gen.py && test -f src/ast/ast.yml; then + python_check_mod_yaml=' +import sys, importlib +try: + importlib.import_module("yaml") +except ImportError: + sys.exit(1) +' + if ! python3 -c ''; then + fatal "Python is required" + elif ! python3 -c "$python_check_mod_yaml"; then + fatal "Python module \`yaml' is required (http://pyyaml.org/)" + fi + + rm -f src/ast/ast-nodes.mk + python3 dev/ast-nodes-mk-gen.py src/ast src/ast/ast-nodes.mk \ + || { + rv=$? + cat >&2 </dev/null 2>&1; then + libtoolize=$l + break + fi +done +export LIBTOOLIZE=$libtoolize +require $libtoolize 2.2.6 + +# Tell what's going on. +set -x + +# Finally, install the GNU Build System. +autoreconf -f -v -i + +# FIXME: autoheader does not obey --force. +find . -name 'config.h.in' | xargs touch + + +# If the pseudo-standard name "_build" is used and if asked so, then +# try and continue the re-build. +if $run_make_p && test -f _build/config.status; then + cd _build + ./config.status --recheck + ./config.status + make +fi diff --git a/tiger-compiler/configure.ac b/tiger-compiler/configure.ac new file mode 100644 index 0000000..8b65498 --- /dev/null +++ b/tiger-compiler/configure.ac @@ -0,0 +1,295 @@ +dnl Catch macros that are not expanded. +m4_pattern_forbid([^(AM|AX|LT|TC)_]) + +m4_define([TC_CLANG_PREREQ], [18.0]) +m4_define([TC_GCC_PREREQ], [10.2]) +m4_define([TC_HAVM_PREREQ], [0.28]) +m4_define([TC_NOLIMIPS_PREREQ], [0.11]) + +AC_PREREQ([2.64]) + +## ---------------- ## +## Package set up. ## +## ---------------- ## + +AC_INIT([LRE Tiger Compiler], [1.94.e], [tiger@lrde.epita.fr], [tc], + [http://tiger.lrde.epita.fr]) + +# Auxiliary files. +AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_MACRO_DIR([build-aux/m4]) + +# Automake. +AM_INIT_AUTOMAKE([1.14.1 dist-bzip2 no-dist-gzip foreign + color-tests parallel-tests subdir-objects + nostdinc silent-rules -Wall]) +# By default, let "make" hide the compilation command and display a +# "GEN ..." message, unless V=1 is passed to "make". +AM_SILENT_RULES([yes]) + + +## --------------------- ## +## C++ Compiler Set up. ## +## --------------------- ## + +# Look for a C++ compiler. +AC_LANG([C++]) +AC_PROG_CXX + +# Warn if the C++ compiler is not known to support the required +# features. Or course, we should rather check for features, not +# version numbers. +case $($CXX --version) in + (*clang*) + AS_VERSION_COMPARE([$($CXX -dumpversion)], [TC_CLANG_PREREQ], + [AC_MSG_ERROR([clang++ >= TC_CLANG_PREREQ is required, have $cxx_version])]) + ;; + (*g++*) + AS_VERSION_COMPARE([$($CXX -dumpfullversion)], [TC_GCC_PREREQ], + [AC_MSG_ERROR([g++ >= TC_GCC_PREREQ is required, have $cxx_version])]) + ;; + (*) + AC_MSG_ERROR([g++ >= TC_GCC_PREREQ or clang++ >= TC_CLANG_PREREQ is required, have none]) + ;; +esac + +# Enable C++ 2014 support. +AC_CANONICAL_HOST +# Passing -stdlib=libc++ to clang++ is a requirement on OS X to enable +# full C++ 2011 support. For more information on this, see +# http://cplusplusmusings.wordpress.com/2012/07/05/clang-and-standard-libraries +# We don't try to enable it by default on other platforms, as libc++ +# is principally supported by OS X. +case $host_os in + (darwin*) + AX_CHECK_COMPILE_FLAG([-std=c++20 -stdlib=libc++], + [CXXFLAGS="$CXXFLAGS -std=c++20 -stdlib=libc++" + stdpass=true]) + ;; +esac +if ! "${stdpass-false}"; then + AX_CHECK_COMPILE_FLAG([-std=c++20], + [CXXFLAGS="$CXXFLAGS -std=c++20" + stdpass=true]) +fi + +if ! "${stdpass-false}"; then + AC_MSG_ERROR([unable to turn on C++20 mode with this compiler]) +fi + +# Try to use pipes between compiler stages to speed the compilation up. +AX_CHECK_COMPILE_FLAG([-pipe], [CXXFLAGS="$CXXFLAGS -pipe"]) + +# Use good warnings. +TC_CXX_WARNINGS([[-Wall], + [-W], + [-Wcast-align], + [-Wcast-qual], + [-Wformat], + [-Wmissing-prototypes], + [-Wstrict-prototypes], + [-Wwrite-strings], + [-Wbad-function-cast], + [-Wmissing-declarations], + [-Wnested-externs], + [-Wunused-parameter], + [-Wunused-function], + [-Woverloaded-virtual], +]) + +# Silence bison 3.8.2 generated code warnings +# +# parse/parsetiger.cc:2956:17: warning: 'parse::parser::glr_stack' has a field +# 'parse::parser::glr_stack::yyerror_range' whose type uses the anonymous +# namespace [-Wsubobject-linkage] +# +# parse/parsetiger.cc:2956:17: warning: 'parse::parser::glr_stack' has a field +# 'parse::parser::glr_stack::yystateStack' whose type uses the anonymous +# namespace [-Wsubobject-linkage] + +TC_CXX_WARNINGS([[-Wno-shadow]]) + +# Pacify g++ on Boost Variants. +TC_CXX_WARNINGS([[-Wno-subobject-linkage]]) + +# This is so that ICC no longer complain that +# +# scantiger.ll(177): remark #111: statement is unreachable +# break; +# ^ +# +# ./../ast/seqexp.hh(36): remark #193: +# zero used for undefined preprocessing identifier +# #if STUDENT +# ^ +# +# scantiger.cc(924): remark #279: controlling expression is constant +# while ( 1 ) /* loops until end-of-file is reached */ +# ^ +# +# ../../src/task/task.hh(38): remark #383: +# value copied to temporary, reference to +# temporary used +# int key = 0, const std::string& deps = ""); +# ^ +# /intel/compiler70/ia32/include/xstring(41): remark #444: +# destructor for base class "std::_String_val<_Elem, _Ax>" is not virtual +# : public _String_val<_Elem, _Ax> +# ^ +# +# ../../../src/type/types.hxx(64): remark #522: +# function "type::Named::type_set(const type::Type *)" redeclared "inline" +# after being called +# Named::type_set (const Type* type) +# ^ +# +# ./../ast/print-visitor.hh(21): warning #654: +# overloaded virtual function "ast::GenVisitor::visit +# [with K=ast::const_kind]" +# is only partially overridden in class "ast::PrettyPrinter" +# class PrettyPrinter : public DefaultVisitor +# ^ +# +# /intel/compiler70/ia32/include/xlocale(1381): remark #810: +# conversion from "int" to "char" may lose significant bits +# return (widen((char)_Tolower((unsigned char)narrow(_Ch), +# ^ +# +# +# ./../ast/print-visitor.hh(331): remark #981: +# operands are evaluated in unspecified order +# _ostr << "type " << e.name_get () << " = "; +# ^ +# +# scantiger.cc(324): remark #1418: +# external definition with no prior declaration +# static char yy_hold_char; +# ^ +# +TC_CXX_WARNINGS([[[-wd111,193,279,383,444,522,654,810,981,1418]]]) + +# GCC emits tons of warnings about src/parse/parsetiger.hh regarding +# broken strict aliasing rules: +# +# ../../src/parse/parsetiger.hh: +# In instantiation of 'T& parse::variant::as() +# [with T = ast::ChunkList*; long unsigned int S = 16ul]': +# ../../src/parse/parsetiger.hh:146:7: +# required from 'void parse::variant::swap(parse::variant&) +# [with T = ast::ChunkList*; long unsigned int S = 16ul]' +# ../../src/parse/parsetiger.hh:156:7: +# required from 'void parse::variant::build(parse::variant&) +# [with T = ast::ChunkList*; long unsigned int S = 16ul]' +# ../../src/parse/parsetiger.hh:872:46: required from here +# ../../src/parse/parsetiger.hh:130:46: +# warning: dereferencing type-punned pointer will break strict-aliasing +# rules [-Wstrict-aliasing] +# +# ... +# +# Check whether the C++ compiler supports `-Wno-strict-aliasing' and +# if so, add it to NO_STRICT_ALIASING_CXXFLAGS and let Makefiles use +# it to compile code that include src/parse/parsetiger.hh. +TC_CXX_FLAGS([[-Wno-strict-aliasing]], [NO_STRICT_ALIASING_CXXFLAGS]) + + +## -------------------- ## +## Auxiliary programs. ## +## -------------------- ## + +TC_PROG([reflex], [>= 3.2.10], [REFLEX], [Re/Flex scanner generator]) + +TC_PROG([bison], [>= 3.8.2], [BISON], [Bison parser generator]) +AX_CONFIG_SCRIPTS([build-aux/bin/bison++]) + +# Compile Emacs files. +AM_PATH_LISPDIR + +# Requested by Automake 1.12 for tcsh. +AM_PROG_AR + +# We don't need shared libraries, speed the compilation up. +LT_INIT([disable-shared]) + +# Check for IA-32-GNU/Linux (and x86-64-GNU/Linux) to disable related +# parts on other platforms. +AM_CONDITIONAL([IA32_GNU_LINUX], + [echo "$host" | grep -q '^\(i.86\|x86_64\).*linux']) +# Check for IA-32-FreeBSD to disable related parts on other platforms. +AM_CONDITIONAL([IA32_FREEBSD], + [echo "$host" | grep -q '^\(i.86\|amd64\).*freebsd']) +# If one the previous IA-32 conditionals was true, enable SUPPORTED_IA32. +AM_CONDITIONAL([SUPPORTED_IA32], + [echo "$host" | grep -q '^\(i.86\|x86_64\).*linux\|^\(i.86\|amd64\).*freebsd']) + + +# Debian does not provide a llvm-config binary +TC_PROG([llvm-config-18 llvm-config], [>=TC_CLANG_PREREQ], [LLVM_CONFIG], [Print LLVM compilation options]) +TC_PROG([clang32 clang clang-18], [>=TC_CLANG_PREREQ], [CLANG], [C language family frontend for LLVM]) + +# Add a configure option to link LLVM statically +AC_ARG_ENABLE([static-llvm], + [AS_HELP_STRING([--enable-static-llvm], + [enable the linking statically against the LLVM back-end @<:@no@:>@])]) + +# Set STATIC_LLVM when linking statically +AM_CONDITIONAL([STATIC_LLVM], [test x"$enable_static_llvm" = x"yes"]) + + + +# Clang-format. +AC_CHECK_PROGS([CLANG_FORMAT], [clang-format]) + +## ----------- ## +## Libraries. ## +## ----------- ## + +BOOST_REQUIRE([1.61], [AC_MSG_ERROR([Boost is required])]) +BOOST_CONVERSION # boost::lexical_cast +BOOST_GRAPH +BOOST_PROGRAM_OPTIONS +BOOST_STRING_ALGO +BOOST_SYSTEM + +## ------ ## +## Tcsh. ## +## ------ ## + +# Check for Darwin to help Libtool use the right dynamic module +# extension on this system. +AM_CONDITIONAL([DARWIN], [echo "$host_os" | grep -q '^darwin']) +TC_WITH_TCSH([with_tcsh=yes], [with_tcsh=no]) +AM_CONDITIONAL([ENABLE_TCSH], [test x$with_tcsh = xyes]) +if test x$with_tcsh = xyes; then + AC_DEFINE([WITH_SWIG], [1], [Define if building with swig.]) +else + AC_DEFINE([WITH_SWIG], [0], [Define if building with swig.]) +fi + +AC_CONFIG_FILES([tcsh/Makefile tcsh/python/Makefile]) + +# The Doxyfile is directly generated via `sed' (see doc/local.am) +# AC_CONFIG_FILES([doc/Doxyfile]) + +AX_CONFIG_SCRIPTS([tcsh/run]) + +## ------- ## +## Tests. ## +## ------- ## + +# Students should create their test suite in tests/. Add the needed +# configure options here. +AC_CONFIG_FILES([tests/Makefile]) + +## --------------- ## +## Configuration. ## +## --------------- ## + +# Ask for the creation of config.h. +AC_CONFIG_HEADERS([config.h]) + +# Ask for the creation of the Makefiles. +AC_CONFIG_FILES([Makefile]) + +# Instantiate the output files. +AC_OUTPUT diff --git a/tiger-compiler/data/local.am b/tiger-compiler/data/local.am new file mode 100644 index 0000000..5da53ba --- /dev/null +++ b/tiger-compiler/data/local.am @@ -0,0 +1 @@ +dist_noinst_DATA += data/prelude.tih diff --git a/tiger-compiler/data/prelude.tih b/tiger-compiler/data/prelude.tih new file mode 100644 index 0000000..f4d99c0 --- /dev/null +++ b/tiger-compiler/data/prelude.tih @@ -0,0 +1,18 @@ +primitive print(string : string) +primitive print_err(string : string) +primitive print_int(int : int) +primitive flush() +primitive getchar() : string +primitive ord(string : string) : int +primitive chr(code : int) : string +primitive size(string : string) : int +primitive streq(s1 : string, s2 : string) : int +primitive strcmp(s1 : string, s2 : string) : int +primitive substring(string : string, start : int, length : int) : string +primitive concat(fst : string, snd : string) : string +primitive not(boolean : int) : int +primitive exit(status : int) +primitive assertion(condition : int, instruction_str : string, filename : string) +primitive fork(): int +primitive wait_pid(pid: int): int +primitive get_exit_code(status_code: int): int diff --git a/tiger-compiler/doc/Doxyfile.in b/tiger-compiler/doc/Doxyfile.in new file mode 100644 index 0000000..ae2b6a5 --- /dev/null +++ b/tiger-compiler/doc/Doxyfile.in @@ -0,0 +1,2438 @@ +# Doxyfile 1.8.11 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "@PACKAGE_NAME@" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = "@PACKAGE_VERSION@ @ID@" + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = . + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = YES + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = @top_srcdir@/lib \ + @top_srcdir@/src \ + @top_builddir@/src + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = @top_srcdir@/lib \ + @top_srcdir@/src \ + @top_builddir@/src + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = ISO-8859-1 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl, +# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. + +FILE_PATTERNS = *.cc \ + *.hh \ + *.hxx + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = @top_srcdir@/src/parse/parsetiger.hh \ + @top_srcdir@/src/parse/parsetiger.cc \ + @top_builddir@/src/parse/scantiger.cc \ + @top_builddir@/src/target/ia32/codegen.cc.dir \ + @top_builddir@/src/target/mips/codegen.cc.dir \ + @top_builddir@/src/target/arm/codegen.cc.dir + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = YES + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = test*.cc + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse-libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /