[LLVMbugs] [Bug 20456] New: [AArch64] Integer exceeds imm range
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Fri Jul 25 18:58:06 PDT 2014
http://llvm.org/bugs/show_bug.cgi?id=20456
Bug ID: 20456
Summary: [AArch64] Integer exceeds imm range
Product: tools
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: llvm-as
Assignee: unassignedbugs at nondot.org
Reporter: zhaoshiz at codeaurora.org
CC: apazos at codeaurora.org, llvmbugs at cs.uiuc.edu
Classification: Unclassified
GCC-4.9 is able to handle the test case below and generate:
> sub w0, w0, 0x1
but LLVM is producing:
> add w0, w0, 0xffffffff
$ clang++ --target=aarch64-linux-gnu -mfpu=neon
--sysroot=$GCC64/aarch64-linux-gnu/libc --gcc-toolchain=$GCC64 -Os -c imm.cpp
-no-integrated-as
/tmp/imm-c1564c.s: Assembler messages:
/tmp/imm-c1564c.s:11: Error: immediate out of range
clang-3.5: error: assembler command failed with exit code 1 (use -v to see
invocation)
$ cat imm.cpp
int ref_count_;
inline int AsmInc(volatile int* ptr,
/*volatile*/ int increment) {
int result;
__asm__ __volatile__ (
"add %w[result], %w[result], %w[increment]\n\t"
: [result]"=&r" (result),
[ptr]"+Q" (*ptr)
: [increment]"IJr" (increment)
: "memory"
);
return result;
}
int Release() {
int ret = AsmInc(&ref_count_, -1);
if (ret == 0) {
return -1;
}
return ret;
}
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140726/3c9a6227/attachment.html>
More information about the llvm-bugs
mailing list