On Wed, Feb 13, 2019 at 2:54 PM Joseph Myers <[email protected]> wrote:
>
> On Wed, 13 Feb 2019, H.J. Lu wrote:
>
> > Like this?
>
> This patch is missing any updates to options.texi to discuss the
> interation of Negative and RejectNegative with Joined.
I will add something.
> > diff --git a/gcc/testsuite/gcc.dg/pr69471-1.c
> > b/gcc/testsuite/gcc.dg/pr69471-1.c
> > new file mode 100644
> > index 00000000000..3eac3b5bdbc
> > --- /dev/null
> > +++ b/gcc/testsuite/gcc.dg/pr69471-1.c
> > @@ -0,0 +1,9 @@
> > +/* { dg-do compile } */
> > +/* { dg-options "-Wno-implicit-function-declaration -Wno-int-conversion
> > -fno-builtin-free -fno-builtin-malloc" } */
> > +
> > +void *
> > +foo (void * p)
> > +{
> > + free (p);
> > + return malloc (p);
>
> How does this test verify that both -fno-builtin-* options are in effect?
> That is, how does it fail if you remove either or both of those options?
>
Without -fno-builtin-free -fno-builtin-malloc
[hjl@gnu-cfl-1 gcc]$ cat
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c
/* { dg-do compile } */
/* { dg-options "-Wno-implicit-function-declaration
-Wno-int-conversion -fno-builtin-free -fno-builtin-malloc" } */
void *
foo (void * p)
{
free (p);
return malloc (p);
}
[hjl@gnu-cfl-1 gcc]$ gcc -S -Wno-implicit-function-declaration
-Wno-int-conversion
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c:
In function ‘foo’:
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c:7:3:
warning: incompatible implicit declaration of built-in function ‘free’
free (p);
^~~~
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c:7:3:
note: include ‘<stdlib.h>’ or provide a declaration of ‘free’
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c:1:1:
+#include <stdlib.h>
/* { dg-do compile } */
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c:7:3:
free (p);
^~~~
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c:8:10:
warning: incompatible implicit declaration of built-in function
‘malloc’
return malloc (p);
^~~~~~
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c:8:10:
note: include ‘<stdlib.h>’ or provide a declaration of ‘malloc’
[hjl@gnu-cfl-1 gcc]$
Without only -fno-builtin-malloc:
[hjl@gnu-cfl-1 gcc]$ gcc -S -Wno-implicit-function-declaration
-Wno-int-conversion
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c
-fno-builtin-malloc
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c:
In function ‘foo’:
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c:7:3:
warning: incompatible implicit declaration of built-in function ‘free’
free (p);
^~~~
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c:7:3:
note: include ‘<stdlib.h>’ or provide a declaration of ‘free’
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c:1:1:
+#include <stdlib.h>
/* { dg-do compile } */
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c:7:3:
free (p);
^~~~
[hjl@gnu-cfl-1 gcc]$
With -fno-builtin-free -fno-builtin-malloc
[hjl@gnu-cfl-1 gcc]$ gcc -S -Wno-implicit-function-declaration
-Wno-int-conversion
/export/gnu/import/git/gitlab/x86-gcc/gcc/testsuite/gcc.dg/pr69471-1.c
-fno-builtin-free -fno-builtin-malloc
[hjl@gnu-cfl-1 gcc]$
if -fno-builtin-free is overridden by -fno-builtin-malloc, compile will fail.
H.J.
--
H.J.