From 7693b116a1565d7428460d66c17a2e9b50148dcc Mon Sep 17 00:00:00 2001 From: Tobias Grosser Date: Sat, 18 Mar 2017 20:10:07 +0000 Subject: [OpenMP] Do not emit lifetime markers for context In commit r219005 lifetime markers have been introduced to mark the lifetime of the OpenMP context data structure. However, their use seems incorrect and recently caused a miscompile in ASC_Sequoia/CrystalMk after r298053 which was not at all related to r298053. r298053 only caused a change in the loop order, as this change resulted in a different isl internal representation which caused the scheduler to derive a different schedule. This change then caused the IR to change, which apparently created a pattern in which LLVM exploites the lifetime markers. It seems we are using the OpenMP context outside of the lifetime markers. Even though CrystalMk could probably be fixed by expanding the scope of the lifetime markers, it is not clear what happens in case the OpenMP function call is in a loop which will cause a sequence of starting and ending lifetimes. As it is unlikely that the lifetime markers give any performance benefit, we just drop them to remove complexity. llvm-svn: 298192 --- polly/test/Isl/CodeGen/OpenMP/loop-body-references-outer-values.ll | 2 -- 1 file changed, 2 deletions(-) (limited to 'polly/test/Isl/CodeGen/OpenMP/loop-body-references-outer-values.ll') diff --git a/polly/test/Isl/CodeGen/OpenMP/loop-body-references-outer-values.ll b/polly/test/Isl/CodeGen/OpenMP/loop-body-references-outer-values.ll index 32f88d558ea..9bbc125acf6 100644 --- a/polly/test/Isl/CodeGen/OpenMP/loop-body-references-outer-values.ll +++ b/polly/test/Isl/CodeGen/OpenMP/loop-body-references-outer-values.ll @@ -15,8 +15,6 @@ ; AST: Stmt_for_body(c0); ; IR-LABEL: polly.parallel.for: -; IR-NEXT: %0 = bitcast { float* }* %polly.par.userContext to i8* -; IR-NEXT: call void @llvm.lifetime.start(i64 8, i8* %0) ; IR-NEXT: %polly.subfn.storeaddr.A = getelementptr inbounds { float* }, { float* }* %polly.par.userContext, i32 0, i32 0 ; IR-NEXT: store float* %A, float** %polly.subfn.storeaddr.A ; IR-NEXT: %polly.par.userContext1 = bitcast { float* }* %polly.par.userContext to i8* -- cgit v1.2.3