[gcc r17-2257] gccrs: turn on can_alias_all on build_pointer_type

Arthur Cohen via Gcc-cvs <[email protected]>
Newsgroups gmane.comp.gcc.cvs
Message-ID <[email protected]>
https://gcc.gnu.org/g:de7fc69d08a863b526440bb94d7aa2697a5d7627

commit r17-2257-gde7fc69d08a863b526440bb94d7aa2697a5d7627
Author: Philip Herron <[email protected]>
Date:   Mon Jun 29 19:59:25 2026 +0100

    gccrs: turn on can_alias_all on build_pointer_type
    
    Rust semantics are that all raw pointers can alias but then we get stronger
    garentees on reference types.
    
    Fixes Rust-GCC#4536
    
    gcc/rust/ChangeLog:
    
            * rust-gcc.cc (pointer_type): turn on can alias
    
    gcc/testsuite/ChangeLog:
    
            * rust/execute/raw-pointer-aliasing.rs: New test.
    
    Signed-off-by: Philip Herron <[email protected]>

Diff:
---
 gcc/rust/rust-gcc.cc                               |  2 +-
 gcc/testsuite/rust/execute/raw-pointer-aliasing.rs | 25 ++++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/gcc/rust/rust-gcc.cc b/gcc/rust/rust-gcc.cc
index ab02bcd556a0..00f35638144e 100644
--- a/gcc/rust/rust-gcc.cc
+++ b/gcc/rust/rust-gcc.cc
@@ -444,7 +444,7 @@ pointer_type (tree to_type)
 {
   if (error_operand_p (to_type))
     return error_mark_node;
-  tree type = build_pointer_type (to_type);
+  tree type = build_pointer_type_for_mode (to_type, VOIDmode, true);
   return type;
 }
 
diff --git a/gcc/testsuite/rust/execute/raw-pointer-aliasing.rs b/gcc/testsuite/rust/execute/raw-pointer-aliasing.rs
new file mode 100644
index 000000000000..d19730b043fb
--- /dev/null
+++ b/gcc/testsuite/rust/execute/raw-pointer-aliasing.rs
@@ -0,0 +1,25 @@
+// { dg-options "-O2" }
+
+#![feature(no_core)]
+#![no_core]
+
+extern "C" {
+    fn malloc(n: u64) -> *mut u8;
+}
+
+fn f() -> i32 {
+    unsafe {
+        let p = malloc(4) as *mut i32;
+        *p = 27;
+        *(p as *mut i16) = 42;
+        *p
+    }
+}
+
+fn main() -> i32 {
+    if f() == 27 {
+        1
+    } else {
+        0
+    }
+}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.