summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormiod <miod@openbsd.org>2013-06-06 21:14:14 +0000
committermiod <miod@openbsd.org>2013-06-06 21:14:14 +0000
commit9bb4e7eb2175c8f4f5e2297b43a8e354d98b70d4 (patch)
tree80c07bcade89e1f8aeb2d46e943c3b3293e67180
parenttweak previous; (diff)
downloadwireguard-openbsd-9bb4e7eb2175c8f4f5e2297b43a8e354d98b70d4.tar.xz
wireguard-openbsd-9bb4e7eb2175c8f4f5e2297b43a8e354d98b70d4.zip
Disable a broken optimization in try_combine(); GCC PR #34628.
The PR comes with a real fix, but it is covered by the GPL v3, and is neither trivial nor straightforward, so use a hammer and disable the unreliable code. Verified to fix bogus code generation on macppc.
-rw-r--r--gnu/gcc/gcc/combine.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gnu/gcc/gcc/combine.c b/gnu/gcc/gcc/combine.c
index c5655ea4038..7ab118801a1 100644
--- a/gnu/gcc/gcc/combine.c
+++ b/gnu/gcc/gcc/combine.c
@@ -2374,8 +2374,10 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p)
above (see detailed comments there) that ensures that I1DEST
isn't mentioned in any SETs in NEWPAT that are field assignments. */
+#if !defined(OPENBSD_NATIVE) && !defined(OPENBSD_CROSS) /* GCC PR #34628 */
if (! combinable_i3pat (NULL_RTX, &newpat, i1dest, NULL_RTX,
0, (rtx*) 0))
+#endif
{
undo_all ();
return 0;