[LLVMbugs] [Bug 7195] New: [RFE] Support 16-bit x86 code generation

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri May 21 20:43:45 PDT 2010


http://llvm.org/bugs/show_bug.cgi?id=7195

           Summary: [RFE] Support 16-bit x86 code generation
           Product: libraries
           Version: trunk
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Backend: X86
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: cdavis at mymail.mines.edu
                CC: llvmbugs at cs.uiuc.edu


While trying to compile Wine with clang, the configure script produced this:

checking whether 16-bit code can be built correctly... no
configure: error: Xcode 3.x cannot build 16-bit code correctly. Use
--disable-win16 if you don't need 16-bit support

But the linker was fixed in Xcode 3.2, and it works with GCC, so I did a little
investigation and found that the test program they use does not compile with
clang -integrated-as:

$ cat test.c
asm(".text\n"
    "bad:\tnop;nop;\n"
    "good:\tnop;nop;\n"
    ".globl _testfunc\n"
    "_testfunc:\tcallw good");

extern void testfunc();

int main(void)
{
    unsigned short *p = (unsigned short*)testfunc;
    return p[0] != 0xe866 || p[0] != 0xfffa;
}

$ clang test.c
<inline asm>:5:12: error: unrecognized instruction
_testfunc:      callw good
                ^
1 error generated.

Since -integrated-as is the default on Mac OS X now, I either have to pass
--disable-win16 to Wine configure or set CFLAGS="-no-integrated-as".

Now I understand that 16-bit code makes you guys shudder, but it would be
really nice if I could just drop in clang and build Wine without setting any
additional settings. Besides, imagine the other possible applications. The Wine
people, for example, have expressed general interest in a 16-bit compiler.

I'll even work on this (since I know no one else wants to). I'm just filing
this to keep track of what the rest of you probably consider a non-issue.

I know in the past that I suggested making a separate x86-16 backend (which
really made Chris recoil in horror, like I predicted he would), but that's not
what I'm suggesting here. I just want to extend the existing x86 backend to
support 16-bit codegen.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list