diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 66cc81a377da588510e1f35b17ed94e239f247ef..49f374de317aac37d175b7c9800a6df78c7b3025 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,8 +1,8 @@
 2014-11-20  Uros Bizjak  <ubizjak@gmail.com>
 
 	PR target/63966
-	* lex.c [__i386__ || __x86_64__]: Include system <cpuid.h> for
-	GCC_VERSION < 5000.
+	* lex.c [__i386__ || __x86_64__]: Compile special SSE functions
+	only for (__GNUC__ >= 5 || !defined(__PIC__)).
 
 2014-11-13  Manuel López-Ibáñez  <manu@gcc.gnu.org>
 
diff --git a/libcpp/lex.c b/libcpp/lex.c
index 298dd7fff3dce4efe9313b3fc958b30d4c272fac..845c1d271058375fd6a83e5f0c3be87bab8c45ae 100644
--- a/libcpp/lex.c
+++ b/libcpp/lex.c
@@ -270,7 +270,7 @@ search_line_acc_char (const uchar *s, const uchar *end ATTRIBUTE_UNUSED)
    extensions used, so SSE4.2 executables cannot run on machines that
    don't support that extension.  */
 
-#if (GCC_VERSION >= 4005) && (defined(__i386__) || defined(__x86_64__)) && !(defined(__sun__) && defined(__svr4__))
+#if (GCC_VERSION >= 4005) && (__GNUC__ >= 5 || !defined(__PIC__)) && (defined(__i386__) || defined(__x86_64__)) && !(defined(__sun__) && defined(__svr4__))
 
 /* Replicated character data to be shared between implementations.
    Recall that outside of a context with vector support we can't
@@ -471,11 +471,7 @@ search_line_sse42 (const uchar *s, const uchar *end)
 
 /* Check the CPU capabilities.  */
 
-#if (GCC_VERSION >= 5000)
 #include "../gcc/config/i386/cpuid.h"
-#else
-#include <cpuid.h>
-#endif
 
 typedef const uchar * (*search_line_fast_type) (const uchar *, const uchar *);
 static search_line_fast_type search_line_fast;