[llvm-bugs] [Bug 42373] New: AARCH64 ADRP/ADD Code Size Regression between v6 and v7
via llvm-bugs
llvm-bugs at lists.llvm.org
Mon Jun 24 12:17:49 PDT 2019
https://bugs.llvm.org/show_bug.cgi?id=42373
Bug ID: 42373
Summary: AARCH64 ADRP/ADD Code Size Regression between v6 and
v7
Product: new-bugs
Version: 7.0
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: new bugs
Assignee: unassignedbugs at nondot.org
Reporter: rrmills at gmail.com
CC: htmldeveloper at gmail.com, llvm-bugs at lists.llvm.org
Created attachment 22134
--> https://bugs.llvm.org/attachment.cgi?id=22134&action=edit
Example of simple code the reproduces issue
In developing for an extremely memory-constrained AARCH64 embedded environment,
I noticed a code size regression between versions 6 and 7. Specifically, I see
the regression when performing accesses into global structures.
Earlier versions (6 and older) would compile a single ADRP/ADD to the front of
the global struct at the beginning of a function. Accesses into the structures
would then be LDR/STR with offsets to the original calculated address.
Later versions are doing ADRP/ADD (followed by STR/LDR) combos on every access
into the struct.
The issue seems to come up in LLC. The IR produced by versions 6/7/8 seem
fundamentally identical. Furthermore, I can feed IR generated by llvm 6 into
LLC for versions 6, 7, and 8, and 7/8 produce the larger code. In all cases
I am compiling with '-Oz'
I have a bit more info in this thread on the llvm mailing list. I have also
attached a trivial example in which versions 7 and later will produce larger
code than versions 6 and older.
LLVM Mailing list thread:
http://lists.llvm.org/pipermail/llvm-dev/2019-May/132424.html
--
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/20190624/b7cb7bbf/attachment.html>
More information about the llvm-bugs
mailing list