diff options
author | Andre Vieira <andre.simoesdiasvieira@arm.com> | 2023-10-19 18:26:45 +0100 |
---|---|---|
committer | Andre Vieira <andre.simoesdiasvieira@arm.com> | 2023-10-19 18:26:45 +0100 |
commit | 87d97e26076a131541e8562932248bc24590e38f (patch) | |
tree | c8464f58f97b20d97ad71e47284f0c92fc82c2b5 /gcc | |
parent | 79a50a17409a39759326a494d85dccfd9008a9de (diff) | |
download | gcc-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.cc | 5 |
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); |