aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2019-01-18 08:41:05 +0100
committerMartin Liska <marxin@gcc.gnu.org>2019-01-18 07:41:05 +0000
commit5928bc2ec06dd4e7b5bd77a5915eb268f7bd5619 (patch)
tree955050e3061a8b77e44e226b4d69eb3cde827502 /gcc/tree-inline.c
parent9c83c58712c72024b893aac5fb0edc597fa583f2 (diff)
downloadgcc-5928bc2ec06dd4e7b5bd77a5915eb268f7bd5619.zip
gcc-5928bc2ec06dd4e7b5bd77a5915eb268f7bd5619.tar.gz
gcc-5928bc2ec06dd4e7b5bd77a5915eb268f7bd5619.tar.bz2
Reset proper type on vector types (PR middle-end/88587).
2019-01-18 Martin Liska <mliska@suse.cz> Richard Biener <rguenther@suse.de> PR middle-end/88587 * cgraph.h (create_version_clone_with_body): Add new argument with attributes. * cgraphclones.c (cgraph_node::create_version_clone): Add DECL_ATTRIBUTES to a newly created decl. And call valid_attribute_p so that proper cl_target_optimization_node is set for the newly created declaration. * multiple_target.c (create_target_clone): Set DECL_ATTRIBUTES for declaration. (expand_target_clones): Do not call valid_attribute_p, it must be already done. * tree-inline.c (copy_decl_for_dup_finish): Reset mode for vector types. 2019-01-18 Martin Liska <mliska@suse.cz> PR middle-end/88587 * g++.target/i386/pr88587.C: New test. * gcc.target/i386/mvc13.c: New test. Co-Authored-By: Richard Biener <rguenther@suse.de> From-SVN: r268060
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r--gcc/tree-inline.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 8862077..1c2766d 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -5479,6 +5479,10 @@ copy_decl_for_dup_finish (copy_body_data *id, tree decl, tree copy)
if (CODE_CONTAINS_STRUCT (TREE_CODE (copy), TS_DECL_WRTL)
&& !TREE_STATIC (copy) && !DECL_EXTERNAL (copy))
SET_DECL_RTL (copy, 0);
+ /* For vector typed decls make sure to update DECL_MODE according
+ to the new function context. */
+ if (VECTOR_TYPE_P (TREE_TYPE (copy)))
+ SET_DECL_MODE (copy, TYPE_MODE (TREE_TYPE (copy)));
/* These args would always appear unused, if not for this. */
TREE_USED (copy) = 1;