diff --git a/webrtc/base/criticalsection.h b/webrtc/base/criticalsection.h
index 4418453..088e72e 100644
--- a/webrtc/base/criticalsection.h
+++ b/webrtc/base/criticalsection.h
@@ -163,31 +163,19 @@
   static int Decrement(volatile int* i) {
     return ::InterlockedDecrement(reinterpret_cast<volatile LONG*>(i));
   }
-
-  // No barrier load.
   static int Load(volatile const int* i) {
     return *i;
   }
-
-  // No barrier store.
-  static void Store(volatile int* i, int value) {
-    *i = value;
-  }
 #else
   static int Increment(volatile int* i) {
-    return __atomic_add_fetch(i, 1, __ATOMIC_SEQ_CST);
+    return __sync_add_and_fetch(i, 1);
   }
   static int Decrement(volatile int* i) {
-    return __atomic_sub_fetch(i, 1, __ATOMIC_SEQ_CST);
+    return __sync_sub_and_fetch(i, 1);
   }
-  // No barrier load.
   static int Load(volatile const int* i) {
     // Adding 0 is a no-op, so const_cast is fine.
-    return __atomic_load_n(const_cast<volatile int*>(i), 0);
-  }
-  // No barrier store.
-  static void Store(volatile int* i, int value) {
-    __atomic_store_n(i, value, __ATOMIC_RELAXED);
+    return __sync_add_and_fetch(const_cast<volatile int*>(i), 0);
   }
 #endif
 };
diff --git a/webrtc/system_wrappers/interface/trace.h b/webrtc/system_wrappers/interface/trace.h
index e63b603..44ea658 100644
--- a/webrtc/system_wrappers/interface/trace.h
+++ b/webrtc/system_wrappers/interface/trace.h
@@ -49,10 +49,10 @@
   // filter parameter is a bitmask where each message type is enumerated by the
   // TraceLevel enumerator. TODO(hellner): why is the TraceLevel enumerator not
   // defined in this file?
-  static void set_level_filter(int filter);
+  static void set_level_filter(uint32_t filter) { level_filter_ = filter; }
 
   // Returns what type of messages are written to the trace file.
-  static int level_filter();
+  static uint32_t level_filter() { return level_filter_; }
 
   // Sets the file name. If add_file_counter is false the same file will be
   // reused when it fills up. If it's true a new file with incremented name
@@ -84,7 +84,7 @@
                   const char* msg, ...);
 
  private:
-  static volatile int level_filter_;
+  static uint32_t level_filter_;
 };
 
 }  // namespace webrtc
diff --git a/webrtc/system_wrappers/source/trace_impl.cc b/webrtc/system_wrappers/source/trace_impl.cc
index 6a293cc..c41159d 100644
--- a/webrtc/system_wrappers/source/trace_impl.cc
+++ b/webrtc/system_wrappers/source/trace_impl.cc
@@ -32,7 +32,7 @@
 const int Trace::kBoilerplateLength = 71;
 const int Trace::kTimestampPosition = 13;
 const int Trace::kTimestampLength = 12;
-volatile int Trace::level_filter_ = kTraceDefault;
+uint32_t Trace::level_filter_ = kTraceDefault;
 
 // Construct On First Use idiom. Avoids "static initialization order fiasco".
 TraceImpl* TraceImpl::StaticInstance(CountOperation count_operation,
@@ -518,17 +518,14 @@
   return true;
 }
 
-// static
 void Trace::CreateTrace() {
   TraceImpl::StaticInstance(kAddRef);
 }
 
-// static
 void Trace::ReturnTrace() {
   TraceImpl::StaticInstance(kRelease);
 }
 
-// static
 int32_t Trace::TraceFile(char file_name[FileWrapper::kMaxFileNameSize]) {
   TraceImpl* trace = TraceImpl::GetTrace();
   if (trace) {
@@ -539,17 +536,6 @@
   return -1;
 }
 
-// static
-void Trace::set_level_filter(int filter) {
-  rtc::AtomicOps::Store(&level_filter_, filter);
-}
-
-// static
-int Trace::level_filter() {
-  return rtc::AtomicOps::Load(&level_filter_);
-}
-
-// static
 int32_t Trace::SetTraceFile(const char* file_name,
                             const bool add_file_counter) {
   TraceImpl* trace = TraceImpl::GetTrace();
