+2011-01-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * dwarf2out.c (rtl_for_decl_init): Strip no-op conversions off the
+ initializer. Skip view conversions from aggregate types.
+
2011-01-04 Kai Tietz <kai.tietz@onevision.com>
PR bootstrap/47055
{
rtx rtl = NULL_RTX;
+ STRIP_NOPS (init);
+
/* If a variable is initialized with a string constant without embedded
zeros, build CONST_STRING. */
if (TREE_CODE (init) == STRING_CST && TREE_CODE (type) == ARRAY_TYPE)
}
/* Other aggregates, and complex values, could be represented using
CONCAT: FIXME! */
- else if (AGGREGATE_TYPE_P (type) || TREE_CODE (type) == COMPLEX_TYPE)
+ else if (AGGREGATE_TYPE_P (type)
+ || (TREE_CODE (init) == VIEW_CONVERT_EXPR
+ && AGGREGATE_TYPE_P (TREE_TYPE (TREE_OPERAND (init, 0))))
+ || TREE_CODE (type) == COMPLEX_TYPE)
;
/* Vectors only work if their mode is supported by the target.
FIXME: generic vectors ought to work too. */
+2011-01-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/unchecked_convert8.ad[sb]: New test.
+
2011-01-04 Janus Weil <janus@gcc.gnu.org>
PR fortran/46448
--- /dev/null
+-- { dg-do compile }
+-- { dg-options "-g -O" }
+
+with Ada.Unchecked_Conversion;
+
+package body Unchecked_Convert8 is
+
+ type T1 is range 0 .. 255;
+
+ type T2 is
+ record
+ A : T1;
+ B : T1;
+ end record;
+
+ for T2 use
+ record
+ A at 0 range 0 .. 7;
+ B at 1 range 0 .. 7;
+ end record;
+
+ for T2'Size use 16;
+
+ type T3 is range 0 .. (2**16 - 1);
+ for T3'Size use 16;
+
+ function T2_TO_T3 is
+ new Ada.Unchecked_Conversion (Source => T2, Target => T3);
+
+ C : constant T3 := T2_TO_T3 (S => (A => 0, B => 0));
+
+ procedure Dummy is begin null; end;
+
+end Unchecked_Convert8;
--- /dev/null
+package Unchecked_Convert8 is
+
+ procedure Dummy;
+
+end Unchecked_Convert8;