Bug 1481097 - vixl: Remove vixl assembler workaround for gcc 4.8.2 bug. r?sstangl draft
authorChris Peterson <cpeterson@mozilla.com>
Sun, 22 Jul 2018 00:17:37 -0700
changeset 826871 26d5f8f2a527d5bf0b071b856d7fad9785f8d1c8
parent 826870 114a3bb0d922d148b1d3605214a8e27bd71e9646
child 826872 959344a01b6485be27f9510baefedd3b00ad434a
child 826874 8dd23750589f0e38fcadf60b214c5778d7743a97
push id118399
push usercpeterson@mozilla.com
push dateSun, 05 Aug 2018 22:49:36 +0000
reviewerssstangl
bugs1481097, 1219050, 1444274
milestone63.0a1
Bug 1481097 - vixl: Remove vixl assembler workaround for gcc 4.8.2 bug. r?sstangl This gcc 4.8.2 workaround (from bug 1219050) is no longer needed because Firefox currently requires gcc 6.1 or later (as of bug 1444274). MozReview-Commit-ID: HlJwJ2dXdrN
js/src/jit/arm64/vixl/Assembler-vixl.h
js/src/jit/arm64/vixl/MozAssembler-vixl.cpp
--- a/js/src/jit/arm64/vixl/Assembler-vixl.h
+++ b/js/src/jit/arm64/vixl/Assembler-vixl.h
@@ -4062,21 +4062,19 @@ class Assembler : public MozBaseAssemble
   void LoadStoreStructVerify(const VRegister& vt,
                              const MemOperand& addr,
                              Instr op);
 
   void Prefetch(PrefetchOperation op,
                 const MemOperand& addr,
                 LoadStoreScalingOption option = PreferScaledOffset);
 
-  // TODO(all): The third parameter should be passed by reference but gcc 4.8.2
-  // reports a bogus uninitialised warning then.
   BufferOffset Logical(const Register& rd,
                        const Register& rn,
-                       const Operand operand,
+                       const Operand& operand,
                        LogicalOp op);
   BufferOffset LogicalImmediate(const Register& rd,
                                 const Register& rn,
                                 unsigned n,
                                 unsigned imm_s,
                                 unsigned imm_r,
                                 LogicalOp op);
 
--- a/js/src/jit/arm64/vixl/MozAssembler-vixl.cpp
+++ b/js/src/jit/arm64/vixl/MozAssembler-vixl.cpp
@@ -410,17 +410,17 @@ void Assembler::nop(Instruction* at) {
 
 
 void Assembler::csdb(Instruction* at) {
   hint(at, CSDB);
 }
 
 
 BufferOffset Assembler::Logical(const Register& rd, const Register& rn,
-                                const Operand operand, LogicalOp op)
+                                const Operand& operand, LogicalOp op)
 {
   VIXL_ASSERT(rd.size() == rn.size());
   if (operand.IsImmediate()) {
     int64_t immediate = operand.immediate();
     unsigned reg_size = rd.size();
 
     VIXL_ASSERT(immediate != 0);
     VIXL_ASSERT(immediate != -1);
@@ -719,9 +719,8 @@ void MozBaseAssembler::RetargetNearBranc
 
 
 void MozBaseAssembler::RetargetFarBranch(Instruction* i, uint8_t** slot, uint8_t* dest, Condition cond) {
   MOZ_CRASH("RetargetFarBranch()");
 }
 
 
 }  // namespace vixl
-