llvm-6502/test/CodeGen/X86/x86-64-malloc.ll
Chris Lattner 0b18e59336 Fix codegen to compute the size of an allocation by multiplying the
size by the array amount as an i32 value instead of promoting from
i32 to i64 then doing the multiply.  Not doing this broke wrap-around
assumptions that the optimizers (validly) made.  The ultimate real
fix for this is to introduce i64 version of alloca and remove mallocinst.

This fixes PR3829


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67093 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-17 19:36:00 +00:00

11 lines
303 B
LLVM

; RUN: llvm-as < %s | llc -march=x86-64 | grep {shll.*3, %edi}
; PR3829
; The generated code should multiply by 3 (sizeof i8*) as an i32,
; not as an i64!
define i8** @test(i32 %sz) {
%sub = add i32 %sz, 536870911 ; <i32> [#uses=1]
%call = malloc i8*, i32 %sub ; <i8**> [#uses=1]
ret i8** %call
}