changeset 2901:12293af24349

S8213419, PR3724: [AArch64] C2 may hang in MulLNode::Ideal()/MulINode::Ideal() with gcc 8.2.1 2019-04-22 Andrew John Hughes <gnu_andrew@member.fsf.org> S8213419, PR3724: [AArch64] C2 may hang in MulLNode::Ideal()/MulINode::Ideal() with gcc 8.2.1 * Makefile.am: (ICEDTEA_PATCHES): Apply additional PR3724 patch when building the default HotSpot. Move Shenandoah-only patches into the ALT_HSBUILD block. * NEWS: Updated. * patches/pr3724.patch: AArch64 segment of 8213419, also fixed upstream after the 3.12.0 tag.
author Andrew John Hughes <gnu_andrew@member.fsf.org>
date Wed, 24 Apr 2019 06:06:49 +0100
parents 8a52bc7c8fed
children 86a0f06c97b2
files ChangeLog Makefile.am NEWS patches/pr3724.patch
diffstat 4 files changed, 60 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Mon Apr 22 18:32:41 2019 +0100
+++ b/ChangeLog	Wed Apr 24 06:06:49 2019 +0100
@@ -1,3 +1,16 @@
+2019-04-22  Andrew John Hughes  <gnu_andrew@member.fsf.org>
+
+	S8213419, PR3724: [AArch64] C2 may hang in
+	MulLNode::Ideal()/MulINode::Ideal() with gcc 8.2.1
+	* Makefile.am:
+	(ICEDTEA_PATCHES): Apply additional PR3724 patch
+	when building the default HotSpot. Move Shenandoah-only
+	patches into the ALT_HSBUILD block.
+	* NEWS: Updated.
+	* patches/pr3724.patch:
+	AArch64 segment of 8213419, also fixed upstream
+	after the 3.12.0 tag.
+
 2019-04-22  Andrew John Hughes  <gnu_andrew@member.fsf.org>
 
 	Bump shenandoah to aarch64-shenandoah-jdk8u212-b04.
--- a/Makefile.am	Mon Apr 22 18:32:41 2019 +0100
+++ b/Makefile.am	Wed Apr 24 06:06:49 2019 +0100
@@ -391,7 +391,6 @@
 	patches/hotspot/$(HSBUILD)/8059847-pr3696.patch \
 	patches/hotspot/$(HSBUILD)/8076475-pr3696.patch \
 	patches/hotspot/$(HSBUILD)/pr3728.patch
-endif
 
 # Shenandoah has the AArch64 port so should get the return value & debug build fixes
 # Shenandoah also needs some fixes to build on all architectures
@@ -403,6 +402,10 @@
 	patches/hotspot/$(HSBUILD)/pr3519-return_value-02.patch \
 	patches/hotspot/$(HSBUILD)/pr3634.patch
 endif
+else
+ICEDTEA_PATCHES += \
+	patches/pr3724.patch
+endif
 
 if BUILD_CACAO
 ICEDTEA_PATCHES += \
--- a/NEWS	Mon Apr 22 18:32:41 2019 +0100
+++ b/NEWS	Wed Apr 24 06:06:49 2019 +0100
@@ -173,10 +173,9 @@
   - PR3722: Use SDK bin directory in jconsole.desktop.in
   - PR3723: Use shortened Java version first in Name field of desktop files
   - PR3728: CVE-2018-3639 fix revision to prefer PR_SPEC_DISABLE_NOEXEC to PR_SPEC_DISABLE
-* Shenandoah
-  - S8213419: [AArch64] C2 may hang in MulLNode::Ideal()/MulINode::Ideal() with gcc 8.2.1
 * AArch64 port
   - S8153172, PR3724: aarch64: hotspot crashes after the 8.1 LSE patch is merged
+  - S8213419, PR3724: [AArch64] C2 may hang in MulLNode::Ideal()/MulINode::Ideal() with gcc 8.2.1
   - S8221220, PR3724: AArch64: Add StoreStore membar explicitly for Volatile Writes in TemplateTable
 
 New in release 3.11.0 (2019-03-01):
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/pr3724.patch	Wed Apr 24 06:06:49 2019 +0100
@@ -0,0 +1,42 @@
+# HG changeset patch
+# User roland
+# Date 1554911223 -3600
+#      Wed Apr 10 16:47:03 2019 +0100
+# Node ID 5f929b75d93ca63ca29cc1324fb50dac67a231a6
+# Parent  5174c702c7e30e0b047b89d2163736a5fd79861b
+8213419, PR3724: [AArch64] C2 may hang in MulLNode::Ideal()/MulINode::Ideal() with gcc 8.2.1
+Reviewed-by: kvn, dlong, aph
+
+diff --git openjdk.orig/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp openjdk/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp
+--- openjdk.orig/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp
++++ openjdk/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp
+@@ -320,29 +320,6 @@
+   enum operation { uxtb, uxth, uxtw, uxtx, sxtb, sxth, sxtw, sxtx };
+ };
+ 
+-// abs methods which cannot overflow and so are well-defined across
+-// the entire domain of integer types.
+-static inline unsigned int uabs(unsigned int n) {
+-  union {
+-    unsigned int result;
+-    int value;
+-  };
+-  result = n;
+-  if (value < 0) result = -result;
+-  return result;
+-}
+-static inline unsigned long uabs(unsigned long n) {
+-  union {
+-    unsigned long result;
+-    long value;
+-  };
+-  result = n;
+-  if (value < 0) result = -result;
+-  return result;
+-}
+-static inline unsigned long uabs(long n) { return uabs((unsigned long)n); }
+-static inline unsigned long uabs(int n) { return uabs((unsigned int)n); }
+-
+ // Addressing modes
+ class Address VALUE_OBJ_CLASS_SPEC {
+  public: