Workaround for GCC internal compiler error.

GCC 4.8.0 generates internal compiler error (assign_by_spills) in
RandomArrayGenerator::createQuads() when compiled with -march=prescott.
As a workaround for the error, disable inlining of
alignmentSafeAssignment() when compiling for x86 using the affected GCC
version.

Bug: 18171557
Bug: 18174291

Change-Id: I3c7120ab304941d943515f0e2713513779253380
diff --git a/modules/glshared/glsVertexArrayTests.cpp b/modules/glshared/glsVertexArrayTests.cpp
index 4c9c19b..43aeb83 100644
--- a/modules/glshared/glsVertexArrayTests.cpp
+++ b/modules/glshared/glsVertexArrayTests.cpp
@@ -460,7 +460,19 @@
 }
 
 template<class T>
-inline static void alignmentSafeAssignment (char* dst, T val)
+static
+#if (DE_COMPILER == DE_COMPILER_GCC) && (DE_CPU == DE_CPU_X86) && \
+	(__GNUC__ == 4) && (__GNUC_MINOR__ == 8) && (__GNUC_PATCHLEVEL__ == 0)
+	// GCC 4.8.0 generates internal compiler error (assign_by_spills) in
+	// RandomArrayGenerator::createQuads() when compiled with -march=prescott.
+	// As a workaround for the error, disable inlining of
+	// alignmentSafeAssignment() when compiling for x86 using the affected GCC
+	// version.
+	__attribute__ ((noinline))
+#else
+	inline
+#endif
+void alignmentSafeAssignment (char* dst, T val)
 {
 	std::memcpy(dst, &val, sizeof(T));
 }