[llvm-dev] byval argument causes llvm to crash after inlining
Friedman, Eli via llvm-dev
llvm-dev at lists.llvm.org
Tue Sep 25 15:06:54 PDT 2018
Probably, yes: lowering a byval parameter requires allocating space on
the stack, so it has to be in the same address space.
-Eli
On 9/25/2018 3:00 PM, Pan, Wei via llvm-dev wrote:
> It is problematic when byval argument is not from address space 0. When the default alloca address space is 0, should we consider this IR illegal?
>
> define internal i32 @bar(i32 addrspace(1)* byval %a) alwaysinline
>
>
> From: Reid Kleckner [mailto:rnk at google.com]
> Sent: Tuesday, September 25, 2018 2:38 PM
> To: Pan, Wei <wei.pan at intel.com>
> Cc: llvm-dev <llvm-dev at lists.llvm.org>
> Subject: Re: [llvm-dev] byval argument causes llvm to crash after inlining
>
> Well, they are from address space zero, just like all allocas and other stack memory, right?
>
> On Tue, Sep 25, 2018 at 1:45 PM Pan, Wei via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> Hello,
>
> With the following reduced test case, cmd “opt -always-inline t.ll” crashes after inlining. Notice that byval argument %a will be remapped to %1 below, and consequently produces an illegal store.
>
> %1 = alloca i32, align 4
> store i32 * %1, i32 addrspace(1)** %a.addr, align 8
>
> Looks like Inliner assumes that byval arguments are from address space 0. Or this is just a bug in inliner?
>
> Thanks,
> Wei
>
> t.ll:
>
> define i32 @foo(i32 addrspace(1)* %x) {
> entry:
> %y = call i32 @bar(i32 addrspace(1)* %x)
> ret i32 %y
> }
>
> define internal i32 @bar(i32 addrspace(1)* byval %a) alwaysinline {
> %a.addr = alloca i32 addrspace(1)*, align 8
> store i32 addrspace(1)* %a, i32 addrspace(1)** %a.addr, align 8
> %a1 = load i32 addrspace(1)* , i32 addrspace(1)** %a.addr, align 8
> %b = load i32, i32 addrspace(1)* %a1, align 4
> ret i32 %b
> }
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
More information about the llvm-dev
mailing list