39 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 62; RUN: opt < %s -passes=dfsan -dfsan-track-origins=1 -dfsan-instrument-with-call-threshold=0 -dfsan-add-global-name-suffix=0 -S | FileCheck %s3target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"4target triple = "x86_64-unknown-linux-gnu"5 6define void @store_threshold(ptr %p, [2 x i64] %a) {7; CHECK-LABEL: define void @store_threshold(8; CHECK-SAME: ptr [[P:%.*]], [2 x i64] [[A:%.*]]) {9; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr getelementptr inbounds ([200 x i32], ptr @__dfsan_arg_origin_tls, i64 0, i64 1), align 410; CHECK-NEXT: [[TMP2:%.*]] = load [2 x i8], ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 211; CHECK-NEXT: [[TMP3:%.*]] = extractvalue [2 x i8] [[TMP2]], 012; CHECK-NEXT: [[TMP4:%.*]] = extractvalue [2 x i8] [[TMP2]], 113; CHECK-NEXT: [[TMP5:%.*]] = or i8 [[TMP3]], [[TMP4]]14; CHECK-NEXT: [[TMP6:%.*]] = ptrtoint ptr [[P]] to i6415; CHECK-NEXT: [[TMP7:%.*]] = xor i64 [[TMP6]], 8796093022208016; CHECK-NEXT: [[TMP8:%.*]] = inttoptr i64 [[TMP7]] to ptr17; CHECK-NEXT: [[TMP9:%.*]] = add i64 [[TMP7]], 1759218604441618; CHECK-NEXT: [[TMP10:%.*]] = inttoptr i64 [[TMP9]] to ptr19; CHECK-NEXT: [[TMP11:%.*]] = insertelement <8 x i8> poison, i8 [[TMP5]], i32 020; CHECK-NEXT: [[TMP12:%.*]] = insertelement <8 x i8> [[TMP11]], i8 [[TMP5]], i32 121; CHECK-NEXT: [[TMP13:%.*]] = insertelement <8 x i8> [[TMP12]], i8 [[TMP5]], i32 222; CHECK-NEXT: [[TMP14:%.*]] = insertelement <8 x i8> [[TMP13]], i8 [[TMP5]], i32 323; CHECK-NEXT: [[TMP15:%.*]] = insertelement <8 x i8> [[TMP14]], i8 [[TMP5]], i32 424; CHECK-NEXT: [[TMP16:%.*]] = insertelement <8 x i8> [[TMP15]], i8 [[TMP5]], i32 525; CHECK-NEXT: [[TMP17:%.*]] = insertelement <8 x i8> [[TMP16]], i8 [[TMP5]], i32 626; CHECK-NEXT: [[TMP18:%.*]] = insertelement <8 x i8> [[TMP17]], i8 [[TMP5]], i32 727; CHECK-NEXT: [[TMP19:%.*]] = getelementptr <8 x i8>, ptr [[TMP8]], i32 028; CHECK-NEXT: store <8 x i8> [[TMP18]], ptr [[TMP19]], align 129; CHECK-NEXT: [[TMP20:%.*]] = getelementptr <8 x i8>, ptr [[TMP8]], i32 130; CHECK-NEXT: store <8 x i8> [[TMP18]], ptr [[TMP20]], align 131; CHECK-NEXT: call void @__dfsan_maybe_store_origin(i8 [[TMP5]], ptr [[P]], i64 16, i32 [[TMP1]])32; CHECK-NEXT: store [2 x i64] [[A]], ptr [[P]], align 833; CHECK-NEXT: ret void34;35 36 store [2 x i64] %a, ptr %p37 ret void38}39