12ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel//===-- ModuleUtils.h - Functions to manipulate Modules ---------*- C++ -*-===//
22ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel//
32ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel//                     The LLVM Compiler Infrastructure
42ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel//
52ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel// This file is distributed under the University of Illinois Open Source
62ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel// License. See LICENSE.TXT for details.
72ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel//
82ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel//===----------------------------------------------------------------------===//
92ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel//
102ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel// This family of functions perform manipulations on Modules.
112ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel//
122ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel//===----------------------------------------------------------------------===//
132ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel
142ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel#ifndef LLVM_TRANSFORMS_UTILS_MODULE_UTILS_H
152ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel#define LLVM_TRANSFORMS_UTILS_MODULE_UTILS_H
162ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel
172ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patelnamespace llvm {
182ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel
192ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patelclass Module;
202ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patelclass Function;
212ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel
222ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel/// Append F to the list of global ctors of module M with the given Priority.
232ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel/// This wraps the function in the appropriate structure and stores it along
242ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel/// side other global constructors. For details see
252ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel/// http://llvm.org/docs/LangRef.html#intg_global_ctors
262ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patelvoid appendToGlobalCtors(Module &M, Function *F, int Priority);
272ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel
287bcfc9950bac0f411f9671e8d6ce483bd219727eKostya Serebryany/// Same as appendToGlobalCtors(), but for global dtors.
297bcfc9950bac0f411f9671e8d6ce483bd219727eKostya Serebryanyvoid appendToGlobalDtors(Module &M, Function *F, int Priority);
307bcfc9950bac0f411f9671e8d6ce483bd219727eKostya Serebryany
312ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel} // End llvm namespace
322ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel
332ad3f93b5f1d6e22f682efd6fd10f7f3ed9fa992Devang Patel#endif //  LLVM_TRANSFORMS_UTILS_MODULE_UTILS_H
34