--- old/make/bsd/makefiles/gcc.make 2016-04-06 11:26:39.000000000 -0500 +++ new/make/bsd/makefiles/gcc.make 2016-04-06 11:26:39.000000000 -0500 @@ -322,11 +322,11 @@ # Work around some compiler bugs. ifeq ($(USE_CLANG), true) - # Clang < 6 | <= 6.1 | <= 7.0 + # Clang < 6 | <= 6.1 | <= 7.3 ifeq ($(shell expr \ $(CC_VER_MAJOR) \< 6 \| \ \( $(CC_VER_MAJOR) = 6 \& $(CC_VER_MINOR) \<= 1 \) \| \ - \( $(CC_VER_MAJOR) = 7 \& $(CC_VER_MINOR) \<= 0 \) \ + \( $(CC_VER_MAJOR) = 7 \& $(CC_VER_MINOR) \<= 3 \) \ ), 1) OPT_CFLAGS/loopTransform.o += $(OPT_CFLAGS/NOOPT) OPT_CFLAGS/unsafe.o += -O1 --- old/src/share/vm/oops/klass.hpp 2016-04-06 11:26:40.000000000 -0500 +++ new/src/share/vm/oops/klass.hpp 2016-04-06 11:26:40.000000000 -0500 @@ -304,10 +304,11 @@ _lh_header_size_mask = right_n_bits(BitsPerByte), // shifted mask _lh_array_tag_bits = 2, _lh_array_tag_shift = BitsPerInt - _lh_array_tag_bits, - _lh_array_tag_type_value = ~0x00, // 0xC0000000 >> 30 _lh_array_tag_obj_value = ~0x01 // 0x80000000 >> 30 }; + static const unsigned int _lh_array_tag_type_value = 0Xffffffff; // ~0x00, // 0xC0000000 >> 30 + static int layout_helper_size_in_bytes(jint lh) { assert(lh > (jint)_lh_neutral_value, "must be instance"); return (int) lh & ~_lh_instance_slow_path_bit; --- old/src/share/vm/opto/library_call.cpp 2016-04-06 11:26:40.000000000 -0500 +++ new/src/share/vm/opto/library_call.cpp 2016-04-06 11:26:40.000000000 -0500 @@ -3762,7 +3762,7 @@ } // Now test the correct condition. jint nval = (obj_array - ? ((jint)Klass::_lh_array_tag_type_value + ? (jint)(Klass::_lh_array_tag_type_value << Klass::_lh_array_tag_shift) : Klass::_lh_neutral_value); Node* cmp = _gvn.transform(new CmpINode(layout_val, intcon(nval)));