1//===-- llvm/AutoUpgrade.h - AutoUpgrade Helpers ----------------*- 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// These functions are implemented by lib/IR/AutoUpgrade.cpp. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef LLVM_AUTOUPGRADE_H 15#define LLVM_AUTOUPGRADE_H 16 17namespace llvm { 18 class CallInst; 19 class Constant; 20 class Function; 21 class Instruction; 22 class Module; 23 class GlobalVariable; 24 class Type; 25 class Value; 26 27 /// This is a more granular function that simply checks an intrinsic function 28 /// for upgrading, and returns true if it requires upgrading. It may return 29 /// null in NewFn if the all calls to the original intrinsic function 30 /// should be transformed to non-function-call instructions. 31 bool UpgradeIntrinsicFunction(Function *F, Function *&NewFn); 32 33 /// This is the complement to the above, replacing a specific call to an 34 /// intrinsic function with a call to the specified new function. 35 void UpgradeIntrinsicCall(CallInst *CI, Function *NewFn); 36 37 /// This is an auto-upgrade hook for any old intrinsic function syntaxes 38 /// which need to have both the function updated as well as all calls updated 39 /// to the new function. This should only be run in a post-processing fashion 40 /// so that it can update all calls to the old function. 41 void UpgradeCallsToIntrinsic(Function* F); 42 43 /// This checks for global variables which should be upgraded. It returns true 44 /// if it requires upgrading. 45 bool UpgradeGlobalVariable(GlobalVariable *GV); 46 47 /// If the TBAA tag for the given instruction uses the scalar TBAA format, 48 /// we upgrade it to the struct-path aware TBAA format. 49 void UpgradeInstWithTBAATag(Instruction *I); 50 51 /// This is an auto-upgrade for bitcast between pointers with different 52 /// address spaces: the instruction is replaced by a pair ptrtoint+inttoptr. 53 Instruction *UpgradeBitCastInst(unsigned Opc, Value *V, Type *DestTy, 54 Instruction *&Temp); 55 56 /// This is an auto-upgrade for bitcast constant expression between pointers 57 /// with different address spaces: the instruction is replaced by a pair 58 /// ptrtoint+inttoptr. 59 Value *UpgradeBitCastExpr(unsigned Opc, Constant *C, Type *DestTy); 60 61 /// Check the debug info version number, if it is out-dated, drop the debug 62 /// info. Return true if module is modified. 63 bool UpgradeDebugInfo(Module &M); 64} // End llvm namespace 65 66#endif 67