summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-libs/pcc-libs/files/pcc-libs-1.0.0-check-builtin.patch')
-rw-r--r--dev-libs/pcc-libs/files/pcc-libs-1.0.0-check-builtin.patch62
1 files changed, 62 insertions, 0 deletions
diff --git a/dev-libs/pcc-libs/files/pcc-libs-1.0.0-check-builtin.patch b/dev-libs/pcc-libs/files/pcc-libs-1.0.0-check-builtin.patch
new file mode 100644
index 000000000000..335f2d774b8c
--- /dev/null
+++ b/dev-libs/pcc-libs/files/pcc-libs-1.0.0-check-builtin.patch
@@ -0,0 +1,62 @@
+diff --git a/libpcc/bitcnt.c b/libpcc/bitcnt.c
+index 26ecc01..c3bd54e 100644
+--- a/libpcc/bitcnt.c
++++ b/libpcc/bitcnt.c
+@@ -1,9 +1,22 @@
++// Only use __has_builtin in compilers that support it.
++#ifndef __has_builtin
++ #define __has_builtin(x) 0
++#endif
+
++#if !__has_builtin(__builtin_clz)
+ int __builtin_clz(unsigned int);
++#endif
++#if !__has_builtin(__builtin_ctz)
+ int __builtin_ctz(unsigned int);
++#endif
++#if !__has_builtin(__builtin_clzl)
+ int __builtin_clzl(unsigned long);
++#endif
++#if !__has_builtin(__builtin_ctzl)
+ int __builtin_ctzl(unsigned long);
++#endif
+
++#if !__has_builtin(__builtin_clz)
+ int
+ __builtin_clz(unsigned int v)
+ {
+@@ -14,7 +27,9 @@ __builtin_clz(unsigned int v)
+ break;
+ return i;
+ }
++#endif
+
++#if !__has_builtin(__builtin_ctz)
+ int
+ __builtin_ctz(unsigned int v)
+ {
+@@ -25,7 +40,9 @@ __builtin_ctz(unsigned int v)
+ break;
+ return i;
+ }
++#endif
+
++#if !__has_builtin(__builtin_clzl)
+ int
+ __builtin_clzl(unsigned long v)
+ {
+@@ -37,7 +54,9 @@ __builtin_clzl(unsigned long v)
+ break;
+ return i;
+ }
++#endif
+
++#if !__has_builtin(__builtin_ctzl)
+ int
+ __builtin_ctzl(unsigned long v)
+ {
+@@ -48,3 +67,4 @@ __builtin_ctzl(unsigned long v)
+ break;
+ return i;
+ }
++#endif