Fix a problem building the ARM assembler using LLVM.
authorLoria <Loria@phantasia.org>
Mon, 1 Feb 2016 14:32:25 +0000 (14:32 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 1 Feb 2016 14:32:25 +0000 (14:32 +0000)
PR target/19311
* config/tc-arm.c (encode_arm_immediate): Recode to improve
efficiency and avoid an LLVM loop optimization bug.

gas/ChangeLog
gas/config/tc-arm.c

index 027b55675d1c44c3a3184c969b77798a6a3c46e8..6e7319d96c2a035155e8de6a71ab901721bf8f04 100644 (file)
@@ -1,3 +1,9 @@
+2016-02-01  Loria  <Loria@phantasia.org>
+
+       PR target/19311
+       * config/tc-arm.c (encode_arm_immediate): Recode to improve
+       efficiency and avoid an LLVM loop optimization bug.
+
 2016-02-01  Nick Clifton  <nickc@redhat.com>
 
        * config/tc-microblaze.c (parse_imm): Fix compile time warning
index 4a16267f5396b4f46eb19fb655bbe7614cd52cdd..055e525a6d9a9c207ea285b9c63fd815b48290fd 100644 (file)
@@ -7268,7 +7268,10 @@ encode_arm_immediate (unsigned int val)
 {
   unsigned int a, i;
 
-  for (i = 0; i < 32; i += 2)
+  if (val <= 0xff)
+    return val;
+
+  for (i = 2; i < 32; i += 2)
     if ((a = rotate_left (val, i)) <= 0xff)
       return a | (i << 7); /* 12-bit pack: [shift-cnt,const].  */