diff gcc/testsuite/gcc.dg/torture/pr57359-2.c @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/gcc.dg/torture/pr57359-2.c	Mon May 25 07:50:57 2020 +0900
@@ -0,0 +1,30 @@
+/* { dg-do run } */
+/* { dg-additional-options "-fstrict-aliasing" } */
+
+extern void abort();
+
+typedef int A;
+typedef float B;
+
+void __attribute__((noipa))
+foo(A * p, B *r, long unk, long oh)
+{
+  for (long i = 0; i < unk; ++i) {
+      *p = 1;
+      *r = 2;
+      if (oh & i)
+	break;
+      *r = 3;
+      *p = 4;
+  }
+}
+
+int main(void)
+{
+  union { A x; B f; } u;
+  foo(&u.x, &u.f, 1, 1);
+  if (u.x != 4) abort();
+  foo(&u.x, &u.f, 2, 1);
+  if (u.f != 2) abort ();
+  return 0;
+}