mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-24 05:23:45 +02:00
b36621a78e
Summary: Earlier CaptureTracking would assume all "interesting" operands to a call or invoke were its arguments. With operand bundles this is no longer true. Note: an earlier change got `doesNotCapture` working correctly with operand bundles. This change uses DSE to test the changes to CaptureTracking. DSE is a vehicle for testing only, and is not directly involved in this change. Reviewers: reames, majnemer Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14306 llvm-svn: 252095
30 lines
640 B
LLVM
30 lines
640 B
LLVM
; RUN: opt -S -dse < %s | FileCheck %s
|
|
|
|
declare void @f()
|
|
declare noalias i8* @malloc(i32) nounwind
|
|
|
|
define void @test_0() {
|
|
; CHECK-LABEL: @test_0(
|
|
%m = call i8* @malloc(i32 24)
|
|
tail call void @f() [ "unknown"(i8* %m) ]
|
|
; CHECK: store i8 -19, i8* %m
|
|
store i8 -19, i8* %m
|
|
ret void
|
|
}
|
|
|
|
define i8* @test_1() {
|
|
; CHECK-LABEL: @test_1(
|
|
%m = call i8* @malloc(i32 24)
|
|
tail call void @f() [ "unknown"(i8* %m) ]
|
|
store i8 -19, i8* %m
|
|
tail call void @f()
|
|
store i8 101, i8* %m
|
|
|
|
; CHECK: tail call void @f() [ "unknown"(i8* %m) ]
|
|
; CHECK: store i8 -19, i8* %m
|
|
; CHECK: tail call void @f()
|
|
; CHECK: store i8 101, i8* %m
|
|
|
|
ret i8* %m
|
|
}
|