[Bug rust/116187] -Wuninitialized warnings in libgrust/libproc_macro_internal/literal.cc

2025-03-25 Thread sjames at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116187

Sam James  changed:

   What|Removed |Added

   Last reconfirmed||2025-3-25

--- Comment #1 from Sam James  ---
I thought I'd seen a change fixing this but it looks like no. I can still
reproduce it on trunk.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

[Bug rust/116427] [15 regression] 32-bit crab1 fails to link on Solaris

2025-03-25 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116427

Richard Biener  changed:

   What|Removed |Added

   Priority|P3  |P4

-- 
You are receiving this mail because:
You are on the CC list for the bug.

[COMMITTED 082/146] gccrs: parser: Add testcases for multiline strings

2025-03-25 Thread arthur . cohen
From: Arthur Cohen 

Regression checks for Rust-GCC#1399

gcc/testsuite/ChangeLog:

* rust/compile/multiline-string.rs: New test.
* rust/execute/torture/multiline-string.rs: New test.
---
 gcc/testsuite/rust/compile/multiline-string.rs| 14 ++
 .../rust/execute/torture/multiline-string.rs  | 15 +++
 2 files changed, 29 insertions(+)
 create mode 100644 gcc/testsuite/rust/compile/multiline-string.rs
 create mode 100644 gcc/testsuite/rust/execute/torture/multiline-string.rs

diff --git a/gcc/testsuite/rust/compile/multiline-string.rs 
b/gcc/testsuite/rust/compile/multiline-string.rs
new file mode 100644
index 000..fcd6fa812ed
--- /dev/null
+++ b/gcc/testsuite/rust/compile/multiline-string.rs
@@ -0,0 +1,14 @@
+fn main() {
+let _a = "gcc
+
+rs";
+
+let _b = "rust
+
+c
+gcc
+
+
+
+rs";
+}
diff --git a/gcc/testsuite/rust/execute/torture/multiline-string.rs 
b/gcc/testsuite/rust/execute/torture/multiline-string.rs
new file mode 100644
index 000..4d22f991ad3
--- /dev/null
+++ b/gcc/testsuite/rust/execute/torture/multiline-string.rs
@@ -0,0 +1,15 @@
+// { dg-output "gcc\n\nrs\n" }
+
+extern "C" {
+fn printf(fmt: *const i8, ...);
+}
+
+fn main() -> i32 {
+let a = "gcc
+
+rs\0";
+
+unsafe { printf("%s\n\0" as *const str as *const i8, a as *const str as 
*const i8); }
+
+0
+}
-- 
2.45.2



[COMMITTED 060/146] gccrs: Remove bad assertion in name resolution

2025-03-25 Thread arthur . cohen
From: Philip Herron 

This was a handy debug assertion but only works for valid rust code. This
needs to handle the case where the type is not resolved which is a valid
case.

Fixes Rust-GCC#2423

gcc/rust/ChangeLog:

* resolve/rust-ast-resolve-item.cc (ResolveItem::visit): remove 
assertions

gcc/testsuite/ChangeLog:

* rust/compile/nr2/exclude: nr2 can't handle this
* rust/compile/issue-2423.rs: New test.

Signed-off-by: Philip Herron 
---
 gcc/rust/resolve/rust-ast-resolve-item.cc | 30 ++-
 gcc/testsuite/rust/compile/issue-2423.rs  | 14 +++
 gcc/testsuite/rust/compile/nr2/exclude|  1 +
 3 files changed, 39 insertions(+), 6 deletions(-)
 create mode 100644 gcc/testsuite/rust/compile/issue-2423.rs

diff --git a/gcc/rust/resolve/rust-ast-resolve-item.cc 
b/gcc/rust/resolve/rust-ast-resolve-item.cc
index 2861fb94d9f..245523ae5aa 100644
--- a/gcc/rust/resolve/rust-ast-resolve-item.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-item.cc
@@ -582,7 +582,14 @@ ResolveItem::visit (AST::InherentImpl &impl_block)
   // Setup paths
   CanonicalPath self_cpath = CanonicalPath::create_empty ();
   bool ok = ResolveTypeToCanonicalPath::go (impl_block.get_type (), 
self_cpath);
-  rust_assert (ok);
+  if (!ok)
+{
+  resolver->get_name_scope ().pop ();
+  resolver->get_type_scope ().pop ();
+  resolver->get_label_scope ().pop ();
+  return;
+}
+
   rust_debug ("AST::InherentImpl resolve Self: {%s}",
  self_cpath.get ().c_str ());
 
@@ -671,12 +678,17 @@ ResolveItem::visit (AST::TraitImpl &impl_block)
   return;
 }
 
-  bool ok;
   // setup paths
   CanonicalPath canonical_trait_type = CanonicalPath::create_empty ();
-  ok = ResolveTypeToCanonicalPath::go (impl_block.get_trait_path (),
-  canonical_trait_type);
-  rust_assert (ok);
+  bool ok = ResolveTypeToCanonicalPath::go (impl_block.get_trait_path (),
+   canonical_trait_type);
+  if (!ok)
+{
+  resolver->get_name_scope ().pop ();
+  resolver->get_type_scope ().pop ();
+  resolver->get_label_scope ().pop ();
+  return;
+}
 
   rust_debug ("AST::TraitImpl resolve trait type: {%s}",
  canonical_trait_type.get ().c_str ());
@@ -684,7 +696,13 @@ ResolveItem::visit (AST::TraitImpl &impl_block)
   CanonicalPath canonical_impl_type = CanonicalPath::create_empty ();
   ok = ResolveTypeToCanonicalPath::go (impl_block.get_type (),
   canonical_impl_type);
-  rust_assert (ok);
+  if (!ok)
+{
+  resolver->get_name_scope ().pop ();
+  resolver->get_type_scope ().pop ();
+  resolver->get_label_scope ().pop ();
+  return;
+}
 
   rust_debug ("AST::TraitImpl resolve self: {%s}",
  canonical_impl_type.get ().c_str ());
diff --git a/gcc/testsuite/rust/compile/issue-2423.rs 
b/gcc/testsuite/rust/compile/issue-2423.rs
new file mode 100644
index 000..ae7897c1170
--- /dev/null
+++ b/gcc/testsuite/rust/compile/issue-2423.rs
@@ -0,0 +1,14 @@
+impl NonExistant {
+// { dg-error "failed to resolve" "" { target *-*-* } .-1 }
+fn test() {}
+}
+
+impl NotFound for NonExistant {
+// { dg-error "failed to resolve" "" { target *-*-* } .-1 }
+fn test() {}
+}
+
+trait A {}
+
+impl A for NotFound {}
+// { dg-error "failed to resolve" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/rust/compile/nr2/exclude 
b/gcc/testsuite/rust/compile/nr2/exclude
index 00ac704fec2..bf4506f25d2 100644
--- a/gcc/testsuite/rust/compile/nr2/exclude
+++ b/gcc/testsuite/rust/compile/nr2/exclude
@@ -206,4 +206,5 @@ issue-1773.rs
 issue-2905-1.rs
 issue-2905-2.rs
 issue-2907.rs
+issue-2423.rs
 # please don't delete the trailing newline
-- 
2.45.2