[aarch64-port-dev ] The old bugs are the good ones

Andrew Haley aph at redhat.com
Tue Nov 12 11:18:12 PST 2013


Oh dear.  Here I go again, assuming that the labs() library function returns
a positive integer.  It doesn't, as any fule kno, but I forgot.

Andrew.


# HG changeset patch
# User aph
# Date 1384283598 18000
#      Tue Nov 12 14:13:18 2013 -0500
# Node ID feef9250f2feffe79db7939b5be389e8ecc8c5e0
# Parent  31a8727c3583744b28c9ac7da70bca4332b75967
Fix integer overflow with largest negative long

diff -r 31a8727c3583 -r feef9250f2fe src/cpu/aarch64/vm/assembler_aarch64.cpp
--- a/src/cpu/aarch64/vm/assembler_aarch64.cpp	Tue Nov 12 14:08:03 2013 +0000
+++ b/src/cpu/aarch64/vm/assembler_aarch64.cpp	Tue Nov 12 14:13:18 2013 -0500
@@ -1466,11 +1466,11 @@

 bool Assembler::operand_valid_for_add_sub_immediate(long imm) {
   bool shift = false;
-  imm = labs(imm);
-  if (imm < (1 << 12))
+  unsigned long uimm = labs(imm);
+  if (uimm < (1 << 12))
     return true;
-  if (imm < (1 << 24)
-      && ((imm >> 12) << 12 == imm)) {
+  if (uimm < (1 << 24)
+      && ((uimm >> 12) << 12 == uimm)) {
     return true;
   }
   return false;



More information about the aarch64-port-dev mailing list