1//===- GlobalSplit.h - global variable splitter -----------------*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// This pass uses inrange annotations on GEP indices to split globals where 10// beneficial. Clang currently attaches these annotations to references to 11// virtual table globals under the Itanium ABI for the benefit of the 12// whole-program virtual call optimization and control flow integrity passes. 13// 14//===----------------------------------------------------------------------===// 15 16#ifndef LLVM_TRANSFORMS_IPO_GLOBALSPLIT_H 17#define LLVM_TRANSFORMS_IPO_GLOBALSPLIT_H 18 19#include "llvm/IR/PassManager.h" 20 21namespace llvm { 22 23class Module; 24 25/// Pass to perform split of global variables. 26class GlobalSplitPass : public PassInfoMixin<GlobalSplitPass> { 27public: 28 PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM); 29}; 30 31} // end namespace llvm 32 33#endif // LLVM_TRANSFORMS_IPO_GLOBALSPLIT_H 34