mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
MemorySSA.h - make clang-format happy
llvm-svn: 299296
This commit is contained in:
parent
d007e8d89f
commit
2e2452dc6a
@ -12,10 +12,10 @@
|
|||||||
/// walk memory instructions using a use/def graph.
|
/// walk memory instructions using a use/def graph.
|
||||||
///
|
///
|
||||||
/// Memory SSA class builds an SSA form that links together memory access
|
/// Memory SSA class builds an SSA form that links together memory access
|
||||||
/// instructions such as loads, stores, atomics, and calls. Additionally, it does
|
/// instructions such as loads, stores, atomics, and calls. Additionally, it
|
||||||
/// a trivial form of "heap versioning" Every time the memory state changes in
|
/// does a trivial form of "heap versioning" Every time the memory state changes
|
||||||
/// the program, we generate a new heap version. It generates MemoryDef/Uses/Phis
|
/// in the program, we generate a new heap version. It generates
|
||||||
/// that are overlayed on top of the existing instructions.
|
/// MemoryDef/Uses/Phis that are overlayed on top of the existing instructions.
|
||||||
///
|
///
|
||||||
/// As a trivial example,
|
/// As a trivial example,
|
||||||
/// define i32 @main() #0 {
|
/// define i32 @main() #0 {
|
||||||
@ -54,15 +54,15 @@
|
|||||||
/// }
|
/// }
|
||||||
///
|
///
|
||||||
/// Given this form, all the stores that could ever effect the load at %8 can be
|
/// Given this form, all the stores that could ever effect the load at %8 can be
|
||||||
/// gotten by using the MemoryUse associated with it, and walking from use to def
|
/// gotten by using the MemoryUse associated with it, and walking from use to
|
||||||
/// until you hit the top of the function.
|
/// def until you hit the top of the function.
|
||||||
///
|
///
|
||||||
/// Each def also has a list of users associated with it, so you can walk from
|
/// Each def also has a list of users associated with it, so you can walk from
|
||||||
/// both def to users, and users to defs. Note that we disambiguate MemoryUses,
|
/// both def to users, and users to defs. Note that we disambiguate MemoryUses,
|
||||||
/// but not the RHS of MemoryDefs. You can see this above at %7, which would
|
/// but not the RHS of MemoryDefs. You can see this above at %7, which would
|
||||||
/// otherwise be a MemoryUse(4). Being disambiguated means that for a given
|
/// otherwise be a MemoryUse(4). Being disambiguated means that for a given
|
||||||
/// store, all the MemoryUses on its use lists are may-aliases of that store (but
|
/// store, all the MemoryUses on its use lists are may-aliases of that store
|
||||||
/// the MemoryDefs on its use list may not be).
|
/// (but the MemoryDefs on its use list may not be).
|
||||||
///
|
///
|
||||||
/// MemoryDefs are not disambiguated because it would require multiple reaching
|
/// MemoryDefs are not disambiguated because it would require multiple reaching
|
||||||
/// definitions, which would require multiple phis, and multiple memoryaccesses
|
/// definitions, which would require multiple phis, and multiple memoryaccesses
|
||||||
@ -711,10 +711,8 @@ private:
|
|||||||
unsigned NextID;
|
unsigned NextID;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Internal MemorySSA utils, for use by MemorySSA classes and walkers
|
// Internal MemorySSA utils, for use by MemorySSA classes and walkers
|
||||||
class MemorySSAUtil
|
class MemorySSAUtil {
|
||||||
{
|
|
||||||
protected:
|
protected:
|
||||||
friend class MemorySSAWalker;
|
friend class MemorySSAWalker;
|
||||||
friend class GVNHoist;
|
friend class GVNHoist;
|
||||||
|
Loading…
Reference in New Issue
Block a user