diff mbox

[Ada] Assertion to detect conflicting alignments in renaming

Message ID 201112111138.26948.ebotcazou@adacore.com
State New
Headers show

Commit Message

Eric Botcazou Dec. 11, 2011, 10:38 a.m. UTC
As suggested by Robert, it would be valuable to have an assertion in gigi to 
detect conflicting alignments in renaming, i.e. when an alignment value set on 
the renaming cannot be honored because the renamed object isn't sufficiently 
aligned.

Tested on i586-suse-linux, applied on the mainline.


2011-12-11  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: If there is an
	alignment set on a renaming, assert that the renamed object is aligned
	enough as to make it possible to honor it.
diff mbox

Patch

Index: gcc-interface/decl.c
===================================================================
--- gcc-interface/decl.c	(revision 182102)
+++ gcc-interface/decl.c	(working copy)
@@ -1008,6 +1008,17 @@  gnat_to_gnu_entity (Entity_Id gnat_entit
 			saved = true;
 			annotate_object (gnat_entity, gnu_type, NULL_TREE,
 					 false, false);
+			/* This assertion will fail if the renamed object
+			   isn't aligned enough as to make it possible to
+			   honor the alignment set on the renaming.  */
+			if (align)
+			  {
+			    unsigned int renamed_align
+			      = DECL_P (gnu_decl)
+				? DECL_ALIGN (gnu_decl)
+				: TYPE_ALIGN (TREE_TYPE (gnu_decl));
+			    gcc_assert (renamed_align >= align);
+			  }
 			break;
 		      }