[LLVMbugs] [Bug 3390] New: -m32 inline asm: Do not know how to expand the result of this operator

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Sat Jan 24 06:47:23 PST 2009


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

           Summary: -m32 inline asm: Do not know how to expand the result of
                    this operator
           Product: new-bugs
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: edwintorok at gmail.com
                CC: llvmbugs at cs.uiuc.edu


After my attempt to fix the kernel to use same types for input/output regs, I
get a failure on 32-bit:

Am I doing something wrong?

$ llvm-gcc testcase-min.i -m32
ExpandIntegerResult #0: 0x28ce838: i64 = Register  RCX
cc1:
/home/edwin/llvm-bootstrap/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp:930:
void llvm::DAGTypeLegalizer::ExpandIntegerResult(llvm::SDNode*, unsigned int):
Assertion `0 && "Do not know how to expand the result of this operator!"'
failed.
testcase-min.i:17: internal compiler error: Aborted
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.

C reduced testcase below, bytecode attached:
/* testcase */
typedef unsigned int __kernel_size_t;
typedef long long __kernel_loff_t;
typedef __kernel_loff_t loff_t;
typedef __kernel_size_t size_t;
__attribute__ ((regparm (0)))
     long sys_sendfile64 (int out_fd, int in_fd, loff_t * offset,
                          size_t count)
{
  if (offset)
    {
      if (__builtin_expect (!!((
                                 {
                                 __typeof__ (*(offset)) __ret_pu;
                                 __typeof__ (*(offset)) __pu_val;
                                 switch (sizeof (*(offset)))
                                 {
case 8:
      asm volatile ("call __put_user_8": "=a" (__ret_pu): "A" ((typeof
(*(offset))) (__pu_val)), "c" (offset):"ebx");}
                                 (int) __ret_pu;}
                               )), 0))
        return -14;
    }
}


-- 
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