summaryrefslogtreecommitdiff
path: root/sys-devel/gcc/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-04-05 05:24:13 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-04-05 05:24:13 +0100
commit6de28447d66e6c47ee682740b840cdb67244d4b1 (patch)
tree382b94d5f61bc727e86d8d8df99540eb1da88953 /sys-devel/gcc/files
parent3b4ca161c9d7f5a66a93191da2c9ec02dbdde1b7 (diff)
gentoo auto-resync : 05:04:2023 - 05:24:13
Diffstat (limited to 'sys-devel/gcc/files')
-rw-r--r--sys-devel/gcc/files/gcc-13.0.1_pre20230402-PR109304-ICE-python3.12.patch72
1 files changed, 72 insertions, 0 deletions
diff --git a/sys-devel/gcc/files/gcc-13.0.1_pre20230402-PR109304-ICE-python3.12.patch b/sys-devel/gcc/files/gcc-13.0.1_pre20230402-PR109304-ICE-python3.12.patch
new file mode 100644
index 000000000000..8b6baea37b70
--- /dev/null
+++ b/sys-devel/gcc/files/gcc-13.0.1_pre20230402-PR109304-ICE-python3.12.patch
@@ -0,0 +1,72 @@
+https://bugs.gentoo.org/903245
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109304
+https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=d0b961b802dd7d9d555ff4515835a479329326e9
+
+From d0b961b802dd7d9d555ff4515835a479329326e9 Mon Sep 17 00:00:00 2001
+From: Richard Biener <rguenther@suse.de>
+Date: Tue, 28 Mar 2023 08:06:12 +0000
+Subject: [PATCH] tree-optimization/109304 - properly handle instrumented
+ aliases
+
+When adjusting calls to reflect instrumentation we failed to handle
+calls to aliases since they appear to have no body. Instead resort
+to symtab node availability. The patch also avoids touching
+internal function calls in a more obvious way (builtins might
+have a body available).
+
+profiledbootstrap & regtest running on x86_64-unknown-linux-gnu.
+
+Honza - does this look OK?
+
+ PR tree-optimization/109304
+ * tree-profile.cc (tree_profiling): Use symtab node
+ availability to decide whether to skip adjusting calls.
+ Do not adjust calls to internal functions.
+
+ * gcc.dg/pr109304.c: New testcase.
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/pr109304.c
+@@ -0,0 +1,12 @@
++/* { dg-do compile } */
++/* { dg-require-profiling "-fprofile-generate" } */
++/* { dg-require-effective-target fpic } */
++/* { dg-options "-O3 -fprofile-generate -fPIC -fno-semantic-interposition" } */
++
++int PyUnicode_FindChar_i;
++int PyUnicode_FindChar()
++{
++ while (PyUnicode_FindChar_i)
++ if (PyUnicode_FindChar())
++ break;
++}
+--- a/gcc/tree-profile.cc
++++ b/gcc/tree-profile.cc
+@@ -808,7 +808,7 @@ tree_profiling (void)
+ {
+ if (!gimple_has_body_p (node->decl)
+ || !(!node->clone_of
+- || node->decl != node->clone_of->decl))
++ || node->decl != node->clone_of->decl))
+ continue;
+
+ /* Don't profile functions produced for builtin stuff. */
+@@ -842,12 +842,15 @@ tree_profiling (void)
+ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+ {
+ gcall *call = dyn_cast <gcall *> (gsi_stmt (gsi));
+- if (!call)
++ if (!call || gimple_call_internal_p (call))
+ continue;
+
+ /* We do not clear pure/const on decls without body. */
+ tree fndecl = gimple_call_fndecl (call);
+- if (fndecl && !gimple_has_body_p (fndecl))
++ cgraph_node *callee;
++ if (fndecl
++ && (callee = cgraph_node::get (fndecl))
++ && callee->get_availability (node) == AVAIL_NOT_AVAILABLE)
+ continue;
+
+ /* Drop the const attribute from the call type (the pure
+--
+2.31.1