IPO: Add use-list-order verifier
[oota-llvm.git] / include / llvm / IR / UseListOrder.h
1 //===- llvm/IR/UseListOrder.h - LLVM Use List Order functions ---*- 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 has functions to modify the use-list order and to verify that it
11 // doesn't change after serialization.
12 //
13 //===----------------------------------------------------------------------===//
14
15 #ifndef LLVM_IR_USELISTORDER_H
16 #define LLVM_IR_USELISTORDER_H
17
18 namespace llvm {
19
20 class Module;
21
22 /// \brief Whether to preserve use-list ordering.
23 bool shouldPreserveBitcodeUseListOrder();
24
25 /// \brief Shuffle all use-lists in a module.
26 ///
27 /// Adds \c SeedOffset to the default seed for the random number generator.
28 void shuffleUseLists(Module &M, unsigned SeedOffset = 0);
29
30 /// \brief Verify use-list order after serializing to bitcode.
31 ///
32 /// \return \c true if there are no errors.
33 bool verifyBitcodeUseListOrder(const Module &M);
34
35 /// \brief Verify use-list order after serializing to assembly.
36 ///
37 /// \return \c true if there are no errors.
38 bool verifyAssemblyUseListOrder(const Module &M);
39
40 } // end namespace llvm
41
42 #endif