From 4f1d62057fa4894e504458027ac3228404144f7d Mon Sep 17 00:00:00 2001 From: Loria Date: Mon, 1 Feb 2016 14:32:25 +0000 Subject: [PATCH] Fix a problem building the ARM assembler using LLVM. PR target/19311 * config/tc-arm.c (encode_arm_immediate): Recode to improve efficiency and avoid an LLVM loop optimization bug. --- gas/ChangeLog | 6 ++++++ gas/config/tc-arm.c | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 027b55675d1..6e7319d96c2 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2016-02-01 Loria + + 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 * config/tc-microblaze.c (parse_imm): Fix compile time warning diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 4a16267f539..055e525a6d9 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -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]. */ -- 2.30.2