From 247d18674ee79e8c05dd00a7cee8fc5712fe7a2d Mon Sep 17 00:00:00 2001 From: Philippe Waroquiers Date: Wed, 30 Jan 2013 23:53:59 +0000 Subject: [PATCH] =?UTF-8?q?Bypass=20warning=20reported=20by=20gcc=20gcc=20?= =?UTF-8?q?reports=20a=20warning:=20m=5Fstacktrace.c:183:=20warning:=20?= =?UTF-8?q?=E2=80=98xip=5Fverified=E2=80=99=20may=20be=20used=20uninitiali?= =?UTF-8?q?zed=20in=20this=20function?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This warning is a false positive: xip_verified is assigned in the following branch: if (UNLIKELY(xip_verif >= CFUNWIND)) { if (xip_verif == CFUNWIND) { ... } else { <<<< here xip_verified is initialised >>>> } } xip_verified is then used only if xip_verif > CFUNWIND. Assign a rubish value to xip_verified to silence gcc. (??? there are GCC pragmas that can be used to disable a warning only on a specific line e.g. something like: #pragma GCC diagnostic ignored "-Wuninitialized" Addr xip_verified; // xip for which we have calculated fpverif_uregs #pragma GCC diagnostic warning "-Wuninitialized" instead of Addr xip_verified = 0; // xip for which we have calculated fpverif_uregs // 0 assigned to silence false positive -Wuninitialized warning but the #pragma technique seems not used currently. So, using the bypass by assigning a rubbish value git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13282 --- coregrind/m_stacktrace.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/coregrind/m_stacktrace.c b/coregrind/m_stacktrace.c index e7db9c587..26a72724a 100644 --- a/coregrind/m_stacktrace.c +++ b/coregrind/m_stacktrace.c @@ -180,7 +180,10 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known, vg_assert(sizeof(Addr) == sizeof(void*)); D3UnwindRegs fpverif_uregs; // result of CF unwind for a check reason. - Addr xip_verified; // xip for which we have calculated fpverif_uregs + Addr xip_verified = 0; // xip for which we have calculated fpverif_uregs + // 0 assigned to silence false positive -Wuninitialized warning + // This is a false positive as xip_verified is assigned when xip_verif > CFUNWIND + // and only used if xip_verif > CFUNWIND. D3UnwindRegs uregs; uregs.xip = (Addr)startRegs->r_pc;