forked from OSchip/llvm-project
Debug info: Apply an empty debug location for global OpenMP destructors.
LLVM really wants a debug location on every inlinable call in a function with debug info, because it otherwise cannot set up inlining debug info. This change applies an artificial line 0 debug location (which is how DWARF marks automatically generated code that has no corresponding source code) to the .__kmpc_global_dtor_. functions to avoid the LLVM Verifier complaining. llvm-svn: 267369
This commit is contained in:
parent
5f8445b32a
commit
1858c664de
|
@ -1685,8 +1685,11 @@ llvm::Function *CGOpenMPRuntime::emitThreadPrivateVarDefinition(
|
|||
auto FTy = CGM.getTypes().GetFunctionType(FI);
|
||||
auto Fn = CGM.CreateGlobalInitOrDestructFunction(
|
||||
FTy, ".__kmpc_global_dtor_.", FI, Loc);
|
||||
auto NL = ApplyDebugLocation::CreateEmpty(DtorCGF);
|
||||
DtorCGF.StartFunction(GlobalDecl(), CGM.getContext().VoidTy, Fn, FI, Args,
|
||||
SourceLocation());
|
||||
// Create a scope with an artificial location for the body of this function.
|
||||
auto AL = ApplyDebugLocation::CreateArtificial(DtorCGF);
|
||||
auto ArgVal = DtorCGF.EmitLoadOfScalar(
|
||||
DtorCGF.GetAddrOfLocalVar(&Dst),
|
||||
/*Volatile=*/false, CGM.getContext().VoidPtrTy, Dst.getLocation());
|
||||
|
|
|
@ -221,7 +221,7 @@ static S1 gs1(5);
|
|||
// CHECK-DEBUG: store i8* %0, i8** [[ARG_ADDR:%.*]],
|
||||
// CHECK-DEBUG: [[ARG:%.+]] = load i8*, i8** [[ARG_ADDR]]
|
||||
// CHECK-DEBUG: [[RES:%.*]] = bitcast i8* [[ARG]] to [[S1]]*
|
||||
// CHECK-DEBUG-NEXT: call {{.*}} [[S1_CTOR:@.+]]([[S1]]* [[RES]], {{.*}} 5)
|
||||
// CHECK-DEBUG-NEXT: call {{.*}} [[S1_CTOR:@.+]]([[S1]]* [[RES]], {{.*}} 5){{.*}}, !dbg
|
||||
// CHECK-DEBUG: [[ARG:%.+]] = load i8*, i8** [[ARG_ADDR]]
|
||||
// CHECK-DEBUG: ret i8* [[ARG]]
|
||||
// CHECK-DEBUG-NEXT: }
|
||||
|
@ -230,7 +230,7 @@ static S1 gs1(5);
|
|||
// CHECK-DEBUG: store i8* %0, i8** [[ARG_ADDR:%.*]],
|
||||
// CHECK-DEBUG: [[ARG:%.+]] = load i8*, i8** [[ARG_ADDR]]
|
||||
// CHECK-DEBUG: [[RES:%.*]] = bitcast i8* [[ARG]] to [[S1]]*
|
||||
// CHECK-DEBUG-NEXT: call {{.*}} [[S1_DTOR:@.+]]([[S1]]* [[RES]])
|
||||
// CHECK-DEBUG-NEXT: call {{.*}} [[S1_DTOR:@.+]]([[S1]]* [[RES]]){{.*}}, !dbg
|
||||
// CHECK-DEBUG-NEXT: ret void
|
||||
// CHECK-DEBUG-NEXT: }
|
||||
// CHECK-DEBUG: define {{.*}} [[S1_DTOR]]([[S1]]* {{.*}})
|
||||
|
|
Loading…
Reference in New Issue