~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/Transforms/ScalarRepl/negative-memset.ll

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; PR12202
 
2
; RUN: opt < %s -scalarrepl -S
 
3
; Ensure that we do not hang or crash when feeding a negative value to memset
 
4
 
 
5
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32"
 
6
target triple = "i686-pc-win32"
 
7
 
 
8
define i32 @test() nounwind {
 
9
entry:
 
10
  %retval = alloca i32, align 4
 
11
  %buff = alloca [1 x i8], align 1
 
12
  store i32 0, i32* %retval
 
13
  %0 = bitcast [1 x i8]* %buff to i8*
 
14
  call void @llvm.memset.p0i8.i32(i8* %0, i8 0, i32 1, i32 1, i1 false)
 
15
  %arraydecay = getelementptr inbounds [1 x i8], [1 x i8]* %buff, i32 0, i32 0
 
16
  call void @llvm.memset.p0i8.i32(i8* %arraydecay, i8 -1, i32 -8, i32 1, i1 false)      ; Negative 8!
 
17
  ret i32 0
 
18
}
 
19
 
 
20
declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) nounwind