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] |
> -----Original Message----- > From: Richard Biener [mailto:richard.guenther@gmail.com] > Sent: Friday, September 27, 2013 4:30 PM > To: Bin Cheng > Cc: GCC Patches > Subject: Re: [PATCH]Fix computation of offset in ivopt > > On Fri, Sep 27, 2013 at 7:07 AM, bin.cheng <bin.cheng@arm.com> wrote: > > > > > > case INTEGER_CST: > > //....... > > *offset = int_cst_value (expr); > > change to > > case INTEGER_CST: > > //....... > > *offset = sext_hwi (int_cst_value (expr), type); > > > > and > > case MULT_EXPR: > > //....... > > *offset = sext_hwi (int_cst_value (expr), type); to > > case MULT_EXPR: > > //....... > > HOST_WIDE_INT xxx = (HOST_WIDE_INT)off0 * int_cst_value (op1); > > *offset = sext_hwi (xxx, type); > > > > Any comments? > > The issue is of course that we end up converting offsets to sizetype at some > point which makes them all appear unsigned. The fix for this is to simply > interpret them as signed ... but it's really a mess ;) > Hi, this is updated patch which calculates signed offset in strip_offset_1 then sign extend it in strip_offset. Bootstrap and test on x86_64/x86/arm. Is it OK? Thanks. bin 2013-09-30 Bin Cheng <bin.cheng@arm.com> * tree-ssa-loop-ivopts.c (strip_offset_1): Change parameter type. Count DECL_FIELD_BIT_OFFSET when computing offset for COMPONENT_REF. (strip_offset): Sign extend before return.
Attachment:
1-ivopt-offset-20130929.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |