diff options
author | V3n3RiX <venerix@koprulu.sector> | 2023-04-17 17:53:10 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2023-04-17 17:53:10 +0100 |
commit | 6fe0a08604ce763398dcbeb5fc63d814110f0748 (patch) | |
tree | a7ea485084252374fc73b266db2d904813f5efa5 /sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109469-SLP-returns-twice.patch | |
parent | 58129875a70f3975f864c0c1e322fe85967688b5 (diff) |
gentoo auto-resync : 17:04:2023 - 17:53:10
Diffstat (limited to 'sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109469-SLP-returns-twice.patch')
-rw-r--r-- | sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109469-SLP-returns-twice.patch | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109469-SLP-returns-twice.patch b/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109469-SLP-returns-twice.patch deleted file mode 100644 index 7d45c9e60af8..000000000000 --- a/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109469-SLP-returns-twice.patch +++ /dev/null @@ -1,66 +0,0 @@ -https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109469 -https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=2d7ad38707e1fd71193d440198cc0726092b9015 - -From 2d7ad38707e1fd71193d440198cc0726092b9015 Mon Sep 17 00:00:00 2001 -From: Richard Biener <rguenther@suse.de> -Date: Tue, 11 Apr 2023 16:06:12 +0200 -Subject: [PATCH] tree-optimization/109469 - SLP with returns-twice region - start - -The following avoids an SLP region starting with a returns-twice -call where we cannot insert stmts at the head. - - PR tree-optimization/109469 - * tree-vect-slp.cc (vect_slp_function): Skip region starts with - a returns-twice call. - - * gcc.dg/torture/pr109469.c: New testcase. ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/torture/pr109469.c -@@ -0,0 +1,15 @@ -+/* { dg-do compile } */ -+ -+__attribute__((returns_twice)) int foo(); -+ -+struct xio myproc; -+struct xio { -+ void (*read_proc)(); -+ void (*write_proc)(); -+}; -+ -+void dummy_write_proc() { -+ switch (foo()) -+ default: -+ myproc.read_proc = myproc.write_proc = dummy_write_proc; -+} ---- a/gcc/tree-vect-slp.cc -+++ b/gcc/tree-vect-slp.cc -@@ -7671,10 +7671,23 @@ vect_slp_function (function *fun) - { - r |= vect_slp_bbs (bbs, NULL); - bbs.truncate (0); -- bbs.quick_push (bb); - } -- else -- bbs.safe_push (bb); -+ -+ /* We need to be able to insert at the head of the region which -+ we cannot for region starting with a returns-twice call. */ -+ if (bbs.is_empty ()) -+ if (gcall *first = safe_dyn_cast <gcall *> (first_stmt (bb))) -+ if (gimple_call_flags (first) & ECF_RETURNS_TWICE) -+ { -+ if (dump_enabled_p ()) -+ dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, -+ "skipping bb%d as start of region as it " -+ "starts with returns-twice call\n", -+ bb->index); -+ continue; -+ } -+ -+ bbs.safe_push (bb); - - /* When we have a stmt ending this block and defining a - value we have to insert on edges when inserting after it for --- -2.31.1 |