Fix PR middle-end/44843
diff mbox

Message ID
State New
Headers show

Commit Message

Eric Botcazou July 8, 2010, 8:03 p.m. UTC
As diagnosed by Richard G, there is a wrong assumption in the code handling 
MEM_REF in set_mem_attributes_minus_bitpos.  This replaces it with a much 
less wrong assumption, as suggested by Richard.

Tested on SPARC/Solaris and SPARC64/Solaris, applied on the mainline.

2010-07-08  Eric Botcazou  <>

	PR middle-end/44843
	* emit-rtl.c (set_mem_attributes_minus_bitpos): Do not rely on the
	pointed-to type of the offset in a MEM_REF to compute the alignment.

2010-07-08  Mikael Pettersson  <>

	* gcc.c-torture/execute/20100708-1.c: New test.

diff mbox

Index: emit-rtl.c
--- emit-rtl.c	(revision 161961)
+++ emit-rtl.c	(working copy)
@@ -1634,10 +1634,9 @@  set_mem_attributes_minus_bitpos (rtx ref
-	/* This technically isn't correct.  We can't really derive
-	   alignment information from types.  */
-	align = MAX (align,
+	/* ??? This isn't fully correct, we can't set the alignment from the
+	   type in all cases.  */
+	align = MAX (align, TYPE_ALIGN (type));
       if (!integer_zerop (TREE_OPERAND (t, 1)) && aoff < align)
 	align = aoff;