re PR rtl-optimization/77919 (ICE converting DC to V2DF mode)
PR rtl-optimization/77919 * expr.c (expand_expr_real_1) <normal_inner_ref>: Force CONCAT into MEM if mode1 is not a complex mode. * g++.dg/torture/pr77919.C: New test. From-SVN: r241642
This commit is contained in:
parent
0d9e143c62
commit
c19066a769
|
@ -1,5 +1,9 @@
|
|||
2016-10-28 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/77919
|
||||
* expr.c (expand_expr_real_1) <normal_inner_ref>: Force CONCAT into
|
||||
MEM if mode1 is not a complex mode.
|
||||
|
||||
PR rtl-optimization/78132
|
||||
* ree.c (combine_reaching_defs): Give up if copy_needed and
|
||||
!HARD_REGNO_MODE_OK (REGNO (src_reg), dst_mode).
|
||||
|
|
|
@ -10421,7 +10421,8 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode,
|
|||
if (GET_CODE (op0) == CONCAT && !must_force_mem)
|
||||
{
|
||||
if (bitpos == 0
|
||||
&& bitsize == GET_MODE_BITSIZE (GET_MODE (op0)))
|
||||
&& bitsize == GET_MODE_BITSIZE (GET_MODE (op0))
|
||||
&& COMPLEX_MODE_P (mode1))
|
||||
{
|
||||
if (reversep)
|
||||
op0 = flip_storage_order (GET_MODE (op0), op0);
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
2016-10-28 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/77919
|
||||
* g++.dg/torture/pr77919.C: New test.
|
||||
|
||||
PR rtl-optimization/78132
|
||||
* gcc.target/i386/pr78132.c: New test.
|
||||
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
// PR rtl-optimization/77919
|
||||
// { dg-do compile }
|
||||
// { dg-additional-options "-Wno-psabi" }
|
||||
|
||||
struct A { A (double) {} _Complex double i; };
|
||||
typedef int __attribute__ ((vector_size (16))) B;
|
||||
typedef struct { B b; } C;
|
||||
struct D { D (const B &x) : b (x) {} B b; };
|
||||
static inline B foo (const double *x) { C *a; a = (C *) x; return a->b; }
|
||||
static inline D baz (const A &x) { return foo ((double *) &x); }
|
||||
D b = baz (0);
|
Loading…
Reference in New Issue