summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrochner <drochner>2007-04-13 21:01:54 +0000
committerdrochner <drochner>2007-04-13 21:01:54 +0000
commitac24aa7775d8eda7d2d80b29e2f989abaea4f705 (patch)
tree48166d0b6f7def492596fcba9bdb897b98492c2e
parent0787a784f06130fd19d305cb1ce1f7a1a0200745 (diff)
downloadpkgsrc-ac24aa7775d8eda7d2d80b29e2f989abaea4f705.tar.gz
Re-apply a modified version of the patches for PR pkg/34886 which was
about ICEs with gcc3. The difference now is that SSE2+ generally works in i386, due to some evil hacks in liboil which work around gcc's problems. With gcc4 everything is fine for me. So disable the functions suspected to cause ICEs only for gcc<4 on i386. This hopefully fixes PR pkg/36142 by Gilles Gravier.
-rw-r--r--devel/liboil/distinfo4
-rw-r--r--devel/liboil/patches/patch-ab24
-rw-r--r--devel/liboil/patches/patch-ac24
3 files changed, 51 insertions, 1 deletions
diff --git a/devel/liboil/distinfo b/devel/liboil/distinfo
index fa688bb007f..8290fea796d 100644
--- a/devel/liboil/distinfo
+++ b/devel/liboil/distinfo
@@ -1,6 +1,8 @@
-$NetBSD: distinfo,v 1.6 2007/04/12 17:53:41 joerg Exp $
+$NetBSD: distinfo,v 1.7 2007/04/13 21:01:54 drochner Exp $
SHA1 (liboil-0.3.11.tar.gz) = 1c1a9952d81c1c89f73e5ed16e4665d2d7d59f7f
RMD160 (liboil-0.3.11.tar.gz) = 4edf5dad57fa920f44ba10ca4d8e406abce30971
Size (liboil-0.3.11.tar.gz) = 881159 bytes
SHA1 (patch-aa) = 9f6478ae4008ed9881e6dcf99beb4b49db04c9e5
+SHA1 (patch-ab) = 36a06f38f34f43ab6d181f4e9028f7b9adf5332b
+SHA1 (patch-ac) = 8ccb2b0323b337902c384f4bdda856ca1cc2b023
diff --git a/devel/liboil/patches/patch-ab b/devel/liboil/patches/patch-ab
new file mode 100644
index 00000000000..16565a9649d
--- /dev/null
+++ b/devel/liboil/patches/patch-ab
@@ -0,0 +1,24 @@
+$NetBSD: patch-ab,v 1.3 2007/04/13 21:01:55 drochner Exp $
+
+--- ./liboil/sse/composite_sse_2pix.c.orig 2007-04-13 22:30:01.000000000 +0200
++++ ./liboil/sse/composite_sse_2pix.c
+@@ -138,6 +138,11 @@ static __m128i over_argb_sse2(__m128i de
+ return _mm_adds_epu8(src, muldiv_255_sse2(dest, negate_argb_sse2(srca)));
+ }
+
++/*
++ * These functions trigger an ICE with gcc-3.3.3 on i386.
++ * (see NetBSD PR pkg/34886)
++ */
++#if !(defined(__i386__) && __GNUC__ && (__GNUC__ < 4))
+ static void
+ composite_in_argb_sse_2pix (uint32_t *dest, const uint32_t *src,
+ const uint8_t *mask, int n)
+@@ -393,6 +398,7 @@ composite_in_over_argb_const_mask_sse_2p
+ }
+ OIL_DEFINE_IMPL_FULL_WRAPPER(composite_in_over_argb_const_mask_sse_2pix,
+ composite_in_over_argb_const_mask, OIL_IMPL_FLAG_SSE2);
++#endif /* i386 gcc<4 */
+
+ static void
+ composite_over_u8_sse_2pix (uint8_t *dest, const uint8_t *src, int n)
diff --git a/devel/liboil/patches/patch-ac b/devel/liboil/patches/patch-ac
new file mode 100644
index 00000000000..1f362876d53
--- /dev/null
+++ b/devel/liboil/patches/patch-ac
@@ -0,0 +1,24 @@
+$NetBSD: patch-ac,v 1.3 2007/04/13 21:01:56 drochner Exp $
+
+--- ./liboil/sse/composite_sse_4pix.c.orig 2007-04-13 22:37:07.000000000 +0200
++++ ./liboil/sse/composite_sse_4pix.c
+@@ -274,6 +274,11 @@ composite_in_argb_const_mask_sse (uint32
+ OIL_DEFINE_IMPL_FULL_WRAPPER (composite_in_argb_const_mask_sse,
+ composite_in_argb_const_mask, OIL_IMPL_FLAG_SSE2);
+
++/*
++ * These functions trigger an ICE with gcc-3.3.3 on i386.
++ * (see NetBSD PR pkg/34886)
++ */
++#if !(defined(__i386__) && __GNUC__ && (__GNUC__ < 4))
+ static void
+ composite_over_argb_sse (uint32_t *dest, const uint32_t *src, int n)
+ {
+@@ -508,6 +513,7 @@ composite_in_over_argb_const_mask_sse (u
+ }
+ OIL_DEFINE_IMPL_FULL_WRAPPER (composite_in_over_argb_const_mask_sse,
+ composite_in_over_argb_const_mask, OIL_IMPL_FLAG_SSE2);
++#endif /* i386 gcc<4 */
+
+ static void
+ composite_over_u8_sse (uint8_t *dest, const uint8_t *src, int n)