mozilla-bmo1512162.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Sat, 04 Dec 2021 11:19:16 +0100
branchfirefox94
changeset 1168 c384af864671
parent 1152 4cfe46c9a944
child 1190 2a24a948b5cf
permissions -rw-r--r--
Firefox 94.0.2

# HG changeset patch
# Parent  f9f5af4c88f2f3172a4f30d7e42bd2131bf24146
This fixes a broken build for gcc < 9 on ppc64le.
This patch can be removed for newer gcc-versions.

diff --git a/js/xpconnect/src/XPCWrappedNative.cpp b/js/xpconnect/src/XPCWrappedNative.cpp
--- a/js/xpconnect/src/XPCWrappedNative.cpp
+++ b/js/xpconnect/src/XPCWrappedNative.cpp
@@ -1072,17 +1072,21 @@ class MOZ_STACK_CLASS CallMethodHelper f
                                                uint32_t* result);
 
   MOZ_ALWAYS_INLINE bool GetInterfaceTypeFromParam(const nsXPTType& type,
                                                    nsID* result) const;
 
   MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex,
                                            MutableHandleValue srcp) const;
 
-  MOZ_ALWAYS_INLINE bool GatherAndConvertResults();
+#if !(__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
+// Work around a compiler bug on ppc64le (bug 1512162).
+  MOZ_ALWAYS_INLINE
+#endif
+  bool GatherAndConvertResults();
 
   MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath();
 
   nsXPTCVariant* GetDispatchParam(uint8_t paramIndex) {
     if (paramIndex >= mJSContextIndex) {
       paramIndex += 1;
     }
     if (paramIndex >= mOptArgcIndex) {
@@ -1119,17 +1123,21 @@ class MOZ_STACK_CLASS CallMethodHelper f
 
   {
     // Success checked later.
     mIFaceInfo->GetMethodInfo(mVTableIndex, &mMethodInfo);
   }
 
   ~CallMethodHelper();
 
-  MOZ_ALWAYS_INLINE bool Call();
+#if !(__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
+// Work around a compiler bug on ppc64le (bug 1512162).
+  MOZ_ALWAYS_INLINE
+#endif
+  bool Call();
 
   // Trace implementation so we can put our CallMethodHelper in a Rooted<T>.
   void trace(JSTracer* aTrc);
 };
 
 // static
 bool XPCWrappedNative::CallMethod(XPCCallContext& ccx,
                                   CallMode mode /*= CALL_METHOD */) {