diff --git a/ices/97484.rs b/ices/97484.rs
new file mode 100644
index 00000000..15d16314
--- /dev/null
+++ b/ices/97484.rs
@@ -0,0 +1,13 @@
+struct A;
+struct B;
+struct C;
+struct D;
+struct E;
+struct F;
+struct G;
+
+fn foo(a: &A, d: D, e: &E, g: G) {}
+
+fn main() {
+    foo(&&A, B, C, D, E, F, G);
+}
diff --git a/ices/97490.rs b/ices/97490.rs
new file mode 100644
index 00000000..76553eab
--- /dev/null
+++ b/ices/97490.rs
@@ -0,0 +1,8 @@
+pub type Yes = extern "sysv64" fn(&'static u8) -> !;
+
+fn main() {
+    unsafe {
+        let yes = &6 as *const _ as *const Yes;
+        core::arch::asm!("call {}", in(reg) yes, options(noreturn));
+    }
+}
diff --git a/ices/97491.rs b/ices/97491.rs
new file mode 100644
index 00000000..0a468e25
--- /dev/null
+++ b/ices/97491.rs
@@ -0,0 +1,22 @@
+use std::ops::Sub;
+
+trait Vector2 {
+    type ScalarType;
+    fn from_values(x: Self::ScalarType, y: Self::ScalarType) -> Self
+    where Self: Sized;
+    fn x(&self) -> Self::ScalarType;
+    fn y(&self) -> Self::ScalarType;
+}
+
+impl<T> Sub for dyn Vector2<ScalarType=T>
+where T: Sub<Output=T>,
+(dyn Vector2<ScalarType=T>): Sized{
+    type Output = dyn Vector2<ScalarType=T>;
+    fn sub(self, rhs: Self) -> Self::Output {
+        Self::from_values(self.x()-rhs.x(), self.y() - rhs.y())
+    }
+}
+
+fn main() {
+    
+}
diff --git a/ices/97501.rs b/ices/97501.rs
new file mode 100644
index 00000000..aec4938a
--- /dev/null
+++ b/ices/97501.rs
@@ -0,0 +1,20 @@
+#![feature(core_intrinsics)]
+use std::intrinsics::wrapping_add;
+
+#[derive(Clone, Copy)]
+struct WrapInt8 {
+    value: u8
+}
+
+impl std::ops::Add for WrapInt8 {
+    type Output = WrapInt8;
+    fn add(self, other: WrapInt8) -> WrapInt8 {
+        wrapping_add(self, other)
+    }
+}
+
+fn main() {
+    let p = WrapInt8 { value: 123 };
+    let q = WrapInt8 { value: 234 };
+    println!("{}", (p + q).value);
+}