hi,
i know i'm ahead of what's in-tree but due to
https://bugzilla.mozilla.org/show_bug.cgi?id=1851301
in the current state of things mozilla trunk doesn't build as-is with
our ports-clang. I've found a commit that's only in llvm 14
(https://github.com/llvm/llvm-project/commit/2456e11614c10a2e648005e27e3213c77b7ab7a4)
that allows me to fix that if backported to our llvm (a manually fixed
wasm header fixes the build issue).
or with various hacks i can jump to llvm 16 but that might be a bit
early for the ports-tree. I've been able to build a working firefox 118
with llvm 16, but who knows.
so, ok for this ?
Landry
Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/llvm/13/Makefile,v
retrieving revision 1.8
diff -u -r1.8 Makefile
--- Makefile 13 Sep 2023 11:56:31 -0000 1.8
+++ Makefile 17 Sep 2023 10:22:17 -0000
@@ -2,7 +2,7 @@
LLVM_VERSION = ${LLVM_MAJOR}.0.0
LLVM_PKGSPEC = >=13,<14
-REVISION-main = 13
+REVISION-main = 14
REVISION-lldb = 4
REVISION-python = 3
Index: patches/patch-clang_lib_Headers_wasm_simd128_h
===================================================================
RCS file: patches/patch-clang_lib_Headers_wasm_simd128_h
diff -N patches/patch-clang_lib_Headers_wasm_simd128_h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-clang_lib_Headers_wasm_simd128_h 17 Sep 2023 10:22:17
-0000
@@ -0,0 +1,282 @@
+backport
https://github.com/llvm/llvm-project/commit/2456e11614c10a2e648005e27e3213c77b7ab7a4
+
+fixes mozilla 119 build per
https://bugzilla.mozilla.org/show_bug.cgi?id=1851301
+Index: clang/lib/Headers/wasm_simd128.h
+--- clang/lib/Headers/wasm_simd128.h.orig
++++ clang/lib/Headers/wasm_simd128.h
+@@ -277,11 +277,27 @@ wasm_i8x16_make(int8_t __c0, int8_t __c1, int8_t __c2,
+ }
+
+ static __inline__ v128_t __DEFAULT_FN_ATTRS
++wasm_u8x16_make(uint8_t __c0, uint8_t __c1, uint8_t __c2, uint8_t __c3,
++ uint8_t __c4, uint8_t __c5, uint8_t __c6, uint8_t __c7,
++ uint8_t __c8, uint8_t __c9, uint8_t __c10, uint8_t __c11,
++ uint8_t __c12, uint8_t __c13, uint8_t __c14, uint8_t __c15) {
++ return (v128_t)(__u8x16){__c0, __c1, __c2, __c3, __c4, __c5,
++ __c6, __c7, __c8, __c9, __c10, __c11,
++ __c12, __c13, __c14, __c15};
++}
++
++static __inline__ v128_t __DEFAULT_FN_ATTRS
+ wasm_i16x8_make(int16_t __c0, int16_t __c1, int16_t __c2, int16_t __c3,
+ int16_t __c4, int16_t __c5, int16_t __c6, int16_t __c7) {
+ return (v128_t)(__i16x8){__c0, __c1, __c2, __c3, __c4, __c5, __c6, __c7};
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS
++wasm_u16x8_make(uint16_t __c0, uint16_t __c1, uint16_t __c2, uint16_t __c3,
++ uint16_t __c4, uint16_t __c5, uint16_t __c6, uint16_t __c7) {
++ return (v128_t)(__u16x8){__c0, __c1, __c2, __c3, __c4, __c5, __c6, __c7};
++}
++
+ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_make(int32_t __c0,
+ int32_t __c1,
+ int32_t __c2,
+@@ -289,11 +305,23 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4
+ return (v128_t)(__i32x4){__c0, __c1, __c2, __c3};
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_make(uint32_t __c0,
++ uint32_t __c1,
++ uint32_t __c2,
++ uint32_t __c3) {
++ return (v128_t)(__u32x4){__c0, __c1, __c2, __c3};
++}
++
+ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_make(int64_t __c0,
+ int64_t __c1) {
+ return (v128_t)(__i64x2){__c0, __c1};
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u64x2_make(uint64_t __c0,
++ uint64_t __c1) {
++ return (v128_t)(__u64x2){__c0, __c1};
++}
++
+ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_make(float __c0,
+ float __c1,
+ float __c2,
+@@ -325,6 +353,24 @@ wasm_i8x16_const(int8_t __c0, int8_t __c1, int8_t __c2
+ }
+
+ static __inline__ v128_t __DEFAULT_FN_ATTRS
++wasm_u8x16_const(uint8_t __c0, uint8_t __c1, uint8_t __c2, uint8_t __c3,
++ uint8_t __c4, uint8_t __c5, uint8_t __c6, uint8_t __c7,
++ uint8_t __c8, uint8_t __c9, uint8_t __c10, uint8_t __c11,
++ uint8_t __c12, uint8_t __c13, uint8_t __c14, uint8_t __c15)
++ __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) __REQUIRE_CONSTANT(__c2)
++ __REQUIRE_CONSTANT(__c3) __REQUIRE_CONSTANT(__c4)
++ __REQUIRE_CONSTANT(__c5) __REQUIRE_CONSTANT(__c6)
++ __REQUIRE_CONSTANT(__c7) __REQUIRE_CONSTANT(__c8)
++ __REQUIRE_CONSTANT(__c9) __REQUIRE_CONSTANT(__c10)
++ __REQUIRE_CONSTANT(__c11) __REQUIRE_CONSTANT(__c12)
++ __REQUIRE_CONSTANT(__c13)
__REQUIRE_CONSTANT(__c14)
++ __REQUIRE_CONSTANT(__c15) {
++ return (v128_t)(__u8x16){__c0, __c1, __c2, __c3, __c4, __c5,
++ __c6, __c7, __c8, __c9, __c10, __c11,
++ __c12, __c13, __c14, __c15};
++}
++
++static __inline__ v128_t __DEFAULT_FN_ATTRS
+ wasm_i16x8_const(int16_t __c0, int16_t __c1, int16_t __c2, int16_t __c3,
+ int16_t __c4, int16_t __c5, int16_t __c6, int16_t __c7)
+ __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) __REQUIRE_CONSTANT(__c2)
+@@ -335,18 +381,41 @@ wasm_i16x8_const(int16_t __c0, int16_t __c1, int16_t _
+ }
+
+ static __inline__ v128_t __DEFAULT_FN_ATTRS
++wasm_u16x8_const(uint16_t __c0, uint16_t __c1, uint16_t __c2, uint16_t __c3,
++ uint16_t __c4, uint16_t __c5, uint16_t __c6, uint16_t __c7)
++ __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) __REQUIRE_CONSTANT(__c2)
++ __REQUIRE_CONSTANT(__c3) __REQUIRE_CONSTANT(__c4)
++ __REQUIRE_CONSTANT(__c5) __REQUIRE_CONSTANT(__c6)
++ __REQUIRE_CONSTANT(__c7) {
++ return (v128_t)(__u16x8){__c0, __c1, __c2, __c3, __c4, __c5, __c6, __c7};
++}
++
++static __inline__ v128_t __DEFAULT_FN_ATTRS
+ wasm_i32x4_const(int32_t __c0, int32_t __c1, int32_t __c2, int32_t __c3)
+ __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) __REQUIRE_CONSTANT(__c2)
+ __REQUIRE_CONSTANT(__c3) {
+ return (v128_t)(__i32x4){__c0, __c1, __c2, __c3};
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS
++wasm_u32x4_const(uint32_t __c0, uint32_t __c1, uint32_t __c2, uint32_t __c3)
++ __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) __REQUIRE_CONSTANT(__c2)
++ __REQUIRE_CONSTANT(__c3) {
++ return (v128_t)(__u32x4){__c0, __c1, __c2, __c3};
++}
++
+ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_const(int64_t __c0,
+ int64_t __c1)
+ __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) {
+ return (v128_t)(__i64x2){__c0, __c1};
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u64x2_const(uint64_t __c0,
++ uint64_t __c1)
++ __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) {
++ return (v128_t)(__u64x2){__c0, __c1};
++}
++
+ static __inline__ v128_t __DEFAULT_FN_ATTRS
+ wasm_f32x4_const(float __c0, float __c1, float __c2, float __c3)
+ __REQUIRE_CONSTANT(__c0) __REQUIRE_CONSTANT(__c1) __REQUIRE_CONSTANT(__c2)
+@@ -366,21 +435,42 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16
+ __c, __c, __c, __c, __c, __c, __c, __c};
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_const_splat(uint8_t
__c)
++ __REQUIRE_CONSTANT(__c) {
++ return (v128_t)(__u8x16){__c, __c, __c, __c, __c, __c, __c, __c,
++ __c, __c, __c, __c, __c, __c, __c, __c};
++}
++
+ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_const_splat(int16_t
__c)
+ __REQUIRE_CONSTANT(__c) {
+ return (v128_t)(__i16x8){__c, __c, __c, __c, __c, __c, __c, __c};
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_const_splat(uint16_t
__c)
++ __REQUIRE_CONSTANT(__c) {
++ return (v128_t)(__u16x8){__c, __c, __c, __c, __c, __c, __c, __c};
++}
++
+ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_const_splat(int32_t
__c)
+ __REQUIRE_CONSTANT(__c) {
+ return (v128_t)(__i32x4){__c, __c, __c, __c};
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_const_splat(uint32_t
__c)
++ __REQUIRE_CONSTANT(__c) {
++ return (v128_t)(__u32x4){__c, __c, __c, __c};
++}
++
+ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_const_splat(int64_t
__c)
+ __REQUIRE_CONSTANT(__c) {
+ return (v128_t)(__i64x2){__c, __c};
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u64x2_const_splat(uint64_t
__c)
++ __REQUIRE_CONSTANT(__c) {
++ return (v128_t)(__u64x2){__c, __c};
++}
++
+ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_f32x4_const_splat(float __c)
+ __REQUIRE_CONSTANT(__c) {
+ return (v128_t)(__f32x4){__c, __c, __c, __c};
+@@ -396,6 +486,11 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16
+ __a, __a, __a, __a, __a, __a, __a, __a};
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_splat(uint8_t __a) {
++ return (v128_t)(__u8x16){__a, __a, __a, __a, __a, __a, __a, __a,
++ __a, __a, __a, __a, __a, __a, __a, __a};
++}
++
+ static __inline__ int8_t __DEFAULT_FN_ATTRS wasm_i8x16_extract_lane(v128_t
__a,
+ int __i)
+ __REQUIRE_CONSTANT(__i) {
+@@ -417,10 +512,23 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16
+ return (v128_t)__v;
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_replace_lane(v128_t
__a,
++ int __i,
++ uint8_t
__b)
++ __REQUIRE_CONSTANT(__i) {
++ __u8x16 __v = (__u8x16)__a;
++ __v[__i] = __b;
++ return (v128_t)__v;
++}
++
+ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_splat(int16_t __a) {
+ return (v128_t)(__i16x8){__a, __a, __a, __a, __a, __a, __a, __a};
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_splat(uint16_t __a) {
++ return (v128_t)(__u16x8){__a, __a, __a, __a, __a, __a, __a, __a};
++}
++
+ static __inline__ int16_t __DEFAULT_FN_ATTRS wasm_i16x8_extract_lane(v128_t
__a,
+ int __i)
+ __REQUIRE_CONSTANT(__i) {
+@@ -441,16 +549,32 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8
+ return (v128_t)__v;
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_replace_lane(
++ v128_t __a, int __i, uint16_t __b) __REQUIRE_CONSTANT(__i) {
++ __u16x8 __v = (__u16x8)__a;
++ __v[__i] = __b;
++ return (v128_t)__v;
++}
++
+ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_splat(int32_t __a) {
+ return (v128_t)(__i32x4){__a, __a, __a, __a};
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_splat(uint32_t __a) {
++ return (v128_t)(__u32x4){__a, __a, __a, __a};
++}
++
+ static __inline__ int32_t __DEFAULT_FN_ATTRS wasm_i32x4_extract_lane(v128_t
__a,
+ int __i)
+ __REQUIRE_CONSTANT(__i) {
+ return ((__i32x4)__a)[__i];
+ }
+
++static __inline__ uint32_t __DEFAULT_FN_ATTRS
++wasm_u32x4_extract_lane(v128_t __a, int __i) __REQUIRE_CONSTANT(__i) {
++ return ((__u32x4)__a)[__i];
++}
++
+ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_replace_lane(v128_t
__a,
+ int __i,
+ int32_t
__b)
+@@ -460,21 +584,44 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4
+ return (v128_t)__v;
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_replace_lane(
++ v128_t __a, int __i, uint32_t __b) __REQUIRE_CONSTANT(__i) {
++ __u32x4 __v = (__u32x4)__a;
++ __v[__i] = __b;
++ return (v128_t)__v;
++}
++
+ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_splat(int64_t __a) {
+ return (v128_t)(__i64x2){__a, __a};
+ }
+
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u64x2_splat(uint64_t __a) {
++ return (v128_t)(__u64x2){__a, __a};
++}
++
+ static __inline__ int64_t __DEFAULT_FN_ATTRS wasm_i64x2_extract_lane(v128_t
__a,
+ int __i)
+ __REQUIRE_CONSTANT(__i) {
+ return ((__i64x2)__a)[__i];
+ }
+
++static __inline__ uint64_t __DEFAULT_FN_ATTRS
++wasm_u64x2_extract_lane(v128_t __a, int __i) __REQUIRE_CONSTANT(__i) {
++ return ((__u64x2)__a)[__i];
++}
++
+ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i64x2_replace_lane(v128_t
__a,
+ int __i,
+ int64_t
__b)
+ __REQUIRE_CONSTANT(__i) {
+ __i64x2 __v = (__i64x2)__a;
++ __v[__i] = __b;
++ return (v128_t)__v;
++}
++
++static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u64x2_replace_lane(
++ v128_t __a, int __i, uint64_t __b) __REQUIRE_CONSTANT(__i) {
++ __u64x2 __v = (__u64x2)__a;
+ __v[__i] = __b;
+ return (v128_t)__v;
+ }