From bfb400ccd7fbf6718751aaab65c68c9a84aa7585 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 6 Sep 2016 20:41:23 -0400 Subject: Backed out changeset c30d8774c404: remove warning suppression for possibly-uninitialized data member in BlockTimer::BlockTimer. NickyD suggested a real fix. --- indra/llrender/llimagegl.cpp | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 01c1d81823..ebed454271 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -240,15 +240,6 @@ S32 LLImageGL::dataFormatComponents(S32 dataformat) //---------------------------------------------------------------------------- -#if LL_LINUX -// gcc 4.7.2 produces this error for the following function, which nat has -// been unable to diagnose as an actual problem: -// llimagegl.cpp:247:2: error: '.LLTrace::BlockTimer::mStartTime' -// may be used uninitialized in this function [-Werror=uninitialized] -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wuninitialized" -#endif - static LLTrace::BlockTimerStatHandle FTM_IMAGE_UPDATE_STATS("Image Stats"); // static void LLImageGL::updateStats(F32 current_time) @@ -259,11 +250,6 @@ void LLImageGL::updateStats(F32 current_time) sCurBoundTextureMemory = S32Bytes(0); } -#if LL_LINUX -// In general we do want to know about uninitialized variables! -#pragma GCC diagnostic pop -#endif - //static S32 LLImageGL::updateBoundTexMem(const S32Bytes mem, const S32 ncomponents, S32 category) { -- cgit v1.2.3 From 67c401047a472d579cffe629519090ea8ef5c570 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 6 Sep 2016 20:48:16 -0400 Subject: MAINT-5011: Ensure BlockTimer::mStartTime is unconditionally set. Previous logic could possibly leave mStartTime uninitialized, producing fatal warnings with gcc 4.7. --- indra/llcommon/llfasttimer.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index 2370253078..f56e5596f5 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h @@ -296,7 +296,16 @@ LL_FORCE_INLINE BlockTimer::BlockTimer(BlockTimerStatHandle& timer) { #if LL_FAST_TIMER_ON BlockTimerStackRecord* cur_timer_data = LLThreadLocalSingletonPointer::getInstance(); - if (!cur_timer_data) return; + if (!cur_timer_data) + { + // How likely is it that + // LLThreadLocalSingletonPointer::getInstance() will return NULL? + // Even without researching, what we can say is that if we exit + // without setting mStartTime at all, gcc 4.7 produces (fatal) + // warnings about a possibly-uninitialized data member. + mStartTime = 0; + return; + } TimeBlockAccumulator& accumulator = timer.getCurrentAccumulator(); accumulator.mActiveCount++; // keep current parent as long as it is active when we are -- cgit v1.2.3