This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Ada] expose position expr in parallel type XVL computation


We were observing GDB misbheavior on proprietary internal tests, and
these turned out to be caused by mistaken alignments expressed in the
XVL encodings of some Ada parallel descriptive types.

The XVL alignment encoding is worked out by gigi's
rest_of_record_type_compilation, looking at the shape of field
position expressions, for instance

     /* An offset which is a bitwise AND with a negative power of 2
        means an alignment corresponding to this power of 2.  */

We need to strip off intermediate conversions in the process to have
such expressions exposed, we were missing doing so in some cases and
this patch fixes that. It also replaces a manual loop by an equivalent
call to remove_conversions.

Bootstrapped and regression tested on x86_64-suse-linux.

2008-06-13  Olivier Hainque  <hainque@adacore.com>

	* utils.c (rest_of_record_type_compilation): When computing
	encodings for the components of a variable size type, early
	strip conversions on the current position expression to make
	sure it's shape is visible.  Use remove_conversions for this
	purpose.





Attachment: xvl.dif
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]