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]

Re: PR c++/35652 [4.2/4.3/4.4 Regression] offset warning should be given in the front-end


On Fri, 27 Mar 2009, H.J. Lu wrote:

> On Fri, Feb 06, 2009 at 04:53:10AM +0100, Manuel López-Ibáñez wrote:
> > +	  else
> > +	    offset = tree_low_cst (offset_node, 0);
> > +
> > +	  offset = offset + tree_low_cst (intop, 0);
> > +	  if (offset < 0 || offset > max)
> > +	    warning_at (location, 0,
> > +			"offset %<%ld%> outside bounds of constant string",
> > +			tree_low_cst (intop, 0));
> > +	}
> > +    }
> > +
> 
> tree_low_cst returns HOST_WIDE_INT. We need HOST_WIDE_INT_PRINT_DEC
> insted of %ld. I am checking in this patch.

Using HOST_WIDE_INT_PRINT_DEC is wrong here - it won't work with 
translation (the expansion may be different for different hosts, but only 
one string goes in the .pot file) and is a printf format not necessarily 
one acceptable to the diagnostic printers (on Windows hosts it may be 
%I64d, which Windows printf handles and the pretty printers don't).  You 
should use %wd here, which the pretty printers handle internally.

-- 
Joseph S. Myers
joseph@codesourcery.com

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