[llvm-dev] lifetime_start/end
Abid Malik via llvm-dev
llvm-dev at lists.llvm.org
Wed Sep 30 02:28:22 PDT 2020
Hello,
What intrinsics "@llvm.lifetime.start/@llvm.lifetime.end" really do? As per
my knowledge, they define the live ranges of variables. In the following
code section, they seem redundant. However, when I remove them, the
behavior of the code becomes non-deterministic. The live ranges of the
variables defined by them are never used in the code.
Thanks,
---------------
%37 = bitcast i32* %7 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %37) #5
store i32 0, i32* %7, align 4, !tbaa !4
%38 = bitcast i32* %8 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %38) #5
store i32 99, i32* %8, align 4, !tbaa !4
%39 = bitcast i32* %9 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %39) #5
store i32 1, i32* %9, align 4, !tbaa !4
%40 = bitcast i32* %10 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %40) #5
store i32 0, i32* %10, align 4, !tbaa !4
call void @__kmpc_for_static_init_4(%struct.ident_t* nonnull @0, i32 %23,
i32 34, i32* nonnull %10, i32* nonnull %7, i32* nonnull %8, i32* nonnull
%9, i32 1, i32 1) #5
%41 = load i32, i32* %8, align 4, !tbaa !4
%42 = icmp slt i32 %41, 99
%43 = select i1 %42, i32 %41, i32 99
store i32 %43, i32* %8, align 4, !tbaa !4
%44 = load i32, i32* %7, align 4, !tbaa !4
br label %45
45: ; preds = %49, %36
%46 = phi i32 [ %44, %36 ], [ %52, %49 ]
%47 = load i32, i32* %8, align 4, !tbaa !4
%48 = icmp sgt i32 %46, %47
br i1 %48, label %53, label %49
49: ; preds = %45
%50 = shl nsw i32 %46, 1
%51 = call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1)
getelementptr inbounds ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0), i32
%50)
%52 = add nsw i32 %46, 1
br label %45
53: ; preds = %45
call void @__kmpc_for_static_fini(%struct.ident_t* nonnull @0, i32 %23) #5
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %40) #5
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %39) #5
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %38) #5
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %37) #5
call void @__kmpc_barrier(%struct.ident_t* nonnull @1, i32 %23) #5
--
Abid M. Malik
******************************************************
"I have learned silence from the talkative, toleration from the intolerant,
and kindness from the unkind"---Gibran
"Success is not for the chosen few, but for the few who choose" --- John
Maxwell
"Being a good person does not depend on your religion or status in life,
your race or skin color, political views or culture. IT DEPENDS ON HOW GOOD
YOU TREAT OTHERS"--- Abid
"The Universe is talking to us, and the language of the Universe is
mathematics."----Abid
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200930/f766c386/attachment.html>
More information about the llvm-dev
mailing list