27
27
#include "llvm/ADT/SCCIterator.h"
28
28
#include "llvm/Analysis/CallGraph.h"
29
29
#include "llvm/Analysis/Verifier.h"
30
#include "llvm/Analysis/DebugInfo.h"
31
30
#include "llvm/Analysis/Dominators.h"
32
31
#include "llvm/Analysis/ConstantFolding.h"
33
32
//#include "llvm/Analysis/LiveValues.h"
42
41
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
43
42
#include "llvm/Analysis/ScalarEvolutionExpander.h"
44
43
#include "llvm/Config/config.h"
45
#include "llvm/DerivedTypes.h"
46
#include "llvm/Instructions.h"
47
#include "llvm/IntrinsicInst.h"
48
#include "llvm/Intrinsics.h"
49
#include "llvm/LLVMContext.h"
50
#include "llvm/Module.h"
51
44
#include "llvm/Pass.h"
52
45
#include "llvm/Support/CommandLine.h"
53
46
#include "llvm/Support/DataFlow.h"
54
47
#include "llvm/Support/InstIterator.h"
55
#include "llvm/Support/InstVisitor.h"
56
48
#include "llvm/Support/GetElementPtrTypeIterator.h"
57
49
#include "llvm/ADT/DepthFirstIterator.h"
58
#include "llvm/Target/TargetData.h"
59
50
#include "llvm/Transforms/Scalar.h"
60
51
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
61
52
#include "llvm/Support/Debug.h"
62
53
#include "llvm30_compat.h"
56
#include "llvm/Analysis/DebugInfo.h"
58
#include "llvm/DebugInfo.h"
62
#include "llvm/Target/TargetData.h"
63
#elif LLVM_VERSION < 33
64
#include "llvm/DataLayout.h"
66
#include "llvm/IR/DataLayout.h"
70
#include "llvm/DerivedTypes.h"
71
#include "llvm/Instructions.h"
72
#include "llvm/IntrinsicInst.h"
73
#include "llvm/Intrinsics.h"
74
#include "llvm/LLVMContext.h"
75
#include "llvm/Module.h"
76
#include "llvm/Support/InstVisitor.h"
78
#include "llvm/IR/DerivedTypes.h"
79
#include "llvm/IR/Instructions.h"
80
#include "llvm/IR/IntrinsicInst.h"
81
#include "llvm/IR/Intrinsics.h"
82
#include "llvm/IR/LLVMContext.h"
83
#include "llvm/IR/Module.h"
84
#include "llvm/InstVisitor.h"
137
164
BasicBlock::iterator It = F.getEntryBlock().begin();
138
165
while (isa<AllocaInst>(It) || isa<PHINode>(It)) ++It;
167
#if LLVM_VERSION < 32
141
168
TD = &getAnalysis<TargetData>();
170
TD = &getAnalysis<DataLayout>();
142
172
SE = &getAnalysis<ScalarEvolution>();
143
173
PT = &getAnalysis<PointerTracking>();
144
174
DT = &getAnalysis<DominatorTree>();
247
277
CallInst *AbrtC = CallInst::Create(func_abort, "", UI);
248
278
AbrtC->setCallingConv(CallingConv::C);
249
279
AbrtC->setTailCall(true);
280
#if LLVM_VERSION < 32
250
281
AbrtC->setDoesNotReturn(true);
251
282
AbrtC->setDoesNotThrow(true);
284
AbrtC->setDoesNotReturn();
285
AbrtC->setDoesNotThrow();
252
287
// remove all instructions from entry
253
288
BasicBlock::iterator BBI = I, BBE=BB->end();
254
289
while (BBI != BBE) {
267
302
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
303
#if LLVM_VERSION < 32
268
304
AU.addRequired<TargetData>();
306
AU.addRequired<DataLayout>();
269
308
AU.addRequired<DominatorTree>();
270
309
AU.addRequired<ScalarEvolution>();
271
310
AU.addRequired<PointerTracking>();
511
554
CallInst *RtErrCall = CallInst::Create(func_rterr, PN, "", AbrtBB);
512
555
RtErrCall->setCallingConv(CallingConv::C);
513
556
RtErrCall->setTailCall(true);
557
#if LLVM_VERSION < 32
514
558
RtErrCall->setDoesNotThrow(true);
560
RtErrCall->setDoesNotThrow();
516
563
CallInst* AbrtC = CallInst::Create(func_abort, "", AbrtBB);
517
564
AbrtC->setCallingConv(CallingConv::C);
518
565
AbrtC->setTailCall(true);
566
#if LLVM_VERSION < 32
519
567
AbrtC->setDoesNotReturn(true);
520
568
AbrtC->setDoesNotThrow(true);
570
AbrtC->setDoesNotReturn();
571
AbrtC->setDoesNotThrow();
521
573
new UnreachableInst(BB->getContext(), AbrtBB);
522
574
DT->addNewBlock(AbrtBB, BB);
523
575
//verifyFunction(*BB->getParent());
734
786
INITIALIZE_PASS_BEGIN(PtrVerifier, "", "", false, false)
787
#if LLVM_VERSION < 32
735
788
INITIALIZE_PASS_DEPENDENCY(TargetData)
790
INITIALIZE_PASS_DEPENDENCY(DataLayout)
736
792
INITIALIZE_PASS_DEPENDENCY(DominatorTree)
737
793
INITIALIZE_PASS_DEPENDENCY(ScalarEvolution)
794
#if LLVM_VERSION < 34
738
795
INITIALIZE_AG_DEPENDENCY(CallGraph)
797
INITIALIZE_PASS_DEPENDENCY(CallGraph)
739
799
INITIALIZE_PASS_DEPENDENCY(PointerTracking)
740
800
INITIALIZE_PASS_END(PtrVerifier, "clambcrtchecks", "ClamBC RTchecks", false, false)