From 329d044a9e5a4bd5d0523d907fadb057382a955f Mon Sep 17 00:00:00 2001 From: janwas Date: Tue, 5 Apr 2011 19:49:04 +0000 Subject: [PATCH] 64-bit gcc warning fix This was SVN commit r9171. --- source/lib/timer.cpp | 2 +- source/lib/timer.h | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/source/lib/timer.cpp b/source/lib/timer.cpp index c2e3969213..741940effe 100644 --- a/source/lib/timer.cpp +++ b/source/lib/timer.cpp @@ -233,7 +233,7 @@ std::wstring StringForSeconds(double seconds) } -std::wstring StringForCycles(i64 cycles) +std::wstring StringForCycles(Cycles cycles) { double scale = 1.0; const wchar_t* unit = L" c"; diff --git a/source/lib/timer.h b/source/lib/timer.h index 9f2592b762..25f128d11f 100644 --- a/source/lib/timer.h +++ b/source/lib/timer.h @@ -51,12 +51,19 @@ LIB_API double timer_Time(); LIB_API double timer_Resolution(); +// (allow using XADD (faster than CMPXCHG) in 64-bit builds without casting) +#if ARCH_AMD64 +typedef intptr_t Cycles; +#else +typedef i64 Cycles; +#endif + /** * internal helper functions for returning an easily readable * string (i.e. re-scaled to appropriate units) **/ LIB_API std::wstring StringForSeconds(double seconds); -LIB_API std::wstring StringForCycles(i64 cycles); +LIB_API std::wstring StringForCycles(Cycles cycles); //----------------------------------------------------------------------------- @@ -173,9 +180,9 @@ public: void AddDifferenceAtomic(TimerUnit t0, TimerUnit t1) { - const i64 delta = t1.m_cycles - t0.m_cycles; + const Cycles delta = t1.m_cycles - t0.m_cycles; #if ARCH_AMD64 - cpu_AtomicAdd((volatile intptr_t*)&m_cycles, (intptr_t)delta); + cpu_AtomicAdd(&m_cycles, delta); #elif ARCH_IA32 retry: if(!cpu_CAS64(&m_cycles, m_cycles, m_cycles+delta)) @@ -202,7 +209,7 @@ retry: } private: - i64 m_cycles; + Cycles m_cycles; }; #else