https://gcc.gnu.org/g:0902cdb6069c12a027a1d0cfd1b7a0daa1a21b5c

commit r14-11758-g0902cdb6069c12a027a1d0cfd1b7a0daa1a21b5c
Author: Richard Biener <rguent...@suse.de>
Date:   Mon Sep 30 09:07:36 2024 +0200

    tree-optimization/113197 - bougs assert in PTA
    
    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.
    
    (cherry picked from commit 02f4efe3c12cf7ef54e5a71b11044c15be5c7fab)

Diff:
---
 gcc/testsuite/gcc.dg/lto/pr113197_0.c | 15 +++++++++++++++
 gcc/testsuite/gcc.dg/lto/pr113197_1.c |  3 +++
 gcc/tree-ssa-structalias.cc           |  1 -
 3 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/gcc/testsuite/gcc.dg/lto/pr113197_0.c 
b/gcc/testsuite/gcc.dg/lto/pr113197_0.c
new file mode 100644
index 000000000000..293c8207dee0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/pr113197_0.c
@@ -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
index 000000000000..30bf6f7e7c5d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/pr113197_1.c
@@ -0,0 +1,3 @@
+int a;
+void exit_error();
+void register_dccp() { exit_error(a); }
diff --git a/gcc/tree-ssa-structalias.cc b/gcc/tree-ssa-structalias.cc
index c6e3361d9e19..b6a5de1a8f6b 100644
--- a/gcc/tree-ssa-structalias.cc
+++ b/gcc/tree-ssa-structalias.cc
@@ -4117,7 +4117,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.  */

Reply via email to