From 4f048c2fb6d6665eec7c1b8f2f9f9d1e6b85bee4 Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Mon, 1 Sep 2025 18:05:47 -0400 Subject: [PATCH 01/12] Revert "nr1.0: Remove support in expansion phase" This reverts commit 3e527693cfae6b41c841d6f09a601d2e6d1b2964. --- gcc/rust/expand/rust-macro-expand.cc | 7 ++++--- gcc/rust/expand/rust-macro-expand.h | 6 +++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/gcc/rust/expand/rust-macro-expand.cc b/gcc/rust/expand/rust-macro-expand.cc index fd5516bd9caa..edaf8910d063 100644 --- a/gcc/rust/expand/rust-macro-expand.cc +++ b/gcc/rust/expand/rust-macro-expand.cc @@ -27,12 +27,10 @@ #include "rust-macro.h" #include "rust-parse.h" #include "rust-cfg-strip.h" +#include "rust-early-name-resolver.h" #include "rust-proc-macro.h" #include "rust-token-tree-desugar.h" -// flag_assume_builtin_offset_of -#include "options.h" - namespace Rust { AST::Fragment @@ -337,6 +335,9 @@ MacroExpander::expand_invoc (AST::MacroInvocation &invoc, void MacroExpander::expand_crate () { + NodeId scope_node_id = crate.get_node_id (); + resolver->get_macro_scope ().push (scope_node_id); + /* fill macro/decorator map from init list? not sure where init list comes * from? */ diff --git a/gcc/rust/expand/rust-macro-expand.h b/gcc/rust/expand/rust-macro-expand.h index 1436dc54ea28..901583f5d8a2 100644 --- a/gcc/rust/expand/rust-macro-expand.h +++ b/gcc/rust/expand/rust-macro-expand.h @@ -27,6 +27,8 @@ #include "rust-ast.h" #include "rust-macro.h" #include "rust-hir-map.h" +#include "rust-early-name-resolver.h" +#include "rust-name-resolver.h" #include "rust-macro-invoc-lexer.h" #include "rust-proc-macro-invoc-lexer.h" #include "rust-token-converter.h" @@ -299,7 +301,8 @@ struct MacroExpander : cfg (cfg), crate (crate), session (session), sub_stack (SubstitutionScope ()), expanded_fragment (AST::Fragment::create_error ()), - has_changed_flag (false), mappings (Analysis::Mappings::get ()) + has_changed_flag (false), resolver (Resolver::Resolver::get ()), + mappings (Analysis::Mappings::get ()) {} ~MacroExpander () = default; @@ -511,6 +514,7 @@ struct MacroExpander tl::optional last_invoc; public: + Resolver::Resolver *resolver; Analysis::Mappings &mappings; }; From bfe2950dc624965c3b87a6579ea51c15fce19b67 Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Mon, 1 Sep 2025 18:48:52 -0400 Subject: [PATCH 02/12] Reapply most of commit --- gcc/rust/expand/rust-macro-expand.cc | 3 --- gcc/rust/expand/rust-macro-expand.h | 4 +--- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/gcc/rust/expand/rust-macro-expand.cc b/gcc/rust/expand/rust-macro-expand.cc index edaf8910d063..82f75870e7ca 100644 --- a/gcc/rust/expand/rust-macro-expand.cc +++ b/gcc/rust/expand/rust-macro-expand.cc @@ -335,9 +335,6 @@ MacroExpander::expand_invoc (AST::MacroInvocation &invoc, void MacroExpander::expand_crate () { - NodeId scope_node_id = crate.get_node_id (); - resolver->get_macro_scope ().push (scope_node_id); - /* fill macro/decorator map from init list? not sure where init list comes * from? */ diff --git a/gcc/rust/expand/rust-macro-expand.h b/gcc/rust/expand/rust-macro-expand.h index 901583f5d8a2..59a351484895 100644 --- a/gcc/rust/expand/rust-macro-expand.h +++ b/gcc/rust/expand/rust-macro-expand.h @@ -301,8 +301,7 @@ struct MacroExpander : cfg (cfg), crate (crate), session (session), sub_stack (SubstitutionScope ()), expanded_fragment (AST::Fragment::create_error ()), - has_changed_flag (false), resolver (Resolver::Resolver::get ()), - mappings (Analysis::Mappings::get ()) + has_changed_flag (false), mappings (Analysis::Mappings::get ()) {} ~MacroExpander () = default; @@ -514,7 +513,6 @@ struct MacroExpander tl::optional last_invoc; public: - Resolver::Resolver *resolver; Analysis::Mappings &mappings; }; From 71cc1d1cce3b6c8fd99940acbd7f63766e6f4ee1 Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Mon, 1 Sep 2025 23:27:34 -0400 Subject: [PATCH 03/12] Extract info from github runner --- .github/workflows/ccpp32alpine.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ccpp32alpine.yml b/.github/workflows/ccpp32alpine.yml index 5eb0c230df23..ba4b71c0f1a7 100644 --- a/.github/workflows/ccpp32alpine.yml +++ b/.github/workflows/ccpp32alpine.yml @@ -107,6 +107,11 @@ jobs: make check-rust RUNTESTFLAGS="--target_board=unix\{-m32}" shell: alpine.sh {0} + - name: Test Hack + run: | + cd gccrs-build; \ + gdb --batch -ex run -ex bt --args gcc/crab1 -frust-debug -frust-incomplete-and-experimental-compiler-do-not-use ../gcc/testsuite/rust/execute/torture/issue-1232.rs 1>gcc/testsuite/rust/hack_log_1 2>gcc/testsuite/rust/hack_log_2 + - name: Archive check-rust results uses: actions/upload-artifact@v4 with: From 06db71f4e5e17d51ba0b5494ca617f6450294736 Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Tue, 2 Sep 2025 00:06:38 -0400 Subject: [PATCH 04/12] Instal gdb --- .github/workflows/ccpp32alpine.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ccpp32alpine.yml b/.github/workflows/ccpp32alpine.yml index ba4b71c0f1a7..453e9d94f813 100644 --- a/.github/workflows/ccpp32alpine.yml +++ b/.github/workflows/ccpp32alpine.yml @@ -44,6 +44,7 @@ jobs: libc-dev libc++-dev cargo + gdb # - name: Install gcc dependency # run: | From 710cae5904182c63f63c64997e35ac52806094b7 Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Tue, 2 Sep 2025 01:48:55 -0400 Subject: [PATCH 05/12] Ensure test runs in alpine shell --- .github/workflows/ccpp32alpine.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ccpp32alpine.yml b/.github/workflows/ccpp32alpine.yml index 453e9d94f813..6021a210382f 100644 --- a/.github/workflows/ccpp32alpine.yml +++ b/.github/workflows/ccpp32alpine.yml @@ -112,6 +112,7 @@ jobs: run: | cd gccrs-build; \ gdb --batch -ex run -ex bt --args gcc/crab1 -frust-debug -frust-incomplete-and-experimental-compiler-do-not-use ../gcc/testsuite/rust/execute/torture/issue-1232.rs 1>gcc/testsuite/rust/hack_log_1 2>gcc/testsuite/rust/hack_log_2 + shell: alpine.sh {0} - name: Archive check-rust results uses: actions/upload-artifact@v4 From dc1f3b7906df41a41f6c5936ece2562a2abd7ce0 Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Tue, 2 Sep 2025 18:15:36 -0400 Subject: [PATCH 06/12] Prevent failure --- .github/workflows/ccpp32alpine.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ccpp32alpine.yml b/.github/workflows/ccpp32alpine.yml index 6021a210382f..cac9b281fbe4 100644 --- a/.github/workflows/ccpp32alpine.yml +++ b/.github/workflows/ccpp32alpine.yml @@ -111,7 +111,7 @@ jobs: - name: Test Hack run: | cd gccrs-build; \ - gdb --batch -ex run -ex bt --args gcc/crab1 -frust-debug -frust-incomplete-and-experimental-compiler-do-not-use ../gcc/testsuite/rust/execute/torture/issue-1232.rs 1>gcc/testsuite/rust/hack_log_1 2>gcc/testsuite/rust/hack_log_2 + gdb --batch -ex run -ex bt --args gcc/crab1 -frust-debug -frust-incomplete-and-experimental-compiler-do-not-use ../gcc/testsuite/rust/execute/torture/issue-1232.rs 1>gcc/testsuite/rust/hack_log_1 2>gcc/testsuite/rust/hack_log_2 || true shell: alpine.sh {0} - name: Archive check-rust results From 54d6624294a8c77b15f46ed8ac66b856da9a5cf2 Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Tue, 2 Sep 2025 19:06:06 -0400 Subject: [PATCH 07/12] Install bash --- .github/workflows/ccpp32alpine.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ccpp32alpine.yml b/.github/workflows/ccpp32alpine.yml index cac9b281fbe4..227cf25f3e23 100644 --- a/.github/workflows/ccpp32alpine.yml +++ b/.github/workflows/ccpp32alpine.yml @@ -45,6 +45,7 @@ jobs: libc++-dev cargo gdb + bash # - name: Install gcc dependency # run: | From ae3fb3a531f4911d2864aee307a95dc17bea27db Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Tue, 2 Sep 2025 19:48:38 -0400 Subject: [PATCH 08/12] Improve more --- .github/workflows/ccpp32alpine.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ccpp32alpine.yml b/.github/workflows/ccpp32alpine.yml index 227cf25f3e23..2a72b71a88c1 100644 --- a/.github/workflows/ccpp32alpine.yml +++ b/.github/workflows/ccpp32alpine.yml @@ -68,6 +68,8 @@ jobs: --host=i586-alpine-linux-musl --build=i586-alpine-linux-musl --target=i586-alpine-linux-musl \ --enable-languages=rust \ --disable-bootstrap \ + CFLAGS="-ggdb -Og" \ + CXXFLAGS="-ggdb -Og" \ --disable-multilib # Try to disable multilib on alpine https://github.com/conan-io/conan/issues/14307#issuecomment-1652433132 shell: alpine.sh {0} @@ -112,7 +114,7 @@ jobs: - name: Test Hack run: | cd gccrs-build; \ - gdb --batch -ex run -ex bt --args gcc/crab1 -frust-debug -frust-incomplete-and-experimental-compiler-do-not-use ../gcc/testsuite/rust/execute/torture/issue-1232.rs 1>gcc/testsuite/rust/hack_log_1 2>gcc/testsuite/rust/hack_log_2 || true + gdb --batch -ex run -ex bt --args gcc/crab1 -frust-debug -frust-incomplete-and-experimental-compiler-do-not-use -O2 ../gcc/testsuite/rust/execute/torture/issue-1232.rs 1>gcc/testsuite/rust/hack_log_1 2>gcc/testsuite/rust/hack_log_2 || true shell: alpine.sh {0} - name: Archive check-rust results From 693375d27b3d3cceb93ced907553939c600bf394 Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Tue, 2 Sep 2025 21:21:16 -0400 Subject: [PATCH 09/12] Increase optimization --- .github/workflows/ccpp32alpine.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ccpp32alpine.yml b/.github/workflows/ccpp32alpine.yml index 2a72b71a88c1..83160326dde6 100644 --- a/.github/workflows/ccpp32alpine.yml +++ b/.github/workflows/ccpp32alpine.yml @@ -68,8 +68,8 @@ jobs: --host=i586-alpine-linux-musl --build=i586-alpine-linux-musl --target=i586-alpine-linux-musl \ --enable-languages=rust \ --disable-bootstrap \ - CFLAGS="-ggdb -Og" \ - CXXFLAGS="-ggdb -Og" \ + CFLAGS="-ggdb -O1" \ + CXXFLAGS="-ggdb -O1" \ --disable-multilib # Try to disable multilib on alpine https://github.com/conan-io/conan/issues/14307#issuecomment-1652433132 shell: alpine.sh {0} From 2cf84ffd12f9b6ad4369b5b770276873c92fb397 Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Tue, 2 Sep 2025 22:19:44 -0400 Subject: [PATCH 10/12] Enable -O2 --- .github/workflows/ccpp32alpine.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ccpp32alpine.yml b/.github/workflows/ccpp32alpine.yml index 83160326dde6..da9bf6671b40 100644 --- a/.github/workflows/ccpp32alpine.yml +++ b/.github/workflows/ccpp32alpine.yml @@ -68,8 +68,8 @@ jobs: --host=i586-alpine-linux-musl --build=i586-alpine-linux-musl --target=i586-alpine-linux-musl \ --enable-languages=rust \ --disable-bootstrap \ - CFLAGS="-ggdb -O1" \ - CXXFLAGS="-ggdb -O1" \ + CFLAGS="-ggdb -O2" \ + CXXFLAGS="-ggdb -O2" \ --disable-multilib # Try to disable multilib on alpine https://github.com/conan-io/conan/issues/14307#issuecomment-1652433132 shell: alpine.sh {0} From c6d1630dcedd68ea8e27ffce0f03ea9354a3d8f4 Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Tue, 2 Sep 2025 23:02:07 -0400 Subject: [PATCH 11/12] Use more flags --- .github/workflows/ccpp32alpine.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ccpp32alpine.yml b/.github/workflows/ccpp32alpine.yml index da9bf6671b40..b881a3bb7683 100644 --- a/.github/workflows/ccpp32alpine.yml +++ b/.github/workflows/ccpp32alpine.yml @@ -114,7 +114,7 @@ jobs: - name: Test Hack run: | cd gccrs-build; \ - gdb --batch -ex run -ex bt --args gcc/crab1 -frust-debug -frust-incomplete-and-experimental-compiler-do-not-use -O2 ../gcc/testsuite/rust/execute/torture/issue-1232.rs 1>gcc/testsuite/rust/hack_log_1 2>gcc/testsuite/rust/hack_log_2 || true + gdb --batch -ex run -ex bt --args gcc/crab1 -frust-debug -frust-incomplete-and-experimental-compiler-do-not-use -O2 -m32 -lm -fdiagnostics-plain-output ../gcc/testsuite/rust/execute/torture/issue-1232.rs 1>gcc/testsuite/rust/hack_log_1 2>gcc/testsuite/rust/hack_log_2 || true shell: alpine.sh {0} - name: Archive check-rust results From ed744f674f8c14d58d0e333ded1787c52c80be26 Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Tue, 2 Sep 2025 23:41:32 -0400 Subject: [PATCH 12/12] Remove driver-only flag --- .github/workflows/ccpp32alpine.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ccpp32alpine.yml b/.github/workflows/ccpp32alpine.yml index b881a3bb7683..37e672f7d4ba 100644 --- a/.github/workflows/ccpp32alpine.yml +++ b/.github/workflows/ccpp32alpine.yml @@ -114,7 +114,7 @@ jobs: - name: Test Hack run: | cd gccrs-build; \ - gdb --batch -ex run -ex bt --args gcc/crab1 -frust-debug -frust-incomplete-and-experimental-compiler-do-not-use -O2 -m32 -lm -fdiagnostics-plain-output ../gcc/testsuite/rust/execute/torture/issue-1232.rs 1>gcc/testsuite/rust/hack_log_1 2>gcc/testsuite/rust/hack_log_2 || true + gdb --batch -ex run -ex bt --args gcc/crab1 -frust-debug -frust-incomplete-and-experimental-compiler-do-not-use -O2 -m32 -fdiagnostics-plain-output ../gcc/testsuite/rust/execute/torture/issue-1232.rs 1>gcc/testsuite/rust/hack_log_1 2>gcc/testsuite/rust/hack_log_2 || true shell: alpine.sh {0} - name: Archive check-rust results