public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Fix type of SRAed enum accesses
@ 2011-09-27 15:36 Richard Sandiford
  2011-09-27 16:17 ` Richard Guenther
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Richard Sandiford @ 2011-09-27 15:36 UTC (permalink / raw)
  To: gcc-patches; +Cc: Martin Jambor

This patch fixes a miscompilation of stage1 c-parser.o in an ARM bootstrap.
When an access to an enum field was SRAed, a component ref used the type
of the integer temporary variable instead of the type of the enum.
It therefore didn't alias other accesses to the same structure,
and was scheduled after a copy-load.

Tested on x86_64-linux-gnu, and by verifying that c-parser.o is correctly
compiled for ARM after the patch.  Martin says he's going to test on ia64
too (thanks) -- I'll add 50326 to the changelog if that goes OK.

OK to install if there are no regressions on ia64?

Richard


gcc/
	PR middle-end/50386
	* tree-sra.c (build_ref_for_model): Use the type of the field as
	the type of the COMPONENT_REF.

Index: gcc/tree-sra.c
===================================================================
--- gcc/tree-sra.c	2011-09-12 09:09:34.000000000 +0100
+++ gcc/tree-sra.c	2011-09-27 14:09:45.379960167 +0100
@@ -1504,7 +1504,7 @@ build_ref_for_model (location_t loc, tre
       offset -= TREE_INT_CST_LOW (DECL_FIELD_BIT_OFFSET (fld));
       exp_type = TREE_TYPE (TREE_OPERAND (model->expr, 0));
       t = build_ref_for_offset (loc, base, offset, exp_type, gsi, insert_after);
-      return fold_build3_loc (loc, COMPONENT_REF, model->type, t, fld,
+      return fold_build3_loc (loc, COMPONENT_REF, TREE_TYPE (fld), t, fld,
 			      TREE_OPERAND (model->expr, 2));
     }
   else

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-10-19  8:26 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-09-27 15:36 Fix type of SRAed enum accesses Richard Sandiford
2011-09-27 16:17 ` Richard Guenther
2011-09-27 16:44 ` Martin Jambor
2011-10-18 12:30 ` [4.6] " Jakub Jelinek
2011-10-19  8:43   ` Richard Guenther

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).