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; + }