+2019-01-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * cgraphunit.c (cgraph_node::expand_thunk): When expanding a GIMPLE
+ thunk that returns by reference, use the type of the return object
+ of the thunk instead of that of the alias to build the dereference.
+
2019-01-23 Vineet Gupta <vgupta@synopsys.com>
* config/arc/atomic.md: Add operand to DMB instruction.
restmp = gimple_fold_indirect_ref (resdecl);
if (!restmp)
restmp = build2 (MEM_REF,
- TREE_TYPE (TREE_TYPE (DECL_RESULT (alias))),
+ TREE_TYPE (TREE_TYPE (resdecl)),
resdecl,
- build_int_cst (TREE_TYPE
- (DECL_RESULT (alias)), 0));
+ build_int_cst (TREE_TYPE (resdecl), 0));
}
else if (!is_gimple_reg_type (restype))
{
+2019-01-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/specs/opt4.ads: New test.
+
2019-01-23 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/88964
--- /dev/null
+-- { dg-do compile }
+-- { dg-options "-O" }
+
+package Opt4 is
+
+ type Rec (D : Boolean := False) is record
+ case D is
+ when False => null;
+ when True => I : Integer;
+ end case;
+ end record;
+
+ Null_Rec : constant Rec := (D => False);
+
+ type I1 is limited interface;
+
+ type I2 is limited interface;
+
+ function Func (Data : I2) return Rec is abstract;
+
+ type Ext is limited new I1 and I2 with null record;
+
+ overriding function Func (Data : Ext) return Rec is (Null_Rec);
+
+end Opt4;