Add whole program optimization for Clang.

Also reorder the way CERES_CXX_FLAGS is being used for clarity.

Change-Id: I2bbb90e770d30dd18ecae72939ea03b7fa11e6ae
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0b6e829..f5aaeed 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -612,9 +612,13 @@
       ENDIF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
     ENDIF (${BUILD_ANDROID})
   ENDIF (CMAKE_COMPILER_IS_GNUCXX)
-  SET (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${CERES_CXX_FLAGS}")
+  IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+    SET(CERES_CXX_FLAGS "${CERES_CXX_FLAGS} -O4")
+  ENDIF()
 ENDIF (CMAKE_BUILD_TYPE STREQUAL "Release")
 
+SET (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${CERES_CXX_FLAGS}")
+
 # After the tweaks for the compile settings, disable some warnings on MSVC.
 IF (MSVC)
   # Disable signed/unsigned int conversion warnings.