[LLVMbugs] [Bug 22167] New: '*p++' uses an extra register
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Thu Jan 8 17:35:12 PST 2015
http://llvm.org/bugs/show_bug.cgi?id=22167
Bug ID: 22167
Summary: '*p++' uses an extra register
Product: libraries
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: Common Code Generator Code
Assignee: unassignedbugs at nondot.org
Reporter: paul_robinson at playstation.sony.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
Created attachment 13650
--> http://llvm.org/bugs/attachment.cgi?id=13650&action=edit
small.cpp
This is on x86-64 Linux, compiling at -O2.
The relevant bit from the source looks like this:
while (1) {
Op op = static_cast<Op>(*pData++);
switch (op) {
...
Some cases in the switch will increment pData further, others don't.
The curious thing is that the generated code maintains copies of both
the un-incremented and post-incremented values of pData, basically
using two registers where one would be sufficient. Ultimately this
requires a couple extra register-copy instructions to keep everything
sorted out.
I wouldn't be all that fussed, except having two copies of pData around
apparently causes debug info to get confused about which register has
the correct value in it, and sometimes the debug info claims pData is
not available when actually it is.
--
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/20150109/41cae006/attachment.html>
More information about the llvm-bugs
mailing list