mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-22 02:05:01 +00:00
Implement the "unknown flag" which mainly consists of aligning printing code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4490 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7a0b5bb7ab
commit
5af344d79d
@ -61,13 +61,14 @@ class DSNode {
|
||||
void operator=(const DSNode &); // DO NOT IMPLEMENT
|
||||
public:
|
||||
enum NodeTy {
|
||||
ShadowNode = 0, // Nothing is known about this node...
|
||||
AllocaNode = 1 << 0, // This node was allocated with alloca
|
||||
NewNode = 1 << 1, // This node was allocated with malloc
|
||||
GlobalNode = 1 << 2, // This node was allocated by a global var decl
|
||||
Incomplete = 1 << 3, // This node may not be complete
|
||||
Modified = 1 << 4, // This node is modified in this context
|
||||
Read = 1 << 5, // This node is read in this context
|
||||
ShadowNode = 0, // Nothing is known about this node...
|
||||
AllocaNode = 1 << 0, // This node was allocated with alloca
|
||||
NewNode = 1 << 1, // This node was allocated with malloc
|
||||
GlobalNode = 1 << 2, // This node was allocated by a global var decl
|
||||
UnknownNode = 1 << 3, // This node points to unknown allocated memory
|
||||
Incomplete = 1 << 4, // This node may not be complete
|
||||
Modified = 1 << 5, // This node is modified in this context
|
||||
Read = 1 << 6, // This node is read in this context
|
||||
};
|
||||
|
||||
/// NodeType - A union of the above bits. "Shadow" nodes do not add any flags
|
||||
|
@ -61,13 +61,14 @@ class DSNode {
|
||||
void operator=(const DSNode &); // DO NOT IMPLEMENT
|
||||
public:
|
||||
enum NodeTy {
|
||||
ShadowNode = 0, // Nothing is known about this node...
|
||||
AllocaNode = 1 << 0, // This node was allocated with alloca
|
||||
NewNode = 1 << 1, // This node was allocated with malloc
|
||||
GlobalNode = 1 << 2, // This node was allocated by a global var decl
|
||||
Incomplete = 1 << 3, // This node may not be complete
|
||||
Modified = 1 << 4, // This node is modified in this context
|
||||
Read = 1 << 5, // This node is read in this context
|
||||
ShadowNode = 0, // Nothing is known about this node...
|
||||
AllocaNode = 1 << 0, // This node was allocated with alloca
|
||||
NewNode = 1 << 1, // This node was allocated with malloc
|
||||
GlobalNode = 1 << 2, // This node was allocated by a global var decl
|
||||
UnknownNode = 1 << 3, // This node points to unknown allocated memory
|
||||
Incomplete = 1 << 4, // This node may not be complete
|
||||
Modified = 1 << 5, // This node is modified in this context
|
||||
Read = 1 << 6, // This node is read in this context
|
||||
};
|
||||
|
||||
/// NodeType - A union of the above bits. "Shadow" nodes do not add any flags
|
||||
|
@ -369,12 +369,17 @@ void GraphBuilder::visitCallInst(CallInst &CI) {
|
||||
|
||||
/// Handle casts...
|
||||
void GraphBuilder::visitCastInst(CastInst &CI) {
|
||||
if (isPointerType(CI.getType())) {
|
||||
if (isPointerType(CI.getOperand(0)->getType()))
|
||||
if (isPointerType(CI.getType()))
|
||||
if (isPointerType(CI.getOperand(0)->getType())) {
|
||||
// Cast one pointer to the other, just act like a copy instruction
|
||||
setDestTo(CI, getValueDest(*CI.getOperand(0)));
|
||||
else
|
||||
; // FIXME: "Other" node
|
||||
}
|
||||
} else {
|
||||
// Cast something (floating point, small integer) to a pointer. We need
|
||||
// to track the fact that the node points to SOMETHING, just something we
|
||||
// don't know about. Make an "Unknown" node.
|
||||
//
|
||||
setDestTo(CI, createNode(DSNode::UnknownNode));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -36,12 +36,13 @@ static string getCaption(const DSNode *N, const DSGraph *G) {
|
||||
OS << "\n";
|
||||
}
|
||||
|
||||
if (N->NodeType & DSNode::AllocaNode) OS << "A";
|
||||
if (N->NodeType & DSNode::NewNode ) OS << "N";
|
||||
if (N->NodeType & DSNode::GlobalNode) OS << "G";
|
||||
if (N->NodeType & DSNode::Incomplete) OS << "I";
|
||||
if (N->NodeType & DSNode::Modified ) OS << "M";
|
||||
if (N->NodeType & DSNode::Read ) OS << "R";
|
||||
if (N->NodeType & DSNode::AllocaNode ) OS << "A";
|
||||
if (N->NodeType & DSNode::NewNode ) OS << "N";
|
||||
if (N->NodeType & DSNode::GlobalNode ) OS << "G";
|
||||
if (N->NodeType & DSNode::UnknownNode) OS << "U";
|
||||
if (N->NodeType & DSNode::Incomplete ) OS << "I";
|
||||
if (N->NodeType & DSNode::Modified ) OS << "M";
|
||||
if (N->NodeType & DSNode::Read ) OS << "R";
|
||||
|
||||
for (unsigned i = 0, e = N->getGlobals().size(); i != e; ++i) {
|
||||
WriteAsOperand(OS, N->getGlobals()[i], false, true, M);
|
||||
|
Loading…
x
Reference in New Issue
Block a user