mirror of
https://github.com/github/codeql.git
synced 2026-01-16 07:54:52 +01:00
Merge pull request #3459 from dbartol/github/codeql-c-analysis-team/69
C++/C#: Remove `UnmodeledUse` instruction
This commit is contained in:
@@ -61,7 +61,6 @@ private newtype TOpcode =
|
||||
TReThrow() or
|
||||
TUnwind() or
|
||||
TUnmodeledDefinition() or
|
||||
TUnmodeledUse() or
|
||||
TAliasedDefinition() or
|
||||
TInitializeNonLocal() or
|
||||
TAliasedUse() or
|
||||
@@ -587,14 +586,6 @@ module Opcode {
|
||||
}
|
||||
}
|
||||
|
||||
class UnmodeledUse extends Opcode, TUnmodeledUse {
|
||||
final override string toString() { result = "UnmodeledUse" }
|
||||
|
||||
final override predicate hasOperandInternal(OperandTag tag) {
|
||||
tag instanceof UnmodeledUseOperandTag
|
||||
}
|
||||
}
|
||||
|
||||
class AliasedDefinition extends Opcode, TAliasedDefinition {
|
||||
final override string toString() { result = "AliasedDefinition" }
|
||||
|
||||
|
||||
@@ -31,10 +31,14 @@ class IRBlockBase extends TIRBlock {
|
||||
config.shouldEvaluateDebugStringsForFunction(this.getEnclosingFunction())
|
||||
) and
|
||||
this =
|
||||
rank[result + 1](IRBlock funcBlock |
|
||||
funcBlock.getEnclosingFunction() = getEnclosingFunction()
|
||||
rank[result + 1](IRBlock funcBlock, int sortOverride |
|
||||
funcBlock.getEnclosingFunction() = getEnclosingFunction() and
|
||||
// Ensure that the block containing `EnterFunction` always comes first.
|
||||
if funcBlock.getFirstInstruction() instanceof EnterFunctionInstruction
|
||||
then sortOverride = 0
|
||||
else sortOverride = 1
|
||||
|
|
||||
funcBlock order by funcBlock.getUniqueId()
|
||||
funcBlock order by sortOverride, funcBlock.getUniqueId()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,6 @@ module InstructionConsistency {
|
||||
operand.getOperandTag() = tag
|
||||
) and
|
||||
operandCount > 1 and
|
||||
not tag instanceof UnmodeledUseOperandTag and
|
||||
message =
|
||||
"Instruction has " + operandCount + " operands with tag '" + tag.toString() + "'" +
|
||||
" in function '$@'." and
|
||||
@@ -158,7 +157,6 @@ module InstructionConsistency {
|
||||
) {
|
||||
exists(MemoryOperand operand, Instruction def |
|
||||
operand = instr.getAnOperand() and
|
||||
not operand instanceof UnmodeledUseOperand and
|
||||
def = operand.getAnyDef() and
|
||||
not def.isResultModeled() and
|
||||
not def instanceof UnmodeledDefinitionInstruction and
|
||||
@@ -259,7 +257,6 @@ module InstructionConsistency {
|
||||
Operand useOperand, string message, IRFunction func, string funcText
|
||||
) {
|
||||
exists(IRBlock useBlock, int useIndex, Instruction defInstr, IRBlock defBlock, int defIndex |
|
||||
not useOperand.getUse() instanceof UnmodeledUseInstruction and
|
||||
not defInstr instanceof UnmodeledDefinitionInstruction and
|
||||
pointOfEvaluation(useOperand, useBlock, useIndex) and
|
||||
defInstr = useOperand.getAnyDef() and
|
||||
|
||||
@@ -45,11 +45,6 @@ class IRFunction extends TIRFunction {
|
||||
result.getEnclosingIRFunction() = this
|
||||
}
|
||||
|
||||
pragma[noinline]
|
||||
final UnmodeledUseInstruction getUnmodeledUseInstruction() {
|
||||
result.getEnclosingIRFunction() = this
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the single return instruction for this function.
|
||||
*/
|
||||
|
||||
@@ -320,8 +320,7 @@ class Instruction extends Construction::TInstruction {
|
||||
/**
|
||||
* Holds if the result of this instruction is precisely modeled in SSA. Always
|
||||
* holds for a register result. For a memory result, a modeled result is
|
||||
* connected to its actual uses. An unmodeled result is connected to the
|
||||
* `UnmodeledUse` instruction.
|
||||
* connected to its actual uses. An unmodeled result has no uses.
|
||||
*
|
||||
* For example:
|
||||
* ```
|
||||
@@ -1248,12 +1247,6 @@ class AliasedUseInstruction extends Instruction {
|
||||
AliasedUseInstruction() { getOpcode() instanceof Opcode::AliasedUse }
|
||||
}
|
||||
|
||||
class UnmodeledUseInstruction extends Instruction {
|
||||
UnmodeledUseInstruction() { getOpcode() instanceof Opcode::UnmodeledUse }
|
||||
|
||||
override string getOperandsString() { result = "mu*" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An instruction representing the choice of one of multiple input values based on control flow.
|
||||
*
|
||||
|
||||
@@ -19,11 +19,7 @@ private newtype TOperand =
|
||||
) {
|
||||
defInstr = Construction::getMemoryOperandDefinition(useInstr, tag, overlap) and
|
||||
not Construction::isInCycle(useInstr) and
|
||||
(
|
||||
strictcount(Construction::getMemoryOperandDefinition(useInstr, tag, _)) = 1
|
||||
or
|
||||
tag instanceof UnmodeledUseOperandTag
|
||||
)
|
||||
strictcount(Construction::getMemoryOperandDefinition(useInstr, tag, _)) = 1
|
||||
} or
|
||||
TPhiOperand(
|
||||
PhiInstruction useInstr, Instruction defInstr, IRBlock predecessorBlock, Overlap overlap
|
||||
@@ -327,16 +323,6 @@ class ConditionOperand extends RegisterOperand {
|
||||
override string toString() { result = "Condition" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An operand of the special `UnmodeledUse` instruction, representing a value
|
||||
* whose set of uses is unknown.
|
||||
*/
|
||||
class UnmodeledUseOperand extends NonPhiMemoryOperand {
|
||||
override UnmodeledUseOperandTag tag;
|
||||
|
||||
override string toString() { result = "UnmodeledUse" }
|
||||
}
|
||||
|
||||
/**
|
||||
* The operand representing the target function of an `Call` instruction.
|
||||
*/
|
||||
|
||||
@@ -247,6 +247,10 @@ private predicate resultMayReachReturn(Instruction instr) { operandMayReachRetur
|
||||
private predicate resultEscapesNonReturn(Instruction instr) {
|
||||
// The result escapes if it has at least one use that escapes.
|
||||
operandEscapesNonReturn(instr.getAUse())
|
||||
or
|
||||
// The result also escapes if it is not modeled in SSA, because we do not know where it might be
|
||||
// used.
|
||||
not instr.isResultModeled()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -128,23 +128,10 @@ private module Cached {
|
||||
oldOperand = oldInstruction.getAnOperand() and
|
||||
tag = oldOperand.getOperandTag() and
|
||||
(
|
||||
(
|
||||
if exists(Alias::getOperandMemoryLocation(oldOperand))
|
||||
then hasMemoryOperandDefinition(oldInstruction, oldOperand, overlap, result)
|
||||
else (
|
||||
result = instruction.getEnclosingIRFunction().getUnmodeledDefinitionInstruction() and
|
||||
overlap instanceof MustTotallyOverlap
|
||||
)
|
||||
)
|
||||
or
|
||||
// Connect any definitions that are not being modeled in SSA to the
|
||||
// `UnmodeledUse` instruction.
|
||||
exists(OldInstruction oldDefinition |
|
||||
instruction instanceof UnmodeledUseInstruction and
|
||||
tag instanceof UnmodeledUseOperandTag and
|
||||
oldDefinition = oldOperand.getAnyDef() and
|
||||
not exists(Alias::getResultMemoryLocation(oldDefinition)) and
|
||||
result = getNewInstruction(oldDefinition) and
|
||||
if exists(Alias::getOperandMemoryLocation(oldOperand))
|
||||
then hasMemoryOperandDefinition(oldInstruction, oldOperand, overlap, result)
|
||||
else (
|
||||
result = instruction.getEnclosingIRFunction().getUnmodeledDefinitionInstruction() and
|
||||
overlap instanceof MustTotallyOverlap
|
||||
)
|
||||
)
|
||||
@@ -154,13 +141,6 @@ private module Cached {
|
||||
tag instanceof ChiPartialOperandTag and
|
||||
overlap instanceof MustExactlyOverlap
|
||||
or
|
||||
exists(IRFunction f |
|
||||
tag instanceof UnmodeledUseOperandTag and
|
||||
result = f.getUnmodeledDefinitionInstruction() and
|
||||
instruction = f.getUnmodeledUseInstruction() and
|
||||
overlap instanceof MustTotallyOverlap
|
||||
)
|
||||
or
|
||||
tag instanceof ChiTotalOperandTag and
|
||||
result = getChiInstructionTotalOperand(instruction) and
|
||||
overlap instanceof MustExactlyOverlap
|
||||
|
||||
@@ -15,7 +15,6 @@ private newtype TOperandTag =
|
||||
TLeftOperand() or
|
||||
TRightOperand() or
|
||||
TConditionOperand() or
|
||||
TUnmodeledUseOperand() or
|
||||
TCallTargetOperand() or
|
||||
TThisArgumentOperand() or
|
||||
TPositionalArgumentOperand(int argIndex) { Language::hasPositionalArgIndex(argIndex) } or
|
||||
@@ -165,18 +164,6 @@ class ConditionOperandTag extends RegisterOperandTag, TConditionOperand {
|
||||
|
||||
ConditionOperandTag conditionOperand() { result = TConditionOperand() }
|
||||
|
||||
/**
|
||||
* An operand of the special `UnmodeledUse` instruction, representing a value
|
||||
* whose set of uses is unknown.
|
||||
*/
|
||||
class UnmodeledUseOperandTag extends MemoryOperandTag, TUnmodeledUseOperand {
|
||||
final override string toString() { result = "UnmodeledUse" }
|
||||
|
||||
final override int getSortOrder() { result = 9 }
|
||||
}
|
||||
|
||||
UnmodeledUseOperandTag unmodeledUseOperand() { result = TUnmodeledUseOperand() }
|
||||
|
||||
/**
|
||||
* The operand representing the target function of an `Call` instruction.
|
||||
*/
|
||||
|
||||
@@ -31,10 +31,14 @@ class IRBlockBase extends TIRBlock {
|
||||
config.shouldEvaluateDebugStringsForFunction(this.getEnclosingFunction())
|
||||
) and
|
||||
this =
|
||||
rank[result + 1](IRBlock funcBlock |
|
||||
funcBlock.getEnclosingFunction() = getEnclosingFunction()
|
||||
rank[result + 1](IRBlock funcBlock, int sortOverride |
|
||||
funcBlock.getEnclosingFunction() = getEnclosingFunction() and
|
||||
// Ensure that the block containing `EnterFunction` always comes first.
|
||||
if funcBlock.getFirstInstruction() instanceof EnterFunctionInstruction
|
||||
then sortOverride = 0
|
||||
else sortOverride = 1
|
||||
|
|
||||
funcBlock order by funcBlock.getUniqueId()
|
||||
funcBlock order by sortOverride, funcBlock.getUniqueId()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,6 @@ module InstructionConsistency {
|
||||
operand.getOperandTag() = tag
|
||||
) and
|
||||
operandCount > 1 and
|
||||
not tag instanceof UnmodeledUseOperandTag and
|
||||
message =
|
||||
"Instruction has " + operandCount + " operands with tag '" + tag.toString() + "'" +
|
||||
" in function '$@'." and
|
||||
@@ -158,7 +157,6 @@ module InstructionConsistency {
|
||||
) {
|
||||
exists(MemoryOperand operand, Instruction def |
|
||||
operand = instr.getAnOperand() and
|
||||
not operand instanceof UnmodeledUseOperand and
|
||||
def = operand.getAnyDef() and
|
||||
not def.isResultModeled() and
|
||||
not def instanceof UnmodeledDefinitionInstruction and
|
||||
@@ -259,7 +257,6 @@ module InstructionConsistency {
|
||||
Operand useOperand, string message, IRFunction func, string funcText
|
||||
) {
|
||||
exists(IRBlock useBlock, int useIndex, Instruction defInstr, IRBlock defBlock, int defIndex |
|
||||
not useOperand.getUse() instanceof UnmodeledUseInstruction and
|
||||
not defInstr instanceof UnmodeledDefinitionInstruction and
|
||||
pointOfEvaluation(useOperand, useBlock, useIndex) and
|
||||
defInstr = useOperand.getAnyDef() and
|
||||
|
||||
@@ -45,11 +45,6 @@ class IRFunction extends TIRFunction {
|
||||
result.getEnclosingIRFunction() = this
|
||||
}
|
||||
|
||||
pragma[noinline]
|
||||
final UnmodeledUseInstruction getUnmodeledUseInstruction() {
|
||||
result.getEnclosingIRFunction() = this
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the single return instruction for this function.
|
||||
*/
|
||||
|
||||
@@ -320,8 +320,7 @@ class Instruction extends Construction::TInstruction {
|
||||
/**
|
||||
* Holds if the result of this instruction is precisely modeled in SSA. Always
|
||||
* holds for a register result. For a memory result, a modeled result is
|
||||
* connected to its actual uses. An unmodeled result is connected to the
|
||||
* `UnmodeledUse` instruction.
|
||||
* connected to its actual uses. An unmodeled result has no uses.
|
||||
*
|
||||
* For example:
|
||||
* ```
|
||||
@@ -1248,12 +1247,6 @@ class AliasedUseInstruction extends Instruction {
|
||||
AliasedUseInstruction() { getOpcode() instanceof Opcode::AliasedUse }
|
||||
}
|
||||
|
||||
class UnmodeledUseInstruction extends Instruction {
|
||||
UnmodeledUseInstruction() { getOpcode() instanceof Opcode::UnmodeledUse }
|
||||
|
||||
override string getOperandsString() { result = "mu*" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An instruction representing the choice of one of multiple input values based on control flow.
|
||||
*
|
||||
|
||||
@@ -19,11 +19,7 @@ private newtype TOperand =
|
||||
) {
|
||||
defInstr = Construction::getMemoryOperandDefinition(useInstr, tag, overlap) and
|
||||
not Construction::isInCycle(useInstr) and
|
||||
(
|
||||
strictcount(Construction::getMemoryOperandDefinition(useInstr, tag, _)) = 1
|
||||
or
|
||||
tag instanceof UnmodeledUseOperandTag
|
||||
)
|
||||
strictcount(Construction::getMemoryOperandDefinition(useInstr, tag, _)) = 1
|
||||
} or
|
||||
TPhiOperand(
|
||||
PhiInstruction useInstr, Instruction defInstr, IRBlock predecessorBlock, Overlap overlap
|
||||
@@ -327,16 +323,6 @@ class ConditionOperand extends RegisterOperand {
|
||||
override string toString() { result = "Condition" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An operand of the special `UnmodeledUse` instruction, representing a value
|
||||
* whose set of uses is unknown.
|
||||
*/
|
||||
class UnmodeledUseOperand extends NonPhiMemoryOperand {
|
||||
override UnmodeledUseOperandTag tag;
|
||||
|
||||
override string toString() { result = "UnmodeledUse" }
|
||||
}
|
||||
|
||||
/**
|
||||
* The operand representing the target function of an `Call` instruction.
|
||||
*/
|
||||
|
||||
@@ -91,17 +91,25 @@ private module Cached {
|
||||
Instruction getRegisterOperandDefinition(Instruction instruction, RegisterOperandTag tag) {
|
||||
result =
|
||||
getInstructionTranslatedElement(instruction)
|
||||
.getInstructionOperand(getInstructionTag(instruction), tag)
|
||||
.getInstructionRegisterOperand(getInstructionTag(instruction), tag)
|
||||
}
|
||||
|
||||
cached
|
||||
Instruction getMemoryOperandDefinition(
|
||||
Instruction instruction, MemoryOperandTag tag, Overlap overlap
|
||||
) {
|
||||
result =
|
||||
getInstructionTranslatedElement(instruction)
|
||||
.getInstructionOperand(getInstructionTag(instruction), tag) and
|
||||
overlap instanceof MustTotallyOverlap
|
||||
exists(TranslatedElement translatedElement, TranslatedFunction translatedFunc |
|
||||
translatedElement = getInstructionTranslatedElement(instruction) and
|
||||
exists(getInstructionOperandType(instruction, tag)) and
|
||||
translatedFunc = getTranslatedFunction(instruction.getEnclosingFunction()) and
|
||||
result = translatedFunc.getUnmodeledDefinitionInstruction() and
|
||||
overlap instanceof MustTotallyOverlap
|
||||
)
|
||||
or
|
||||
// Without the code below, the optimizer will realize that raw IR never contains Chi operands,
|
||||
// and report an error that `ChiTotalOperand` and `ChiPartialOperand` are infeasible.
|
||||
(tag instanceof ChiTotalOperandTag or tag instanceof ChiPartialOperandTag) and
|
||||
none()
|
||||
}
|
||||
|
||||
/** Gets a non-phi instruction that defines an operand of `instr`. */
|
||||
@@ -144,12 +152,13 @@ private module Cached {
|
||||
CppType getInstructionOperandType(Instruction instruction, TypedOperandTag tag) {
|
||||
// For all `LoadInstruction`s, the operand type of the `LoadOperand` is the same as
|
||||
// the result type of the load.
|
||||
tag instanceof LoadOperandTag and
|
||||
result = instruction.(LoadInstruction).getResultLanguageType()
|
||||
or
|
||||
not instruction instanceof LoadInstruction and
|
||||
result =
|
||||
getInstructionTranslatedElement(instruction)
|
||||
.getInstructionOperandType(getInstructionTag(instruction), tag)
|
||||
.getInstructionMemoryOperandType(getInstructionTag(instruction), tag)
|
||||
}
|
||||
|
||||
cached
|
||||
|
||||
@@ -29,7 +29,6 @@ newtype TInstructionTag =
|
||||
ReturnTag() or
|
||||
ExitFunctionTag() or
|
||||
UnmodeledDefinitionTag() or
|
||||
UnmodeledUseTag() or
|
||||
AliasedDefinitionTag() or
|
||||
InitializeNonLocalTag() or
|
||||
AliasedUseTag() or
|
||||
@@ -129,8 +128,6 @@ string getInstructionTagId(TInstructionTag tag) {
|
||||
or
|
||||
tag = UnmodeledDefinitionTag() and result = "UnmodeledDef"
|
||||
or
|
||||
tag = UnmodeledUseTag() and result = "UnmodeledUse"
|
||||
or
|
||||
tag = AliasedDefinitionTag() and result = "AliasedDef"
|
||||
or
|
||||
tag = InitializeNonLocalTag() and result = "InitNonLocal"
|
||||
|
||||
@@ -94,7 +94,7 @@ abstract class TranslatedCall extends TranslatedExpr {
|
||||
)
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = CallTag() and
|
||||
(
|
||||
operandTag instanceof CallTargetOperandTag and
|
||||
@@ -115,7 +115,9 @@ abstract class TranslatedCall extends TranslatedExpr {
|
||||
result = getEnclosingFunction().getUnmodeledDefinitionInstruction()
|
||||
}
|
||||
|
||||
final override CppType getInstructionOperandType(InstructionTag tag, TypedOperandTag operandTag) {
|
||||
final override CppType getInstructionMemoryOperandType(
|
||||
InstructionTag tag, TypedOperandTag operandTag
|
||||
) {
|
||||
tag = CallSideEffectTag() and
|
||||
hasSideEffect() and
|
||||
operandTag instanceof SideEffectOperandTag and
|
||||
@@ -381,7 +383,7 @@ class TranslatedAllocationSideEffects extends TranslatedSideEffects,
|
||||
else result = getParent().getChildSuccessor(this)
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
operandTag = addressOperand() and
|
||||
result = getPrimaryInstructionForSideEffect(OnlyInstructionTag())
|
||||
@@ -437,7 +439,7 @@ class TranslatedStructorCallSideEffects extends TranslatedCallSideEffects {
|
||||
|
||||
override Instruction getFirstInstruction() { result = getInstruction(OnlyInstructionTag()) }
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag instanceof OnlyInstructionTag and
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = getParent().(TranslatedStructorCall).getQualifierResult()
|
||||
@@ -513,17 +515,12 @@ class TranslatedSideEffect extends TranslatedElement, TTranslatedArgumentSideEff
|
||||
kind instanceof GotoEdge
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag instanceof OnlyInstructionTag and
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = getTranslatedExpr(arg).getResult()
|
||||
or
|
||||
tag instanceof OnlyInstructionTag and
|
||||
operandTag instanceof SideEffectOperandTag and
|
||||
not isWrite() and
|
||||
result = getEnclosingFunction().getUnmodeledDefinitionInstruction()
|
||||
or
|
||||
tag instanceof OnlyInstructionTag and
|
||||
operandTag instanceof BufferSizeOperandTag and
|
||||
result =
|
||||
getTranslatedExpr(call
|
||||
@@ -531,7 +528,8 @@ class TranslatedSideEffect extends TranslatedElement, TTranslatedArgumentSideEff
|
||||
.getFullyConverted()).getResult()
|
||||
}
|
||||
|
||||
override CppType getInstructionOperandType(InstructionTag tag, TypedOperandTag operandTag) {
|
||||
override CppType getInstructionMemoryOperandType(InstructionTag tag, TypedOperandTag operandTag) {
|
||||
not isWrite() and
|
||||
if hasSpecificReadSideEffect(any(BufferAccessOpcode op))
|
||||
then
|
||||
result = getUnknownType() and
|
||||
|
||||
@@ -182,7 +182,7 @@ class TranslatedValueCondition extends TranslatedCondition, TTranslatedValueCond
|
||||
)
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = ValueConditionConditionalBranchTag() and
|
||||
operandTag instanceof ConditionOperandTag and
|
||||
result = getValueExpr().getResult()
|
||||
|
||||
@@ -181,14 +181,11 @@ class TranslatedStaticLocalVariableDeclarationEntry extends TranslatedDeclaratio
|
||||
tag = DynamicInitializationFlagConstantTag() and result = "1"
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = DynamicInitializationFlagLoadTag() and
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = getInstruction(DynamicInitializationFlagAddressTag())
|
||||
or
|
||||
operandTag instanceof LoadOperandTag and
|
||||
result = getTranslatedFunction(var.getFunction()).getUnmodeledDefinitionInstruction()
|
||||
)
|
||||
or
|
||||
tag = DynamicInitializationConditionalBranchTag() and
|
||||
|
||||
@@ -736,12 +736,12 @@ abstract class TranslatedElement extends TTranslatedElement {
|
||||
* Gets the instruction whose result is consumed as an operand of the
|
||||
* instruction specified by `tag`, with the operand specified by `operandTag`.
|
||||
*/
|
||||
Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) { none() }
|
||||
Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) { none() }
|
||||
|
||||
/**
|
||||
* Gets the type of the memory operand specified by `operandTag` on the the instruction specified by `tag`.
|
||||
*/
|
||||
CppType getInstructionOperandType(InstructionTag tag, TypedOperandTag operandTag) { none() }
|
||||
CppType getInstructionMemoryOperandType(InstructionTag tag, TypedOperandTag operandTag) { none() }
|
||||
|
||||
/**
|
||||
* Gets the size of the memory operand specified by `operandTag` on the the instruction specified by `tag`.
|
||||
|
||||
@@ -183,7 +183,7 @@ class TranslatedConditionValue extends TranslatedCoreExpr, ConditionContext,
|
||||
)
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = ConditionValueTrueStoreTag() and
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
@@ -206,9 +206,6 @@ class TranslatedConditionValue extends TranslatedCoreExpr, ConditionContext,
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = getInstruction(ConditionValueResultTempAddressTag())
|
||||
or
|
||||
operandTag instanceof LoadOperandTag and
|
||||
result = getEnclosingFunction().getUnmodeledDefinitionInstruction()
|
||||
)
|
||||
}
|
||||
|
||||
@@ -282,14 +279,11 @@ class TranslatedLoad extends TranslatedExpr, TTranslatedLoad {
|
||||
|
||||
override Instruction getResult() { result = getInstruction(LoadTag()) }
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = LoadTag() and
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = getOperand().getResult()
|
||||
or
|
||||
operandTag instanceof LoadOperandTag and
|
||||
result = getEnclosingFunction().getUnmodeledDefinitionInstruction()
|
||||
)
|
||||
}
|
||||
|
||||
@@ -332,7 +326,7 @@ class TranslatedResultCopy extends TranslatedExpr, TTranslatedResultCopy {
|
||||
|
||||
override Instruction getResult() { result = getInstruction(ResultCopyTag()) }
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = ResultCopyTag() and
|
||||
operandTag instanceof UnaryOperandTag and
|
||||
result = getOperand().getResult()
|
||||
@@ -369,7 +363,9 @@ class TranslatedCommaExpr extends TranslatedNonConstantExpr {
|
||||
none()
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) { none() }
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
none()
|
||||
}
|
||||
|
||||
private TranslatedExpr getLeftOperand() {
|
||||
result = getTranslatedExpr(expr.getLeftOperand().getFullyConverted())
|
||||
@@ -429,7 +425,7 @@ abstract class TranslatedCrementOperation extends TranslatedNonConstantExpr {
|
||||
resultType = getTypeForPRValue(expr.getType())
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = CrementOpTag() and
|
||||
(
|
||||
operandTag instanceof LeftOperandTag and
|
||||
@@ -580,7 +576,7 @@ class TranslatedArrayExpr extends TranslatedNonConstantExpr {
|
||||
resultType = getTypeForGLValue(expr.getType())
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
(
|
||||
operandTag instanceof LeftOperandTag and
|
||||
@@ -622,7 +618,7 @@ abstract class TranslatedTransparentExpr extends TranslatedNonConstantExpr {
|
||||
|
||||
final override Instruction getResult() { result = getOperand().getResult() }
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
none()
|
||||
}
|
||||
|
||||
@@ -685,7 +681,7 @@ class TranslatedThisExpr extends TranslatedNonConstantExpr {
|
||||
|
||||
final override Instruction getChildSuccessor(TranslatedElement child) { none() }
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
operandTag instanceof UnaryOperandTag and
|
||||
result = getInitializeThisInstruction()
|
||||
@@ -729,7 +725,9 @@ class TranslatedNonFieldVariableAccess extends TranslatedVariableAccess {
|
||||
else result = getInstruction(OnlyInstructionTag())
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) { none() }
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
none()
|
||||
}
|
||||
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) {
|
||||
tag = OnlyInstructionTag() and
|
||||
@@ -748,7 +746,7 @@ class TranslatedFieldAccess extends TranslatedVariableAccess {
|
||||
|
||||
override Instruction getFirstInstruction() { result = getQualifier().getFirstInstruction() }
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
operandTag instanceof UnaryOperandTag and
|
||||
result = getQualifier().getResult()
|
||||
@@ -822,7 +820,7 @@ abstract class TranslatedConstantExpr extends TranslatedCoreExpr, TTranslatedVal
|
||||
|
||||
final override Instruction getResult() { result = getInstruction(OnlyInstructionTag()) }
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
none()
|
||||
}
|
||||
|
||||
@@ -906,7 +904,7 @@ class TranslatedUnaryExpr extends TranslatedSingleInstructionExpr {
|
||||
child = getOperand() and result = getInstruction(OnlyInstructionTag())
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
result = getOperand().getResult() and
|
||||
operandTag instanceof UnaryOperandTag
|
||||
@@ -960,7 +958,7 @@ abstract class TranslatedSingleInstructionConversion extends TranslatedConversio
|
||||
|
||||
override Instruction getResult() { result = getInstruction(OnlyInstructionTag()) }
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
operandTag instanceof UnaryOperandTag and
|
||||
result = getOperand().getResult()
|
||||
@@ -1070,7 +1068,7 @@ class TranslatedBoolConversion extends TranslatedConversion {
|
||||
|
||||
override Instruction getResult() { result = getInstruction(BoolConversionCompareTag()) }
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = BoolConversionCompareTag() and
|
||||
(
|
||||
operandTag instanceof LeftOperandTag and
|
||||
@@ -1172,7 +1170,7 @@ class TranslatedBinaryOperation extends TranslatedSingleInstructionExpr {
|
||||
id = 1 and result = getRightOperand()
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
if swapOperandsOnOp()
|
||||
then (
|
||||
@@ -1306,7 +1304,7 @@ class TranslatedAssignExpr extends TranslatedNonConstantExpr {
|
||||
resultType = getTypeForPRValue(expr.getType()) // Always a prvalue
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = AssignmentStoreTag() and
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
@@ -1482,7 +1480,7 @@ class TranslatedAssignOperation extends TranslatedNonConstantExpr {
|
||||
result = getElementSize(expr.getType())
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
leftOperandNeedsConversion() and
|
||||
tag = AssignOperationConvertLeftTag() and
|
||||
operandTag instanceof UnaryOperandTag and
|
||||
@@ -1626,7 +1624,7 @@ class TranslatedNonConstantAllocationSize extends TranslatedAllocationSize {
|
||||
result = expr.getAllocatedElementType().getSize().toString()
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = AllocationSizeTag() and
|
||||
(
|
||||
operandTag instanceof LeftOperandTag and result = getInstruction(AllocationExtentConvertTag())
|
||||
@@ -1742,7 +1740,7 @@ class TranslatedDestructorFieldDestruction extends TranslatedNonConstantExpr, St
|
||||
|
||||
final override Instruction getFirstInstruction() { result = getInstruction(OnlyInstructionTag()) }
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
operandTag instanceof UnaryOperandTag and
|
||||
result = getTranslatedFunction(expr.getEnclosingFunction()).getInitializeThisInstruction()
|
||||
@@ -1832,7 +1830,7 @@ abstract class TranslatedConditionalExpr extends TranslatedNonConstantExpr {
|
||||
)
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
not resultIsVoid() and
|
||||
(
|
||||
not thenIsVoid() and
|
||||
@@ -1859,9 +1857,6 @@ abstract class TranslatedConditionalExpr extends TranslatedNonConstantExpr {
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = getInstruction(ConditionValueResultTempAddressTag())
|
||||
or
|
||||
operandTag instanceof LoadOperandTag and
|
||||
result = getEnclosingFunction().getUnmodeledDefinitionInstruction()
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -2014,8 +2009,8 @@ class TranslatedBinaryConditionalExpr extends TranslatedConditionalExpr {
|
||||
)
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
result = super.getInstructionOperand(tag, operandTag)
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
result = super.getInstructionRegisterOperand(tag, operandTag)
|
||||
or
|
||||
tag = ValueConditionConditionalBranchTag() and
|
||||
operandTag instanceof ConditionOperandTag and
|
||||
@@ -2093,20 +2088,19 @@ class TranslatedThrowValueExpr extends TranslatedThrowExpr, TranslatedVariableIn
|
||||
type = getTypeForPRValue(getExceptionType())
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
result = TranslatedVariableInitialization.super.getInstructionOperand(tag, operandTag)
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
result = TranslatedVariableInitialization.super.getInstructionRegisterOperand(tag, operandTag)
|
||||
or
|
||||
tag = ThrowTag() and
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = getInstruction(InitializerVariableAddressTag())
|
||||
or
|
||||
operandTag instanceof LoadOperandTag and
|
||||
result = getEnclosingFunction().getUnmodeledDefinitionInstruction()
|
||||
)
|
||||
}
|
||||
|
||||
final override CppType getInstructionOperandType(InstructionTag tag, TypedOperandTag operandTag) {
|
||||
final override CppType getInstructionMemoryOperandType(
|
||||
InstructionTag tag, TypedOperandTag operandTag
|
||||
) {
|
||||
tag = ThrowTag() and
|
||||
operandTag instanceof LoadOperandTag and
|
||||
result = getTypeForPRValue(getExceptionType())
|
||||
@@ -2191,7 +2185,7 @@ class TranslatedBuiltInOperation extends TranslatedNonConstantExpr {
|
||||
resultType = getResultType()
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
exists(int index |
|
||||
operandTag = positionalArgumentOperand(index) and
|
||||
@@ -2311,7 +2305,7 @@ class TranslatedVarArgsStart extends TranslatedNonConstantExpr {
|
||||
result = getEnclosingFunction().getEllipsisVariable()
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = VarArgsStartTag() and
|
||||
operandTag instanceof UnaryOperandTag and
|
||||
result = getInstruction(VarArgsStartEllipsisAddressTag())
|
||||
@@ -2382,14 +2376,11 @@ class TranslatedVarArg extends TranslatedNonConstantExpr {
|
||||
result = getInstruction(VarArgsVAListLoadTag())
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = VarArgsVAListLoadTag() and
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = getVAList().getResult()
|
||||
or
|
||||
operandTag instanceof LoadOperandTag and
|
||||
result = getEnclosingFunction().getUnmodeledDefinitionInstruction()
|
||||
)
|
||||
or
|
||||
tag = VarArgsArgAddressTag() and
|
||||
@@ -2442,7 +2433,7 @@ class TranslatedVarArgsEnd extends TranslatedNonConstantExpr {
|
||||
result = getInstruction(OnlyInstructionTag())
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
operandTag instanceof UnaryOperandTag and
|
||||
result = getVAList().getResult()
|
||||
@@ -2503,14 +2494,11 @@ class TranslatedVarArgCopy extends TranslatedNonConstantExpr {
|
||||
result = getInstruction(VarArgsVAListStoreTag())
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = VarArgsVAListLoadTag() and
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = getSourceVAList().getResult()
|
||||
or
|
||||
operandTag instanceof LoadOperandTag and
|
||||
result = getEnclosingFunction().getUnmodeledDefinitionInstruction()
|
||||
)
|
||||
or
|
||||
tag = VarArgsVAListStoreTag() and
|
||||
@@ -2560,7 +2548,7 @@ abstract class TranslatedNewOrNewArrayExpr extends TranslatedNonConstantExpr, In
|
||||
child = getInitialization() and result = getParent().getChildSuccessor(this)
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
operandTag instanceof UnaryOperandTag and
|
||||
result = getAllocatorCall().getResult()
|
||||
@@ -2623,7 +2611,7 @@ class TranslatedDeleteArrayExprPlaceHolder extends TranslatedSingleInstructionEx
|
||||
child = getOperand() and result = getInstruction(OnlyInstructionTag())
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
none()
|
||||
}
|
||||
|
||||
@@ -2657,7 +2645,7 @@ class TranslatedDeleteExprPlaceHolder extends TranslatedSingleInstructionExpr {
|
||||
child = getOperand() and result = getInstruction(OnlyInstructionTag())
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
none()
|
||||
}
|
||||
|
||||
@@ -2761,7 +2749,7 @@ class TranslatedLambdaExpr extends TranslatedNonConstantExpr, InitializationCont
|
||||
resultType = getTypeForPRValue(expr.getType())
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = InitializerStoreTag() and
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = getInstruction(InitializerVariableAddressTag())
|
||||
@@ -2770,9 +2758,6 @@ class TranslatedLambdaExpr extends TranslatedNonConstantExpr, InitializationCont
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = getInstruction(InitializerVariableAddressTag())
|
||||
or
|
||||
operandTag instanceof LoadOperandTag and
|
||||
result = getEnclosingFunction().getUnmodeledDefinitionInstruction()
|
||||
)
|
||||
}
|
||||
|
||||
@@ -2832,7 +2817,7 @@ class TranslatedStmtExpr extends TranslatedNonConstantExpr {
|
||||
|
||||
override Instruction getResult() { result = getInstruction(OnlyInstructionTag()) }
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag instanceof OnlyInstructionTag and
|
||||
operandTag instanceof UnaryOperandTag and
|
||||
result = getTranslatedExpr(expr.getResultExpr().getFullyConverted()).getResult()
|
||||
@@ -2856,7 +2841,7 @@ class TranslatedErrorExpr extends TranslatedSingleInstructionExpr {
|
||||
|
||||
final override Instruction getChildSuccessor(TranslatedElement child) { none() }
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
none()
|
||||
}
|
||||
|
||||
|
||||
@@ -138,12 +138,9 @@ class TranslatedFunction extends TranslatedElement, TTranslatedFunction {
|
||||
result = getInstruction(ReturnTag())
|
||||
or
|
||||
tag = ReturnTag() and
|
||||
result = getInstruction(UnmodeledUseTag())
|
||||
result = getInstruction(AliasedUseTag())
|
||||
or
|
||||
tag = UnwindTag() and
|
||||
result = getInstruction(UnmodeledUseTag())
|
||||
or
|
||||
tag = UnmodeledUseTag() and
|
||||
result = getInstruction(AliasedUseTag())
|
||||
or
|
||||
tag = AliasedUseTag() and
|
||||
@@ -221,10 +218,6 @@ class TranslatedFunction extends TranslatedElement, TTranslatedFunction {
|
||||
exists(ThrowExpr throw | throw.getEnclosingFunction() = func)
|
||||
)
|
||||
or
|
||||
tag = UnmodeledUseTag() and
|
||||
opcode instanceof Opcode::UnmodeledUse and
|
||||
resultType = getVoidType()
|
||||
or
|
||||
tag = AliasedUseTag() and
|
||||
opcode instanceof Opcode::AliasedUse and
|
||||
resultType = getVoidType()
|
||||
@@ -239,32 +232,18 @@ class TranslatedFunction extends TranslatedElement, TTranslatedFunction {
|
||||
result = getInstruction(UnwindTag())
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = UnmodeledUseTag() and
|
||||
operandTag instanceof UnmodeledUseOperandTag and
|
||||
result.getEnclosingFunction() = func and
|
||||
result.hasMemoryResult()
|
||||
or
|
||||
tag = UnmodeledUseTag() and
|
||||
operandTag instanceof UnmodeledUseOperandTag and
|
||||
result = getUnmodeledDefinitionInstruction()
|
||||
or
|
||||
tag = AliasedUseTag() and
|
||||
operandTag instanceof SideEffectOperandTag and
|
||||
result = getUnmodeledDefinitionInstruction()
|
||||
or
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = ReturnTag() and
|
||||
hasReturnValue() and
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = getInstruction(ReturnValueAddressTag())
|
||||
or
|
||||
operandTag instanceof LoadOperandTag and
|
||||
result = getUnmodeledDefinitionInstruction()
|
||||
)
|
||||
}
|
||||
|
||||
final override CppType getInstructionOperandType(InstructionTag tag, TypedOperandTag operandTag) {
|
||||
final override CppType getInstructionMemoryOperandType(
|
||||
InstructionTag tag, TypedOperandTag operandTag
|
||||
) {
|
||||
tag = ReturnTag() and
|
||||
hasReturnValue() and
|
||||
operandTag instanceof LoadOperandTag and
|
||||
@@ -445,7 +424,7 @@ abstract class TranslatedParameter extends TranslatedElement {
|
||||
result = getIRVariable()
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = InitializerStoreTag() and
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
@@ -457,9 +436,6 @@ abstract class TranslatedParameter extends TranslatedElement {
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = getInstruction(InitializerVariableAddressTag())
|
||||
or
|
||||
operandTag instanceof LoadOperandTag and
|
||||
result = getTranslatedFunction(getFunction()).getUnmodeledDefinitionInstruction()
|
||||
)
|
||||
or
|
||||
tag = InitializerIndirectStoreTag() and
|
||||
@@ -734,17 +710,15 @@ class TranslatedReadEffect extends TranslatedElement, TTranslatedReadEffect {
|
||||
resultType = getVoidType()
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
operandTag = sideEffectOperand() and
|
||||
result = getTranslatedFunction(getFunction()).getUnmodeledDefinitionInstruction()
|
||||
or
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
operandTag = addressOperand() and
|
||||
result = getTranslatedParameter(param).getInstruction(InitializerIndirectAddressTag())
|
||||
}
|
||||
|
||||
final override CppType getInstructionOperandType(InstructionTag tag, TypedOperandTag operandTag) {
|
||||
final override CppType getInstructionMemoryOperandType(
|
||||
InstructionTag tag, TypedOperandTag operandTag
|
||||
) {
|
||||
tag = OnlyInstructionTag() and
|
||||
operandTag = sideEffectOperand() and
|
||||
result = getUnknownType()
|
||||
|
||||
@@ -75,7 +75,7 @@ abstract class TranslatedVariableInitialization extends TranslatedElement, Initi
|
||||
child = getInitialization() and result = getInitializationSuccessor()
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
hasUninitializedInstruction() and
|
||||
tag = InitializerStoreTag() and
|
||||
operandTag instanceof AddressOperandTag and
|
||||
@@ -262,7 +262,7 @@ class TranslatedSimpleDirectInitialization extends TranslatedDirectInitializatio
|
||||
child = getInitializer() and result = getInstruction(InitializerStoreTag())
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = InitializerStoreTag() and
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
@@ -355,14 +355,11 @@ class TranslatedStringLiteralInitialization extends TranslatedDirectInitializati
|
||||
child = getInitializer() and result = getInstruction(InitializerLoadStringTag())
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = InitializerLoadStringTag() and
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = getInitializer().getResult()
|
||||
or
|
||||
operandTag instanceof LoadOperandTag and
|
||||
result = getEnclosingFunction().getUnmodeledDefinitionInstruction()
|
||||
)
|
||||
or
|
||||
tag = InitializerStoreTag() and
|
||||
@@ -461,7 +458,9 @@ class TranslatedConstructorInitialization extends TranslatedDirectInitialization
|
||||
child = getInitializer() and result = getParent().getChildSuccessor(this)
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) { none() }
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
none()
|
||||
}
|
||||
|
||||
override Instruction getReceiver() { result = getContext().getTargetAddress() }
|
||||
}
|
||||
@@ -508,7 +507,7 @@ abstract class TranslatedFieldInitialization extends TranslatedElement {
|
||||
resultType = getTypeForGLValue(field.getType())
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = getFieldAddressTag() and
|
||||
operandTag instanceof UnaryOperandTag and
|
||||
result = getParent().(InitializationContext).getTargetAddress()
|
||||
@@ -599,8 +598,8 @@ class TranslatedFieldValueInitialization extends TranslatedFieldInitialization,
|
||||
result = getZeroValue(field.getUnspecifiedType())
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
result = TranslatedFieldInitialization.super.getInstructionOperand(tag, operandTag)
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
result = TranslatedFieldInitialization.super.getInstructionRegisterOperand(tag, operandTag)
|
||||
or
|
||||
tag = getFieldDefaultValueStoreTag() and
|
||||
(
|
||||
@@ -656,7 +655,7 @@ abstract class TranslatedElementInitialization extends TranslatedElement {
|
||||
kind instanceof GotoEdge
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = getElementAddressTag() and
|
||||
(
|
||||
operandTag instanceof LeftOperandTag and
|
||||
@@ -782,8 +781,8 @@ class TranslatedElementValueInitialization extends TranslatedElementInitializati
|
||||
result = elementCount * getElementType().getSize()
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
result = TranslatedElementInitialization.super.getInstructionOperand(tag, operandTag)
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
result = TranslatedElementInitialization.super.getInstructionRegisterOperand(tag, operandTag)
|
||||
or
|
||||
tag = getElementDefaultValueStoreTag() and
|
||||
(
|
||||
@@ -861,7 +860,7 @@ abstract class TranslatedBaseStructorCall extends TranslatedStructorCallFromStru
|
||||
|
||||
final override Instruction getReceiver() { result = getInstruction(OnlyInstructionTag()) }
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
final override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = OnlyInstructionTag() and
|
||||
operandTag instanceof UnaryOperandTag and
|
||||
result = getTranslatedFunction(getFunction()).getInitializeThisInstruction()
|
||||
|
||||
@@ -713,7 +713,7 @@ class TranslatedSwitchStmt extends TranslatedStmt {
|
||||
resultType = getVoidType()
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = SwitchBranchTag() and
|
||||
operandTag instanceof ConditionOperandTag and
|
||||
result = getExpr().getResult()
|
||||
@@ -759,11 +759,7 @@ class TranslatedAsmStmt extends TranslatedStmt {
|
||||
resultType = getUnknownType()
|
||||
}
|
||||
|
||||
override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = AsmTag() and
|
||||
operandTag instanceof SideEffectOperandTag and
|
||||
result = getTranslatedFunction(stmt.getEnclosingFunction()).getUnmodeledDefinitionInstruction()
|
||||
or
|
||||
override Instruction getInstructionRegisterOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
exists(int index |
|
||||
tag = AsmTag() and
|
||||
operandTag = asmOperand(index) and
|
||||
@@ -771,7 +767,9 @@ class TranslatedAsmStmt extends TranslatedStmt {
|
||||
)
|
||||
}
|
||||
|
||||
final override CppType getInstructionOperandType(InstructionTag tag, TypedOperandTag operandTag) {
|
||||
final override CppType getInstructionMemoryOperandType(
|
||||
InstructionTag tag, TypedOperandTag operandTag
|
||||
) {
|
||||
tag = AsmTag() and
|
||||
operandTag instanceof SideEffectOperandTag and
|
||||
result = getUnknownType()
|
||||
|
||||
@@ -31,10 +31,14 @@ class IRBlockBase extends TIRBlock {
|
||||
config.shouldEvaluateDebugStringsForFunction(this.getEnclosingFunction())
|
||||
) and
|
||||
this =
|
||||
rank[result + 1](IRBlock funcBlock |
|
||||
funcBlock.getEnclosingFunction() = getEnclosingFunction()
|
||||
rank[result + 1](IRBlock funcBlock, int sortOverride |
|
||||
funcBlock.getEnclosingFunction() = getEnclosingFunction() and
|
||||
// Ensure that the block containing `EnterFunction` always comes first.
|
||||
if funcBlock.getFirstInstruction() instanceof EnterFunctionInstruction
|
||||
then sortOverride = 0
|
||||
else sortOverride = 1
|
||||
|
|
||||
funcBlock order by funcBlock.getUniqueId()
|
||||
funcBlock order by sortOverride, funcBlock.getUniqueId()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,6 @@ module InstructionConsistency {
|
||||
operand.getOperandTag() = tag
|
||||
) and
|
||||
operandCount > 1 and
|
||||
not tag instanceof UnmodeledUseOperandTag and
|
||||
message =
|
||||
"Instruction has " + operandCount + " operands with tag '" + tag.toString() + "'" +
|
||||
" in function '$@'." and
|
||||
@@ -158,7 +157,6 @@ module InstructionConsistency {
|
||||
) {
|
||||
exists(MemoryOperand operand, Instruction def |
|
||||
operand = instr.getAnOperand() and
|
||||
not operand instanceof UnmodeledUseOperand and
|
||||
def = operand.getAnyDef() and
|
||||
not def.isResultModeled() and
|
||||
not def instanceof UnmodeledDefinitionInstruction and
|
||||
@@ -259,7 +257,6 @@ module InstructionConsistency {
|
||||
Operand useOperand, string message, IRFunction func, string funcText
|
||||
) {
|
||||
exists(IRBlock useBlock, int useIndex, Instruction defInstr, IRBlock defBlock, int defIndex |
|
||||
not useOperand.getUse() instanceof UnmodeledUseInstruction and
|
||||
not defInstr instanceof UnmodeledDefinitionInstruction and
|
||||
pointOfEvaluation(useOperand, useBlock, useIndex) and
|
||||
defInstr = useOperand.getAnyDef() and
|
||||
|
||||
@@ -45,11 +45,6 @@ class IRFunction extends TIRFunction {
|
||||
result.getEnclosingIRFunction() = this
|
||||
}
|
||||
|
||||
pragma[noinline]
|
||||
final UnmodeledUseInstruction getUnmodeledUseInstruction() {
|
||||
result.getEnclosingIRFunction() = this
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the single return instruction for this function.
|
||||
*/
|
||||
|
||||
@@ -320,8 +320,7 @@ class Instruction extends Construction::TInstruction {
|
||||
/**
|
||||
* Holds if the result of this instruction is precisely modeled in SSA. Always
|
||||
* holds for a register result. For a memory result, a modeled result is
|
||||
* connected to its actual uses. An unmodeled result is connected to the
|
||||
* `UnmodeledUse` instruction.
|
||||
* connected to its actual uses. An unmodeled result has no uses.
|
||||
*
|
||||
* For example:
|
||||
* ```
|
||||
@@ -1248,12 +1247,6 @@ class AliasedUseInstruction extends Instruction {
|
||||
AliasedUseInstruction() { getOpcode() instanceof Opcode::AliasedUse }
|
||||
}
|
||||
|
||||
class UnmodeledUseInstruction extends Instruction {
|
||||
UnmodeledUseInstruction() { getOpcode() instanceof Opcode::UnmodeledUse }
|
||||
|
||||
override string getOperandsString() { result = "mu*" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An instruction representing the choice of one of multiple input values based on control flow.
|
||||
*
|
||||
|
||||
@@ -19,11 +19,7 @@ private newtype TOperand =
|
||||
) {
|
||||
defInstr = Construction::getMemoryOperandDefinition(useInstr, tag, overlap) and
|
||||
not Construction::isInCycle(useInstr) and
|
||||
(
|
||||
strictcount(Construction::getMemoryOperandDefinition(useInstr, tag, _)) = 1
|
||||
or
|
||||
tag instanceof UnmodeledUseOperandTag
|
||||
)
|
||||
strictcount(Construction::getMemoryOperandDefinition(useInstr, tag, _)) = 1
|
||||
} or
|
||||
TPhiOperand(
|
||||
PhiInstruction useInstr, Instruction defInstr, IRBlock predecessorBlock, Overlap overlap
|
||||
@@ -327,16 +323,6 @@ class ConditionOperand extends RegisterOperand {
|
||||
override string toString() { result = "Condition" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An operand of the special `UnmodeledUse` instruction, representing a value
|
||||
* whose set of uses is unknown.
|
||||
*/
|
||||
class UnmodeledUseOperand extends NonPhiMemoryOperand {
|
||||
override UnmodeledUseOperandTag tag;
|
||||
|
||||
override string toString() { result = "UnmodeledUse" }
|
||||
}
|
||||
|
||||
/**
|
||||
* The operand representing the target function of an `Call` instruction.
|
||||
*/
|
||||
|
||||
@@ -247,6 +247,10 @@ private predicate resultMayReachReturn(Instruction instr) { operandMayReachRetur
|
||||
private predicate resultEscapesNonReturn(Instruction instr) {
|
||||
// The result escapes if it has at least one use that escapes.
|
||||
operandEscapesNonReturn(instr.getAUse())
|
||||
or
|
||||
// The result also escapes if it is not modeled in SSA, because we do not know where it might be
|
||||
// used.
|
||||
not instr.isResultModeled()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -128,23 +128,10 @@ private module Cached {
|
||||
oldOperand = oldInstruction.getAnOperand() and
|
||||
tag = oldOperand.getOperandTag() and
|
||||
(
|
||||
(
|
||||
if exists(Alias::getOperandMemoryLocation(oldOperand))
|
||||
then hasMemoryOperandDefinition(oldInstruction, oldOperand, overlap, result)
|
||||
else (
|
||||
result = instruction.getEnclosingIRFunction().getUnmodeledDefinitionInstruction() and
|
||||
overlap instanceof MustTotallyOverlap
|
||||
)
|
||||
)
|
||||
or
|
||||
// Connect any definitions that are not being modeled in SSA to the
|
||||
// `UnmodeledUse` instruction.
|
||||
exists(OldInstruction oldDefinition |
|
||||
instruction instanceof UnmodeledUseInstruction and
|
||||
tag instanceof UnmodeledUseOperandTag and
|
||||
oldDefinition = oldOperand.getAnyDef() and
|
||||
not exists(Alias::getResultMemoryLocation(oldDefinition)) and
|
||||
result = getNewInstruction(oldDefinition) and
|
||||
if exists(Alias::getOperandMemoryLocation(oldOperand))
|
||||
then hasMemoryOperandDefinition(oldInstruction, oldOperand, overlap, result)
|
||||
else (
|
||||
result = instruction.getEnclosingIRFunction().getUnmodeledDefinitionInstruction() and
|
||||
overlap instanceof MustTotallyOverlap
|
||||
)
|
||||
)
|
||||
@@ -154,13 +141,6 @@ private module Cached {
|
||||
tag instanceof ChiPartialOperandTag and
|
||||
overlap instanceof MustExactlyOverlap
|
||||
or
|
||||
exists(IRFunction f |
|
||||
tag instanceof UnmodeledUseOperandTag and
|
||||
result = f.getUnmodeledDefinitionInstruction() and
|
||||
instruction = f.getUnmodeledUseInstruction() and
|
||||
overlap instanceof MustTotallyOverlap
|
||||
)
|
||||
or
|
||||
tag instanceof ChiTotalOperandTag and
|
||||
result = getChiInstructionTotalOperand(instruction) and
|
||||
overlap instanceof MustExactlyOverlap
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -92,9 +92,8 @@ ssa.cpp:
|
||||
# 13| v13_14(void) = ReturnIndirection[p] : &:r13_8, m28_3
|
||||
# 13| r13_15(glval<int>) = VariableAddress[#return] :
|
||||
# 13| v13_16(void) = ReturnValue : &:r13_15, m28_14
|
||||
# 13| v13_17(void) = UnmodeledUse : mu*
|
||||
# 13| v13_18(void) = AliasedUse : m13_3
|
||||
# 13| v13_19(void) = ExitFunction :
|
||||
# 13| v13_17(void) = AliasedUse : m13_3
|
||||
# 13| v13_18(void) = ExitFunction :
|
||||
|
||||
# 31| int UnreachableViaGoto()
|
||||
# 31| Block 0
|
||||
@@ -110,9 +109,8 @@ ssa.cpp:
|
||||
# 35| m35_3(int) = Store : &:r35_1, r35_2
|
||||
# 31| r31_6(glval<int>) = VariableAddress[#return] :
|
||||
# 31| v31_7(void) = ReturnValue : &:r31_6, m35_3
|
||||
# 31| v31_8(void) = UnmodeledUse : mu*
|
||||
# 31| v31_9(void) = AliasedUse : m31_3
|
||||
# 31| v31_10(void) = ExitFunction :
|
||||
# 31| v31_8(void) = AliasedUse : m31_3
|
||||
# 31| v31_9(void) = ExitFunction :
|
||||
|
||||
# 38| int UnreachableIf(bool)
|
||||
# 38| Block 0
|
||||
@@ -139,9 +137,8 @@ ssa.cpp:
|
||||
# 38| m38_8(int) = Phi : from 3:m46_3, from 5:m51_3
|
||||
# 38| r38_9(glval<int>) = VariableAddress[#return] :
|
||||
# 38| v38_10(void) = ReturnValue : &:r38_9, m38_8
|
||||
# 38| v38_11(void) = UnmodeledUse : mu*
|
||||
# 38| v38_12(void) = AliasedUse : m38_3
|
||||
# 38| v38_13(void) = ExitFunction :
|
||||
# 38| v38_11(void) = AliasedUse : m38_3
|
||||
# 38| v38_12(void) = ExitFunction :
|
||||
|
||||
# 42| Block 2
|
||||
# 42| r42_1(glval<int>) = VariableAddress[x] :
|
||||
@@ -176,7 +173,7 @@ ssa.cpp:
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 38| Block 6
|
||||
# 38| v38_14(void) = Unreached :
|
||||
# 38| v38_13(void) = Unreached :
|
||||
|
||||
# 59| int DoWhileFalse()
|
||||
# 59| Block 0
|
||||
@@ -205,12 +202,11 @@ ssa.cpp:
|
||||
# 65| m65_4(int) = Store : &:r65_1, r65_3
|
||||
# 59| r59_6(glval<int>) = VariableAddress[#return] :
|
||||
# 59| v59_7(void) = ReturnValue : &:r59_6, m65_4
|
||||
# 59| v59_8(void) = UnmodeledUse : mu*
|
||||
# 59| v59_9(void) = AliasedUse : m59_3
|
||||
# 59| v59_10(void) = ExitFunction :
|
||||
# 59| v59_8(void) = AliasedUse : m59_3
|
||||
# 59| v59_9(void) = ExitFunction :
|
||||
|
||||
# 59| Block 2
|
||||
# 59| v59_11(void) = Unreached :
|
||||
# 59| v59_10(void) = Unreached :
|
||||
|
||||
# 68| void chiNodeAtEndOfLoop(int, char*)
|
||||
# 68| Block 0
|
||||
@@ -260,9 +256,8 @@ ssa.cpp:
|
||||
# 71| v71_1(void) = NoOp :
|
||||
# 68| v68_12(void) = ReturnIndirection[p] : &:r68_10, m68_11
|
||||
# 68| v68_13(void) = ReturnVoid :
|
||||
# 68| v68_14(void) = UnmodeledUse : mu*
|
||||
# 68| v68_15(void) = AliasedUse : ~m69_3
|
||||
# 68| v68_16(void) = ExitFunction :
|
||||
# 68| v68_14(void) = AliasedUse : ~m69_3
|
||||
# 68| v68_15(void) = ExitFunction :
|
||||
|
||||
# 75| void ScalarPhi(bool)
|
||||
# 75| Block 0
|
||||
@@ -320,9 +315,8 @@ ssa.cpp:
|
||||
# 88| m88_4(int) = Store : &:r88_1, r88_3
|
||||
# 89| v89_1(void) = NoOp :
|
||||
# 75| v75_8(void) = ReturnVoid :
|
||||
# 75| v75_9(void) = UnmodeledUse : mu*
|
||||
# 75| v75_10(void) = AliasedUse : m75_3
|
||||
# 75| v75_11(void) = ExitFunction :
|
||||
# 75| v75_9(void) = AliasedUse : m75_3
|
||||
# 75| v75_10(void) = ExitFunction :
|
||||
|
||||
# 91| void MustExactlyOverlap(Point)
|
||||
# 91| Block 0
|
||||
@@ -339,9 +333,8 @@ ssa.cpp:
|
||||
# 92| m92_4(Point) = Store : &:r92_1, r92_3
|
||||
# 93| v93_1(void) = NoOp :
|
||||
# 91| v91_8(void) = ReturnVoid :
|
||||
# 91| v91_9(void) = UnmodeledUse : mu*
|
||||
# 91| v91_10(void) = AliasedUse : m91_3
|
||||
# 91| v91_11(void) = ExitFunction :
|
||||
# 91| v91_9(void) = AliasedUse : m91_3
|
||||
# 91| v91_10(void) = ExitFunction :
|
||||
|
||||
# 95| void MustExactlyOverlapEscaped(Point)
|
||||
# 95| Block 0
|
||||
@@ -369,9 +362,8 @@ ssa.cpp:
|
||||
# 97| m97_10(unknown) = Chi : total:m97_7, partial:m97_9
|
||||
# 98| v98_1(void) = NoOp :
|
||||
# 95| v95_9(void) = ReturnVoid :
|
||||
# 95| v95_10(void) = UnmodeledUse : mu*
|
||||
# 95| v95_11(void) = AliasedUse : ~m97_7
|
||||
# 95| v95_12(void) = ExitFunction :
|
||||
# 95| v95_10(void) = AliasedUse : ~m97_7
|
||||
# 95| v95_11(void) = ExitFunction :
|
||||
|
||||
# 100| void MustTotallyOverlap(Point)
|
||||
# 100| Block 0
|
||||
@@ -394,9 +386,8 @@ ssa.cpp:
|
||||
# 102| m102_5(int) = Store : &:r102_1, r102_4
|
||||
# 103| v103_1(void) = NoOp :
|
||||
# 100| v100_8(void) = ReturnVoid :
|
||||
# 100| v100_9(void) = UnmodeledUse : mu*
|
||||
# 100| v100_10(void) = AliasedUse : m100_3
|
||||
# 100| v100_11(void) = ExitFunction :
|
||||
# 100| v100_9(void) = AliasedUse : m100_3
|
||||
# 100| v100_10(void) = ExitFunction :
|
||||
|
||||
# 105| void MustTotallyOverlapEscaped(Point)
|
||||
# 105| Block 0
|
||||
@@ -430,9 +421,8 @@ ssa.cpp:
|
||||
# 108| m108_10(unknown) = Chi : total:m108_7, partial:m108_9
|
||||
# 109| v109_1(void) = NoOp :
|
||||
# 105| v105_9(void) = ReturnVoid :
|
||||
# 105| v105_10(void) = UnmodeledUse : mu*
|
||||
# 105| v105_11(void) = AliasedUse : ~m108_7
|
||||
# 105| v105_12(void) = ExitFunction :
|
||||
# 105| v105_10(void) = AliasedUse : ~m108_7
|
||||
# 105| v105_11(void) = ExitFunction :
|
||||
|
||||
# 111| void MayPartiallyOverlap(int, int)
|
||||
# 111| Block 0
|
||||
@@ -463,9 +453,8 @@ ssa.cpp:
|
||||
# 113| m113_4(Point) = Store : &:r113_1, r113_3
|
||||
# 114| v114_1(void) = NoOp :
|
||||
# 111| v111_10(void) = ReturnVoid :
|
||||
# 111| v111_11(void) = UnmodeledUse : mu*
|
||||
# 111| v111_12(void) = AliasedUse : m111_3
|
||||
# 111| v111_13(void) = ExitFunction :
|
||||
# 111| v111_11(void) = AliasedUse : m111_3
|
||||
# 111| v111_12(void) = ExitFunction :
|
||||
|
||||
# 116| void MayPartiallyOverlapEscaped(int, int)
|
||||
# 116| Block 0
|
||||
@@ -507,9 +496,8 @@ ssa.cpp:
|
||||
# 119| m119_10(unknown) = Chi : total:m119_7, partial:m119_9
|
||||
# 120| v120_1(void) = NoOp :
|
||||
# 116| v116_10(void) = ReturnVoid :
|
||||
# 116| v116_11(void) = UnmodeledUse : mu*
|
||||
# 116| v116_12(void) = AliasedUse : ~m119_7
|
||||
# 116| v116_13(void) = ExitFunction :
|
||||
# 116| v116_11(void) = AliasedUse : ~m119_7
|
||||
# 116| v116_12(void) = ExitFunction :
|
||||
|
||||
# 122| void MergeMustExactlyOverlap(bool, int, int)
|
||||
# 122| Block 0
|
||||
@@ -572,9 +560,8 @@ ssa.cpp:
|
||||
# 131| m131_4(Point) = Store : &:r131_1, r131_3
|
||||
# 132| v132_1(void) = NoOp :
|
||||
# 122| v122_12(void) = ReturnVoid :
|
||||
# 122| v122_13(void) = UnmodeledUse : mu*
|
||||
# 122| v122_14(void) = AliasedUse : m122_3
|
||||
# 122| v122_15(void) = ExitFunction :
|
||||
# 122| v122_13(void) = AliasedUse : m122_3
|
||||
# 122| v122_14(void) = ExitFunction :
|
||||
|
||||
# 134| void MergeMustExactlyWithMustTotallyOverlap(bool, Point, int)
|
||||
# 134| Block 0
|
||||
@@ -631,9 +618,8 @@ ssa.cpp:
|
||||
# 142| m142_7(int) = Store : &:r142_3, r142_6
|
||||
# 143| v143_1(void) = NoOp :
|
||||
# 134| v134_12(void) = ReturnVoid :
|
||||
# 134| v134_13(void) = UnmodeledUse : mu*
|
||||
# 134| v134_14(void) = AliasedUse : m134_3
|
||||
# 134| v134_15(void) = ExitFunction :
|
||||
# 134| v134_13(void) = AliasedUse : m134_3
|
||||
# 134| v134_14(void) = ExitFunction :
|
||||
|
||||
# 145| void MergeMustExactlyWithMayPartiallyOverlap(bool, Point, int)
|
||||
# 145| Block 0
|
||||
@@ -688,9 +674,8 @@ ssa.cpp:
|
||||
# 153| m153_5(Point) = Store : &:r153_2, r153_4
|
||||
# 154| v154_1(void) = NoOp :
|
||||
# 145| v145_12(void) = ReturnVoid :
|
||||
# 145| v145_13(void) = UnmodeledUse : mu*
|
||||
# 145| v145_14(void) = AliasedUse : m145_3
|
||||
# 145| v145_15(void) = ExitFunction :
|
||||
# 145| v145_13(void) = AliasedUse : m145_3
|
||||
# 145| v145_14(void) = ExitFunction :
|
||||
|
||||
# 156| void MergeMustTotallyOverlapWithMayPartiallyOverlap(bool, Rect, int)
|
||||
# 156| Block 0
|
||||
@@ -747,9 +732,8 @@ ssa.cpp:
|
||||
# 164| m164_6(Point) = Store : &:r164_2, r164_5
|
||||
# 165| v165_1(void) = NoOp :
|
||||
# 156| v156_12(void) = ReturnVoid :
|
||||
# 156| v156_13(void) = UnmodeledUse : mu*
|
||||
# 156| v156_14(void) = AliasedUse : m156_3
|
||||
# 156| v156_15(void) = ExitFunction :
|
||||
# 156| v156_13(void) = AliasedUse : m156_3
|
||||
# 156| v156_14(void) = ExitFunction :
|
||||
|
||||
# 171| void WrapperStruct(Wrapper)
|
||||
# 171| Block 0
|
||||
@@ -784,9 +768,8 @@ ssa.cpp:
|
||||
# 176| m176_4(Wrapper) = Store : &:r176_3, r176_2
|
||||
# 177| v177_1(void) = NoOp :
|
||||
# 171| v171_8(void) = ReturnVoid :
|
||||
# 171| v171_9(void) = UnmodeledUse : mu*
|
||||
# 171| v171_10(void) = AliasedUse : m171_3
|
||||
# 171| v171_11(void) = ExitFunction :
|
||||
# 171| v171_9(void) = AliasedUse : m171_3
|
||||
# 171| v171_10(void) = ExitFunction :
|
||||
|
||||
# 179| int AsmStmt(int*)
|
||||
# 179| Block 0
|
||||
@@ -809,9 +792,8 @@ ssa.cpp:
|
||||
# 179| v179_10(void) = ReturnIndirection[p] : &:r179_8, m179_9
|
||||
# 179| r179_11(glval<int>) = VariableAddress[#return] :
|
||||
# 179| v179_12(void) = ReturnValue : &:r179_11, m181_5
|
||||
# 179| v179_13(void) = UnmodeledUse : mu*
|
||||
# 179| v179_14(void) = AliasedUse : ~m180_2
|
||||
# 179| v179_15(void) = ExitFunction :
|
||||
# 179| v179_13(void) = AliasedUse : ~m180_2
|
||||
# 179| v179_14(void) = ExitFunction :
|
||||
|
||||
# 184| void AsmStmtWithOutputs(unsigned int&, unsigned int&, unsigned int&, unsigned int&)
|
||||
# 184| Block 0
|
||||
@@ -858,9 +840,8 @@ ssa.cpp:
|
||||
# 184| v184_26(void) = ReturnIndirection[c] : &:r184_18, m184_19
|
||||
# 184| v184_27(void) = ReturnIndirection[d] : &:r184_22, m184_23
|
||||
# 184| v184_28(void) = ReturnVoid :
|
||||
# 184| v184_29(void) = UnmodeledUse : mu*
|
||||
# 184| v184_30(void) = AliasedUse : ~m186_2
|
||||
# 184| v184_31(void) = ExitFunction :
|
||||
# 184| v184_29(void) = AliasedUse : ~m186_2
|
||||
# 184| v184_30(void) = ExitFunction :
|
||||
|
||||
# 198| int PureFunctions(char*, char*, int)
|
||||
# 198| Block 0
|
||||
@@ -917,9 +898,8 @@ ssa.cpp:
|
||||
# 198| v198_17(void) = ReturnIndirection[str2] : &:r198_12, m198_13
|
||||
# 198| r198_18(glval<int>) = VariableAddress[#return] :
|
||||
# 198| v198_19(void) = ReturnValue : &:r198_18, m202_4
|
||||
# 198| v198_20(void) = UnmodeledUse : mu*
|
||||
# 198| v198_21(void) = AliasedUse : m198_3
|
||||
# 198| v198_22(void) = ExitFunction :
|
||||
# 198| v198_20(void) = AliasedUse : m198_3
|
||||
# 198| v198_21(void) = ExitFunction :
|
||||
|
||||
# 207| int ModeledCallTarget(int)
|
||||
# 207| Block 0
|
||||
@@ -952,9 +932,8 @@ ssa.cpp:
|
||||
# 210| m210_4(int) = Store : &:r210_1, r210_3
|
||||
# 207| r207_9(glval<int>) = VariableAddress[#return] :
|
||||
# 207| v207_10(void) = ReturnValue : &:r207_9, m210_4
|
||||
# 207| v207_11(void) = UnmodeledUse : mu*
|
||||
# 207| v207_12(void) = AliasedUse : m207_3
|
||||
# 207| v207_13(void) = ExitFunction :
|
||||
# 207| v207_11(void) = AliasedUse : m207_3
|
||||
# 207| v207_12(void) = ExitFunction :
|
||||
|
||||
# 213| void InitArray()
|
||||
# 213| Block 0
|
||||
@@ -1021,9 +1000,8 @@ ssa.cpp:
|
||||
# 221| m221_12(char[3]) = Chi : total:m221_7, partial:m221_11
|
||||
# 222| v222_1(void) = NoOp :
|
||||
# 213| v213_6(void) = ReturnVoid :
|
||||
# 213| v213_7(void) = UnmodeledUse : mu*
|
||||
# 213| v213_8(void) = AliasedUse : m213_3
|
||||
# 213| v213_9(void) = ExitFunction :
|
||||
# 213| v213_7(void) = AliasedUse : m213_3
|
||||
# 213| v213_8(void) = ExitFunction :
|
||||
|
||||
# 226| char StringLiteralAliasing()
|
||||
# 226| Block 0
|
||||
@@ -1049,9 +1027,8 @@ ssa.cpp:
|
||||
# 230| m230_7(char) = Store : &:r230_1, r230_6
|
||||
# 226| r226_6(glval<char>) = VariableAddress[#return] :
|
||||
# 226| v226_7(void) = ReturnValue : &:r226_6, m230_7
|
||||
# 226| v226_8(void) = UnmodeledUse : mu*
|
||||
# 226| v226_9(void) = AliasedUse : ~m227_4
|
||||
# 226| v226_10(void) = ExitFunction :
|
||||
# 226| v226_8(void) = AliasedUse : ~m227_4
|
||||
# 226| v226_9(void) = ExitFunction :
|
||||
|
||||
# 235| void Constructible::Constructible(int)
|
||||
# 235| Block 0
|
||||
@@ -1065,9 +1042,8 @@ ssa.cpp:
|
||||
# 235| m235_8(int) = InitializeParameter[x] : &:r235_7
|
||||
# 235| v235_9(void) = NoOp :
|
||||
# 235| v235_10(void) = ReturnVoid :
|
||||
# 235| v235_11(void) = UnmodeledUse : mu*
|
||||
# 235| v235_12(void) = AliasedUse : m235_3
|
||||
# 235| v235_13(void) = ExitFunction :
|
||||
# 235| v235_11(void) = AliasedUse : m235_3
|
||||
# 235| v235_12(void) = ExitFunction :
|
||||
|
||||
# 236| void Constructible::g()
|
||||
# 236| Block 0
|
||||
@@ -1079,9 +1055,8 @@ ssa.cpp:
|
||||
# 236| r236_6(glval<Constructible>) = InitializeThis :
|
||||
# 236| v236_7(void) = NoOp :
|
||||
# 236| v236_8(void) = ReturnVoid :
|
||||
# 236| v236_9(void) = UnmodeledUse : mu*
|
||||
# 236| v236_10(void) = AliasedUse : m236_3
|
||||
# 236| v236_11(void) = ExitFunction :
|
||||
# 236| v236_9(void) = AliasedUse : m236_3
|
||||
# 236| v236_10(void) = ExitFunction :
|
||||
|
||||
# 239| void ExplicitConstructorCalls()
|
||||
# 239| Block 0
|
||||
@@ -1134,9 +1109,8 @@ ssa.cpp:
|
||||
# 244| m244_8(Constructible) = Chi : total:m243_9, partial:m244_7
|
||||
# 245| v245_1(void) = NoOp :
|
||||
# 239| v239_6(void) = ReturnVoid :
|
||||
# 239| v239_7(void) = UnmodeledUse : mu*
|
||||
# 239| v239_8(void) = AliasedUse : ~m244_5
|
||||
# 239| v239_9(void) = ExitFunction :
|
||||
# 239| v239_7(void) = AliasedUse : ~m244_5
|
||||
# 239| v239_8(void) = ExitFunction :
|
||||
|
||||
# 247| char* VoidStarIndirectParameters(char*, int)
|
||||
# 247| Block 0
|
||||
@@ -1192,9 +1166,8 @@ ssa.cpp:
|
||||
# 247| v247_13(void) = ReturnIndirection[src] : &:r247_8, ~m250_13
|
||||
# 247| r247_14(glval<char *>) = VariableAddress[#return] :
|
||||
# 247| v247_15(void) = ReturnValue : &:r247_14, m251_4
|
||||
# 247| v247_16(void) = UnmodeledUse : mu*
|
||||
# 247| v247_17(void) = AliasedUse : ~m250_13
|
||||
# 247| v247_18(void) = ExitFunction :
|
||||
# 247| v247_16(void) = AliasedUse : ~m250_13
|
||||
# 247| v247_17(void) = ExitFunction :
|
||||
|
||||
# 254| char StringLiteralAliasing2(bool)
|
||||
# 254| Block 0
|
||||
@@ -1240,9 +1213,8 @@ ssa.cpp:
|
||||
# 263| m263_7(char) = Store : &:r263_1, r263_6
|
||||
# 254| r254_8(glval<char>) = VariableAddress[#return] :
|
||||
# 254| v254_9(void) = ReturnValue : &:r254_8, m263_7
|
||||
# 254| v254_10(void) = UnmodeledUse : mu*
|
||||
# 254| v254_11(void) = AliasedUse : ~m262_1
|
||||
# 254| v254_12(void) = ExitFunction :
|
||||
# 254| v254_10(void) = AliasedUse : ~m262_1
|
||||
# 254| v254_11(void) = ExitFunction :
|
||||
|
||||
# 268| void* MallocAliasing(void*, int)
|
||||
# 268| Block 0
|
||||
@@ -1286,9 +1258,8 @@ ssa.cpp:
|
||||
# 268| v268_13(void) = ReturnIndirection[s] : &:r268_8, ~m270_11
|
||||
# 268| r268_14(glval<void *>) = VariableAddress[#return] :
|
||||
# 268| v268_15(void) = ReturnValue : &:r268_14, m271_4
|
||||
# 268| v268_16(void) = UnmodeledUse : mu*
|
||||
# 268| v268_17(void) = AliasedUse : ~m270_11
|
||||
# 268| v268_18(void) = ExitFunction :
|
||||
# 268| v268_16(void) = AliasedUse : ~m270_11
|
||||
# 268| v268_17(void) = ExitFunction :
|
||||
|
||||
# 275| void EscapedButNotConflated(bool, Point, int)
|
||||
# 275| Block 0
|
||||
@@ -1344,9 +1315,8 @@ ssa.cpp:
|
||||
# 281| m281_7(int) = Store : &:r281_3, r281_6
|
||||
# 282| v282_1(void) = NoOp :
|
||||
# 275| v275_12(void) = ReturnVoid :
|
||||
# 275| v275_13(void) = UnmodeledUse : mu*
|
||||
# 275| v275_14(void) = AliasedUse : ~m281_2
|
||||
# 275| v275_15(void) = ExitFunction :
|
||||
# 275| v275_13(void) = AliasedUse : ~m281_2
|
||||
# 275| v275_14(void) = ExitFunction :
|
||||
|
||||
# 286| void A::A(int)
|
||||
# 286| Block 0
|
||||
@@ -1360,9 +1330,8 @@ ssa.cpp:
|
||||
# 286| m286_8(int) = InitializeParameter[x] : &:r286_7
|
||||
# 286| v286_9(void) = NoOp :
|
||||
# 286| v286_10(void) = ReturnVoid :
|
||||
# 286| v286_11(void) = UnmodeledUse : mu*
|
||||
# 286| v286_12(void) = AliasedUse : m286_3
|
||||
# 286| v286_13(void) = ExitFunction :
|
||||
# 286| v286_11(void) = AliasedUse : m286_3
|
||||
# 286| v286_12(void) = ExitFunction :
|
||||
|
||||
# 287| void A::A(A*)
|
||||
# 287| Block 0
|
||||
@@ -1379,9 +1348,8 @@ ssa.cpp:
|
||||
# 287| v287_11(void) = NoOp :
|
||||
# 287| v287_12(void) = ReturnIndirection[p#0] : &:r287_9, m287_10
|
||||
# 287| v287_13(void) = ReturnVoid :
|
||||
# 287| v287_14(void) = UnmodeledUse : mu*
|
||||
# 287| v287_15(void) = AliasedUse : m287_3
|
||||
# 287| v287_16(void) = ExitFunction :
|
||||
# 287| v287_14(void) = AliasedUse : m287_3
|
||||
# 287| v287_15(void) = ExitFunction :
|
||||
|
||||
# 288| void A::A()
|
||||
# 288| Block 0
|
||||
@@ -1393,9 +1361,8 @@ ssa.cpp:
|
||||
# 288| r288_6(glval<A>) = InitializeThis :
|
||||
# 288| v288_7(void) = NoOp :
|
||||
# 288| v288_8(void) = ReturnVoid :
|
||||
# 288| v288_9(void) = UnmodeledUse : mu*
|
||||
# 288| v288_10(void) = AliasedUse : m288_3
|
||||
# 288| v288_11(void) = ExitFunction :
|
||||
# 288| v288_9(void) = AliasedUse : m288_3
|
||||
# 288| v288_10(void) = ExitFunction :
|
||||
|
||||
# 291| Point* NewAliasing(int)
|
||||
# 291| Block 0
|
||||
@@ -1480,9 +1447,8 @@ ssa.cpp:
|
||||
# 296| m296_4(Point *) = Store : &:r296_1, r296_3
|
||||
# 291| r291_8(glval<Point *>) = VariableAddress[#return] :
|
||||
# 291| v291_9(void) = ReturnValue : &:r291_8, m296_4
|
||||
# 291| v291_10(void) = UnmodeledUse : mu*
|
||||
# 291| v291_11(void) = AliasedUse : ~m295_12
|
||||
# 291| v291_12(void) = ExitFunction :
|
||||
# 291| v291_10(void) = AliasedUse : ~m295_12
|
||||
# 291| v291_11(void) = ExitFunction :
|
||||
|
||||
# 301| int main(int, char**)
|
||||
# 301| Block 0
|
||||
@@ -1530,6 +1496,5 @@ ssa.cpp:
|
||||
# 301| v301_13(void) = ReturnIndirection[argv] : &:r301_10, ~m303_11
|
||||
# 301| r301_14(glval<int>) = VariableAddress[#return] :
|
||||
# 301| v301_15(void) = ReturnValue : &:r301_14, m304_7
|
||||
# 301| v301_16(void) = UnmodeledUse : mu*
|
||||
# 301| v301_17(void) = AliasedUse : ~m303_11
|
||||
# 301| v301_18(void) = ExitFunction :
|
||||
# 301| v301_16(void) = AliasedUse : ~m303_11
|
||||
# 301| v301_17(void) = ExitFunction :
|
||||
|
||||
@@ -92,9 +92,8 @@ ssa.cpp:
|
||||
# 13| v13_14(void) = ReturnIndirection[p] : &:r13_8, m28_3
|
||||
# 13| r13_15(glval<int>) = VariableAddress[#return] :
|
||||
# 13| v13_16(void) = ReturnValue : &:r13_15, m28_14
|
||||
# 13| v13_17(void) = UnmodeledUse : mu*
|
||||
# 13| v13_18(void) = AliasedUse : m13_3
|
||||
# 13| v13_19(void) = ExitFunction :
|
||||
# 13| v13_17(void) = AliasedUse : m13_3
|
||||
# 13| v13_18(void) = ExitFunction :
|
||||
|
||||
# 31| int UnreachableViaGoto()
|
||||
# 31| Block 0
|
||||
@@ -110,9 +109,8 @@ ssa.cpp:
|
||||
# 35| m35_3(int) = Store : &:r35_1, r35_2
|
||||
# 31| r31_6(glval<int>) = VariableAddress[#return] :
|
||||
# 31| v31_7(void) = ReturnValue : &:r31_6, m35_3
|
||||
# 31| v31_8(void) = UnmodeledUse : mu*
|
||||
# 31| v31_9(void) = AliasedUse : m31_3
|
||||
# 31| v31_10(void) = ExitFunction :
|
||||
# 31| v31_8(void) = AliasedUse : m31_3
|
||||
# 31| v31_9(void) = ExitFunction :
|
||||
|
||||
# 38| int UnreachableIf(bool)
|
||||
# 38| Block 0
|
||||
@@ -139,9 +137,8 @@ ssa.cpp:
|
||||
# 38| m38_8(int) = Phi : from 3:m46_3, from 5:m51_3
|
||||
# 38| r38_9(glval<int>) = VariableAddress[#return] :
|
||||
# 38| v38_10(void) = ReturnValue : &:r38_9, m38_8
|
||||
# 38| v38_11(void) = UnmodeledUse : mu*
|
||||
# 38| v38_12(void) = AliasedUse : m38_3
|
||||
# 38| v38_13(void) = ExitFunction :
|
||||
# 38| v38_11(void) = AliasedUse : m38_3
|
||||
# 38| v38_12(void) = ExitFunction :
|
||||
|
||||
# 42| Block 2
|
||||
# 42| r42_1(glval<int>) = VariableAddress[x] :
|
||||
@@ -176,7 +173,7 @@ ssa.cpp:
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 38| Block 6
|
||||
# 38| v38_14(void) = Unreached :
|
||||
# 38| v38_13(void) = Unreached :
|
||||
|
||||
# 59| int DoWhileFalse()
|
||||
# 59| Block 0
|
||||
@@ -205,12 +202,11 @@ ssa.cpp:
|
||||
# 65| m65_4(int) = Store : &:r65_1, r65_3
|
||||
# 59| r59_6(glval<int>) = VariableAddress[#return] :
|
||||
# 59| v59_7(void) = ReturnValue : &:r59_6, m65_4
|
||||
# 59| v59_8(void) = UnmodeledUse : mu*
|
||||
# 59| v59_9(void) = AliasedUse : m59_3
|
||||
# 59| v59_10(void) = ExitFunction :
|
||||
# 59| v59_8(void) = AliasedUse : m59_3
|
||||
# 59| v59_9(void) = ExitFunction :
|
||||
|
||||
# 59| Block 2
|
||||
# 59| v59_11(void) = Unreached :
|
||||
# 59| v59_10(void) = Unreached :
|
||||
|
||||
# 68| void chiNodeAtEndOfLoop(int, char*)
|
||||
# 68| Block 0
|
||||
@@ -260,9 +256,8 @@ ssa.cpp:
|
||||
# 71| v71_1(void) = NoOp :
|
||||
# 68| v68_12(void) = ReturnIndirection[p] : &:r68_10, m68_11
|
||||
# 68| v68_13(void) = ReturnVoid :
|
||||
# 68| v68_14(void) = UnmodeledUse : mu*
|
||||
# 68| v68_15(void) = AliasedUse : ~m69_3
|
||||
# 68| v68_16(void) = ExitFunction :
|
||||
# 68| v68_14(void) = AliasedUse : ~m69_3
|
||||
# 68| v68_15(void) = ExitFunction :
|
||||
|
||||
# 75| void ScalarPhi(bool)
|
||||
# 75| Block 0
|
||||
@@ -320,9 +315,8 @@ ssa.cpp:
|
||||
# 88| m88_4(int) = Store : &:r88_1, r88_3
|
||||
# 89| v89_1(void) = NoOp :
|
||||
# 75| v75_8(void) = ReturnVoid :
|
||||
# 75| v75_9(void) = UnmodeledUse : mu*
|
||||
# 75| v75_10(void) = AliasedUse : m75_3
|
||||
# 75| v75_11(void) = ExitFunction :
|
||||
# 75| v75_9(void) = AliasedUse : m75_3
|
||||
# 75| v75_10(void) = ExitFunction :
|
||||
|
||||
# 91| void MustExactlyOverlap(Point)
|
||||
# 91| Block 0
|
||||
@@ -339,9 +333,8 @@ ssa.cpp:
|
||||
# 92| m92_4(Point) = Store : &:r92_1, r92_3
|
||||
# 93| v93_1(void) = NoOp :
|
||||
# 91| v91_8(void) = ReturnVoid :
|
||||
# 91| v91_9(void) = UnmodeledUse : mu*
|
||||
# 91| v91_10(void) = AliasedUse : m91_3
|
||||
# 91| v91_11(void) = ExitFunction :
|
||||
# 91| v91_9(void) = AliasedUse : m91_3
|
||||
# 91| v91_10(void) = ExitFunction :
|
||||
|
||||
# 95| void MustExactlyOverlapEscaped(Point)
|
||||
# 95| Block 0
|
||||
@@ -368,9 +361,8 @@ ssa.cpp:
|
||||
# 97| m97_10(Point) = Chi : total:m95_7, partial:m97_9
|
||||
# 98| v98_1(void) = NoOp :
|
||||
# 95| v95_8(void) = ReturnVoid :
|
||||
# 95| v95_9(void) = UnmodeledUse : mu*
|
||||
# 95| v95_10(void) = AliasedUse : ~m97_7
|
||||
# 95| v95_11(void) = ExitFunction :
|
||||
# 95| v95_9(void) = AliasedUse : ~m97_7
|
||||
# 95| v95_10(void) = ExitFunction :
|
||||
|
||||
# 100| void MustTotallyOverlap(Point)
|
||||
# 100| Block 0
|
||||
@@ -393,9 +385,8 @@ ssa.cpp:
|
||||
# 102| m102_5(int) = Store : &:r102_1, r102_4
|
||||
# 103| v103_1(void) = NoOp :
|
||||
# 100| v100_8(void) = ReturnVoid :
|
||||
# 100| v100_9(void) = UnmodeledUse : mu*
|
||||
# 100| v100_10(void) = AliasedUse : m100_3
|
||||
# 100| v100_11(void) = ExitFunction :
|
||||
# 100| v100_9(void) = AliasedUse : m100_3
|
||||
# 100| v100_10(void) = ExitFunction :
|
||||
|
||||
# 105| void MustTotallyOverlapEscaped(Point)
|
||||
# 105| Block 0
|
||||
@@ -428,9 +419,8 @@ ssa.cpp:
|
||||
# 108| m108_10(Point) = Chi : total:m105_7, partial:m108_9
|
||||
# 109| v109_1(void) = NoOp :
|
||||
# 105| v105_8(void) = ReturnVoid :
|
||||
# 105| v105_9(void) = UnmodeledUse : mu*
|
||||
# 105| v105_10(void) = AliasedUse : ~m108_7
|
||||
# 105| v105_11(void) = ExitFunction :
|
||||
# 105| v105_9(void) = AliasedUse : ~m108_7
|
||||
# 105| v105_10(void) = ExitFunction :
|
||||
|
||||
# 111| void MayPartiallyOverlap(int, int)
|
||||
# 111| Block 0
|
||||
@@ -461,9 +451,8 @@ ssa.cpp:
|
||||
# 113| m113_4(Point) = Store : &:r113_1, r113_3
|
||||
# 114| v114_1(void) = NoOp :
|
||||
# 111| v111_10(void) = ReturnVoid :
|
||||
# 111| v111_11(void) = UnmodeledUse : mu*
|
||||
# 111| v111_12(void) = AliasedUse : m111_3
|
||||
# 111| v111_13(void) = ExitFunction :
|
||||
# 111| v111_11(void) = AliasedUse : m111_3
|
||||
# 111| v111_12(void) = ExitFunction :
|
||||
|
||||
# 116| void MayPartiallyOverlapEscaped(int, int)
|
||||
# 116| Block 0
|
||||
@@ -504,9 +493,8 @@ ssa.cpp:
|
||||
# 119| m119_10(Point) = Chi : total:m117_12, partial:m119_9
|
||||
# 120| v120_1(void) = NoOp :
|
||||
# 116| v116_10(void) = ReturnVoid :
|
||||
# 116| v116_11(void) = UnmodeledUse : mu*
|
||||
# 116| v116_12(void) = AliasedUse : ~m119_7
|
||||
# 116| v116_13(void) = ExitFunction :
|
||||
# 116| v116_11(void) = AliasedUse : ~m119_7
|
||||
# 116| v116_12(void) = ExitFunction :
|
||||
|
||||
# 122| void MergeMustExactlyOverlap(bool, int, int)
|
||||
# 122| Block 0
|
||||
@@ -569,9 +557,8 @@ ssa.cpp:
|
||||
# 131| m131_4(Point) = Store : &:r131_1, r131_3
|
||||
# 132| v132_1(void) = NoOp :
|
||||
# 122| v122_12(void) = ReturnVoid :
|
||||
# 122| v122_13(void) = UnmodeledUse : mu*
|
||||
# 122| v122_14(void) = AliasedUse : m122_3
|
||||
# 122| v122_15(void) = ExitFunction :
|
||||
# 122| v122_13(void) = AliasedUse : m122_3
|
||||
# 122| v122_14(void) = ExitFunction :
|
||||
|
||||
# 134| void MergeMustExactlyWithMustTotallyOverlap(bool, Point, int)
|
||||
# 134| Block 0
|
||||
@@ -628,9 +615,8 @@ ssa.cpp:
|
||||
# 142| m142_7(int) = Store : &:r142_3, r142_6
|
||||
# 143| v143_1(void) = NoOp :
|
||||
# 134| v134_12(void) = ReturnVoid :
|
||||
# 134| v134_13(void) = UnmodeledUse : mu*
|
||||
# 134| v134_14(void) = AliasedUse : m134_3
|
||||
# 134| v134_15(void) = ExitFunction :
|
||||
# 134| v134_13(void) = AliasedUse : m134_3
|
||||
# 134| v134_14(void) = ExitFunction :
|
||||
|
||||
# 145| void MergeMustExactlyWithMayPartiallyOverlap(bool, Point, int)
|
||||
# 145| Block 0
|
||||
@@ -685,9 +671,8 @@ ssa.cpp:
|
||||
# 153| m153_5(Point) = Store : &:r153_2, r153_4
|
||||
# 154| v154_1(void) = NoOp :
|
||||
# 145| v145_12(void) = ReturnVoid :
|
||||
# 145| v145_13(void) = UnmodeledUse : mu*
|
||||
# 145| v145_14(void) = AliasedUse : m145_3
|
||||
# 145| v145_15(void) = ExitFunction :
|
||||
# 145| v145_13(void) = AliasedUse : m145_3
|
||||
# 145| v145_14(void) = ExitFunction :
|
||||
|
||||
# 156| void MergeMustTotallyOverlapWithMayPartiallyOverlap(bool, Rect, int)
|
||||
# 156| Block 0
|
||||
@@ -744,9 +729,8 @@ ssa.cpp:
|
||||
# 164| m164_6(Point) = Store : &:r164_2, r164_5
|
||||
# 165| v165_1(void) = NoOp :
|
||||
# 156| v156_12(void) = ReturnVoid :
|
||||
# 156| v156_13(void) = UnmodeledUse : mu*
|
||||
# 156| v156_14(void) = AliasedUse : m156_3
|
||||
# 156| v156_15(void) = ExitFunction :
|
||||
# 156| v156_13(void) = AliasedUse : m156_3
|
||||
# 156| v156_14(void) = ExitFunction :
|
||||
|
||||
# 171| void WrapperStruct(Wrapper)
|
||||
# 171| Block 0
|
||||
@@ -781,9 +765,8 @@ ssa.cpp:
|
||||
# 176| m176_4(Wrapper) = Store : &:r176_3, r176_2
|
||||
# 177| v177_1(void) = NoOp :
|
||||
# 171| v171_8(void) = ReturnVoid :
|
||||
# 171| v171_9(void) = UnmodeledUse : mu*
|
||||
# 171| v171_10(void) = AliasedUse : m171_3
|
||||
# 171| v171_11(void) = ExitFunction :
|
||||
# 171| v171_9(void) = AliasedUse : m171_3
|
||||
# 171| v171_10(void) = ExitFunction :
|
||||
|
||||
# 179| int AsmStmt(int*)
|
||||
# 179| Block 0
|
||||
@@ -806,9 +789,8 @@ ssa.cpp:
|
||||
# 179| v179_10(void) = ReturnIndirection[p] : &:r179_8, m179_9
|
||||
# 179| r179_11(glval<int>) = VariableAddress[#return] :
|
||||
# 179| v179_12(void) = ReturnValue : &:r179_11, m181_5
|
||||
# 179| v179_13(void) = UnmodeledUse : mu*
|
||||
# 179| v179_14(void) = AliasedUse : ~m180_2
|
||||
# 179| v179_15(void) = ExitFunction :
|
||||
# 179| v179_13(void) = AliasedUse : ~m180_2
|
||||
# 179| v179_14(void) = ExitFunction :
|
||||
|
||||
# 184| void AsmStmtWithOutputs(unsigned int&, unsigned int&, unsigned int&, unsigned int&)
|
||||
# 184| Block 0
|
||||
@@ -853,9 +835,8 @@ ssa.cpp:
|
||||
# 184| v184_24(void) = ReturnIndirection[c] : &:r184_16, m184_17
|
||||
# 184| v184_25(void) = ReturnIndirection[d] : &:r184_20, m184_21
|
||||
# 184| v184_26(void) = ReturnVoid :
|
||||
# 184| v184_27(void) = UnmodeledUse : mu*
|
||||
# 184| v184_28(void) = AliasedUse : ~m186_2
|
||||
# 184| v184_29(void) = ExitFunction :
|
||||
# 184| v184_27(void) = AliasedUse : ~m186_2
|
||||
# 184| v184_28(void) = ExitFunction :
|
||||
|
||||
# 198| int PureFunctions(char*, char*, int)
|
||||
# 198| Block 0
|
||||
@@ -912,9 +893,8 @@ ssa.cpp:
|
||||
# 198| v198_17(void) = ReturnIndirection[str2] : &:r198_12, m198_13
|
||||
# 198| r198_18(glval<int>) = VariableAddress[#return] :
|
||||
# 198| v198_19(void) = ReturnValue : &:r198_18, m202_4
|
||||
# 198| v198_20(void) = UnmodeledUse : mu*
|
||||
# 198| v198_21(void) = AliasedUse : m198_3
|
||||
# 198| v198_22(void) = ExitFunction :
|
||||
# 198| v198_20(void) = AliasedUse : m198_3
|
||||
# 198| v198_21(void) = ExitFunction :
|
||||
|
||||
# 207| int ModeledCallTarget(int)
|
||||
# 207| Block 0
|
||||
@@ -945,9 +925,8 @@ ssa.cpp:
|
||||
# 210| m210_4(int) = Store : &:r210_1, r210_3
|
||||
# 207| r207_8(glval<int>) = VariableAddress[#return] :
|
||||
# 207| v207_9(void) = ReturnValue : &:r207_8, m210_4
|
||||
# 207| v207_10(void) = UnmodeledUse : mu*
|
||||
# 207| v207_11(void) = AliasedUse : m207_3
|
||||
# 207| v207_12(void) = ExitFunction :
|
||||
# 207| v207_10(void) = AliasedUse : m207_3
|
||||
# 207| v207_11(void) = ExitFunction :
|
||||
|
||||
# 213| void InitArray()
|
||||
# 213| Block 0
|
||||
@@ -1014,9 +993,8 @@ ssa.cpp:
|
||||
# 221| m221_12(char[3]) = Chi : total:m221_7, partial:m221_11
|
||||
# 222| v222_1(void) = NoOp :
|
||||
# 213| v213_6(void) = ReturnVoid :
|
||||
# 213| v213_7(void) = UnmodeledUse : mu*
|
||||
# 213| v213_8(void) = AliasedUse : m213_3
|
||||
# 213| v213_9(void) = ExitFunction :
|
||||
# 213| v213_7(void) = AliasedUse : m213_3
|
||||
# 213| v213_8(void) = ExitFunction :
|
||||
|
||||
# 226| char StringLiteralAliasing()
|
||||
# 226| Block 0
|
||||
@@ -1042,9 +1020,8 @@ ssa.cpp:
|
||||
# 230| m230_7(char) = Store : &:r230_1, r230_6
|
||||
# 226| r226_6(glval<char>) = VariableAddress[#return] :
|
||||
# 226| v226_7(void) = ReturnValue : &:r226_6, m230_7
|
||||
# 226| v226_8(void) = UnmodeledUse : mu*
|
||||
# 226| v226_9(void) = AliasedUse : ~m227_4
|
||||
# 226| v226_10(void) = ExitFunction :
|
||||
# 226| v226_8(void) = AliasedUse : ~m227_4
|
||||
# 226| v226_9(void) = ExitFunction :
|
||||
|
||||
# 235| void Constructible::Constructible(int)
|
||||
# 235| Block 0
|
||||
@@ -1058,9 +1035,8 @@ ssa.cpp:
|
||||
# 235| m235_8(int) = InitializeParameter[x] : &:r235_7
|
||||
# 235| v235_9(void) = NoOp :
|
||||
# 235| v235_10(void) = ReturnVoid :
|
||||
# 235| v235_11(void) = UnmodeledUse : mu*
|
||||
# 235| v235_12(void) = AliasedUse : m235_3
|
||||
# 235| v235_13(void) = ExitFunction :
|
||||
# 235| v235_11(void) = AliasedUse : m235_3
|
||||
# 235| v235_12(void) = ExitFunction :
|
||||
|
||||
# 236| void Constructible::g()
|
||||
# 236| Block 0
|
||||
@@ -1072,9 +1048,8 @@ ssa.cpp:
|
||||
# 236| r236_6(glval<Constructible>) = InitializeThis :
|
||||
# 236| v236_7(void) = NoOp :
|
||||
# 236| v236_8(void) = ReturnVoid :
|
||||
# 236| v236_9(void) = UnmodeledUse : mu*
|
||||
# 236| v236_10(void) = AliasedUse : m236_3
|
||||
# 236| v236_11(void) = ExitFunction :
|
||||
# 236| v236_9(void) = AliasedUse : m236_3
|
||||
# 236| v236_10(void) = ExitFunction :
|
||||
|
||||
# 239| void ExplicitConstructorCalls()
|
||||
# 239| Block 0
|
||||
@@ -1127,9 +1102,8 @@ ssa.cpp:
|
||||
# 244| m244_8(Constructible) = Chi : total:m243_9, partial:m244_7
|
||||
# 245| v245_1(void) = NoOp :
|
||||
# 239| v239_6(void) = ReturnVoid :
|
||||
# 239| v239_7(void) = UnmodeledUse : mu*
|
||||
# 239| v239_8(void) = AliasedUse : ~m244_5
|
||||
# 239| v239_9(void) = ExitFunction :
|
||||
# 239| v239_7(void) = AliasedUse : ~m244_5
|
||||
# 239| v239_8(void) = ExitFunction :
|
||||
|
||||
# 247| char* VoidStarIndirectParameters(char*, int)
|
||||
# 247| Block 0
|
||||
@@ -1183,9 +1157,8 @@ ssa.cpp:
|
||||
# 247| v247_12(void) = ReturnIndirection[src] : &:r247_8, m249_6
|
||||
# 247| r247_13(glval<char *>) = VariableAddress[#return] :
|
||||
# 247| v247_14(void) = ReturnValue : &:r247_13, m251_4
|
||||
# 247| v247_15(void) = UnmodeledUse : mu*
|
||||
# 247| v247_16(void) = AliasedUse : ~m248_10
|
||||
# 247| v247_17(void) = ExitFunction :
|
||||
# 247| v247_15(void) = AliasedUse : ~m248_10
|
||||
# 247| v247_16(void) = ExitFunction :
|
||||
|
||||
# 254| char StringLiteralAliasing2(bool)
|
||||
# 254| Block 0
|
||||
@@ -1231,9 +1204,8 @@ ssa.cpp:
|
||||
# 263| m263_7(char) = Store : &:r263_1, r263_6
|
||||
# 254| r254_8(glval<char>) = VariableAddress[#return] :
|
||||
# 254| v254_9(void) = ReturnValue : &:r254_8, m263_7
|
||||
# 254| v254_10(void) = UnmodeledUse : mu*
|
||||
# 254| v254_11(void) = AliasedUse : ~m262_1
|
||||
# 254| v254_12(void) = ExitFunction :
|
||||
# 254| v254_10(void) = AliasedUse : ~m262_1
|
||||
# 254| v254_11(void) = ExitFunction :
|
||||
|
||||
# 268| void* MallocAliasing(void*, int)
|
||||
# 268| Block 0
|
||||
@@ -1275,9 +1247,8 @@ ssa.cpp:
|
||||
# 268| v268_12(void) = ReturnIndirection[s] : &:r268_8, m268_9
|
||||
# 268| r268_13(glval<void *>) = VariableAddress[#return] :
|
||||
# 268| v268_14(void) = ReturnValue : &:r268_13, m271_4
|
||||
# 268| v268_15(void) = UnmodeledUse : mu*
|
||||
# 268| v268_16(void) = AliasedUse : ~m269_7
|
||||
# 268| v268_17(void) = ExitFunction :
|
||||
# 268| v268_15(void) = AliasedUse : ~m269_7
|
||||
# 268| v268_16(void) = ExitFunction :
|
||||
|
||||
# 275| void EscapedButNotConflated(bool, Point, int)
|
||||
# 275| Block 0
|
||||
@@ -1332,9 +1303,8 @@ ssa.cpp:
|
||||
# 281| m281_7(int) = Store : &:r281_3, r281_6
|
||||
# 282| v282_1(void) = NoOp :
|
||||
# 275| v275_12(void) = ReturnVoid :
|
||||
# 275| v275_13(void) = UnmodeledUse : mu*
|
||||
# 275| v275_14(void) = AliasedUse : ~m277_5
|
||||
# 275| v275_15(void) = ExitFunction :
|
||||
# 275| v275_13(void) = AliasedUse : ~m277_5
|
||||
# 275| v275_14(void) = ExitFunction :
|
||||
|
||||
# 286| void A::A(int)
|
||||
# 286| Block 0
|
||||
@@ -1348,9 +1318,8 @@ ssa.cpp:
|
||||
# 286| m286_8(int) = InitializeParameter[x] : &:r286_7
|
||||
# 286| v286_9(void) = NoOp :
|
||||
# 286| v286_10(void) = ReturnVoid :
|
||||
# 286| v286_11(void) = UnmodeledUse : mu*
|
||||
# 286| v286_12(void) = AliasedUse : m286_3
|
||||
# 286| v286_13(void) = ExitFunction :
|
||||
# 286| v286_11(void) = AliasedUse : m286_3
|
||||
# 286| v286_12(void) = ExitFunction :
|
||||
|
||||
# 287| void A::A(A*)
|
||||
# 287| Block 0
|
||||
@@ -1367,9 +1336,8 @@ ssa.cpp:
|
||||
# 287| v287_11(void) = NoOp :
|
||||
# 287| v287_12(void) = ReturnIndirection[p#0] : &:r287_9, m287_10
|
||||
# 287| v287_13(void) = ReturnVoid :
|
||||
# 287| v287_14(void) = UnmodeledUse : mu*
|
||||
# 287| v287_15(void) = AliasedUse : m287_3
|
||||
# 287| v287_16(void) = ExitFunction :
|
||||
# 287| v287_14(void) = AliasedUse : m287_3
|
||||
# 287| v287_15(void) = ExitFunction :
|
||||
|
||||
# 288| void A::A()
|
||||
# 288| Block 0
|
||||
@@ -1381,9 +1349,8 @@ ssa.cpp:
|
||||
# 288| r288_6(glval<A>) = InitializeThis :
|
||||
# 288| v288_7(void) = NoOp :
|
||||
# 288| v288_8(void) = ReturnVoid :
|
||||
# 288| v288_9(void) = UnmodeledUse : mu*
|
||||
# 288| v288_10(void) = AliasedUse : m288_3
|
||||
# 288| v288_11(void) = ExitFunction :
|
||||
# 288| v288_9(void) = AliasedUse : m288_3
|
||||
# 288| v288_10(void) = ExitFunction :
|
||||
|
||||
# 291| Point* NewAliasing(int)
|
||||
# 291| Block 0
|
||||
@@ -1468,9 +1435,8 @@ ssa.cpp:
|
||||
# 296| m296_4(Point *) = Store : &:r296_1, r296_3
|
||||
# 291| r291_8(glval<Point *>) = VariableAddress[#return] :
|
||||
# 291| v291_9(void) = ReturnValue : &:r291_8, m296_4
|
||||
# 291| v291_10(void) = UnmodeledUse : mu*
|
||||
# 291| v291_11(void) = AliasedUse : ~m295_12
|
||||
# 291| v291_12(void) = ExitFunction :
|
||||
# 291| v291_10(void) = AliasedUse : ~m295_12
|
||||
# 291| v291_11(void) = ExitFunction :
|
||||
|
||||
# 301| int main(int, char**)
|
||||
# 301| Block 0
|
||||
@@ -1517,6 +1483,5 @@ ssa.cpp:
|
||||
# 301| v301_12(void) = ReturnIndirection[argv] : &:r301_10, ~m303_11, m303_11
|
||||
# 301| r301_13(glval<int>) = VariableAddress[#return] :
|
||||
# 301| v301_14(void) = ReturnValue : &:r301_13, m304_7
|
||||
# 301| v301_15(void) = UnmodeledUse : mu*
|
||||
# 301| v301_16(void) = AliasedUse : ~m303_8
|
||||
# 301| v301_17(void) = ExitFunction :
|
||||
# 301| v301_15(void) = AliasedUse : ~m303_8
|
||||
# 301| v301_16(void) = ExitFunction :
|
||||
|
||||
@@ -81,9 +81,8 @@ ssa.cpp:
|
||||
# 13| v13_13(void) = ReturnIndirection[p] : &:r13_7, ~mu13_4
|
||||
# 13| r13_14(glval<int>) = VariableAddress[#return] :
|
||||
# 13| v13_15(void) = ReturnValue : &:r13_14, m28_11
|
||||
# 13| v13_16(void) = UnmodeledUse : mu*
|
||||
# 13| v13_17(void) = AliasedUse : ~mu13_4
|
||||
# 13| v13_18(void) = ExitFunction :
|
||||
# 13| v13_16(void) = AliasedUse : ~mu13_4
|
||||
# 13| v13_17(void) = ExitFunction :
|
||||
|
||||
# 31| int UnreachableViaGoto()
|
||||
# 31| Block 0
|
||||
@@ -98,9 +97,8 @@ ssa.cpp:
|
||||
# 35| m35_3(int) = Store : &:r35_1, r35_2
|
||||
# 31| r31_5(glval<int>) = VariableAddress[#return] :
|
||||
# 31| v31_6(void) = ReturnValue : &:r31_5, m35_3
|
||||
# 31| v31_7(void) = UnmodeledUse : mu*
|
||||
# 31| v31_8(void) = AliasedUse : ~mu31_4
|
||||
# 31| v31_9(void) = ExitFunction :
|
||||
# 31| v31_7(void) = AliasedUse : ~mu31_4
|
||||
# 31| v31_8(void) = ExitFunction :
|
||||
|
||||
# 38| int UnreachableIf(bool)
|
||||
# 38| Block 0
|
||||
@@ -126,9 +124,8 @@ ssa.cpp:
|
||||
# 38| m38_7(int) = Phi : from 3:m43_3, from 4:m46_3, from 6:m51_3, from 7:m54_3
|
||||
# 38| r38_8(glval<int>) = VariableAddress[#return] :
|
||||
# 38| v38_9(void) = ReturnValue : &:r38_8, m38_7
|
||||
# 38| v38_10(void) = UnmodeledUse : mu*
|
||||
# 38| v38_11(void) = AliasedUse : ~mu38_4
|
||||
# 38| v38_12(void) = ExitFunction :
|
||||
# 38| v38_10(void) = AliasedUse : ~mu38_4
|
||||
# 38| v38_11(void) = ExitFunction :
|
||||
|
||||
# 42| Block 2
|
||||
# 42| r42_1(glval<int>) = VariableAddress[x] :
|
||||
@@ -200,12 +197,11 @@ ssa.cpp:
|
||||
# 65| m65_4(int) = Store : &:r65_1, r65_3
|
||||
# 59| r59_5(glval<int>) = VariableAddress[#return] :
|
||||
# 59| v59_6(void) = ReturnValue : &:r59_5, m65_4
|
||||
# 59| v59_7(void) = UnmodeledUse : mu*
|
||||
# 59| v59_8(void) = AliasedUse : ~mu59_4
|
||||
# 59| v59_9(void) = ExitFunction :
|
||||
# 59| v59_7(void) = AliasedUse : ~mu59_4
|
||||
# 59| v59_8(void) = ExitFunction :
|
||||
|
||||
# 59| Block 2
|
||||
# 59| v59_10(void) = Unreached :
|
||||
# 59| v59_9(void) = Unreached :
|
||||
|
||||
# 68| void chiNodeAtEndOfLoop(int, char*)
|
||||
# 68| Block 0
|
||||
@@ -252,9 +248,8 @@ ssa.cpp:
|
||||
# 71| v71_1(void) = NoOp :
|
||||
# 68| v68_11(void) = ReturnIndirection[p] : &:r68_9, ~mu68_4
|
||||
# 68| v68_12(void) = ReturnVoid :
|
||||
# 68| v68_13(void) = UnmodeledUse : mu*
|
||||
# 68| v68_14(void) = AliasedUse : ~mu68_4
|
||||
# 68| v68_15(void) = ExitFunction :
|
||||
# 68| v68_13(void) = AliasedUse : ~mu68_4
|
||||
# 68| v68_14(void) = ExitFunction :
|
||||
|
||||
# 75| void ScalarPhi(bool)
|
||||
# 75| Block 0
|
||||
@@ -311,9 +306,8 @@ ssa.cpp:
|
||||
# 88| m88_4(int) = Store : &:r88_1, r88_3
|
||||
# 89| v89_1(void) = NoOp :
|
||||
# 75| v75_7(void) = ReturnVoid :
|
||||
# 75| v75_8(void) = UnmodeledUse : mu*
|
||||
# 75| v75_9(void) = AliasedUse : ~mu75_4
|
||||
# 75| v75_10(void) = ExitFunction :
|
||||
# 75| v75_8(void) = AliasedUse : ~mu75_4
|
||||
# 75| v75_9(void) = ExitFunction :
|
||||
|
||||
# 91| void MustExactlyOverlap(Point)
|
||||
# 91| Block 0
|
||||
@@ -329,9 +323,8 @@ ssa.cpp:
|
||||
# 92| m92_4(Point) = Store : &:r92_1, r92_3
|
||||
# 93| v93_1(void) = NoOp :
|
||||
# 91| v91_7(void) = ReturnVoid :
|
||||
# 91| v91_8(void) = UnmodeledUse : mu*
|
||||
# 91| v91_9(void) = AliasedUse : ~mu91_4
|
||||
# 91| v91_10(void) = ExitFunction :
|
||||
# 91| v91_8(void) = AliasedUse : ~mu91_4
|
||||
# 91| v91_9(void) = ExitFunction :
|
||||
|
||||
# 95| void MustExactlyOverlapEscaped(Point)
|
||||
# 95| Block 0
|
||||
@@ -355,9 +348,8 @@ ssa.cpp:
|
||||
# 97| mu97_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r97_4
|
||||
# 98| v98_1(void) = NoOp :
|
||||
# 95| v95_7(void) = ReturnVoid :
|
||||
# 95| v95_8(void) = UnmodeledUse : mu*
|
||||
# 95| v95_9(void) = AliasedUse : ~mu95_4
|
||||
# 95| v95_10(void) = ExitFunction :
|
||||
# 95| v95_8(void) = AliasedUse : ~mu95_4
|
||||
# 95| v95_9(void) = ExitFunction :
|
||||
|
||||
# 100| void MustTotallyOverlap(Point)
|
||||
# 100| Block 0
|
||||
@@ -379,9 +371,8 @@ ssa.cpp:
|
||||
# 102| m102_5(int) = Store : &:r102_1, r102_4
|
||||
# 103| v103_1(void) = NoOp :
|
||||
# 100| v100_7(void) = ReturnVoid :
|
||||
# 100| v100_8(void) = UnmodeledUse : mu*
|
||||
# 100| v100_9(void) = AliasedUse : ~mu100_4
|
||||
# 100| v100_10(void) = ExitFunction :
|
||||
# 100| v100_8(void) = AliasedUse : ~mu100_4
|
||||
# 100| v100_9(void) = ExitFunction :
|
||||
|
||||
# 105| void MustTotallyOverlapEscaped(Point)
|
||||
# 105| Block 0
|
||||
@@ -411,9 +402,8 @@ ssa.cpp:
|
||||
# 108| mu108_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r108_4
|
||||
# 109| v109_1(void) = NoOp :
|
||||
# 105| v105_7(void) = ReturnVoid :
|
||||
# 105| v105_8(void) = UnmodeledUse : mu*
|
||||
# 105| v105_9(void) = AliasedUse : ~mu105_4
|
||||
# 105| v105_10(void) = ExitFunction :
|
||||
# 105| v105_8(void) = AliasedUse : ~mu105_4
|
||||
# 105| v105_9(void) = ExitFunction :
|
||||
|
||||
# 111| void MayPartiallyOverlap(int, int)
|
||||
# 111| Block 0
|
||||
@@ -441,9 +431,8 @@ ssa.cpp:
|
||||
# 113| m113_4(Point) = Store : &:r113_1, r113_3
|
||||
# 114| v114_1(void) = NoOp :
|
||||
# 111| v111_9(void) = ReturnVoid :
|
||||
# 111| v111_10(void) = UnmodeledUse : mu*
|
||||
# 111| v111_11(void) = AliasedUse : ~mu111_4
|
||||
# 111| v111_12(void) = ExitFunction :
|
||||
# 111| v111_10(void) = AliasedUse : ~mu111_4
|
||||
# 111| v111_11(void) = ExitFunction :
|
||||
|
||||
# 116| void MayPartiallyOverlapEscaped(int, int)
|
||||
# 116| Block 0
|
||||
@@ -479,9 +468,8 @@ ssa.cpp:
|
||||
# 119| mu119_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r119_4
|
||||
# 120| v120_1(void) = NoOp :
|
||||
# 116| v116_9(void) = ReturnVoid :
|
||||
# 116| v116_10(void) = UnmodeledUse : mu*
|
||||
# 116| v116_11(void) = AliasedUse : ~mu116_4
|
||||
# 116| v116_12(void) = ExitFunction :
|
||||
# 116| v116_10(void) = AliasedUse : ~mu116_4
|
||||
# 116| v116_11(void) = ExitFunction :
|
||||
|
||||
# 122| void MergeMustExactlyOverlap(bool, int, int)
|
||||
# 122| Block 0
|
||||
@@ -537,9 +525,8 @@ ssa.cpp:
|
||||
# 131| m131_4(Point) = Store : &:r131_1, r131_3
|
||||
# 132| v132_1(void) = NoOp :
|
||||
# 122| v122_11(void) = ReturnVoid :
|
||||
# 122| v122_12(void) = UnmodeledUse : mu*
|
||||
# 122| v122_13(void) = AliasedUse : ~mu122_4
|
||||
# 122| v122_14(void) = ExitFunction :
|
||||
# 122| v122_12(void) = AliasedUse : ~mu122_4
|
||||
# 122| v122_13(void) = ExitFunction :
|
||||
|
||||
# 134| void MergeMustExactlyWithMustTotallyOverlap(bool, Point, int)
|
||||
# 134| Block 0
|
||||
@@ -590,9 +577,8 @@ ssa.cpp:
|
||||
# 142| m142_5(int) = Store : &:r142_1, r142_4
|
||||
# 143| v143_1(void) = NoOp :
|
||||
# 134| v134_11(void) = ReturnVoid :
|
||||
# 134| v134_12(void) = UnmodeledUse : mu*
|
||||
# 134| v134_13(void) = AliasedUse : ~mu134_4
|
||||
# 134| v134_14(void) = ExitFunction :
|
||||
# 134| v134_12(void) = AliasedUse : ~mu134_4
|
||||
# 134| v134_13(void) = ExitFunction :
|
||||
|
||||
# 145| void MergeMustExactlyWithMayPartiallyOverlap(bool, Point, int)
|
||||
# 145| Block 0
|
||||
@@ -642,9 +628,8 @@ ssa.cpp:
|
||||
# 153| m153_4(Point) = Store : &:r153_1, r153_3
|
||||
# 154| v154_1(void) = NoOp :
|
||||
# 145| v145_11(void) = ReturnVoid :
|
||||
# 145| v145_12(void) = UnmodeledUse : mu*
|
||||
# 145| v145_13(void) = AliasedUse : ~mu145_4
|
||||
# 145| v145_14(void) = ExitFunction :
|
||||
# 145| v145_12(void) = AliasedUse : ~mu145_4
|
||||
# 145| v145_13(void) = ExitFunction :
|
||||
|
||||
# 156| void MergeMustTotallyOverlapWithMayPartiallyOverlap(bool, Rect, int)
|
||||
# 156| Block 0
|
||||
@@ -696,9 +681,8 @@ ssa.cpp:
|
||||
# 164| m164_5(Point) = Store : &:r164_1, r164_4
|
||||
# 165| v165_1(void) = NoOp :
|
||||
# 156| v156_11(void) = ReturnVoid :
|
||||
# 156| v156_12(void) = UnmodeledUse : mu*
|
||||
# 156| v156_13(void) = AliasedUse : ~mu156_4
|
||||
# 156| v156_14(void) = ExitFunction :
|
||||
# 156| v156_12(void) = AliasedUse : ~mu156_4
|
||||
# 156| v156_13(void) = ExitFunction :
|
||||
|
||||
# 171| void WrapperStruct(Wrapper)
|
||||
# 171| Block 0
|
||||
@@ -732,9 +716,8 @@ ssa.cpp:
|
||||
# 176| m176_4(Wrapper) = Store : &:r176_3, r176_2
|
||||
# 177| v177_1(void) = NoOp :
|
||||
# 171| v171_7(void) = ReturnVoid :
|
||||
# 171| v171_8(void) = UnmodeledUse : mu*
|
||||
# 171| v171_9(void) = AliasedUse : ~mu171_4
|
||||
# 171| v171_10(void) = ExitFunction :
|
||||
# 171| v171_8(void) = AliasedUse : ~mu171_4
|
||||
# 171| v171_9(void) = ExitFunction :
|
||||
|
||||
# 179| int AsmStmt(int*)
|
||||
# 179| Block 0
|
||||
@@ -755,9 +738,8 @@ ssa.cpp:
|
||||
# 179| v179_9(void) = ReturnIndirection[p] : &:r179_7, ~mu179_4
|
||||
# 179| r179_10(glval<int>) = VariableAddress[#return] :
|
||||
# 179| v179_11(void) = ReturnValue : &:r179_10, m181_5
|
||||
# 179| v179_12(void) = UnmodeledUse : mu*
|
||||
# 179| v179_13(void) = AliasedUse : ~mu179_4
|
||||
# 179| v179_14(void) = ExitFunction :
|
||||
# 179| v179_12(void) = AliasedUse : ~mu179_4
|
||||
# 179| v179_13(void) = ExitFunction :
|
||||
|
||||
# 184| void AsmStmtWithOutputs(unsigned int&, unsigned int&, unsigned int&, unsigned int&)
|
||||
# 184| Block 0
|
||||
@@ -800,9 +782,8 @@ ssa.cpp:
|
||||
# 184| v184_23(void) = ReturnIndirection[c] : &:r184_15, ~mu184_4
|
||||
# 184| v184_24(void) = ReturnIndirection[d] : &:r184_19, ~mu184_4
|
||||
# 184| v184_25(void) = ReturnVoid :
|
||||
# 184| v184_26(void) = UnmodeledUse : mu*
|
||||
# 184| v184_27(void) = AliasedUse : ~mu184_4
|
||||
# 184| v184_28(void) = ExitFunction :
|
||||
# 184| v184_26(void) = AliasedUse : ~mu184_4
|
||||
# 184| v184_27(void) = ExitFunction :
|
||||
|
||||
# 198| int PureFunctions(char*, char*, int)
|
||||
# 198| Block 0
|
||||
@@ -858,9 +839,8 @@ ssa.cpp:
|
||||
# 198| v198_16(void) = ReturnIndirection[str2] : &:r198_11, ~mu198_4
|
||||
# 198| r198_17(glval<int>) = VariableAddress[#return] :
|
||||
# 198| v198_18(void) = ReturnValue : &:r198_17, m202_4
|
||||
# 198| v198_19(void) = UnmodeledUse : mu*
|
||||
# 198| v198_20(void) = AliasedUse : ~mu198_4
|
||||
# 198| v198_21(void) = ExitFunction :
|
||||
# 198| v198_19(void) = AliasedUse : ~mu198_4
|
||||
# 198| v198_20(void) = ExitFunction :
|
||||
|
||||
# 207| int ModeledCallTarget(int)
|
||||
# 207| Block 0
|
||||
@@ -889,9 +869,8 @@ ssa.cpp:
|
||||
# 210| m210_4(int) = Store : &:r210_1, r210_3
|
||||
# 207| r207_7(glval<int>) = VariableAddress[#return] :
|
||||
# 207| v207_8(void) = ReturnValue : &:r207_7, m210_4
|
||||
# 207| v207_9(void) = UnmodeledUse : mu*
|
||||
# 207| v207_10(void) = AliasedUse : ~mu207_4
|
||||
# 207| v207_11(void) = ExitFunction :
|
||||
# 207| v207_9(void) = AliasedUse : ~mu207_4
|
||||
# 207| v207_10(void) = ExitFunction :
|
||||
|
||||
# 213| void InitArray()
|
||||
# 213| Block 0
|
||||
@@ -951,9 +930,8 @@ ssa.cpp:
|
||||
# 221| mu221_10(unknown[2]) = Store : &:r221_8, r221_9
|
||||
# 222| v222_1(void) = NoOp :
|
||||
# 213| v213_5(void) = ReturnVoid :
|
||||
# 213| v213_6(void) = UnmodeledUse : mu*
|
||||
# 213| v213_7(void) = AliasedUse : ~mu213_4
|
||||
# 213| v213_8(void) = ExitFunction :
|
||||
# 213| v213_6(void) = AliasedUse : ~mu213_4
|
||||
# 213| v213_7(void) = ExitFunction :
|
||||
|
||||
# 226| char StringLiteralAliasing()
|
||||
# 226| Block 0
|
||||
@@ -977,9 +955,8 @@ ssa.cpp:
|
||||
# 230| m230_7(char) = Store : &:r230_1, r230_6
|
||||
# 226| r226_5(glval<char>) = VariableAddress[#return] :
|
||||
# 226| v226_6(void) = ReturnValue : &:r226_5, m230_7
|
||||
# 226| v226_7(void) = UnmodeledUse : mu*
|
||||
# 226| v226_8(void) = AliasedUse : ~mu226_4
|
||||
# 226| v226_9(void) = ExitFunction :
|
||||
# 226| v226_7(void) = AliasedUse : ~mu226_4
|
||||
# 226| v226_8(void) = ExitFunction :
|
||||
|
||||
# 235| void Constructible::Constructible(int)
|
||||
# 235| Block 0
|
||||
@@ -992,9 +969,8 @@ ssa.cpp:
|
||||
# 235| m235_7(int) = InitializeParameter[x] : &:r235_6
|
||||
# 235| v235_8(void) = NoOp :
|
||||
# 235| v235_9(void) = ReturnVoid :
|
||||
# 235| v235_10(void) = UnmodeledUse : mu*
|
||||
# 235| v235_11(void) = AliasedUse : ~mu235_4
|
||||
# 235| v235_12(void) = ExitFunction :
|
||||
# 235| v235_10(void) = AliasedUse : ~mu235_4
|
||||
# 235| v235_11(void) = ExitFunction :
|
||||
|
||||
# 236| void Constructible::g()
|
||||
# 236| Block 0
|
||||
@@ -1005,9 +981,8 @@ ssa.cpp:
|
||||
# 236| r236_5(glval<Constructible>) = InitializeThis :
|
||||
# 236| v236_6(void) = NoOp :
|
||||
# 236| v236_7(void) = ReturnVoid :
|
||||
# 236| v236_8(void) = UnmodeledUse : mu*
|
||||
# 236| v236_9(void) = AliasedUse : ~mu236_4
|
||||
# 236| v236_10(void) = ExitFunction :
|
||||
# 236| v236_8(void) = AliasedUse : ~mu236_4
|
||||
# 236| v236_9(void) = ExitFunction :
|
||||
|
||||
# 239| void ExplicitConstructorCalls()
|
||||
# 239| Block 0
|
||||
@@ -1049,9 +1024,8 @@ ssa.cpp:
|
||||
# 244| mu244_6(Constructible) = ^IndirectMayWriteSideEffect[-1] : &:r244_1
|
||||
# 245| v245_1(void) = NoOp :
|
||||
# 239| v239_5(void) = ReturnVoid :
|
||||
# 239| v239_6(void) = UnmodeledUse : mu*
|
||||
# 239| v239_7(void) = AliasedUse : ~mu239_4
|
||||
# 239| v239_8(void) = ExitFunction :
|
||||
# 239| v239_6(void) = AliasedUse : ~mu239_4
|
||||
# 239| v239_7(void) = ExitFunction :
|
||||
|
||||
# 247| char* VoidStarIndirectParameters(char*, int)
|
||||
# 247| Block 0
|
||||
@@ -1101,9 +1075,8 @@ ssa.cpp:
|
||||
# 247| v247_11(void) = ReturnIndirection[src] : &:r247_7, ~mu247_4
|
||||
# 247| r247_12(glval<char *>) = VariableAddress[#return] :
|
||||
# 247| v247_13(void) = ReturnValue : &:r247_12, m251_4
|
||||
# 247| v247_14(void) = UnmodeledUse : mu*
|
||||
# 247| v247_15(void) = AliasedUse : ~mu247_4
|
||||
# 247| v247_16(void) = ExitFunction :
|
||||
# 247| v247_14(void) = AliasedUse : ~mu247_4
|
||||
# 247| v247_15(void) = ExitFunction :
|
||||
|
||||
# 254| char StringLiteralAliasing2(bool)
|
||||
# 254| Block 0
|
||||
@@ -1145,9 +1118,8 @@ ssa.cpp:
|
||||
# 263| m263_7(char) = Store : &:r263_1, r263_6
|
||||
# 254| r254_7(glval<char>) = VariableAddress[#return] :
|
||||
# 254| v254_8(void) = ReturnValue : &:r254_7, m263_7
|
||||
# 254| v254_9(void) = UnmodeledUse : mu*
|
||||
# 254| v254_10(void) = AliasedUse : ~mu254_4
|
||||
# 254| v254_11(void) = ExitFunction :
|
||||
# 254| v254_9(void) = AliasedUse : ~mu254_4
|
||||
# 254| v254_10(void) = ExitFunction :
|
||||
|
||||
# 268| void* MallocAliasing(void*, int)
|
||||
# 268| Block 0
|
||||
@@ -1186,9 +1158,8 @@ ssa.cpp:
|
||||
# 268| v268_11(void) = ReturnIndirection[s] : &:r268_7, ~mu268_4
|
||||
# 268| r268_12(glval<void *>) = VariableAddress[#return] :
|
||||
# 268| v268_13(void) = ReturnValue : &:r268_12, m271_4
|
||||
# 268| v268_14(void) = UnmodeledUse : mu*
|
||||
# 268| v268_15(void) = AliasedUse : ~mu268_4
|
||||
# 268| v268_16(void) = ExitFunction :
|
||||
# 268| v268_14(void) = AliasedUse : ~mu268_4
|
||||
# 268| v268_15(void) = ExitFunction :
|
||||
|
||||
# 275| void EscapedButNotConflated(bool, Point, int)
|
||||
# 275| Block 0
|
||||
@@ -1236,9 +1207,8 @@ ssa.cpp:
|
||||
# 281| m281_5(int) = Store : &:r281_1, r281_4
|
||||
# 282| v282_1(void) = NoOp :
|
||||
# 275| v275_11(void) = ReturnVoid :
|
||||
# 275| v275_12(void) = UnmodeledUse : mu*
|
||||
# 275| v275_13(void) = AliasedUse : ~mu275_4
|
||||
# 275| v275_14(void) = ExitFunction :
|
||||
# 275| v275_12(void) = AliasedUse : ~mu275_4
|
||||
# 275| v275_13(void) = ExitFunction :
|
||||
|
||||
# 286| void A::A(int)
|
||||
# 286| Block 0
|
||||
@@ -1251,9 +1221,8 @@ ssa.cpp:
|
||||
# 286| m286_7(int) = InitializeParameter[x] : &:r286_6
|
||||
# 286| v286_8(void) = NoOp :
|
||||
# 286| v286_9(void) = ReturnVoid :
|
||||
# 286| v286_10(void) = UnmodeledUse : mu*
|
||||
# 286| v286_11(void) = AliasedUse : ~mu286_4
|
||||
# 286| v286_12(void) = ExitFunction :
|
||||
# 286| v286_10(void) = AliasedUse : ~mu286_4
|
||||
# 286| v286_11(void) = ExitFunction :
|
||||
|
||||
# 287| void A::A(A*)
|
||||
# 287| Block 0
|
||||
@@ -1269,9 +1238,8 @@ ssa.cpp:
|
||||
# 287| v287_10(void) = NoOp :
|
||||
# 287| v287_11(void) = ReturnIndirection[p#0] : &:r287_8, ~mu287_4
|
||||
# 287| v287_12(void) = ReturnVoid :
|
||||
# 287| v287_13(void) = UnmodeledUse : mu*
|
||||
# 287| v287_14(void) = AliasedUse : ~mu287_4
|
||||
# 287| v287_15(void) = ExitFunction :
|
||||
# 287| v287_13(void) = AliasedUse : ~mu287_4
|
||||
# 287| v287_14(void) = ExitFunction :
|
||||
|
||||
# 288| void A::A()
|
||||
# 288| Block 0
|
||||
@@ -1282,9 +1250,8 @@ ssa.cpp:
|
||||
# 288| r288_5(glval<A>) = InitializeThis :
|
||||
# 288| v288_6(void) = NoOp :
|
||||
# 288| v288_7(void) = ReturnVoid :
|
||||
# 288| v288_8(void) = UnmodeledUse : mu*
|
||||
# 288| v288_9(void) = AliasedUse : ~mu288_4
|
||||
# 288| v288_10(void) = ExitFunction :
|
||||
# 288| v288_8(void) = AliasedUse : ~mu288_4
|
||||
# 288| v288_9(void) = ExitFunction :
|
||||
|
||||
# 291| Point* NewAliasing(int)
|
||||
# 291| Block 0
|
||||
@@ -1356,9 +1323,8 @@ ssa.cpp:
|
||||
# 296| m296_4(Point *) = Store : &:r296_1, r296_3
|
||||
# 291| r291_7(glval<Point *>) = VariableAddress[#return] :
|
||||
# 291| v291_8(void) = ReturnValue : &:r291_7, m296_4
|
||||
# 291| v291_9(void) = UnmodeledUse : mu*
|
||||
# 291| v291_10(void) = AliasedUse : ~mu291_4
|
||||
# 291| v291_11(void) = ExitFunction :
|
||||
# 291| v291_9(void) = AliasedUse : ~mu291_4
|
||||
# 291| v291_10(void) = ExitFunction :
|
||||
|
||||
# 301| int main(int, char**)
|
||||
# 301| Block 0
|
||||
@@ -1400,6 +1366,5 @@ ssa.cpp:
|
||||
# 301| v301_11(void) = ReturnIndirection[argv] : &:r301_9, ~mu301_4
|
||||
# 301| r301_12(glval<int>) = VariableAddress[#return] :
|
||||
# 301| v301_13(void) = ReturnValue : &:r301_12, m304_7
|
||||
# 301| v301_14(void) = UnmodeledUse : mu*
|
||||
# 301| v301_15(void) = AliasedUse : ~mu301_4
|
||||
# 301| v301_16(void) = ExitFunction :
|
||||
# 301| v301_14(void) = AliasedUse : ~mu301_4
|
||||
# 301| v301_15(void) = ExitFunction :
|
||||
|
||||
@@ -81,9 +81,8 @@ ssa.cpp:
|
||||
# 13| v13_13(void) = ReturnIndirection[p] : &:r13_7, ~mu13_4
|
||||
# 13| r13_14(glval<int>) = VariableAddress[#return] :
|
||||
# 13| v13_15(void) = ReturnValue : &:r13_14, m28_11
|
||||
# 13| v13_16(void) = UnmodeledUse : mu*
|
||||
# 13| v13_17(void) = AliasedUse : ~mu13_4
|
||||
# 13| v13_18(void) = ExitFunction :
|
||||
# 13| v13_16(void) = AliasedUse : ~mu13_4
|
||||
# 13| v13_17(void) = ExitFunction :
|
||||
|
||||
# 31| int UnreachableViaGoto()
|
||||
# 31| Block 0
|
||||
@@ -98,9 +97,8 @@ ssa.cpp:
|
||||
# 35| m35_3(int) = Store : &:r35_1, r35_2
|
||||
# 31| r31_5(glval<int>) = VariableAddress[#return] :
|
||||
# 31| v31_6(void) = ReturnValue : &:r31_5, m35_3
|
||||
# 31| v31_7(void) = UnmodeledUse : mu*
|
||||
# 31| v31_8(void) = AliasedUse : ~mu31_4
|
||||
# 31| v31_9(void) = ExitFunction :
|
||||
# 31| v31_7(void) = AliasedUse : ~mu31_4
|
||||
# 31| v31_8(void) = ExitFunction :
|
||||
|
||||
# 38| int UnreachableIf(bool)
|
||||
# 38| Block 0
|
||||
@@ -126,9 +124,8 @@ ssa.cpp:
|
||||
# 38| m38_7(int) = Phi : from 3:m43_3, from 4:m46_3, from 6:m51_3, from 7:m54_3
|
||||
# 38| r38_8(glval<int>) = VariableAddress[#return] :
|
||||
# 38| v38_9(void) = ReturnValue : &:r38_8, m38_7
|
||||
# 38| v38_10(void) = UnmodeledUse : mu*
|
||||
# 38| v38_11(void) = AliasedUse : ~mu38_4
|
||||
# 38| v38_12(void) = ExitFunction :
|
||||
# 38| v38_10(void) = AliasedUse : ~mu38_4
|
||||
# 38| v38_11(void) = ExitFunction :
|
||||
|
||||
# 42| Block 2
|
||||
# 42| r42_1(glval<int>) = VariableAddress[x] :
|
||||
@@ -200,12 +197,11 @@ ssa.cpp:
|
||||
# 65| m65_4(int) = Store : &:r65_1, r65_3
|
||||
# 59| r59_5(glval<int>) = VariableAddress[#return] :
|
||||
# 59| v59_6(void) = ReturnValue : &:r59_5, m65_4
|
||||
# 59| v59_7(void) = UnmodeledUse : mu*
|
||||
# 59| v59_8(void) = AliasedUse : ~mu59_4
|
||||
# 59| v59_9(void) = ExitFunction :
|
||||
# 59| v59_7(void) = AliasedUse : ~mu59_4
|
||||
# 59| v59_8(void) = ExitFunction :
|
||||
|
||||
# 59| Block 2
|
||||
# 59| v59_10(void) = Unreached :
|
||||
# 59| v59_9(void) = Unreached :
|
||||
|
||||
# 68| void chiNodeAtEndOfLoop(int, char*)
|
||||
# 68| Block 0
|
||||
@@ -252,9 +248,8 @@ ssa.cpp:
|
||||
# 71| v71_1(void) = NoOp :
|
||||
# 68| v68_11(void) = ReturnIndirection[p] : &:r68_9, ~mu68_4
|
||||
# 68| v68_12(void) = ReturnVoid :
|
||||
# 68| v68_13(void) = UnmodeledUse : mu*
|
||||
# 68| v68_14(void) = AliasedUse : ~mu68_4
|
||||
# 68| v68_15(void) = ExitFunction :
|
||||
# 68| v68_13(void) = AliasedUse : ~mu68_4
|
||||
# 68| v68_14(void) = ExitFunction :
|
||||
|
||||
# 75| void ScalarPhi(bool)
|
||||
# 75| Block 0
|
||||
@@ -311,9 +306,8 @@ ssa.cpp:
|
||||
# 88| m88_4(int) = Store : &:r88_1, r88_3
|
||||
# 89| v89_1(void) = NoOp :
|
||||
# 75| v75_7(void) = ReturnVoid :
|
||||
# 75| v75_8(void) = UnmodeledUse : mu*
|
||||
# 75| v75_9(void) = AliasedUse : ~mu75_4
|
||||
# 75| v75_10(void) = ExitFunction :
|
||||
# 75| v75_8(void) = AliasedUse : ~mu75_4
|
||||
# 75| v75_9(void) = ExitFunction :
|
||||
|
||||
# 91| void MustExactlyOverlap(Point)
|
||||
# 91| Block 0
|
||||
@@ -329,9 +323,8 @@ ssa.cpp:
|
||||
# 92| m92_4(Point) = Store : &:r92_1, r92_3
|
||||
# 93| v93_1(void) = NoOp :
|
||||
# 91| v91_7(void) = ReturnVoid :
|
||||
# 91| v91_8(void) = UnmodeledUse : mu*
|
||||
# 91| v91_9(void) = AliasedUse : ~mu91_4
|
||||
# 91| v91_10(void) = ExitFunction :
|
||||
# 91| v91_8(void) = AliasedUse : ~mu91_4
|
||||
# 91| v91_9(void) = ExitFunction :
|
||||
|
||||
# 95| void MustExactlyOverlapEscaped(Point)
|
||||
# 95| Block 0
|
||||
@@ -355,9 +348,8 @@ ssa.cpp:
|
||||
# 97| mu97_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r97_4
|
||||
# 98| v98_1(void) = NoOp :
|
||||
# 95| v95_7(void) = ReturnVoid :
|
||||
# 95| v95_8(void) = UnmodeledUse : mu*
|
||||
# 95| v95_9(void) = AliasedUse : ~mu95_4
|
||||
# 95| v95_10(void) = ExitFunction :
|
||||
# 95| v95_8(void) = AliasedUse : ~mu95_4
|
||||
# 95| v95_9(void) = ExitFunction :
|
||||
|
||||
# 100| void MustTotallyOverlap(Point)
|
||||
# 100| Block 0
|
||||
@@ -379,9 +371,8 @@ ssa.cpp:
|
||||
# 102| m102_5(int) = Store : &:r102_1, r102_4
|
||||
# 103| v103_1(void) = NoOp :
|
||||
# 100| v100_7(void) = ReturnVoid :
|
||||
# 100| v100_8(void) = UnmodeledUse : mu*
|
||||
# 100| v100_9(void) = AliasedUse : ~mu100_4
|
||||
# 100| v100_10(void) = ExitFunction :
|
||||
# 100| v100_8(void) = AliasedUse : ~mu100_4
|
||||
# 100| v100_9(void) = ExitFunction :
|
||||
|
||||
# 105| void MustTotallyOverlapEscaped(Point)
|
||||
# 105| Block 0
|
||||
@@ -411,9 +402,8 @@ ssa.cpp:
|
||||
# 108| mu108_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r108_4
|
||||
# 109| v109_1(void) = NoOp :
|
||||
# 105| v105_7(void) = ReturnVoid :
|
||||
# 105| v105_8(void) = UnmodeledUse : mu*
|
||||
# 105| v105_9(void) = AliasedUse : ~mu105_4
|
||||
# 105| v105_10(void) = ExitFunction :
|
||||
# 105| v105_8(void) = AliasedUse : ~mu105_4
|
||||
# 105| v105_9(void) = ExitFunction :
|
||||
|
||||
# 111| void MayPartiallyOverlap(int, int)
|
||||
# 111| Block 0
|
||||
@@ -441,9 +431,8 @@ ssa.cpp:
|
||||
# 113| m113_4(Point) = Store : &:r113_1, r113_3
|
||||
# 114| v114_1(void) = NoOp :
|
||||
# 111| v111_9(void) = ReturnVoid :
|
||||
# 111| v111_10(void) = UnmodeledUse : mu*
|
||||
# 111| v111_11(void) = AliasedUse : ~mu111_4
|
||||
# 111| v111_12(void) = ExitFunction :
|
||||
# 111| v111_10(void) = AliasedUse : ~mu111_4
|
||||
# 111| v111_11(void) = ExitFunction :
|
||||
|
||||
# 116| void MayPartiallyOverlapEscaped(int, int)
|
||||
# 116| Block 0
|
||||
@@ -479,9 +468,8 @@ ssa.cpp:
|
||||
# 119| mu119_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r119_4
|
||||
# 120| v120_1(void) = NoOp :
|
||||
# 116| v116_9(void) = ReturnVoid :
|
||||
# 116| v116_10(void) = UnmodeledUse : mu*
|
||||
# 116| v116_11(void) = AliasedUse : ~mu116_4
|
||||
# 116| v116_12(void) = ExitFunction :
|
||||
# 116| v116_10(void) = AliasedUse : ~mu116_4
|
||||
# 116| v116_11(void) = ExitFunction :
|
||||
|
||||
# 122| void MergeMustExactlyOverlap(bool, int, int)
|
||||
# 122| Block 0
|
||||
@@ -537,9 +525,8 @@ ssa.cpp:
|
||||
# 131| m131_4(Point) = Store : &:r131_1, r131_3
|
||||
# 132| v132_1(void) = NoOp :
|
||||
# 122| v122_11(void) = ReturnVoid :
|
||||
# 122| v122_12(void) = UnmodeledUse : mu*
|
||||
# 122| v122_13(void) = AliasedUse : ~mu122_4
|
||||
# 122| v122_14(void) = ExitFunction :
|
||||
# 122| v122_12(void) = AliasedUse : ~mu122_4
|
||||
# 122| v122_13(void) = ExitFunction :
|
||||
|
||||
# 134| void MergeMustExactlyWithMustTotallyOverlap(bool, Point, int)
|
||||
# 134| Block 0
|
||||
@@ -590,9 +577,8 @@ ssa.cpp:
|
||||
# 142| m142_5(int) = Store : &:r142_1, r142_4
|
||||
# 143| v143_1(void) = NoOp :
|
||||
# 134| v134_11(void) = ReturnVoid :
|
||||
# 134| v134_12(void) = UnmodeledUse : mu*
|
||||
# 134| v134_13(void) = AliasedUse : ~mu134_4
|
||||
# 134| v134_14(void) = ExitFunction :
|
||||
# 134| v134_12(void) = AliasedUse : ~mu134_4
|
||||
# 134| v134_13(void) = ExitFunction :
|
||||
|
||||
# 145| void MergeMustExactlyWithMayPartiallyOverlap(bool, Point, int)
|
||||
# 145| Block 0
|
||||
@@ -642,9 +628,8 @@ ssa.cpp:
|
||||
# 153| m153_4(Point) = Store : &:r153_1, r153_3
|
||||
# 154| v154_1(void) = NoOp :
|
||||
# 145| v145_11(void) = ReturnVoid :
|
||||
# 145| v145_12(void) = UnmodeledUse : mu*
|
||||
# 145| v145_13(void) = AliasedUse : ~mu145_4
|
||||
# 145| v145_14(void) = ExitFunction :
|
||||
# 145| v145_12(void) = AliasedUse : ~mu145_4
|
||||
# 145| v145_13(void) = ExitFunction :
|
||||
|
||||
# 156| void MergeMustTotallyOverlapWithMayPartiallyOverlap(bool, Rect, int)
|
||||
# 156| Block 0
|
||||
@@ -696,9 +681,8 @@ ssa.cpp:
|
||||
# 164| m164_5(Point) = Store : &:r164_1, r164_4
|
||||
# 165| v165_1(void) = NoOp :
|
||||
# 156| v156_11(void) = ReturnVoid :
|
||||
# 156| v156_12(void) = UnmodeledUse : mu*
|
||||
# 156| v156_13(void) = AliasedUse : ~mu156_4
|
||||
# 156| v156_14(void) = ExitFunction :
|
||||
# 156| v156_12(void) = AliasedUse : ~mu156_4
|
||||
# 156| v156_13(void) = ExitFunction :
|
||||
|
||||
# 171| void WrapperStruct(Wrapper)
|
||||
# 171| Block 0
|
||||
@@ -732,9 +716,8 @@ ssa.cpp:
|
||||
# 176| m176_4(Wrapper) = Store : &:r176_3, r176_2
|
||||
# 177| v177_1(void) = NoOp :
|
||||
# 171| v171_7(void) = ReturnVoid :
|
||||
# 171| v171_8(void) = UnmodeledUse : mu*
|
||||
# 171| v171_9(void) = AliasedUse : ~mu171_4
|
||||
# 171| v171_10(void) = ExitFunction :
|
||||
# 171| v171_8(void) = AliasedUse : ~mu171_4
|
||||
# 171| v171_9(void) = ExitFunction :
|
||||
|
||||
# 179| int AsmStmt(int*)
|
||||
# 179| Block 0
|
||||
@@ -755,9 +738,8 @@ ssa.cpp:
|
||||
# 179| v179_9(void) = ReturnIndirection[p] : &:r179_7, ~mu179_4
|
||||
# 179| r179_10(glval<int>) = VariableAddress[#return] :
|
||||
# 179| v179_11(void) = ReturnValue : &:r179_10, m181_5
|
||||
# 179| v179_12(void) = UnmodeledUse : mu*
|
||||
# 179| v179_13(void) = AliasedUse : ~mu179_4
|
||||
# 179| v179_14(void) = ExitFunction :
|
||||
# 179| v179_12(void) = AliasedUse : ~mu179_4
|
||||
# 179| v179_13(void) = ExitFunction :
|
||||
|
||||
# 184| void AsmStmtWithOutputs(unsigned int&, unsigned int&, unsigned int&, unsigned int&)
|
||||
# 184| Block 0
|
||||
@@ -800,9 +782,8 @@ ssa.cpp:
|
||||
# 184| v184_23(void) = ReturnIndirection[c] : &:r184_15, ~mu184_4
|
||||
# 184| v184_24(void) = ReturnIndirection[d] : &:r184_19, ~mu184_4
|
||||
# 184| v184_25(void) = ReturnVoid :
|
||||
# 184| v184_26(void) = UnmodeledUse : mu*
|
||||
# 184| v184_27(void) = AliasedUse : ~mu184_4
|
||||
# 184| v184_28(void) = ExitFunction :
|
||||
# 184| v184_26(void) = AliasedUse : ~mu184_4
|
||||
# 184| v184_27(void) = ExitFunction :
|
||||
|
||||
# 198| int PureFunctions(char*, char*, int)
|
||||
# 198| Block 0
|
||||
@@ -858,9 +839,8 @@ ssa.cpp:
|
||||
# 198| v198_16(void) = ReturnIndirection[str2] : &:r198_11, ~mu198_4
|
||||
# 198| r198_17(glval<int>) = VariableAddress[#return] :
|
||||
# 198| v198_18(void) = ReturnValue : &:r198_17, m202_4
|
||||
# 198| v198_19(void) = UnmodeledUse : mu*
|
||||
# 198| v198_20(void) = AliasedUse : ~mu198_4
|
||||
# 198| v198_21(void) = ExitFunction :
|
||||
# 198| v198_19(void) = AliasedUse : ~mu198_4
|
||||
# 198| v198_20(void) = ExitFunction :
|
||||
|
||||
# 207| int ModeledCallTarget(int)
|
||||
# 207| Block 0
|
||||
@@ -889,9 +869,8 @@ ssa.cpp:
|
||||
# 210| m210_4(int) = Store : &:r210_1, r210_3
|
||||
# 207| r207_7(glval<int>) = VariableAddress[#return] :
|
||||
# 207| v207_8(void) = ReturnValue : &:r207_7, m210_4
|
||||
# 207| v207_9(void) = UnmodeledUse : mu*
|
||||
# 207| v207_10(void) = AliasedUse : ~mu207_4
|
||||
# 207| v207_11(void) = ExitFunction :
|
||||
# 207| v207_9(void) = AliasedUse : ~mu207_4
|
||||
# 207| v207_10(void) = ExitFunction :
|
||||
|
||||
# 213| void InitArray()
|
||||
# 213| Block 0
|
||||
@@ -951,9 +930,8 @@ ssa.cpp:
|
||||
# 221| mu221_10(unknown[2]) = Store : &:r221_8, r221_9
|
||||
# 222| v222_1(void) = NoOp :
|
||||
# 213| v213_5(void) = ReturnVoid :
|
||||
# 213| v213_6(void) = UnmodeledUse : mu*
|
||||
# 213| v213_7(void) = AliasedUse : ~mu213_4
|
||||
# 213| v213_8(void) = ExitFunction :
|
||||
# 213| v213_6(void) = AliasedUse : ~mu213_4
|
||||
# 213| v213_7(void) = ExitFunction :
|
||||
|
||||
# 226| char StringLiteralAliasing()
|
||||
# 226| Block 0
|
||||
@@ -977,9 +955,8 @@ ssa.cpp:
|
||||
# 230| m230_7(char) = Store : &:r230_1, r230_6
|
||||
# 226| r226_5(glval<char>) = VariableAddress[#return] :
|
||||
# 226| v226_6(void) = ReturnValue : &:r226_5, m230_7
|
||||
# 226| v226_7(void) = UnmodeledUse : mu*
|
||||
# 226| v226_8(void) = AliasedUse : ~mu226_4
|
||||
# 226| v226_9(void) = ExitFunction :
|
||||
# 226| v226_7(void) = AliasedUse : ~mu226_4
|
||||
# 226| v226_8(void) = ExitFunction :
|
||||
|
||||
# 235| void Constructible::Constructible(int)
|
||||
# 235| Block 0
|
||||
@@ -992,9 +969,8 @@ ssa.cpp:
|
||||
# 235| m235_7(int) = InitializeParameter[x] : &:r235_6
|
||||
# 235| v235_8(void) = NoOp :
|
||||
# 235| v235_9(void) = ReturnVoid :
|
||||
# 235| v235_10(void) = UnmodeledUse : mu*
|
||||
# 235| v235_11(void) = AliasedUse : ~mu235_4
|
||||
# 235| v235_12(void) = ExitFunction :
|
||||
# 235| v235_10(void) = AliasedUse : ~mu235_4
|
||||
# 235| v235_11(void) = ExitFunction :
|
||||
|
||||
# 236| void Constructible::g()
|
||||
# 236| Block 0
|
||||
@@ -1005,9 +981,8 @@ ssa.cpp:
|
||||
# 236| r236_5(glval<Constructible>) = InitializeThis :
|
||||
# 236| v236_6(void) = NoOp :
|
||||
# 236| v236_7(void) = ReturnVoid :
|
||||
# 236| v236_8(void) = UnmodeledUse : mu*
|
||||
# 236| v236_9(void) = AliasedUse : ~mu236_4
|
||||
# 236| v236_10(void) = ExitFunction :
|
||||
# 236| v236_8(void) = AliasedUse : ~mu236_4
|
||||
# 236| v236_9(void) = ExitFunction :
|
||||
|
||||
# 239| void ExplicitConstructorCalls()
|
||||
# 239| Block 0
|
||||
@@ -1049,9 +1024,8 @@ ssa.cpp:
|
||||
# 244| mu244_6(Constructible) = ^IndirectMayWriteSideEffect[-1] : &:r244_1
|
||||
# 245| v245_1(void) = NoOp :
|
||||
# 239| v239_5(void) = ReturnVoid :
|
||||
# 239| v239_6(void) = UnmodeledUse : mu*
|
||||
# 239| v239_7(void) = AliasedUse : ~mu239_4
|
||||
# 239| v239_8(void) = ExitFunction :
|
||||
# 239| v239_6(void) = AliasedUse : ~mu239_4
|
||||
# 239| v239_7(void) = ExitFunction :
|
||||
|
||||
# 247| char* VoidStarIndirectParameters(char*, int)
|
||||
# 247| Block 0
|
||||
@@ -1101,9 +1075,8 @@ ssa.cpp:
|
||||
# 247| v247_11(void) = ReturnIndirection[src] : &:r247_7, ~mu247_4
|
||||
# 247| r247_12(glval<char *>) = VariableAddress[#return] :
|
||||
# 247| v247_13(void) = ReturnValue : &:r247_12, m251_4
|
||||
# 247| v247_14(void) = UnmodeledUse : mu*
|
||||
# 247| v247_15(void) = AliasedUse : ~mu247_4
|
||||
# 247| v247_16(void) = ExitFunction :
|
||||
# 247| v247_14(void) = AliasedUse : ~mu247_4
|
||||
# 247| v247_15(void) = ExitFunction :
|
||||
|
||||
# 254| char StringLiteralAliasing2(bool)
|
||||
# 254| Block 0
|
||||
@@ -1145,9 +1118,8 @@ ssa.cpp:
|
||||
# 263| m263_7(char) = Store : &:r263_1, r263_6
|
||||
# 254| r254_7(glval<char>) = VariableAddress[#return] :
|
||||
# 254| v254_8(void) = ReturnValue : &:r254_7, m263_7
|
||||
# 254| v254_9(void) = UnmodeledUse : mu*
|
||||
# 254| v254_10(void) = AliasedUse : ~mu254_4
|
||||
# 254| v254_11(void) = ExitFunction :
|
||||
# 254| v254_9(void) = AliasedUse : ~mu254_4
|
||||
# 254| v254_10(void) = ExitFunction :
|
||||
|
||||
# 268| void* MallocAliasing(void*, int)
|
||||
# 268| Block 0
|
||||
@@ -1186,9 +1158,8 @@ ssa.cpp:
|
||||
# 268| v268_11(void) = ReturnIndirection[s] : &:r268_7, ~mu268_4
|
||||
# 268| r268_12(glval<void *>) = VariableAddress[#return] :
|
||||
# 268| v268_13(void) = ReturnValue : &:r268_12, m271_4
|
||||
# 268| v268_14(void) = UnmodeledUse : mu*
|
||||
# 268| v268_15(void) = AliasedUse : ~mu268_4
|
||||
# 268| v268_16(void) = ExitFunction :
|
||||
# 268| v268_14(void) = AliasedUse : ~mu268_4
|
||||
# 268| v268_15(void) = ExitFunction :
|
||||
|
||||
# 275| void EscapedButNotConflated(bool, Point, int)
|
||||
# 275| Block 0
|
||||
@@ -1236,9 +1207,8 @@ ssa.cpp:
|
||||
# 281| m281_5(int) = Store : &:r281_1, r281_4
|
||||
# 282| v282_1(void) = NoOp :
|
||||
# 275| v275_11(void) = ReturnVoid :
|
||||
# 275| v275_12(void) = UnmodeledUse : mu*
|
||||
# 275| v275_13(void) = AliasedUse : ~mu275_4
|
||||
# 275| v275_14(void) = ExitFunction :
|
||||
# 275| v275_12(void) = AliasedUse : ~mu275_4
|
||||
# 275| v275_13(void) = ExitFunction :
|
||||
|
||||
# 286| void A::A(int)
|
||||
# 286| Block 0
|
||||
@@ -1251,9 +1221,8 @@ ssa.cpp:
|
||||
# 286| m286_7(int) = InitializeParameter[x] : &:r286_6
|
||||
# 286| v286_8(void) = NoOp :
|
||||
# 286| v286_9(void) = ReturnVoid :
|
||||
# 286| v286_10(void) = UnmodeledUse : mu*
|
||||
# 286| v286_11(void) = AliasedUse : ~mu286_4
|
||||
# 286| v286_12(void) = ExitFunction :
|
||||
# 286| v286_10(void) = AliasedUse : ~mu286_4
|
||||
# 286| v286_11(void) = ExitFunction :
|
||||
|
||||
# 287| void A::A(A*)
|
||||
# 287| Block 0
|
||||
@@ -1269,9 +1238,8 @@ ssa.cpp:
|
||||
# 287| v287_10(void) = NoOp :
|
||||
# 287| v287_11(void) = ReturnIndirection[p#0] : &:r287_8, ~mu287_4
|
||||
# 287| v287_12(void) = ReturnVoid :
|
||||
# 287| v287_13(void) = UnmodeledUse : mu*
|
||||
# 287| v287_14(void) = AliasedUse : ~mu287_4
|
||||
# 287| v287_15(void) = ExitFunction :
|
||||
# 287| v287_13(void) = AliasedUse : ~mu287_4
|
||||
# 287| v287_14(void) = ExitFunction :
|
||||
|
||||
# 288| void A::A()
|
||||
# 288| Block 0
|
||||
@@ -1282,9 +1250,8 @@ ssa.cpp:
|
||||
# 288| r288_5(glval<A>) = InitializeThis :
|
||||
# 288| v288_6(void) = NoOp :
|
||||
# 288| v288_7(void) = ReturnVoid :
|
||||
# 288| v288_8(void) = UnmodeledUse : mu*
|
||||
# 288| v288_9(void) = AliasedUse : ~mu288_4
|
||||
# 288| v288_10(void) = ExitFunction :
|
||||
# 288| v288_8(void) = AliasedUse : ~mu288_4
|
||||
# 288| v288_9(void) = ExitFunction :
|
||||
|
||||
# 291| Point* NewAliasing(int)
|
||||
# 291| Block 0
|
||||
@@ -1356,9 +1323,8 @@ ssa.cpp:
|
||||
# 296| m296_4(Point *) = Store : &:r296_1, r296_3
|
||||
# 291| r291_7(glval<Point *>) = VariableAddress[#return] :
|
||||
# 291| v291_8(void) = ReturnValue : &:r291_7, m296_4
|
||||
# 291| v291_9(void) = UnmodeledUse : mu*
|
||||
# 291| v291_10(void) = AliasedUse : ~mu291_4
|
||||
# 291| v291_11(void) = ExitFunction :
|
||||
# 291| v291_9(void) = AliasedUse : ~mu291_4
|
||||
# 291| v291_10(void) = ExitFunction :
|
||||
|
||||
# 301| int main(int, char**)
|
||||
# 301| Block 0
|
||||
@@ -1400,6 +1366,5 @@ ssa.cpp:
|
||||
# 301| v301_11(void) = ReturnIndirection[argv] : &:r301_9, ~mu301_4
|
||||
# 301| r301_12(glval<int>) = VariableAddress[#return] :
|
||||
# 301| v301_13(void) = ReturnValue : &:r301_12, m304_7
|
||||
# 301| v301_14(void) = UnmodeledUse : mu*
|
||||
# 301| v301_15(void) = AliasedUse : ~mu301_4
|
||||
# 301| v301_16(void) = ExitFunction :
|
||||
# 301| v301_14(void) = AliasedUse : ~mu301_4
|
||||
# 301| v301_15(void) = ExitFunction :
|
||||
|
||||
@@ -11,7 +11,6 @@ uniqueNodeLocation
|
||||
| aggregateinitializer.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| aggregateinitializer.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| aggregateinitializer.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| aggregateinitializer.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| aggregateinitializer.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| allocators.cpp:14:5:14:8 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| allocators.cpp:14:5:14:8 | AliasedUse | Node should have one location but has 4. |
|
||||
@@ -23,7 +22,6 @@ uniqueNodeLocation
|
||||
| allocators.cpp:14:5:14:8 | Phi | Node should have one location but has 4. |
|
||||
| allocators.cpp:14:5:14:8 | ReturnValue | Node should have one location but has 4. |
|
||||
| allocators.cpp:14:5:14:8 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| allocators.cpp:14:5:14:8 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| allocators.cpp:14:5:14:8 | VariableAddress | Node should have one location but has 4. |
|
||||
| array_delete.cpp:5:6:5:6 | AliasedDefinition | Node should have one location but has 14. |
|
||||
| array_delete.cpp:5:6:5:6 | AliasedUse | Node should have one location but has 14. |
|
||||
@@ -34,7 +32,6 @@ uniqueNodeLocation
|
||||
| array_delete.cpp:5:6:5:6 | Phi | Node should have one location but has 14. |
|
||||
| array_delete.cpp:5:6:5:6 | ReturnVoid | Node should have one location but has 14. |
|
||||
| array_delete.cpp:5:6:5:6 | UnmodeledDefinition | Node should have one location but has 14. |
|
||||
| array_delete.cpp:5:6:5:6 | UnmodeledUse | Node should have one location but has 14. |
|
||||
| assignexpr.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
|
||||
| assignexpr.cpp:6:6:6:6 | AliasedUse | Node should have one location but has 14. |
|
||||
| assignexpr.cpp:6:6:6:6 | Chi | Node should have one location but has 14. |
|
||||
@@ -44,7 +41,6 @@ uniqueNodeLocation
|
||||
| assignexpr.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
|
||||
| assignexpr.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
|
||||
| assignexpr.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
|
||||
| assignexpr.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
|
||||
| break_labels.c:2:5:2:5 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| break_labels.c:2:5:2:5 | AliasedUse | Node should have one location but has 20. |
|
||||
| break_labels.c:2:5:2:5 | Chi | Node should have one location but has 20. |
|
||||
@@ -54,7 +50,6 @@ uniqueNodeLocation
|
||||
| break_labels.c:2:5:2:5 | Phi | Node should have one location but has 20. |
|
||||
| break_labels.c:2:5:2:5 | ReturnVoid | Node should have one location but has 20. |
|
||||
| break_labels.c:2:5:2:5 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| break_labels.c:2:5:2:5 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| break_labels.c:2:5:2:5 | Unreached | Node should have one location but has 20. |
|
||||
| break_labels.c:2:11:2:11 | VariableAddress | Node should have one location but has 4. |
|
||||
| break_labels.c:2:11:2:11 | i | Node should have one location but has 4. |
|
||||
@@ -70,7 +65,6 @@ uniqueNodeLocation
|
||||
| conditional_destructors.cpp:29:6:29:7 | Phi | Node should have one location but has 2. |
|
||||
| conditional_destructors.cpp:29:6:29:7 | ReturnVoid | Node should have one location but has 2. |
|
||||
| conditional_destructors.cpp:29:6:29:7 | UnmodeledDefinition | Node should have one location but has 2. |
|
||||
| conditional_destructors.cpp:29:6:29:7 | UnmodeledUse | Node should have one location but has 2. |
|
||||
| conditional_destructors.cpp:38:6:38:7 | AliasedDefinition | Node should have one location but has 2. |
|
||||
| conditional_destructors.cpp:38:6:38:7 | AliasedUse | Node should have one location but has 2. |
|
||||
| conditional_destructors.cpp:38:6:38:7 | Chi | Node should have one location but has 2. |
|
||||
@@ -80,7 +74,6 @@ uniqueNodeLocation
|
||||
| conditional_destructors.cpp:38:6:38:7 | Phi | Node should have one location but has 2. |
|
||||
| conditional_destructors.cpp:38:6:38:7 | ReturnVoid | Node should have one location but has 2. |
|
||||
| conditional_destructors.cpp:38:6:38:7 | UnmodeledDefinition | Node should have one location but has 2. |
|
||||
| conditional_destructors.cpp:38:6:38:7 | UnmodeledUse | Node should have one location but has 2. |
|
||||
| conditional_destructors.cpp:38:6:38:7 | Unreached | Node should have one location but has 2. |
|
||||
| constmemberaccess.cpp:3:7:3:7 | x | Node should have one location but has 2. |
|
||||
| constmemberaccess.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
|
||||
@@ -92,7 +85,6 @@ uniqueNodeLocation
|
||||
| constmemberaccess.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
|
||||
| constmemberaccess.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
|
||||
| constmemberaccess.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
|
||||
| constmemberaccess.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
|
||||
| constructorinitializer.cpp:3:9:3:9 | i | Node should have one location but has 2. |
|
||||
| constructorinitializer.cpp:3:9:3:9 | x | Node should have one location but has 2. |
|
||||
| constructorinitializer.cpp:3:16:3:16 | j | Node should have one location but has 2. |
|
||||
@@ -106,7 +98,6 @@ uniqueNodeLocation
|
||||
| constructorinitializer.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
|
||||
| constructorinitializer.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
|
||||
| constructorinitializer.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
|
||||
| constructorinitializer.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
|
||||
| defconstructornewexpr.cpp:3:6:3:6 | AliasedDefinition | Node should have one location but has 14. |
|
||||
| defconstructornewexpr.cpp:3:6:3:6 | AliasedUse | Node should have one location but has 14. |
|
||||
| defconstructornewexpr.cpp:3:6:3:6 | Chi | Node should have one location but has 14. |
|
||||
@@ -116,7 +107,6 @@ uniqueNodeLocation
|
||||
| defconstructornewexpr.cpp:3:6:3:6 | Phi | Node should have one location but has 14. |
|
||||
| defconstructornewexpr.cpp:3:6:3:6 | ReturnVoid | Node should have one location but has 14. |
|
||||
| defconstructornewexpr.cpp:3:6:3:6 | UnmodeledDefinition | Node should have one location but has 14. |
|
||||
| defconstructornewexpr.cpp:3:6:3:6 | UnmodeledUse | Node should have one location but has 14. |
|
||||
| defdestructordeleteexpr.cpp:3:6:3:6 | AliasedDefinition | Node should have one location but has 14. |
|
||||
| defdestructordeleteexpr.cpp:3:6:3:6 | AliasedUse | Node should have one location but has 14. |
|
||||
| defdestructordeleteexpr.cpp:3:6:3:6 | Chi | Node should have one location but has 14. |
|
||||
@@ -126,7 +116,6 @@ uniqueNodeLocation
|
||||
| defdestructordeleteexpr.cpp:3:6:3:6 | Phi | Node should have one location but has 14. |
|
||||
| defdestructordeleteexpr.cpp:3:6:3:6 | ReturnVoid | Node should have one location but has 14. |
|
||||
| defdestructordeleteexpr.cpp:3:6:3:6 | UnmodeledDefinition | Node should have one location but has 14. |
|
||||
| defdestructordeleteexpr.cpp:3:6:3:6 | UnmodeledUse | Node should have one location but has 14. |
|
||||
| deleteexpr.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
|
||||
| deleteexpr.cpp:6:6:6:6 | AliasedUse | Node should have one location but has 14. |
|
||||
| deleteexpr.cpp:6:6:6:6 | Chi | Node should have one location but has 14. |
|
||||
@@ -136,7 +125,6 @@ uniqueNodeLocation
|
||||
| deleteexpr.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
|
||||
| deleteexpr.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
|
||||
| deleteexpr.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
|
||||
| deleteexpr.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
|
||||
| dostmt.c:8:6:8:18 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| dostmt.c:8:6:8:18 | AliasedUse | Node should have one location but has 4. |
|
||||
| dostmt.c:8:6:8:18 | Chi | Node should have one location but has 4. |
|
||||
@@ -145,7 +133,6 @@ uniqueNodeLocation
|
||||
| dostmt.c:8:6:8:18 | InitializeNonLocal | Node should have one location but has 4. |
|
||||
| dostmt.c:8:6:8:18 | ReturnVoid | Node should have one location but has 4. |
|
||||
| dostmt.c:8:6:8:18 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| dostmt.c:8:6:8:18 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| dostmt.c:8:6:8:18 | Unreached | Node should have one location but has 4. |
|
||||
| dostmt.c:16:6:16:18 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| dostmt.c:16:6:16:18 | AliasedUse | Node should have one location but has 4. |
|
||||
@@ -155,7 +142,6 @@ uniqueNodeLocation
|
||||
| dostmt.c:16:6:16:18 | InitializeNonLocal | Node should have one location but has 4. |
|
||||
| dostmt.c:16:6:16:18 | ReturnVoid | Node should have one location but has 4. |
|
||||
| dostmt.c:16:6:16:18 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| dostmt.c:16:6:16:18 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| dostmt.c:16:6:16:18 | Unreached | Node should have one location but has 4. |
|
||||
| dostmt.c:25:6:25:18 | AliasedDefinition | Node should have one location but has 2. |
|
||||
| dostmt.c:25:6:25:18 | Chi | Node should have one location but has 2. |
|
||||
@@ -171,7 +157,6 @@ uniqueNodeLocation
|
||||
| dostmt.c:32:6:32:11 | InitializeNonLocal | Node should have one location but has 4. |
|
||||
| dostmt.c:32:6:32:11 | ReturnVoid | Node should have one location but has 4. |
|
||||
| dostmt.c:32:6:32:11 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| dostmt.c:32:6:32:11 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| duff.c:2:6:2:6 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| duff.c:2:6:2:6 | AliasedUse | Node should have one location but has 20. |
|
||||
| duff.c:2:6:2:6 | Chi | Node should have one location but has 20. |
|
||||
@@ -181,7 +166,6 @@ uniqueNodeLocation
|
||||
| duff.c:2:6:2:6 | Phi | Node should have one location but has 20. |
|
||||
| duff.c:2:6:2:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| duff.c:2:6:2:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| duff.c:2:6:2:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| duff.c:2:6:2:6 | Unreached | Node should have one location but has 20. |
|
||||
| duff.c:2:12:2:12 | VariableAddress | Node should have one location but has 4. |
|
||||
| duff.c:2:12:2:12 | i | Node should have one location but has 4. |
|
||||
@@ -197,7 +181,6 @@ uniqueNodeLocation
|
||||
| dummyblock.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| dummyblock.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| dummyblock.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| dummyblock.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| dummyblock.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| emptyblock.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| emptyblock.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
|
||||
@@ -208,7 +191,6 @@ uniqueNodeLocation
|
||||
| emptyblock.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| emptyblock.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| emptyblock.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| emptyblock.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| emptyblock.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| enum.c:5:5:5:5 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| enum.c:5:5:5:5 | AliasedUse | Node should have one location but has 20. |
|
||||
@@ -219,7 +201,6 @@ uniqueNodeLocation
|
||||
| enum.c:5:5:5:5 | Phi | Node should have one location but has 20. |
|
||||
| enum.c:5:5:5:5 | ReturnVoid | Node should have one location but has 20. |
|
||||
| enum.c:5:5:5:5 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| enum.c:5:5:5:5 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| enum.c:5:5:5:5 | Unreached | Node should have one location but has 20. |
|
||||
| exprstmt.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| exprstmt.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
|
||||
@@ -230,7 +211,6 @@ uniqueNodeLocation
|
||||
| exprstmt.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| exprstmt.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| exprstmt.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| exprstmt.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| exprstmt.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| fieldaccess.cpp:3:7:3:7 | x | Node should have one location but has 2. |
|
||||
| fieldaccess.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
|
||||
@@ -242,7 +222,6 @@ uniqueNodeLocation
|
||||
| fieldaccess.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
|
||||
| fieldaccess.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
|
||||
| fieldaccess.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
|
||||
| fieldaccess.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
|
||||
| file://:0:0:0:0 | InitializeIndirection | Node should have one location but has 0. |
|
||||
| file://:0:0:0:0 | Load | Node should have one location but has 0. |
|
||||
| file://:0:0:0:0 | ReturnIndirection | Node should have one location but has 0. |
|
||||
@@ -282,7 +261,6 @@ uniqueNodeLocation
|
||||
| forstmt.cpp:1:6:1:7 | Phi | Node should have one location but has 2. |
|
||||
| forstmt.cpp:1:6:1:7 | ReturnVoid | Node should have one location but has 2. |
|
||||
| forstmt.cpp:1:6:1:7 | UnmodeledDefinition | Node should have one location but has 2. |
|
||||
| forstmt.cpp:1:6:1:7 | UnmodeledUse | Node should have one location but has 2. |
|
||||
| forstmt.cpp:8:6:8:7 | AliasedDefinition | Node should have one location but has 2. |
|
||||
| forstmt.cpp:8:6:8:7 | AliasedUse | Node should have one location but has 2. |
|
||||
| forstmt.cpp:8:6:8:7 | Chi | Node should have one location but has 2. |
|
||||
@@ -292,7 +270,6 @@ uniqueNodeLocation
|
||||
| forstmt.cpp:8:6:8:7 | Phi | Node should have one location but has 2. |
|
||||
| forstmt.cpp:8:6:8:7 | ReturnVoid | Node should have one location but has 2. |
|
||||
| forstmt.cpp:8:6:8:7 | UnmodeledDefinition | Node should have one location but has 2. |
|
||||
| forstmt.cpp:8:6:8:7 | UnmodeledUse | Node should have one location but has 2. |
|
||||
| forstmt.cpp:8:6:8:7 | Unreached | Node should have one location but has 2. |
|
||||
| ifelsestmt.c:1:6:1:19 | AliasedDefinition | Node should have one location but has 3. |
|
||||
| ifelsestmt.c:1:6:1:19 | AliasedUse | Node should have one location but has 3. |
|
||||
@@ -302,7 +279,6 @@ uniqueNodeLocation
|
||||
| ifelsestmt.c:1:6:1:19 | InitializeNonLocal | Node should have one location but has 3. |
|
||||
| ifelsestmt.c:1:6:1:19 | ReturnVoid | Node should have one location but has 3. |
|
||||
| ifelsestmt.c:1:6:1:19 | UnmodeledDefinition | Node should have one location but has 3. |
|
||||
| ifelsestmt.c:1:6:1:19 | UnmodeledUse | Node should have one location but has 3. |
|
||||
| ifelsestmt.c:1:6:1:19 | Unreached | Node should have one location but has 3. |
|
||||
| ifelsestmt.c:11:6:11:19 | AliasedDefinition | Node should have one location but has 3. |
|
||||
| ifelsestmt.c:11:6:11:19 | AliasedUse | Node should have one location but has 3. |
|
||||
@@ -312,7 +288,6 @@ uniqueNodeLocation
|
||||
| ifelsestmt.c:11:6:11:19 | InitializeNonLocal | Node should have one location but has 3. |
|
||||
| ifelsestmt.c:11:6:11:19 | ReturnVoid | Node should have one location but has 3. |
|
||||
| ifelsestmt.c:11:6:11:19 | UnmodeledDefinition | Node should have one location but has 3. |
|
||||
| ifelsestmt.c:11:6:11:19 | UnmodeledUse | Node should have one location but has 3. |
|
||||
| ifelsestmt.c:11:6:11:19 | Unreached | Node should have one location but has 3. |
|
||||
| ifelsestmt.c:19:6:19:18 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:19:6:19:18 | AliasedUse | Node should have one location but has 4. |
|
||||
@@ -322,7 +297,6 @@ uniqueNodeLocation
|
||||
| ifelsestmt.c:19:6:19:18 | InitializeNonLocal | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:19:6:19:18 | ReturnVoid | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:19:6:19:18 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:19:6:19:18 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:19:6:19:18 | Unreached | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:29:6:29:18 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:29:6:29:18 | AliasedUse | Node should have one location but has 4. |
|
||||
@@ -332,7 +306,6 @@ uniqueNodeLocation
|
||||
| ifelsestmt.c:29:6:29:18 | InitializeNonLocal | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:29:6:29:18 | ReturnVoid | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:29:6:29:18 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:29:6:29:18 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:29:6:29:18 | Unreached | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:37:6:37:11 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:37:6:37:11 | AliasedUse | Node should have one location but has 4. |
|
||||
@@ -342,7 +315,6 @@ uniqueNodeLocation
|
||||
| ifelsestmt.c:37:6:37:11 | InitializeNonLocal | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:37:6:37:11 | ReturnVoid | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:37:6:37:11 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:37:6:37:11 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| ifelsestmt.c:37:17:37:17 | VariableAddress | Node should have one location but has 2. |
|
||||
| ifelsestmt.c:37:17:37:17 | x | Node should have one location but has 2. |
|
||||
| ifelsestmt.c:37:17:37:17 | x | Node should have one location but has 2. |
|
||||
@@ -357,7 +329,6 @@ uniqueNodeLocation
|
||||
| ifstmt.c:1:6:1:19 | InitializeNonLocal | Node should have one location but has 3. |
|
||||
| ifstmt.c:1:6:1:19 | ReturnVoid | Node should have one location but has 3. |
|
||||
| ifstmt.c:1:6:1:19 | UnmodeledDefinition | Node should have one location but has 3. |
|
||||
| ifstmt.c:1:6:1:19 | UnmodeledUse | Node should have one location but has 3. |
|
||||
| ifstmt.c:1:6:1:19 | Unreached | Node should have one location but has 3. |
|
||||
| ifstmt.c:8:6:8:19 | AliasedDefinition | Node should have one location but has 3. |
|
||||
| ifstmt.c:8:6:8:19 | AliasedUse | Node should have one location but has 3. |
|
||||
@@ -367,7 +338,6 @@ uniqueNodeLocation
|
||||
| ifstmt.c:8:6:8:19 | InitializeNonLocal | Node should have one location but has 3. |
|
||||
| ifstmt.c:8:6:8:19 | ReturnVoid | Node should have one location but has 3. |
|
||||
| ifstmt.c:8:6:8:19 | UnmodeledDefinition | Node should have one location but has 3. |
|
||||
| ifstmt.c:8:6:8:19 | UnmodeledUse | Node should have one location but has 3. |
|
||||
| ifstmt.c:8:6:8:19 | Unreached | Node should have one location but has 3. |
|
||||
| ifstmt.c:14:6:14:18 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| ifstmt.c:14:6:14:18 | AliasedUse | Node should have one location but has 4. |
|
||||
@@ -377,7 +347,6 @@ uniqueNodeLocation
|
||||
| ifstmt.c:14:6:14:18 | InitializeNonLocal | Node should have one location but has 4. |
|
||||
| ifstmt.c:14:6:14:18 | ReturnVoid | Node should have one location but has 4. |
|
||||
| ifstmt.c:14:6:14:18 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| ifstmt.c:14:6:14:18 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| ifstmt.c:14:6:14:18 | Unreached | Node should have one location but has 4. |
|
||||
| ifstmt.c:21:6:21:18 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| ifstmt.c:21:6:21:18 | AliasedUse | Node should have one location but has 4. |
|
||||
@@ -387,7 +356,6 @@ uniqueNodeLocation
|
||||
| ifstmt.c:21:6:21:18 | InitializeNonLocal | Node should have one location but has 4. |
|
||||
| ifstmt.c:21:6:21:18 | ReturnVoid | Node should have one location but has 4. |
|
||||
| ifstmt.c:21:6:21:18 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| ifstmt.c:21:6:21:18 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| ifstmt.c:21:6:21:18 | Unreached | Node should have one location but has 4. |
|
||||
| ifstmt.c:27:6:27:11 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| ifstmt.c:27:6:27:11 | AliasedUse | Node should have one location but has 4. |
|
||||
@@ -397,7 +365,6 @@ uniqueNodeLocation
|
||||
| ifstmt.c:27:6:27:11 | InitializeNonLocal | Node should have one location but has 4. |
|
||||
| ifstmt.c:27:6:27:11 | ReturnVoid | Node should have one location but has 4. |
|
||||
| ifstmt.c:27:6:27:11 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| ifstmt.c:27:6:27:11 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| ifstmt.c:27:17:27:17 | VariableAddress | Node should have one location but has 2. |
|
||||
| ifstmt.c:27:17:27:17 | x | Node should have one location but has 2. |
|
||||
| ifstmt.c:27:17:27:17 | x | Node should have one location but has 2. |
|
||||
@@ -413,7 +380,6 @@ uniqueNodeLocation
|
||||
| initializer.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| initializer.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| initializer.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| initializer.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| initializer.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| landexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| landexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
|
||||
@@ -424,7 +390,6 @@ uniqueNodeLocation
|
||||
| landexpr.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| landexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| landexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| landexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| landexpr.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| lorexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| lorexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
|
||||
@@ -435,7 +400,6 @@ uniqueNodeLocation
|
||||
| lorexpr.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| lorexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| lorexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| lorexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| lorexpr.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| ltrbinopexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| ltrbinopexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
|
||||
@@ -446,7 +410,6 @@ uniqueNodeLocation
|
||||
| ltrbinopexpr.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| ltrbinopexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| ltrbinopexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| ltrbinopexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| ltrbinopexpr.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| membercallexpr.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
|
||||
| membercallexpr.cpp:6:6:6:6 | AliasedUse | Node should have one location but has 14. |
|
||||
@@ -457,7 +420,6 @@ uniqueNodeLocation
|
||||
| membercallexpr.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
|
||||
| membercallexpr.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
|
||||
| membercallexpr.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
|
||||
| membercallexpr.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
|
||||
| membercallexpr_args.cpp:3:6:3:6 | d | Node should have one location but has 2. |
|
||||
| membercallexpr_args.cpp:4:14:4:14 | x | Node should have one location but has 2. |
|
||||
| membercallexpr_args.cpp:4:21:4:21 | y | Node should have one location but has 2. |
|
||||
@@ -470,7 +432,6 @@ uniqueNodeLocation
|
||||
| membercallexpr_args.cpp:7:6:7:6 | Phi | Node should have one location but has 14. |
|
||||
| membercallexpr_args.cpp:7:6:7:6 | ReturnVoid | Node should have one location but has 14. |
|
||||
| membercallexpr_args.cpp:7:6:7:6 | UnmodeledDefinition | Node should have one location but has 14. |
|
||||
| membercallexpr_args.cpp:7:6:7:6 | UnmodeledUse | Node should have one location but has 14. |
|
||||
| newexpr.cpp:3:9:3:9 | i | Node should have one location but has 2. |
|
||||
| newexpr.cpp:3:9:3:9 | x | Node should have one location but has 2. |
|
||||
| newexpr.cpp:3:16:3:16 | j | Node should have one location but has 2. |
|
||||
@@ -484,7 +445,6 @@ uniqueNodeLocation
|
||||
| newexpr.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
|
||||
| newexpr.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
|
||||
| newexpr.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
|
||||
| newexpr.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
|
||||
| no_dynamic_init.cpp:9:5:9:8 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| no_dynamic_init.cpp:9:5:9:8 | AliasedUse | Node should have one location but has 4. |
|
||||
| no_dynamic_init.cpp:9:5:9:8 | Chi | Node should have one location but has 4. |
|
||||
@@ -495,7 +455,6 @@ uniqueNodeLocation
|
||||
| no_dynamic_init.cpp:9:5:9:8 | Phi | Node should have one location but has 4. |
|
||||
| no_dynamic_init.cpp:9:5:9:8 | ReturnValue | Node should have one location but has 4. |
|
||||
| no_dynamic_init.cpp:9:5:9:8 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| no_dynamic_init.cpp:9:5:9:8 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| no_dynamic_init.cpp:9:5:9:8 | VariableAddress | Node should have one location but has 4. |
|
||||
| nodefaultswitchstmt.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| nodefaultswitchstmt.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
|
||||
@@ -506,7 +465,6 @@ uniqueNodeLocation
|
||||
| nodefaultswitchstmt.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| nodefaultswitchstmt.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| nodefaultswitchstmt.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| nodefaultswitchstmt.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| nodefaultswitchstmt.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| nodefaultswitchstmt.c:1:12:1:12 | VariableAddress | Node should have one location but has 4. |
|
||||
| nodefaultswitchstmt.c:1:12:1:12 | i | Node should have one location but has 4. |
|
||||
@@ -521,7 +479,6 @@ uniqueNodeLocation
|
||||
| nonmembercallexpr.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 2. |
|
||||
| nonmembercallexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 2. |
|
||||
| nonmembercallexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 2. |
|
||||
| nonmembercallexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 2. |
|
||||
| nonmembercallexpr.c:3:6:3:6 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| nonmembercallexpr.c:3:6:3:6 | AliasedUse | Node should have one location but has 20. |
|
||||
| nonmembercallexpr.c:3:6:3:6 | Chi | Node should have one location but has 20. |
|
||||
@@ -531,7 +488,6 @@ uniqueNodeLocation
|
||||
| nonmembercallexpr.c:3:6:3:6 | Phi | Node should have one location but has 20. |
|
||||
| nonmembercallexpr.c:3:6:3:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| nonmembercallexpr.c:3:6:3:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| nonmembercallexpr.c:3:6:3:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| nonmembercallexpr.c:3:6:3:6 | Unreached | Node should have one location but has 20. |
|
||||
| nonmemberfp2callexpr.c:3:6:3:6 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| nonmemberfp2callexpr.c:3:6:3:6 | AliasedUse | Node should have one location but has 20. |
|
||||
@@ -542,7 +498,6 @@ uniqueNodeLocation
|
||||
| nonmemberfp2callexpr.c:3:6:3:6 | Phi | Node should have one location but has 20. |
|
||||
| nonmemberfp2callexpr.c:3:6:3:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| nonmemberfp2callexpr.c:3:6:3:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| nonmemberfp2callexpr.c:3:6:3:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| nonmemberfp2callexpr.c:3:6:3:6 | Unreached | Node should have one location but has 20. |
|
||||
| nonmemberfpcallexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| nonmemberfpcallexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
|
||||
@@ -553,7 +508,6 @@ uniqueNodeLocation
|
||||
| nonmemberfpcallexpr.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| nonmemberfpcallexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| nonmemberfpcallexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| nonmemberfpcallexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| nonmemberfpcallexpr.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| parameterinitializer.cpp:18:5:18:8 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| parameterinitializer.cpp:18:5:18:8 | AliasedUse | Node should have one location but has 4. |
|
||||
@@ -565,7 +519,6 @@ uniqueNodeLocation
|
||||
| parameterinitializer.cpp:18:5:18:8 | Phi | Node should have one location but has 4. |
|
||||
| parameterinitializer.cpp:18:5:18:8 | ReturnValue | Node should have one location but has 4. |
|
||||
| parameterinitializer.cpp:18:5:18:8 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| parameterinitializer.cpp:18:5:18:8 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| parameterinitializer.cpp:18:5:18:8 | VariableAddress | Node should have one location but has 4. |
|
||||
| pmcallexpr.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
|
||||
| pmcallexpr.cpp:6:6:6:6 | AliasedUse | Node should have one location but has 14. |
|
||||
@@ -576,7 +529,6 @@ uniqueNodeLocation
|
||||
| pmcallexpr.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
|
||||
| pmcallexpr.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
|
||||
| pmcallexpr.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
|
||||
| pmcallexpr.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
|
||||
| questionexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| questionexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
|
||||
| questionexpr.c:1:6:1:6 | Chi | Node should have one location but has 20. |
|
||||
@@ -586,7 +538,6 @@ uniqueNodeLocation
|
||||
| questionexpr.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| questionexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| questionexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| questionexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| questionexpr.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| revsubscriptexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 2. |
|
||||
| revsubscriptexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 2. |
|
||||
@@ -596,7 +547,6 @@ uniqueNodeLocation
|
||||
| revsubscriptexpr.c:1:6:1:6 | InitializeNonLocal | Node should have one location but has 2. |
|
||||
| revsubscriptexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 2. |
|
||||
| revsubscriptexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 2. |
|
||||
| revsubscriptexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 2. |
|
||||
| staticmembercallexpr.cpp:6:6:6:6 | AliasedDefinition | Node should have one location but has 14. |
|
||||
| staticmembercallexpr.cpp:6:6:6:6 | AliasedUse | Node should have one location but has 14. |
|
||||
| staticmembercallexpr.cpp:6:6:6:6 | Chi | Node should have one location but has 14. |
|
||||
@@ -606,7 +556,6 @@ uniqueNodeLocation
|
||||
| staticmembercallexpr.cpp:6:6:6:6 | Phi | Node should have one location but has 14. |
|
||||
| staticmembercallexpr.cpp:6:6:6:6 | ReturnVoid | Node should have one location but has 14. |
|
||||
| staticmembercallexpr.cpp:6:6:6:6 | UnmodeledDefinition | Node should have one location but has 14. |
|
||||
| staticmembercallexpr.cpp:6:6:6:6 | UnmodeledUse | Node should have one location but has 14. |
|
||||
| staticmembercallexpr_args.cpp:3:6:3:6 | d | Node should have one location but has 2. |
|
||||
| staticmembercallexpr_args.cpp:4:21:4:21 | x | Node should have one location but has 2. |
|
||||
| staticmembercallexpr_args.cpp:4:28:4:28 | y | Node should have one location but has 2. |
|
||||
@@ -619,7 +568,6 @@ uniqueNodeLocation
|
||||
| staticmembercallexpr_args.cpp:7:6:7:6 | Phi | Node should have one location but has 14. |
|
||||
| staticmembercallexpr_args.cpp:7:6:7:6 | ReturnVoid | Node should have one location but has 14. |
|
||||
| staticmembercallexpr_args.cpp:7:6:7:6 | UnmodeledDefinition | Node should have one location but has 14. |
|
||||
| staticmembercallexpr_args.cpp:7:6:7:6 | UnmodeledUse | Node should have one location but has 14. |
|
||||
| stream_it.cpp:16:5:16:8 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| stream_it.cpp:16:5:16:8 | AliasedUse | Node should have one location but has 4. |
|
||||
| stream_it.cpp:16:5:16:8 | Chi | Node should have one location but has 4. |
|
||||
@@ -630,7 +578,6 @@ uniqueNodeLocation
|
||||
| stream_it.cpp:16:5:16:8 | Phi | Node should have one location but has 4. |
|
||||
| stream_it.cpp:16:5:16:8 | ReturnValue | Node should have one location but has 4. |
|
||||
| stream_it.cpp:16:5:16:8 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| stream_it.cpp:16:5:16:8 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| stream_it.cpp:16:5:16:8 | VariableAddress | Node should have one location but has 4. |
|
||||
| subscriptexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| subscriptexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
|
||||
@@ -641,7 +588,6 @@ uniqueNodeLocation
|
||||
| subscriptexpr.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| subscriptexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| subscriptexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| subscriptexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| subscriptexpr.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| switchstmt.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| switchstmt.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
|
||||
@@ -652,7 +598,6 @@ uniqueNodeLocation
|
||||
| switchstmt.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| switchstmt.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| switchstmt.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| switchstmt.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| switchstmt.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| switchstmt.c:1:12:1:12 | VariableAddress | Node should have one location but has 4. |
|
||||
| switchstmt.c:1:12:1:12 | i | Node should have one location but has 4. |
|
||||
@@ -668,7 +613,6 @@ uniqueNodeLocation
|
||||
| tinyforstmt.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| tinyforstmt.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| tinyforstmt.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| tinyforstmt.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| tinyforstmt.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| unaryopexpr.c:1:6:1:6 | AliasedDefinition | Node should have one location but has 20. |
|
||||
| unaryopexpr.c:1:6:1:6 | AliasedUse | Node should have one location but has 20. |
|
||||
@@ -679,7 +623,6 @@ uniqueNodeLocation
|
||||
| unaryopexpr.c:1:6:1:6 | Phi | Node should have one location but has 20. |
|
||||
| unaryopexpr.c:1:6:1:6 | ReturnVoid | Node should have one location but has 20. |
|
||||
| unaryopexpr.c:1:6:1:6 | UnmodeledDefinition | Node should have one location but has 20. |
|
||||
| unaryopexpr.c:1:6:1:6 | UnmodeledUse | Node should have one location but has 20. |
|
||||
| unaryopexpr.c:1:6:1:6 | Unreached | Node should have one location but has 20. |
|
||||
| whilestmt.c:1:6:1:19 | AliasedDefinition | Node should have one location but has 3. |
|
||||
| whilestmt.c:1:6:1:19 | AliasedUse | Node should have one location but has 3. |
|
||||
@@ -689,7 +632,6 @@ uniqueNodeLocation
|
||||
| whilestmt.c:1:6:1:19 | InitializeNonLocal | Node should have one location but has 3. |
|
||||
| whilestmt.c:1:6:1:19 | ReturnVoid | Node should have one location but has 3. |
|
||||
| whilestmt.c:1:6:1:19 | UnmodeledDefinition | Node should have one location but has 3. |
|
||||
| whilestmt.c:1:6:1:19 | UnmodeledUse | Node should have one location but has 3. |
|
||||
| whilestmt.c:1:6:1:19 | Unreached | Node should have one location but has 3. |
|
||||
| whilestmt.c:8:6:8:19 | AliasedDefinition | Node should have one location but has 3. |
|
||||
| whilestmt.c:8:6:8:19 | AliasedUse | Node should have one location but has 3. |
|
||||
@@ -699,7 +641,6 @@ uniqueNodeLocation
|
||||
| whilestmt.c:8:6:8:19 | InitializeNonLocal | Node should have one location but has 3. |
|
||||
| whilestmt.c:8:6:8:19 | ReturnVoid | Node should have one location but has 3. |
|
||||
| whilestmt.c:8:6:8:19 | UnmodeledDefinition | Node should have one location but has 3. |
|
||||
| whilestmt.c:8:6:8:19 | UnmodeledUse | Node should have one location but has 3. |
|
||||
| whilestmt.c:8:6:8:19 | Unreached | Node should have one location but has 3. |
|
||||
| whilestmt.c:15:6:15:18 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| whilestmt.c:15:6:15:18 | AliasedUse | Node should have one location but has 4. |
|
||||
@@ -709,7 +650,6 @@ uniqueNodeLocation
|
||||
| whilestmt.c:15:6:15:18 | InitializeNonLocal | Node should have one location but has 4. |
|
||||
| whilestmt.c:15:6:15:18 | ReturnVoid | Node should have one location but has 4. |
|
||||
| whilestmt.c:15:6:15:18 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| whilestmt.c:15:6:15:18 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| whilestmt.c:15:6:15:18 | Unreached | Node should have one location but has 4. |
|
||||
| whilestmt.c:23:6:23:18 | AliasedDefinition | Node should have one location but has 4. |
|
||||
| whilestmt.c:23:6:23:18 | AliasedUse | Node should have one location but has 4. |
|
||||
@@ -719,7 +659,6 @@ uniqueNodeLocation
|
||||
| whilestmt.c:23:6:23:18 | InitializeNonLocal | Node should have one location but has 4. |
|
||||
| whilestmt.c:23:6:23:18 | ReturnVoid | Node should have one location but has 4. |
|
||||
| whilestmt.c:23:6:23:18 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| whilestmt.c:23:6:23:18 | UnmodeledUse | Node should have one location but has 4. |
|
||||
| whilestmt.c:23:6:23:18 | Unreached | Node should have one location but has 4. |
|
||||
| whilestmt.c:32:6:32:18 | AliasedDefinition | Node should have one location but has 2. |
|
||||
| whilestmt.c:32:6:32:18 | Chi | Node should have one location but has 2. |
|
||||
@@ -735,7 +674,6 @@ uniqueNodeLocation
|
||||
| whilestmt.c:39:6:39:11 | InitializeNonLocal | Node should have one location but has 4. |
|
||||
| whilestmt.c:39:6:39:11 | ReturnVoid | Node should have one location but has 4. |
|
||||
| whilestmt.c:39:6:39:11 | UnmodeledDefinition | Node should have one location but has 4. |
|
||||
| whilestmt.c:39:6:39:11 | UnmodeledUse | Node should have one location but has 4. |
|
||||
missingLocation
|
||||
| Nodes without location: 30 |
|
||||
uniqueNodeToString
|
||||
|
||||
@@ -68,9 +68,8 @@ test.cpp:
|
||||
# 7| valnum = m5_7, m6_7, m7_4, r5_5, r6_5, r7_2
|
||||
# 8| v8_1(void) = NoOp :
|
||||
# 1| v1_10(void) = ReturnVoid :
|
||||
# 1| v1_11(void) = UnmodeledUse : mu*
|
||||
# 1| v1_12(void) = AliasedUse : m1_3
|
||||
# 1| v1_13(void) = ExitFunction :
|
||||
# 1| v1_11(void) = AliasedUse : m1_3
|
||||
# 1| v1_12(void) = ExitFunction :
|
||||
|
||||
# 12| void test01(int, int)
|
||||
# 12| Block 0
|
||||
@@ -153,9 +152,8 @@ test.cpp:
|
||||
# 18| valnum = m16_10, m17_10, m18_4, r16_8, r17_8, r18_2
|
||||
# 19| v19_1(void) = NoOp :
|
||||
# 12| v12_10(void) = ReturnVoid :
|
||||
# 12| v12_11(void) = UnmodeledUse : mu*
|
||||
# 12| v12_12(void) = AliasedUse : m12_3
|
||||
# 12| v12_13(void) = ExitFunction :
|
||||
# 12| v12_11(void) = AliasedUse : m12_3
|
||||
# 12| v12_12(void) = ExitFunction :
|
||||
|
||||
# 25| void test02(int, int)
|
||||
# 25| Block 0
|
||||
@@ -245,9 +243,8 @@ test.cpp:
|
||||
# 32| valnum = m31_10, m32_4, r31_8, r32_2
|
||||
# 33| v33_1(void) = NoOp :
|
||||
# 25| v25_10(void) = ReturnVoid :
|
||||
# 25| v25_11(void) = UnmodeledUse : mu*
|
||||
# 25| v25_12(void) = AliasedUse : ~m30_4
|
||||
# 25| v25_13(void) = ExitFunction :
|
||||
# 25| v25_11(void) = AliasedUse : ~m30_4
|
||||
# 25| v25_12(void) = ExitFunction :
|
||||
|
||||
# 39| void test03(int, int, int*)
|
||||
# 39| Block 0
|
||||
@@ -351,9 +348,8 @@ test.cpp:
|
||||
# 47| v47_1(void) = NoOp :
|
||||
# 39| v39_14(void) = ReturnIndirection[p2] : &:r39_12, m44_6
|
||||
# 39| v39_15(void) = ReturnVoid :
|
||||
# 39| v39_16(void) = UnmodeledUse : mu*
|
||||
# 39| v39_17(void) = AliasedUse : m39_3
|
||||
# 39| v39_18(void) = ExitFunction :
|
||||
# 39| v39_16(void) = AliasedUse : m39_3
|
||||
# 39| v39_17(void) = ExitFunction :
|
||||
|
||||
# 49| unsigned int my_strspn(char const*, char const*)
|
||||
# 49| Block 0
|
||||
@@ -528,9 +524,8 @@ test.cpp:
|
||||
# 49| r49_16(glval<unsigned int>) = VariableAddress[#return] :
|
||||
# 49| valnum = r49_16, r65_1
|
||||
# 49| v49_17(void) = ReturnValue : &:r49_16, m65_4
|
||||
# 49| v49_18(void) = UnmodeledUse : mu*
|
||||
# 49| v49_19(void) = AliasedUse : m49_3
|
||||
# 49| v49_20(void) = ExitFunction :
|
||||
# 49| v49_18(void) = AliasedUse : m49_3
|
||||
# 49| v49_19(void) = ExitFunction :
|
||||
|
||||
# 75| void test04(two_values*)
|
||||
# 75| Block 0
|
||||
@@ -622,9 +617,8 @@ test.cpp:
|
||||
# 82| v82_2(void) = NoOp :
|
||||
# 75| v75_10(void) = ReturnIndirection[vals] : &:r75_8, m75_9
|
||||
# 75| v75_11(void) = ReturnVoid :
|
||||
# 75| v75_12(void) = UnmodeledUse : mu*
|
||||
# 75| v75_13(void) = AliasedUse : ~m82_1
|
||||
# 75| v75_14(void) = ExitFunction :
|
||||
# 75| v75_12(void) = AliasedUse : ~m82_1
|
||||
# 75| v75_13(void) = ExitFunction :
|
||||
|
||||
# 84| void test05(int, int, void*)
|
||||
# 84| Block 0
|
||||
@@ -683,9 +677,8 @@ test.cpp:
|
||||
# 89| v89_1(void) = NoOp :
|
||||
# 84| v84_14(void) = ReturnIndirection[p] : &:r84_12, m84_13
|
||||
# 84| v84_15(void) = ReturnVoid :
|
||||
# 84| v84_16(void) = UnmodeledUse : mu*
|
||||
# 84| v84_17(void) = AliasedUse : m84_3
|
||||
# 84| v84_18(void) = ExitFunction :
|
||||
# 84| v84_16(void) = AliasedUse : m84_3
|
||||
# 84| v84_17(void) = ExitFunction :
|
||||
|
||||
# 88| Block 2
|
||||
# 88| r88_11(glval<int>) = VariableAddress[x] :
|
||||
@@ -743,9 +736,8 @@ test.cpp:
|
||||
# 91| r91_6(glval<int>) = VariableAddress[#return] :
|
||||
# 91| valnum = r91_6, r93_1
|
||||
# 91| v91_7(void) = ReturnValue : &:r91_6, m93_4
|
||||
# 91| v91_8(void) = UnmodeledUse : mu*
|
||||
# 91| v91_9(void) = AliasedUse : m91_3
|
||||
# 91| v91_10(void) = ExitFunction :
|
||||
# 91| v91_8(void) = AliasedUse : m91_3
|
||||
# 91| v91_9(void) = ExitFunction :
|
||||
|
||||
# 104| int inheritanceConversions(Derived*)
|
||||
# 104| Block 0
|
||||
@@ -814,9 +806,8 @@ test.cpp:
|
||||
# 104| r104_11(glval<int>) = VariableAddress[#return] :
|
||||
# 104| valnum = r104_11, r109_1
|
||||
# 104| v104_12(void) = ReturnValue : &:r104_11, m109_4
|
||||
# 104| v104_13(void) = UnmodeledUse : mu*
|
||||
# 104| v104_14(void) = AliasedUse : m104_3
|
||||
# 104| v104_15(void) = ExitFunction :
|
||||
# 104| v104_13(void) = AliasedUse : m104_3
|
||||
# 104| v104_14(void) = ExitFunction :
|
||||
|
||||
# 112| void test06()
|
||||
# 112| Block 0
|
||||
@@ -839,9 +830,8 @@ test.cpp:
|
||||
# 116| valnum = unique
|
||||
# 117| v117_1(void) = NoOp :
|
||||
# 112| v112_6(void) = ReturnVoid :
|
||||
# 112| v112_7(void) = UnmodeledUse : mu*
|
||||
# 112| v112_8(void) = AliasedUse : m112_3
|
||||
# 112| v112_9(void) = ExitFunction :
|
||||
# 112| v112_7(void) = AliasedUse : m112_3
|
||||
# 112| v112_8(void) = ExitFunction :
|
||||
|
||||
# 124| void test_read_arg_same(A*, int)
|
||||
# 124| Block 0
|
||||
@@ -919,9 +909,8 @@ test.cpp:
|
||||
# 130| v130_1(void) = NoOp :
|
||||
# 124| v124_12(void) = ReturnIndirection[pa] : &:r124_8, m128_7
|
||||
# 124| v124_13(void) = ReturnVoid :
|
||||
# 124| v124_14(void) = UnmodeledUse : mu*
|
||||
# 124| v124_15(void) = AliasedUse : m124_3
|
||||
# 124| v124_16(void) = ExitFunction :
|
||||
# 124| v124_14(void) = AliasedUse : m124_3
|
||||
# 124| v124_15(void) = ExitFunction :
|
||||
|
||||
# 135| void test_read_global_same()
|
||||
# 135| Block 0
|
||||
@@ -986,9 +975,8 @@ test.cpp:
|
||||
# 140| valnum = m140_6, r140_5
|
||||
# 141| v141_1(void) = NoOp :
|
||||
# 135| v135_6(void) = ReturnVoid :
|
||||
# 135| v135_7(void) = UnmodeledUse : mu*
|
||||
# 135| v135_8(void) = AliasedUse : ~m139_7
|
||||
# 135| v135_9(void) = ExitFunction :
|
||||
# 135| v135_7(void) = AliasedUse : ~m139_7
|
||||
# 135| v135_8(void) = ExitFunction :
|
||||
|
||||
# 143| void test_read_arg_different(A*)
|
||||
# 143| Block 0
|
||||
@@ -1062,9 +1050,8 @@ test.cpp:
|
||||
# 150| v150_1(void) = NoOp :
|
||||
# 143| v143_10(void) = ReturnIndirection[pa] : &:r143_8, m147_7
|
||||
# 143| v143_11(void) = ReturnVoid :
|
||||
# 143| v143_12(void) = UnmodeledUse : mu*
|
||||
# 143| v143_13(void) = AliasedUse : m143_3
|
||||
# 143| v143_14(void) = ExitFunction :
|
||||
# 143| v143_12(void) = AliasedUse : m143_3
|
||||
# 143| v143_13(void) = ExitFunction :
|
||||
|
||||
# 152| void test_read_global_different(int)
|
||||
# 152| Block 0
|
||||
@@ -1133,6 +1120,5 @@ test.cpp:
|
||||
# 158| valnum = m158_6, r158_5
|
||||
# 159| v159_1(void) = NoOp :
|
||||
# 152| v152_8(void) = ReturnVoid :
|
||||
# 152| v152_9(void) = UnmodeledUse : mu*
|
||||
# 152| v152_10(void) = AliasedUse : ~m156_7
|
||||
# 152| v152_11(void) = ExitFunction :
|
||||
# 152| v152_9(void) = AliasedUse : ~m156_7
|
||||
# 152| v152_10(void) = ExitFunction :
|
||||
|
||||
@@ -61,7 +61,6 @@ private newtype TOpcode =
|
||||
TReThrow() or
|
||||
TUnwind() or
|
||||
TUnmodeledDefinition() or
|
||||
TUnmodeledUse() or
|
||||
TAliasedDefinition() or
|
||||
TInitializeNonLocal() or
|
||||
TAliasedUse() or
|
||||
@@ -587,14 +586,6 @@ module Opcode {
|
||||
}
|
||||
}
|
||||
|
||||
class UnmodeledUse extends Opcode, TUnmodeledUse {
|
||||
final override string toString() { result = "UnmodeledUse" }
|
||||
|
||||
final override predicate hasOperandInternal(OperandTag tag) {
|
||||
tag instanceof UnmodeledUseOperandTag
|
||||
}
|
||||
}
|
||||
|
||||
class AliasedDefinition extends Opcode, TAliasedDefinition {
|
||||
final override string toString() { result = "AliasedDefinition" }
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@ private newtype TOperandTag =
|
||||
TLeftOperand() or
|
||||
TRightOperand() or
|
||||
TConditionOperand() or
|
||||
TUnmodeledUseOperand() or
|
||||
TCallTargetOperand() or
|
||||
TThisArgumentOperand() or
|
||||
TPositionalArgumentOperand(int argIndex) { Language::hasPositionalArgIndex(argIndex) } or
|
||||
@@ -165,18 +164,6 @@ class ConditionOperandTag extends RegisterOperandTag, TConditionOperand {
|
||||
|
||||
ConditionOperandTag conditionOperand() { result = TConditionOperand() }
|
||||
|
||||
/**
|
||||
* An operand of the special `UnmodeledUse` instruction, representing a value
|
||||
* whose set of uses is unknown.
|
||||
*/
|
||||
class UnmodeledUseOperandTag extends MemoryOperandTag, TUnmodeledUseOperand {
|
||||
final override string toString() { result = "UnmodeledUse" }
|
||||
|
||||
final override int getSortOrder() { result = 9 }
|
||||
}
|
||||
|
||||
UnmodeledUseOperandTag unmodeledUseOperand() { result = TUnmodeledUseOperand() }
|
||||
|
||||
/**
|
||||
* The operand representing the target function of an `Call` instruction.
|
||||
*/
|
||||
|
||||
@@ -31,10 +31,14 @@ class IRBlockBase extends TIRBlock {
|
||||
config.shouldEvaluateDebugStringsForFunction(this.getEnclosingFunction())
|
||||
) and
|
||||
this =
|
||||
rank[result + 1](IRBlock funcBlock |
|
||||
funcBlock.getEnclosingFunction() = getEnclosingFunction()
|
||||
rank[result + 1](IRBlock funcBlock, int sortOverride |
|
||||
funcBlock.getEnclosingFunction() = getEnclosingFunction() and
|
||||
// Ensure that the block containing `EnterFunction` always comes first.
|
||||
if funcBlock.getFirstInstruction() instanceof EnterFunctionInstruction
|
||||
then sortOverride = 0
|
||||
else sortOverride = 1
|
||||
|
|
||||
funcBlock order by funcBlock.getUniqueId()
|
||||
funcBlock order by sortOverride, funcBlock.getUniqueId()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,6 @@ module InstructionConsistency {
|
||||
operand.getOperandTag() = tag
|
||||
) and
|
||||
operandCount > 1 and
|
||||
not tag instanceof UnmodeledUseOperandTag and
|
||||
message =
|
||||
"Instruction has " + operandCount + " operands with tag '" + tag.toString() + "'" +
|
||||
" in function '$@'." and
|
||||
@@ -158,7 +157,6 @@ module InstructionConsistency {
|
||||
) {
|
||||
exists(MemoryOperand operand, Instruction def |
|
||||
operand = instr.getAnOperand() and
|
||||
not operand instanceof UnmodeledUseOperand and
|
||||
def = operand.getAnyDef() and
|
||||
not def.isResultModeled() and
|
||||
not def instanceof UnmodeledDefinitionInstruction and
|
||||
@@ -259,7 +257,6 @@ module InstructionConsistency {
|
||||
Operand useOperand, string message, IRFunction func, string funcText
|
||||
) {
|
||||
exists(IRBlock useBlock, int useIndex, Instruction defInstr, IRBlock defBlock, int defIndex |
|
||||
not useOperand.getUse() instanceof UnmodeledUseInstruction and
|
||||
not defInstr instanceof UnmodeledDefinitionInstruction and
|
||||
pointOfEvaluation(useOperand, useBlock, useIndex) and
|
||||
defInstr = useOperand.getAnyDef() and
|
||||
|
||||
@@ -45,11 +45,6 @@ class IRFunction extends TIRFunction {
|
||||
result.getEnclosingIRFunction() = this
|
||||
}
|
||||
|
||||
pragma[noinline]
|
||||
final UnmodeledUseInstruction getUnmodeledUseInstruction() {
|
||||
result.getEnclosingIRFunction() = this
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the single return instruction for this function.
|
||||
*/
|
||||
|
||||
@@ -320,8 +320,7 @@ class Instruction extends Construction::TInstruction {
|
||||
/**
|
||||
* Holds if the result of this instruction is precisely modeled in SSA. Always
|
||||
* holds for a register result. For a memory result, a modeled result is
|
||||
* connected to its actual uses. An unmodeled result is connected to the
|
||||
* `UnmodeledUse` instruction.
|
||||
* connected to its actual uses. An unmodeled result has no uses.
|
||||
*
|
||||
* For example:
|
||||
* ```
|
||||
@@ -1248,12 +1247,6 @@ class AliasedUseInstruction extends Instruction {
|
||||
AliasedUseInstruction() { getOpcode() instanceof Opcode::AliasedUse }
|
||||
}
|
||||
|
||||
class UnmodeledUseInstruction extends Instruction {
|
||||
UnmodeledUseInstruction() { getOpcode() instanceof Opcode::UnmodeledUse }
|
||||
|
||||
override string getOperandsString() { result = "mu*" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An instruction representing the choice of one of multiple input values based on control flow.
|
||||
*
|
||||
|
||||
@@ -19,11 +19,7 @@ private newtype TOperand =
|
||||
) {
|
||||
defInstr = Construction::getMemoryOperandDefinition(useInstr, tag, overlap) and
|
||||
not Construction::isInCycle(useInstr) and
|
||||
(
|
||||
strictcount(Construction::getMemoryOperandDefinition(useInstr, tag, _)) = 1
|
||||
or
|
||||
tag instanceof UnmodeledUseOperandTag
|
||||
)
|
||||
strictcount(Construction::getMemoryOperandDefinition(useInstr, tag, _)) = 1
|
||||
} or
|
||||
TPhiOperand(
|
||||
PhiInstruction useInstr, Instruction defInstr, IRBlock predecessorBlock, Overlap overlap
|
||||
@@ -327,16 +323,6 @@ class ConditionOperand extends RegisterOperand {
|
||||
override string toString() { result = "Condition" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An operand of the special `UnmodeledUse` instruction, representing a value
|
||||
* whose set of uses is unknown.
|
||||
*/
|
||||
class UnmodeledUseOperand extends NonPhiMemoryOperand {
|
||||
override UnmodeledUseOperandTag tag;
|
||||
|
||||
override string toString() { result = "UnmodeledUse" }
|
||||
}
|
||||
|
||||
/**
|
||||
* The operand representing the target function of an `Call` instruction.
|
||||
*/
|
||||
|
||||
@@ -30,7 +30,6 @@ newtype TInstructionTag =
|
||||
ReturnTag() or
|
||||
ExitFunctionTag() or
|
||||
UnmodeledDefinitionTag() or
|
||||
UnmodeledUseTag() or
|
||||
AliasedDefinitionTag() or
|
||||
AliasedUseTag() or
|
||||
SwitchBranchTag() or
|
||||
@@ -128,8 +127,6 @@ string getInstructionTagId(TInstructionTag tag) {
|
||||
or
|
||||
tag = UnmodeledDefinitionTag() and result = "UnmodeledDef"
|
||||
or
|
||||
tag = UnmodeledUseTag() and result = "UnmodeledUse"
|
||||
or
|
||||
tag = AliasedDefinitionTag() and result = "AliasedDef"
|
||||
or
|
||||
tag = AliasedUseTag() and result = "AliasedUse"
|
||||
|
||||
@@ -93,13 +93,10 @@ class TranslatedFunction extends TranslatedElement, TTranslatedFunction {
|
||||
result = this.getInstruction(ReturnTag())
|
||||
or
|
||||
tag = ReturnTag() and
|
||||
result = this.getInstruction(UnmodeledUseTag())
|
||||
result = this.getInstruction(AliasedUseTag())
|
||||
or
|
||||
tag = UnwindTag() and
|
||||
result = this.getInstruction(UnmodeledUseTag())
|
||||
or
|
||||
tag = UnmodeledUseTag() and
|
||||
result = getInstruction(AliasedUseTag())
|
||||
result = this.getInstruction(AliasedUseTag())
|
||||
or
|
||||
tag = AliasedUseTag() and
|
||||
result = this.getInstruction(ExitFunctionTag())
|
||||
@@ -171,10 +168,6 @@ class TranslatedFunction extends TranslatedElement, TTranslatedFunction {
|
||||
exists(ThrowStmt throw | throw.getEnclosingCallable() = callable)
|
||||
)
|
||||
or
|
||||
tag = UnmodeledUseTag() and
|
||||
opcode instanceof Opcode::UnmodeledUse and
|
||||
resultType = getVoidType()
|
||||
or
|
||||
tag = AliasedUseTag() and
|
||||
opcode instanceof Opcode::AliasedUse and
|
||||
resultType = getVoidType()
|
||||
@@ -190,15 +183,6 @@ class TranslatedFunction extends TranslatedElement, TTranslatedFunction {
|
||||
}
|
||||
|
||||
final override Instruction getInstructionOperand(InstructionTag tag, OperandTag operandTag) {
|
||||
tag = UnmodeledUseTag() and
|
||||
operandTag instanceof UnmodeledUseOperandTag and
|
||||
result.getEnclosingFunction() = callable and
|
||||
result.hasMemoryResult()
|
||||
or
|
||||
tag = UnmodeledUseTag() and
|
||||
operandTag instanceof UnmodeledUseOperandTag and
|
||||
result = getUnmodeledDefinitionInstruction()
|
||||
or
|
||||
tag = AliasedUseTag() and
|
||||
operandTag instanceof SideEffectOperandTag and
|
||||
result = getUnmodeledDefinitionInstruction()
|
||||
|
||||
@@ -31,10 +31,14 @@ class IRBlockBase extends TIRBlock {
|
||||
config.shouldEvaluateDebugStringsForFunction(this.getEnclosingFunction())
|
||||
) and
|
||||
this =
|
||||
rank[result + 1](IRBlock funcBlock |
|
||||
funcBlock.getEnclosingFunction() = getEnclosingFunction()
|
||||
rank[result + 1](IRBlock funcBlock, int sortOverride |
|
||||
funcBlock.getEnclosingFunction() = getEnclosingFunction() and
|
||||
// Ensure that the block containing `EnterFunction` always comes first.
|
||||
if funcBlock.getFirstInstruction() instanceof EnterFunctionInstruction
|
||||
then sortOverride = 0
|
||||
else sortOverride = 1
|
||||
|
|
||||
funcBlock order by funcBlock.getUniqueId()
|
||||
funcBlock order by sortOverride, funcBlock.getUniqueId()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,6 @@ module InstructionConsistency {
|
||||
operand.getOperandTag() = tag
|
||||
) and
|
||||
operandCount > 1 and
|
||||
not tag instanceof UnmodeledUseOperandTag and
|
||||
message =
|
||||
"Instruction has " + operandCount + " operands with tag '" + tag.toString() + "'" +
|
||||
" in function '$@'." and
|
||||
@@ -158,7 +157,6 @@ module InstructionConsistency {
|
||||
) {
|
||||
exists(MemoryOperand operand, Instruction def |
|
||||
operand = instr.getAnOperand() and
|
||||
not operand instanceof UnmodeledUseOperand and
|
||||
def = operand.getAnyDef() and
|
||||
not def.isResultModeled() and
|
||||
not def instanceof UnmodeledDefinitionInstruction and
|
||||
@@ -259,7 +257,6 @@ module InstructionConsistency {
|
||||
Operand useOperand, string message, IRFunction func, string funcText
|
||||
) {
|
||||
exists(IRBlock useBlock, int useIndex, Instruction defInstr, IRBlock defBlock, int defIndex |
|
||||
not useOperand.getUse() instanceof UnmodeledUseInstruction and
|
||||
not defInstr instanceof UnmodeledDefinitionInstruction and
|
||||
pointOfEvaluation(useOperand, useBlock, useIndex) and
|
||||
defInstr = useOperand.getAnyDef() and
|
||||
|
||||
@@ -45,11 +45,6 @@ class IRFunction extends TIRFunction {
|
||||
result.getEnclosingIRFunction() = this
|
||||
}
|
||||
|
||||
pragma[noinline]
|
||||
final UnmodeledUseInstruction getUnmodeledUseInstruction() {
|
||||
result.getEnclosingIRFunction() = this
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the single return instruction for this function.
|
||||
*/
|
||||
|
||||
@@ -320,8 +320,7 @@ class Instruction extends Construction::TInstruction {
|
||||
/**
|
||||
* Holds if the result of this instruction is precisely modeled in SSA. Always
|
||||
* holds for a register result. For a memory result, a modeled result is
|
||||
* connected to its actual uses. An unmodeled result is connected to the
|
||||
* `UnmodeledUse` instruction.
|
||||
* connected to its actual uses. An unmodeled result has no uses.
|
||||
*
|
||||
* For example:
|
||||
* ```
|
||||
@@ -1248,12 +1247,6 @@ class AliasedUseInstruction extends Instruction {
|
||||
AliasedUseInstruction() { getOpcode() instanceof Opcode::AliasedUse }
|
||||
}
|
||||
|
||||
class UnmodeledUseInstruction extends Instruction {
|
||||
UnmodeledUseInstruction() { getOpcode() instanceof Opcode::UnmodeledUse }
|
||||
|
||||
override string getOperandsString() { result = "mu*" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An instruction representing the choice of one of multiple input values based on control flow.
|
||||
*
|
||||
|
||||
@@ -19,11 +19,7 @@ private newtype TOperand =
|
||||
) {
|
||||
defInstr = Construction::getMemoryOperandDefinition(useInstr, tag, overlap) and
|
||||
not Construction::isInCycle(useInstr) and
|
||||
(
|
||||
strictcount(Construction::getMemoryOperandDefinition(useInstr, tag, _)) = 1
|
||||
or
|
||||
tag instanceof UnmodeledUseOperandTag
|
||||
)
|
||||
strictcount(Construction::getMemoryOperandDefinition(useInstr, tag, _)) = 1
|
||||
} or
|
||||
TPhiOperand(
|
||||
PhiInstruction useInstr, Instruction defInstr, IRBlock predecessorBlock, Overlap overlap
|
||||
@@ -327,16 +323,6 @@ class ConditionOperand extends RegisterOperand {
|
||||
override string toString() { result = "Condition" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An operand of the special `UnmodeledUse` instruction, representing a value
|
||||
* whose set of uses is unknown.
|
||||
*/
|
||||
class UnmodeledUseOperand extends NonPhiMemoryOperand {
|
||||
override UnmodeledUseOperandTag tag;
|
||||
|
||||
override string toString() { result = "UnmodeledUse" }
|
||||
}
|
||||
|
||||
/**
|
||||
* The operand representing the target function of an `Call` instruction.
|
||||
*/
|
||||
|
||||
@@ -247,6 +247,10 @@ private predicate resultMayReachReturn(Instruction instr) { operandMayReachRetur
|
||||
private predicate resultEscapesNonReturn(Instruction instr) {
|
||||
// The result escapes if it has at least one use that escapes.
|
||||
operandEscapesNonReturn(instr.getAUse())
|
||||
or
|
||||
// The result also escapes if it is not modeled in SSA, because we do not know where it might be
|
||||
// used.
|
||||
not instr.isResultModeled()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -128,23 +128,10 @@ private module Cached {
|
||||
oldOperand = oldInstruction.getAnOperand() and
|
||||
tag = oldOperand.getOperandTag() and
|
||||
(
|
||||
(
|
||||
if exists(Alias::getOperandMemoryLocation(oldOperand))
|
||||
then hasMemoryOperandDefinition(oldInstruction, oldOperand, overlap, result)
|
||||
else (
|
||||
result = instruction.getEnclosingIRFunction().getUnmodeledDefinitionInstruction() and
|
||||
overlap instanceof MustTotallyOverlap
|
||||
)
|
||||
)
|
||||
or
|
||||
// Connect any definitions that are not being modeled in SSA to the
|
||||
// `UnmodeledUse` instruction.
|
||||
exists(OldInstruction oldDefinition |
|
||||
instruction instanceof UnmodeledUseInstruction and
|
||||
tag instanceof UnmodeledUseOperandTag and
|
||||
oldDefinition = oldOperand.getAnyDef() and
|
||||
not exists(Alias::getResultMemoryLocation(oldDefinition)) and
|
||||
result = getNewInstruction(oldDefinition) and
|
||||
if exists(Alias::getOperandMemoryLocation(oldOperand))
|
||||
then hasMemoryOperandDefinition(oldInstruction, oldOperand, overlap, result)
|
||||
else (
|
||||
result = instruction.getEnclosingIRFunction().getUnmodeledDefinitionInstruction() and
|
||||
overlap instanceof MustTotallyOverlap
|
||||
)
|
||||
)
|
||||
@@ -154,13 +141,6 @@ private module Cached {
|
||||
tag instanceof ChiPartialOperandTag and
|
||||
overlap instanceof MustExactlyOverlap
|
||||
or
|
||||
exists(IRFunction f |
|
||||
tag instanceof UnmodeledUseOperandTag and
|
||||
result = f.getUnmodeledDefinitionInstruction() and
|
||||
instruction = f.getUnmodeledUseInstruction() and
|
||||
overlap instanceof MustTotallyOverlap
|
||||
)
|
||||
or
|
||||
tag instanceof ChiTotalOperandTag and
|
||||
result = getChiInstructionTotalOperand(instruction) and
|
||||
overlap instanceof MustExactlyOverlap
|
||||
|
||||
@@ -52,9 +52,8 @@ array.cs:
|
||||
# 10| r10_6(Int32[]) = PointerAdd[4] : r10_3, r10_5
|
||||
# 10| mu10_7(Int32) = Store : &:r10_6, r10_1
|
||||
# 2| v2_5(Void) = ReturnVoid :
|
||||
# 2| v2_6(Void) = UnmodeledUse : mu*
|
||||
# 2| v2_7(Void) = AliasedUse : ~mu2_3
|
||||
# 2| v2_8(Void) = ExitFunction :
|
||||
# 2| v2_6(Void) = AliasedUse : ~mu2_3
|
||||
# 2| v2_7(Void) = ExitFunction :
|
||||
|
||||
# 13| System.Void ArrayTest.twod_and_init_acc()
|
||||
# 13| Block 0
|
||||
@@ -144,9 +143,8 @@ array.cs:
|
||||
# 20| r20_8(Int32[]) = PointerAdd[4] : r20_6, r20_7
|
||||
# 20| mu20_9(Int32) = Store : &:r20_8, r20_1
|
||||
# 13| v13_5(Void) = ReturnVoid :
|
||||
# 13| v13_6(Void) = UnmodeledUse : mu*
|
||||
# 13| v13_7(Void) = AliasedUse : ~mu13_3
|
||||
# 13| v13_8(Void) = ExitFunction :
|
||||
# 13| v13_6(Void) = AliasedUse : ~mu13_3
|
||||
# 13| v13_7(Void) = ExitFunction :
|
||||
|
||||
assignop.cs:
|
||||
# 4| System.Void AssignOp.Main()
|
||||
@@ -216,9 +214,8 @@ assignop.cs:
|
||||
# 17| r17_4(Int32) = BitOr : r17_3, r17_1
|
||||
# 17| mu17_5(Int32) = Store : &:r17_2, r17_4
|
||||
# 4| v4_4(Void) = ReturnVoid :
|
||||
# 4| v4_5(Void) = UnmodeledUse : mu*
|
||||
# 4| v4_6(Void) = AliasedUse : ~mu4_3
|
||||
# 4| v4_7(Void) = ExitFunction :
|
||||
# 4| v4_5(Void) = AliasedUse : ~mu4_3
|
||||
# 4| v4_6(Void) = ExitFunction :
|
||||
|
||||
casts.cs:
|
||||
# 11| System.Void Casts.Main()
|
||||
@@ -243,9 +240,8 @@ casts.cs:
|
||||
# 15| r15_4(Casts_B) = CheckedConvertOrNull : r15_3
|
||||
# 15| mu15_5(Casts_B) = Store : &:r15_1, r15_4
|
||||
# 11| v11_4(Void) = ReturnVoid :
|
||||
# 11| v11_5(Void) = UnmodeledUse : mu*
|
||||
# 11| v11_6(Void) = AliasedUse : ~mu11_3
|
||||
# 11| v11_7(Void) = ExitFunction :
|
||||
# 11| v11_5(Void) = AliasedUse : ~mu11_3
|
||||
# 11| v11_6(Void) = ExitFunction :
|
||||
|
||||
collections.cs:
|
||||
# 11| System.Void Collections.Main()
|
||||
@@ -288,9 +284,8 @@ collections.cs:
|
||||
# 16| mu16_14(<unknown>) = ^CallSideEffect : ~mu11_3
|
||||
# 13| mu13_6(Dictionary<Int32,MyClass>) = Store : &:r13_1, r13_2
|
||||
# 11| v11_4(Void) = ReturnVoid :
|
||||
# 11| v11_5(Void) = UnmodeledUse : mu*
|
||||
# 11| v11_6(Void) = AliasedUse : ~mu11_3
|
||||
# 11| v11_7(Void) = ExitFunction :
|
||||
# 11| v11_5(Void) = AliasedUse : ~mu11_3
|
||||
# 11| v11_6(Void) = ExitFunction :
|
||||
|
||||
constructor_init.cs:
|
||||
# 5| System.Void BaseClass..ctor()
|
||||
@@ -301,9 +296,8 @@ constructor_init.cs:
|
||||
# 5| r5_4(glval<BaseClass>) = InitializeThis :
|
||||
# 6| v6_1(Void) = NoOp :
|
||||
# 5| v5_5(Void) = ReturnVoid :
|
||||
# 5| v5_6(Void) = UnmodeledUse : mu*
|
||||
# 5| v5_7(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_8(Void) = ExitFunction :
|
||||
# 5| v5_6(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_7(Void) = ExitFunction :
|
||||
|
||||
# 9| System.Void BaseClass..ctor(System.Int32)
|
||||
# 9| Block 0
|
||||
@@ -319,9 +313,8 @@ constructor_init.cs:
|
||||
# 11| r11_4(glval<Int32>) = FieldAddress[num] : r11_3
|
||||
# 11| mu11_5(Int32) = Store : &:r11_4, r11_2
|
||||
# 9| v9_7(Void) = ReturnVoid :
|
||||
# 9| v9_8(Void) = UnmodeledUse : mu*
|
||||
# 9| v9_9(Void) = AliasedUse : ~mu9_3
|
||||
# 9| v9_10(Void) = ExitFunction :
|
||||
# 9| v9_8(Void) = AliasedUse : ~mu9_3
|
||||
# 9| v9_9(Void) = ExitFunction :
|
||||
|
||||
# 17| System.Void DerivedClass..ctor()
|
||||
# 17| Block 0
|
||||
@@ -335,9 +328,8 @@ constructor_init.cs:
|
||||
# 17| mu17_8(<unknown>) = ^CallSideEffect : ~mu17_3
|
||||
# 18| v18_1(Void) = NoOp :
|
||||
# 17| v17_9(Void) = ReturnVoid :
|
||||
# 17| v17_10(Void) = UnmodeledUse : mu*
|
||||
# 17| v17_11(Void) = AliasedUse : ~mu17_3
|
||||
# 17| v17_12(Void) = ExitFunction :
|
||||
# 17| v17_10(Void) = AliasedUse : ~mu17_3
|
||||
# 17| v17_11(Void) = ExitFunction :
|
||||
|
||||
# 21| System.Void DerivedClass..ctor(System.Int32)
|
||||
# 21| Block 0
|
||||
@@ -355,9 +347,8 @@ constructor_init.cs:
|
||||
# 21| mu21_12(<unknown>) = ^CallSideEffect : ~mu21_3
|
||||
# 22| v22_1(Void) = NoOp :
|
||||
# 21| v21_13(Void) = ReturnVoid :
|
||||
# 21| v21_14(Void) = UnmodeledUse : mu*
|
||||
# 21| v21_15(Void) = AliasedUse : ~mu21_3
|
||||
# 21| v21_16(Void) = ExitFunction :
|
||||
# 21| v21_14(Void) = AliasedUse : ~mu21_3
|
||||
# 21| v21_15(Void) = ExitFunction :
|
||||
|
||||
# 25| System.Void DerivedClass..ctor(System.Int32,System.Int32)
|
||||
# 25| Block 0
|
||||
@@ -376,9 +367,8 @@ constructor_init.cs:
|
||||
# 25| mu25_13(<unknown>) = ^CallSideEffect : ~mu25_3
|
||||
# 26| v26_1(Void) = NoOp :
|
||||
# 25| v25_14(Void) = ReturnVoid :
|
||||
# 25| v25_15(Void) = UnmodeledUse : mu*
|
||||
# 25| v25_16(Void) = AliasedUse : ~mu25_3
|
||||
# 25| v25_17(Void) = ExitFunction :
|
||||
# 25| v25_15(Void) = AliasedUse : ~mu25_3
|
||||
# 25| v25_16(Void) = ExitFunction :
|
||||
|
||||
# 29| System.Void DerivedClass.Main()
|
||||
# 29| Block 0
|
||||
@@ -407,9 +397,8 @@ constructor_init.cs:
|
||||
# 33| mu33_7(<unknown>) = ^CallSideEffect : ~mu29_3
|
||||
# 33| mu33_8(DerivedClass) = Store : &:r33_1, r33_2
|
||||
# 29| v29_4(Void) = ReturnVoid :
|
||||
# 29| v29_5(Void) = UnmodeledUse : mu*
|
||||
# 29| v29_6(Void) = AliasedUse : ~mu29_3
|
||||
# 29| v29_7(Void) = ExitFunction :
|
||||
# 29| v29_5(Void) = AliasedUse : ~mu29_3
|
||||
# 29| v29_6(Void) = ExitFunction :
|
||||
|
||||
crement.cs:
|
||||
# 3| System.Void CrementOpsTest.Main()
|
||||
@@ -449,9 +438,8 @@ crement.cs:
|
||||
# 9| r9_6(glval<Int32>) = VariableAddress[x] :
|
||||
# 9| mu9_7(Int32) = Store : &:r9_6, r9_2
|
||||
# 3| v3_4(Void) = ReturnVoid :
|
||||
# 3| v3_5(Void) = UnmodeledUse : mu*
|
||||
# 3| v3_6(Void) = AliasedUse : ~mu3_3
|
||||
# 3| v3_7(Void) = ExitFunction :
|
||||
# 3| v3_5(Void) = AliasedUse : ~mu3_3
|
||||
# 3| v3_6(Void) = ExitFunction :
|
||||
|
||||
delegates.cs:
|
||||
# 6| System.Int32 Delegates.returns(System.Int32)
|
||||
@@ -467,9 +455,8 @@ delegates.cs:
|
||||
# 8| mu8_4(Int32) = Store : &:r8_1, r8_3
|
||||
# 6| r6_6(glval<Int32>) = VariableAddress[#return] :
|
||||
# 6| v6_7(Void) = ReturnValue : &:r6_6, ~mu6_3
|
||||
# 6| v6_8(Void) = UnmodeledUse : mu*
|
||||
# 6| v6_9(Void) = AliasedUse : ~mu6_3
|
||||
# 6| v6_10(Void) = ExitFunction :
|
||||
# 6| v6_8(Void) = AliasedUse : ~mu6_3
|
||||
# 6| v6_9(Void) = ExitFunction :
|
||||
|
||||
# 11| System.Void Delegates.Main()
|
||||
# 11| Block 0
|
||||
@@ -490,9 +477,8 @@ delegates.cs:
|
||||
# 13| v13_5(Void) = Call : func:r13_3, this:r13_2, 0:r13_4
|
||||
# 13| mu13_6(<unknown>) = ^CallSideEffect : ~mu11_3
|
||||
# 11| v11_4(Void) = ReturnVoid :
|
||||
# 11| v11_5(Void) = UnmodeledUse : mu*
|
||||
# 11| v11_6(Void) = AliasedUse : ~mu11_3
|
||||
# 11| v11_7(Void) = ExitFunction :
|
||||
# 11| v11_5(Void) = AliasedUse : ~mu11_3
|
||||
# 11| v11_6(Void) = ExitFunction :
|
||||
|
||||
events.cs:
|
||||
# 8| System.Void Events..ctor()
|
||||
@@ -510,9 +496,8 @@ events.cs:
|
||||
# 10| r10_7(glval<MyDel>) = FieldAddress[Inst] : r10_6
|
||||
# 10| mu10_8(MyDel) = Store : &:r10_7, r10_1
|
||||
# 8| v8_5(Void) = ReturnVoid :
|
||||
# 8| v8_6(Void) = UnmodeledUse : mu*
|
||||
# 8| v8_7(Void) = AliasedUse : ~mu8_3
|
||||
# 8| v8_8(Void) = ExitFunction :
|
||||
# 8| v8_6(Void) = AliasedUse : ~mu8_3
|
||||
# 8| v8_7(Void) = ExitFunction :
|
||||
|
||||
# 13| System.Void Events.AddEvent()
|
||||
# 13| Block 0
|
||||
@@ -528,9 +513,8 @@ events.cs:
|
||||
# 15| v15_6(Void) = Call : func:r15_2, this:r15_1, 0:r15_5
|
||||
# 15| mu15_7(<unknown>) = ^CallSideEffect : ~mu13_3
|
||||
# 13| v13_5(Void) = ReturnVoid :
|
||||
# 13| v13_6(Void) = UnmodeledUse : mu*
|
||||
# 13| v13_7(Void) = AliasedUse : ~mu13_3
|
||||
# 13| v13_8(Void) = ExitFunction :
|
||||
# 13| v13_6(Void) = AliasedUse : ~mu13_3
|
||||
# 13| v13_7(Void) = ExitFunction :
|
||||
|
||||
# 18| System.Void Events.RemoveEvent()
|
||||
# 18| Block 0
|
||||
@@ -546,9 +530,8 @@ events.cs:
|
||||
# 20| v20_6(Void) = Call : func:r20_2, this:r20_1, 0:r20_5
|
||||
# 20| mu20_7(<unknown>) = ^CallSideEffect : ~mu18_3
|
||||
# 18| v18_5(Void) = ReturnVoid :
|
||||
# 18| v18_6(Void) = UnmodeledUse : mu*
|
||||
# 18| v18_7(Void) = AliasedUse : ~mu18_3
|
||||
# 18| v18_8(Void) = ExitFunction :
|
||||
# 18| v18_6(Void) = AliasedUse : ~mu18_3
|
||||
# 18| v18_7(Void) = ExitFunction :
|
||||
|
||||
# 23| System.String Events.Fun(System.String)
|
||||
# 23| Block 0
|
||||
@@ -564,9 +547,8 @@ events.cs:
|
||||
# 25| mu25_4(String) = Store : &:r25_1, r25_3
|
||||
# 23| r23_7(glval<String>) = VariableAddress[#return] :
|
||||
# 23| v23_8(Void) = ReturnValue : &:r23_7, ~mu23_3
|
||||
# 23| v23_9(Void) = UnmodeledUse : mu*
|
||||
# 23| v23_10(Void) = AliasedUse : ~mu23_3
|
||||
# 23| v23_11(Void) = ExitFunction :
|
||||
# 23| v23_9(Void) = AliasedUse : ~mu23_3
|
||||
# 23| v23_10(Void) = ExitFunction :
|
||||
|
||||
# 28| System.Void Events.Main(System.String[])
|
||||
# 28| Block 0
|
||||
@@ -600,9 +582,8 @@ events.cs:
|
||||
# 33| v33_4(Void) = Call : func:r33_3, this:r33_2
|
||||
# 33| mu33_5(<unknown>) = ^CallSideEffect : ~mu28_3
|
||||
# 28| v28_6(Void) = ReturnVoid :
|
||||
# 28| v28_7(Void) = UnmodeledUse : mu*
|
||||
# 28| v28_8(Void) = AliasedUse : ~mu28_3
|
||||
# 28| v28_9(Void) = ExitFunction :
|
||||
# 28| v28_7(Void) = AliasedUse : ~mu28_3
|
||||
# 28| v28_8(Void) = ExitFunction :
|
||||
|
||||
foreach.cs:
|
||||
# 4| System.Void ForEach.Main()
|
||||
@@ -680,9 +661,8 @@ foreach.cs:
|
||||
# 7| v7_24(Void) = Call : func:r7_23, this:r7_22
|
||||
# 7| mu7_25(<unknown>) = ^CallSideEffect : ~mu4_3
|
||||
# 4| v4_4(Void) = ReturnVoid :
|
||||
# 4| v4_5(Void) = UnmodeledUse : mu*
|
||||
# 4| v4_6(Void) = AliasedUse : ~mu4_3
|
||||
# 4| v4_7(Void) = ExitFunction :
|
||||
# 4| v4_5(Void) = AliasedUse : ~mu4_3
|
||||
# 4| v4_6(Void) = ExitFunction :
|
||||
|
||||
func_with_param_call.cs:
|
||||
# 5| System.Int32 test_call_with_param.f(System.Int32,System.Int32)
|
||||
@@ -703,9 +683,8 @@ func_with_param_call.cs:
|
||||
# 7| mu7_7(Int32) = Store : &:r7_1, r7_6
|
||||
# 5| r5_8(glval<Int32>) = VariableAddress[#return] :
|
||||
# 5| v5_9(Void) = ReturnValue : &:r5_8, ~mu5_3
|
||||
# 5| v5_10(Void) = UnmodeledUse : mu*
|
||||
# 5| v5_11(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_12(Void) = ExitFunction :
|
||||
# 5| v5_10(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_11(Void) = ExitFunction :
|
||||
|
||||
# 10| System.Int32 test_call_with_param.g()
|
||||
# 10| Block 0
|
||||
@@ -721,9 +700,8 @@ func_with_param_call.cs:
|
||||
# 12| mu12_7(Int32) = Store : &:r12_1, r12_5
|
||||
# 10| r10_4(glval<Int32>) = VariableAddress[#return] :
|
||||
# 10| v10_5(Void) = ReturnValue : &:r10_4, ~mu10_3
|
||||
# 10| v10_6(Void) = UnmodeledUse : mu*
|
||||
# 10| v10_7(Void) = AliasedUse : ~mu10_3
|
||||
# 10| v10_8(Void) = ExitFunction :
|
||||
# 10| v10_6(Void) = AliasedUse : ~mu10_3
|
||||
# 10| v10_7(Void) = ExitFunction :
|
||||
|
||||
indexers.cs:
|
||||
# 8| System.String Indexers.MyClass.get_Item(System.Int32)
|
||||
@@ -745,9 +723,8 @@ indexers.cs:
|
||||
# 10| mu10_9(String) = Store : &:r10_1, r10_8
|
||||
# 8| r8_5(glval<String>) = VariableAddress[#return] :
|
||||
# 8| v8_6(Void) = ReturnValue : &:r8_5, ~mu8_3
|
||||
# 8| v8_7(Void) = UnmodeledUse : mu*
|
||||
# 8| v8_8(Void) = AliasedUse : ~mu8_3
|
||||
# 8| v8_9(Void) = ExitFunction :
|
||||
# 8| v8_7(Void) = AliasedUse : ~mu8_3
|
||||
# 8| v8_8(Void) = ExitFunction :
|
||||
|
||||
# 12| System.Void Indexers.MyClass.set_Item(System.Int32,System.String)
|
||||
# 12| Block 0
|
||||
@@ -769,9 +746,8 @@ indexers.cs:
|
||||
# 14| r14_8(String[]) = PointerAdd[8] : r14_5, r14_7
|
||||
# 14| mu14_9(String) = Store : &:r14_8, r14_2
|
||||
# 12| v12_7(Void) = ReturnVoid :
|
||||
# 12| v12_8(Void) = UnmodeledUse : mu*
|
||||
# 12| v12_9(Void) = AliasedUse : ~mu12_3
|
||||
# 12| v12_10(Void) = ExitFunction :
|
||||
# 12| v12_8(Void) = AliasedUse : ~mu12_3
|
||||
# 12| v12_9(Void) = ExitFunction :
|
||||
|
||||
# 19| System.Void Indexers.Main()
|
||||
# 19| Block 0
|
||||
@@ -811,9 +787,8 @@ indexers.cs:
|
||||
# 24| v24_11(Void) = Call : func:r24_3, this:r24_2, 0:r24_4, 1:r24_9
|
||||
# 24| mu24_12(<unknown>) = ^CallSideEffect : ~mu19_3
|
||||
# 19| v19_4(Void) = ReturnVoid :
|
||||
# 19| v19_5(Void) = UnmodeledUse : mu*
|
||||
# 19| v19_6(Void) = AliasedUse : ~mu19_3
|
||||
# 19| v19_7(Void) = ExitFunction :
|
||||
# 19| v19_5(Void) = AliasedUse : ~mu19_3
|
||||
# 19| v19_6(Void) = ExitFunction :
|
||||
|
||||
inheritance_polymorphism.cs:
|
||||
# 3| System.Int32 A.function()
|
||||
@@ -827,9 +802,8 @@ inheritance_polymorphism.cs:
|
||||
# 5| mu5_3(Int32) = Store : &:r5_1, r5_2
|
||||
# 3| r3_5(glval<Int32>) = VariableAddress[#return] :
|
||||
# 3| v3_6(Void) = ReturnValue : &:r3_5, ~mu3_3
|
||||
# 3| v3_7(Void) = UnmodeledUse : mu*
|
||||
# 3| v3_8(Void) = AliasedUse : ~mu3_3
|
||||
# 3| v3_9(Void) = ExitFunction :
|
||||
# 3| v3_7(Void) = AliasedUse : ~mu3_3
|
||||
# 3| v3_8(Void) = ExitFunction :
|
||||
|
||||
# 15| System.Int32 C.function()
|
||||
# 15| Block 0
|
||||
@@ -842,9 +816,8 @@ inheritance_polymorphism.cs:
|
||||
# 17| mu17_3(Int32) = Store : &:r17_1, r17_2
|
||||
# 15| r15_5(glval<Int32>) = VariableAddress[#return] :
|
||||
# 15| v15_6(Void) = ReturnValue : &:r15_5, ~mu15_3
|
||||
# 15| v15_7(Void) = UnmodeledUse : mu*
|
||||
# 15| v15_8(Void) = AliasedUse : ~mu15_3
|
||||
# 15| v15_9(Void) = ExitFunction :
|
||||
# 15| v15_7(Void) = AliasedUse : ~mu15_3
|
||||
# 15| v15_8(Void) = ExitFunction :
|
||||
|
||||
# 23| System.Void Program.Main()
|
||||
# 23| Block 0
|
||||
@@ -887,9 +860,8 @@ inheritance_polymorphism.cs:
|
||||
# 34| r34_4(Int32) = Call : func:r34_3, this:r34_2
|
||||
# 34| mu34_5(<unknown>) = ^CallSideEffect : ~mu23_3
|
||||
# 23| v23_4(Void) = ReturnVoid :
|
||||
# 23| v23_5(Void) = UnmodeledUse : mu*
|
||||
# 23| v23_6(Void) = AliasedUse : ~mu23_3
|
||||
# 23| v23_7(Void) = ExitFunction :
|
||||
# 23| v23_5(Void) = AliasedUse : ~mu23_3
|
||||
# 23| v23_6(Void) = ExitFunction :
|
||||
|
||||
inoutref.cs:
|
||||
# 11| System.Void InOutRef.set(MyClass,MyClass)
|
||||
@@ -907,9 +879,8 @@ inoutref.cs:
|
||||
# 13| r13_4(MyClass) = Load : &:r13_3, ~mu11_3
|
||||
# 13| mu13_5(MyClass) = Store : &:r13_4, r13_2
|
||||
# 11| v11_8(Void) = ReturnVoid :
|
||||
# 11| v11_9(Void) = UnmodeledUse : mu*
|
||||
# 11| v11_10(Void) = AliasedUse : ~mu11_3
|
||||
# 11| v11_11(Void) = ExitFunction :
|
||||
# 11| v11_9(Void) = AliasedUse : ~mu11_3
|
||||
# 11| v11_10(Void) = ExitFunction :
|
||||
|
||||
# 16| System.Void InOutRef.F(System.Int32,MyStruct,MyStruct,MyClass,MyClass)
|
||||
# 16| Block 0
|
||||
@@ -967,9 +938,8 @@ inoutref.cs:
|
||||
# 26| v26_7(Void) = Call : func:r26_1, 0:r26_3, 1:r26_6
|
||||
# 26| mu26_8(<unknown>) = ^CallSideEffect : ~mu16_3
|
||||
# 16| v16_14(Void) = ReturnVoid :
|
||||
# 16| v16_15(Void) = UnmodeledUse : mu*
|
||||
# 16| v16_16(Void) = AliasedUse : ~mu16_3
|
||||
# 16| v16_17(Void) = ExitFunction :
|
||||
# 16| v16_15(Void) = AliasedUse : ~mu16_3
|
||||
# 16| v16_16(Void) = ExitFunction :
|
||||
|
||||
# 29| System.Void InOutRef.Main()
|
||||
# 29| Block 0
|
||||
@@ -1006,9 +976,8 @@ inoutref.cs:
|
||||
# 36| r36_4(Int32) = Load : &:r36_3, ~mu29_3
|
||||
# 36| mu36_5(Int32) = Store : &:r36_1, r36_4
|
||||
# 29| v29_4(Void) = ReturnVoid :
|
||||
# 29| v29_5(Void) = UnmodeledUse : mu*
|
||||
# 29| v29_6(Void) = AliasedUse : ~mu29_3
|
||||
# 29| v29_7(Void) = ExitFunction :
|
||||
# 29| v29_5(Void) = AliasedUse : ~mu29_3
|
||||
# 29| v29_6(Void) = ExitFunction :
|
||||
|
||||
isexpr.cs:
|
||||
# 8| System.Void IsExpr.Main()
|
||||
@@ -1038,9 +1007,8 @@ isexpr.cs:
|
||||
|
||||
# 8| Block 1
|
||||
# 8| v8_4(Void) = ReturnVoid :
|
||||
# 8| v8_5(Void) = UnmodeledUse : mu*
|
||||
# 8| v8_6(Void) = AliasedUse : ~mu8_3
|
||||
# 8| v8_7(Void) = ExitFunction :
|
||||
# 8| v8_5(Void) = AliasedUse : ~mu8_3
|
||||
# 8| v8_6(Void) = ExitFunction :
|
||||
|
||||
# 13| Block 2
|
||||
# 13| v13_9(Void) = ConditionalBranch : r13_7
|
||||
@@ -1245,9 +1213,8 @@ jumps.cs:
|
||||
# 38| v38_3(Void) = Call : func:r38_1, 0:r38_2
|
||||
# 38| mu38_4(<unknown>) = ^CallSideEffect : ~mu5_3
|
||||
# 5| v5_4(Void) = ReturnVoid :
|
||||
# 5| v5_5(Void) = UnmodeledUse : mu*
|
||||
# 5| v5_6(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_7(Void) = ExitFunction :
|
||||
# 5| v5_5(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_6(Void) = ExitFunction :
|
||||
|
||||
lock.cs:
|
||||
# 5| System.Void LockTest.A()
|
||||
@@ -1290,9 +1257,8 @@ lock.cs:
|
||||
|
||||
# 5| Block 1
|
||||
# 5| v5_4(Void) = ReturnVoid :
|
||||
# 5| v5_5(Void) = UnmodeledUse : mu*
|
||||
# 5| v5_6(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_7(Void) = ExitFunction :
|
||||
# 5| v5_5(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_6(Void) = ExitFunction :
|
||||
|
||||
# 8| Block 2
|
||||
# 8| r8_17(<funcaddr>) = FunctionAddress[Exit] :
|
||||
@@ -1311,9 +1277,8 @@ obj_creation.cs:
|
||||
# 7| r7_4(glval<MyClass>) = InitializeThis :
|
||||
# 8| v8_1(Void) = NoOp :
|
||||
# 7| v7_5(Void) = ReturnVoid :
|
||||
# 7| v7_6(Void) = UnmodeledUse : mu*
|
||||
# 7| v7_7(Void) = AliasedUse : ~mu7_3
|
||||
# 7| v7_8(Void) = ExitFunction :
|
||||
# 7| v7_6(Void) = AliasedUse : ~mu7_3
|
||||
# 7| v7_7(Void) = ExitFunction :
|
||||
|
||||
# 11| System.Void ObjCreation.MyClass..ctor(System.Int32)
|
||||
# 11| Block 0
|
||||
@@ -1329,9 +1294,8 @@ obj_creation.cs:
|
||||
# 13| r13_4(glval<Int32>) = FieldAddress[x] : r13_3
|
||||
# 13| mu13_5(Int32) = Store : &:r13_4, r13_2
|
||||
# 11| v11_7(Void) = ReturnVoid :
|
||||
# 11| v11_8(Void) = UnmodeledUse : mu*
|
||||
# 11| v11_9(Void) = AliasedUse : ~mu11_3
|
||||
# 11| v11_10(Void) = ExitFunction :
|
||||
# 11| v11_8(Void) = AliasedUse : ~mu11_3
|
||||
# 11| v11_9(Void) = ExitFunction :
|
||||
|
||||
# 17| System.Void ObjCreation.SomeFun(ObjCreation.MyClass)
|
||||
# 17| Block 0
|
||||
@@ -1342,9 +1306,8 @@ obj_creation.cs:
|
||||
# 17| mu17_5(MyClass) = InitializeParameter[x] : &:r17_4
|
||||
# 18| v18_1(Void) = NoOp :
|
||||
# 17| v17_6(Void) = ReturnVoid :
|
||||
# 17| v17_7(Void) = UnmodeledUse : mu*
|
||||
# 17| v17_8(Void) = AliasedUse : ~mu17_3
|
||||
# 17| v17_9(Void) = ExitFunction :
|
||||
# 17| v17_7(Void) = AliasedUse : ~mu17_3
|
||||
# 17| v17_8(Void) = ExitFunction :
|
||||
|
||||
# 21| System.Void ObjCreation.Main()
|
||||
# 21| Block 0
|
||||
@@ -1382,9 +1345,8 @@ obj_creation.cs:
|
||||
# 27| v27_7(Void) = Call : func:r27_1, 0:r27_2
|
||||
# 27| mu27_8(<unknown>) = ^CallSideEffect : ~mu21_3
|
||||
# 21| v21_4(Void) = ReturnVoid :
|
||||
# 21| v21_5(Void) = UnmodeledUse : mu*
|
||||
# 21| v21_6(Void) = AliasedUse : ~mu21_3
|
||||
# 21| v21_7(Void) = ExitFunction :
|
||||
# 21| v21_5(Void) = AliasedUse : ~mu21_3
|
||||
# 21| v21_6(Void) = ExitFunction :
|
||||
|
||||
pointers.cs:
|
||||
# 3| System.Void Pointers.addone(System.Int32[])
|
||||
@@ -1417,9 +1379,8 @@ pointers.cs:
|
||||
|
||||
# 3| Block 1
|
||||
# 3| v3_6(Void) = ReturnVoid :
|
||||
# 3| v3_7(Void) = UnmodeledUse : mu*
|
||||
# 3| v3_8(Void) = AliasedUse : ~mu3_3
|
||||
# 3| v3_9(Void) = ExitFunction :
|
||||
# 3| v3_7(Void) = AliasedUse : ~mu3_3
|
||||
# 3| v3_8(Void) = ExitFunction :
|
||||
|
||||
# 9| Block 2
|
||||
# 9| r9_4(glval<Int32>) = VariableAddress[i] :
|
||||
@@ -1513,9 +1474,8 @@ pointers.cs:
|
||||
# 40| v40_4(Void) = Call : func:r40_1, 0:r40_3
|
||||
# 40| mu40_5(<unknown>) = ^CallSideEffect : ~mu25_3
|
||||
# 25| v25_4(Void) = ReturnVoid :
|
||||
# 25| v25_5(Void) = UnmodeledUse : mu*
|
||||
# 25| v25_6(Void) = AliasedUse : ~mu25_3
|
||||
# 25| v25_7(Void) = ExitFunction :
|
||||
# 25| v25_5(Void) = AliasedUse : ~mu25_3
|
||||
# 25| v25_6(Void) = ExitFunction :
|
||||
|
||||
prop.cs:
|
||||
# 7| System.Int32 PropClass.get_Prop()
|
||||
@@ -1532,9 +1492,8 @@ prop.cs:
|
||||
# 9| mu9_6(Int32) = Store : &:r9_1, r9_4
|
||||
# 7| r7_5(glval<Int32>) = VariableAddress[#return] :
|
||||
# 7| v7_6(Void) = ReturnValue : &:r7_5, ~mu7_3
|
||||
# 7| v7_7(Void) = UnmodeledUse : mu*
|
||||
# 7| v7_8(Void) = AliasedUse : ~mu7_3
|
||||
# 7| v7_9(Void) = ExitFunction :
|
||||
# 7| v7_7(Void) = AliasedUse : ~mu7_3
|
||||
# 7| v7_8(Void) = ExitFunction :
|
||||
|
||||
# 12| System.Void PropClass.set_Prop(System.Int32)
|
||||
# 12| Block 0
|
||||
@@ -1549,9 +1508,8 @@ prop.cs:
|
||||
# 14| r14_3(glval<Int32>) = VariableAddress[prop] :
|
||||
# 14| mu14_4(Int32) = Store : &:r14_3, r14_2
|
||||
# 12| v12_7(Void) = ReturnVoid :
|
||||
# 12| v12_8(Void) = UnmodeledUse : mu*
|
||||
# 12| v12_9(Void) = AliasedUse : ~mu12_3
|
||||
# 12| v12_10(Void) = ExitFunction :
|
||||
# 12| v12_8(Void) = AliasedUse : ~mu12_3
|
||||
# 12| v12_9(Void) = ExitFunction :
|
||||
|
||||
# 18| System.Int32 PropClass.func()
|
||||
# 18| Block 0
|
||||
@@ -1564,9 +1522,8 @@ prop.cs:
|
||||
# 20| mu20_3(Int32) = Store : &:r20_1, r20_2
|
||||
# 18| r18_5(glval<Int32>) = VariableAddress[#return] :
|
||||
# 18| v18_6(Void) = ReturnValue : &:r18_5, ~mu18_3
|
||||
# 18| v18_7(Void) = UnmodeledUse : mu*
|
||||
# 18| v18_8(Void) = AliasedUse : ~mu18_3
|
||||
# 18| v18_9(Void) = ExitFunction :
|
||||
# 18| v18_7(Void) = AliasedUse : ~mu18_3
|
||||
# 18| v18_8(Void) = ExitFunction :
|
||||
|
||||
# 26| System.Void Prog.Main()
|
||||
# 26| Block 0
|
||||
@@ -1593,9 +1550,8 @@ prop.cs:
|
||||
# 30| mu30_6(<unknown>) = ^CallSideEffect : ~mu26_3
|
||||
# 30| mu30_7(Int32) = Store : &:r30_1, r30_5
|
||||
# 26| v26_4(Void) = ReturnVoid :
|
||||
# 26| v26_5(Void) = UnmodeledUse : mu*
|
||||
# 26| v26_6(Void) = AliasedUse : ~mu26_3
|
||||
# 26| v26_7(Void) = ExitFunction :
|
||||
# 26| v26_5(Void) = AliasedUse : ~mu26_3
|
||||
# 26| v26_6(Void) = ExitFunction :
|
||||
|
||||
simple_call.cs:
|
||||
# 5| System.Int32 test_simple_call.f()
|
||||
@@ -1608,9 +1564,8 @@ simple_call.cs:
|
||||
# 7| mu7_3(Int32) = Store : &:r7_1, r7_2
|
||||
# 5| r5_4(glval<Int32>) = VariableAddress[#return] :
|
||||
# 5| v5_5(Void) = ReturnValue : &:r5_4, ~mu5_3
|
||||
# 5| v5_6(Void) = UnmodeledUse : mu*
|
||||
# 5| v5_7(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_8(Void) = ExitFunction :
|
||||
# 5| v5_6(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_7(Void) = ExitFunction :
|
||||
|
||||
# 10| System.Int32 test_simple_call.g()
|
||||
# 10| Block 0
|
||||
@@ -1625,9 +1580,8 @@ simple_call.cs:
|
||||
# 12| mu12_5(Int32) = Store : &:r12_1, r12_3
|
||||
# 10| r10_5(glval<Int32>) = VariableAddress[#return] :
|
||||
# 10| v10_6(Void) = ReturnValue : &:r10_5, ~mu10_3
|
||||
# 10| v10_7(Void) = UnmodeledUse : mu*
|
||||
# 10| v10_8(Void) = AliasedUse : ~mu10_3
|
||||
# 10| v10_9(Void) = ExitFunction :
|
||||
# 10| v10_7(Void) = AliasedUse : ~mu10_3
|
||||
# 10| v10_8(Void) = ExitFunction :
|
||||
|
||||
simple_function.cs:
|
||||
# 5| System.Int32 test_simple_function.f()
|
||||
@@ -1640,9 +1594,8 @@ simple_function.cs:
|
||||
# 7| mu7_3(Int32) = Store : &:r7_1, r7_2
|
||||
# 5| r5_4(glval<Int32>) = VariableAddress[#return] :
|
||||
# 5| v5_5(Void) = ReturnValue : &:r5_4, ~mu5_3
|
||||
# 5| v5_6(Void) = UnmodeledUse : mu*
|
||||
# 5| v5_7(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_8(Void) = ExitFunction :
|
||||
# 5| v5_6(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_7(Void) = ExitFunction :
|
||||
|
||||
stmts.cs:
|
||||
# 5| System.Int32 test_stmts.ifStmt(System.Int32)
|
||||
@@ -1663,9 +1616,8 @@ stmts.cs:
|
||||
# 5| Block 1
|
||||
# 5| r5_6(glval<Int32>) = VariableAddress[#return] :
|
||||
# 5| v5_7(Void) = ReturnValue : &:r5_6, ~mu5_3
|
||||
# 5| v5_8(Void) = UnmodeledUse : mu*
|
||||
# 5| v5_9(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_10(Void) = ExitFunction :
|
||||
# 5| v5_8(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_9(Void) = ExitFunction :
|
||||
|
||||
# 10| Block 2
|
||||
# 10| r10_1(glval<Int32>) = VariableAddress[#return] :
|
||||
@@ -1693,9 +1645,8 @@ stmts.cs:
|
||||
|
||||
# 13| Block 1
|
||||
# 13| v13_6(Void) = ReturnVoid :
|
||||
# 13| v13_7(Void) = UnmodeledUse : mu*
|
||||
# 13| v13_8(Void) = AliasedUse : ~mu13_3
|
||||
# 13| v13_9(Void) = ExitFunction :
|
||||
# 13| v13_7(Void) = AliasedUse : ~mu13_3
|
||||
# 13| v13_8(Void) = ExitFunction :
|
||||
|
||||
# 16| Block 2
|
||||
# 16| r16_1(glval<Int32>) = VariableAddress[i] :
|
||||
@@ -1741,9 +1692,8 @@ stmts.cs:
|
||||
# 22| Block 1
|
||||
# 22| r22_4(glval<Int32>) = VariableAddress[#return] :
|
||||
# 22| v22_5(Void) = ReturnValue : &:r22_4, ~mu22_3
|
||||
# 22| v22_6(Void) = UnmodeledUse : mu*
|
||||
# 22| v22_7(Void) = AliasedUse : ~mu22_3
|
||||
# 22| v22_8(Void) = ExitFunction :
|
||||
# 22| v22_6(Void) = AliasedUse : ~mu22_3
|
||||
# 22| v22_7(Void) = ExitFunction :
|
||||
|
||||
# 29| Block 2
|
||||
# 29| v29_1(Void) = NoOp :
|
||||
@@ -1799,12 +1749,11 @@ stmts.cs:
|
||||
#-----| True -> Block 3
|
||||
|
||||
# 46| Block 1
|
||||
# 46| v46_4(Void) = UnmodeledUse : mu*
|
||||
# 46| v46_5(Void) = AliasedUse : ~mu46_3
|
||||
# 46| v46_6(Void) = ExitFunction :
|
||||
# 46| v46_4(Void) = AliasedUse : ~mu46_3
|
||||
# 46| v46_5(Void) = ExitFunction :
|
||||
|
||||
# 46| Block 2
|
||||
# 46| v46_7(Void) = Unwind :
|
||||
# 46| v46_6(Void) = Unwind :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 52| Block 3
|
||||
@@ -1827,7 +1776,7 @@ stmts.cs:
|
||||
# 65| r65_1(Int32) = Constant[2] :
|
||||
# 65| r65_2(glval<Int32>) = VariableAddress[x] :
|
||||
# 65| mu65_3(Int32) = Store : &:r65_2, r65_1
|
||||
# 46| v46_8(Void) = ReturnVoid :
|
||||
# 46| v46_7(Void) = ReturnVoid :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 55| Block 6
|
||||
@@ -1866,9 +1815,8 @@ stmts.cs:
|
||||
|
||||
# 69| Block 1
|
||||
# 69| v69_4(Void) = ReturnVoid :
|
||||
# 69| v69_5(Void) = UnmodeledUse : mu*
|
||||
# 69| v69_6(Void) = AliasedUse : ~mu69_3
|
||||
# 69| v69_7(Void) = ExitFunction :
|
||||
# 69| v69_5(Void) = AliasedUse : ~mu69_3
|
||||
# 69| v69_6(Void) = ExitFunction :
|
||||
|
||||
# 72| Block 2
|
||||
# 72| r72_7(glval<Int32>) = VariableAddress[i] :
|
||||
@@ -1944,9 +1892,8 @@ stmts.cs:
|
||||
|
||||
# 89| Block 1
|
||||
# 89| v89_4(Void) = ReturnVoid :
|
||||
# 89| v89_5(Void) = UnmodeledUse : mu*
|
||||
# 89| v89_6(Void) = AliasedUse : ~mu89_3
|
||||
# 89| v89_7(Void) = ExitFunction :
|
||||
# 89| v89_5(Void) = AliasedUse : ~mu89_3
|
||||
# 89| v89_6(Void) = ExitFunction :
|
||||
|
||||
# 94| Block 2
|
||||
# 94| r94_1(glval<Int32>) = VariableAddress[x] :
|
||||
@@ -1985,9 +1932,8 @@ stmts.cs:
|
||||
# 108| r108_5(glval<Int32>) = VariableAddress[num] :
|
||||
# 108| mu108_6(Int32) = Store : &:r108_5, r108_4
|
||||
# 99| v99_4(Void) = ReturnVoid :
|
||||
# 99| v99_5(Void) = UnmodeledUse : mu*
|
||||
# 99| v99_6(Void) = AliasedUse : ~mu99_3
|
||||
# 99| v99_7(Void) = ExitFunction :
|
||||
# 99| v99_5(Void) = AliasedUse : ~mu99_3
|
||||
# 99| v99_6(Void) = ExitFunction :
|
||||
|
||||
using.cs:
|
||||
# 7| System.Void UsingStmt.MyDisposable..ctor()
|
||||
@@ -1998,9 +1944,8 @@ using.cs:
|
||||
# 7| r7_4(glval<MyDisposable>) = InitializeThis :
|
||||
# 7| v7_5(Void) = NoOp :
|
||||
# 7| v7_6(Void) = ReturnVoid :
|
||||
# 7| v7_7(Void) = UnmodeledUse : mu*
|
||||
# 7| v7_8(Void) = AliasedUse : ~mu7_3
|
||||
# 7| v7_9(Void) = ExitFunction :
|
||||
# 7| v7_7(Void) = AliasedUse : ~mu7_3
|
||||
# 7| v7_8(Void) = ExitFunction :
|
||||
|
||||
# 8| System.Void UsingStmt.MyDisposable.DoSomething()
|
||||
# 8| Block 0
|
||||
@@ -2010,9 +1955,8 @@ using.cs:
|
||||
# 8| r8_4(glval<MyDisposable>) = InitializeThis :
|
||||
# 8| v8_5(Void) = NoOp :
|
||||
# 8| v8_6(Void) = ReturnVoid :
|
||||
# 8| v8_7(Void) = UnmodeledUse : mu*
|
||||
# 8| v8_8(Void) = AliasedUse : ~mu8_3
|
||||
# 8| v8_9(Void) = ExitFunction :
|
||||
# 8| v8_7(Void) = AliasedUse : ~mu8_3
|
||||
# 8| v8_8(Void) = ExitFunction :
|
||||
|
||||
# 9| System.Void UsingStmt.MyDisposable.Dispose()
|
||||
# 9| Block 0
|
||||
@@ -2022,9 +1966,8 @@ using.cs:
|
||||
# 9| r9_4(glval<MyDisposable>) = InitializeThis :
|
||||
# 9| v9_5(Void) = NoOp :
|
||||
# 9| v9_6(Void) = ReturnVoid :
|
||||
# 9| v9_7(Void) = UnmodeledUse : mu*
|
||||
# 9| v9_8(Void) = AliasedUse : ~mu9_3
|
||||
# 9| v9_9(Void) = ExitFunction :
|
||||
# 9| v9_7(Void) = AliasedUse : ~mu9_3
|
||||
# 9| v9_8(Void) = ExitFunction :
|
||||
|
||||
# 12| System.Void UsingStmt.Main()
|
||||
# 12| Block 0
|
||||
@@ -2065,9 +2008,8 @@ using.cs:
|
||||
# 26| v26_4(Void) = Call : func:r26_3, this:r26_2
|
||||
# 26| mu26_5(<unknown>) = ^CallSideEffect : ~mu12_3
|
||||
# 12| v12_4(Void) = ReturnVoid :
|
||||
# 12| v12_5(Void) = UnmodeledUse : mu*
|
||||
# 12| v12_6(Void) = AliasedUse : ~mu12_3
|
||||
# 12| v12_7(Void) = ExitFunction :
|
||||
# 12| v12_5(Void) = AliasedUse : ~mu12_3
|
||||
# 12| v12_6(Void) = ExitFunction :
|
||||
|
||||
variables.cs:
|
||||
# 5| System.Void test_variables.f()
|
||||
@@ -2092,6 +2034,5 @@ variables.cs:
|
||||
# 10| r10_3(Int32) = Load : &:r10_2, ~mu5_3
|
||||
# 10| mu10_4(Int32) = Store : &:r10_1, r10_3
|
||||
# 5| v5_4(Void) = ReturnVoid :
|
||||
# 5| v5_5(Void) = UnmodeledUse : mu*
|
||||
# 5| v5_6(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_7(Void) = ExitFunction :
|
||||
# 5| v5_5(Void) = AliasedUse : ~mu5_3
|
||||
# 5| v5_6(Void) = ExitFunction :
|
||||
|
||||
Reference in New Issue
Block a user