Skip to content

-m32 inline asm: Do not know how to expand the result of this operator #3762

@edwintorok

Description

@edwintorok
Bugzilla Link 3390
Resolution WONTFIX
Resolved on Apr 17, 2019 16:56
Version unspecified
OS Linux
Depends On llvm/llvm-bugzilla-archive#3391

Extended Description

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzillawontfixIssue is real, but we can't or won't fix it. Not invalid

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions