File tree Expand file tree Collapse file tree 2 files changed +26
-0
lines changed Expand file tree Collapse file tree 2 files changed +26
-0
lines changed Original file line number Diff line number Diff line change 2525#include " llvm/IR/GlobalValue.h"
2626#include " llvm/IR/Instruction.h"
2727#include " llvm/IR/Instructions.h"
28+ #include " llvm/IR/IntrinsicInst.h"
2829#include " llvm/IR/LLVMContext.h"
2930#include " llvm/IR/Metadata.h"
3031#include " llvm/IR/Module.h"
@@ -211,6 +212,9 @@ DiagnosticInfoOptimizationBase::Argument::Argument(StringRef Key,
211212 else if (isa<Constant>(V)) {
212213 raw_string_ostream OS (Val);
213214 V->printAsOperand (OS, /* PrintType=*/ false );
215+ } else if (auto *II = dyn_cast<IntrinsicInst>(V)) {
216+ raw_string_ostream OS (Val);
217+ OS << " call " << II->getCalledFunction ()->getName ();
214218 } else if (auto *I = dyn_cast<Instruction>(V)) {
215219 Val = I->getOpcodeName ();
216220 } else if (auto *MD = dyn_cast<MetadataAsValue>(V)) {
Original file line number Diff line number Diff line change 6262; YAML-NEXT: - ClobberedBy: store
6363; YAML-NEXT: DebugLoc: { File: '/tmp/s.c', Line: 2, Column: 10 }
6464; YAML-NEXT: ...
65+ ; YAML-NEXT: --- !Missed
66+ ; YAML-NEXT: Pass: gvn
67+ ; YAML-NEXT: Name: LoadClobbered
68+ ; YAML-NEXT: Function: lifetime_end
69+ ; YAML-NEXT: Args:
70+ ; YAML-NEXT: - String: 'load of type '
71+ ; YAML-NEXT: - Type: i8
72+ ; YAML-NEXT: - String: ' not eliminated'
73+ ; YAML-NEXT: - String: ' in favor of '
74+ ; YAML-NEXT: - OtherAccess: store
75+ ; YAML-NEXT: - String: ' because it is clobbered by '
76+ ; YAML-NEXT: - ClobberedBy: call llvm.lifetime.end.p0
77+ ; YAML-NEXT: ...
6578
6679define i32 @arg (ptr %p , i32 %i ) {
6780entry:
@@ -93,6 +106,15 @@ entry:
93106 %add = add i32 %load1 , %load
94107 ret i32 %add
95108}
109+
110+ define i8 @lifetime_end (ptr %p , i8 %val ) {
111+ call void @llvm.lifetime.start.p0 (i64 32 , ptr %p )
112+ store i8 %val , ptr %p
113+ call void @llvm.lifetime.end.p0 (i64 32 , ptr %p )
114+ %1 = load i8 , ptr %p
115+ ret i8 %1
116+ }
117+
96118!llvm.dbg.cu = !{!0 }
97119!llvm.module.flags = !{!3 , !4 , !5 }
98120!llvm.ident = !{!6 }
You can’t perform that action at this time.
0 commit comments