mirror of
https://github.com/github/codeql.git
synced 2026-04-29 02:35:15 +02:00
Merge pull request #2184 from dave-bartolomeo/dave/AliasedUse
C++/C#: Add `AliasedUse` instruction to all functions
This commit is contained in:
@@ -5,6 +5,7 @@ private newtype TMemoryAccessKind =
|
||||
TBufferMayMemoryAccess() or
|
||||
TEscapedMemoryAccess() or
|
||||
TEscapedMayMemoryAccess() or
|
||||
TNonLocalMayMemoryAccess() or
|
||||
TPhiMemoryAccess() or
|
||||
TUnmodeledMemoryAccess() or
|
||||
TChiTotalMemoryAccess() or
|
||||
@@ -80,6 +81,14 @@ class EscapedMayMemoryAccess extends MemoryAccessKind, TEscapedMayMemoryAccess {
|
||||
override string toString() { result = "escaped(may)" }
|
||||
}
|
||||
|
||||
/**
|
||||
* The operand or result may access all memory whose address has escaped, other than data on the
|
||||
* stack frame of the current function.
|
||||
*/
|
||||
class NonLocalMayMemoryAccess extends MemoryAccessKind, TNonLocalMayMemoryAccess {
|
||||
override string toString() { result = "nonlocal(may)" }
|
||||
}
|
||||
|
||||
/**
|
||||
* The operand is a Phi operand, which accesses the same memory as its
|
||||
* definition.
|
||||
|
||||
@@ -57,6 +57,7 @@ private newtype TOpcode =
|
||||
TUnmodeledDefinition() or
|
||||
TUnmodeledUse() or
|
||||
TAliasedDefinition() or
|
||||
TAliasedUse() or
|
||||
TPhi() or
|
||||
TBuiltIn() or
|
||||
TVarArgsStart() or
|
||||
@@ -393,6 +394,10 @@ module Opcode {
|
||||
final override string toString() { result = "AliasedDefinition" }
|
||||
}
|
||||
|
||||
class AliasedUse extends Opcode, TAliasedUse {
|
||||
final override string toString() { result = "AliasedUse" }
|
||||
}
|
||||
|
||||
class Phi extends Opcode, TPhi {
|
||||
final override string toString() { result = "Phi" }
|
||||
}
|
||||
|
||||
@@ -50,7 +50,8 @@ module InstructionSanity {
|
||||
(
|
||||
opcode instanceof ReadSideEffectOpcode or
|
||||
opcode instanceof Opcode::InlineAsm or
|
||||
opcode instanceof Opcode::CallSideEffect
|
||||
opcode instanceof Opcode::CallSideEffect or
|
||||
opcode instanceof Opcode::AliasedUse
|
||||
) and
|
||||
tag instanceof SideEffectOperandTag
|
||||
)
|
||||
@@ -263,6 +264,7 @@ module InstructionSanity {
|
||||
) {
|
||||
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
|
||||
(
|
||||
@@ -1421,6 +1423,13 @@ class AliasedDefinitionInstruction extends Instruction {
|
||||
final override MemoryAccessKind getResultMemoryAccess() { result instanceof EscapedMemoryAccess }
|
||||
}
|
||||
|
||||
/**
|
||||
* An instruction that consumes all escaped memory on exit from the function.
|
||||
*/
|
||||
class AliasedUseInstruction extends Instruction {
|
||||
AliasedUseInstruction() { getOpcode() instanceof Opcode::AliasedUse }
|
||||
}
|
||||
|
||||
class UnmodeledUseInstruction extends Instruction {
|
||||
UnmodeledUseInstruction() { getOpcode() instanceof Opcode::UnmodeledUse }
|
||||
|
||||
|
||||
@@ -396,6 +396,9 @@ class SideEffectOperand extends TypedOperand {
|
||||
override SideEffectOperandTag tag;
|
||||
|
||||
override MemoryAccessKind getMemoryAccess() {
|
||||
useInstr instanceof AliasedUseInstruction and
|
||||
result instanceof NonLocalMayMemoryAccess
|
||||
or
|
||||
useInstr instanceof CallSideEffectInstruction and
|
||||
result instanceof EscapedMayMemoryAccess
|
||||
or
|
||||
|
||||
@@ -45,6 +45,7 @@ private newtype TMemoryLocation =
|
||||
languageType = type.getCanonicalLanguageType()
|
||||
} or
|
||||
TUnknownMemoryLocation(IRFunction irFunc) or
|
||||
TUnknownNonLocalMemoryLocation(IRFunction irFunc) or
|
||||
TUnknownVirtualVariable(IRFunction irFunc)
|
||||
|
||||
/**
|
||||
@@ -162,6 +163,26 @@ class UnknownMemoryLocation extends TUnknownMemoryLocation, MemoryLocation {
|
||||
final override string getUniqueId() { result = "{Unknown}" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An access to memory that is not known to be confined to a specific `IRVariable`, but is known to
|
||||
* not access memory on the current function's stack frame.
|
||||
*/
|
||||
class UnknownNonLocalMemoryLocation extends TUnknownNonLocalMemoryLocation, MemoryLocation {
|
||||
IRFunction irFunc;
|
||||
|
||||
UnknownNonLocalMemoryLocation() { this = TUnknownNonLocalMemoryLocation(irFunc) }
|
||||
|
||||
final override string toString() { result = "{UnknownNonLocal}" }
|
||||
|
||||
final override VirtualVariable getVirtualVariable() { result = TUnknownVirtualVariable(irFunc) }
|
||||
|
||||
final override Language::LanguageType getType() {
|
||||
result = any(IRUnknownType type).getCanonicalLanguageType()
|
||||
}
|
||||
|
||||
final override string getUniqueId() { result = "{UnknownNonLocal}" }
|
||||
}
|
||||
|
||||
/**
|
||||
* An access to all aliased memory.
|
||||
*/
|
||||
@@ -194,6 +215,13 @@ Overlap getOverlap(MemoryLocation def, MemoryLocation use) {
|
||||
def instanceof UnknownMemoryLocation and
|
||||
result instanceof MayPartiallyOverlap
|
||||
or
|
||||
// An UnknownNonLocalMemoryLocation may partially overlap any location within the same virtual
|
||||
// variable, except a local variable.
|
||||
def.getVirtualVariable() = use.getVirtualVariable() and
|
||||
def instanceof UnknownNonLocalMemoryLocation and
|
||||
result instanceof MayPartiallyOverlap and
|
||||
not use.(VariableMemoryLocation).getVariable() instanceof IRAutomaticVariable
|
||||
or
|
||||
exists(VariableMemoryLocation defVariableLocation |
|
||||
defVariableLocation = def and
|
||||
(
|
||||
@@ -202,6 +230,13 @@ Overlap getOverlap(MemoryLocation def, MemoryLocation use) {
|
||||
(use instanceof UnknownMemoryLocation or use instanceof UnknownVirtualVariable) and
|
||||
result instanceof MayPartiallyOverlap
|
||||
or
|
||||
// A VariableMemoryLocation that is not a local variable may partially overlap an unknown
|
||||
// non-local location within the same virtual variable.
|
||||
def.getVirtualVariable() = use.getVirtualVariable() and
|
||||
use instanceof UnknownNonLocalMemoryLocation and
|
||||
result instanceof MayPartiallyOverlap and
|
||||
not defVariableLocation.getVariable() instanceof IRAutomaticVariable
|
||||
or
|
||||
// A VariableMemoryLocation overlaps another location within the same variable based on the relationship
|
||||
// of the two offset intervals.
|
||||
exists(Overlap intervalOverlap |
|
||||
@@ -327,6 +362,9 @@ MemoryLocation getResultMemoryLocation(Instruction instr) {
|
||||
or
|
||||
kind instanceof EscapedMayMemoryAccess and
|
||||
result = TUnknownMemoryLocation(instr.getEnclosingIRFunction())
|
||||
or
|
||||
kind instanceof NonLocalMayMemoryAccess and
|
||||
result = TUnknownNonLocalMemoryLocation(instr.getEnclosingIRFunction())
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -351,6 +389,9 @@ MemoryLocation getOperandMemoryLocation(MemoryOperand operand) {
|
||||
or
|
||||
kind instanceof EscapedMayMemoryAccess and
|
||||
result = TUnknownMemoryLocation(operand.getEnclosingIRFunction())
|
||||
or
|
||||
kind instanceof NonLocalMayMemoryAccess and
|
||||
result = TUnknownNonLocalMemoryLocation(operand.getEnclosingIRFunction())
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -50,7 +50,8 @@ module InstructionSanity {
|
||||
(
|
||||
opcode instanceof ReadSideEffectOpcode or
|
||||
opcode instanceof Opcode::InlineAsm or
|
||||
opcode instanceof Opcode::CallSideEffect
|
||||
opcode instanceof Opcode::CallSideEffect or
|
||||
opcode instanceof Opcode::AliasedUse
|
||||
) and
|
||||
tag instanceof SideEffectOperandTag
|
||||
)
|
||||
@@ -263,6 +264,7 @@ module InstructionSanity {
|
||||
) {
|
||||
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
|
||||
(
|
||||
@@ -1421,6 +1423,13 @@ class AliasedDefinitionInstruction extends Instruction {
|
||||
final override MemoryAccessKind getResultMemoryAccess() { result instanceof EscapedMemoryAccess }
|
||||
}
|
||||
|
||||
/**
|
||||
* An instruction that consumes all escaped memory on exit from the function.
|
||||
*/
|
||||
class AliasedUseInstruction extends Instruction {
|
||||
AliasedUseInstruction() { getOpcode() instanceof Opcode::AliasedUse }
|
||||
}
|
||||
|
||||
class UnmodeledUseInstruction extends Instruction {
|
||||
UnmodeledUseInstruction() { getOpcode() instanceof Opcode::UnmodeledUse }
|
||||
|
||||
|
||||
@@ -396,6 +396,9 @@ class SideEffectOperand extends TypedOperand {
|
||||
override SideEffectOperandTag tag;
|
||||
|
||||
override MemoryAccessKind getMemoryAccess() {
|
||||
useInstr instanceof AliasedUseInstruction and
|
||||
result instanceof NonLocalMayMemoryAccess
|
||||
or
|
||||
useInstr instanceof CallSideEffectInstruction and
|
||||
result instanceof EscapedMayMemoryAccess
|
||||
or
|
||||
|
||||
@@ -26,6 +26,7 @@ newtype TInstructionTag =
|
||||
UnmodeledDefinitionTag() or
|
||||
UnmodeledUseTag() or
|
||||
AliasedDefinitionTag() or
|
||||
AliasedUseTag() or
|
||||
SwitchBranchTag() or
|
||||
CallTargetTag() or
|
||||
CallTag() or
|
||||
@@ -118,6 +119,8 @@ string getInstructionTagId(TInstructionTag tag) {
|
||||
or
|
||||
tag = AliasedDefinitionTag() and result = "AliasedDef"
|
||||
or
|
||||
tag = AliasedUseTag() and result = "AliasedUse"
|
||||
or
|
||||
tag = SwitchBranchTag() and result = "SwitchBranch"
|
||||
or
|
||||
tag = CallTargetTag() and result = "CallTarget"
|
||||
|
||||
@@ -96,6 +96,9 @@ class TranslatedFunction extends TranslatedElement, TTranslatedFunction {
|
||||
result = getInstruction(UnmodeledUseTag())
|
||||
or
|
||||
tag = UnmodeledUseTag() and
|
||||
result = getInstruction(AliasedUseTag())
|
||||
or
|
||||
tag = AliasedUseTag() and
|
||||
result = getInstruction(ExitFunctionTag())
|
||||
)
|
||||
}
|
||||
@@ -167,6 +170,10 @@ class TranslatedFunction extends TranslatedElement, TTranslatedFunction {
|
||||
opcode instanceof Opcode::UnmodeledUse and
|
||||
resultType = getVoidType()
|
||||
or
|
||||
tag = AliasedUseTag() and
|
||||
opcode instanceof Opcode::AliasedUse and
|
||||
resultType = getVoidType()
|
||||
or
|
||||
tag = ExitFunctionTag() and
|
||||
opcode instanceof Opcode::ExitFunction and
|
||||
resultType = getVoidType()
|
||||
@@ -187,6 +194,10 @@ class TranslatedFunction extends TranslatedElement, TTranslatedFunction {
|
||||
operandTag instanceof UnmodeledUseOperandTag and
|
||||
result = getUnmodeledDefinitionInstruction()
|
||||
or
|
||||
tag = AliasedUseTag() and
|
||||
operandTag instanceof SideEffectOperandTag and
|
||||
result = getUnmodeledDefinitionInstruction()
|
||||
or
|
||||
tag = ReturnTag() and
|
||||
hasReturnValue() and
|
||||
(
|
||||
@@ -203,6 +214,10 @@ class TranslatedFunction extends TranslatedElement, TTranslatedFunction {
|
||||
hasReturnValue() and
|
||||
operandTag instanceof LoadOperandTag and
|
||||
result = getTypeForPRValue(getReturnType())
|
||||
or
|
||||
tag = AliasedUseTag() and
|
||||
operandTag instanceof SideEffectOperandTag and
|
||||
result = getUnknownType()
|
||||
}
|
||||
|
||||
final override IRVariable getInstructionVariable(InstructionTag tag) {
|
||||
|
||||
@@ -50,7 +50,8 @@ module InstructionSanity {
|
||||
(
|
||||
opcode instanceof ReadSideEffectOpcode or
|
||||
opcode instanceof Opcode::InlineAsm or
|
||||
opcode instanceof Opcode::CallSideEffect
|
||||
opcode instanceof Opcode::CallSideEffect or
|
||||
opcode instanceof Opcode::AliasedUse
|
||||
) and
|
||||
tag instanceof SideEffectOperandTag
|
||||
)
|
||||
@@ -263,6 +264,7 @@ module InstructionSanity {
|
||||
) {
|
||||
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
|
||||
(
|
||||
@@ -1421,6 +1423,13 @@ class AliasedDefinitionInstruction extends Instruction {
|
||||
final override MemoryAccessKind getResultMemoryAccess() { result instanceof EscapedMemoryAccess }
|
||||
}
|
||||
|
||||
/**
|
||||
* An instruction that consumes all escaped memory on exit from the function.
|
||||
*/
|
||||
class AliasedUseInstruction extends Instruction {
|
||||
AliasedUseInstruction() { getOpcode() instanceof Opcode::AliasedUse }
|
||||
}
|
||||
|
||||
class UnmodeledUseInstruction extends Instruction {
|
||||
UnmodeledUseInstruction() { getOpcode() instanceof Opcode::UnmodeledUse }
|
||||
|
||||
|
||||
@@ -396,6 +396,9 @@ class SideEffectOperand extends TypedOperand {
|
||||
override SideEffectOperandTag tag;
|
||||
|
||||
override MemoryAccessKind getMemoryAccess() {
|
||||
useInstr instanceof AliasedUseInstruction and
|
||||
result instanceof NonLocalMayMemoryAccess
|
||||
or
|
||||
useInstr instanceof CallSideEffectInstruction and
|
||||
result instanceof EscapedMayMemoryAccess
|
||||
or
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -84,7 +84,8 @@ ssa.cpp:
|
||||
# 13| r6_12(glval<int>) = VariableAddress[#return] :
|
||||
# 13| v6_13(void) = ReturnValue : &:r6_12, m6_11
|
||||
# 13| v6_14(void) = UnmodeledUse : mu*
|
||||
# 13| v6_15(void) = ExitFunction :
|
||||
# 13| v6_15(void) = AliasedUse : ~m6_0
|
||||
# 13| v6_16(void) = ExitFunction :
|
||||
|
||||
# 31| int UnreachableViaGoto()
|
||||
# 31| Block 0
|
||||
@@ -99,7 +100,8 @@ ssa.cpp:
|
||||
# 31| r0_8(glval<int>) = VariableAddress[#return] :
|
||||
# 31| v0_9(void) = ReturnValue : &:r0_8, m0_7
|
||||
# 31| v0_10(void) = UnmodeledUse : mu*
|
||||
# 31| v0_11(void) = ExitFunction :
|
||||
# 31| v0_11(void) = AliasedUse : ~m0_1
|
||||
# 31| v0_12(void) = ExitFunction :
|
||||
|
||||
# 38| int UnreachableIf(bool)
|
||||
# 38| Block 0
|
||||
@@ -125,7 +127,8 @@ ssa.cpp:
|
||||
# 38| r1_1(glval<int>) = VariableAddress[#return] :
|
||||
# 38| v1_2(void) = ReturnValue : &:r1_1, m1_0
|
||||
# 38| v1_3(void) = UnmodeledUse : mu*
|
||||
# 38| v1_4(void) = ExitFunction :
|
||||
# 38| v1_4(void) = AliasedUse : ~m0_1
|
||||
# 38| v1_5(void) = ExitFunction :
|
||||
|
||||
# 42| Block 2
|
||||
# 42| r2_0(glval<int>) = VariableAddress[x] :
|
||||
@@ -188,7 +191,8 @@ ssa.cpp:
|
||||
# 59| r1_4(glval<int>) = VariableAddress[#return] :
|
||||
# 59| v1_5(void) = ReturnValue : &:r1_4, m1_3
|
||||
# 59| v1_6(void) = UnmodeledUse : mu*
|
||||
# 59| v1_7(void) = ExitFunction :
|
||||
# 59| v1_7(void) = AliasedUse : ~m0_1
|
||||
# 59| v1_8(void) = ExitFunction :
|
||||
|
||||
# 59| Block 2
|
||||
# 59| v2_0(void) = Unreached :
|
||||
@@ -219,7 +223,8 @@ ssa.cpp:
|
||||
# 71| v2_0(void) = NoOp :
|
||||
# 68| v2_1(void) = ReturnVoid :
|
||||
# 68| v2_2(void) = UnmodeledUse : mu*
|
||||
# 68| v2_3(void) = ExitFunction :
|
||||
# 68| v2_3(void) = AliasedUse : ~m3_0
|
||||
# 68| v2_4(void) = ExitFunction :
|
||||
|
||||
# 69| Block 3
|
||||
# 69| m3_0(unknown) = Phi : from 0:~m0_1, from 1:~m1_7
|
||||
@@ -291,7 +296,8 @@ ssa.cpp:
|
||||
# 89| v3_14(void) = NoOp :
|
||||
# 75| v3_15(void) = ReturnVoid :
|
||||
# 75| v3_16(void) = UnmodeledUse : mu*
|
||||
# 75| v3_17(void) = ExitFunction :
|
||||
# 75| v3_17(void) = AliasedUse : ~m0_1
|
||||
# 75| v3_18(void) = ExitFunction :
|
||||
|
||||
# 91| void MustExactlyOverlap(Point)
|
||||
# 91| Block 0
|
||||
@@ -307,7 +313,8 @@ ssa.cpp:
|
||||
# 93| v0_9(void) = NoOp :
|
||||
# 91| v0_10(void) = ReturnVoid :
|
||||
# 91| v0_11(void) = UnmodeledUse : mu*
|
||||
# 91| v0_12(void) = ExitFunction :
|
||||
# 91| v0_12(void) = AliasedUse : ~m0_1
|
||||
# 91| v0_13(void) = ExitFunction :
|
||||
|
||||
# 95| void MustExactlyOverlapEscaped(Point)
|
||||
# 95| Block 0
|
||||
@@ -333,7 +340,8 @@ ssa.cpp:
|
||||
# 98| v0_19(void) = NoOp :
|
||||
# 95| v0_20(void) = ReturnVoid :
|
||||
# 95| v0_21(void) = UnmodeledUse : mu*
|
||||
# 95| v0_22(void) = ExitFunction :
|
||||
# 95| v0_22(void) = AliasedUse : ~m0_15
|
||||
# 95| v0_23(void) = ExitFunction :
|
||||
|
||||
# 100| void MustTotallyOverlap(Point)
|
||||
# 100| Block 0
|
||||
@@ -355,7 +363,8 @@ ssa.cpp:
|
||||
# 103| v0_15(void) = NoOp :
|
||||
# 100| v0_16(void) = ReturnVoid :
|
||||
# 100| v0_17(void) = UnmodeledUse : mu*
|
||||
# 100| v0_18(void) = ExitFunction :
|
||||
# 100| v0_18(void) = AliasedUse : ~m0_1
|
||||
# 100| v0_19(void) = ExitFunction :
|
||||
|
||||
# 105| void MustTotallyOverlapEscaped(Point)
|
||||
# 105| Block 0
|
||||
@@ -387,7 +396,8 @@ ssa.cpp:
|
||||
# 109| v0_25(void) = NoOp :
|
||||
# 105| v0_26(void) = ReturnVoid :
|
||||
# 105| v0_27(void) = UnmodeledUse : mu*
|
||||
# 105| v0_28(void) = ExitFunction :
|
||||
# 105| v0_28(void) = AliasedUse : ~m0_21
|
||||
# 105| v0_29(void) = ExitFunction :
|
||||
|
||||
# 111| void MayPartiallyOverlap(int, int)
|
||||
# 111| Block 0
|
||||
@@ -417,7 +427,8 @@ ssa.cpp:
|
||||
# 114| v0_23(void) = NoOp :
|
||||
# 111| v0_24(void) = ReturnVoid :
|
||||
# 111| v0_25(void) = UnmodeledUse : mu*
|
||||
# 111| v0_26(void) = ExitFunction :
|
||||
# 111| v0_26(void) = AliasedUse : ~m0_1
|
||||
# 111| v0_27(void) = ExitFunction :
|
||||
|
||||
# 116| void MayPartiallyOverlapEscaped(int, int)
|
||||
# 116| Block 0
|
||||
@@ -457,7 +468,8 @@ ssa.cpp:
|
||||
# 120| v0_33(void) = NoOp :
|
||||
# 116| v0_34(void) = ReturnVoid :
|
||||
# 116| v0_35(void) = UnmodeledUse : mu*
|
||||
# 116| v0_36(void) = ExitFunction :
|
||||
# 116| v0_36(void) = AliasedUse : ~m0_29
|
||||
# 116| v0_37(void) = ExitFunction :
|
||||
|
||||
# 122| void MergeMustExactlyOverlap(bool, int, int)
|
||||
# 122| Block 0
|
||||
@@ -519,7 +531,8 @@ ssa.cpp:
|
||||
# 132| v3_11(void) = NoOp :
|
||||
# 122| v3_12(void) = ReturnVoid :
|
||||
# 122| v3_13(void) = UnmodeledUse : mu*
|
||||
# 122| v3_14(void) = ExitFunction :
|
||||
# 122| v3_14(void) = AliasedUse : ~m0_1
|
||||
# 122| v3_15(void) = ExitFunction :
|
||||
|
||||
# 134| void MergeMustExactlyWithMustTotallyOverlap(bool, Point, int)
|
||||
# 134| Block 0
|
||||
@@ -575,7 +588,8 @@ ssa.cpp:
|
||||
# 143| v3_7(void) = NoOp :
|
||||
# 134| v3_8(void) = ReturnVoid :
|
||||
# 134| v3_9(void) = UnmodeledUse : mu*
|
||||
# 134| v3_10(void) = ExitFunction :
|
||||
# 134| v3_10(void) = AliasedUse : ~m0_1
|
||||
# 134| v3_11(void) = ExitFunction :
|
||||
|
||||
# 145| void MergeMustExactlyWithMayPartiallyOverlap(bool, Point, int)
|
||||
# 145| Block 0
|
||||
@@ -629,7 +643,8 @@ ssa.cpp:
|
||||
# 154| v3_5(void) = NoOp :
|
||||
# 145| v3_6(void) = ReturnVoid :
|
||||
# 145| v3_7(void) = UnmodeledUse : mu*
|
||||
# 145| v3_8(void) = ExitFunction :
|
||||
# 145| v3_8(void) = AliasedUse : ~m0_1
|
||||
# 145| v3_9(void) = ExitFunction :
|
||||
|
||||
# 156| void MergeMustTotallyOverlapWithMayPartiallyOverlap(bool, Rect, int)
|
||||
# 156| Block 0
|
||||
@@ -685,7 +700,8 @@ ssa.cpp:
|
||||
# 165| v3_6(void) = NoOp :
|
||||
# 156| v3_7(void) = ReturnVoid :
|
||||
# 156| v3_8(void) = UnmodeledUse : mu*
|
||||
# 156| v3_9(void) = ExitFunction :
|
||||
# 156| v3_9(void) = AliasedUse : ~m0_1
|
||||
# 156| v3_10(void) = ExitFunction :
|
||||
|
||||
# 171| void WrapperStruct(Wrapper)
|
||||
# 171| Block 0
|
||||
@@ -719,7 +735,8 @@ ssa.cpp:
|
||||
# 177| v0_27(void) = NoOp :
|
||||
# 171| v0_28(void) = ReturnVoid :
|
||||
# 171| v0_29(void) = UnmodeledUse : mu*
|
||||
# 171| v0_30(void) = ExitFunction :
|
||||
# 171| v0_30(void) = AliasedUse : ~m0_1
|
||||
# 171| v0_31(void) = ExitFunction :
|
||||
|
||||
# 179| int AsmStmt(int*)
|
||||
# 179| Block 0
|
||||
@@ -738,7 +755,8 @@ ssa.cpp:
|
||||
# 179| r0_12(glval<int>) = VariableAddress[#return] :
|
||||
# 179| v0_13(void) = ReturnValue : &:r0_12, m0_11
|
||||
# 179| v0_14(void) = UnmodeledUse : mu*
|
||||
# 179| v0_15(void) = ExitFunction :
|
||||
# 179| v0_15(void) = AliasedUse : ~m0_6
|
||||
# 179| v0_16(void) = ExitFunction :
|
||||
|
||||
# 184| void AsmStmtWithOutputs(unsigned int&, unsigned int&, unsigned int&, unsigned int&)
|
||||
# 184| Block 0
|
||||
@@ -768,7 +786,8 @@ ssa.cpp:
|
||||
# 192| v0_23(void) = NoOp :
|
||||
# 184| v0_24(void) = ReturnVoid :
|
||||
# 184| v0_25(void) = UnmodeledUse : mu*
|
||||
# 184| v0_26(void) = ExitFunction :
|
||||
# 184| v0_26(void) = AliasedUse : ~m0_22
|
||||
# 184| v0_27(void) = ExitFunction :
|
||||
|
||||
# 198| int PureFunctions(char*, char*, int)
|
||||
# 198| Block 0
|
||||
@@ -817,7 +836,8 @@ ssa.cpp:
|
||||
# 198| r0_42(glval<int>) = VariableAddress[#return] :
|
||||
# 198| v0_43(void) = ReturnValue : &:r0_42, m0_41
|
||||
# 198| v0_44(void) = UnmodeledUse : mu*
|
||||
# 198| v0_45(void) = ExitFunction :
|
||||
# 198| v0_45(void) = AliasedUse : ~m0_1
|
||||
# 198| v0_46(void) = ExitFunction :
|
||||
|
||||
# 207| int ModeledCallTarget(int)
|
||||
# 207| Block 0
|
||||
@@ -847,4 +867,5 @@ ssa.cpp:
|
||||
# 207| r0_23(glval<int>) = VariableAddress[#return] :
|
||||
# 207| v0_24(void) = ReturnValue : &:r0_23, m0_22
|
||||
# 207| v0_25(void) = UnmodeledUse : mu*
|
||||
# 207| v0_26(void) = ExitFunction :
|
||||
# 207| v0_26(void) = AliasedUse : ~m0_1
|
||||
# 207| v0_27(void) = ExitFunction :
|
||||
|
||||
@@ -78,7 +78,8 @@ ssa.cpp:
|
||||
# 13| r6_11(glval<int>) = VariableAddress[#return] :
|
||||
# 13| v6_12(void) = ReturnValue : &:r6_11, m6_10
|
||||
# 13| v6_13(void) = UnmodeledUse : mu*
|
||||
# 13| v6_14(void) = ExitFunction :
|
||||
# 13| v6_14(void) = AliasedUse : ~mu0_2
|
||||
# 13| v6_15(void) = ExitFunction :
|
||||
|
||||
# 31| int UnreachableViaGoto()
|
||||
# 31| Block 0
|
||||
@@ -93,7 +94,8 @@ ssa.cpp:
|
||||
# 31| r0_8(glval<int>) = VariableAddress[#return] :
|
||||
# 31| v0_9(void) = ReturnValue : &:r0_8, m0_7
|
||||
# 31| v0_10(void) = UnmodeledUse : mu*
|
||||
# 31| v0_11(void) = ExitFunction :
|
||||
# 31| v0_11(void) = AliasedUse : ~mu0_2
|
||||
# 31| v0_12(void) = ExitFunction :
|
||||
|
||||
# 38| int UnreachableIf(bool)
|
||||
# 38| Block 0
|
||||
@@ -119,7 +121,8 @@ ssa.cpp:
|
||||
# 38| r1_1(glval<int>) = VariableAddress[#return] :
|
||||
# 38| v1_2(void) = ReturnValue : &:r1_1, m1_0
|
||||
# 38| v1_3(void) = UnmodeledUse : mu*
|
||||
# 38| v1_4(void) = ExitFunction :
|
||||
# 38| v1_4(void) = AliasedUse : ~mu0_2
|
||||
# 38| v1_5(void) = ExitFunction :
|
||||
|
||||
# 42| Block 2
|
||||
# 42| r2_0(glval<int>) = VariableAddress[x] :
|
||||
@@ -191,7 +194,8 @@ ssa.cpp:
|
||||
# 59| r1_4(glval<int>) = VariableAddress[#return] :
|
||||
# 59| v1_5(void) = ReturnValue : &:r1_4, m1_3
|
||||
# 59| v1_6(void) = UnmodeledUse : mu*
|
||||
# 59| v1_7(void) = ExitFunction :
|
||||
# 59| v1_7(void) = AliasedUse : ~mu0_2
|
||||
# 59| v1_8(void) = ExitFunction :
|
||||
|
||||
# 59| Block 2
|
||||
# 59| v2_0(void) = Unreached :
|
||||
@@ -221,7 +225,8 @@ ssa.cpp:
|
||||
# 71| v2_0(void) = NoOp :
|
||||
# 68| v2_1(void) = ReturnVoid :
|
||||
# 68| v2_2(void) = UnmodeledUse : mu*
|
||||
# 68| v2_3(void) = ExitFunction :
|
||||
# 68| v2_3(void) = AliasedUse : ~mu0_2
|
||||
# 68| v2_4(void) = ExitFunction :
|
||||
|
||||
# 69| Block 3
|
||||
# 69| m3_0(int) = Phi : from 0:m0_4, from 1:m3_6
|
||||
@@ -292,7 +297,8 @@ ssa.cpp:
|
||||
# 89| v3_14(void) = NoOp :
|
||||
# 75| v3_15(void) = ReturnVoid :
|
||||
# 75| v3_16(void) = UnmodeledUse : mu*
|
||||
# 75| v3_17(void) = ExitFunction :
|
||||
# 75| v3_17(void) = AliasedUse : ~mu0_2
|
||||
# 75| v3_18(void) = ExitFunction :
|
||||
|
||||
# 91| void MustExactlyOverlap(Point)
|
||||
# 91| Block 0
|
||||
@@ -308,7 +314,8 @@ ssa.cpp:
|
||||
# 93| v0_9(void) = NoOp :
|
||||
# 91| v0_10(void) = ReturnVoid :
|
||||
# 91| v0_11(void) = UnmodeledUse : mu*
|
||||
# 91| v0_12(void) = ExitFunction :
|
||||
# 91| v0_12(void) = AliasedUse : ~mu0_2
|
||||
# 91| v0_13(void) = ExitFunction :
|
||||
|
||||
# 95| void MustExactlyOverlapEscaped(Point)
|
||||
# 95| Block 0
|
||||
@@ -331,7 +338,8 @@ ssa.cpp:
|
||||
# 98| v0_16(void) = NoOp :
|
||||
# 95| v0_17(void) = ReturnVoid :
|
||||
# 95| v0_18(void) = UnmodeledUse : mu*
|
||||
# 95| v0_19(void) = ExitFunction :
|
||||
# 95| v0_19(void) = AliasedUse : ~mu0_2
|
||||
# 95| v0_20(void) = ExitFunction :
|
||||
|
||||
# 100| void MustTotallyOverlap(Point)
|
||||
# 100| Block 0
|
||||
@@ -353,7 +361,8 @@ ssa.cpp:
|
||||
# 103| v0_15(void) = NoOp :
|
||||
# 100| v0_16(void) = ReturnVoid :
|
||||
# 100| v0_17(void) = UnmodeledUse : mu*
|
||||
# 100| v0_18(void) = ExitFunction :
|
||||
# 100| v0_18(void) = AliasedUse : ~mu0_2
|
||||
# 100| v0_19(void) = ExitFunction :
|
||||
|
||||
# 105| void MustTotallyOverlapEscaped(Point)
|
||||
# 105| Block 0
|
||||
@@ -382,7 +391,8 @@ ssa.cpp:
|
||||
# 109| v0_22(void) = NoOp :
|
||||
# 105| v0_23(void) = ReturnVoid :
|
||||
# 105| v0_24(void) = UnmodeledUse : mu*
|
||||
# 105| v0_25(void) = ExitFunction :
|
||||
# 105| v0_25(void) = AliasedUse : ~mu0_2
|
||||
# 105| v0_26(void) = ExitFunction :
|
||||
|
||||
# 111| void MayPartiallyOverlap(int, int)
|
||||
# 111| Block 0
|
||||
@@ -410,7 +420,8 @@ ssa.cpp:
|
||||
# 114| v0_21(void) = NoOp :
|
||||
# 111| v0_22(void) = ReturnVoid :
|
||||
# 111| v0_23(void) = UnmodeledUse : mu*
|
||||
# 111| v0_24(void) = ExitFunction :
|
||||
# 111| v0_24(void) = AliasedUse : ~mu0_2
|
||||
# 111| v0_25(void) = ExitFunction :
|
||||
|
||||
# 116| void MayPartiallyOverlapEscaped(int, int)
|
||||
# 116| Block 0
|
||||
@@ -445,7 +456,8 @@ ssa.cpp:
|
||||
# 120| v0_28(void) = NoOp :
|
||||
# 116| v0_29(void) = ReturnVoid :
|
||||
# 116| v0_30(void) = UnmodeledUse : mu*
|
||||
# 116| v0_31(void) = ExitFunction :
|
||||
# 116| v0_31(void) = AliasedUse : ~mu0_2
|
||||
# 116| v0_32(void) = ExitFunction :
|
||||
|
||||
# 122| void MergeMustExactlyOverlap(bool, int, int)
|
||||
# 122| Block 0
|
||||
@@ -501,7 +513,8 @@ ssa.cpp:
|
||||
# 132| v3_9(void) = NoOp :
|
||||
# 122| v3_10(void) = ReturnVoid :
|
||||
# 122| v3_11(void) = UnmodeledUse : mu*
|
||||
# 122| v3_12(void) = ExitFunction :
|
||||
# 122| v3_12(void) = AliasedUse : ~mu0_2
|
||||
# 122| v3_13(void) = ExitFunction :
|
||||
|
||||
# 134| void MergeMustExactlyWithMustTotallyOverlap(bool, Point, int)
|
||||
# 134| Block 0
|
||||
@@ -552,7 +565,8 @@ ssa.cpp:
|
||||
# 143| v3_5(void) = NoOp :
|
||||
# 134| v3_6(void) = ReturnVoid :
|
||||
# 134| v3_7(void) = UnmodeledUse : mu*
|
||||
# 134| v3_8(void) = ExitFunction :
|
||||
# 134| v3_8(void) = AliasedUse : ~mu0_2
|
||||
# 134| v3_9(void) = ExitFunction :
|
||||
|
||||
# 145| void MergeMustExactlyWithMayPartiallyOverlap(bool, Point, int)
|
||||
# 145| Block 0
|
||||
@@ -602,7 +616,8 @@ ssa.cpp:
|
||||
# 154| v3_4(void) = NoOp :
|
||||
# 145| v3_5(void) = ReturnVoid :
|
||||
# 145| v3_6(void) = UnmodeledUse : mu*
|
||||
# 145| v3_7(void) = ExitFunction :
|
||||
# 145| v3_7(void) = AliasedUse : ~mu0_2
|
||||
# 145| v3_8(void) = ExitFunction :
|
||||
|
||||
# 156| void MergeMustTotallyOverlapWithMayPartiallyOverlap(bool, Rect, int)
|
||||
# 156| Block 0
|
||||
@@ -654,7 +669,8 @@ ssa.cpp:
|
||||
# 165| v3_5(void) = NoOp :
|
||||
# 156| v3_6(void) = ReturnVoid :
|
||||
# 156| v3_7(void) = UnmodeledUse : mu*
|
||||
# 156| v3_8(void) = ExitFunction :
|
||||
# 156| v3_8(void) = AliasedUse : ~mu0_2
|
||||
# 156| v3_9(void) = ExitFunction :
|
||||
|
||||
# 171| void WrapperStruct(Wrapper)
|
||||
# 171| Block 0
|
||||
@@ -688,7 +704,8 @@ ssa.cpp:
|
||||
# 177| v0_27(void) = NoOp :
|
||||
# 171| v0_28(void) = ReturnVoid :
|
||||
# 171| v0_29(void) = UnmodeledUse : mu*
|
||||
# 171| v0_30(void) = ExitFunction :
|
||||
# 171| v0_30(void) = AliasedUse : ~mu0_2
|
||||
# 171| v0_31(void) = ExitFunction :
|
||||
|
||||
# 179| int AsmStmt(int*)
|
||||
# 179| Block 0
|
||||
@@ -706,7 +723,8 @@ ssa.cpp:
|
||||
# 179| r0_11(glval<int>) = VariableAddress[#return] :
|
||||
# 179| v0_12(void) = ReturnValue : &:r0_11, m0_10
|
||||
# 179| v0_13(void) = UnmodeledUse : mu*
|
||||
# 179| v0_14(void) = ExitFunction :
|
||||
# 179| v0_14(void) = AliasedUse : ~mu0_2
|
||||
# 179| v0_15(void) = ExitFunction :
|
||||
|
||||
# 184| void AsmStmtWithOutputs(unsigned int&, unsigned int&, unsigned int&, unsigned int&)
|
||||
# 184| Block 0
|
||||
@@ -735,7 +753,8 @@ ssa.cpp:
|
||||
# 192| v0_22(void) = NoOp :
|
||||
# 184| v0_23(void) = ReturnVoid :
|
||||
# 184| v0_24(void) = UnmodeledUse : mu*
|
||||
# 184| v0_25(void) = ExitFunction :
|
||||
# 184| v0_25(void) = AliasedUse : ~mu0_2
|
||||
# 184| v0_26(void) = ExitFunction :
|
||||
|
||||
# 198| int PureFunctions(char*, char*, int)
|
||||
# 198| Block 0
|
||||
@@ -784,7 +803,8 @@ ssa.cpp:
|
||||
# 198| r0_42(glval<int>) = VariableAddress[#return] :
|
||||
# 198| v0_43(void) = ReturnValue : &:r0_42, m0_41
|
||||
# 198| v0_44(void) = UnmodeledUse : mu*
|
||||
# 198| v0_45(void) = ExitFunction :
|
||||
# 198| v0_45(void) = AliasedUse : ~mu0_2
|
||||
# 198| v0_46(void) = ExitFunction :
|
||||
|
||||
# 207| int ModeledCallTarget(int)
|
||||
# 207| Block 0
|
||||
@@ -811,4 +831,5 @@ ssa.cpp:
|
||||
# 207| r0_20(glval<int>) = VariableAddress[#return] :
|
||||
# 207| v0_21(void) = ReturnValue : &:r0_20, m0_19
|
||||
# 207| v0_22(void) = UnmodeledUse : mu*
|
||||
# 207| v0_23(void) = ExitFunction :
|
||||
# 207| v0_23(void) = AliasedUse : ~mu0_2
|
||||
# 207| v0_24(void) = ExitFunction :
|
||||
|
||||
@@ -610,89 +610,10 @@ lostReachability
|
||||
| range_analysis.c:371:37:371:39 | Constant: 500 |
|
||||
backEdgeCountMismatch
|
||||
useNotDominatedByDefinition
|
||||
| VacuousDestructorCall.cpp:4:3:4:3 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | VacuousDestructorCall.cpp:2:6:2:6 | IR: CallDestructor | void CallDestructor<int>(int, int*) |
|
||||
| condition_decls.cpp:16:15:16:15 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | condition_decls.cpp:15:6:15:17 | IR: if_decl_bind | void if_decl_bind(int) |
|
||||
| condition_decls.cpp:16:15:16:16 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:15:6:15:17 | IR: if_decl_bind | void if_decl_bind(int) |
|
||||
| condition_decls.cpp:16:15:16:16 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | condition_decls.cpp:15:6:15:17 | IR: if_decl_bind | void if_decl_bind(int) |
|
||||
| condition_decls.cpp:17:5:17:15 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:15:6:15:17 | IR: if_decl_bind | void if_decl_bind(int) |
|
||||
| condition_decls.cpp:17:11:17:15 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:15:6:15:17 | IR: if_decl_bind | void if_decl_bind(int) |
|
||||
| condition_decls.cpp:20:5:20:15 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:15:6:15:17 | IR: if_decl_bind | void if_decl_bind(int) |
|
||||
| condition_decls.cpp:20:11:20:15 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:15:6:15:17 | IR: if_decl_bind | void if_decl_bind(int) |
|
||||
| condition_decls.cpp:26:19:26:19 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | condition_decls.cpp:25:6:25:21 | IR: switch_decl_bind | void switch_decl_bind(int) |
|
||||
| condition_decls.cpp:26:19:26:20 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:25:6:25:21 | IR: switch_decl_bind | void switch_decl_bind(int) |
|
||||
| condition_decls.cpp:26:19:26:20 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | condition_decls.cpp:25:6:25:21 | IR: switch_decl_bind | void switch_decl_bind(int) |
|
||||
| condition_decls.cpp:28:5:28:15 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:25:6:25:21 | IR: switch_decl_bind | void switch_decl_bind(int) |
|
||||
| condition_decls.cpp:28:11:28:15 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:25:6:25:21 | IR: switch_decl_bind | void switch_decl_bind(int) |
|
||||
| condition_decls.cpp:31:5:31:15 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:25:6:25:21 | IR: switch_decl_bind | void switch_decl_bind(int) |
|
||||
| condition_decls.cpp:31:11:31:15 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:25:6:25:21 | IR: switch_decl_bind | void switch_decl_bind(int) |
|
||||
| condition_decls.cpp:34:5:34:18 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:25:6:25:21 | IR: switch_decl_bind | void switch_decl_bind(int) |
|
||||
| condition_decls.cpp:34:9:34:13 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:25:6:25:21 | IR: switch_decl_bind | void switch_decl_bind(int) |
|
||||
| condition_decls.cpp:41:18:41:18 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | condition_decls.cpp:40:6:40:20 | IR: while_decl_bind | void while_decl_bind(int) |
|
||||
| condition_decls.cpp:41:18:41:19 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:40:6:40:20 | IR: while_decl_bind | void while_decl_bind(int) |
|
||||
| condition_decls.cpp:41:18:41:19 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | condition_decls.cpp:40:6:40:20 | IR: while_decl_bind | void while_decl_bind(int) |
|
||||
| condition_decls.cpp:42:5:42:7 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:40:6:40:20 | IR: while_decl_bind | void while_decl_bind(int) |
|
||||
| condition_decls.cpp:44:3:44:5 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:40:6:40:20 | IR: while_decl_bind | void while_decl_bind(int) |
|
||||
| condition_decls.cpp:48:48:48:48 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | condition_decls.cpp:47:6:47:18 | IR: for_decl_bind | void for_decl_bind(int) |
|
||||
| condition_decls.cpp:48:48:48:49 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:47:6:47:18 | IR: for_decl_bind | void for_decl_bind(int) |
|
||||
| condition_decls.cpp:48:48:48:49 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | condition_decls.cpp:47:6:47:18 | IR: for_decl_bind | void for_decl_bind(int) |
|
||||
| condition_decls.cpp:48:56:48:61 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:47:6:47:18 | IR: for_decl_bind | void for_decl_bind(int) |
|
||||
| condition_decls.cpp:49:5:49:7 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:47:6:47:18 | IR: for_decl_bind | void for_decl_bind(int) |
|
||||
| condition_decls.cpp:51:3:51:5 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | condition_decls.cpp:47:6:47:18 | IR: for_decl_bind | void for_decl_bind(int) |
|
||||
| cpp11.cpp:28:21:28:21 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | cpp11.cpp:27:7:27:14 | IR: getFirst | int range_based_for_11::getFirst() |
|
||||
| file://:0:0:0:0 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | cpp11.cpp:27:7:27:14 | IR: getFirst | int range_based_for_11::getFirst() |
|
||||
| misc.c:68:16:68:16 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:70:13:70:15 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:72:11:72:11 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:82:5:82:12 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:83:5:83:12 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:83:14:83:14 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:83:17:83:17 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:84:6:84:13 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:84:6:84:13 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:84:16:84:16 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:84:19:84:19 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:85:9:85:13 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:86:9:86:9 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:87:10:87:10 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:88:9:88:9 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:88:9:88:17 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:16:6:16:10 | IR: misc1 | void misc1(int, int) |
|
||||
| misc.c:171:15:171:15 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:168:6:168:8 | IR: vla | void vla() |
|
||||
| misc.c:173:19:173:24 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | misc.c:168:6:168:8 | IR: vla | void vla() |
|
||||
| misc.c:174:17:174:22 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | misc.c:168:6:168:8 | IR: vla | void vla() |
|
||||
| misc.c:174:30:174:35 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | misc.c:168:6:168:8 | IR: vla | void vla() |
|
||||
| misc.c:219:5:219:26 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:219:5:219:26 | IR: assign_designated_init | int assign_designated_init(someStruct*) |
|
||||
| misc.c:220:4:220:5 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | misc.c:219:5:219:26 | IR: assign_designated_init | int assign_designated_init(someStruct*) |
|
||||
| ms_try_except.cpp:9:19:9:19 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | ms_try_except.cpp:2:6:2:18 | IR: ms_try_except | void ms_try_except(int) |
|
||||
| ms_try_except.cpp:19:17:19:17 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | ms_try_except.cpp:2:6:2:18 | IR: ms_try_except | void ms_try_except(int) |
|
||||
| ms_try_mix.cpp:14:16:14:19 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | ms_try_mix.cpp:10:6:10:18 | IR: ms_except_mix | void ms_except_mix(int) |
|
||||
| ms_try_mix.cpp:15:13:15:14 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | ms_try_mix.cpp:10:6:10:18 | IR: ms_except_mix | void ms_except_mix(int) |
|
||||
| ms_try_mix.cpp:16:13:16:19 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | ms_try_mix.cpp:10:6:10:18 | IR: ms_except_mix | void ms_except_mix(int) |
|
||||
| ms_try_mix.cpp:18:16:18:19 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | ms_try_mix.cpp:10:6:10:18 | IR: ms_except_mix | void ms_except_mix(int) |
|
||||
| ms_try_mix.cpp:21:16:21:19 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | ms_try_mix.cpp:10:6:10:18 | IR: ms_except_mix | void ms_except_mix(int) |
|
||||
| ms_try_mix.cpp:24:12:24:15 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | ms_try_mix.cpp:10:6:10:18 | IR: ms_except_mix | void ms_except_mix(int) |
|
||||
| ms_try_mix.cpp:31:16:31:19 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | ms_try_mix.cpp:27:6:27:19 | IR: ms_finally_mix | void ms_finally_mix(int) |
|
||||
| ms_try_mix.cpp:32:13:32:14 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | ms_try_mix.cpp:27:6:27:19 | IR: ms_finally_mix | void ms_finally_mix(int) |
|
||||
| ms_try_mix.cpp:33:13:33:19 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | ms_try_mix.cpp:27:6:27:19 | IR: ms_finally_mix | void ms_finally_mix(int) |
|
||||
| ms_try_mix.cpp:35:16:35:19 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | ms_try_mix.cpp:27:6:27:19 | IR: ms_finally_mix | void ms_finally_mix(int) |
|
||||
| ms_try_mix.cpp:38:16:38:19 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | ms_try_mix.cpp:27:6:27:19 | IR: ms_finally_mix | void ms_finally_mix(int) |
|
||||
| ms_try_mix.cpp:41:12:41:15 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | ms_try_mix.cpp:27:6:27:19 | IR: ms_finally_mix | void ms_finally_mix(int) |
|
||||
| ms_try_mix.cpp:51:5:51:11 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | ms_try_mix.cpp:47:6:47:28 | IR: ms_empty_finally_at_end | void ms_empty_finally_at_end() |
|
||||
| pointer_to_member.cpp:36:11:36:30 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | pointer_to_member.cpp:32:6:32:14 | IR: pmIsConst | void pmIsConst() |
|
||||
| pointer_to_member.cpp:36:13:36:19 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | pointer_to_member.cpp:32:6:32:14 | IR: pmIsConst | void pmIsConst() |
|
||||
| pointer_to_member.cpp:36:22:36:28 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | pointer_to_member.cpp:32:6:32:14 | IR: pmIsConst | void pmIsConst() |
|
||||
| stmt_expr.cpp:30:20:30:21 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | stmt_expr.cpp:21:6:21:6 | IR: g | void stmtexpr::g(int) |
|
||||
| stmt_expr.cpp:31:16:31:18 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | stmt_expr.cpp:21:6:21:6 | IR: g | void stmtexpr::g(int) |
|
||||
| try_catch.cpp:21:13:21:24 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | try_catch.cpp:19:6:19:23 | IR: throw_from_nonstmt | void throw_from_nonstmt(int) |
|
||||
| vla.c:3:5:3:8 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | vla.c:3:5:3:8 | IR: main | int main(int, char**) |
|
||||
| vla.c:5:16:5:19 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | vla.c:3:5:3:8 | IR: main | int main(int, char**) |
|
||||
| vla.c:5:22:5:25 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | vla.c:3:5:3:8 | IR: main | int main(int, char**) |
|
||||
| vla.c:5:27:5:30 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | vla.c:3:5:3:8 | IR: main | int main(int, char**) |
|
||||
| vla.c:5:27:5:33 | Load | Operand 'Load' is not dominated by its definition in function '$@'. | vla.c:3:5:3:8 | IR: main | int main(int, char**) |
|
||||
| vla.c:12:37:12:42 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | vla.c:11:6:11:16 | IR: vla_typedef | void vla_typedef() |
|
||||
| vla.c:12:55:12:60 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | vla.c:11:6:11:16 | IR: vla_typedef | void vla_typedef() |
|
||||
| vla.c:14:40:14:45 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | vla.c:11:6:11:16 | IR: vla_typedef | void vla_typedef() |
|
||||
| vla.c:14:58:14:63 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | vla.c:11:6:11:16 | IR: vla_typedef | void vla_typedef() |
|
||||
| vla.c:14:74:14:79 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | vla.c:11:6:11:16 | IR: vla_typedef | void vla_typedef() |
|
||||
missingCanonicalLanguageType
|
||||
multipleCanonicalLanguageTypes
|
||||
missingIRType
|
||||
|
||||
@@ -67,7 +67,8 @@ test.cpp:
|
||||
# 1| valnum = unique
|
||||
# 1| v0_33(void) = ReturnValue : &:r0_32
|
||||
# 1| v0_34(void) = UnmodeledUse : mu*
|
||||
# 1| v0_35(void) = ExitFunction :
|
||||
# 1| v0_35(void) = AliasedUse : ~m0_1
|
||||
# 1| v0_36(void) = ExitFunction :
|
||||
|
||||
# 12| int test01(int, int)
|
||||
# 12| Block 0
|
||||
@@ -149,7 +150,8 @@ test.cpp:
|
||||
# 12| valnum = unique
|
||||
# 12| v0_39(void) = ReturnValue : &:r0_38
|
||||
# 12| v0_40(void) = UnmodeledUse : mu*
|
||||
# 12| v0_41(void) = ExitFunction :
|
||||
# 12| v0_41(void) = AliasedUse : ~m0_1
|
||||
# 12| v0_42(void) = ExitFunction :
|
||||
|
||||
# 25| int test02(int, int)
|
||||
# 25| Block 0
|
||||
@@ -238,7 +240,8 @@ test.cpp:
|
||||
# 25| valnum = unique
|
||||
# 25| v0_43(void) = ReturnValue : &:r0_42
|
||||
# 25| v0_44(void) = UnmodeledUse : mu*
|
||||
# 25| v0_45(void) = ExitFunction :
|
||||
# 25| v0_45(void) = AliasedUse : ~m0_26
|
||||
# 25| v0_46(void) = ExitFunction :
|
||||
|
||||
# 39| int test03(int, int, int*)
|
||||
# 39| Block 0
|
||||
@@ -334,7 +337,8 @@ test.cpp:
|
||||
# 39| valnum = unique
|
||||
# 39| v0_46(void) = ReturnValue : &:r0_45
|
||||
# 39| v0_47(void) = UnmodeledUse : mu*
|
||||
# 39| v0_48(void) = ExitFunction :
|
||||
# 39| v0_48(void) = AliasedUse : ~m0_29
|
||||
# 39| v0_49(void) = ExitFunction :
|
||||
|
||||
# 49| unsigned int my_strspn(char const*, char const*)
|
||||
# 49| Block 0
|
||||
@@ -496,7 +500,8 @@ test.cpp:
|
||||
# 49| valnum = r9_1
|
||||
# 49| v9_6(void) = ReturnValue : &:r9_5, m9_4
|
||||
# 49| v9_7(void) = UnmodeledUse : mu*
|
||||
# 49| v9_8(void) = ExitFunction :
|
||||
# 49| v9_8(void) = AliasedUse : ~m0_1
|
||||
# 49| v9_9(void) = ExitFunction :
|
||||
|
||||
# 75| void test04(two_values*)
|
||||
# 75| Block 0
|
||||
@@ -575,10 +580,13 @@ test.cpp:
|
||||
#-----| Goto -> Block 2
|
||||
|
||||
# 82| Block 2
|
||||
# 82| v2_0(void) = NoOp :
|
||||
# 75| v2_1(void) = ReturnVoid :
|
||||
# 75| v2_2(void) = UnmodeledUse : mu*
|
||||
# 75| v2_3(void) = ExitFunction :
|
||||
# 82| m2_0(unknown) = Phi : from 0:~m0_9, from 1:~m1_3
|
||||
# 82| valnum = unique
|
||||
# 82| v2_1(void) = NoOp :
|
||||
# 75| v2_2(void) = ReturnVoid :
|
||||
# 75| v2_3(void) = UnmodeledUse : mu*
|
||||
# 75| v2_4(void) = AliasedUse : ~m2_0
|
||||
# 75| v2_5(void) = ExitFunction :
|
||||
|
||||
# 84| void test05(int, int, void*)
|
||||
# 84| Block 0
|
||||
@@ -651,7 +659,8 @@ test.cpp:
|
||||
# 89| v3_5(void) = NoOp :
|
||||
# 84| v3_6(void) = ReturnVoid :
|
||||
# 84| v3_7(void) = UnmodeledUse : mu*
|
||||
# 84| v3_8(void) = ExitFunction :
|
||||
# 84| v3_8(void) = AliasedUse : ~m0_1
|
||||
# 84| v3_9(void) = ExitFunction :
|
||||
|
||||
# 91| int regression_test00()
|
||||
# 91| Block 0
|
||||
@@ -682,7 +691,8 @@ test.cpp:
|
||||
# 91| valnum = r0_8
|
||||
# 91| v0_13(void) = ReturnValue : &:r0_12, m0_11
|
||||
# 91| v0_14(void) = UnmodeledUse : mu*
|
||||
# 91| v0_15(void) = ExitFunction :
|
||||
# 91| v0_15(void) = AliasedUse : ~m0_1
|
||||
# 91| v0_16(void) = ExitFunction :
|
||||
|
||||
# 104| int inheritanceConversions(Derived*)
|
||||
# 104| Block 0
|
||||
@@ -743,7 +753,8 @@ test.cpp:
|
||||
# 104| valnum = r0_23
|
||||
# 104| v0_28(void) = ReturnValue : &:r0_27, m0_26
|
||||
# 104| v0_29(void) = UnmodeledUse : mu*
|
||||
# 104| v0_30(void) = ExitFunction :
|
||||
# 104| v0_30(void) = AliasedUse : ~m0_1
|
||||
# 104| v0_31(void) = ExitFunction :
|
||||
|
||||
# 112| void test06()
|
||||
# 112| Block 0
|
||||
@@ -763,4 +774,5 @@ test.cpp:
|
||||
# 117| v0_7(void) = NoOp :
|
||||
# 112| v0_8(void) = ReturnVoid :
|
||||
# 112| v0_9(void) = UnmodeledUse : mu*
|
||||
# 112| v0_10(void) = ExitFunction :
|
||||
# 112| v0_10(void) = AliasedUse : ~m0_1
|
||||
# 112| v0_11(void) = ExitFunction :
|
||||
|
||||
Reference in New Issue
Block a user