From 31199d95de1304e200554bbf98b2d8a6a7298bec Mon Sep 17 00:00:00 2001 From: Martin Sebor Date: Wed, 31 Mar 2021 10:39:24 -0600 Subject: [PATCH] PR middle-end/65182 - -Wuninitialized fails when pointer to variable later passed to function gcc/testsuite: PR middle-end/65182 * gcc.dg/uninit-pr65182.c: New test. --- gcc/testsuite/gcc.dg/uninit-pr65182.c | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/uninit-pr65182.c diff --git a/gcc/testsuite/gcc.dg/uninit-pr65182.c b/gcc/testsuite/gcc.dg/uninit-pr65182.c new file mode 100644 index 00000000000..45b538d1a2f --- /dev/null +++ b/gcc/testsuite/gcc.dg/uninit-pr65182.c @@ -0,0 +1,44 @@ +/* PR middle-end/65182 - -Wuninitialized fails when pointer to variable + later passed to function + { dg-do compile } + { dg-options "-O0 -Wall" } */ + +void bar (int *a); + +int baz (void); + +__attribute__ ((noipa)) void foo_O0 (int *b) +{ + int a; + + if (a) // { dg-warning "\\\[-Wuninitialized" } + { + *b = 0; + return; + } + + bar (&a); + + a = baz (); + + *b = a + 2; +} + +#pragma GCC optimize ("2") + +__attribute__ ((noipa)) void foo_O2 (int *b) +{ + int a; + + if (a) // { dg-warning "\\\[-Wuninitialized" } + { + *b = 0; + return; + } + + bar (&a); + + a = baz (); + + *b = a + 3; +}