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

Reply via email to