[llvm-dev] byval argument causes llvm to crash after inlining (original) (raw)

Pan, Wei via llvm-dev llvm-dev at lists.llvm.org
Tue Sep 25 13:36:23 PDT 2018


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 }

-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180925/e8b368ee/attachment.html>



More information about the llvm-dev mailing list