aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgexpand.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cfgexpand.c')
-rw-r--r--gcc/cfgexpand.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 2f38bb4..bd21169 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -3354,9 +3354,22 @@ expand_debug_expr (tree exp)
return op0;
case VECTOR_CST:
- exp = build_constructor_from_list (TREE_TYPE (exp),
- TREE_VECTOR_CST_ELTS (exp));
- /* Fall through. */
+ {
+ unsigned i;
+
+ op0 = gen_rtx_CONCATN
+ (mode, rtvec_alloc (TYPE_VECTOR_SUBPARTS (TREE_TYPE (exp))));
+
+ for (i = 0; i < VECTOR_CST_NELTS (exp); ++i)
+ {
+ op1 = expand_debug_expr (VECTOR_CST_ELT (exp, i));
+ if (!op1)
+ return NULL;
+ XVECEXP (op0, 0, i) = op1;
+ }
+
+ return op0;
+ }
case CONSTRUCTOR:
if (TREE_CLOBBER_P (exp))