1 //===- SafepointIRVerifier.h - Checks for GC relocation problems *- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file defines a verifier which is useful for enforcing the relocation 11 // properties required by a relocating GC. Specifically, it looks for uses of 12 // the unrelocated value of pointer SSA values after a possible safepoint. It 13 // attempts to report no false negatives, but may end up reporting false 14 // positives in rare cases (see the note at the top of the corresponding cpp 15 // file.) 16 // 17 //===----------------------------------------------------------------------===// 18 19 #ifndef LLVM_IR_SAFEPOINT_IR_VERIFIER 20 #define LLVM_IR_SAFEPOINT_IR_VERIFIER 21 22 namespace llvm { 23 24 class Function; 25 class FunctionPass; 26 27 /// Run the safepoint verifier over a single function. Crashes on failure. 28 void verifySafepointIR(Function &F); 29 30 /// Create an instance of the safepoint verifier pass which can be added to 31 /// a pass pipeline to check for relocation bugs. 32 FunctionPass *createSafepointIRVerifierPass(); 33 } 34 35 #endif // LLVM_IR_SAFEPOINT_IR_VERIFIER 36