https://bugs.kde.org/show_bug.cgi?id=439685
Bug ID: 439685 Summary: compiler warning in callgrind/main.c Product: valgrind Version: unspecified Platform: Other OS: Linux Status: REPORTED Severity: normal Priority: NOR Component: callgrind Assignee: josef.weidendor...@gmx.de Reporter: flor...@eich-krohm.de Target Milestone: --- Building valgrind from git @ 43543527a293e626e601202ca4eeb2216f40815d on s390x with gcc-5.real (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609 produces this warning for callgrind/main.c main.c: In function ‘vgCallgrind_post_syscalltime’: main.c:1779:25: warning: ‘*((void *)&ts_now+8)’ may be used uninitialized in this function [-Wmaybe-uninitialized] struct vki_timespec ts_now; main.c:1779:25: warning: ‘ts_now’ may be used uninitialized in this function [-Wmaybe-uninitialized] In function collect_time the conditional expression in the switch statement has type int (after integral promotions). GCC assumes that it may have values other than the ones listed in the enumerated type it was promoted from. In that case the memory pointed to by its 1st argument remains unintialised. Later on vki_timespec_diff will read the contents of ts_now undoditionally. Hence the warning. The patch below removes the warning and makes the code more robust should another enumerator ever be added to Collect_Systime. diff --git a/callgrind/main.c b/callgrind/main.c index 904eb42..bda10dc 100644 --- a/callgrind/main.c +++ b/callgrind/main.c @@ -1711,7 +1711,7 @@ static void collect_time (struct vki_timespec *systime, struct vki_timespec *syscputime) { switch (CLG_(clo).collect_systime) { - case systime_no: tl_assert (0); + default: tl_assert (0); case systime_msec: { UInt ms_timer = VG_(read_millisecond_timer)(); systime->tv_sec = ms_timer / 1000; -- You are receiving this mail because: You are watching all bug changes.