> >     PR middle-end/105818
> > 
> > gcc/ChangeLog:
> > 
> >     * predict.cc (optimize_function_for_size_p): Further check
> >     optimize_size of fun->decl when it is valid but no cgraph node.
> > 
> > gcc/testsuite/ChangeLog:
> > 
> >     * gcc.target/powerpc/pr105818.c: New test.
> >     * gcc.dg/guality/pr54693-2.c: Adjust for aarch64.
> > diff --git a/gcc/testsuite/gcc.target/powerpc/pr105818.c 
> > b/gcc/testsuite/gcc.target/powerpc/pr105818.c
> > new file mode 100644
> > index 00000000000..679647e189d
> > --- /dev/null
> > +++ b/gcc/testsuite/gcc.target/powerpc/pr105818.c
> > @@ -0,0 +1,11 @@
> > +/* { dg-options "-Os -fno-tree-vectorize" } */
> > +
> > +/* Verify there is no ICE.  */
> > +
> > +#pragma GCC optimize "-fno-tree-vectorize"
> > +
> > +void
> > +foo (void)
> > +{
> > +  void bar (void);
> > +}
So the testcase starts with optimize_size set but then it switches to
optimize_size==0 due to the GCC optimize pragma.  I think this is
behaviour Martin wants to change, so perhaps the testcase should be
written with explicit -O2.

I also wonder what happen when you add the attribute later?
/* { dg-options "-Os -fno-tree-vectorize" } */

/* Verify there is no ICE.  */

#pragma GCC optimize "-fno-tree-vectorize"

void
foo (void)
{
  void bar (void);
}

__attribute__ ((optimize("-fno-tree-vectorize"))) void foo (void);

I think we should generally avoid doing decisions about size/speed
optimizations so early since the setting may change due to attribtes or
profile feedback...

Honza

Reply via email to