[llvm-bugs] [Bug 38826] New: [7, trunk, regression][x86 backend] .cfi_offset doesn't allow %eip in 32bit mode

via llvm-bugs llvm-bugs at lists.llvm.org
Tue Sep 4 10:28:16 PDT 2018


https://bugs.llvm.org/show_bug.cgi?id=38826

            Bug ID: 38826
           Summary: [7, trunk, regression][x86 backend]  .cfi_offset
                    doesn't allow %eip in 32bit mode
           Product: new-bugs
           Version: 7.0
          Hardware: PC
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: new bugs
          Assignee: unassignedbugs at nondot.org
          Reporter: iains-llvm at btconnect.com
                CC: llvm-bugs at lists.llvm.org

Created attachment 20839
  --> https://bugs.llvm.org/attachment.cgi?id=20839&action=edit
possible patch

For 7.0.0rc2 and trunk, the following code:

 .text
 .align 4
 .globl foo

foo:
 .cfi_startproc

 movl (%edx), %ecx
 movl 4(%edx), %ebx
 movl 8(%edx), %esi
 movl 12(%edx), %edi
 movl 16(%edx), %ebp
 .cfi_def_cfa %edx, 0
 .cfi_offset %eip, 24
 .cfi_register %esp, %ecx
 movl %ecx, %esp

 jmp *24(%edx)

 .cfi_endproc

===

produces 
$ ..../bin/llvm-mc -triple i386-unknown-unkown -filetype obj foo.s -o t.o
....:259:18: error: register %eip is only available in 64-bit mode
 .cfi_offset %eip, 24

====

this seems to be down to : r336217 

"[X86][AsmParser] Don't consider %eip as a valid register outside of 32-bit
mode."

... except that we are in 32b mode ...

The issue is that we want to exclude eip from use in base+index modes, but not
from all uses?

-- 
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/20180904/a725affe/attachment.html>


More information about the llvm-bugs mailing list