]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-optimization/113197 - bougs assert in PTA
authorRichard Biener <rguenther@suse.de>
Mon, 30 Sep 2024 07:07:36 +0000 (09:07 +0200)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 2 Oct 2024 10:56:02 +0000 (12:56 +0200)
PTA asserts that EAF_NO_DIRECT_READ is not set when flags are
set consistently which doesn't make sense.  The following removes
the assert.

PR tree-optimization/113197
* tree-ssa-structalias.cc (handle_call_arg): Remove bougs
assert.

* gcc.dg/lto/pr113197_0.c: New testcase.
* gcc.dg/lto/pr113197_1.c: Likewise.

gcc/testsuite/gcc.dg/lto/pr113197_0.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/lto/pr113197_1.c [new file with mode: 0644]
gcc/tree-ssa-structalias.cc

diff --git a/gcc/testsuite/gcc.dg/lto/pr113197_0.c b/gcc/testsuite/gcc.dg/lto/pr113197_0.c
new file mode 100644 (file)
index 0000000..293c820
--- /dev/null
@@ -0,0 +1,15 @@
+/* { dg-lto-do link } */
+/* { dg-lto-options { { -O -flto -fpie } } } */
+/* { dg-extra-ld-options { -r -nostdlib -flinker-output=nolto-rel } } */
+
+enum a { b } register_dccp();
+void c();
+void __attribute__((noreturn)) exit_error(enum a d) {
+  __builtin_va_list va;
+  __builtin_va_end(va);
+  if (d)
+    c();
+  c();
+  __builtin_exit(1);
+}
+int main() { register_dccp(); }
diff --git a/gcc/testsuite/gcc.dg/lto/pr113197_1.c b/gcc/testsuite/gcc.dg/lto/pr113197_1.c
new file mode 100644 (file)
index 0000000..30bf6f7
--- /dev/null
@@ -0,0 +1,3 @@
+int a;
+void exit_error();
+void register_dccp() { exit_error(a); }
index 54c4818998d84a990b7e52b80258198e2646bf47..73ba5aa6195c7e396155fc59ff182e87f5c72fbb 100644 (file)
@@ -4194,7 +4194,6 @@ handle_call_arg (gcall *stmt, tree arg, vec<ce_s> *results, int flags,
     {
       make_transitive_closure_constraints (tem);
       callarg_transitive = true;
-      gcc_checking_assert (!(flags & EAF_NO_DIRECT_READ));
     }
 
   /* If necessary, produce varinfo for indirect accesses to ARG.  */