aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndre Vieira <andre.simoesdiasvieira@arm.com>2023-10-19 18:26:45 +0100
committerAndre Vieira <andre.simoesdiasvieira@arm.com>2023-10-19 18:26:45 +0100
commit87d97e26076a131541e8562932248bc24590e38f (patch)
treec8464f58f97b20d97ad71e47284f0c92fc82c2b5 /gcc
parent79a50a17409a39759326a494d85dccfd9008a9de (diff)
downloadgcc-87d97e26076a131541e8562932248bc24590e38f.zip
gcc-87d97e26076a131541e8562932248bc24590e38f.tar.gz
gcc-87d97e26076a131541e8562932248bc24590e38f.tar.bz2
parloops: Copy target and optimizations when creating a function clone
SVE simd clones require to be compiled with a SVE target enabled or the argument types will not be created properly. To achieve this we need to copy DECL_FUNCTION_SPECIFIC_TARGET from the original function declaration to the clones. I decided it was probably also a good idea to copy DECL_FUNCTION_SPECIFIC_OPTIMIZATION in case the original function is meant to be compiled with specific optimization options. gcc/ChangeLog: * tree-parloops.cc (create_loop_fn): Copy specific target and optimization options to clone.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-parloops.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/tree-parloops.cc b/gcc/tree-parloops.cc
index e495bbd..a35f3d5 100644
--- a/gcc/tree-parloops.cc
+++ b/gcc/tree-parloops.cc
@@ -2203,6 +2203,11 @@ create_loop_fn (location_t loc)
DECL_CONTEXT (t) = decl;
TREE_USED (t) = 1;
DECL_ARGUMENTS (decl) = t;
+ DECL_FUNCTION_SPECIFIC_TARGET (decl)
+ = DECL_FUNCTION_SPECIFIC_TARGET (act_cfun->decl);
+ DECL_FUNCTION_SPECIFIC_OPTIMIZATION (decl)
+ = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (act_cfun->decl);
+
allocate_struct_function (decl, false);