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: Bug in expand_builtin_sprintf


On Wed, Oct 10, 2007 at 08:46:44AM +0100, Heikki Linnakangas wrote:
> Kaveh R. GHAZI wrote:
> > On Mon, 8 Oct 2007, Heikki Linnakangas wrote:
> > 
> >> I think there's a small bug in expand_builtin_sprintf in trunk,
> >> introduced by commit 122018. Fix below:
> >>
> >> Index: builtins.c
> >> ===================================================================
> >> --- builtins.c  (revision 129124)
> >> +++ builtins.c  (working copy)
> >> @@ -5449,7 +5449,7 @@
> >>    dest = CALL_EXPR_ARG (exp, 0);
> >>    if (! POINTER_TYPE_P (TREE_TYPE (dest)))
> >>      return NULL_RTX;
> >> -  fmt = CALL_EXPR_ARG (exp, 0);
> >> +  fmt = CALL_EXPR_ARG (exp, 1);
> >>    if (! POINTER_TYPE_P (TREE_TYPE (fmt)))
> >>      return NULL_RTX;
> >>
> > 
> > Testcase please?
> 
> I don't have one, unfortunately. I spotted this by looking at the code.
> I believe the only consequence is that the simplifications are never
> done in expand_builtin_sprintf.

I guess the reproducer would need to make the fmt string visible to
fold_builtin only during loop optimizations or later (certainly after fab
pass) and then expand_builtin_sprintf could do this optimization.

	Jakub


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