From 2fb1d4d1b12aacec17cd5eb8d2e912afce00f77f Mon Sep 17 00:00:00 2001 From: Robert Marsh Date: Thu, 14 Nov 2019 10:29:48 -0800 Subject: [PATCH] C++: fix IR return block successors --- .../raw/internal/TranslatedFunction.qll | 4 +- .../dataflow-tests/test_diff.expected | 8 +- .../dataflow/dataflow-tests/test_ir.expected | 8 +- .../dataflow/taint-tests/test_diff.expected | 4 +- .../dataflow/taint-tests/test_ir.expected | 4 +- .../ir/constant_func/constant_func.expected | 6 + .../library-tests/ir/ir/PrintAST.expected | 51 +- .../ir/ir/aliased_ssa_sanity.expected | 140 - .../test/library-tests/ir/ir/raw_ir.expected | 3453 ++++++++--------- .../library-tests/ir/ir/raw_sanity.expected | 143 - .../ir/ir/unaliased_ssa_sanity.expected | 143 - .../ir/ssa/aliased_ssa_ir.expected | 92 +- .../ir/ssa/aliased_ssa_sanity.expected | 21 - .../ir/ssa/unaliased_ssa_ir.expected | 93 +- .../ir/ssa/unaliased_ssa_sanity.expected | 21 - .../syntax-zoo/aliased_ssa_sanity.expected | 413 +- .../syntax-zoo/drawDifferent.expected | 161 +- .../syntax-zoo/raw_sanity.expected | 461 --- .../syntax-zoo/tellDifferent.expected | 11 + .../syntax-zoo/unaliased_ssa_sanity.expected | 422 -- .../GlobalValueNumbering/ir_gvn.expected | 159 +- 21 files changed, 1926 insertions(+), 3892 deletions(-) diff --git a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll index 5d9eb538ff2..fd8f4579e32 100644 --- a/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll +++ b/cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll @@ -123,8 +123,8 @@ class TranslatedFunction extends TranslatedElement, TTranslatedFunction { or child = getReadEffects() and if hasReturnValue() - then result = getInstruction(ReturnTag()) - else result = getInstruction(ReturnValueAddressTag()) + then result = getInstruction(ReturnValueAddressTag()) + else result = getInstruction(ReturnTag()) } final override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) { diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test_diff.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test_diff.expected index 159365f0131..0af544675d7 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test_diff.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test_diff.expected @@ -7,6 +7,7 @@ | lambdas.cpp:8:10:8:15 | lambdas.cpp:18:8:18:8 | AST only | | lambdas.cpp:8:10:8:15 | lambdas.cpp:21:3:21:6 | AST only | | lambdas.cpp:8:10:8:15 | lambdas.cpp:29:3:29:6 | AST only | +| lambdas.cpp:8:10:8:15 | lambdas.cpp:35:8:35:8 | AST only | | lambdas.cpp:8:10:8:15 | lambdas.cpp:41:8:41:8 | AST only | | lambdas.cpp:43:7:43:12 | lambdas.cpp:46:7:46:7 | AST only | | ref.cpp:29:11:29:16 | ref.cpp:62:10:62:11 | AST only | @@ -22,13 +23,6 @@ | test.cpp:89:28:89:34 | test.cpp:92:8:92:14 | IR only | | test.cpp:100:13:100:18 | test.cpp:103:10:103:12 | AST only | | test.cpp:109:9:109:14 | test.cpp:110:10:110:12 | IR only | -| test.cpp:138:27:138:32 | test.cpp:140:8:140:8 | AST only | -| test.cpp:151:33:151:38 | test.cpp:152:8:152:8 | AST only | -| test.cpp:164:34:164:39 | test.cpp:165:8:165:8 | AST only | -| test.cpp:171:11:171:16 | test.cpp:178:8:178:8 | AST only | -| test.cpp:265:22:265:27 | test.cpp:266:12:266:12 | AST only | -| test.cpp:305:17:305:22 | test.cpp:289:14:289:14 | AST only | -| test.cpp:314:4:314:9 | test.cpp:318:7:318:7 | AST only | | test.cpp:347:17:347:22 | test.cpp:349:10:349:18 | AST only | | test.cpp:359:13:359:18 | test.cpp:365:10:365:14 | AST only | | test.cpp:373:13:373:18 | test.cpp:369:10:369:14 | AST only | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test_ir.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test_ir.expected index e8bf42edae0..ec1fc39b04e 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/test_ir.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/test_ir.expected @@ -3,7 +3,6 @@ | clang.cpp:37:10:37:11 | Load: m2 | clang.cpp:34:32:34:37 | Call: call to source | | clang.cpp:41:18:41:19 | Load: m2 | clang.cpp:39:42:39:47 | Call: call to source | | clang.cpp:45:17:45:18 | Load: m2 | clang.cpp:43:35:43:40 | Call: call to source | -| lambdas.cpp:35:8:35:8 | Load: a | lambdas.cpp:8:10:8:15 | Call: call to source | | test.cpp:7:8:7:9 | Load: t1 | test.cpp:6:12:6:17 | Call: call to source | | test.cpp:9:8:9:9 | Load: t1 | test.cpp:6:12:6:17 | Call: call to source | | test.cpp:10:8:10:9 | Load: t2 | test.cpp:6:12:6:17 | Call: call to source | @@ -19,9 +18,16 @@ | test.cpp:90:8:90:14 | Load: source1 | test.cpp:89:28:89:34 | InitializeParameter: source1 | | test.cpp:92:8:92:14 | Load: source1 | test.cpp:89:28:89:34 | InitializeParameter: source1 | | test.cpp:110:10:110:12 | Load: (reference dereference) | test.cpp:109:9:109:14 | Call: call to source | +| test.cpp:140:8:140:8 | Load: y | test.cpp:138:27:138:32 | Call: call to source | | test.cpp:144:8:144:8 | Load: s | test.cpp:151:33:151:38 | Call: call to source | +| test.cpp:152:8:152:8 | Load: y | test.cpp:151:33:151:38 | Call: call to source | | test.cpp:157:8:157:8 | Load: x | test.cpp:164:34:164:39 | Call: call to source | +| test.cpp:165:8:165:8 | Load: y | test.cpp:164:34:164:39 | Call: call to source | +| test.cpp:178:8:178:8 | Load: y | test.cpp:171:11:171:16 | Call: call to source | | test.cpp:260:12:260:12 | Load: x | test.cpp:245:14:245:19 | Call: call to source | +| test.cpp:266:12:266:12 | Load: x | test.cpp:265:22:265:27 | Call: call to source | +| test.cpp:289:14:289:14 | Load: x | test.cpp:305:17:305:22 | Call: call to source | +| test.cpp:318:7:318:7 | Load: x | test.cpp:314:4:314:9 | Call: call to source | | test.cpp:450:9:450:22 | CopyValue: (statement expression) | test.cpp:449:26:449:32 | InitializeParameter: source1 | | test.cpp:461:8:461:12 | Load: local | test.cpp:449:26:449:32 | InitializeParameter: source1 | | true_upon_entry.cpp:13:8:13:8 | Load: x | true_upon_entry.cpp:9:11:9:16 | Call: call to source | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_diff.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_diff.expected index 6bced33bca5..f0725b21050 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_diff.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_diff.expected @@ -9,7 +9,6 @@ | taint.cpp:109:7:109:13 | taint.cpp:105:12:105:17 | IR only | | taint.cpp:130:7:130:9 | taint.cpp:127:8:127:13 | IR only | | taint.cpp:137:7:137:9 | taint.cpp:120:11:120:16 | AST only | -| taint.cpp:151:7:151:12 | taint.cpp:151:20:151:25 | AST only | | taint.cpp:173:8:173:13 | taint.cpp:164:19:164:24 | AST only | | taint.cpp:181:8:181:9 | taint.cpp:185:11:185:16 | AST only | | taint.cpp:195:7:195:7 | taint.cpp:192:23:192:28 | AST only | @@ -20,10 +19,9 @@ | taint.cpp:233:8:233:8 | taint.cpp:223:10:223:15 | AST only | | taint.cpp:236:3:236:6 | taint.cpp:223:10:223:15 | AST only | | taint.cpp:244:3:244:6 | taint.cpp:223:10:223:15 | AST only | +| taint.cpp:250:8:250:8 | taint.cpp:223:10:223:15 | AST only | | taint.cpp:256:8:256:8 | taint.cpp:223:10:223:15 | AST only | | taint.cpp:261:7:261:7 | taint.cpp:258:7:258:12 | AST only | -| taint.cpp:290:7:290:7 | taint.cpp:275:6:275:11 | AST only | -| taint.cpp:291:7:291:7 | taint.cpp:275:6:275:11 | AST only | | taint.cpp:350:7:350:7 | taint.cpp:330:6:330:11 | AST only | | taint.cpp:351:7:351:7 | taint.cpp:330:6:330:11 | AST only | | taint.cpp:352:7:352:7 | taint.cpp:330:6:330:11 | AST only | diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_ir.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_ir.expected index 80960b215d9..2f2677401dc 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_ir.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_ir.expected @@ -5,10 +5,12 @@ | taint.cpp:129:7:129:9 | Load: * ... | taint.cpp:120:11:120:16 | Call: call to source | | taint.cpp:130:7:130:9 | Load: * ... | taint.cpp:127:8:127:13 | Call: call to source | | taint.cpp:134:7:134:9 | Load: * ... | taint.cpp:120:11:120:16 | Call: call to source | +| taint.cpp:151:7:151:12 | Call: call to select | taint.cpp:151:20:151:25 | Call: call to source | | taint.cpp:167:8:167:13 | Call: call to source | taint.cpp:167:8:167:13 | Call: call to source | | taint.cpp:168:8:168:14 | Load: tainted | taint.cpp:164:19:164:24 | Call: call to source | | taint.cpp:210:7:210:7 | Load: x | taint.cpp:207:6:207:11 | Call: call to source | -| taint.cpp:250:8:250:8 | Load: a | taint.cpp:223:10:223:15 | Call: call to source | | taint.cpp:280:7:280:7 | Load: t | taint.cpp:275:6:275:11 | Call: call to source | | taint.cpp:289:7:289:7 | Load: t | taint.cpp:275:6:275:11 | Call: call to source | +| taint.cpp:290:7:290:7 | Load: x | taint.cpp:275:6:275:11 | Call: call to source | +| taint.cpp:291:7:291:7 | Load: y | taint.cpp:275:6:275:11 | Call: call to source | | taint.cpp:337:7:337:7 | Load: t | taint.cpp:330:6:330:11 | Call: call to source | diff --git a/cpp/ql/test/library-tests/ir/constant_func/constant_func.expected b/cpp/ql/test/library-tests/ir/constant_func/constant_func.expected index e69de29bb2d..3cba189a0ab 100644 --- a/cpp/ql/test/library-tests/ir/constant_func/constant_func.expected +++ b/cpp/ql/test/library-tests/ir/constant_func/constant_func.expected @@ -0,0 +1,6 @@ +| constant_func.cpp:1:5:1:18 | IR: ReturnConstant | 7 | +| constant_func.cpp:5:5:5:21 | IR: ReturnConstantPhi | 7 | +| constant_func.cpp:25:5:25:25 | IR: ReturnConstantPhiLoop | 7 | +| constant_func.cpp:34:5:34:22 | IR: UnreachableViaGoto | 0 | +| constant_func.cpp:41:5:41:17 | IR: UnreachableIf | 0 | +| constant_func.cpp:62:5:62:16 | IR: DoWhileFalse | 1 | diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 19a4288a4c4..3e393151f9b 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -67,31 +67,7 @@ bad_asts.cpp: # 5| params: #-----| 0: [Parameter] p#0 #-----| Type = [RValueReferenceType] S && -# 9| [MemberFunction] int Bad::S::MemberFunction(int) -# 9| params: -# 9| 0: [Parameter] y -# 9| Type = [IntType] int -# 9| body: [Block] { ... } -# 10| 0: [ReturnStmt] return ... -# 10| 0: [AddExpr] ... + ... -# 10| Type = [IntType] int -# 10| ValueCategory = prvalue -# 10| 0: [AddExpr] ... + ... -# 10| Type = [IntType] int -# 10| ValueCategory = prvalue -# 10| 0: [Literal] Unknown literal -# 10| Type = [IntType] int -# 10| ValueCategory = prvalue -# 10| 1: [PointerFieldAccess] x -# 10| Type = [IntType] int -# 10| ValueCategory = prvalue(load) -#-----| -1: [ThisExpr] this -#-----| Type = [PointerType] S * -#-----| ValueCategory = prvalue(load) -# 10| 1: [VariableAccess] y -# 10| Type = [IntType] int -# 10| ValueCategory = prvalue(load) -# 9| [TopLevelFunction] int MemberFunction(int) +# 9| [FunctionTemplateInstantiation,MemberFunction] int Bad::S::MemberFunction(int) # 9| params: # 9| 0: [Parameter] y # 9| Type = [IntType] int @@ -116,6 +92,31 @@ bad_asts.cpp: # 10| 1: [VariableAccess] y # 10| Type = [IntType] int # 10| ValueCategory = prvalue(load) +# 9| [MemberFunction,TemplateFunction] int Bad::S::MemberFunction(int) +# 9| params: +# 9| 0: [Parameter] y +# 9| Type = [IntType] int +# 9| body: [Block] { ... } +# 10| 0: [ReturnStmt] return ... +# 10| 0: [AddExpr] ... + ... +# 10| Type = [IntType] int +# 10| ValueCategory = prvalue +# 10| 0: [AddExpr] ... + ... +# 10| Type = [IntType] int +# 10| ValueCategory = prvalue +# 10| 0: [Literal] t +# 10| Type = [IntType] int +# 10| Value = [Literal] t +# 10| ValueCategory = prvalue +# 10| 1: [PointerFieldAccess] x +# 10| Type = [IntType] int +# 10| ValueCategory = prvalue(load) +#-----| -1: [ThisExpr] this +#-----| Type = [PointerType] S * +#-----| ValueCategory = prvalue(load) +# 10| 1: [VariableAccess] y +# 10| Type = [IntType] int +# 10| ValueCategory = prvalue(load) # 14| [TopLevelFunction] void Bad::CallBadMemberFunction() # 14| params: # 14| body: [Block] { ... } diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_sanity.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_sanity.expected index 610fe092f9a..928f535f9d8 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_sanity.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_sanity.expected @@ -1,150 +1,10 @@ missingOperand -| clang.cpp:5:6:5:21 | ReturnValue: globalIntAddress | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | clang.cpp:5:6:5:21 | IR: globalIntAddress | int* globalIntAddress() | -| ir.cpp:235:5:235:14 | ReturnValue: Parameters | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:235:5:235:14 | IR: Parameters | int Parameters(int, int) | -| ir.cpp:341:5:341:15 | ReturnValue: Dereference | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:341:5:341:15 | IR: Dereference | int Dereference(int*) | -| ir.cpp:348:6:348:14 | ReturnValue: AddressOf | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:348:6:348:14 | IR: AddressOf | int* AddressOf() | -| ir.cpp:376:5:376:11 | ReturnValue: CallAdd | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:376:5:376:11 | IR: CallAdd | int CallAdd(int, int) | -| ir.cpp:380:5:380:9 | ReturnValue: Comma | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:380:5:380:9 | IR: Comma | int Comma(int, int) | -| ir.cpp:422:7:422:18 | ReturnValue: ReturnStruct | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:422:7:422:18 | IR: ReturnStruct | Point ReturnStruct(Point) | -| ir.cpp:543:5:543:20 | ReturnValue: EarlyReturnValue | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:543:5:543:20 | IR: EarlyReturnValue | int EarlyReturnValue(int, int) | -| ir.cpp:551:5:551:18 | ReturnValue: CallViaFuncPtr | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:551:5:551:18 | IR: CallViaFuncPtr | int CallViaFuncPtr(int(*)(int)) | -| ir.cpp:560:5:560:14 | ReturnValue: EnumSwitch | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:560:5:560:14 | IR: EnumSwitch | int EnumSwitch(E) | -| ir.cpp:630:16:630:35 | ReturnValue: StaticMemberFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:630:16:630:35 | IR: StaticMemberFunction | int C::StaticMemberFunction(int) | -| ir.cpp:634:9:634:30 | ReturnValue: InstanceMemberFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:634:9:634:30 | IR: InstanceMemberFunction | int C::InstanceMemberFunction(int) | -| ir.cpp:638:17:638:37 | ReturnValue: VirtualMemberFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:638:17:638:37 | IR: VirtualMemberFunction | int C::VirtualMemberFunction(int) | -| ir.cpp:675:5:675:18 | ReturnValue: DerefReference | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:675:5:675:18 | IR: DerefReference | int DerefReference(int&) | -| ir.cpp:679:6:679:18 | ReturnValue: TakeReference | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:679:6:679:18 | IR: TakeReference | int& TakeReference() | -| ir.cpp:704:3:704:3 | ReturnValue: min | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:704:3:704:3 | IR: min | int min(int, int) | -| ir.cpp:708:5:708:11 | ReturnValue: CallMin | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:708:5:708:11 | IR: CallMin | int CallMin(int, int) | -| ir.cpp:715:12:715:12 | ReturnValue: Func | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:715:12:715:12 | IR: Func | long Outer::Func(void*, char) | -| ir.cpp:720:8:720:29 | ReturnValue: CallNestedTemplateFunc | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:720:8:720:29 | IR: CallNestedTemplateFunc | double CallNestedTemplateFunc() | -| ir.cpp:745:8:745:8 | ReturnValue: operator= | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:745:8:745:8 | IR: operator= | Base& Base::operator=(Base const&) | -| ir.cpp:754:8:754:8 | ReturnValue: operator= | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:754:8:754:8 | IR: operator= | Middle& Middle::operator=(Middle const&) | -| ir.cpp:763:8:763:8 | ReturnValue: operator= | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:763:8:763:8 | IR: operator= | Derived& Derived::operator=(Derived const&) | -| ir.cpp:961:5:961:18 | ReturnValue: designatedInit | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:961:5:961:18 | IR: designatedInit | int designatedInit() | -| ir.cpp:987:5:987:16 | ReturnValue: PointerDecay | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:987:5:987:16 | IR: PointerDecay | int PointerDecay(int[], int(float)) | -| ir.cpp:991:5:991:12 | ReturnValue: ExprStmt | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:991:5:991:12 | IR: ExprStmt | int ExprStmt(int, int, int) | -| ir.cpp:1029:14:1029:14 | ReturnValue: operator void (*)() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1029:14:1029:14 | IR: operator void (*)() | void(* (lambda [] type at line 1029, col. 12)::operator void (*)()() const)() | -| ir.cpp:1032:25:1032:25 | ReturnValue: operator char (*)(float) | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1032:25:1032:25 | IR: operator char (*)(float) | char(* (void Lambda(int, String const&))::(lambda [] type at line 1032, col. 23)::operator char (*)(float)() const)(float) | -| ir.cpp:1032:25:1032:25 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1032:25:1032:25 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1032, col. 23)::operator()(float) const | -| ir.cpp:1034:24:1034:24 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1034:24:1034:24 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1034, col. 21)::operator()(float) const | -| ir.cpp:1036:24:1036:24 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1036:24:1036:24 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1036, col. 21)::operator()(float) const | -| ir.cpp:1038:34:1038:34 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1038:34:1038:34 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1038, col. 30)::operator()(float) const | -| ir.cpp:1040:33:1040:33 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1040:33:1040:33 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1040, col. 30)::operator()(float) const | -| ir.cpp:1042:39:1042:39 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1042:39:1042:39 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1042, col. 32)::operator()(float) const | -| ir.cpp:1045:49:1045:49 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1045:49:1045:49 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1045, col. 23)::operator()(float) const | -| ir.cpp:1099:5:1099:11 | ReturnValue: AsmStmt | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1099:5:1099:11 | IR: AsmStmt | int AsmStmt(int) | -| ir.cpp:1163:5:1163:21 | ReturnValue: ModeledCallTarget | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1163:5:1163:21 | IR: ModeledCallTarget | int ModeledCallTarget(int) | -| perf-regression.cpp:9:5:9:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | perf-regression.cpp:9:5:9:8 | IR: main | int main() | unexpectedOperand duplicateOperand missingPhiOperand missingOperandType sideEffectWithoutPrimary instructionWithoutSuccessor -| bad_asts.cpp:17:3:17:3 | NoOp: return ... | -| bad_asts.cpp:23:5:23:5 | NoOp: return ... | -| bad_asts.cpp:26:41:26:41 | ReturnIndirection: a | -| bad_asts.cpp:34:3:34:3 | NoOp: return ... | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| ir.cpp:41:1:41:1 | NoOp: return ... | -| ir.cpp:48:1:48:1 | NoOp: return ... | -| ir.cpp:85:1:85:1 | NoOp: return ... | -| ir.cpp:96:1:96:1 | NoOp: return ... | -| ir.cpp:105:1:105:1 | NoOp: return ... | -| ir.cpp:112:1:112:1 | NoOp: return ... | -| ir.cpp:131:1:131:1 | NoOp: return ... | -| ir.cpp:142:1:142:1 | NoOp: return ... | -| ir.cpp:151:1:151:1 | NoOp: return ... | -| ir.cpp:153:22:153:22 | ReturnIndirection: p | -| ir.cpp:171:23:171:23 | ReturnIndirection: p | -| ir.cpp:191:1:191:1 | NoOp: return ... | -| ir.cpp:193:34:193:34 | ReturnIndirection: q | -| ir.cpp:204:26:204:26 | ReturnIndirection: p | -| ir.cpp:228:1:228:1 | NoOp: return ... | -| ir.cpp:233:1:233:1 | NoOp: return ... | -| ir.cpp:251:1:251:1 | NoOp: return ... | -| ir.cpp:257:1:257:1 | NoOp: return ... | -| ir.cpp:263:1:263:1 | NoOp: return ... | -| ir.cpp:309:1:309:1 | NoOp: return ... | -| ir.cpp:315:1:315:1 | NoOp: return ... | -| ir.cpp:323:1:323:1 | NoOp: return ... | -| ir.cpp:331:1:331:1 | NoOp: return ... | -| ir.cpp:358:1:358:1 | NoOp: return ... | -| ir.cpp:367:1:367:1 | NoOp: return ... | -| ir.cpp:374:1:374:1 | NoOp: return ... | -| ir.cpp:410:1:410:1 | NoOp: return ... | -| ir.cpp:431:1:431:1 | NoOp: return ... | -| ir.cpp:445:1:445:1 | NoOp: return ... | -| ir.cpp:459:1:459:1 | NoOp: return ... | -| ir.cpp:473:1:473:1 | NoOp: return ... | -| ir.cpp:480:1:480:1 | NoOp: return ... | -| ir.cpp:484:1:484:1 | NoOp: return ... | -| ir.cpp:490:1:490:1 | NoOp: return ... | -| ir.cpp:494:1:494:1 | NoOp: return ... | -| ir.cpp:501:1:501:1 | NoOp: return ... | -| ir.cpp:510:1:510:1 | NoOp: return ... | -| ir.cpp:517:1:517:1 | NoOp: return ... | -| ir.cpp:523:1:523:1 | NoOp: return ... | -| ir.cpp:533:1:533:1 | NoOp: return ... | -| ir.cpp:537:9:537:15 | NoOp: return ... | -| ir.cpp:541:1:541:1 | NoOp: return ... | -| ir.cpp:580:1:580:1 | NoOp: return ... | -| ir.cpp:586:1:586:1 | NoOp: return ... | -| ir.cpp:595:1:595:1 | NoOp: return ... | -| ir.cpp:620:1:620:1 | NoOp: return ... | -| ir.cpp:622:37:622:37 | ReturnIndirection: p | -| ir.cpp:650:5:650:5 | NoOp: return ... | -| ir.cpp:656:5:656:5 | NoOp: return ... | -| ir.cpp:664:5:664:5 | NoOp: return ... | -| ir.cpp:689:1:689:1 | NoOp: return ... | -| ir.cpp:695:1:695:1 | NoOp: return ... | -| ir.cpp:701:1:701:1 | NoOp: return ... | -| ir.cpp:743:1:743:1 | NoOp: return ... | -| ir.cpp:749:3:749:3 | NoOp: return ... | -| ir.cpp:751:3:751:3 | Chi: call to ~String | -| ir.cpp:758:3:758:3 | NoOp: return ... | -| ir.cpp:760:3:760:3 | Chi: call to ~Base | -| ir.cpp:767:3:767:3 | NoOp: return ... | -| ir.cpp:769:3:769:3 | Chi: call to ~Middle | -| ir.cpp:776:3:776:3 | NoOp: return ... | -| ir.cpp:778:3:778:3 | Chi: call to ~Base | -| ir.cpp:785:3:785:3 | NoOp: return ... | -| ir.cpp:787:3:787:3 | Chi: call to ~Base | -| ir.cpp:794:3:794:3 | NoOp: return ... | -| ir.cpp:796:3:796:3 | Chi: call to ~Base | -| ir.cpp:840:1:840:1 | NoOp: return ... | -| ir.cpp:842:8:842:8 | NoOp: return ... | -| ir.cpp:846:8:846:8 | Chi: call to ~PolymorphicBase | -| ir.cpp:846:8:846:8 | NoOp: return ... | -| ir.cpp:865:1:865:1 | NoOp: return ... | -| ir.cpp:869:1:869:1 | NoOp: return ... | -| ir.cpp:881:1:881:1 | NoOp: return ... | -| ir.cpp:883:47:883:47 | ReturnIndirection: p | -| ir.cpp:898:1:898:1 | NoOp: return ... | -| ir.cpp:902:1:902:1 | NoOp: return ... | -| ir.cpp:907:1:907:1 | NoOp: return ... | -| ir.cpp:948:1:948:1 | NoOp: return ... | -| ir.cpp:959:1:959:1 | NoOp: return ... | -| ir.cpp:976:1:976:1 | NoOp: return ... | -| ir.cpp:985:1:985:1 | NoOp: return ... | -| ir.cpp:1012:1:1012:1 | NoOp: return ... | -| ir.cpp:1021:1:1021:1 | NoOp: return ... | -| ir.cpp:1027:1:1027:1 | NoOp: return ... | -| ir.cpp:1029:18:1029:18 | NoOp: return ... | -| ir.cpp:1031:34:1031:34 | ReturnIndirection: s | -| ir.cpp:1036:21:1036:21 | Chi: call to ~String | -| ir.cpp:1040:30:1040:30 | Chi: call to ~String | -| ir.cpp:1068:39:1068:39 | ReturnIndirection: v | -| ir.cpp:1104:79:1104:79 | ReturnIndirection: c | -| ir.cpp:1120:1:1120:1 | NoOp: return ... | -| ir.cpp:1131:1:1131:1 | NoOp: return ... | -| ir.cpp:1149:1:1149:1 | NoOp: return ... | -| ir.cpp:1159:1:1159:1 | NoOp: return ... | -| perf-regression.cpp:6:21:6:21 | NoOp: return ... | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index d633db6b50c..e31be3c0034 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -1,4 +1,27 @@ bad_asts.cpp: +# 9| int Bad::S::MemberFunction(int) +# 9| Block 0 +# 9| v0_0(void) = EnterFunction : +# 9| mu0_1(unknown) = AliasedDefinition : +# 9| mu0_2(unknown) = UnmodeledDefinition : +# 9| r0_3(glval) = InitializeThis : +# 9| r0_4(glval) = VariableAddress[y] : +# 9| mu0_5(int) = InitializeParameter[y] : &:r0_4 +# 10| r0_6(glval) = VariableAddress[#return] : +# 10| r0_7(int) = Constant[6] : +#-----| r0_8(S *) = CopyValue : r0_3 +# 10| r0_9(glval) = FieldAddress[x] : r0_8 +# 10| r0_10(int) = Load : &:r0_9, ~mu0_2 +# 10| r0_11(int) = Add : r0_7, r0_10 +# 10| r0_12(glval) = VariableAddress[y] : +# 10| r0_13(int) = Load : &:r0_12, ~mu0_2 +# 10| r0_14(int) = Add : r0_11, r0_13 +# 10| mu0_15(int) = Store : &:r0_6, r0_14 +# 9| r0_16(glval) = VariableAddress[#return] : +# 9| v0_17(void) = ReturnValue : &:r0_16, ~mu0_2 +# 9| v0_18(void) = UnmodeledUse : mu* +# 9| v0_19(void) = ExitFunction : + # 14| void Bad::CallBadMemberFunction() # 14| Block 0 # 14| v0_0(void) = EnterFunction : @@ -17,11 +40,9 @@ bad_asts.cpp: # 16| v0_13(void) = ^IndirectReadSideEffect[-1] : &:r0_8, ~mu0_2 # 16| mu0_14(S) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 # 17| v0_15(void) = NoOp : - -# 14| Block 1 -# 14| v1_0(void) = ReturnVoid : -# 14| v1_1(void) = UnmodeledUse : mu* -# 14| v1_2(void) = ExitFunction : +# 14| v0_16(void) = ReturnVoid : +# 14| v0_17(void) = UnmodeledUse : mu* +# 14| v0_18(void) = ExitFunction : # 22| void Bad::Point::Point() # 22| Block 0 @@ -30,11 +51,9 @@ bad_asts.cpp: # 22| mu0_2(unknown) = UnmodeledDefinition : # 22| r0_3(glval) = InitializeThis : # 23| v0_4(void) = NoOp : - -# 22| Block 1 -# 22| v1_0(void) = ReturnVoid : -# 22| v1_1(void) = UnmodeledUse : mu* -# 22| v1_2(void) = ExitFunction : +# 22| v0_5(void) = ReturnVoid : +# 22| v0_6(void) = UnmodeledUse : mu* +# 22| v0_7(void) = ExitFunction : # 26| void Bad::CallCopyConstructor(Bad::Point const&) # 26| Block 0 @@ -53,11 +72,9 @@ bad_asts.cpp: # 27| mu0_12(Point) = Store : &:r0_7, r0_11 # 28| v0_13(void) = NoOp : # 26| v0_14(void) = ReturnIndirection : &:r0_5, ~mu0_2 - -# 26| Block 1 -# 26| v1_0(void) = ReturnVoid : -# 26| v1_1(void) = UnmodeledUse : mu* -# 26| v1_2(void) = ExitFunction : +# 26| v0_15(void) = ReturnVoid : +# 26| v0_16(void) = UnmodeledUse : mu* +# 26| v0_17(void) = ExitFunction : # 30| void Bad::errorExpr() # 30| Block 0 @@ -75,11 +92,9 @@ bad_asts.cpp: # 33| r0_11(glval) = VariableAddress[x] : # 33| mu0_12(int) = Store : &:r0_11, r0_10 # 34| v0_13(void) = NoOp : - -# 30| Block 1 -# 30| v1_0(void) = ReturnVoid : -# 30| v1_1(void) = UnmodeledUse : mu* -# 30| v1_2(void) = ExitFunction : +# 30| v0_14(void) = ReturnVoid : +# 30| v0_15(void) = UnmodeledUse : mu* +# 30| v0_16(void) = ExitFunction : clang.cpp: # 5| int* globalIntAddress() @@ -90,16 +105,10 @@ clang.cpp: # 6| r0_3(glval) = VariableAddress[#return] : # 6| r0_4(glval) = VariableAddress[globalInt] : # 6| mu0_5(int *) = Store : &:r0_3, r0_4 -#-----| Goto -> Block 1 - -# 5| Block 1 -# 5| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 5| v1_1(void) = UnmodeledUse : mu* -# 5| v1_2(void) = ExitFunction : - -# 5| Block 2 -# 5| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 5| r0_6(glval) = VariableAddress[#return] : +# 5| v0_7(void) = ReturnValue : &:r0_6, ~mu0_2 +# 5| v0_8(void) = UnmodeledUse : mu* +# 5| v0_9(void) = ExitFunction : ir.cpp: # 1| void Constants() @@ -192,11 +201,9 @@ ir.cpp: # 40| r0_85(double) = Constant[1.0] : # 40| mu0_86(double) = Store : &:r0_84, r0_85 # 41| v0_87(void) = NoOp : - -# 1| Block 1 -# 1| v1_0(void) = ReturnVoid : -# 1| v1_1(void) = UnmodeledUse : mu* -# 1| v1_2(void) = ExitFunction : +# 1| v0_88(void) = ReturnVoid : +# 1| v0_89(void) = UnmodeledUse : mu* +# 1| v0_90(void) = ExitFunction : # 43| void Foo() # 43| Block 0 @@ -227,11 +234,9 @@ ir.cpp: # 47| r0_24(glval) = VariableAddress[x] : # 47| mu0_25(int) = Store : &:r0_24, r0_23 # 48| v0_26(void) = NoOp : - -# 43| Block 1 -# 43| v1_0(void) = ReturnVoid : -# 43| v1_1(void) = UnmodeledUse : mu* -# 43| v1_2(void) = ExitFunction : +# 43| v0_27(void) = ReturnVoid : +# 43| v0_28(void) = UnmodeledUse : mu* +# 43| v0_29(void) = ExitFunction : # 50| void IntegerOps(int, int) # 50| Block 0 @@ -402,11 +407,9 @@ ir.cpp: # 84| r0_164(glval) = VariableAddress[z] : # 84| mu0_165(int) = Store : &:r0_164, r0_163 # 85| v0_166(void) = NoOp : - -# 50| Block 1 -# 50| v1_0(void) = ReturnVoid : -# 50| v1_1(void) = UnmodeledUse : mu* -# 50| v1_2(void) = ExitFunction : +# 50| v0_167(void) = ReturnVoid : +# 50| v0_168(void) = UnmodeledUse : mu* +# 50| v0_169(void) = ExitFunction : # 87| void IntegerCompare(int, int) # 87| Block 0 @@ -462,11 +465,9 @@ ir.cpp: # 95| r0_49(glval) = VariableAddress[b] : # 95| mu0_50(bool) = Store : &:r0_49, r0_48 # 96| v0_51(void) = NoOp : - -# 87| Block 1 -# 87| v1_0(void) = ReturnVoid : -# 87| v1_1(void) = UnmodeledUse : mu* -# 87| v1_2(void) = ExitFunction : +# 87| v0_52(void) = ReturnVoid : +# 87| v0_53(void) = UnmodeledUse : mu* +# 87| v0_54(void) = ExitFunction : # 98| void IntegerCrement(int) # 98| Block 0 @@ -506,11 +507,9 @@ ir.cpp: # 104| r0_33(glval) = VariableAddress[y] : # 104| mu0_34(int) = Store : &:r0_33, r0_29 # 105| v0_35(void) = NoOp : - -# 98| Block 1 -# 98| v1_0(void) = ReturnVoid : -# 98| v1_1(void) = UnmodeledUse : mu* -# 98| v1_2(void) = ExitFunction : +# 98| v0_36(void) = ReturnVoid : +# 98| v0_37(void) = UnmodeledUse : mu* +# 98| v0_38(void) = ExitFunction : # 107| void IntegerCrement_LValue(int) # 107| Block 0 @@ -536,11 +535,9 @@ ir.cpp: # 111| r0_19(glval) = VariableAddress[p] : # 111| mu0_20(int *) = Store : &:r0_19, r0_14 # 112| v0_21(void) = NoOp : - -# 107| Block 1 -# 107| v1_0(void) = ReturnVoid : -# 107| v1_1(void) = UnmodeledUse : mu* -# 107| v1_2(void) = ExitFunction : +# 107| v0_22(void) = ReturnVoid : +# 107| v0_23(void) = UnmodeledUse : mu* +# 107| v0_24(void) = ExitFunction : # 114| void FloatOps(double, double) # 114| Block 0 @@ -620,11 +617,9 @@ ir.cpp: # 130| r0_73(glval) = VariableAddress[z] : # 130| mu0_74(double) = Store : &:r0_73, r0_72 # 131| v0_75(void) = NoOp : - -# 114| Block 1 -# 114| v1_0(void) = ReturnVoid : -# 114| v1_1(void) = UnmodeledUse : mu* -# 114| v1_2(void) = ExitFunction : +# 114| v0_76(void) = ReturnVoid : +# 114| v0_77(void) = UnmodeledUse : mu* +# 114| v0_78(void) = ExitFunction : # 133| void FloatCompare(double, double) # 133| Block 0 @@ -680,11 +675,9 @@ ir.cpp: # 141| r0_49(glval) = VariableAddress[b] : # 141| mu0_50(bool) = Store : &:r0_49, r0_48 # 142| v0_51(void) = NoOp : - -# 133| Block 1 -# 133| v1_0(void) = ReturnVoid : -# 133| v1_1(void) = UnmodeledUse : mu* -# 133| v1_2(void) = ExitFunction : +# 133| v0_52(void) = ReturnVoid : +# 133| v0_53(void) = UnmodeledUse : mu* +# 133| v0_54(void) = ExitFunction : # 144| void FloatCrement(float) # 144| Block 0 @@ -724,11 +717,9 @@ ir.cpp: # 150| r0_33(glval) = VariableAddress[y] : # 150| mu0_34(float) = Store : &:r0_33, r0_29 # 151| v0_35(void) = NoOp : - -# 144| Block 1 -# 144| v1_0(void) = ReturnVoid : -# 144| v1_1(void) = UnmodeledUse : mu* -# 144| v1_2(void) = ExitFunction : +# 144| v0_36(void) = ReturnVoid : +# 144| v0_37(void) = UnmodeledUse : mu* +# 144| v0_38(void) = ExitFunction : # 153| void PointerOps(int*, int) # 153| Block 0 @@ -805,11 +796,9 @@ ir.cpp: # 168| mu0_70(bool) = Store : &:r0_69, r0_68 # 169| v0_71(void) = NoOp : # 153| v0_72(void) = ReturnIndirection : &:r0_5, ~mu0_2 - -# 153| Block 1 -# 153| v1_0(void) = ReturnVoid : -# 153| v1_1(void) = UnmodeledUse : mu* -# 153| v1_2(void) = ExitFunction : +# 153| v0_73(void) = ReturnVoid : +# 153| v0_74(void) = UnmodeledUse : mu* +# 153| v0_75(void) = ExitFunction : # 171| void ArrayAccess(int*, int) # 171| Block 0 @@ -892,11 +881,9 @@ ir.cpp: # 184| mu0_76(int) = Store : &:r0_75, r0_70 # 185| v0_77(void) = NoOp : # 171| v0_78(void) = ReturnIndirection : &:r0_5, ~mu0_2 - -# 171| Block 1 -# 171| v1_0(void) = ReturnVoid : -# 171| v1_1(void) = UnmodeledUse : mu* -# 171| v1_2(void) = ExitFunction : +# 171| v0_79(void) = ReturnVoid : +# 171| v0_80(void) = UnmodeledUse : mu* +# 171| v0_81(void) = ExitFunction : # 187| void StringLiteral(int) # 187| Block 0 @@ -927,11 +914,9 @@ ir.cpp: # 190| r0_24(wchar_t) = Load : &:r0_23, ~mu0_2 # 190| mu0_25(wchar_t) = Store : &:r0_18, r0_24 # 191| v0_26(void) = NoOp : - -# 187| Block 1 -# 187| v1_0(void) = ReturnVoid : -# 187| v1_1(void) = UnmodeledUse : mu* -# 187| v1_2(void) = ExitFunction : +# 187| v0_27(void) = ReturnVoid : +# 187| v0_28(void) = UnmodeledUse : mu* +# 187| v0_29(void) = ExitFunction : # 193| void PointerCompare(int*, int*) # 193| Block 0 @@ -993,11 +978,9 @@ ir.cpp: # 202| v0_55(void) = NoOp : # 193| v0_56(void) = ReturnIndirection : &:r0_5, ~mu0_2 # 193| v0_57(void) = ReturnIndirection : &:r0_9, ~mu0_2 - -# 193| Block 1 -# 193| v1_0(void) = ReturnVoid : -# 193| v1_1(void) = UnmodeledUse : mu* -# 193| v1_2(void) = ExitFunction : +# 193| v0_58(void) = ReturnVoid : +# 193| v0_59(void) = UnmodeledUse : mu* +# 193| v0_60(void) = ExitFunction : # 204| void PointerCrement(int*) # 204| Block 0 @@ -1040,11 +1023,9 @@ ir.cpp: # 210| mu0_36(int *) = Store : &:r0_35, r0_31 # 211| v0_37(void) = NoOp : # 204| v0_38(void) = ReturnIndirection : &:r0_5, ~mu0_2 - -# 204| Block 1 -# 204| v1_0(void) = ReturnVoid : -# 204| v1_1(void) = UnmodeledUse : mu* -# 204| v1_2(void) = ExitFunction : +# 204| v0_39(void) = ReturnVoid : +# 204| v0_40(void) = UnmodeledUse : mu* +# 204| v0_41(void) = ExitFunction : # 213| void CompoundAssignment() # 213| Block 0 @@ -1086,11 +1067,9 @@ ir.cpp: # 227| r0_35(long) = Convert : r0_34 # 227| mu0_36(long) = Store : &:r0_31, r0_35 # 228| v0_37(void) = NoOp : - -# 213| Block 1 -# 213| v1_0(void) = ReturnVoid : -# 213| v1_1(void) = UnmodeledUse : mu* -# 213| v1_2(void) = ExitFunction : +# 213| v0_38(void) = ReturnVoid : +# 213| v0_39(void) = UnmodeledUse : mu* +# 213| v0_40(void) = ExitFunction : # 230| void UninitializedVariables() # 230| Block 0 @@ -1104,11 +1083,9 @@ ir.cpp: # 232| r0_7(int) = Load : &:r0_6, ~mu0_2 # 232| mu0_8(int) = Store : &:r0_5, r0_7 # 233| v0_9(void) = NoOp : - -# 230| Block 1 -# 230| v1_0(void) = ReturnVoid : -# 230| v1_1(void) = UnmodeledUse : mu* -# 230| v1_2(void) = ExitFunction : +# 230| v0_10(void) = ReturnVoid : +# 230| v0_11(void) = UnmodeledUse : mu* +# 230| v0_12(void) = ExitFunction : # 235| int Parameters(int, int) # 235| Block 0 @@ -1126,16 +1103,10 @@ ir.cpp: # 236| r0_11(int) = Load : &:r0_10, ~mu0_2 # 236| r0_12(int) = Rem : r0_9, r0_11 # 236| mu0_13(int) = Store : &:r0_7, r0_12 -#-----| Goto -> Block 1 - -# 235| Block 1 -# 235| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 235| v1_1(void) = UnmodeledUse : mu* -# 235| v1_2(void) = ExitFunction : - -# 235| Block 2 -# 235| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 235| r0_14(glval) = VariableAddress[#return] : +# 235| v0_15(void) = ReturnValue : &:r0_14, ~mu0_2 +# 235| v0_16(void) = UnmodeledUse : mu* +# 235| v0_17(void) = ExitFunction : # 239| void IfStatements(bool, int, int) # 239| Block 0 @@ -1151,55 +1122,53 @@ ir.cpp: # 240| r0_9(glval) = VariableAddress[b] : # 240| r0_10(bool) = Load : &:r0_9, ~mu0_2 # 240| v0_11(void) = ConditionalBranch : r0_10 -#-----| False -> Block 2 -#-----| True -> Block 8 +#-----| False -> Block 1 +#-----| True -> Block 7 -# 239| Block 1 -# 239| v1_0(void) = ReturnVoid : -# 239| v1_1(void) = UnmodeledUse : mu* -# 239| v1_2(void) = ExitFunction : +# 243| Block 1 +# 243| r1_0(glval) = VariableAddress[b] : +# 243| r1_1(bool) = Load : &:r1_0, ~mu0_2 +# 243| v1_2(void) = ConditionalBranch : r1_1 +#-----| False -> Block 3 +#-----| True -> Block 2 -# 243| Block 2 -# 243| r2_0(glval) = VariableAddress[b] : -# 243| r2_1(bool) = Load : &:r2_0, ~mu0_2 -# 243| v2_2(void) = ConditionalBranch : r2_1 -#-----| False -> Block 4 -#-----| True -> Block 3 +# 244| Block 2 +# 244| r2_0(glval) = VariableAddress[y] : +# 244| r2_1(int) = Load : &:r2_0, ~mu0_2 +# 244| r2_2(glval) = VariableAddress[x] : +# 244| mu2_3(int) = Store : &:r2_2, r2_1 +#-----| Goto -> Block 3 -# 244| Block 3 -# 244| r3_0(glval) = VariableAddress[y] : -# 244| r3_1(int) = Load : &:r3_0, ~mu0_2 -# 244| r3_2(glval) = VariableAddress[x] : -# 244| mu3_3(int) = Store : &:r3_2, r3_1 -#-----| Goto -> Block 4 +# 247| Block 3 +# 247| r3_0(glval) = VariableAddress[x] : +# 247| r3_1(int) = Load : &:r3_0, ~mu0_2 +# 247| r3_2(int) = Constant[7] : +# 247| r3_3(bool) = CompareLT : r3_1, r3_2 +# 247| v3_4(void) = ConditionalBranch : r3_3 +#-----| False -> Block 5 +#-----| True -> Block 4 -# 247| Block 4 -# 247| r4_0(glval) = VariableAddress[x] : -# 247| r4_1(int) = Load : &:r4_0, ~mu0_2 -# 247| r4_2(int) = Constant[7] : -# 247| r4_3(bool) = CompareLT : r4_1, r4_2 -# 247| v4_4(void) = ConditionalBranch : r4_3 -#-----| False -> Block 6 -#-----| True -> Block 5 +# 248| Block 4 +# 248| r4_0(int) = Constant[2] : +# 248| r4_1(glval) = VariableAddress[x] : +# 248| mu4_2(int) = Store : &:r4_1, r4_0 +#-----| Goto -> Block 6 -# 248| Block 5 -# 248| r5_0(int) = Constant[2] : -# 248| r5_1(glval) = VariableAddress[x] : -# 248| mu5_2(int) = Store : &:r5_1, r5_0 -#-----| Goto -> Block 7 +# 250| Block 5 +# 250| r5_0(int) = Constant[7] : +# 250| r5_1(glval) = VariableAddress[x] : +# 250| mu5_2(int) = Store : &:r5_1, r5_0 +#-----| Goto -> Block 6 -# 250| Block 6 -# 250| r6_0(int) = Constant[7] : -# 250| r6_1(glval) = VariableAddress[x] : -# 250| mu6_2(int) = Store : &:r6_1, r6_0 -#-----| Goto -> Block 7 +# 251| Block 6 +# 251| v6_0(void) = NoOp : +# 239| v6_1(void) = ReturnVoid : +# 239| v6_2(void) = UnmodeledUse : mu* +# 239| v6_3(void) = ExitFunction : -# 251| Block 7 -# 251| v7_0(void) = NoOp : - -# 240| Block 8 -# 240| v8_0(void) = NoOp : -#-----| Goto -> Block 2 +# 240| Block 7 +# 240| v7_0(void) = NoOp : +#-----| Goto -> Block 1 # 253| void WhileStatements(int) # 253| Block 0 @@ -1208,32 +1177,30 @@ ir.cpp: # 253| mu0_2(unknown) = UnmodeledDefinition : # 253| r0_3(glval) = VariableAddress[n] : # 253| mu0_4(int) = InitializeParameter[n] : &:r0_3 -#-----| Goto -> Block 4 +#-----| Goto -> Block 3 -# 253| Block 1 -# 253| v1_0(void) = ReturnVoid : -# 253| v1_1(void) = UnmodeledUse : mu* -# 253| v1_2(void) = ExitFunction : +# 255| Block 1 +# 255| r1_0(int) = Constant[1] : +# 255| r1_1(glval) = VariableAddress[n] : +# 255| r1_2(int) = Load : &:r1_1, ~mu0_2 +# 255| r1_3(int) = Sub : r1_2, r1_0 +# 255| mu1_4(int) = Store : &:r1_1, r1_3 +#-----| Goto (back edge) -> Block 3 -# 255| Block 2 -# 255| r2_0(int) = Constant[1] : -# 255| r2_1(glval) = VariableAddress[n] : -# 255| r2_2(int) = Load : &:r2_1, ~mu0_2 -# 255| r2_3(int) = Sub : r2_2, r2_0 -# 255| mu2_4(int) = Store : &:r2_1, r2_3 -#-----| Goto (back edge) -> Block 4 +# 257| Block 2 +# 257| v2_0(void) = NoOp : +# 253| v2_1(void) = ReturnVoid : +# 253| v2_2(void) = UnmodeledUse : mu* +# 253| v2_3(void) = ExitFunction : -# 257| Block 3 -# 257| v3_0(void) = NoOp : - -# 254| Block 4 -# 254| r4_0(glval) = VariableAddress[n] : -# 254| r4_1(int) = Load : &:r4_0, ~mu0_2 -# 254| r4_2(int) = Constant[0] : -# 254| r4_3(bool) = CompareGT : r4_1, r4_2 -# 254| v4_4(void) = ConditionalBranch : r4_3 -#-----| False -> Block 3 -#-----| True -> Block 2 +# 254| Block 3 +# 254| r3_0(glval) = VariableAddress[n] : +# 254| r3_1(int) = Load : &:r3_0, ~mu0_2 +# 254| r3_2(int) = Constant[0] : +# 254| r3_3(bool) = CompareGT : r3_1, r3_2 +# 254| v3_4(void) = ConditionalBranch : r3_3 +#-----| False -> Block 2 +#-----| True -> Block 1 # 259| void DoStatements(int) # 259| Block 0 @@ -1242,29 +1209,27 @@ ir.cpp: # 259| mu0_2(unknown) = UnmodeledDefinition : # 259| r0_3(glval) = VariableAddress[n] : # 259| mu0_4(int) = InitializeParameter[n] : &:r0_3 -#-----| Goto -> Block 2 +#-----| Goto -> Block 1 -# 259| Block 1 -# 259| v1_0(void) = ReturnVoid : -# 259| v1_1(void) = UnmodeledUse : mu* -# 259| v1_2(void) = ExitFunction : +# 261| Block 1 +# 261| r1_0(int) = Constant[1] : +# 261| r1_1(glval) = VariableAddress[n] : +# 261| r1_2(int) = Load : &:r1_1, ~mu0_2 +# 261| r1_3(int) = Sub : r1_2, r1_0 +# 261| mu1_4(int) = Store : &:r1_1, r1_3 +# 262| r1_5(glval) = VariableAddress[n] : +# 262| r1_6(int) = Load : &:r1_5, ~mu0_2 +# 262| r1_7(int) = Constant[0] : +# 262| r1_8(bool) = CompareGT : r1_6, r1_7 +# 262| v1_9(void) = ConditionalBranch : r1_8 +#-----| False -> Block 2 +#-----| True (back edge) -> Block 1 -# 261| Block 2 -# 261| r2_0(int) = Constant[1] : -# 261| r2_1(glval) = VariableAddress[n] : -# 261| r2_2(int) = Load : &:r2_1, ~mu0_2 -# 261| r2_3(int) = Sub : r2_2, r2_0 -# 261| mu2_4(int) = Store : &:r2_1, r2_3 -# 262| r2_5(glval) = VariableAddress[n] : -# 262| r2_6(int) = Load : &:r2_5, ~mu0_2 -# 262| r2_7(int) = Constant[0] : -# 262| r2_8(bool) = CompareGT : r2_6, r2_7 -# 262| v2_9(void) = ConditionalBranch : r2_8 -#-----| False -> Block 3 -#-----| True (back edge) -> Block 2 - -# 263| Block 3 -# 263| v3_0(void) = NoOp : +# 263| Block 2 +# 263| v2_0(void) = NoOp : +# 259| v2_1(void) = ReturnVoid : +# 259| v2_2(void) = UnmodeledUse : mu* +# 259| v2_3(void) = ExitFunction : # 265| void For_Empty() # 265| Block 0 @@ -1311,28 +1276,26 @@ ir.cpp: # 279| r0_3(glval) = VariableAddress[i] : # 279| r0_4(int) = Constant[0] : # 279| mu0_5(int) = Store : &:r0_3, r0_4 -#-----| Goto -> Block 2 +#-----| Goto -> Block 1 -# 278| Block 1 -# 278| v1_0(void) = ReturnVoid : -# 278| v1_1(void) = UnmodeledUse : mu* -# 278| v1_2(void) = ExitFunction : +# 280| Block 1 +# 280| r1_0(glval) = VariableAddress[i] : +# 280| r1_1(int) = Load : &:r1_0, ~mu0_2 +# 280| r1_2(int) = Constant[10] : +# 280| r1_3(bool) = CompareLT : r1_1, r1_2 +# 280| v1_4(void) = ConditionalBranch : r1_3 +#-----| False -> Block 3 +#-----| True -> Block 2 -# 280| Block 2 -# 280| r2_0(glval) = VariableAddress[i] : -# 280| r2_1(int) = Load : &:r2_0, ~mu0_2 -# 280| r2_2(int) = Constant[10] : -# 280| r2_3(bool) = CompareLT : r2_1, r2_2 -# 280| v2_4(void) = ConditionalBranch : r2_3 -#-----| False -> Block 4 -#-----| True -> Block 3 +# 281| Block 2 +# 281| v2_0(void) = NoOp : +#-----| Goto (back edge) -> Block 1 -# 281| Block 3 -# 281| v3_0(void) = NoOp : -#-----| Goto (back edge) -> Block 2 - -# 283| Block 4 -# 283| v4_0(void) = NoOp : +# 283| Block 3 +# 283| v3_0(void) = NoOp : +# 278| v3_1(void) = ReturnVoid : +# 278| v3_2(void) = UnmodeledUse : mu* +# 278| v3_3(void) = ExitFunction : # 285| void For_Update() # 285| Block 0 @@ -1366,28 +1329,26 @@ ir.cpp: # 293| r0_3(glval) = VariableAddress[i] : # 293| r0_4(int) = Constant[0] : # 293| mu0_5(int) = Store : &:r0_3, r0_4 -#-----| Goto -> Block 2 +#-----| Goto -> Block 1 -# 292| Block 1 -# 292| v1_0(void) = ReturnVoid : -# 292| v1_1(void) = UnmodeledUse : mu* -# 292| v1_2(void) = ExitFunction : +# 293| Block 1 +# 293| r1_0(glval) = VariableAddress[i] : +# 293| r1_1(int) = Load : &:r1_0, ~mu0_2 +# 293| r1_2(int) = Constant[10] : +# 293| r1_3(bool) = CompareLT : r1_1, r1_2 +# 293| v1_4(void) = ConditionalBranch : r1_3 +#-----| False -> Block 3 +#-----| True -> Block 2 -# 293| Block 2 -# 293| r2_0(glval) = VariableAddress[i] : -# 293| r2_1(int) = Load : &:r2_0, ~mu0_2 -# 293| r2_2(int) = Constant[10] : -# 293| r2_3(bool) = CompareLT : r2_1, r2_2 -# 293| v2_4(void) = ConditionalBranch : r2_3 -#-----| False -> Block 4 -#-----| True -> Block 3 +# 294| Block 2 +# 294| v2_0(void) = NoOp : +#-----| Goto (back edge) -> Block 1 -# 294| Block 3 -# 294| v3_0(void) = NoOp : -#-----| Goto (back edge) -> Block 2 - -# 296| Block 4 -# 296| v4_0(void) = NoOp : +# 296| Block 3 +# 296| v3_0(void) = NoOp : +# 292| v3_1(void) = ReturnVoid : +# 292| v3_2(void) = UnmodeledUse : mu* +# 292| v3_3(void) = ExitFunction : # 298| void For_InitUpdate() # 298| Block 0 @@ -1421,33 +1382,31 @@ ir.cpp: # 305| r0_3(glval) = VariableAddress[i] : # 305| r0_4(int) = Constant[0] : # 305| mu0_5(int) = Store : &:r0_3, r0_4 -#-----| Goto -> Block 2 +#-----| Goto -> Block 1 -# 304| Block 1 -# 304| v1_0(void) = ReturnVoid : -# 304| v1_1(void) = UnmodeledUse : mu* -# 304| v1_2(void) = ExitFunction : +# 306| Block 1 +# 306| r1_0(glval) = VariableAddress[i] : +# 306| r1_1(int) = Load : &:r1_0, ~mu0_2 +# 306| r1_2(int) = Constant[10] : +# 306| r1_3(bool) = CompareLT : r1_1, r1_2 +# 306| v1_4(void) = ConditionalBranch : r1_3 +#-----| False -> Block 3 +#-----| True -> Block 2 -# 306| Block 2 -# 306| r2_0(glval) = VariableAddress[i] : -# 306| r2_1(int) = Load : &:r2_0, ~mu0_2 -# 306| r2_2(int) = Constant[10] : -# 306| r2_3(bool) = CompareLT : r2_1, r2_2 -# 306| v2_4(void) = ConditionalBranch : r2_3 -#-----| False -> Block 4 -#-----| True -> Block 3 +# 307| Block 2 +# 307| v2_0(void) = NoOp : +# 306| r2_1(int) = Constant[1] : +# 306| r2_2(glval) = VariableAddress[i] : +# 306| r2_3(int) = Load : &:r2_2, ~mu0_2 +# 306| r2_4(int) = Add : r2_3, r2_1 +# 306| mu2_5(int) = Store : &:r2_2, r2_4 +#-----| Goto (back edge) -> Block 1 -# 307| Block 3 -# 307| v3_0(void) = NoOp : -# 306| r3_1(int) = Constant[1] : -# 306| r3_2(glval) = VariableAddress[i] : -# 306| r3_3(int) = Load : &:r3_2, ~mu0_2 -# 306| r3_4(int) = Add : r3_3, r3_1 -# 306| mu3_5(int) = Store : &:r3_2, r3_4 -#-----| Goto (back edge) -> Block 2 - -# 309| Block 4 -# 309| v4_0(void) = NoOp : +# 309| Block 3 +# 309| v3_0(void) = NoOp : +# 304| v3_1(void) = ReturnVoid : +# 304| v3_2(void) = UnmodeledUse : mu* +# 304| v3_3(void) = ExitFunction : # 311| void For_InitConditionUpdate() # 311| Block 0 @@ -1457,33 +1416,31 @@ ir.cpp: # 312| r0_3(glval) = VariableAddress[i] : # 312| r0_4(int) = Constant[0] : # 312| mu0_5(int) = Store : &:r0_3, r0_4 -#-----| Goto -> Block 2 +#-----| Goto -> Block 1 -# 311| Block 1 -# 311| v1_0(void) = ReturnVoid : -# 311| v1_1(void) = UnmodeledUse : mu* -# 311| v1_2(void) = ExitFunction : +# 312| Block 1 +# 312| r1_0(glval) = VariableAddress[i] : +# 312| r1_1(int) = Load : &:r1_0, ~mu0_2 +# 312| r1_2(int) = Constant[10] : +# 312| r1_3(bool) = CompareLT : r1_1, r1_2 +# 312| v1_4(void) = ConditionalBranch : r1_3 +#-----| False -> Block 3 +#-----| True -> Block 2 -# 312| Block 2 -# 312| r2_0(glval) = VariableAddress[i] : -# 312| r2_1(int) = Load : &:r2_0, ~mu0_2 -# 312| r2_2(int) = Constant[10] : -# 312| r2_3(bool) = CompareLT : r2_1, r2_2 -# 312| v2_4(void) = ConditionalBranch : r2_3 -#-----| False -> Block 4 -#-----| True -> Block 3 +# 313| Block 2 +# 313| v2_0(void) = NoOp : +# 312| r2_1(int) = Constant[1] : +# 312| r2_2(glval) = VariableAddress[i] : +# 312| r2_3(int) = Load : &:r2_2, ~mu0_2 +# 312| r2_4(int) = Add : r2_3, r2_1 +# 312| mu2_5(int) = Store : &:r2_2, r2_4 +#-----| Goto (back edge) -> Block 1 -# 313| Block 3 -# 313| v3_0(void) = NoOp : -# 312| r3_1(int) = Constant[1] : -# 312| r3_2(glval) = VariableAddress[i] : -# 312| r3_3(int) = Load : &:r3_2, ~mu0_2 -# 312| r3_4(int) = Add : r3_3, r3_1 -# 312| mu3_5(int) = Store : &:r3_2, r3_4 -#-----| Goto (back edge) -> Block 2 - -# 315| Block 4 -# 315| v4_0(void) = NoOp : +# 315| Block 3 +# 315| v3_0(void) = NoOp : +# 311| v3_1(void) = ReturnVoid : +# 311| v3_2(void) = UnmodeledUse : mu* +# 311| v3_3(void) = ExitFunction : # 317| void For_Break() # 317| Block 0 @@ -1493,46 +1450,44 @@ ir.cpp: # 318| r0_3(glval) = VariableAddress[i] : # 318| r0_4(int) = Constant[0] : # 318| mu0_5(int) = Store : &:r0_3, r0_4 -#-----| Goto -> Block 2 +#-----| Goto -> Block 1 -# 317| Block 1 -# 317| v1_0(void) = ReturnVoid : -# 317| v1_1(void) = UnmodeledUse : mu* -# 317| v1_2(void) = ExitFunction : +# 318| Block 1 +# 318| r1_0(glval) = VariableAddress[i] : +# 318| r1_1(int) = Load : &:r1_0, ~mu0_2 +# 318| r1_2(int) = Constant[10] : +# 318| r1_3(bool) = CompareLT : r1_1, r1_2 +# 318| v1_4(void) = ConditionalBranch : r1_3 +#-----| False -> Block 5 +#-----| True -> Block 3 # 318| Block 2 -# 318| r2_0(glval) = VariableAddress[i] : -# 318| r2_1(int) = Load : &:r2_0, ~mu0_2 -# 318| r2_2(int) = Constant[10] : -# 318| r2_3(bool) = CompareLT : r2_1, r2_2 -# 318| v2_4(void) = ConditionalBranch : r2_3 -#-----| False -> Block 6 +# 318| r2_0(int) = Constant[1] : +# 318| r2_1(glval) = VariableAddress[i] : +# 318| r2_2(int) = Load : &:r2_1, ~mu0_2 +# 318| r2_3(int) = Add : r2_2, r2_0 +# 318| mu2_4(int) = Store : &:r2_1, r2_3 +#-----| Goto (back edge) -> Block 1 + +# 319| Block 3 +# 319| r3_0(glval) = VariableAddress[i] : +# 319| r3_1(int) = Load : &:r3_0, ~mu0_2 +# 319| r3_2(int) = Constant[5] : +# 319| r3_3(bool) = CompareEQ : r3_1, r3_2 +# 319| v3_4(void) = ConditionalBranch : r3_3 +#-----| False -> Block 2 #-----| True -> Block 4 -# 318| Block 3 -# 318| r3_0(int) = Constant[1] : -# 318| r3_1(glval) = VariableAddress[i] : -# 318| r3_2(int) = Load : &:r3_1, ~mu0_2 -# 318| r3_3(int) = Add : r3_2, r3_0 -# 318| mu3_4(int) = Store : &:r3_1, r3_3 -#-----| Goto (back edge) -> Block 2 +# 320| Block 4 +# 320| v4_0(void) = NoOp : +#-----| Goto -> Block 5 -# 319| Block 4 -# 319| r4_0(glval) = VariableAddress[i] : -# 319| r4_1(int) = Load : &:r4_0, ~mu0_2 -# 319| r4_2(int) = Constant[5] : -# 319| r4_3(bool) = CompareEQ : r4_1, r4_2 -# 319| v4_4(void) = ConditionalBranch : r4_3 -#-----| False -> Block 3 -#-----| True -> Block 5 - -# 320| Block 5 -# 320| v5_0(void) = NoOp : -#-----| Goto -> Block 6 - -# 322| Block 6 -# 322| v6_0(void) = NoOp : -# 323| v6_1(void) = NoOp : +# 322| Block 5 +# 322| v5_0(void) = NoOp : +# 323| v5_1(void) = NoOp : +# 317| v5_2(void) = ReturnVoid : +# 317| v5_3(void) = UnmodeledUse : mu* +# 317| v5_4(void) = ExitFunction : # 325| void For_Continue_Update() # 325| Block 0 @@ -1542,46 +1497,44 @@ ir.cpp: # 326| r0_3(glval) = VariableAddress[i] : # 326| r0_4(int) = Constant[0] : # 326| mu0_5(int) = Store : &:r0_3, r0_4 -#-----| Goto -> Block 2 +#-----| Goto -> Block 1 -# 325| Block 1 -# 325| v1_0(void) = ReturnVoid : -# 325| v1_1(void) = UnmodeledUse : mu* -# 325| v1_2(void) = ExitFunction : +# 326| Block 1 +# 326| r1_0(glval) = VariableAddress[i] : +# 326| r1_1(int) = Load : &:r1_0, ~mu0_2 +# 326| r1_2(int) = Constant[10] : +# 326| r1_3(bool) = CompareLT : r1_1, r1_2 +# 326| v1_4(void) = ConditionalBranch : r1_3 +#-----| False -> Block 5 +#-----| True -> Block 2 -# 326| Block 2 -# 326| r2_0(glval) = VariableAddress[i] : -# 326| r2_1(int) = Load : &:r2_0, ~mu0_2 -# 326| r2_2(int) = Constant[10] : -# 326| r2_3(bool) = CompareLT : r2_1, r2_2 -# 326| v2_4(void) = ConditionalBranch : r2_3 -#-----| False -> Block 6 +# 327| Block 2 +# 327| r2_0(glval) = VariableAddress[i] : +# 327| r2_1(int) = Load : &:r2_0, ~mu0_2 +# 327| r2_2(int) = Constant[5] : +# 327| r2_3(bool) = CompareEQ : r2_1, r2_2 +# 327| v2_4(void) = ConditionalBranch : r2_3 +#-----| False -> Block 4 #-----| True -> Block 3 -# 327| Block 3 -# 327| r3_0(glval) = VariableAddress[i] : -# 327| r3_1(int) = Load : &:r3_0, ~mu0_2 -# 327| r3_2(int) = Constant[5] : -# 327| r3_3(bool) = CompareEQ : r3_1, r3_2 -# 327| v3_4(void) = ConditionalBranch : r3_3 -#-----| False -> Block 5 -#-----| True -> Block 4 +# 328| Block 3 +# 328| v3_0(void) = NoOp : +#-----| Goto -> Block 4 -# 328| Block 4 -# 328| v4_0(void) = NoOp : -#-----| Goto -> Block 5 +# 326| Block 4 +# 326| v4_0(void) = NoOp : +# 326| r4_1(int) = Constant[1] : +# 326| r4_2(glval) = VariableAddress[i] : +# 326| r4_3(int) = Load : &:r4_2, ~mu0_2 +# 326| r4_4(int) = Add : r4_3, r4_1 +# 326| mu4_5(int) = Store : &:r4_2, r4_4 +#-----| Goto (back edge) -> Block 1 -# 326| Block 5 -# 326| v5_0(void) = NoOp : -# 326| r5_1(int) = Constant[1] : -# 326| r5_2(glval) = VariableAddress[i] : -# 326| r5_3(int) = Load : &:r5_2, ~mu0_2 -# 326| r5_4(int) = Add : r5_3, r5_1 -# 326| mu5_5(int) = Store : &:r5_2, r5_4 -#-----| Goto (back edge) -> Block 2 - -# 331| Block 6 -# 331| v6_0(void) = NoOp : +# 331| Block 5 +# 331| v5_0(void) = NoOp : +# 325| v5_1(void) = ReturnVoid : +# 325| v5_2(void) = UnmodeledUse : mu* +# 325| v5_3(void) = ExitFunction : # 333| void For_Continue_NoUpdate() # 333| Block 0 @@ -1591,41 +1544,39 @@ ir.cpp: # 334| r0_3(glval) = VariableAddress[i] : # 334| r0_4(int) = Constant[0] : # 334| mu0_5(int) = Store : &:r0_3, r0_4 -#-----| Goto -> Block 2 +#-----| Goto -> Block 1 -# 333| Block 1 -# 333| v1_0(void) = ReturnVoid : -# 333| v1_1(void) = UnmodeledUse : mu* -# 333| v1_2(void) = ExitFunction : +# 334| Block 1 +# 334| r1_0(glval) = VariableAddress[i] : +# 334| r1_1(int) = Load : &:r1_0, ~mu0_2 +# 334| r1_2(int) = Constant[10] : +# 334| r1_3(bool) = CompareLT : r1_1, r1_2 +# 334| v1_4(void) = ConditionalBranch : r1_3 +#-----| False -> Block 5 +#-----| True -> Block 2 -# 334| Block 2 -# 334| r2_0(glval) = VariableAddress[i] : -# 334| r2_1(int) = Load : &:r2_0, ~mu0_2 -# 334| r2_2(int) = Constant[10] : -# 334| r2_3(bool) = CompareLT : r2_1, r2_2 -# 334| v2_4(void) = ConditionalBranch : r2_3 -#-----| False -> Block 6 +# 335| Block 2 +# 335| r2_0(glval) = VariableAddress[i] : +# 335| r2_1(int) = Load : &:r2_0, ~mu0_2 +# 335| r2_2(int) = Constant[5] : +# 335| r2_3(bool) = CompareEQ : r2_1, r2_2 +# 335| v2_4(void) = ConditionalBranch : r2_3 +#-----| False -> Block 4 #-----| True -> Block 3 -# 335| Block 3 -# 335| r3_0(glval) = VariableAddress[i] : -# 335| r3_1(int) = Load : &:r3_0, ~mu0_2 -# 335| r3_2(int) = Constant[5] : -# 335| r3_3(bool) = CompareEQ : r3_1, r3_2 -# 335| v3_4(void) = ConditionalBranch : r3_3 -#-----| False -> Block 5 -#-----| True -> Block 4 +# 336| Block 3 +# 336| v3_0(void) = NoOp : +#-----| Goto -> Block 4 -# 336| Block 4 -# 336| v4_0(void) = NoOp : -#-----| Goto -> Block 5 +# 334| Block 4 +# 334| v4_0(void) = NoOp : +#-----| Goto (back edge) -> Block 1 -# 334| Block 5 -# 334| v5_0(void) = NoOp : -#-----| Goto (back edge) -> Block 2 - -# 339| Block 6 -# 339| v6_0(void) = NoOp : +# 339| Block 5 +# 339| v5_0(void) = NoOp : +# 333| v5_1(void) = ReturnVoid : +# 333| v5_2(void) = UnmodeledUse : mu* +# 333| v5_3(void) = ExitFunction : # 341| int Dereference(int*) # 341| Block 0 @@ -1646,16 +1597,10 @@ ir.cpp: # 343| r0_14(int) = Load : &:r0_13, ~mu0_2 # 343| mu0_15(int) = Store : &:r0_11, r0_14 # 341| v0_16(void) = ReturnIndirection : &:r0_5, ~mu0_2 -#-----| Goto -> Block 1 - -# 341| Block 1 -# 341| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 341| v1_1(void) = UnmodeledUse : mu* -# 341| v1_2(void) = ExitFunction : - -# 341| Block 2 -# 341| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 341| r0_17(glval) = VariableAddress[#return] : +# 341| v0_18(void) = ReturnValue : &:r0_17, ~mu0_2 +# 341| v0_19(void) = UnmodeledUse : mu* +# 341| v0_20(void) = ExitFunction : # 348| int* AddressOf() # 348| Block 0 @@ -1665,16 +1610,10 @@ ir.cpp: # 349| r0_3(glval) = VariableAddress[#return] : # 349| r0_4(glval) = VariableAddress[g] : # 349| mu0_5(int *) = Store : &:r0_3, r0_4 -#-----| Goto -> Block 1 - -# 348| Block 1 -# 348| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 348| v1_1(void) = UnmodeledUse : mu* -# 348| v1_2(void) = ExitFunction : - -# 348| Block 2 -# 348| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 348| r0_6(glval) = VariableAddress[#return] : +# 348| v0_7(void) = ReturnValue : &:r0_6, ~mu0_2 +# 348| v0_8(void) = UnmodeledUse : mu* +# 348| v0_9(void) = ExitFunction : # 352| void Break(int) # 352| Block 0 @@ -1683,47 +1622,45 @@ ir.cpp: # 352| mu0_2(unknown) = UnmodeledDefinition : # 352| r0_3(glval) = VariableAddress[n] : # 352| mu0_4(int) = InitializeParameter[n] : &:r0_3 -#-----| Goto -> Block 6 - -# 352| Block 1 -# 352| v1_0(void) = ReturnVoid : -# 352| v1_1(void) = UnmodeledUse : mu* -# 352| v1_2(void) = ExitFunction : - -# 354| Block 2 -# 354| r2_0(glval) = VariableAddress[n] : -# 354| r2_1(int) = Load : &:r2_0, ~mu0_2 -# 354| r2_2(int) = Constant[1] : -# 354| r2_3(bool) = CompareEQ : r2_1, r2_2 -# 354| v2_4(void) = ConditionalBranch : r2_3 -#-----| False -> Block 4 -#-----| True -> Block 3 - -# 355| Block 3 -# 355| v3_0(void) = NoOp : #-----| Goto -> Block 5 -# 356| Block 4 -# 356| r4_0(int) = Constant[1] : -# 356| r4_1(glval) = VariableAddress[n] : -# 356| r4_2(int) = Load : &:r4_1, ~mu0_2 -# 356| r4_3(int) = Sub : r4_2, r4_0 -# 356| mu4_4(int) = Store : &:r4_1, r4_3 -#-----| Goto (back edge) -> Block 6 - -# 357| Block 5 -# 357| v5_0(void) = NoOp : -# 358| v5_1(void) = NoOp : - -# 353| Block 6 -# 353| r6_0(glval) = VariableAddress[n] : -# 353| r6_1(int) = Load : &:r6_0, ~mu0_2 -# 353| r6_2(int) = Constant[0] : -# 353| r6_3(bool) = CompareGT : r6_1, r6_2 -# 353| v6_4(void) = ConditionalBranch : r6_3 -#-----| False -> Block 5 +# 354| Block 1 +# 354| r1_0(glval) = VariableAddress[n] : +# 354| r1_1(int) = Load : &:r1_0, ~mu0_2 +# 354| r1_2(int) = Constant[1] : +# 354| r1_3(bool) = CompareEQ : r1_1, r1_2 +# 354| v1_4(void) = ConditionalBranch : r1_3 +#-----| False -> Block 3 #-----| True -> Block 2 +# 355| Block 2 +# 355| v2_0(void) = NoOp : +#-----| Goto -> Block 4 + +# 356| Block 3 +# 356| r3_0(int) = Constant[1] : +# 356| r3_1(glval) = VariableAddress[n] : +# 356| r3_2(int) = Load : &:r3_1, ~mu0_2 +# 356| r3_3(int) = Sub : r3_2, r3_0 +# 356| mu3_4(int) = Store : &:r3_1, r3_3 +#-----| Goto (back edge) -> Block 5 + +# 357| Block 4 +# 357| v4_0(void) = NoOp : +# 358| v4_1(void) = NoOp : +# 352| v4_2(void) = ReturnVoid : +# 352| v4_3(void) = UnmodeledUse : mu* +# 352| v4_4(void) = ExitFunction : + +# 353| Block 5 +# 353| r5_0(glval) = VariableAddress[n] : +# 353| r5_1(int) = Load : &:r5_0, ~mu0_2 +# 353| r5_2(int) = Constant[0] : +# 353| r5_3(bool) = CompareGT : r5_1, r5_2 +# 353| v5_4(void) = ConditionalBranch : r5_3 +#-----| False -> Block 4 +#-----| True -> Block 1 + # 360| void Continue(int) # 360| Block 0 # 360| v0_0(void) = EnterFunction : @@ -1731,46 +1668,44 @@ ir.cpp: # 360| mu0_2(unknown) = UnmodeledDefinition : # 360| r0_3(glval) = VariableAddress[n] : # 360| mu0_4(int) = InitializeParameter[n] : &:r0_3 -#-----| Goto -> Block 2 +#-----| Goto -> Block 1 -# 360| Block 1 -# 360| v1_0(void) = ReturnVoid : -# 360| v1_1(void) = UnmodeledUse : mu* -# 360| v1_2(void) = ExitFunction : +# 362| Block 1 +# 362| r1_0(glval) = VariableAddress[n] : +# 362| r1_1(int) = Load : &:r1_0, ~mu0_2 +# 362| r1_2(int) = Constant[1] : +# 362| r1_3(bool) = CompareEQ : r1_1, r1_2 +# 362| v1_4(void) = ConditionalBranch : r1_3 +#-----| False -> Block 3 +#-----| True -> Block 2 -# 362| Block 2 -# 362| r2_0(glval) = VariableAddress[n] : -# 362| r2_1(int) = Load : &:r2_0, ~mu0_2 -# 362| r2_2(int) = Constant[1] : -# 362| r2_3(bool) = CompareEQ : r2_1, r2_2 -# 362| v2_4(void) = ConditionalBranch : r2_3 -#-----| False -> Block 4 -#-----| True -> Block 3 +# 363| Block 2 +# 363| v2_0(void) = NoOp : +#-----| Goto -> Block 4 -# 363| Block 3 -# 363| v3_0(void) = NoOp : -#-----| Goto -> Block 5 +# 365| Block 3 +# 365| r3_0(int) = Constant[1] : +# 365| r3_1(glval) = VariableAddress[n] : +# 365| r3_2(int) = Load : &:r3_1, ~mu0_2 +# 365| r3_3(int) = Sub : r3_2, r3_0 +# 365| mu3_4(int) = Store : &:r3_1, r3_3 +#-----| Goto -> Block 4 -# 365| Block 4 -# 365| r4_0(int) = Constant[1] : -# 365| r4_1(glval) = VariableAddress[n] : -# 365| r4_2(int) = Load : &:r4_1, ~mu0_2 -# 365| r4_3(int) = Sub : r4_2, r4_0 -# 365| mu4_4(int) = Store : &:r4_1, r4_3 -#-----| Goto -> Block 5 +# 361| Block 4 +# 361| v4_0(void) = NoOp : +# 366| r4_1(glval) = VariableAddress[n] : +# 366| r4_2(int) = Load : &:r4_1, ~mu0_2 +# 366| r4_3(int) = Constant[0] : +# 366| r4_4(bool) = CompareGT : r4_2, r4_3 +# 366| v4_5(void) = ConditionalBranch : r4_4 +#-----| False -> Block 5 +#-----| True (back edge) -> Block 1 -# 361| Block 5 -# 361| v5_0(void) = NoOp : -# 366| r5_1(glval) = VariableAddress[n] : -# 366| r5_2(int) = Load : &:r5_1, ~mu0_2 -# 366| r5_3(int) = Constant[0] : -# 366| r5_4(bool) = CompareGT : r5_2, r5_3 -# 366| v5_5(void) = ConditionalBranch : r5_4 -#-----| False -> Block 6 -#-----| True (back edge) -> Block 2 - -# 367| Block 6 -# 367| v6_0(void) = NoOp : +# 367| Block 5 +# 367| v5_0(void) = NoOp : +# 360| v5_1(void) = ReturnVoid : +# 360| v5_2(void) = UnmodeledUse : mu* +# 360| v5_3(void) = ExitFunction : # 372| void Call() # 372| Block 0 @@ -1781,11 +1716,9 @@ ir.cpp: # 373| v0_4(void) = Call : func:r0_3 # 373| mu0_5(unknown) = ^CallSideEffect : ~mu0_2 # 374| v0_6(void) = NoOp : - -# 372| Block 1 -# 372| v1_0(void) = ReturnVoid : -# 372| v1_1(void) = UnmodeledUse : mu* -# 372| v1_2(void) = ExitFunction : +# 372| v0_7(void) = ReturnVoid : +# 372| v0_8(void) = UnmodeledUse : mu* +# 372| v0_9(void) = ExitFunction : # 376| int CallAdd(int, int) # 376| Block 0 @@ -1805,16 +1738,10 @@ ir.cpp: # 377| r0_13(int) = Call : func:r0_8, 0:r0_10, 1:r0_12 # 377| mu0_14(unknown) = ^CallSideEffect : ~mu0_2 # 377| mu0_15(int) = Store : &:r0_7, r0_13 -#-----| Goto -> Block 1 - -# 376| Block 1 -# 376| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 376| v1_1(void) = UnmodeledUse : mu* -# 376| v1_2(void) = ExitFunction : - -# 376| Block 2 -# 376| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 376| r0_16(glval) = VariableAddress[#return] : +# 376| v0_17(void) = ReturnValue : &:r0_16, ~mu0_2 +# 376| v0_18(void) = UnmodeledUse : mu* +# 376| v0_19(void) = ExitFunction : # 380| int Comma(int, int) # 380| Block 0 @@ -1837,16 +1764,10 @@ ir.cpp: # 381| r0_16(int) = Call : func:r0_11, 0:r0_13, 1:r0_15 # 381| mu0_17(unknown) = ^CallSideEffect : ~mu0_2 # 381| mu0_18(int) = Store : &:r0_7, r0_16 -#-----| Goto -> Block 1 - -# 380| Block 1 -# 380| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 380| v1_1(void) = UnmodeledUse : mu* -# 380| v1_2(void) = ExitFunction : - -# 380| Block 2 -# 380| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 380| r0_19(glval) = VariableAddress[#return] : +# 380| v0_20(void) = ReturnValue : &:r0_19, ~mu0_2 +# 380| v0_21(void) = UnmodeledUse : mu* +# 380| v0_22(void) = ExitFunction : # 384| void Switch(int) # 384| Block 0 @@ -1860,76 +1781,74 @@ ir.cpp: # 386| r0_7(glval) = VariableAddress[x] : # 386| r0_8(int) = Load : &:r0_7, ~mu0_2 # 386| v0_9(void) = Switch : r0_8 -#-----| Case[-1] -> Block 3 -#-----| Case[1] -> Block 4 -#-----| Case[2] -> Block 5 -#-----| Case[3] -> Block 6 -#-----| Case[4] -> Block 7 -#-----| Default -> Block 8 +#-----| Case[-1] -> Block 2 +#-----| Case[1] -> Block 3 +#-----| Case[2] -> Block 4 +#-----| Case[3] -> Block 5 +#-----| Case[4] -> Block 6 +#-----| Default -> Block 7 -# 384| Block 1 -# 384| v1_0(void) = ReturnVoid : -# 384| v1_1(void) = UnmodeledUse : mu* -# 384| v1_2(void) = ExitFunction : +# 387| Block 1 +# 387| r1_0(int) = Constant[1234] : +# 387| r1_1(glval) = VariableAddress[y] : +# 387| mu1_2(int) = Store : &:r1_1, r1_0 +#-----| Goto -> Block 2 -# 387| Block 2 -# 387| r2_0(int) = Constant[1234] : -# 387| r2_1(glval) = VariableAddress[y] : -# 387| mu2_2(int) = Store : &:r2_1, r2_0 -#-----| Goto -> Block 3 +# 389| Block 2 +# 389| v2_0(void) = NoOp : +# 390| r2_1(int) = Constant[-1] : +# 390| r2_2(glval) = VariableAddress[y] : +# 390| mu2_3(int) = Store : &:r2_2, r2_1 +# 391| v2_4(void) = NoOp : +#-----| Goto -> Block 9 -# 389| Block 3 -# 389| v3_0(void) = NoOp : -# 390| r3_1(int) = Constant[-1] : -# 390| r3_2(glval) = VariableAddress[y] : -# 390| mu3_3(int) = Store : &:r3_2, r3_1 -# 391| v3_4(void) = NoOp : -#-----| Goto -> Block 10 +# 393| Block 3 +# 393| v3_0(void) = NoOp : +#-----| Goto -> Block 4 -# 393| Block 4 -# 393| v4_0(void) = NoOp : -#-----| Goto -> Block 5 +# 394| Block 4 +# 394| v4_0(void) = NoOp : +# 395| r4_1(int) = Constant[1] : +# 395| r4_2(glval) = VariableAddress[y] : +# 395| mu4_3(int) = Store : &:r4_2, r4_1 +# 396| v4_4(void) = NoOp : +#-----| Goto -> Block 9 -# 394| Block 5 -# 394| v5_0(void) = NoOp : -# 395| r5_1(int) = Constant[1] : -# 395| r5_2(glval) = VariableAddress[y] : -# 395| mu5_3(int) = Store : &:r5_2, r5_1 -# 396| v5_4(void) = NoOp : -#-----| Goto -> Block 10 +# 398| Block 5 +# 398| v5_0(void) = NoOp : +# 399| r5_1(int) = Constant[3] : +# 399| r5_2(glval) = VariableAddress[y] : +# 399| mu5_3(int) = Store : &:r5_2, r5_1 +#-----| Goto -> Block 6 -# 398| Block 6 -# 398| v6_0(void) = NoOp : -# 399| r6_1(int) = Constant[3] : -# 399| r6_2(glval) = VariableAddress[y] : -# 399| mu6_3(int) = Store : &:r6_2, r6_1 -#-----| Goto -> Block 7 +# 400| Block 6 +# 400| v6_0(void) = NoOp : +# 401| r6_1(int) = Constant[4] : +# 401| r6_2(glval) = VariableAddress[y] : +# 401| mu6_3(int) = Store : &:r6_2, r6_1 +# 402| v6_4(void) = NoOp : +#-----| Goto -> Block 9 -# 400| Block 7 -# 400| v7_0(void) = NoOp : -# 401| r7_1(int) = Constant[4] : -# 401| r7_2(glval) = VariableAddress[y] : -# 401| mu7_3(int) = Store : &:r7_2, r7_1 -# 402| v7_4(void) = NoOp : -#-----| Goto -> Block 10 +# 404| Block 7 +# 404| v7_0(void) = NoOp : +# 405| r7_1(int) = Constant[0] : +# 405| r7_2(glval) = VariableAddress[y] : +# 405| mu7_3(int) = Store : &:r7_2, r7_1 +# 406| v7_4(void) = NoOp : +#-----| Goto -> Block 9 -# 404| Block 8 -# 404| v8_0(void) = NoOp : -# 405| r8_1(int) = Constant[0] : -# 405| r8_2(glval) = VariableAddress[y] : -# 405| mu8_3(int) = Store : &:r8_2, r8_1 -# 406| v8_4(void) = NoOp : -#-----| Goto -> Block 10 +# 408| Block 8 +# 408| r8_0(int) = Constant[5678] : +# 408| r8_1(glval) = VariableAddress[y] : +# 408| mu8_2(int) = Store : &:r8_1, r8_0 +#-----| Goto -> Block 9 -# 408| Block 9 -# 408| r9_0(int) = Constant[5678] : -# 408| r9_1(glval) = VariableAddress[y] : -# 408| mu9_2(int) = Store : &:r9_1, r9_0 -#-----| Goto -> Block 10 - -# 409| Block 10 -# 409| v10_0(void) = NoOp : -# 410| v10_1(void) = NoOp : +# 409| Block 9 +# 409| v9_0(void) = NoOp : +# 410| v9_1(void) = NoOp : +# 384| v9_2(void) = ReturnVoid : +# 384| v9_3(void) = UnmodeledUse : mu* +# 384| v9_4(void) = ExitFunction : # 422| Point ReturnStruct(Point) # 422| Block 0 @@ -1942,16 +1861,10 @@ ir.cpp: # 423| r0_6(glval) = VariableAddress[pt] : # 423| r0_7(Point) = Load : &:r0_6, ~mu0_2 # 423| mu0_8(Point) = Store : &:r0_5, r0_7 -#-----| Goto -> Block 1 - -# 422| Block 1 -# 422| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 422| v1_1(void) = UnmodeledUse : mu* -# 422| v1_2(void) = ExitFunction : - -# 422| Block 2 -# 422| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 422| r0_9(glval) = VariableAddress[#return] : +# 422| v0_10(void) = ReturnValue : &:r0_9, ~mu0_2 +# 422| v0_11(void) = UnmodeledUse : mu* +# 422| v0_12(void) = ExitFunction : # 426| void FieldAccess() # 426| Block 0 @@ -1975,11 +1888,9 @@ ir.cpp: # 430| r0_17(glval) = FieldAddress[y] : r0_16 # 430| mu0_18(int *) = Store : &:r0_15, r0_17 # 431| v0_19(void) = NoOp : - -# 426| Block 1 -# 426| v1_0(void) = ReturnVoid : -# 426| v1_1(void) = UnmodeledUse : mu* -# 426| v1_2(void) = ExitFunction : +# 426| v0_20(void) = ReturnVoid : +# 426| v0_21(void) = UnmodeledUse : mu* +# 426| v0_22(void) = ExitFunction : # 433| void LogicalOr(bool, bool) # 433| Block 0 @@ -1995,55 +1906,53 @@ ir.cpp: # 435| r0_9(glval) = VariableAddress[a] : # 435| r0_10(bool) = Load : &:r0_9, ~mu0_2 # 435| v0_11(void) = ConditionalBranch : r0_10 -#-----| False -> Block 2 -#-----| True -> Block 3 +#-----| False -> Block 1 +#-----| True -> Block 2 -# 433| Block 1 -# 433| v1_0(void) = ReturnVoid : -# 433| v1_1(void) = UnmodeledUse : mu* -# 433| v1_2(void) = ExitFunction : +# 435| Block 1 +# 435| r1_0(glval) = VariableAddress[b] : +# 435| r1_1(bool) = Load : &:r1_0, ~mu0_2 +# 435| v1_2(void) = ConditionalBranch : r1_1 +#-----| False -> Block 3 +#-----| True -> Block 2 -# 435| Block 2 -# 435| r2_0(glval) = VariableAddress[b] : -# 435| r2_1(bool) = Load : &:r2_0, ~mu0_2 -# 435| v2_2(void) = ConditionalBranch : r2_1 +# 436| Block 2 +# 436| r2_0(int) = Constant[7] : +# 436| r2_1(glval) = VariableAddress[x] : +# 436| mu2_2(int) = Store : &:r2_1, r2_0 +#-----| Goto -> Block 3 + +# 439| Block 3 +# 439| r3_0(glval) = VariableAddress[a] : +# 439| r3_1(bool) = Load : &:r3_0, ~mu0_2 +# 439| v3_2(void) = ConditionalBranch : r3_1 #-----| False -> Block 4 -#-----| True -> Block 3 - -# 436| Block 3 -# 436| r3_0(int) = Constant[7] : -# 436| r3_1(glval) = VariableAddress[x] : -# 436| mu3_2(int) = Store : &:r3_1, r3_0 -#-----| Goto -> Block 4 +#-----| True -> Block 5 # 439| Block 4 -# 439| r4_0(glval) = VariableAddress[a] : +# 439| r4_0(glval) = VariableAddress[b] : # 439| r4_1(bool) = Load : &:r4_0, ~mu0_2 # 439| v4_2(void) = ConditionalBranch : r4_1 -#-----| False -> Block 5 -#-----| True -> Block 6 +#-----| False -> Block 6 +#-----| True -> Block 5 -# 439| Block 5 -# 439| r5_0(glval) = VariableAddress[b] : -# 439| r5_1(bool) = Load : &:r5_0, ~mu0_2 -# 439| v5_2(void) = ConditionalBranch : r5_1 -#-----| False -> Block 7 -#-----| True -> Block 6 +# 440| Block 5 +# 440| r5_0(int) = Constant[1] : +# 440| r5_1(glval) = VariableAddress[x] : +# 440| mu5_2(int) = Store : &:r5_1, r5_0 +#-----| Goto -> Block 7 -# 440| Block 6 -# 440| r6_0(int) = Constant[1] : -# 440| r6_1(glval) = VariableAddress[x] : -# 440| mu6_2(int) = Store : &:r6_1, r6_0 -#-----| Goto -> Block 8 +# 443| Block 6 +# 443| r6_0(int) = Constant[5] : +# 443| r6_1(glval) = VariableAddress[x] : +# 443| mu6_2(int) = Store : &:r6_1, r6_0 +#-----| Goto -> Block 7 -# 443| Block 7 -# 443| r7_0(int) = Constant[5] : -# 443| r7_1(glval) = VariableAddress[x] : -# 443| mu7_2(int) = Store : &:r7_1, r7_0 -#-----| Goto -> Block 8 - -# 445| Block 8 -# 445| v8_0(void) = NoOp : +# 445| Block 7 +# 445| v7_0(void) = NoOp : +# 433| v7_1(void) = ReturnVoid : +# 433| v7_2(void) = UnmodeledUse : mu* +# 433| v7_3(void) = ExitFunction : # 447| void LogicalAnd(bool, bool) # 447| Block 0 @@ -2059,55 +1968,53 @@ ir.cpp: # 449| r0_9(glval) = VariableAddress[a] : # 449| r0_10(bool) = Load : &:r0_9, ~mu0_2 # 449| v0_11(void) = ConditionalBranch : r0_10 -#-----| False -> Block 4 +#-----| False -> Block 3 +#-----| True -> Block 1 + +# 449| Block 1 +# 449| r1_0(glval) = VariableAddress[b] : +# 449| r1_1(bool) = Load : &:r1_0, ~mu0_2 +# 449| v1_2(void) = ConditionalBranch : r1_1 +#-----| False -> Block 3 #-----| True -> Block 2 -# 447| Block 1 -# 447| v1_0(void) = ReturnVoid : -# 447| v1_1(void) = UnmodeledUse : mu* -# 447| v1_2(void) = ExitFunction : +# 450| Block 2 +# 450| r2_0(int) = Constant[7] : +# 450| r2_1(glval) = VariableAddress[x] : +# 450| mu2_2(int) = Store : &:r2_1, r2_0 +#-----| Goto -> Block 3 -# 449| Block 2 -# 449| r2_0(glval) = VariableAddress[b] : -# 449| r2_1(bool) = Load : &:r2_0, ~mu0_2 -# 449| v2_2(void) = ConditionalBranch : r2_1 -#-----| False -> Block 4 -#-----| True -> Block 3 - -# 450| Block 3 -# 450| r3_0(int) = Constant[7] : -# 450| r3_1(glval) = VariableAddress[x] : -# 450| mu3_2(int) = Store : &:r3_1, r3_0 -#-----| Goto -> Block 4 +# 453| Block 3 +# 453| r3_0(glval) = VariableAddress[a] : +# 453| r3_1(bool) = Load : &:r3_0, ~mu0_2 +# 453| v3_2(void) = ConditionalBranch : r3_1 +#-----| False -> Block 6 +#-----| True -> Block 4 # 453| Block 4 -# 453| r4_0(glval) = VariableAddress[a] : +# 453| r4_0(glval) = VariableAddress[b] : # 453| r4_1(bool) = Load : &:r4_0, ~mu0_2 # 453| v4_2(void) = ConditionalBranch : r4_1 -#-----| False -> Block 7 +#-----| False -> Block 6 #-----| True -> Block 5 -# 453| Block 5 -# 453| r5_0(glval) = VariableAddress[b] : -# 453| r5_1(bool) = Load : &:r5_0, ~mu0_2 -# 453| v5_2(void) = ConditionalBranch : r5_1 -#-----| False -> Block 7 -#-----| True -> Block 6 +# 454| Block 5 +# 454| r5_0(int) = Constant[1] : +# 454| r5_1(glval) = VariableAddress[x] : +# 454| mu5_2(int) = Store : &:r5_1, r5_0 +#-----| Goto -> Block 7 -# 454| Block 6 -# 454| r6_0(int) = Constant[1] : -# 454| r6_1(glval) = VariableAddress[x] : -# 454| mu6_2(int) = Store : &:r6_1, r6_0 -#-----| Goto -> Block 8 +# 457| Block 6 +# 457| r6_0(int) = Constant[5] : +# 457| r6_1(glval) = VariableAddress[x] : +# 457| mu6_2(int) = Store : &:r6_1, r6_0 +#-----| Goto -> Block 7 -# 457| Block 7 -# 457| r7_0(int) = Constant[5] : -# 457| r7_1(glval) = VariableAddress[x] : -# 457| mu7_2(int) = Store : &:r7_1, r7_0 -#-----| Goto -> Block 8 - -# 459| Block 8 -# 459| v8_0(void) = NoOp : +# 459| Block 7 +# 459| v7_0(void) = NoOp : +# 447| v7_1(void) = ReturnVoid : +# 447| v7_2(void) = UnmodeledUse : mu* +# 447| v7_3(void) = ExitFunction : # 461| void LogicalNot(bool, bool) # 461| Block 0 @@ -2123,48 +2030,46 @@ ir.cpp: # 463| r0_9(glval) = VariableAddress[a] : # 463| r0_10(bool) = Load : &:r0_9, ~mu0_2 # 463| v0_11(void) = ConditionalBranch : r0_10 -#-----| False -> Block 2 +#-----| False -> Block 1 +#-----| True -> Block 2 + +# 464| Block 1 +# 464| r1_0(int) = Constant[1] : +# 464| r1_1(glval) = VariableAddress[x] : +# 464| mu1_2(int) = Store : &:r1_1, r1_0 +#-----| Goto -> Block 2 + +# 467| Block 2 +# 467| r2_0(glval) = VariableAddress[a] : +# 467| r2_1(bool) = Load : &:r2_0, ~mu0_2 +# 467| v2_2(void) = ConditionalBranch : r2_1 +#-----| False -> Block 4 #-----| True -> Block 3 -# 461| Block 1 -# 461| v1_0(void) = ReturnVoid : -# 461| v1_1(void) = UnmodeledUse : mu* -# 461| v1_2(void) = ExitFunction : - -# 464| Block 2 -# 464| r2_0(int) = Constant[1] : -# 464| r2_1(glval) = VariableAddress[x] : -# 464| mu2_2(int) = Store : &:r2_1, r2_0 -#-----| Goto -> Block 3 - # 467| Block 3 -# 467| r3_0(glval) = VariableAddress[a] : +# 467| r3_0(glval) = VariableAddress[b] : # 467| r3_1(bool) = Load : &:r3_0, ~mu0_2 # 467| v3_2(void) = ConditionalBranch : r3_1 -#-----| False -> Block 5 -#-----| True -> Block 4 +#-----| False -> Block 4 +#-----| True -> Block 5 -# 467| Block 4 -# 467| r4_0(glval) = VariableAddress[b] : -# 467| r4_1(bool) = Load : &:r4_0, ~mu0_2 -# 467| v4_2(void) = ConditionalBranch : r4_1 -#-----| False -> Block 5 -#-----| True -> Block 6 +# 468| Block 4 +# 468| r4_0(int) = Constant[2] : +# 468| r4_1(glval) = VariableAddress[x] : +# 468| mu4_2(int) = Store : &:r4_1, r4_0 +#-----| Goto -> Block 6 -# 468| Block 5 -# 468| r5_0(int) = Constant[2] : -# 468| r5_1(glval) = VariableAddress[x] : -# 468| mu5_2(int) = Store : &:r5_1, r5_0 -#-----| Goto -> Block 7 +# 471| Block 5 +# 471| r5_0(int) = Constant[3] : +# 471| r5_1(glval) = VariableAddress[x] : +# 471| mu5_2(int) = Store : &:r5_1, r5_0 +#-----| Goto -> Block 6 -# 471| Block 6 -# 471| r6_0(int) = Constant[3] : -# 471| r6_1(glval) = VariableAddress[x] : -# 471| mu6_2(int) = Store : &:r6_1, r6_0 -#-----| Goto -> Block 7 - -# 473| Block 7 -# 473| v7_0(void) = NoOp : +# 473| Block 6 +# 473| v6_0(void) = NoOp : +# 461| v6_1(void) = ReturnVoid : +# 461| v6_2(void) = UnmodeledUse : mu* +# 461| v6_3(void) = ExitFunction : # 475| void ConditionValues(bool, bool) # 475| Block 0 @@ -2180,100 +2085,98 @@ ir.cpp: # 477| r0_9(glval) = VariableAddress[a] : # 477| r0_10(bool) = Load : &:r0_9, ~mu0_2 # 477| v0_11(void) = ConditionalBranch : r0_10 -#-----| False -> Block 11 -#-----| True -> Block 2 +#-----| False -> Block 10 +#-----| True -> Block 1 -# 475| Block 1 -# 475| v1_0(void) = ReturnVoid : -# 475| v1_1(void) = UnmodeledUse : mu* -# 475| v1_2(void) = ExitFunction : +# 477| Block 1 +# 477| r1_0(glval) = VariableAddress[b] : +# 477| r1_1(bool) = Load : &:r1_0, ~mu0_2 +# 477| v1_2(void) = ConditionalBranch : r1_1 +#-----| False -> Block 10 +#-----| True -> Block 12 -# 477| Block 2 -# 477| r2_0(glval) = VariableAddress[b] : -# 477| r2_1(bool) = Load : &:r2_0, ~mu0_2 -# 477| v2_2(void) = ConditionalBranch : r2_1 -#-----| False -> Block 11 -#-----| True -> Block 13 +# 478| Block 2 +# 478| r2_0(glval) = VariableAddress[#temp478:9] : +# 478| r2_1(bool) = Constant[0] : +# 478| mu2_2(bool) = Store : &:r2_0, r2_1 +#-----| Goto -> Block 3 # 478| Block 3 # 478| r3_0(glval) = VariableAddress[#temp478:9] : -# 478| r3_1(bool) = Constant[0] : -# 478| mu3_2(bool) = Store : &:r3_0, r3_1 -#-----| Goto -> Block 4 +# 478| r3_1(bool) = Load : &:r3_0, ~mu0_2 +# 478| r3_2(glval) = VariableAddress[x] : +# 478| mu3_3(bool) = Store : &:r3_2, r3_1 +# 479| r3_4(glval) = VariableAddress[a] : +# 479| r3_5(bool) = Load : &:r3_4, ~mu0_2 +# 479| v3_6(void) = ConditionalBranch : r3_5 +#-----| False -> Block 9 +#-----| True -> Block 8 # 478| Block 4 # 478| r4_0(glval) = VariableAddress[#temp478:9] : -# 478| r4_1(bool) = Load : &:r4_0, ~mu0_2 -# 478| r4_2(glval) = VariableAddress[x] : -# 478| mu4_3(bool) = Store : &:r4_2, r4_1 -# 479| r4_4(glval) = VariableAddress[a] : -# 479| r4_5(bool) = Load : &:r4_4, ~mu0_2 -# 479| v4_6(void) = ConditionalBranch : r4_5 -#-----| False -> Block 10 -#-----| True -> Block 9 +# 478| r4_1(bool) = Constant[1] : +# 478| mu4_2(bool) = Store : &:r4_0, r4_1 +#-----| Goto -> Block 3 # 478| Block 5 -# 478| r5_0(glval) = VariableAddress[#temp478:9] : -# 478| r5_1(bool) = Constant[1] : -# 478| mu5_2(bool) = Store : &:r5_0, r5_1 -#-----| Goto -> Block 4 +# 478| r5_0(glval) = VariableAddress[b] : +# 478| r5_1(bool) = Load : &:r5_0, ~mu0_2 +# 478| v5_2(void) = ConditionalBranch : r5_1 +#-----| False -> Block 2 +#-----| True -> Block 4 -# 478| Block 6 -# 478| r6_0(glval) = VariableAddress[b] : -# 478| r6_1(bool) = Load : &:r6_0, ~mu0_2 -# 478| v6_2(void) = ConditionalBranch : r6_1 -#-----| False -> Block 3 -#-----| True -> Block 5 +# 479| Block 6 +# 479| r6_0(glval) = VariableAddress[#temp479:11] : +# 479| r6_1(bool) = Constant[0] : +# 479| mu6_2(bool) = Store : &:r6_0, r6_1 +#-----| Goto -> Block 7 # 479| Block 7 # 479| r7_0(glval) = VariableAddress[#temp479:11] : -# 479| r7_1(bool) = Constant[0] : -# 479| mu7_2(bool) = Store : &:r7_0, r7_1 -#-----| Goto -> Block 8 +# 479| r7_1(bool) = Load : &:r7_0, ~mu0_2 +# 479| r7_2(bool) = LogicalNot : r7_1 +# 479| r7_3(glval) = VariableAddress[x] : +# 479| mu7_4(bool) = Store : &:r7_3, r7_2 +# 480| v7_5(void) = NoOp : +# 475| v7_6(void) = ReturnVoid : +# 475| v7_7(void) = UnmodeledUse : mu* +# 475| v7_8(void) = ExitFunction : # 479| Block 8 # 479| r8_0(glval) = VariableAddress[#temp479:11] : -# 479| r8_1(bool) = Load : &:r8_0, ~mu0_2 -# 479| r8_2(bool) = LogicalNot : r8_1 -# 479| r8_3(glval) = VariableAddress[x] : -# 479| mu8_4(bool) = Store : &:r8_3, r8_2 -# 480| v8_5(void) = NoOp : +# 479| r8_1(bool) = Constant[1] : +# 479| mu8_2(bool) = Store : &:r8_0, r8_1 +#-----| Goto -> Block 7 # 479| Block 9 -# 479| r9_0(glval) = VariableAddress[#temp479:11] : -# 479| r9_1(bool) = Constant[1] : -# 479| mu9_2(bool) = Store : &:r9_0, r9_1 -#-----| Goto -> Block 8 +# 479| r9_0(glval) = VariableAddress[b] : +# 479| r9_1(bool) = Load : &:r9_0, ~mu0_2 +# 479| v9_2(void) = ConditionalBranch : r9_1 +#-----| False -> Block 6 +#-----| True -> Block 8 -# 479| Block 10 -# 479| r10_0(glval) = VariableAddress[b] : -# 479| r10_1(bool) = Load : &:r10_0, ~mu0_2 -# 479| v10_2(void) = ConditionalBranch : r10_1 -#-----| False -> Block 7 -#-----| True -> Block 9 +# 477| Block 10 +# 477| r10_0(glval) = VariableAddress[#temp477:9] : +# 477| r10_1(bool) = Constant[0] : +# 477| mu10_2(bool) = Store : &:r10_0, r10_1 +#-----| Goto -> Block 11 # 477| Block 11 # 477| r11_0(glval) = VariableAddress[#temp477:9] : -# 477| r11_1(bool) = Constant[0] : -# 477| mu11_2(bool) = Store : &:r11_0, r11_1 -#-----| Goto -> Block 12 +# 477| r11_1(bool) = Load : &:r11_0, ~mu0_2 +# 477| r11_2(glval) = VariableAddress[x] : +# 477| mu11_3(bool) = Store : &:r11_2, r11_1 +# 478| r11_4(glval) = VariableAddress[a] : +# 478| r11_5(bool) = Load : &:r11_4, ~mu0_2 +# 478| v11_6(void) = ConditionalBranch : r11_5 +#-----| False -> Block 5 +#-----| True -> Block 4 # 477| Block 12 # 477| r12_0(glval) = VariableAddress[#temp477:9] : -# 477| r12_1(bool) = Load : &:r12_0, ~mu0_2 -# 477| r12_2(glval) = VariableAddress[x] : -# 477| mu12_3(bool) = Store : &:r12_2, r12_1 -# 478| r12_4(glval) = VariableAddress[a] : -# 478| r12_5(bool) = Load : &:r12_4, ~mu0_2 -# 478| v12_6(void) = ConditionalBranch : r12_5 -#-----| False -> Block 6 -#-----| True -> Block 5 - -# 477| Block 13 -# 477| r13_0(glval) = VariableAddress[#temp477:9] : -# 477| r13_1(bool) = Constant[1] : -# 477| mu13_2(bool) = Store : &:r13_0, r13_1 -#-----| Goto -> Block 12 +# 477| r12_1(bool) = Constant[1] : +# 477| mu12_2(bool) = Store : &:r12_0, r12_1 +#-----| Goto -> Block 11 # 482| void Conditional(bool, int, int) # 482| Block 0 @@ -2290,33 +2193,31 @@ ir.cpp: # 483| r0_10(glval) = VariableAddress[a] : # 483| r0_11(bool) = Load : &:r0_10, ~mu0_2 # 483| v0_12(void) = ConditionalBranch : r0_11 -#-----| False -> Block 3 -#-----| True -> Block 2 +#-----| False -> Block 2 +#-----| True -> Block 1 -# 482| Block 1 -# 482| v1_0(void) = ReturnVoid : -# 482| v1_1(void) = UnmodeledUse : mu* -# 482| v1_2(void) = ExitFunction : +# 483| Block 1 +# 483| r1_0(glval) = VariableAddress[x] : +# 483| r1_1(int) = Load : &:r1_0, ~mu0_2 +# 483| r1_2(glval) = VariableAddress[#temp483:13] : +# 483| mu1_3(int) = Store : &:r1_2, r1_1 +#-----| Goto -> Block 3 # 483| Block 2 -# 483| r2_0(glval) = VariableAddress[x] : +# 483| r2_0(glval) = VariableAddress[y] : # 483| r2_1(int) = Load : &:r2_0, ~mu0_2 # 483| r2_2(glval) = VariableAddress[#temp483:13] : # 483| mu2_3(int) = Store : &:r2_2, r2_1 -#-----| Goto -> Block 4 +#-----| Goto -> Block 3 # 483| Block 3 -# 483| r3_0(glval) = VariableAddress[y] : +# 483| r3_0(glval) = VariableAddress[#temp483:13] : # 483| r3_1(int) = Load : &:r3_0, ~mu0_2 -# 483| r3_2(glval) = VariableAddress[#temp483:13] : -# 483| mu3_3(int) = Store : &:r3_2, r3_1 -#-----| Goto -> Block 4 - -# 483| Block 4 -# 483| r4_0(glval) = VariableAddress[#temp483:13] : -# 483| r4_1(int) = Load : &:r4_0, ~mu0_2 -# 483| mu4_2(int) = Store : &:r0_9, r4_1 -# 484| v4_3(void) = NoOp : +# 483| mu3_2(int) = Store : &:r0_9, r3_1 +# 484| v3_3(void) = NoOp : +# 482| v3_4(void) = ReturnVoid : +# 482| v3_5(void) = UnmodeledUse : mu* +# 482| v3_6(void) = ExitFunction : # 486| void Conditional_LValue(bool) # 486| Block 0 @@ -2333,31 +2234,29 @@ ir.cpp: # 489| r0_10(glval) = VariableAddress[a] : # 489| r0_11(bool) = Load : &:r0_10, ~mu0_2 # 489| v0_12(void) = ConditionalBranch : r0_11 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| False -> Block 3 +#-----| True -> Block 2 -# 486| Block 1 -# 486| v1_0(void) = ReturnVoid : -# 486| v1_1(void) = UnmodeledUse : mu* -# 486| v1_2(void) = ExitFunction : +# 489| Block 1 +# 489| r1_0(glval) = VariableAddress[#temp489:6] : +# 489| r1_1(glval) = Load : &:r1_0, ~mu0_2 +# 489| mu1_2(int) = Store : &:r1_1, r0_9 +# 490| v1_3(void) = NoOp : +# 486| v1_4(void) = ReturnVoid : +# 486| v1_5(void) = UnmodeledUse : mu* +# 486| v1_6(void) = ExitFunction : # 489| Block 2 -# 489| r2_0(glval) = VariableAddress[#temp489:6] : -# 489| r2_1(glval) = Load : &:r2_0, ~mu0_2 -# 489| mu2_2(int) = Store : &:r2_1, r0_9 -# 490| v2_3(void) = NoOp : +# 489| r2_0(glval) = VariableAddress[x] : +# 489| r2_1(glval) = VariableAddress[#temp489:6] : +# 489| mu2_2(glval) = Store : &:r2_1, r2_0 +#-----| Goto -> Block 1 # 489| Block 3 -# 489| r3_0(glval) = VariableAddress[x] : +# 489| r3_0(glval) = VariableAddress[y] : # 489| r3_1(glval) = VariableAddress[#temp489:6] : # 489| mu3_2(glval) = Store : &:r3_1, r3_0 -#-----| Goto -> Block 2 - -# 489| Block 4 -# 489| r4_0(glval) = VariableAddress[y] : -# 489| r4_1(glval) = VariableAddress[#temp489:6] : -# 489| mu4_2(glval) = Store : &:r4_1, r4_0 -#-----| Goto -> Block 2 +#-----| Goto -> Block 1 # 492| void Conditional_Void(bool) # 492| Block 0 @@ -2369,28 +2268,26 @@ ir.cpp: # 493| r0_5(glval) = VariableAddress[a] : # 493| r0_6(bool) = Load : &:r0_5, ~mu0_2 # 493| v0_7(void) = ConditionalBranch : r0_6 -#-----| False -> Block 2 -#-----| True -> Block 4 +#-----| False -> Block 1 +#-----| True -> Block 3 -# 492| Block 1 -# 492| v1_0(void) = ReturnVoid : -# 492| v1_1(void) = UnmodeledUse : mu* -# 492| v1_2(void) = ExitFunction : +# 493| Block 1 +# 493| r1_0(glval) = FunctionAddress[VoidFunc] : +# 493| v1_1(void) = Call : func:r1_0 +# 493| mu1_2(unknown) = ^CallSideEffect : ~mu0_2 +#-----| Goto -> Block 2 -# 493| Block 2 -# 493| r2_0(glval) = FunctionAddress[VoidFunc] : -# 493| v2_1(void) = Call : func:r2_0 -# 493| mu2_2(unknown) = ^CallSideEffect : ~mu0_2 -#-----| Goto -> Block 3 +# 494| Block 2 +# 494| v2_0(void) = NoOp : +# 492| v2_1(void) = ReturnVoid : +# 492| v2_2(void) = UnmodeledUse : mu* +# 492| v2_3(void) = ExitFunction : -# 494| Block 3 -# 494| v3_0(void) = NoOp : - -# 493| Block 4 -# 493| r4_0(glval) = FunctionAddress[VoidFunc] : -# 493| v4_1(void) = Call : func:r4_0 -# 493| mu4_2(unknown) = ^CallSideEffect : ~mu0_2 -#-----| Goto -> Block 3 +# 493| Block 3 +# 493| r3_0(glval) = FunctionAddress[VoidFunc] : +# 493| v3_1(void) = Call : func:r3_0 +# 493| mu3_2(unknown) = ^CallSideEffect : ~mu0_2 +#-----| Goto -> Block 2 # 496| void Nullptr() # 496| Block 0 @@ -2410,11 +2307,9 @@ ir.cpp: # 500| r0_13(glval) = VariableAddress[q] : # 500| mu0_14(int *) = Store : &:r0_13, r0_12 # 501| v0_15(void) = NoOp : - -# 496| Block 1 -# 496| v1_0(void) = ReturnVoid : -# 496| v1_1(void) = UnmodeledUse : mu* -# 496| v1_2(void) = ExitFunction : +# 496| v0_16(void) = ReturnVoid : +# 496| v0_17(void) = UnmodeledUse : mu* +# 496| v0_18(void) = ExitFunction : # 503| void InitList(int, float) # 503| Block 0 @@ -2460,11 +2355,9 @@ ir.cpp: # 509| r0_39(int) = Constant[0] : # 509| mu0_40(int) = Store : &:r0_38, r0_39 # 510| v0_41(void) = NoOp : - -# 503| Block 1 -# 503| v1_0(void) = ReturnVoid : -# 503| v1_1(void) = UnmodeledUse : mu* -# 503| v1_2(void) = ExitFunction : +# 503| v0_42(void) = ReturnVoid : +# 503| v0_43(void) = UnmodeledUse : mu* +# 503| v0_44(void) = ExitFunction : # 512| void NestedInitList(int, float) # 512| Block 0 @@ -2539,11 +2432,9 @@ ir.cpp: # 516| r0_68(int) = Constant[0] : # 516| mu0_69(int) = Store : &:r0_67, r0_68 # 517| v0_70(void) = NoOp : - -# 512| Block 1 -# 512| v1_0(void) = ReturnVoid : -# 512| v1_1(void) = UnmodeledUse : mu* -# 512| v1_2(void) = ExitFunction : +# 512| v0_71(void) = ReturnVoid : +# 512| v0_72(void) = UnmodeledUse : mu* +# 512| v0_73(void) = ExitFunction : # 519| void ArrayInit(int, float) # 519| Block 0 @@ -2589,11 +2480,9 @@ ir.cpp: # 522| r0_39(unknown[8]) = Constant[0] : # 522| mu0_40(unknown[8]) = Store : &:r0_38, r0_39 # 523| v0_41(void) = NoOp : - -# 519| Block 1 -# 519| v1_0(void) = ReturnVoid : -# 519| v1_1(void) = UnmodeledUse : mu* -# 519| v1_2(void) = ExitFunction : +# 519| v0_42(void) = ReturnVoid : +# 519| v0_43(void) = UnmodeledUse : mu* +# 519| v0_44(void) = ExitFunction : # 530| void UnionInit(int, float) # 530| Block 0 @@ -2612,11 +2501,9 @@ ir.cpp: # 531| r0_12(double) = Convert : r0_11 # 531| mu0_13(double) = Store : &:r0_9, r0_12 # 533| v0_14(void) = NoOp : - -# 530| Block 1 -# 530| v1_0(void) = ReturnVoid : -# 530| v1_1(void) = UnmodeledUse : mu* -# 530| v1_2(void) = ExitFunction : +# 530| v0_15(void) = ReturnVoid : +# 530| v0_16(void) = UnmodeledUse : mu* +# 530| v0_17(void) = ExitFunction : # 535| void EarlyReturn(int, int) # 535| Block 0 @@ -2643,6 +2530,7 @@ ir.cpp: # 537| Block 2 # 537| v2_0(void) = NoOp : +#-----| Goto -> Block 1 # 540| Block 3 # 540| r3_0(glval) = VariableAddress[x] : @@ -2650,6 +2538,7 @@ ir.cpp: # 540| r3_2(glval) = VariableAddress[y] : # 540| mu3_3(int) = Store : &:r3_2, r3_1 # 541| v3_4(void) = NoOp : +#-----| Goto -> Block 1 # 543| int EarlyReturnValue(int, int) # 543| Block 0 @@ -2666,33 +2555,30 @@ ir.cpp: # 544| r0_10(int) = Load : &:r0_9, ~mu0_2 # 544| r0_11(bool) = CompareLT : r0_8, r0_10 # 544| v0_12(void) = ConditionalBranch : r0_11 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| False -> Block 3 +#-----| True -> Block 2 # 543| Block 1 -# 543| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 543| v1_1(void) = UnmodeledUse : mu* -# 543| v1_2(void) = ExitFunction : +# 543| r1_0(glval) = VariableAddress[#return] : +# 543| v1_1(void) = ReturnValue : &:r1_0, ~mu0_2 +# 543| v1_2(void) = UnmodeledUse : mu* +# 543| v1_3(void) = ExitFunction : -# 543| Block 2 -# 543| r2_0(glval) = VariableAddress[#return] : +# 545| Block 2 +# 545| r2_0(glval) = VariableAddress[#return] : +# 545| r2_1(glval) = VariableAddress[x] : +# 545| r2_2(int) = Load : &:r2_1, ~mu0_2 +# 545| mu2_3(int) = Store : &:r2_0, r2_2 #-----| Goto -> Block 1 -# 545| Block 3 -# 545| r3_0(glval) = VariableAddress[#return] : -# 545| r3_1(glval) = VariableAddress[x] : -# 545| r3_2(int) = Load : &:r3_1, ~mu0_2 -# 545| mu3_3(int) = Store : &:r3_0, r3_2 -#-----| Goto -> Block 1 - -# 548| Block 4 -# 548| r4_0(glval) = VariableAddress[#return] : -# 548| r4_1(glval) = VariableAddress[x] : -# 548| r4_2(int) = Load : &:r4_1, ~mu0_2 -# 548| r4_3(glval) = VariableAddress[y] : -# 548| r4_4(int) = Load : &:r4_3, ~mu0_2 -# 548| r4_5(int) = Add : r4_2, r4_4 -# 548| mu4_6(int) = Store : &:r4_0, r4_5 +# 548| Block 3 +# 548| r3_0(glval) = VariableAddress[#return] : +# 548| r3_1(glval) = VariableAddress[x] : +# 548| r3_2(int) = Load : &:r3_1, ~mu0_2 +# 548| r3_3(glval) = VariableAddress[y] : +# 548| r3_4(int) = Load : &:r3_3, ~mu0_2 +# 548| r3_5(int) = Add : r3_2, r3_4 +# 548| mu3_6(int) = Store : &:r3_0, r3_5 #-----| Goto -> Block 1 # 551| int CallViaFuncPtr(int(*)(int)) @@ -2709,16 +2595,10 @@ ir.cpp: # 552| r0_9(int) = Call : func:r0_7, 0:r0_8 # 552| mu0_10(unknown) = ^CallSideEffect : ~mu0_2 # 552| mu0_11(int) = Store : &:r0_5, r0_9 -#-----| Goto -> Block 1 - -# 551| Block 1 -# 551| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 551| v1_1(void) = UnmodeledUse : mu* -# 551| v1_2(void) = ExitFunction : - -# 551| Block 2 -# 551| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 551| r0_12(glval) = VariableAddress[#return] : +# 551| v0_13(void) = ReturnValue : &:r0_12, ~mu0_2 +# 551| v0_14(void) = UnmodeledUse : mu* +# 551| v0_15(void) = ExitFunction : # 560| int EnumSwitch(E) # 560| Block 0 @@ -2731,38 +2611,35 @@ ir.cpp: # 561| r0_6(E) = Load : &:r0_5, ~mu0_2 # 561| r0_7(int) = Convert : r0_6 # 561| v0_8(void) = Switch : r0_7 -#-----| Case[0] -> Block 5 -#-----| Case[1] -> Block 3 -#-----| Default -> Block 4 +#-----| Case[0] -> Block 4 +#-----| Case[1] -> Block 2 +#-----| Default -> Block 3 # 560| Block 1 -# 560| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 560| v1_1(void) = UnmodeledUse : mu* -# 560| v1_2(void) = ExitFunction : +# 560| r1_0(glval) = VariableAddress[#return] : +# 560| v1_1(void) = ReturnValue : &:r1_0, ~mu0_2 +# 560| v1_2(void) = UnmodeledUse : mu* +# 560| v1_3(void) = ExitFunction : -# 560| Block 2 -# 560| r2_0(glval) = VariableAddress[#return] : +# 564| Block 2 +# 564| v2_0(void) = NoOp : +# 565| r2_1(glval) = VariableAddress[#return] : +# 565| r2_2(int) = Constant[1] : +# 565| mu2_3(int) = Store : &:r2_1, r2_2 #-----| Goto -> Block 1 -# 564| Block 3 -# 564| v3_0(void) = NoOp : -# 565| r3_1(glval) = VariableAddress[#return] : -# 565| r3_2(int) = Constant[1] : -# 565| mu3_3(int) = Store : &:r3_1, r3_2 +# 566| Block 3 +# 566| v3_0(void) = NoOp : +# 567| r3_1(glval) = VariableAddress[#return] : +# 567| r3_2(int) = Constant[-1] : +# 567| mu3_3(int) = Store : &:r3_1, r3_2 #-----| Goto -> Block 1 -# 566| Block 4 -# 566| v4_0(void) = NoOp : -# 567| r4_1(glval) = VariableAddress[#return] : -# 567| r4_2(int) = Constant[-1] : -# 567| mu4_3(int) = Store : &:r4_1, r4_2 -#-----| Goto -> Block 1 - -# 562| Block 5 -# 562| v5_0(void) = NoOp : -# 563| r5_1(glval) = VariableAddress[#return] : -# 563| r5_2(int) = Constant[0] : -# 563| mu5_3(int) = Store : &:r5_1, r5_2 +# 562| Block 4 +# 562| v4_0(void) = NoOp : +# 563| r4_1(glval) = VariableAddress[#return] : +# 563| r4_2(int) = Constant[0] : +# 563| mu4_3(int) = Store : &:r4_1, r4_2 #-----| Goto -> Block 1 # 571| void InitArray() @@ -2825,11 +2702,9 @@ ir.cpp: # 579| r0_55(unknown[2]) = Constant[0] : # 579| mu0_56(unknown[2]) = Store : &:r0_54, r0_55 # 580| v0_57(void) = NoOp : - -# 571| Block 1 -# 571| v1_0(void) = ReturnVoid : -# 571| v1_1(void) = UnmodeledUse : mu* -# 571| v1_2(void) = ExitFunction : +# 571| v0_58(void) = ReturnVoid : +# 571| v0_59(void) = UnmodeledUse : mu* +# 571| v0_60(void) = ExitFunction : # 584| void VarArgs() # 584| Block 0 @@ -2849,11 +2724,9 @@ ir.cpp: # 585| mu0_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_5 # 585| mu0_14(unknown) = ^BufferMayWriteSideEffect[2] : &:r0_8 # 586| v0_15(void) = NoOp : - -# 584| Block 1 -# 584| v1_0(void) = ReturnVoid : -# 584| v1_1(void) = UnmodeledUse : mu* -# 584| v1_2(void) = ExitFunction : +# 584| v0_16(void) = ReturnVoid : +# 584| v0_17(void) = UnmodeledUse : mu* +# 584| v0_18(void) = ExitFunction : # 590| void SetFuncPtr() # 590| Block 0 @@ -2873,11 +2746,9 @@ ir.cpp: # 594| r0_13(glval<..(*)(..)>) = VariableAddress[pfn] : # 594| mu0_14(..(*)(..)) = Store : &:r0_13, r0_12 # 595| v0_15(void) = NoOp : - -# 590| Block 1 -# 590| v1_0(void) = ReturnVoid : -# 590| v1_1(void) = UnmodeledUse : mu* -# 590| v1_2(void) = ExitFunction : +# 590| v0_16(void) = ReturnVoid : +# 590| v0_17(void) = UnmodeledUse : mu* +# 590| v0_18(void) = ExitFunction : # 615| void DeclareObject() # 615| Block 0 @@ -2910,11 +2781,9 @@ ir.cpp: # 619| v0_26(void) = ^IndirectReadSideEffect[0] : &:r0_23, ~mu0_2 # 619| mu0_27(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_23 # 620| v0_28(void) = NoOp : - -# 615| Block 1 -# 615| v1_0(void) = ReturnVoid : -# 615| v1_1(void) = UnmodeledUse : mu* -# 615| v1_2(void) = ExitFunction : +# 615| v0_29(void) = ReturnVoid : +# 615| v0_30(void) = UnmodeledUse : mu* +# 615| v0_31(void) = ExitFunction : # 622| void CallMethods(String&, String*, String) # 622| Block 0 @@ -2957,11 +2826,9 @@ ir.cpp: # 626| v0_36(void) = NoOp : # 622| v0_37(void) = ReturnIndirection : &:r0_5, ~mu0_2 # 622| v0_38(void) = ReturnIndirection : &:r0_9, ~mu0_2 - -# 622| Block 1 -# 622| v1_0(void) = ReturnVoid : -# 622| v1_1(void) = UnmodeledUse : mu* -# 622| v1_2(void) = ExitFunction : +# 622| v0_39(void) = ReturnVoid : +# 622| v0_40(void) = UnmodeledUse : mu* +# 622| v0_41(void) = ExitFunction : # 630| int C::StaticMemberFunction(int) # 630| Block 0 @@ -2974,62 +2841,44 @@ ir.cpp: # 631| r0_6(glval) = VariableAddress[x] : # 631| r0_7(int) = Load : &:r0_6, ~mu0_2 # 631| mu0_8(int) = Store : &:r0_5, r0_7 -#-----| Goto -> Block 1 - -# 630| Block 1 -# 630| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 630| v1_1(void) = UnmodeledUse : mu* -# 630| v1_2(void) = ExitFunction : - -# 630| Block 2 -# 630| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 630| r0_9(glval) = VariableAddress[#return] : +# 630| v0_10(void) = ReturnValue : &:r0_9, ~mu0_2 +# 630| v0_11(void) = UnmodeledUse : mu* +# 630| v0_12(void) = ExitFunction : # 634| int C::InstanceMemberFunction(int) # 634| Block 0 -# 634| v0_0(void) = EnterFunction : -# 634| mu0_1(unknown) = AliasedDefinition : -# 634| mu0_2(unknown) = UnmodeledDefinition : -# 634| r0_3(glval) = InitializeThis : -# 634| r0_4(glval) = VariableAddress[x] : -# 634| mu0_5(int) = InitializeParameter[x] : &:r0_4 -# 635| r0_6(glval) = VariableAddress[#return] : -# 635| r0_7(glval) = VariableAddress[x] : -# 635| r0_8(int) = Load : &:r0_7, ~mu0_2 -# 635| mu0_9(int) = Store : &:r0_6, r0_8 -#-----| Goto -> Block 1 - -# 634| Block 1 -# 634| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 634| v1_1(void) = UnmodeledUse : mu* -# 634| v1_2(void) = ExitFunction : - -# 634| Block 2 -# 634| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 634| v0_0(void) = EnterFunction : +# 634| mu0_1(unknown) = AliasedDefinition : +# 634| mu0_2(unknown) = UnmodeledDefinition : +# 634| r0_3(glval) = InitializeThis : +# 634| r0_4(glval) = VariableAddress[x] : +# 634| mu0_5(int) = InitializeParameter[x] : &:r0_4 +# 635| r0_6(glval) = VariableAddress[#return] : +# 635| r0_7(glval) = VariableAddress[x] : +# 635| r0_8(int) = Load : &:r0_7, ~mu0_2 +# 635| mu0_9(int) = Store : &:r0_6, r0_8 +# 634| r0_10(glval) = VariableAddress[#return] : +# 634| v0_11(void) = ReturnValue : &:r0_10, ~mu0_2 +# 634| v0_12(void) = UnmodeledUse : mu* +# 634| v0_13(void) = ExitFunction : # 638| int C::VirtualMemberFunction(int) # 638| Block 0 -# 638| v0_0(void) = EnterFunction : -# 638| mu0_1(unknown) = AliasedDefinition : -# 638| mu0_2(unknown) = UnmodeledDefinition : -# 638| r0_3(glval) = InitializeThis : -# 638| r0_4(glval) = VariableAddress[x] : -# 638| mu0_5(int) = InitializeParameter[x] : &:r0_4 -# 639| r0_6(glval) = VariableAddress[#return] : -# 639| r0_7(glval) = VariableAddress[x] : -# 639| r0_8(int) = Load : &:r0_7, ~mu0_2 -# 639| mu0_9(int) = Store : &:r0_6, r0_8 -#-----| Goto -> Block 1 - -# 638| Block 1 -# 638| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 638| v1_1(void) = UnmodeledUse : mu* -# 638| v1_2(void) = ExitFunction : - -# 638| Block 2 -# 638| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 638| v0_0(void) = EnterFunction : +# 638| mu0_1(unknown) = AliasedDefinition : +# 638| mu0_2(unknown) = UnmodeledDefinition : +# 638| r0_3(glval) = InitializeThis : +# 638| r0_4(glval) = VariableAddress[x] : +# 638| mu0_5(int) = InitializeParameter[x] : &:r0_4 +# 639| r0_6(glval) = VariableAddress[#return] : +# 639| r0_7(glval) = VariableAddress[x] : +# 639| r0_8(int) = Load : &:r0_7, ~mu0_2 +# 639| mu0_9(int) = Store : &:r0_6, r0_8 +# 638| r0_10(glval) = VariableAddress[#return] : +# 638| v0_11(void) = ReturnValue : &:r0_10, ~mu0_2 +# 638| v0_12(void) = UnmodeledUse : mu* +# 638| v0_13(void) = ExitFunction : # 642| void C::FieldAccess() # 642| Block 0 @@ -3067,11 +2916,9 @@ ir.cpp: # 649| r0_31(glval) = VariableAddress[x] : # 649| mu0_32(int) = Store : &:r0_31, r0_30 # 650| v0_33(void) = NoOp : - -# 642| Block 1 -# 642| v1_0(void) = ReturnVoid : -# 642| v1_1(void) = UnmodeledUse : mu* -# 642| v1_2(void) = ExitFunction : +# 642| v0_34(void) = ReturnVoid : +# 642| v0_35(void) = UnmodeledUse : mu* +# 642| v0_36(void) = ExitFunction : # 652| void C::MethodCalls() # 652| Block 0 @@ -3101,11 +2948,9 @@ ir.cpp: #-----| v0_23(void) = ^IndirectReadSideEffect[-1] : &:r0_18, ~mu0_2 #-----| mu0_24(C) = ^IndirectMayWriteSideEffect[-1] : &:r0_18 # 656| v0_25(void) = NoOp : - -# 652| Block 1 -# 652| v1_0(void) = ReturnVoid : -# 652| v1_1(void) = UnmodeledUse : mu* -# 652| v1_2(void) = ExitFunction : +# 652| v0_26(void) = ReturnVoid : +# 652| v0_27(void) = UnmodeledUse : mu* +# 652| v0_28(void) = ExitFunction : # 658| void C::C() # 658| Block 0 @@ -3135,11 +2980,9 @@ ir.cpp: # 662| v0_23(void) = ^IndirectReadSideEffect[0] : &:r0_20, ~mu0_2 # 662| mu0_24(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_20 # 664| v0_25(void) = NoOp : - -# 658| Block 1 -# 658| v1_0(void) = ReturnVoid : -# 658| v1_1(void) = UnmodeledUse : mu* -# 658| v1_2(void) = ExitFunction : +# 658| v0_26(void) = ReturnVoid : +# 658| v0_27(void) = UnmodeledUse : mu* +# 658| v0_28(void) = ExitFunction : # 675| int DerefReference(int&) # 675| Block 0 @@ -3156,16 +2999,10 @@ ir.cpp: # 676| r0_10(int) = Load : &:r0_9, ~mu0_2 # 676| mu0_11(int) = Store : &:r0_7, r0_10 # 675| v0_12(void) = ReturnIndirection : &:r0_5, ~mu0_2 -#-----| Goto -> Block 1 - -# 675| Block 1 -# 675| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 675| v1_1(void) = UnmodeledUse : mu* -# 675| v1_2(void) = ExitFunction : - -# 675| Block 2 -# 675| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 675| r0_13(glval) = VariableAddress[#return] : +# 675| v0_14(void) = ReturnValue : &:r0_13, ~mu0_2 +# 675| v0_15(void) = UnmodeledUse : mu* +# 675| v0_16(void) = ExitFunction : # 679| int& TakeReference() # 679| Block 0 @@ -3175,16 +3012,10 @@ ir.cpp: # 680| r0_3(glval) = VariableAddress[#return] : # 680| r0_4(glval) = VariableAddress[g] : # 680| mu0_5(int &) = Store : &:r0_3, r0_4 -#-----| Goto -> Block 1 - -# 679| Block 1 -# 679| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 679| v1_1(void) = UnmodeledUse : mu* -# 679| v1_2(void) = ExitFunction : - -# 679| Block 2 -# 679| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 679| r0_6(glval) = VariableAddress[#return] : +# 679| v0_7(void) = ReturnValue : &:r0_6, ~mu0_2 +# 679| v0_8(void) = UnmodeledUse : mu* +# 679| v0_9(void) = ExitFunction : # 685| void InitReference(int) # 685| Block 0 @@ -3207,11 +3038,9 @@ ir.cpp: # 688| r0_16(glval) = Convert : r0_14 # 688| mu0_17(String &) = Store : &:r0_12, r0_16 # 689| v0_18(void) = NoOp : - -# 685| Block 1 -# 685| v1_0(void) = ReturnVoid : -# 685| v1_1(void) = UnmodeledUse : mu* -# 685| v1_2(void) = ExitFunction : +# 685| v0_19(void) = ReturnVoid : +# 685| v0_20(void) = UnmodeledUse : mu* +# 685| v0_21(void) = ExitFunction : # 691| void ArrayReferences() # 691| Block 0 @@ -3232,11 +3061,9 @@ ir.cpp: # 694| r0_14(int) = Load : &:r0_13, ~mu0_2 # 694| mu0_15(int) = Store : &:r0_8, r0_14 # 695| v0_16(void) = NoOp : - -# 691| Block 1 -# 691| v1_0(void) = ReturnVoid : -# 691| v1_1(void) = UnmodeledUse : mu* -# 691| v1_2(void) = ExitFunction : +# 691| v0_17(void) = ReturnVoid : +# 691| v0_18(void) = UnmodeledUse : mu* +# 691| v0_19(void) = ExitFunction : # 697| void FunctionReferences() # 697| Block 0 @@ -3256,11 +3083,9 @@ ir.cpp: # 700| r0_13(int) = Call : func:r0_11, 0:r0_12 # 700| mu0_14(unknown) = ^CallSideEffect : ~mu0_2 # 701| v0_15(void) = NoOp : - -# 697| Block 1 -# 697| v1_0(void) = ReturnVoid : -# 697| v1_1(void) = UnmodeledUse : mu* -# 697| v1_2(void) = ExitFunction : +# 697| v0_16(void) = ReturnVoid : +# 697| v0_17(void) = UnmodeledUse : mu* +# 697| v0_18(void) = ExitFunction : # 704| int min(int, int) # 704| Block 0 @@ -3278,37 +3103,31 @@ ir.cpp: # 705| r0_11(int) = Load : &:r0_10, ~mu0_2 # 705| r0_12(bool) = CompareLT : r0_9, r0_11 # 705| v0_13(void) = ConditionalBranch : r0_12 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| False -> Block 2 +#-----| True -> Block 1 -# 704| Block 1 -# 704| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 704| v1_1(void) = UnmodeledUse : mu* -# 704| v1_2(void) = ExitFunction : +# 705| Block 1 +# 705| r1_0(glval) = VariableAddress[x] : +# 705| r1_1(int) = Load : &:r1_0, ~mu0_2 +# 705| r1_2(glval) = VariableAddress[#temp705:10] : +# 705| mu1_3(int) = Store : &:r1_2, r1_1 +#-----| Goto -> Block 3 -# 704| Block 2 -# 704| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 705| Block 2 +# 705| r2_0(glval) = VariableAddress[y] : +# 705| r2_1(int) = Load : &:r2_0, ~mu0_2 +# 705| r2_2(glval) = VariableAddress[#temp705:10] : +# 705| mu2_3(int) = Store : &:r2_2, r2_1 +#-----| Goto -> Block 3 # 705| Block 3 -# 705| r3_0(glval) = VariableAddress[x] : +# 705| r3_0(glval) = VariableAddress[#temp705:10] : # 705| r3_1(int) = Load : &:r3_0, ~mu0_2 -# 705| r3_2(glval) = VariableAddress[#temp705:10] : -# 705| mu3_3(int) = Store : &:r3_2, r3_1 -#-----| Goto -> Block 5 - -# 705| Block 4 -# 705| r4_0(glval) = VariableAddress[y] : -# 705| r4_1(int) = Load : &:r4_0, ~mu0_2 -# 705| r4_2(glval) = VariableAddress[#temp705:10] : -# 705| mu4_3(int) = Store : &:r4_2, r4_1 -#-----| Goto -> Block 5 - -# 705| Block 5 -# 705| r5_0(glval) = VariableAddress[#temp705:10] : -# 705| r5_1(int) = Load : &:r5_0, ~mu0_2 -# 705| mu5_2(int) = Store : &:r0_7, r5_1 -#-----| Goto -> Block 1 +# 705| mu3_2(int) = Store : &:r0_7, r3_1 +# 704| r3_3(glval) = VariableAddress[#return] : +# 704| v3_4(void) = ReturnValue : &:r3_3, ~mu0_2 +# 704| v3_5(void) = UnmodeledUse : mu* +# 704| v3_6(void) = ExitFunction : # 708| int CallMin(int, int) # 708| Block 0 @@ -3328,16 +3147,10 @@ ir.cpp: # 709| r0_13(int) = Call : func:r0_8, 0:r0_10, 1:r0_12 # 709| mu0_14(unknown) = ^CallSideEffect : ~mu0_2 # 709| mu0_15(int) = Store : &:r0_7, r0_13 -#-----| Goto -> Block 1 - -# 708| Block 1 -# 708| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 708| v1_1(void) = UnmodeledUse : mu* -# 708| v1_2(void) = ExitFunction : - -# 708| Block 2 -# 708| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 708| r0_16(glval) = VariableAddress[#return] : +# 708| v0_17(void) = ReturnValue : &:r0_16, ~mu0_2 +# 708| v0_18(void) = UnmodeledUse : mu* +# 708| v0_19(void) = ExitFunction : # 715| long Outer::Func(void*, char) # 715| Block 0 @@ -3354,16 +3167,10 @@ ir.cpp: # 716| r0_10(long) = Constant[0] : # 716| mu0_11(long) = Store : &:r0_9, r0_10 # 715| v0_12(void) = ReturnIndirection : &:r0_5, ~mu0_2 -#-----| Goto -> Block 1 - -# 715| Block 1 -# 715| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 715| v1_1(void) = UnmodeledUse : mu* -# 715| v1_2(void) = ExitFunction : - -# 715| Block 2 -# 715| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 715| r0_13(glval) = VariableAddress[#return] : +# 715| v0_14(void) = ReturnValue : &:r0_13, ~mu0_2 +# 715| v0_15(void) = UnmodeledUse : mu* +# 715| v0_16(void) = ExitFunction : # 720| double CallNestedTemplateFunc() # 720| Block 0 @@ -3380,16 +3187,10 @@ ir.cpp: # 721| mu0_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_5 # 721| r0_11(double) = Convert : r0_7 # 721| mu0_12(double) = Store : &:r0_3, r0_11 -#-----| Goto -> Block 1 - -# 720| Block 1 -# 720| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 720| v1_1(void) = UnmodeledUse : mu* -# 720| v1_2(void) = ExitFunction : - -# 720| Block 2 -# 720| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 720| r0_13(glval) = VariableAddress[#return] : +# 720| v0_14(void) = ReturnValue : &:r0_13, ~mu0_2 +# 720| v0_15(void) = UnmodeledUse : mu* +# 720| v0_16(void) = ExitFunction : # 724| void TryCatch(bool) # 724| Block 0 @@ -3404,114 +3205,112 @@ ir.cpp: # 727| r0_8(glval) = VariableAddress[b] : # 727| r0_9(bool) = Load : &:r0_8, ~mu0_2 # 727| v0_10(void) = ConditionalBranch : r0_9 -#-----| False -> Block 5 -#-----| True -> Block 4 +#-----| False -> Block 4 +#-----| True -> Block 3 # 724| Block 1 -# 724| v1_0(void) = ReturnVoid : -#-----| Goto -> Block 2 +# 724| v1_0(void) = UnmodeledUse : mu* +# 724| v1_1(void) = ExitFunction : # 724| Block 2 -# 724| v2_0(void) = UnmodeledUse : mu* -# 724| v2_1(void) = ExitFunction : +# 724| v2_0(void) = Unwind : +#-----| Goto -> Block 1 -# 724| Block 3 -# 724| v3_0(void) = Unwind : -#-----| Goto -> Block 2 +# 728| Block 3 +# 728| r3_0(glval) = VariableAddress[#throw728:7] : +# 728| r3_1(glval) = StringConstant["string literal"] : +# 728| r3_2(char *) = Convert : r3_1 +# 728| mu3_3(char *) = Store : &:r3_0, r3_2 +# 728| v3_4(void) = ThrowValue : &:r3_0, ~mu0_2 +#-----| Exception -> Block 9 -# 728| Block 4 -# 728| r4_0(glval) = VariableAddress[#throw728:7] : -# 728| r4_1(glval) = StringConstant["string literal"] : -# 728| r4_2(char *) = Convert : r4_1 -# 728| mu4_3(char *) = Store : &:r4_0, r4_2 -# 728| v4_4(void) = ThrowValue : &:r4_0, ~mu0_2 -#-----| Exception -> Block 10 +# 730| Block 4 +# 730| r4_0(glval) = VariableAddress[x] : +# 730| r4_1(int) = Load : &:r4_0, ~mu0_2 +# 730| r4_2(int) = Constant[2] : +# 730| r4_3(bool) = CompareLT : r4_1, r4_2 +# 730| v4_4(void) = ConditionalBranch : r4_3 +#-----| False -> Block 8 +#-----| True -> Block 5 -# 730| Block 5 -# 730| r5_0(glval) = VariableAddress[x] : -# 730| r5_1(int) = Load : &:r5_0, ~mu0_2 -# 730| r5_2(int) = Constant[2] : -# 730| r5_3(bool) = CompareLT : r5_1, r5_2 -# 730| v5_4(void) = ConditionalBranch : r5_3 -#-----| False -> Block 9 +# 731| Block 5 +# 731| r5_0(glval) = VariableAddress[b] : +# 731| r5_1(bool) = Load : &:r5_0, ~mu0_2 +# 731| v5_2(void) = ConditionalBranch : r5_1 +#-----| False -> Block 7 #-----| True -> Block 6 # 731| Block 6 -# 731| r6_0(glval) = VariableAddress[b] : -# 731| r6_1(bool) = Load : &:r6_0, ~mu0_2 -# 731| v6_2(void) = ConditionalBranch : r6_1 -#-----| False -> Block 8 -#-----| True -> Block 7 +# 731| r6_0(int) = Constant[7] : +# 731| r6_1(glval) = VariableAddress[#temp731:11] : +# 731| mu6_2(int) = Store : &:r6_1, r6_0 +# 731| r6_3(glval) = VariableAddress[#temp731:11] : +# 731| r6_4(int) = Load : &:r6_3, ~mu0_2 +# 731| r6_5(glval) = VariableAddress[x] : +# 731| mu6_6(int) = Store : &:r6_5, r6_4 +#-----| Goto -> Block 8 # 731| Block 7 -# 731| r7_0(int) = Constant[7] : -# 731| r7_1(glval) = VariableAddress[#temp731:11] : -# 731| mu7_2(int) = Store : &:r7_1, r7_0 -# 731| r7_3(glval) = VariableAddress[#temp731:11] : -# 731| r7_4(int) = Load : &:r7_3, ~mu0_2 -# 731| r7_5(glval) = VariableAddress[x] : -# 731| mu7_6(int) = Store : &:r7_5, r7_4 -#-----| Goto -> Block 9 +# 731| r7_0(glval) = VariableAddress[#throw731:19] : +# 731| r7_1(glval) = FunctionAddress[String] : +# 731| r7_2(glval) = StringConstant["String object"] : +# 731| r7_3(char *) = Convert : r7_2 +# 731| v7_4(void) = Call : func:r7_1, this:r7_0, 0:r7_3 +# 731| mu7_5(unknown) = ^CallSideEffect : ~mu0_2 +# 731| v7_6(void) = ^IndirectReadSideEffect[0] : &:r7_3, ~mu0_2 +# 731| mu7_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r7_3 +# 731| v7_8(void) = ThrowValue : &:r7_0, ~mu0_2 +#-----| Exception -> Block 9 -# 731| Block 8 -# 731| r8_0(glval) = VariableAddress[#throw731:19] : -# 731| r8_1(glval) = FunctionAddress[String] : -# 731| r8_2(glval) = StringConstant["String object"] : -# 731| r8_3(char *) = Convert : r8_2 -# 731| v8_4(void) = Call : func:r8_1, this:r8_0, 0:r8_3 -# 731| mu8_5(unknown) = ^CallSideEffect : ~mu0_2 -# 731| v8_6(void) = ^IndirectReadSideEffect[0] : &:r8_3, ~mu0_2 -# 731| mu8_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r8_3 -# 731| v8_8(void) = ThrowValue : &:r8_0, ~mu0_2 -#-----| Exception -> Block 10 +# 733| Block 8 +# 733| r8_0(int) = Constant[7] : +# 733| r8_1(glval) = VariableAddress[x] : +# 733| mu8_2(int) = Store : &:r8_1, r8_0 +#-----| Goto -> Block 14 -# 733| Block 9 -# 733| r9_0(int) = Constant[7] : -# 733| r9_1(glval) = VariableAddress[x] : -# 733| mu9_2(int) = Store : &:r9_1, r9_0 -#-----| Goto -> Block 15 +# 735| Block 9 +# 735| v9_0(void) = CatchByType[const char *] : +#-----| Exception -> Block 11 +#-----| Goto -> Block 10 # 735| Block 10 -# 735| v10_0(void) = CatchByType[const char *] : -#-----| Exception -> Block 12 -#-----| Goto -> Block 11 +# 735| r10_0(glval) = VariableAddress[s] : +# 735| mu10_1(char *) = InitializeParameter[s] : &:r10_0 +# 735| r10_2(char *) = Load : &:r10_0, ~mu10_1 +# 735| mu10_3(unknown) = InitializeIndirection[s] : &:r10_2 +# 736| r10_4(glval) = VariableAddress[#throw736:5] : +# 736| r10_5(glval) = FunctionAddress[String] : +# 736| r10_6(glval) = VariableAddress[s] : +# 736| r10_7(char *) = Load : &:r10_6, ~mu0_2 +# 736| v10_8(void) = Call : func:r10_5, this:r10_4, 0:r10_7 +# 736| mu10_9(unknown) = ^CallSideEffect : ~mu0_2 +# 736| v10_10(void) = ^IndirectReadSideEffect[0] : &:r10_7, ~mu0_2 +# 736| mu10_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r10_7 +# 736| v10_12(void) = ThrowValue : &:r10_4, ~mu0_2 +#-----| Exception -> Block 2 -# 735| Block 11 -# 735| r11_0(glval) = VariableAddress[s] : -# 735| mu11_1(char *) = InitializeParameter[s] : &:r11_0 -# 735| r11_2(char *) = Load : &:r11_0, ~mu11_1 -# 735| mu11_3(unknown) = InitializeIndirection[s] : &:r11_2 -# 736| r11_4(glval) = VariableAddress[#throw736:5] : -# 736| r11_5(glval) = FunctionAddress[String] : -# 736| r11_6(glval) = VariableAddress[s] : -# 736| r11_7(char *) = Load : &:r11_6, ~mu0_2 -# 736| v11_8(void) = Call : func:r11_5, this:r11_4, 0:r11_7 -# 736| mu11_9(unknown) = ^CallSideEffect : ~mu0_2 -# 736| v11_10(void) = ^IndirectReadSideEffect[0] : &:r11_7, ~mu0_2 -# 736| mu11_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r11_7 -# 736| v11_12(void) = ThrowValue : &:r11_4, ~mu0_2 -#-----| Exception -> Block 3 +# 738| Block 11 +# 738| v11_0(void) = CatchByType[const String &] : +#-----| Exception -> Block 13 +#-----| Goto -> Block 12 # 738| Block 12 -# 738| v12_0(void) = CatchByType[const String &] : -#-----| Exception -> Block 14 -#-----| Goto -> Block 13 +# 738| r12_0(glval) = VariableAddress[e] : +# 738| mu12_1(String &) = InitializeParameter[e] : &:r12_0 +# 738| r12_2(String &) = Load : &:r12_0, ~mu12_1 +# 738| mu12_3(unknown) = InitializeIndirection[e] : &:r12_2 +# 738| v12_4(void) = NoOp : +#-----| Goto -> Block 14 -# 738| Block 13 -# 738| r13_0(glval) = VariableAddress[e] : -# 738| mu13_1(String &) = InitializeParameter[e] : &:r13_0 -# 738| r13_2(String &) = Load : &:r13_0, ~mu13_1 -# 738| mu13_3(unknown) = InitializeIndirection[e] : &:r13_2 -# 738| v13_4(void) = NoOp : -#-----| Goto -> Block 15 +# 740| Block 13 +# 740| v13_0(void) = CatchAny : +# 741| v13_1(void) = ReThrow : +#-----| Exception -> Block 2 -# 740| Block 14 -# 740| v14_0(void) = CatchAny : -# 741| v14_1(void) = ReThrow : -#-----| Exception -> Block 3 - -# 743| Block 15 -# 743| v15_0(void) = NoOp : +# 743| Block 14 +# 743| v14_0(void) = NoOp : +# 724| v14_1(void) = ReturnVoid : +#-----| Goto -> Block 1 # 745| Base& Base::operator=(Base const&) # 745| Block 0 @@ -3539,16 +3338,10 @@ ir.cpp: #-----| r0_21(Base *) = CopyValue : r0_3 #-----| mu0_22(Base &) = Store : &:r0_20, r0_21 #-----| v0_23(void) = ReturnIndirection : &:r0_6, ~mu0_2 -#-----| Goto -> Block 1 - -# 745| Block 1 -# 745| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 745| v1_1(void) = UnmodeledUse : mu* -# 745| v1_2(void) = ExitFunction : - -# 745| Block 2 -# 745| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 745| r0_24(glval) = VariableAddress[#return] : +# 745| v0_25(void) = ReturnValue : &:r0_24, ~mu0_2 +# 745| v0_26(void) = UnmodeledUse : mu* +# 745| v0_27(void) = ExitFunction : # 745| void Base::Base(Base const&) # 745| Block 0 @@ -3566,11 +3359,9 @@ ir.cpp: # 745| mu0_11(unknown) = ^CallSideEffect : ~mu0_2 # 745| v0_12(void) = NoOp : #-----| v0_13(void) = ReturnIndirection : &:r0_6, ~mu0_2 - -# 745| Block 1 -# 745| v1_0(void) = ReturnVoid : -# 745| v1_1(void) = UnmodeledUse : mu* -# 745| v1_2(void) = ExitFunction : +# 745| v0_14(void) = ReturnVoid : +# 745| v0_15(void) = UnmodeledUse : mu* +# 745| v0_16(void) = ExitFunction : # 748| void Base::Base() # 748| Block 0 @@ -3583,11 +3374,9 @@ ir.cpp: # 748| v0_6(void) = Call : func:r0_5, this:r0_4 # 748| mu0_7(unknown) = ^CallSideEffect : ~mu0_2 # 749| v0_8(void) = NoOp : - -# 748| Block 1 -# 748| v1_0(void) = ReturnVoid : -# 748| v1_1(void) = UnmodeledUse : mu* -# 748| v1_2(void) = ExitFunction : +# 748| v0_9(void) = ReturnVoid : +# 748| v0_10(void) = UnmodeledUse : mu* +# 748| v0_11(void) = ExitFunction : # 750| void Base::~Base() # 750| Block 0 @@ -3600,11 +3389,9 @@ ir.cpp: # 751| r0_6(glval) = FunctionAddress[~String] : # 751| v0_7(void) = Call : func:r0_6, this:r0_5 # 751| mu0_8(unknown) = ^CallSideEffect : ~mu0_2 - -# 750| Block 1 -# 750| v1_0(void) = ReturnVoid : -# 750| v1_1(void) = UnmodeledUse : mu* -# 750| v1_2(void) = ExitFunction : +# 750| v0_9(void) = ReturnVoid : +# 750| v0_10(void) = UnmodeledUse : mu* +# 750| v0_11(void) = ExitFunction : # 754| Middle& Middle::operator=(Middle const&) # 754| Block 0 @@ -3644,16 +3431,10 @@ ir.cpp: #-----| r0_33(Middle *) = CopyValue : r0_3 #-----| mu0_34(Middle &) = Store : &:r0_32, r0_33 #-----| v0_35(void) = ReturnIndirection : &:r0_6, ~mu0_2 -#-----| Goto -> Block 1 - -# 754| Block 1 -# 754| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 754| v1_1(void) = UnmodeledUse : mu* -# 754| v1_2(void) = ExitFunction : - -# 754| Block 2 -# 754| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 754| r0_36(glval) = VariableAddress[#return] : +# 754| v0_37(void) = ReturnValue : &:r0_36, ~mu0_2 +# 754| v0_38(void) = UnmodeledUse : mu* +# 754| v0_39(void) = ExitFunction : # 757| void Middle::Middle() # 757| Block 0 @@ -3670,11 +3451,9 @@ ir.cpp: # 757| v0_10(void) = Call : func:r0_9, this:r0_8 # 757| mu0_11(unknown) = ^CallSideEffect : ~mu0_2 # 758| v0_12(void) = NoOp : - -# 757| Block 1 -# 757| v1_0(void) = ReturnVoid : -# 757| v1_1(void) = UnmodeledUse : mu* -# 757| v1_2(void) = ExitFunction : +# 757| v0_13(void) = ReturnVoid : +# 757| v0_14(void) = UnmodeledUse : mu* +# 757| v0_15(void) = ExitFunction : # 759| void Middle::~Middle() # 759| Block 0 @@ -3691,11 +3470,9 @@ ir.cpp: # 760| r0_10(glval) = FunctionAddress[~Base] : # 760| v0_11(void) = Call : func:r0_10, this:r0_9 # 760| mu0_12(unknown) = ^CallSideEffect : ~mu0_2 - -# 759| Block 1 -# 759| v1_0(void) = ReturnVoid : -# 759| v1_1(void) = UnmodeledUse : mu* -# 759| v1_2(void) = ExitFunction : +# 759| v0_13(void) = ReturnVoid : +# 759| v0_14(void) = UnmodeledUse : mu* +# 759| v0_15(void) = ExitFunction : # 763| Derived& Derived::operator=(Derived const&) # 763| Block 0 @@ -3735,16 +3512,10 @@ ir.cpp: #-----| r0_33(Derived *) = CopyValue : r0_3 #-----| mu0_34(Derived &) = Store : &:r0_32, r0_33 #-----| v0_35(void) = ReturnIndirection : &:r0_6, ~mu0_2 -#-----| Goto -> Block 1 - -# 763| Block 1 -# 763| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 763| v1_1(void) = UnmodeledUse : mu* -# 763| v1_2(void) = ExitFunction : - -# 763| Block 2 -# 763| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 763| r0_36(glval) = VariableAddress[#return] : +# 763| v0_37(void) = ReturnValue : &:r0_36, ~mu0_2 +# 763| v0_38(void) = UnmodeledUse : mu* +# 763| v0_39(void) = ExitFunction : # 766| void Derived::Derived() # 766| Block 0 @@ -3761,11 +3532,9 @@ ir.cpp: # 766| v0_10(void) = Call : func:r0_9, this:r0_8 # 766| mu0_11(unknown) = ^CallSideEffect : ~mu0_2 # 767| v0_12(void) = NoOp : - -# 766| Block 1 -# 766| v1_0(void) = ReturnVoid : -# 766| v1_1(void) = UnmodeledUse : mu* -# 766| v1_2(void) = ExitFunction : +# 766| v0_13(void) = ReturnVoid : +# 766| v0_14(void) = UnmodeledUse : mu* +# 766| v0_15(void) = ExitFunction : # 768| void Derived::~Derived() # 768| Block 0 @@ -3782,11 +3551,9 @@ ir.cpp: # 769| r0_10(glval) = FunctionAddress[~Middle] : # 769| v0_11(void) = Call : func:r0_10, this:r0_9 # 769| mu0_12(unknown) = ^CallSideEffect : ~mu0_2 - -# 768| Block 1 -# 768| v1_0(void) = ReturnVoid : -# 768| v1_1(void) = UnmodeledUse : mu* -# 768| v1_2(void) = ExitFunction : +# 768| v0_13(void) = ReturnVoid : +# 768| v0_14(void) = UnmodeledUse : mu* +# 768| v0_15(void) = ExitFunction : # 775| void MiddleVB1::MiddleVB1() # 775| Block 0 @@ -3803,11 +3570,9 @@ ir.cpp: # 775| v0_10(void) = Call : func:r0_9, this:r0_8 # 775| mu0_11(unknown) = ^CallSideEffect : ~mu0_2 # 776| v0_12(void) = NoOp : - -# 775| Block 1 -# 775| v1_0(void) = ReturnVoid : -# 775| v1_1(void) = UnmodeledUse : mu* -# 775| v1_2(void) = ExitFunction : +# 775| v0_13(void) = ReturnVoid : +# 775| v0_14(void) = UnmodeledUse : mu* +# 775| v0_15(void) = ExitFunction : # 777| void MiddleVB1::~MiddleVB1() # 777| Block 0 @@ -3824,11 +3589,9 @@ ir.cpp: # 778| r0_10(glval) = FunctionAddress[~Base] : # 778| v0_11(void) = Call : func:r0_10, this:r0_9 # 778| mu0_12(unknown) = ^CallSideEffect : ~mu0_2 - -# 777| Block 1 -# 777| v1_0(void) = ReturnVoid : -# 777| v1_1(void) = UnmodeledUse : mu* -# 777| v1_2(void) = ExitFunction : +# 777| v0_13(void) = ReturnVoid : +# 777| v0_14(void) = UnmodeledUse : mu* +# 777| v0_15(void) = ExitFunction : # 784| void MiddleVB2::MiddleVB2() # 784| Block 0 @@ -3845,11 +3608,9 @@ ir.cpp: # 784| v0_10(void) = Call : func:r0_9, this:r0_8 # 784| mu0_11(unknown) = ^CallSideEffect : ~mu0_2 # 785| v0_12(void) = NoOp : - -# 784| Block 1 -# 784| v1_0(void) = ReturnVoid : -# 784| v1_1(void) = UnmodeledUse : mu* -# 784| v1_2(void) = ExitFunction : +# 784| v0_13(void) = ReturnVoid : +# 784| v0_14(void) = UnmodeledUse : mu* +# 784| v0_15(void) = ExitFunction : # 786| void MiddleVB2::~MiddleVB2() # 786| Block 0 @@ -3866,11 +3627,9 @@ ir.cpp: # 787| r0_10(glval) = FunctionAddress[~Base] : # 787| v0_11(void) = Call : func:r0_10, this:r0_9 # 787| mu0_12(unknown) = ^CallSideEffect : ~mu0_2 - -# 786| Block 1 -# 786| v1_0(void) = ReturnVoid : -# 786| v1_1(void) = UnmodeledUse : mu* -# 786| v1_2(void) = ExitFunction : +# 786| v0_13(void) = ReturnVoid : +# 786| v0_14(void) = UnmodeledUse : mu* +# 786| v0_15(void) = ExitFunction : # 793| void DerivedVB::DerivedVB() # 793| Block 0 @@ -3895,11 +3654,9 @@ ir.cpp: # 793| v0_18(void) = Call : func:r0_17, this:r0_16 # 793| mu0_19(unknown) = ^CallSideEffect : ~mu0_2 # 794| v0_20(void) = NoOp : - -# 793| Block 1 -# 793| v1_0(void) = ReturnVoid : -# 793| v1_1(void) = UnmodeledUse : mu* -# 793| v1_2(void) = ExitFunction : +# 793| v0_21(void) = ReturnVoid : +# 793| v0_22(void) = UnmodeledUse : mu* +# 793| v0_23(void) = ExitFunction : # 795| void DerivedVB::~DerivedVB() # 795| Block 0 @@ -3924,11 +3681,9 @@ ir.cpp: # 796| r0_18(glval) = FunctionAddress[~Base] : # 796| v0_19(void) = Call : func:r0_18, this:r0_17 # 796| mu0_20(unknown) = ^CallSideEffect : ~mu0_2 - -# 795| Block 1 -# 795| v1_0(void) = ReturnVoid : -# 795| v1_1(void) = UnmodeledUse : mu* -# 795| v1_2(void) = ExitFunction : +# 795| v0_21(void) = ReturnVoid : +# 795| v0_22(void) = UnmodeledUse : mu* +# 795| v0_23(void) = ExitFunction : # 799| void HierarchyConversions() # 799| Block 0 @@ -4181,11 +3936,9 @@ ir.cpp: # 839| r0_246(glval) = VariableAddress[pb] : # 839| mu0_247(Base *) = Store : &:r0_246, r0_245 # 840| v0_248(void) = NoOp : - -# 799| Block 1 -# 799| v1_0(void) = ReturnVoid : -# 799| v1_1(void) = UnmodeledUse : mu* -# 799| v1_2(void) = ExitFunction : +# 799| v0_249(void) = ReturnVoid : +# 799| v0_250(void) = UnmodeledUse : mu* +# 799| v0_251(void) = ExitFunction : # 842| void PolymorphicBase::PolymorphicBase() # 842| Block 0 @@ -4194,11 +3947,9 @@ ir.cpp: # 842| mu0_2(unknown) = UnmodeledDefinition : # 842| r0_3(glval) = InitializeThis : # 842| v0_4(void) = NoOp : - -# 842| Block 1 -# 842| v1_0(void) = ReturnVoid : -# 842| v1_1(void) = UnmodeledUse : mu* -# 842| v1_2(void) = ExitFunction : +# 842| v0_5(void) = ReturnVoid : +# 842| v0_6(void) = UnmodeledUse : mu* +# 842| v0_7(void) = ExitFunction : # 846| void PolymorphicDerived::PolymorphicDerived() # 846| Block 0 @@ -4211,11 +3962,9 @@ ir.cpp: # 846| v0_6(void) = Call : func:r0_5, this:r0_4 # 846| mu0_7(unknown) = ^CallSideEffect : ~mu0_2 # 846| v0_8(void) = NoOp : - -# 846| Block 1 -# 846| v1_0(void) = ReturnVoid : -# 846| v1_1(void) = UnmodeledUse : mu* -# 846| v1_2(void) = ExitFunction : +# 846| v0_9(void) = ReturnVoid : +# 846| v0_10(void) = UnmodeledUse : mu* +# 846| v0_11(void) = ExitFunction : # 846| void PolymorphicDerived::~PolymorphicDerived() # 846| Block 0 @@ -4228,11 +3977,9 @@ ir.cpp: # 846| r0_6(glval) = FunctionAddress[~PolymorphicBase] : # 846| v0_7(void) = Call : func:r0_6, this:r0_5 # 846| mu0_8(unknown) = ^CallSideEffect : ~mu0_2 - -# 846| Block 1 -# 846| v1_0(void) = ReturnVoid : -# 846| v1_1(void) = UnmodeledUse : mu* -# 846| v1_2(void) = ExitFunction : +# 846| v0_9(void) = ReturnVoid : +# 846| v0_10(void) = UnmodeledUse : mu* +# 846| v0_11(void) = ExitFunction : # 849| void DynamicCast() # 849| Block 0 @@ -4282,11 +4029,9 @@ ir.cpp: # 864| r0_43(void *) = DynamicCastToVoid : r0_42 # 864| mu0_44(void *) = Store : &:r0_40, r0_43 # 865| v0_45(void) = NoOp : - -# 849| Block 1 -# 849| v1_0(void) = ReturnVoid : -# 849| v1_1(void) = UnmodeledUse : mu* -# 849| v1_2(void) = ExitFunction : +# 849| v0_46(void) = ReturnVoid : +# 849| v0_47(void) = UnmodeledUse : mu* +# 849| v0_48(void) = ExitFunction : # 867| void String::String() # 867| Block 0 @@ -4302,11 +4047,9 @@ ir.cpp: # 868| v0_9(void) = ^IndirectReadSideEffect[0] : &:r0_6, ~mu0_2 # 868| mu0_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_6 # 869| v0_11(void) = NoOp : - -# 867| Block 1 -# 867| v1_0(void) = ReturnVoid : -# 867| v1_1(void) = UnmodeledUse : mu* -# 867| v1_2(void) = ExitFunction : +# 867| v0_12(void) = ReturnVoid : +# 867| v0_13(void) = UnmodeledUse : mu* +# 867| v0_14(void) = ExitFunction : # 871| void ArrayConversions() # 871| Block 0 @@ -4351,11 +4094,9 @@ ir.cpp: # 880| r0_38(glval) = VariableAddress[pa] : # 880| mu0_39(char(*)[5]) = Store : &:r0_38, r0_37 # 881| v0_40(void) = NoOp : - -# 871| Block 1 -# 871| v1_0(void) = ReturnVoid : -# 871| v1_1(void) = UnmodeledUse : mu* -# 871| v1_2(void) = ExitFunction : +# 871| v0_41(void) = ReturnVoid : +# 871| v0_42(void) = UnmodeledUse : mu* +# 871| v0_43(void) = ExitFunction : # 883| void FuncPtrConversions(int(*)(int), void*) # 883| Block 0 @@ -4380,11 +4121,9 @@ ir.cpp: # 885| mu0_18(..(*)(..)) = Store : &:r0_17, r0_16 # 886| v0_19(void) = NoOp : # 883| v0_20(void) = ReturnIndirection : &:r0_7, ~mu0_2 - -# 883| Block 1 -# 883| v1_0(void) = ReturnVoid : -# 883| v1_1(void) = UnmodeledUse : mu* -# 883| v1_2(void) = ExitFunction : +# 883| v0_21(void) = ReturnVoid : +# 883| v0_22(void) = UnmodeledUse : mu* +# 883| v0_23(void) = ExitFunction : # 888| void VarArgUsage(int) # 888| Block 0 @@ -4426,11 +4165,9 @@ ir.cpp: # 897| r0_35(__va_list_tag *) = Convert : r0_34 # 897| v0_36(void) = VarArgsEnd : 0:r0_35 # 898| v0_37(void) = NoOp : - -# 888| Block 1 -# 888| v1_0(void) = ReturnVoid : -# 888| v1_1(void) = UnmodeledUse : mu* -# 888| v1_2(void) = ExitFunction : +# 888| v0_38(void) = ReturnVoid : +# 888| v0_39(void) = UnmodeledUse : mu* +# 888| v0_40(void) = ExitFunction : # 900| void CastToVoid(int) # 900| Block 0 @@ -4442,11 +4179,9 @@ ir.cpp: # 901| r0_5(glval) = VariableAddress[x] : # 901| v0_6(void) = Convert : r0_5 # 902| v0_7(void) = NoOp : - -# 900| Block 1 -# 900| v1_0(void) = ReturnVoid : -# 900| v1_1(void) = UnmodeledUse : mu* -# 900| v1_2(void) = ExitFunction : +# 900| v0_8(void) = ReturnVoid : +# 900| v0_9(void) = UnmodeledUse : mu* +# 900| v0_10(void) = ExitFunction : # 904| void ConstantConditions(int) # 904| Block 0 @@ -4461,33 +4196,31 @@ ir.cpp: # 906| r0_8(glval) = VariableAddress[b] : # 906| r0_9(bool) = Constant[1] : # 906| v0_10(void) = ConditionalBranch : r0_9 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| False -> Block 3 +#-----| True -> Block 2 -# 904| Block 1 -# 904| v1_0(void) = ReturnVoid : -# 904| v1_1(void) = UnmodeledUse : mu* -# 904| v1_2(void) = ExitFunction : +# 906| Block 1 +# 906| r1_0(glval) = VariableAddress[#temp906:11] : +# 906| r1_1(int) = Load : &:r1_0, ~mu0_2 +# 906| mu1_2(int) = Store : &:r0_8, r1_1 +# 907| v1_3(void) = NoOp : +# 904| v1_4(void) = ReturnVoid : +# 904| v1_5(void) = UnmodeledUse : mu* +# 904| v1_6(void) = ExitFunction : # 906| Block 2 -# 906| r2_0(glval) = VariableAddress[#temp906:11] : +# 906| r2_0(glval) = VariableAddress[x] : # 906| r2_1(int) = Load : &:r2_0, ~mu0_2 -# 906| mu2_2(int) = Store : &:r0_8, r2_1 -# 907| v2_3(void) = NoOp : +# 906| r2_2(glval) = VariableAddress[#temp906:11] : +# 906| mu2_3(int) = Store : &:r2_2, r2_1 +#-----| Goto -> Block 1 # 906| Block 3 # 906| r3_0(glval) = VariableAddress[x] : # 906| r3_1(int) = Load : &:r3_0, ~mu0_2 # 906| r3_2(glval) = VariableAddress[#temp906:11] : # 906| mu3_3(int) = Store : &:r3_2, r3_1 -#-----| Goto -> Block 2 - -# 906| Block 4 -# 906| r4_0(glval) = VariableAddress[x] : -# 906| r4_1(int) = Load : &:r4_0, ~mu0_2 -# 906| r4_2(glval) = VariableAddress[#temp906:11] : -# 906| mu4_3(int) = Store : &:r4_2, r4_1 -#-----| Goto -> Block 2 +#-----| Goto -> Block 1 # 940| void OperatorNew() # 940| Block 0 @@ -4549,11 +4282,9 @@ ir.cpp: # 947| r0_55(Overaligned) = Constant[0] : # 947| mu0_56(Overaligned) = Store : &:r0_54, r0_55 # 948| v0_57(void) = NoOp : - -# 940| Block 1 -# 940| v1_0(void) = ReturnVoid : -# 940| v1_1(void) = UnmodeledUse : mu* -# 940| v1_2(void) = ExitFunction : +# 940| v0_58(void) = ReturnVoid : +# 940| v0_59(void) = UnmodeledUse : mu* +# 940| v0_60(void) = ExitFunction : # 950| void OperatorNewArray(int) # 950| Block 0 @@ -4631,11 +4362,9 @@ ir.cpp: # 958| mu0_71(unknown) = ^CallSideEffect : ~mu0_2 # 958| r0_72(int *) = Convert : r0_70 # 959| v0_73(void) = NoOp : - -# 950| Block 1 -# 950| v1_0(void) = ReturnVoid : -# 950| v1_1(void) = UnmodeledUse : mu* -# 950| v1_2(void) = ExitFunction : +# 950| v0_74(void) = ReturnVoid : +# 950| v0_75(void) = UnmodeledUse : mu* +# 950| v0_76(void) = ExitFunction : # 961| int designatedInit() # 961| Block 0 @@ -4671,16 +4400,10 @@ ir.cpp: # 963| r0_29(glval) = PointerAdd[4] : r0_27, r0_28 # 963| r0_30(int) = Load : &:r0_29, ~mu0_2 # 963| mu0_31(int) = Store : &:r0_25, r0_30 -#-----| Goto -> Block 1 - -# 961| Block 1 -# 961| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 961| v1_1(void) = UnmodeledUse : mu* -# 961| v1_2(void) = ExitFunction : - -# 961| Block 2 -# 961| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 961| r0_32(glval) = VariableAddress[#return] : +# 961| v0_33(void) = ReturnValue : &:r0_32, ~mu0_2 +# 961| v0_34(void) = UnmodeledUse : mu* +# 961| v0_35(void) = ExitFunction : # 966| void IfStmtWithDeclaration(int, int) # 966| Block 0 @@ -4701,63 +4424,61 @@ ir.cpp: # 967| r0_14(glval) = VariableAddress[b] : # 967| r0_15(bool) = Load : &:r0_14, ~mu0_2 # 967| v0_16(void) = ConditionalBranch : r0_15 -#-----| False -> Block 3 -#-----| True -> Block 2 +#-----| False -> Block 2 +#-----| True -> Block 1 -# 966| Block 1 -# 966| v1_0(void) = ReturnVoid : -# 966| v1_1(void) = UnmodeledUse : mu* -# 966| v1_2(void) = ExitFunction : +# 968| Block 1 +# 968| r1_0(int) = Constant[5] : +# 968| r1_1(glval) = VariableAddress[x] : +# 968| mu1_2(int) = Store : &:r1_1, r1_0 +#-----| Goto -> Block 6 -# 968| Block 2 -# 968| r2_0(int) = Constant[5] : -# 968| r2_1(glval) = VariableAddress[x] : -# 968| mu2_2(int) = Store : &:r2_1, r2_0 -#-----| Goto -> Block 7 +# 970| Block 2 +# 970| r2_0(glval) = VariableAddress[z] : +# 970| r2_1(glval) = VariableAddress[x] : +# 970| r2_2(int) = Load : &:r2_1, ~mu0_2 +# 970| r2_3(glval) = VariableAddress[y] : +# 970| r2_4(int) = Load : &:r2_3, ~mu0_2 +# 970| r2_5(int) = Add : r2_2, r2_4 +# 970| mu2_6(int) = Store : &:r2_0, r2_5 +# 970| r2_7(glval) = VariableAddress[z] : +# 970| r2_8(int) = Load : &:r2_7, ~mu0_2 +# 970| r2_9(int) = Constant[0] : +# 970| r2_10(bool) = CompareNE : r2_8, r2_9 +# 970| v2_11(void) = ConditionalBranch : r2_10 +#-----| False -> Block 4 +#-----| True -> Block 3 -# 970| Block 3 -# 970| r3_0(glval) = VariableAddress[z] : -# 970| r3_1(glval) = VariableAddress[x] : -# 970| r3_2(int) = Load : &:r3_1, ~mu0_2 -# 970| r3_3(glval) = VariableAddress[y] : -# 970| r3_4(int) = Load : &:r3_3, ~mu0_2 -# 970| r3_5(int) = Add : r3_2, r3_4 -# 970| mu3_6(int) = Store : &:r3_0, r3_5 -# 970| r3_7(glval) = VariableAddress[z] : -# 970| r3_8(int) = Load : &:r3_7, ~mu0_2 -# 970| r3_9(int) = Constant[0] : -# 970| r3_10(bool) = CompareNE : r3_8, r3_9 -# 970| v3_11(void) = ConditionalBranch : r3_10 -#-----| False -> Block 5 -#-----| True -> Block 4 +# 971| Block 3 +# 971| r3_0(int) = Constant[7] : +# 971| r3_1(glval) = VariableAddress[y] : +# 971| mu3_2(int) = Store : &:r3_1, r3_0 +#-----| Goto -> Block 6 -# 971| Block 4 -# 971| r4_0(int) = Constant[7] : -# 971| r4_1(glval) = VariableAddress[y] : -# 971| mu4_2(int) = Store : &:r4_1, r4_0 -#-----| Goto -> Block 7 +# 973| Block 4 +# 973| r4_0(glval) = VariableAddress[p] : +# 973| r4_1(glval) = VariableAddress[x] : +# 973| mu4_2(int *) = Store : &:r4_0, r4_1 +# 973| r4_3(glval) = VariableAddress[p] : +# 973| r4_4(int *) = Load : &:r4_3, ~mu0_2 +# 973| r4_5(int *) = Constant[0] : +# 973| r4_6(bool) = CompareNE : r4_4, r4_5 +# 973| v4_7(void) = ConditionalBranch : r4_6 +#-----| False -> Block 6 +#-----| True -> Block 5 -# 973| Block 5 -# 973| r5_0(glval) = VariableAddress[p] : -# 973| r5_1(glval) = VariableAddress[x] : -# 973| mu5_2(int *) = Store : &:r5_0, r5_1 -# 973| r5_3(glval) = VariableAddress[p] : -# 973| r5_4(int *) = Load : &:r5_3, ~mu0_2 -# 973| r5_5(int *) = Constant[0] : -# 973| r5_6(bool) = CompareNE : r5_4, r5_5 -# 973| v5_7(void) = ConditionalBranch : r5_6 -#-----| False -> Block 7 -#-----| True -> Block 6 +# 974| Block 5 +# 974| r5_0(int) = Constant[2] : +# 974| r5_1(glval) = VariableAddress[p] : +# 974| r5_2(int *) = Load : &:r5_1, ~mu0_2 +# 974| mu5_3(int) = Store : &:r5_2, r5_0 +#-----| Goto -> Block 6 -# 974| Block 6 -# 974| r6_0(int) = Constant[2] : -# 974| r6_1(glval) = VariableAddress[p] : -# 974| r6_2(int *) = Load : &:r6_1, ~mu0_2 -# 974| mu6_3(int) = Store : &:r6_2, r6_0 -#-----| Goto -> Block 7 - -# 976| Block 7 -# 976| v7_0(void) = NoOp : +# 976| Block 6 +# 976| v6_0(void) = NoOp : +# 966| v6_1(void) = ReturnVoid : +# 966| v6_2(void) = UnmodeledUse : mu* +# 966| v6_3(void) = ExitFunction : # 978| void WhileStmtWithDeclaration(int, int) # 978| Block 0 @@ -4768,69 +4489,67 @@ ir.cpp: # 978| mu0_4(int) = InitializeParameter[x] : &:r0_3 # 978| r0_5(glval) = VariableAddress[y] : # 978| mu0_6(int) = InitializeParameter[y] : &:r0_5 -#-----| Goto -> Block 8 +#-----| Goto -> Block 7 -# 978| Block 1 -# 978| v1_0(void) = ReturnVoid : -# 978| v1_1(void) = UnmodeledUse : mu* -# 978| v1_2(void) = ExitFunction : +# 979| Block 1 +# 979| v1_0(void) = NoOp : +#-----| Goto (back edge) -> Block 7 -# 979| Block 2 -# 979| v2_0(void) = NoOp : -#-----| Goto (back edge) -> Block 8 +# 981| Block 2 +# 981| r2_0(glval) = VariableAddress[z] : +# 981| r2_1(glval) = VariableAddress[x] : +# 981| r2_2(int) = Load : &:r2_1, ~mu0_2 +# 981| r2_3(glval) = VariableAddress[y] : +# 981| r2_4(int) = Load : &:r2_3, ~mu0_2 +# 981| r2_5(int) = Add : r2_2, r2_4 +# 981| mu2_6(int) = Store : &:r2_0, r2_5 +# 981| r2_7(glval) = VariableAddress[z] : +# 981| r2_8(int) = Load : &:r2_7, ~mu0_2 +# 981| r2_9(int) = Constant[0] : +# 981| r2_10(bool) = CompareNE : r2_8, r2_9 +# 981| v2_11(void) = ConditionalBranch : r2_10 +#-----| False -> Block 4 +#-----| True -> Block 3 # 981| Block 3 -# 981| r3_0(glval) = VariableAddress[z] : -# 981| r3_1(glval) = VariableAddress[x] : -# 981| r3_2(int) = Load : &:r3_1, ~mu0_2 -# 981| r3_3(glval) = VariableAddress[y] : -# 981| r3_4(int) = Load : &:r3_3, ~mu0_2 -# 981| r3_5(int) = Add : r3_2, r3_4 -# 981| mu3_6(int) = Store : &:r3_0, r3_5 -# 981| r3_7(glval) = VariableAddress[z] : -# 981| r3_8(int) = Load : &:r3_7, ~mu0_2 -# 981| r3_9(int) = Constant[0] : -# 981| r3_10(bool) = CompareNE : r3_8, r3_9 -# 981| v3_11(void) = ConditionalBranch : r3_10 -#-----| False -> Block 5 -#-----| True -> Block 4 +# 981| v3_0(void) = NoOp : +#-----| Goto (back edge) -> Block 2 -# 981| Block 4 -# 981| v4_0(void) = NoOp : -#-----| Goto (back edge) -> Block 3 +# 983| Block 4 +# 983| r4_0(glval) = VariableAddress[p] : +# 983| r4_1(glval) = VariableAddress[x] : +# 983| mu4_2(int *) = Store : &:r4_0, r4_1 +# 983| r4_3(glval) = VariableAddress[p] : +# 983| r4_4(int *) = Load : &:r4_3, ~mu0_2 +# 983| r4_5(int *) = Constant[0] : +# 983| r4_6(bool) = CompareNE : r4_4, r4_5 +# 983| v4_7(void) = ConditionalBranch : r4_6 +#-----| False -> Block 6 +#-----| True -> Block 5 # 983| Block 5 -# 983| r5_0(glval) = VariableAddress[p] : -# 983| r5_1(glval) = VariableAddress[x] : -# 983| mu5_2(int *) = Store : &:r5_0, r5_1 -# 983| r5_3(glval) = VariableAddress[p] : -# 983| r5_4(int *) = Load : &:r5_3, ~mu0_2 -# 983| r5_5(int *) = Constant[0] : -# 983| r5_6(bool) = CompareNE : r5_4, r5_5 -# 983| v5_7(void) = ConditionalBranch : r5_6 -#-----| False -> Block 7 -#-----| True -> Block 6 +# 983| v5_0(void) = NoOp : +#-----| Goto (back edge) -> Block 4 -# 983| Block 6 -# 983| v6_0(void) = NoOp : -#-----| Goto (back edge) -> Block 5 +# 985| Block 6 +# 985| v6_0(void) = NoOp : +# 978| v6_1(void) = ReturnVoid : +# 978| v6_2(void) = UnmodeledUse : mu* +# 978| v6_3(void) = ExitFunction : -# 985| Block 7 -# 985| v7_0(void) = NoOp : - -# 979| Block 8 -# 979| r8_0(glval) = VariableAddress[b] : -# 979| r8_1(glval) = VariableAddress[x] : -# 979| r8_2(int) = Load : &:r8_1, ~mu0_2 -# 979| r8_3(glval) = VariableAddress[y] : -# 979| r8_4(int) = Load : &:r8_3, ~mu0_2 -# 979| r8_5(bool) = CompareLT : r8_2, r8_4 -# 979| mu8_6(bool) = Store : &:r8_0, r8_5 -# 979| r8_7(glval) = VariableAddress[b] : -# 979| r8_8(bool) = Load : &:r8_7, ~mu0_2 -# 979| v8_9(void) = ConditionalBranch : r8_8 -#-----| False -> Block 3 -#-----| True -> Block 2 +# 979| Block 7 +# 979| r7_0(glval) = VariableAddress[b] : +# 979| r7_1(glval) = VariableAddress[x] : +# 979| r7_2(int) = Load : &:r7_1, ~mu0_2 +# 979| r7_3(glval) = VariableAddress[y] : +# 979| r7_4(int) = Load : &:r7_3, ~mu0_2 +# 979| r7_5(bool) = CompareLT : r7_2, r7_4 +# 979| mu7_6(bool) = Store : &:r7_0, r7_5 +# 979| r7_7(glval) = VariableAddress[b] : +# 979| r7_8(bool) = Load : &:r7_7, ~mu0_2 +# 979| v7_9(void) = ConditionalBranch : r7_8 +#-----| False -> Block 2 +#-----| True -> Block 1 # 987| int PointerDecay(int[], int(float)) # 987| Block 0 @@ -4857,16 +4576,10 @@ ir.cpp: # 988| r0_20(int) = Add : r0_14, r0_18 # 988| mu0_21(int) = Store : &:r0_9, r0_20 # 987| v0_22(void) = ReturnIndirection : &:r0_5, ~mu0_2 -#-----| Goto -> Block 1 - -# 987| Block 1 -# 987| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 987| v1_1(void) = UnmodeledUse : mu* -# 987| v1_2(void) = ExitFunction : - -# 987| Block 2 -# 987| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 987| r0_23(glval) = VariableAddress[#return] : +# 987| v0_24(void) = ReturnValue : &:r0_23, ~mu0_2 +# 987| v0_25(void) = UnmodeledUse : mu* +# 987| v0_26(void) = ExitFunction : # 991| int ExprStmt(int, int, int) # 991| Block 0 @@ -4887,43 +4600,37 @@ ir.cpp: # 994| r0_14(int) = Constant[0] : # 994| r0_15(bool) = CompareNE : r0_13, r0_14 # 994| v0_16(void) = ConditionalBranch : r0_15 -#-----| False -> Block 4 -#-----| True -> Block 3 +#-----| False -> Block 2 +#-----| True -> Block 1 -# 991| Block 1 -# 991| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 991| v1_1(void) = UnmodeledUse : mu* -# 991| v1_2(void) = ExitFunction : +# 995| Block 1 +# 995| r1_0(glval) = VariableAddress[y] : +# 995| r1_1(int) = Load : &:r1_0, ~mu0_2 +# 995| r1_2(glval) = VariableAddress[w] : +# 995| mu1_3(int) = Store : &:r1_2, r1_1 +#-----| Goto -> Block 3 -# 991| Block 2 -# 991| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 997| Block 2 +# 997| r2_0(glval) = VariableAddress[z] : +# 997| r2_1(int) = Load : &:r2_0, ~mu0_2 +# 997| r2_2(glval) = VariableAddress[w] : +# 997| mu2_3(int) = Store : &:r2_2, r2_1 +#-----| Goto -> Block 3 -# 995| Block 3 -# 995| r3_0(glval) = VariableAddress[y] : -# 995| r3_1(int) = Load : &:r3_0, ~mu0_2 -# 995| r3_2(glval) = VariableAddress[w] : -# 995| mu3_3(int) = Store : &:r3_2, r3_1 -#-----| Goto -> Block 5 - -# 997| Block 4 -# 997| r4_0(glval) = VariableAddress[z] : -# 997| r4_1(int) = Load : &:r4_0, ~mu0_2 -# 997| r4_2(glval) = VariableAddress[w] : -# 997| mu4_3(int) = Store : &:r4_2, r4_1 -#-----| Goto -> Block 5 - -# 999| Block 5 -# 999| r5_0(glval) = VariableAddress[w] : -# 999| r5_1(int) = Load : &:r5_0, ~mu0_2 -# 992| r5_2(int) = CopyValue : r5_1 -# 992| mu5_3(int) = Store : &:r0_9, r5_2 -# 1002| r5_4(glval) = VariableAddress[#return] : -# 1002| r5_5(glval) = VariableAddress[x] : -# 1002| r5_6(int) = Load : &:r5_5, ~mu0_2 -# 1002| r5_7(int) = CopyValue : r5_6 -# 1002| mu5_8(int) = Store : &:r5_4, r5_7 -#-----| Goto -> Block 1 +# 999| Block 3 +# 999| r3_0(glval) = VariableAddress[w] : +# 999| r3_1(int) = Load : &:r3_0, ~mu0_2 +# 992| r3_2(int) = CopyValue : r3_1 +# 992| mu3_3(int) = Store : &:r0_9, r3_2 +# 1002| r3_4(glval) = VariableAddress[#return] : +# 1002| r3_5(glval) = VariableAddress[x] : +# 1002| r3_6(int) = Load : &:r3_5, ~mu0_2 +# 1002| r3_7(int) = CopyValue : r3_6 +# 1002| mu3_8(int) = Store : &:r3_4, r3_7 +# 991| r3_9(glval) = VariableAddress[#return] : +# 991| v3_10(void) = ReturnValue : &:r3_9, ~mu0_2 +# 991| v3_11(void) = UnmodeledUse : mu* +# 991| v3_12(void) = ExitFunction : # 1006| void OperatorDelete() # 1006| Block 0 @@ -4941,11 +4648,9 @@ ir.cpp: # 1011| r0_11(PolymorphicBase *) = Constant[0] : # 1011| v0_12(void) = NoOp : # 1012| v0_13(void) = NoOp : - -# 1006| Block 1 -# 1006| v1_0(void) = ReturnVoid : -# 1006| v1_1(void) = UnmodeledUse : mu* -# 1006| v1_2(void) = ExitFunction : +# 1006| v0_14(void) = ReturnVoid : +# 1006| v0_15(void) = UnmodeledUse : mu* +# 1006| v0_16(void) = ExitFunction : # 1015| void OperatorDeleteArray() # 1015| Block 0 @@ -4963,11 +4668,9 @@ ir.cpp: # 1020| r0_11(PolymorphicBase *) = Constant[0] : # 1020| v0_12(void) = NoOp : # 1021| v0_13(void) = NoOp : - -# 1015| Block 1 -# 1015| v1_0(void) = ReturnVoid : -# 1015| v1_1(void) = UnmodeledUse : mu* -# 1015| v1_2(void) = ExitFunction : +# 1015| v0_14(void) = ReturnVoid : +# 1015| v0_15(void) = UnmodeledUse : mu* +# 1015| v0_16(void) = ExitFunction : # 1025| void EmptyStructInit() # 1025| Block 0 @@ -4977,11 +4680,9 @@ ir.cpp: # 1026| r0_3(glval) = VariableAddress[s] : # 1026| mu0_4(EmptyStruct) = Uninitialized[s] : &:r0_3 # 1027| v0_5(void) = NoOp : - -# 1025| Block 1 -# 1025| v1_0(void) = ReturnVoid : -# 1025| v1_1(void) = UnmodeledUse : mu* -# 1025| v1_2(void) = ExitFunction : +# 1025| v0_6(void) = ReturnVoid : +# 1025| v0_7(void) = UnmodeledUse : mu* +# 1025| v0_8(void) = ExitFunction : # 1029| void (lambda [] type at line 1029, col. 12)::(constructor)((lambda [] type at line 1029, col. 12)&&) # 1029| Block 0 @@ -4995,11 +4696,9 @@ ir.cpp: #-----| mu0_7(unknown) = InitializeIndirection[p#0] : &:r0_6 # 1029| v0_8(void) = NoOp : #-----| v0_9(void) = ReturnIndirection : &:r0_6, ~mu0_2 - -# 1029| Block 1 -# 1029| v1_0(void) = ReturnVoid : -# 1029| v1_1(void) = UnmodeledUse : mu* -# 1029| v1_2(void) = ExitFunction : +# 1029| v0_10(void) = ReturnVoid : +# 1029| v0_11(void) = UnmodeledUse : mu* +# 1029| v0_12(void) = ExitFunction : # 1029| void (lambda [] type at line 1029, col. 12)::operator()() const # 1029| Block 0 @@ -5008,11 +4707,9 @@ ir.cpp: # 1029| mu0_2(unknown) = UnmodeledDefinition : # 1029| r0_3(glval) = InitializeThis : # 1029| v0_4(void) = NoOp : - -# 1029| Block 1 -# 1029| v1_0(void) = ReturnVoid : -# 1029| v1_1(void) = UnmodeledUse : mu* -# 1029| v1_2(void) = ExitFunction : +# 1029| v0_5(void) = ReturnVoid : +# 1029| v0_6(void) = UnmodeledUse : mu* +# 1029| v0_7(void) = ExitFunction : # 1029| void(* (lambda [] type at line 1029, col. 12)::operator void (*)()() const)() # 1029| Block 0 @@ -5023,16 +4720,10 @@ ir.cpp: # 1029| r0_4(glval<..(*)(..)>) = VariableAddress[#return] : # 1029| r0_5(..(*)(..)) = FunctionAddress[_FUN] : # 1029| mu0_6(..(*)(..)) = Store : &:r0_4, r0_5 -#-----| Goto -> Block 1 - -# 1029| Block 1 -# 1029| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 1029| v1_1(void) = UnmodeledUse : mu* -# 1029| v1_2(void) = ExitFunction : - -# 1029| Block 2 -# 1029| r2_0(glval<..(*)(..)>) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 1029| r0_7(glval<..(*)(..)>) = VariableAddress[#return] : +# 1029| v0_8(void) = ReturnValue : &:r0_7, ~mu0_2 +# 1029| v0_9(void) = UnmodeledUse : mu* +# 1029| v0_10(void) = ExitFunction : # 1031| void Lambda(int, String const&) # 1031| Block 0 @@ -5193,11 +4884,9 @@ ir.cpp: # 1046| mu0_154(decltype([...](...){...})) = ^IndirectMayWriteSideEffect[-1] : &:r0_148 # 1047| v0_155(void) = NoOp : # 1031| v0_156(void) = ReturnIndirection : &:r0_7, ~mu0_2 - -# 1031| Block 1 -# 1031| v1_0(void) = ReturnVoid : -# 1031| v1_1(void) = UnmodeledUse : mu* -# 1031| v1_2(void) = ExitFunction : +# 1031| v0_157(void) = ReturnVoid : +# 1031| v0_158(void) = UnmodeledUse : mu* +# 1031| v0_159(void) = ExitFunction : # 1032| void (void Lambda(int, String const&))::(lambda [] type at line 1032, col. 23)::(constructor)((void Lambda(int, String const&))::(lambda [] type at line 1032, col. 23)&&) # 1032| Block 0 @@ -5211,11 +4900,9 @@ ir.cpp: #-----| mu0_7(unknown) = InitializeIndirection[p#0] : &:r0_6 # 1032| v0_8(void) = NoOp : #-----| v0_9(void) = ReturnIndirection : &:r0_6, ~mu0_2 - -# 1032| Block 1 -# 1032| v1_0(void) = ReturnVoid : -# 1032| v1_1(void) = UnmodeledUse : mu* -# 1032| v1_2(void) = ExitFunction : +# 1032| v0_10(void) = ReturnVoid : +# 1032| v0_11(void) = UnmodeledUse : mu* +# 1032| v0_12(void) = ExitFunction : # 1032| char (void Lambda(int, String const&))::(lambda [] type at line 1032, col. 23)::operator()(float) const # 1032| Block 0 @@ -5228,16 +4915,10 @@ ir.cpp: # 1032| r0_6(glval) = VariableAddress[#return] : # 1032| r0_7(char) = Constant[65] : # 1032| mu0_8(char) = Store : &:r0_6, r0_7 -#-----| Goto -> Block 1 - -# 1032| Block 1 -# 1032| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 1032| v1_1(void) = UnmodeledUse : mu* -# 1032| v1_2(void) = ExitFunction : - -# 1032| Block 2 -# 1032| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 1032| r0_9(glval) = VariableAddress[#return] : +# 1032| v0_10(void) = ReturnValue : &:r0_9, ~mu0_2 +# 1032| v0_11(void) = UnmodeledUse : mu* +# 1032| v0_12(void) = ExitFunction : # 1032| char(* (void Lambda(int, String const&))::(lambda [] type at line 1032, col. 23)::operator char (*)(float)() const)(float) # 1032| Block 0 @@ -5248,16 +4929,10 @@ ir.cpp: # 1032| r0_4(glval<..(*)(..)>) = VariableAddress[#return] : # 1032| r0_5(..(*)(..)) = FunctionAddress[_FUN] : # 1032| mu0_6(..(*)(..)) = Store : &:r0_4, r0_5 -#-----| Goto -> Block 1 - -# 1032| Block 1 -# 1032| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 1032| v1_1(void) = UnmodeledUse : mu* -# 1032| v1_2(void) = ExitFunction : - -# 1032| Block 2 -# 1032| r2_0(glval<..(*)(..)>) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 1032| r0_7(glval<..(*)(..)>) = VariableAddress[#return] : +# 1032| v0_8(void) = ReturnValue : &:r0_7, ~mu0_2 +# 1032| v0_9(void) = UnmodeledUse : mu* +# 1032| v0_10(void) = ExitFunction : # 1034| char (void Lambda(int, String const&))::(lambda [] type at line 1034, col. 21)::operator()(float) const # 1034| Block 0 @@ -5283,16 +4958,10 @@ ir.cpp: # 1034| r0_19(glval) = PointerAdd[1] : r0_11, r0_18 # 1034| r0_20(char) = Load : &:r0_19, ~mu0_2 # 1034| mu0_21(char) = Store : &:r0_6, r0_20 -#-----| Goto -> Block 1 - -# 1034| Block 1 -# 1034| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 1034| v1_1(void) = UnmodeledUse : mu* -# 1034| v1_2(void) = ExitFunction : - -# 1034| Block 2 -# 1034| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 1034| r0_22(glval) = VariableAddress[#return] : +# 1034| v0_23(void) = ReturnValue : &:r0_22, ~mu0_2 +# 1034| v0_24(void) = UnmodeledUse : mu* +# 1034| v0_25(void) = ExitFunction : # 1036| void (void Lambda(int, String const&))::(lambda [] type at line 1036, col. 21)::~() # 1036| Block 0 @@ -5305,11 +4974,9 @@ ir.cpp: # 1036| r0_6(glval) = FunctionAddress[~String] : # 1036| v0_7(void) = Call : func:r0_6, this:r0_5 # 1036| mu0_8(unknown) = ^CallSideEffect : ~mu0_2 - -# 1036| Block 1 -# 1036| v1_0(void) = ReturnVoid : -# 1036| v1_1(void) = UnmodeledUse : mu* -# 1036| v1_2(void) = ExitFunction : +# 1036| v0_9(void) = ReturnVoid : +# 1036| v0_10(void) = UnmodeledUse : mu* +# 1036| v0_11(void) = ExitFunction : # 1036| char (void Lambda(int, String const&))::(lambda [] type at line 1036, col. 21)::operator()(float) const # 1036| Block 0 @@ -5333,16 +5000,10 @@ ir.cpp: # 1036| r0_17(glval) = PointerAdd[1] : r0_10, r0_16 # 1036| r0_18(char) = Load : &:r0_17, ~mu0_2 # 1036| mu0_19(char) = Store : &:r0_6, r0_18 -#-----| Goto -> Block 1 - -# 1036| Block 1 -# 1036| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 1036| v1_1(void) = UnmodeledUse : mu* -# 1036| v1_2(void) = ExitFunction : - -# 1036| Block 2 -# 1036| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 1036| r0_20(glval) = VariableAddress[#return] : +# 1036| v0_21(void) = ReturnValue : &:r0_20, ~mu0_2 +# 1036| v0_22(void) = UnmodeledUse : mu* +# 1036| v0_23(void) = ExitFunction : # 1038| char (void Lambda(int, String const&))::(lambda [] type at line 1038, col. 30)::operator()(float) const # 1038| Block 0 @@ -5365,16 +5026,10 @@ ir.cpp: # 1038| r0_16(glval) = PointerAdd[1] : r0_11, r0_15 # 1038| r0_17(char) = Load : &:r0_16, ~mu0_2 # 1038| mu0_18(char) = Store : &:r0_6, r0_17 -#-----| Goto -> Block 1 - -# 1038| Block 1 -# 1038| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 1038| v1_1(void) = UnmodeledUse : mu* -# 1038| v1_2(void) = ExitFunction : - -# 1038| Block 2 -# 1038| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 1038| r0_19(glval) = VariableAddress[#return] : +# 1038| v0_20(void) = ReturnValue : &:r0_19, ~mu0_2 +# 1038| v0_21(void) = UnmodeledUse : mu* +# 1038| v0_22(void) = ExitFunction : # 1040| void (void Lambda(int, String const&))::(lambda [] type at line 1040, col. 30)::(constructor)((void Lambda(int, String const&))::(lambda [] type at line 1040, col. 30)&&) # 1040| Block 0 @@ -5392,11 +5047,9 @@ ir.cpp: # 1040| mu0_11(unknown) = ^CallSideEffect : ~mu0_2 # 1040| v0_12(void) = NoOp : #-----| v0_13(void) = ReturnIndirection : &:r0_6, ~mu0_2 - -# 1040| Block 1 -# 1040| v1_0(void) = ReturnVoid : -# 1040| v1_1(void) = UnmodeledUse : mu* -# 1040| v1_2(void) = ExitFunction : +# 1040| v0_14(void) = ReturnVoid : +# 1040| v0_15(void) = UnmodeledUse : mu* +# 1040| v0_16(void) = ExitFunction : # 1040| void (void Lambda(int, String const&))::(lambda [] type at line 1040, col. 30)::~() # 1040| Block 0 @@ -5409,11 +5062,9 @@ ir.cpp: # 1040| r0_6(glval) = FunctionAddress[~String] : # 1040| v0_7(void) = Call : func:r0_6, this:r0_5 # 1040| mu0_8(unknown) = ^CallSideEffect : ~mu0_2 - -# 1040| Block 1 -# 1040| v1_0(void) = ReturnVoid : -# 1040| v1_1(void) = UnmodeledUse : mu* -# 1040| v1_2(void) = ExitFunction : +# 1040| v0_9(void) = ReturnVoid : +# 1040| v0_10(void) = UnmodeledUse : mu* +# 1040| v0_11(void) = ExitFunction : # 1040| char (void Lambda(int, String const&))::(lambda [] type at line 1040, col. 30)::operator()(float) const # 1040| Block 0 @@ -5435,16 +5086,10 @@ ir.cpp: # 1040| r0_15(glval) = PointerAdd[1] : r0_10, r0_14 # 1040| r0_16(char) = Load : &:r0_15, ~mu0_2 # 1040| mu0_17(char) = Store : &:r0_6, r0_16 -#-----| Goto -> Block 1 - -# 1040| Block 1 -# 1040| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 1040| v1_1(void) = UnmodeledUse : mu* -# 1040| v1_2(void) = ExitFunction : - -# 1040| Block 2 -# 1040| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 1040| r0_18(glval) = VariableAddress[#return] : +# 1040| v0_19(void) = ReturnValue : &:r0_18, ~mu0_2 +# 1040| v0_20(void) = UnmodeledUse : mu* +# 1040| v0_21(void) = ExitFunction : # 1042| char (void Lambda(int, String const&))::(lambda [] type at line 1042, col. 32)::operator()(float) const # 1042| Block 0 @@ -5469,16 +5114,10 @@ ir.cpp: # 1042| r0_18(glval) = PointerAdd[1] : r0_11, r0_17 # 1042| r0_19(char) = Load : &:r0_18, ~mu0_2 # 1042| mu0_20(char) = Store : &:r0_6, r0_19 -#-----| Goto -> Block 1 - -# 1042| Block 1 -# 1042| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 1042| v1_1(void) = UnmodeledUse : mu* -# 1042| v1_2(void) = ExitFunction : - -# 1042| Block 2 -# 1042| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 1042| r0_21(glval) = VariableAddress[#return] : +# 1042| v0_22(void) = ReturnValue : &:r0_21, ~mu0_2 +# 1042| v0_23(void) = UnmodeledUse : mu* +# 1042| v0_24(void) = ExitFunction : # 1045| char (void Lambda(int, String const&))::(lambda [] type at line 1045, col. 23)::operator()(float) const # 1045| Block 0 @@ -5512,16 +5151,10 @@ ir.cpp: # 1045| r0_27(glval) = PointerAdd[1] : r0_11, r0_26 # 1045| r0_28(char) = Load : &:r0_27, ~mu0_2 # 1045| mu0_29(char) = Store : &:r0_6, r0_28 -#-----| Goto -> Block 1 - -# 1045| Block 1 -# 1045| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 1045| v1_1(void) = UnmodeledUse : mu* -# 1045| v1_2(void) = ExitFunction : - -# 1045| Block 2 -# 1045| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 1045| r0_30(glval) = VariableAddress[#return] : +# 1045| v0_31(void) = ReturnValue : &:r0_30, ~mu0_2 +# 1045| v0_32(void) = UnmodeledUse : mu* +# 1045| v0_33(void) = ExitFunction : # 1068| void RangeBasedFor(vector const&) # 1068| Block 0 @@ -5554,159 +5187,151 @@ ir.cpp: #-----| v0_26(void) = ^IndirectReadSideEffect[-1] : &:r0_22, ~mu0_2 #-----| mu0_27(vector) = ^IndirectMayWriteSideEffect[-1] : &:r0_22 # 1069| mu0_28(iterator) = Store : &:r0_20, r0_24 -#-----| Goto -> Block 6 - -# 1068| Block 1 -# 1068| v1_0(void) = ReturnVoid : -# 1068| v1_1(void) = UnmodeledUse : mu* -# 1068| v1_2(void) = ExitFunction : - -#-----| Block 2 -#-----| r2_0(glval) = VariableAddress[(__begin)] : -# 1075| r2_1(glval) = FunctionAddress[operator++] : -# 1075| r2_2(iterator &) = Call : func:r2_1, this:r2_0 -# 1075| mu2_3(unknown) = ^CallSideEffect : ~mu0_2 -#-----| v2_4(void) = ^IndirectReadSideEffect[-1] : &:r2_0, ~mu0_2 -#-----| mu2_5(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2_0 -#-----| Goto (back edge) -> Block 11 - -# 1075| Block 3 -# 1075| r3_0(glval) = VariableAddress[e] : -#-----| r3_1(glval) = VariableAddress[(__begin)] : -#-----| r3_2(glval) = Convert : r3_1 -# 1075| r3_3(glval) = FunctionAddress[operator*] : -# 1075| r3_4(int &) = Call : func:r3_3, this:r3_2 -# 1075| mu3_5(unknown) = ^CallSideEffect : ~mu0_2 -#-----| v3_6(void) = ^IndirectReadSideEffect[-1] : &:r3_2, ~mu0_2 -#-----| mu3_7(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r3_2 -# 1075| r3_8(glval) = Convert : r3_4 -# 1075| mu3_9(int &) = Store : &:r3_0, r3_8 -# 1076| r3_10(glval) = VariableAddress[e] : -# 1076| r3_11(int &) = Load : &:r3_10, ~mu0_2 -# 1076| r3_12(int) = Load : &:r3_11, ~mu0_2 -# 1076| r3_13(int) = Constant[5] : -# 1076| r3_14(bool) = CompareLT : r3_12, r3_13 -# 1076| v3_15(void) = ConditionalBranch : r3_14 -#-----| False -> Block 2 -#-----| True -> Block 4 - -# 1077| Block 4 -# 1077| v4_0(void) = NoOp : #-----| Goto -> Block 5 -# 1079| Block 5 -# 1079| v5_0(void) = NoOp : -# 1080| v5_1(void) = NoOp : -# 1068| v5_2(void) = ReturnIndirection : &:r0_5, ~mu0_2 +#-----| Block 1 +#-----| r1_0(glval) = VariableAddress[(__begin)] : +# 1075| r1_1(glval) = FunctionAddress[operator++] : +# 1075| r1_2(iterator &) = Call : func:r1_1, this:r1_0 +# 1075| mu1_3(unknown) = ^CallSideEffect : ~mu0_2 +#-----| v1_4(void) = ^IndirectReadSideEffect[-1] : &:r1_0, ~mu0_2 +#-----| mu1_5(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r1_0 +#-----| Goto (back edge) -> Block 10 -#-----| Block 6 -#-----| r6_0(glval) = VariableAddress[(__begin)] : -#-----| r6_1(glval) = Convert : r6_0 -# 1069| r6_2(glval) = FunctionAddress[operator!=] : -#-----| r6_3(glval) = VariableAddress[(__end)] : -#-----| r6_4(iterator) = Load : &:r6_3, ~mu0_2 -# 1069| r6_5(bool) = Call : func:r6_2, this:r6_1, 0:r6_4 -# 1069| mu6_6(unknown) = ^CallSideEffect : ~mu0_2 -#-----| v6_7(void) = ^IndirectReadSideEffect[-1] : &:r6_1, ~mu0_2 -#-----| mu6_8(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r6_1 -# 1069| v6_9(void) = ConditionalBranch : r6_5 -#-----| False -> Block 10 +# 1075| Block 2 +# 1075| r2_0(glval) = VariableAddress[e] : +#-----| r2_1(glval) = VariableAddress[(__begin)] : +#-----| r2_2(glval) = Convert : r2_1 +# 1075| r2_3(glval) = FunctionAddress[operator*] : +# 1075| r2_4(int &) = Call : func:r2_3, this:r2_2 +# 1075| mu2_5(unknown) = ^CallSideEffect : ~mu0_2 +#-----| v2_6(void) = ^IndirectReadSideEffect[-1] : &:r2_2, ~mu0_2 +#-----| mu2_7(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2_2 +# 1075| r2_8(glval) = Convert : r2_4 +# 1075| mu2_9(int &) = Store : &:r2_0, r2_8 +# 1076| r2_10(glval) = VariableAddress[e] : +# 1076| r2_11(int &) = Load : &:r2_10, ~mu0_2 +# 1076| r2_12(int) = Load : &:r2_11, ~mu0_2 +# 1076| r2_13(int) = Constant[5] : +# 1076| r2_14(bool) = CompareLT : r2_12, r2_13 +# 1076| v2_15(void) = ConditionalBranch : r2_14 +#-----| False -> Block 1 +#-----| True -> Block 3 + +# 1077| Block 3 +# 1077| v3_0(void) = NoOp : +#-----| Goto -> Block 4 + +# 1079| Block 4 +# 1079| v4_0(void) = NoOp : +# 1080| v4_1(void) = NoOp : +# 1068| v4_2(void) = ReturnIndirection : &:r0_5, ~mu0_2 +# 1068| v4_3(void) = ReturnVoid : +# 1068| v4_4(void) = UnmodeledUse : mu* +# 1068| v4_5(void) = ExitFunction : + +#-----| Block 5 +#-----| r5_0(glval) = VariableAddress[(__begin)] : +#-----| r5_1(glval) = Convert : r5_0 +# 1069| r5_2(glval) = FunctionAddress[operator!=] : +#-----| r5_3(glval) = VariableAddress[(__end)] : +#-----| r5_4(iterator) = Load : &:r5_3, ~mu0_2 +# 1069| r5_5(bool) = Call : func:r5_2, this:r5_1, 0:r5_4 +# 1069| mu5_6(unknown) = ^CallSideEffect : ~mu0_2 +#-----| v5_7(void) = ^IndirectReadSideEffect[-1] : &:r5_1, ~mu0_2 +#-----| mu5_8(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r5_1 +# 1069| v5_9(void) = ConditionalBranch : r5_5 +#-----| False -> Block 9 +#-----| True -> Block 6 + +# 1069| Block 6 +# 1069| r6_0(glval) = VariableAddress[e] : +#-----| r6_1(glval) = VariableAddress[(__begin)] : +#-----| r6_2(glval) = Convert : r6_1 +# 1069| r6_3(glval) = FunctionAddress[operator*] : +# 1069| r6_4(int &) = Call : func:r6_3, this:r6_2 +# 1069| mu6_5(unknown) = ^CallSideEffect : ~mu0_2 +#-----| v6_6(void) = ^IndirectReadSideEffect[-1] : &:r6_2, ~mu0_2 +#-----| mu6_7(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r6_2 +# 1069| r6_8(int) = Load : &:r6_4, ~mu0_2 +# 1069| mu6_9(int) = Store : &:r6_0, r6_8 +# 1070| r6_10(glval) = VariableAddress[e] : +# 1070| r6_11(int) = Load : &:r6_10, ~mu0_2 +# 1070| r6_12(int) = Constant[0] : +# 1070| r6_13(bool) = CompareGT : r6_11, r6_12 +# 1070| v6_14(void) = ConditionalBranch : r6_13 +#-----| False -> Block 8 #-----| True -> Block 7 -# 1069| Block 7 -# 1069| r7_0(glval) = VariableAddress[e] : -#-----| r7_1(glval) = VariableAddress[(__begin)] : -#-----| r7_2(glval) = Convert : r7_1 -# 1069| r7_3(glval) = FunctionAddress[operator*] : -# 1069| r7_4(int &) = Call : func:r7_3, this:r7_2 -# 1069| mu7_5(unknown) = ^CallSideEffect : ~mu0_2 -#-----| v7_6(void) = ^IndirectReadSideEffect[-1] : &:r7_2, ~mu0_2 -#-----| mu7_7(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r7_2 -# 1069| r7_8(int) = Load : &:r7_4, ~mu0_2 -# 1069| mu7_9(int) = Store : &:r7_0, r7_8 -# 1070| r7_10(glval) = VariableAddress[e] : -# 1070| r7_11(int) = Load : &:r7_10, ~mu0_2 -# 1070| r7_12(int) = Constant[0] : -# 1070| r7_13(bool) = CompareGT : r7_11, r7_12 -# 1070| v7_14(void) = ConditionalBranch : r7_13 -#-----| False -> Block 9 -#-----| True -> Block 8 +# 1071| Block 7 +# 1071| v7_0(void) = NoOp : +#-----| Goto -> Block 8 -# 1071| Block 8 -# 1071| v8_0(void) = NoOp : -#-----| Goto -> Block 9 +# 1069| Block 8 +# 1069| v8_0(void) = NoOp : +#-----| r8_1(glval) = VariableAddress[(__begin)] : +# 1069| r8_2(glval) = FunctionAddress[operator++] : +# 1069| r8_3(iterator &) = Call : func:r8_2, this:r8_1 +# 1069| mu8_4(unknown) = ^CallSideEffect : ~mu0_2 +#-----| v8_5(void) = ^IndirectReadSideEffect[-1] : &:r8_1, ~mu0_2 +#-----| mu8_6(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r8_1 +#-----| Goto (back edge) -> Block 5 -# 1069| Block 9 -# 1069| v9_0(void) = NoOp : -#-----| r9_1(glval) = VariableAddress[(__begin)] : -# 1069| r9_2(glval) = FunctionAddress[operator++] : -# 1069| r9_3(iterator &) = Call : func:r9_2, this:r9_1 -# 1069| mu9_4(unknown) = ^CallSideEffect : ~mu0_2 -#-----| v9_5(void) = ^IndirectReadSideEffect[-1] : &:r9_1, ~mu0_2 -#-----| mu9_6(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r9_1 -#-----| Goto (back edge) -> Block 6 +# 1075| Block 9 +# 1075| r9_0(glval &>) = VariableAddress[(__range)] : +# 1075| r9_1(glval &>) = VariableAddress[v] : +# 1075| r9_2(vector &) = Load : &:r9_1, ~mu0_2 +# 1075| mu9_3(vector &) = Store : &:r9_0, r9_2 +# 1075| r9_4(glval) = VariableAddress[(__begin)] : +#-----| r9_5(glval &>) = VariableAddress[(__range)] : +#-----| r9_6(vector &) = Load : &:r9_5, ~mu0_2 +# 1075| r9_7(glval) = FunctionAddress[begin] : +# 1075| r9_8(iterator) = Call : func:r9_7, this:r9_6 +# 1075| mu9_9(unknown) = ^CallSideEffect : ~mu0_2 +#-----| v9_10(void) = ^IndirectReadSideEffect[-1] : &:r9_6, ~mu0_2 +#-----| mu9_11(vector) = ^IndirectMayWriteSideEffect[-1] : &:r9_6 +# 1075| mu9_12(iterator) = Store : &:r9_4, r9_8 +# 1075| r9_13(glval) = VariableAddress[(__end)] : +#-----| r9_14(glval &>) = VariableAddress[(__range)] : +#-----| r9_15(vector &) = Load : &:r9_14, ~mu0_2 +# 1075| r9_16(glval) = FunctionAddress[end] : +# 1075| r9_17(iterator) = Call : func:r9_16, this:r9_15 +# 1075| mu9_18(unknown) = ^CallSideEffect : ~mu0_2 +#-----| v9_19(void) = ^IndirectReadSideEffect[-1] : &:r9_15, ~mu0_2 +#-----| mu9_20(vector) = ^IndirectMayWriteSideEffect[-1] : &:r9_15 +# 1075| mu9_21(iterator) = Store : &:r9_13, r9_17 +#-----| Goto -> Block 10 -# 1075| Block 10 -# 1075| r10_0(glval &>) = VariableAddress[(__range)] : -# 1075| r10_1(glval &>) = VariableAddress[v] : -# 1075| r10_2(vector &) = Load : &:r10_1, ~mu0_2 -# 1075| mu10_3(vector &) = Store : &:r10_0, r10_2 -# 1075| r10_4(glval) = VariableAddress[(__begin)] : -#-----| r10_5(glval &>) = VariableAddress[(__range)] : -#-----| r10_6(vector &) = Load : &:r10_5, ~mu0_2 -# 1075| r10_7(glval) = FunctionAddress[begin] : -# 1075| r10_8(iterator) = Call : func:r10_7, this:r10_6 -# 1075| mu10_9(unknown) = ^CallSideEffect : ~mu0_2 -#-----| v10_10(void) = ^IndirectReadSideEffect[-1] : &:r10_6, ~mu0_2 -#-----| mu10_11(vector) = ^IndirectMayWriteSideEffect[-1] : &:r10_6 -# 1075| mu10_12(iterator) = Store : &:r10_4, r10_8 -# 1075| r10_13(glval) = VariableAddress[(__end)] : -#-----| r10_14(glval &>) = VariableAddress[(__range)] : -#-----| r10_15(vector &) = Load : &:r10_14, ~mu0_2 -# 1075| r10_16(glval) = FunctionAddress[end] : -# 1075| r10_17(iterator) = Call : func:r10_16, this:r10_15 -# 1075| mu10_18(unknown) = ^CallSideEffect : ~mu0_2 -#-----| v10_19(void) = ^IndirectReadSideEffect[-1] : &:r10_15, ~mu0_2 -#-----| mu10_20(vector) = ^IndirectMayWriteSideEffect[-1] : &:r10_15 -# 1075| mu10_21(iterator) = Store : &:r10_13, r10_17 -#-----| Goto -> Block 11 - -#-----| Block 11 -#-----| r11_0(glval) = VariableAddress[(__begin)] : -#-----| r11_1(glval) = Convert : r11_0 -# 1075| r11_2(glval) = FunctionAddress[operator!=] : -#-----| r11_3(glval) = VariableAddress[(__end)] : -#-----| r11_4(iterator) = Load : &:r11_3, ~mu0_2 -# 1075| r11_5(bool) = Call : func:r11_2, this:r11_1, 0:r11_4 -# 1075| mu11_6(unknown) = ^CallSideEffect : ~mu0_2 -#-----| v11_7(void) = ^IndirectReadSideEffect[-1] : &:r11_1, ~mu0_2 -#-----| mu11_8(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r11_1 -# 1075| v11_9(void) = ConditionalBranch : r11_5 -#-----| False -> Block 5 -#-----| True -> Block 3 +#-----| Block 10 +#-----| r10_0(glval) = VariableAddress[(__begin)] : +#-----| r10_1(glval) = Convert : r10_0 +# 1075| r10_2(glval) = FunctionAddress[operator!=] : +#-----| r10_3(glval) = VariableAddress[(__end)] : +#-----| r10_4(iterator) = Load : &:r10_3, ~mu0_2 +# 1075| r10_5(bool) = Call : func:r10_2, this:r10_1, 0:r10_4 +# 1075| mu10_6(unknown) = ^CallSideEffect : ~mu0_2 +#-----| v10_7(void) = ^IndirectReadSideEffect[-1] : &:r10_1, ~mu0_2 +#-----| mu10_8(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r10_1 +# 1075| v10_9(void) = ConditionalBranch : r10_5 +#-----| False -> Block 4 +#-----| True -> Block 2 # 1099| int AsmStmt(int) # 1099| Block 0 -# 1099| v0_0(void) = EnterFunction : -# 1099| mu0_1(unknown) = AliasedDefinition : -# 1099| mu0_2(unknown) = UnmodeledDefinition : -# 1099| r0_3(glval) = VariableAddress[x] : -# 1099| mu0_4(int) = InitializeParameter[x] : &:r0_3 -# 1100| mu0_5(unknown) = InlineAsm : ~mu0_2 -# 1101| r0_6(glval) = VariableAddress[#return] : -# 1101| r0_7(glval) = VariableAddress[x] : -# 1101| r0_8(int) = Load : &:r0_7, ~mu0_2 -# 1101| mu0_9(int) = Store : &:r0_6, r0_8 -#-----| Goto -> Block 1 - -# 1099| Block 1 -# 1099| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 1099| v1_1(void) = UnmodeledUse : mu* -# 1099| v1_2(void) = ExitFunction : - -# 1099| Block 2 -# 1099| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 1099| v0_0(void) = EnterFunction : +# 1099| mu0_1(unknown) = AliasedDefinition : +# 1099| mu0_2(unknown) = UnmodeledDefinition : +# 1099| r0_3(glval) = VariableAddress[x] : +# 1099| mu0_4(int) = InitializeParameter[x] : &:r0_3 +# 1100| mu0_5(unknown) = InlineAsm : ~mu0_2 +# 1101| r0_6(glval) = VariableAddress[#return] : +# 1101| r0_7(glval) = VariableAddress[x] : +# 1101| r0_8(int) = Load : &:r0_7, ~mu0_2 +# 1101| mu0_9(int) = Store : &:r0_6, r0_8 +# 1099| r0_10(glval) = VariableAddress[#return] : +# 1099| v0_11(void) = ReturnValue : &:r0_10, ~mu0_2 +# 1099| v0_12(void) = UnmodeledUse : mu* +# 1099| v0_13(void) = ExitFunction : # 1104| void AsmStmtWithOutputs(unsigned int&, unsigned int, unsigned int&, unsigned int) # 1104| Block 0 @@ -5737,11 +5362,9 @@ ir.cpp: # 1111| v0_24(void) = NoOp : # 1104| v0_25(void) = ReturnIndirection : &:r0_5, ~mu0_2 # 1104| v0_26(void) = ReturnIndirection : &:r0_11, ~mu0_2 - -# 1104| Block 1 -# 1104| v1_0(void) = ReturnVoid : -# 1104| v1_1(void) = UnmodeledUse : mu* -# 1104| v1_2(void) = ExitFunction : +# 1104| v0_27(void) = ReturnVoid : +# 1104| v0_28(void) = UnmodeledUse : mu* +# 1104| v0_29(void) = ExitFunction : # 1113| void ExternDeclarations() # 1113| Block 0 @@ -5755,11 +5378,9 @@ ir.cpp: # 1118| r0_7(glval) = VariableAddress[h] : # 1118| mu0_8(int) = Uninitialized[h] : &:r0_7 # 1120| v0_9(void) = NoOp : - -# 1113| Block 1 -# 1113| v1_0(void) = ReturnVoid : -# 1113| v1_1(void) = UnmodeledUse : mu* -# 1113| v1_2(void) = ExitFunction : +# 1113| v0_10(void) = ReturnVoid : +# 1113| v0_11(void) = UnmodeledUse : mu* +# 1113| v0_12(void) = ExitFunction : # 1128| void ExternDeclarationsInMacro() # 1128| Block 0 @@ -5769,33 +5390,31 @@ ir.cpp: # 1130| r0_3(glval) = VariableAddress[i] : # 1130| r0_4(int) = Constant[0] : # 1130| mu0_5(int) = Store : &:r0_3, r0_4 -#-----| Goto -> Block 2 +#-----| Goto -> Block 1 -# 1128| Block 1 -# 1128| v1_0(void) = ReturnVoid : -# 1128| v1_1(void) = UnmodeledUse : mu* -# 1128| v1_2(void) = ExitFunction : +# 1130| Block 1 +# 1130| r1_0(glval) = VariableAddress[i] : +# 1130| r1_1(int) = Load : &:r1_0, ~mu0_2 +# 1130| r1_2(int) = Constant[10] : +# 1130| r1_3(bool) = CompareLT : r1_1, r1_2 +# 1130| v1_4(void) = ConditionalBranch : r1_3 +#-----| False -> Block 3 +#-----| True -> Block 2 # 1130| Block 2 # 1130| r2_0(glval) = VariableAddress[i] : # 1130| r2_1(int) = Load : &:r2_0, ~mu0_2 -# 1130| r2_2(int) = Constant[10] : -# 1130| r2_3(bool) = CompareLT : r2_1, r2_2 -# 1130| v2_4(void) = ConditionalBranch : r2_3 -#-----| False -> Block 4 -#-----| True -> Block 3 +# 1130| r2_2(int) = Constant[1] : +# 1130| r2_3(int) = Add : r2_1, r2_2 +# 1130| mu2_4(int) = Store : &:r2_0, r2_3 +#-----| Goto (back edge) -> Block 1 # 1130| Block 3 -# 1130| r3_0(glval) = VariableAddress[i] : -# 1130| r3_1(int) = Load : &:r3_0, ~mu0_2 -# 1130| r3_2(int) = Constant[1] : -# 1130| r3_3(int) = Add : r3_1, r3_2 -# 1130| mu3_4(int) = Store : &:r3_0, r3_3 -#-----| Goto (back edge) -> Block 2 - -# 1130| Block 4 -# 1130| v4_0(void) = NoOp : -# 1131| v4_1(void) = NoOp : +# 1130| v3_0(void) = NoOp : +# 1131| v3_1(void) = NoOp : +# 1128| v3_2(void) = ReturnVoid : +# 1128| v3_3(void) = UnmodeledUse : mu* +# 1128| v3_4(void) = ExitFunction : # 1133| void TryCatchNoCatchAny(bool) # 1133| Block 0 @@ -5810,109 +5429,107 @@ ir.cpp: # 1136| r0_8(glval) = VariableAddress[b] : # 1136| r0_9(bool) = Load : &:r0_8, ~mu0_2 # 1136| v0_10(void) = ConditionalBranch : r0_9 -#-----| False -> Block 5 -#-----| True -> Block 4 +#-----| False -> Block 4 +#-----| True -> Block 3 # 1133| Block 1 -# 1133| v1_0(void) = ReturnVoid : -#-----| Goto -> Block 2 +# 1133| v1_0(void) = UnmodeledUse : mu* +# 1133| v1_1(void) = ExitFunction : # 1133| Block 2 -# 1133| v2_0(void) = UnmodeledUse : mu* -# 1133| v2_1(void) = ExitFunction : +# 1133| v2_0(void) = Unwind : +#-----| Goto -> Block 1 -# 1133| Block 3 -# 1133| v3_0(void) = Unwind : -#-----| Goto -> Block 2 +# 1137| Block 3 +# 1137| r3_0(glval) = VariableAddress[#throw1137:7] : +# 1137| r3_1(glval) = StringConstant["string literal"] : +# 1137| r3_2(char *) = Convert : r3_1 +# 1137| mu3_3(char *) = Store : &:r3_0, r3_2 +# 1137| v3_4(void) = ThrowValue : &:r3_0, ~mu0_2 +#-----| Exception -> Block 9 -# 1137| Block 4 -# 1137| r4_0(glval) = VariableAddress[#throw1137:7] : -# 1137| r4_1(glval) = StringConstant["string literal"] : -# 1137| r4_2(char *) = Convert : r4_1 -# 1137| mu4_3(char *) = Store : &:r4_0, r4_2 -# 1137| v4_4(void) = ThrowValue : &:r4_0, ~mu0_2 -#-----| Exception -> Block 10 +# 1139| Block 4 +# 1139| r4_0(glval) = VariableAddress[x] : +# 1139| r4_1(int) = Load : &:r4_0, ~mu0_2 +# 1139| r4_2(int) = Constant[2] : +# 1139| r4_3(bool) = CompareLT : r4_1, r4_2 +# 1139| v4_4(void) = ConditionalBranch : r4_3 +#-----| False -> Block 8 +#-----| True -> Block 5 -# 1139| Block 5 -# 1139| r5_0(glval) = VariableAddress[x] : -# 1139| r5_1(int) = Load : &:r5_0, ~mu0_2 -# 1139| r5_2(int) = Constant[2] : -# 1139| r5_3(bool) = CompareLT : r5_1, r5_2 -# 1139| v5_4(void) = ConditionalBranch : r5_3 -#-----| False -> Block 9 +# 1140| Block 5 +# 1140| r5_0(glval) = VariableAddress[b] : +# 1140| r5_1(bool) = Load : &:r5_0, ~mu0_2 +# 1140| v5_2(void) = ConditionalBranch : r5_1 +#-----| False -> Block 7 #-----| True -> Block 6 # 1140| Block 6 -# 1140| r6_0(glval) = VariableAddress[b] : -# 1140| r6_1(bool) = Load : &:r6_0, ~mu0_2 -# 1140| v6_2(void) = ConditionalBranch : r6_1 -#-----| False -> Block 8 -#-----| True -> Block 7 +# 1140| r6_0(int) = Constant[7] : +# 1140| r6_1(glval) = VariableAddress[#temp1140:11] : +# 1140| mu6_2(int) = Store : &:r6_1, r6_0 +# 1140| r6_3(glval) = VariableAddress[#temp1140:11] : +# 1140| r6_4(int) = Load : &:r6_3, ~mu0_2 +# 1140| r6_5(glval) = VariableAddress[x] : +# 1140| mu6_6(int) = Store : &:r6_5, r6_4 +#-----| Goto -> Block 8 # 1140| Block 7 -# 1140| r7_0(int) = Constant[7] : -# 1140| r7_1(glval) = VariableAddress[#temp1140:11] : -# 1140| mu7_2(int) = Store : &:r7_1, r7_0 -# 1140| r7_3(glval) = VariableAddress[#temp1140:11] : -# 1140| r7_4(int) = Load : &:r7_3, ~mu0_2 -# 1140| r7_5(glval) = VariableAddress[x] : -# 1140| mu7_6(int) = Store : &:r7_5, r7_4 -#-----| Goto -> Block 9 +# 1140| r7_0(glval) = VariableAddress[#throw1140:19] : +# 1140| r7_1(glval) = FunctionAddress[String] : +# 1140| r7_2(glval) = StringConstant["String object"] : +# 1140| r7_3(char *) = Convert : r7_2 +# 1140| v7_4(void) = Call : func:r7_1, this:r7_0, 0:r7_3 +# 1140| mu7_5(unknown) = ^CallSideEffect : ~mu0_2 +# 1140| v7_6(void) = ^IndirectReadSideEffect[0] : &:r7_3, ~mu0_2 +# 1140| mu7_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r7_3 +# 1140| v7_8(void) = ThrowValue : &:r7_0, ~mu0_2 +#-----| Exception -> Block 9 -# 1140| Block 8 -# 1140| r8_0(glval) = VariableAddress[#throw1140:19] : -# 1140| r8_1(glval) = FunctionAddress[String] : -# 1140| r8_2(glval) = StringConstant["String object"] : -# 1140| r8_3(char *) = Convert : r8_2 -# 1140| v8_4(void) = Call : func:r8_1, this:r8_0, 0:r8_3 -# 1140| mu8_5(unknown) = ^CallSideEffect : ~mu0_2 -# 1140| v8_6(void) = ^IndirectReadSideEffect[0] : &:r8_3, ~mu0_2 -# 1140| mu8_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r8_3 -# 1140| v8_8(void) = ThrowValue : &:r8_0, ~mu0_2 -#-----| Exception -> Block 10 - -# 1142| Block 9 -# 1142| r9_0(int) = Constant[7] : -# 1142| r9_1(glval) = VariableAddress[x] : -# 1142| mu9_2(int) = Store : &:r9_1, r9_0 -#-----| Goto -> Block 14 - -# 1144| Block 10 -# 1144| v10_0(void) = CatchByType[const char *] : -#-----| Exception -> Block 12 -#-----| Goto -> Block 11 - -# 1144| Block 11 -# 1144| r11_0(glval) = VariableAddress[s] : -# 1144| mu11_1(char *) = InitializeParameter[s] : &:r11_0 -# 1144| r11_2(char *) = Load : &:r11_0, ~mu11_1 -# 1144| mu11_3(unknown) = InitializeIndirection[s] : &:r11_2 -# 1145| r11_4(glval) = VariableAddress[#throw1145:5] : -# 1145| r11_5(glval) = FunctionAddress[String] : -# 1145| r11_6(glval) = VariableAddress[s] : -# 1145| r11_7(char *) = Load : &:r11_6, ~mu0_2 -# 1145| v11_8(void) = Call : func:r11_5, this:r11_4, 0:r11_7 -# 1145| mu11_9(unknown) = ^CallSideEffect : ~mu0_2 -# 1145| v11_10(void) = ^IndirectReadSideEffect[0] : &:r11_7, ~mu0_2 -# 1145| mu11_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r11_7 -# 1145| v11_12(void) = ThrowValue : &:r11_4, ~mu0_2 -#-----| Exception -> Block 3 - -# 1147| Block 12 -# 1147| v12_0(void) = CatchByType[const String &] : -#-----| Exception -> Block 3 +# 1142| Block 8 +# 1142| r8_0(int) = Constant[7] : +# 1142| r8_1(glval) = VariableAddress[x] : +# 1142| mu8_2(int) = Store : &:r8_1, r8_0 #-----| Goto -> Block 13 -# 1147| Block 13 -# 1147| r13_0(glval) = VariableAddress[e] : -# 1147| mu13_1(String &) = InitializeParameter[e] : &:r13_0 -# 1147| r13_2(String &) = Load : &:r13_0, ~mu13_1 -# 1147| mu13_3(unknown) = InitializeIndirection[e] : &:r13_2 -# 1147| v13_4(void) = NoOp : -#-----| Goto -> Block 14 +# 1144| Block 9 +# 1144| v9_0(void) = CatchByType[const char *] : +#-----| Exception -> Block 11 +#-----| Goto -> Block 10 -# 1149| Block 14 -# 1149| v14_0(void) = NoOp : +# 1144| Block 10 +# 1144| r10_0(glval) = VariableAddress[s] : +# 1144| mu10_1(char *) = InitializeParameter[s] : &:r10_0 +# 1144| r10_2(char *) = Load : &:r10_0, ~mu10_1 +# 1144| mu10_3(unknown) = InitializeIndirection[s] : &:r10_2 +# 1145| r10_4(glval) = VariableAddress[#throw1145:5] : +# 1145| r10_5(glval) = FunctionAddress[String] : +# 1145| r10_6(glval) = VariableAddress[s] : +# 1145| r10_7(char *) = Load : &:r10_6, ~mu0_2 +# 1145| v10_8(void) = Call : func:r10_5, this:r10_4, 0:r10_7 +# 1145| mu10_9(unknown) = ^CallSideEffect : ~mu0_2 +# 1145| v10_10(void) = ^IndirectReadSideEffect[0] : &:r10_7, ~mu0_2 +# 1145| mu10_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r10_7 +# 1145| v10_12(void) = ThrowValue : &:r10_4, ~mu0_2 +#-----| Exception -> Block 2 + +# 1147| Block 11 +# 1147| v11_0(void) = CatchByType[const String &] : +#-----| Exception -> Block 2 +#-----| Goto -> Block 12 + +# 1147| Block 12 +# 1147| r12_0(glval) = VariableAddress[e] : +# 1147| mu12_1(String &) = InitializeParameter[e] : &:r12_0 +# 1147| r12_2(String &) = Load : &:r12_0, ~mu12_1 +# 1147| mu12_3(unknown) = InitializeIndirection[e] : &:r12_2 +# 1147| v12_4(void) = NoOp : +#-----| Goto -> Block 13 + +# 1149| Block 13 +# 1149| v13_0(void) = NoOp : +# 1133| v13_1(void) = ReturnVoid : +#-----| Goto -> Block 1 # 1153| void VectorTypes(int) # 1153| Block 0 @@ -5972,11 +5589,9 @@ ir.cpp: # 1158| r0_53(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1158| mu0_54(__attribute((vector_size(16UL))) int) = Store : &:r0_53, r0_52 # 1159| v0_55(void) = NoOp : - -# 1153| Block 1 -# 1153| v1_0(void) = ReturnVoid : -# 1153| v1_1(void) = UnmodeledUse : mu* -# 1153| v1_2(void) = ExitFunction : +# 1153| v0_56(void) = ReturnVoid : +# 1153| v0_57(void) = UnmodeledUse : mu* +# 1153| v0_58(void) = ExitFunction : # 1163| int ModeledCallTarget(int) # 1163| Block 0 @@ -6000,16 +5615,10 @@ ir.cpp: # 1166| r0_17(glval) = VariableAddress[y] : # 1166| r0_18(int) = Load : &:r0_17, ~mu0_2 # 1166| mu0_19(int) = Store : &:r0_16, r0_18 -#-----| Goto -> Block 1 - -# 1163| Block 1 -# 1163| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 1163| v1_1(void) = UnmodeledUse : mu* -# 1163| v1_2(void) = ExitFunction : - -# 1163| Block 2 -# 1163| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 1163| r0_20(glval) = VariableAddress[#return] : +# 1163| v0_21(void) = ReturnValue : &:r0_20, ~mu0_2 +# 1163| v0_22(void) = UnmodeledUse : mu* +# 1163| v0_23(void) = ExitFunction : perf-regression.cpp: # 6| void Big::Big() @@ -6024,11 +5633,9 @@ perf-regression.cpp: # 6| r0_7(unknown[1073741824]) = Constant[0] : # 6| mu0_8(unknown[1073741824]) = Store : &:r0_6, r0_7 # 6| v0_9(void) = NoOp : - -# 6| Block 1 -# 6| v1_0(void) = ReturnVoid : -# 6| v1_1(void) = UnmodeledUse : mu* -# 6| v1_2(void) = ExitFunction : +# 6| v0_10(void) = ReturnVoid : +# 6| v0_11(void) = UnmodeledUse : mu* +# 6| v0_12(void) = ExitFunction : # 9| int main() # 9| Block 0 @@ -6048,13 +5655,7 @@ perf-regression.cpp: # 12| r0_13(glval) = VariableAddress[#return] : # 12| r0_14(int) = Constant[0] : # 12| mu0_15(int) = Store : &:r0_13, r0_14 -#-----| Goto -> Block 1 - -# 9| Block 1 -# 9| v1_0(void) = ReturnValue : &:r2_0, ~mu0_2 -# 9| v1_1(void) = UnmodeledUse : mu* -# 9| v1_2(void) = ExitFunction : - -# 9| Block 2 -# 9| r2_0(glval) = VariableAddress[#return] : -#-----| Goto -> Block 1 +# 9| r0_16(glval) = VariableAddress[#return] : +# 9| v0_17(void) = ReturnValue : &:r0_16, ~mu0_2 +# 9| v0_18(void) = UnmodeledUse : mu* +# 9| v0_19(void) = ExitFunction : diff --git a/cpp/ql/test/library-tests/ir/ir/raw_sanity.expected b/cpp/ql/test/library-tests/ir/ir/raw_sanity.expected index d132bc74562..928f535f9d8 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_sanity.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_sanity.expected @@ -5,112 +5,6 @@ missingPhiOperand missingOperandType sideEffectWithoutPrimary instructionWithoutSuccessor -| bad_asts.cpp:17:3:17:3 | NoOp: return ... | -| bad_asts.cpp:23:5:23:5 | NoOp: return ... | -| bad_asts.cpp:26:41:26:41 | ReturnIndirection: a | -| bad_asts.cpp:34:3:34:3 | NoOp: return ... | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| ir.cpp:41:1:41:1 | NoOp: return ... | -| ir.cpp:48:1:48:1 | NoOp: return ... | -| ir.cpp:85:1:85:1 | NoOp: return ... | -| ir.cpp:96:1:96:1 | NoOp: return ... | -| ir.cpp:105:1:105:1 | NoOp: return ... | -| ir.cpp:112:1:112:1 | NoOp: return ... | -| ir.cpp:131:1:131:1 | NoOp: return ... | -| ir.cpp:142:1:142:1 | NoOp: return ... | -| ir.cpp:151:1:151:1 | NoOp: return ... | -| ir.cpp:153:22:153:22 | ReturnIndirection: p | -| ir.cpp:171:23:171:23 | ReturnIndirection: p | -| ir.cpp:191:1:191:1 | NoOp: return ... | -| ir.cpp:193:34:193:34 | ReturnIndirection: q | -| ir.cpp:204:26:204:26 | ReturnIndirection: p | -| ir.cpp:228:1:228:1 | NoOp: return ... | -| ir.cpp:233:1:233:1 | NoOp: return ... | -| ir.cpp:251:1:251:1 | NoOp: return ... | -| ir.cpp:257:1:257:1 | NoOp: return ... | -| ir.cpp:263:1:263:1 | NoOp: return ... | -| ir.cpp:283:1:283:1 | NoOp: return ... | -| ir.cpp:296:1:296:1 | NoOp: return ... | -| ir.cpp:309:1:309:1 | NoOp: return ... | -| ir.cpp:315:1:315:1 | NoOp: return ... | -| ir.cpp:323:1:323:1 | NoOp: return ... | -| ir.cpp:331:1:331:1 | NoOp: return ... | -| ir.cpp:339:1:339:1 | NoOp: return ... | -| ir.cpp:358:1:358:1 | NoOp: return ... | -| ir.cpp:367:1:367:1 | NoOp: return ... | -| ir.cpp:374:1:374:1 | NoOp: return ... | -| ir.cpp:410:1:410:1 | NoOp: return ... | -| ir.cpp:431:1:431:1 | NoOp: return ... | -| ir.cpp:445:1:445:1 | NoOp: return ... | -| ir.cpp:459:1:459:1 | NoOp: return ... | -| ir.cpp:473:1:473:1 | NoOp: return ... | -| ir.cpp:480:1:480:1 | NoOp: return ... | -| ir.cpp:484:1:484:1 | NoOp: return ... | -| ir.cpp:490:1:490:1 | NoOp: return ... | -| ir.cpp:494:1:494:1 | NoOp: return ... | -| ir.cpp:501:1:501:1 | NoOp: return ... | -| ir.cpp:510:1:510:1 | NoOp: return ... | -| ir.cpp:517:1:517:1 | NoOp: return ... | -| ir.cpp:523:1:523:1 | NoOp: return ... | -| ir.cpp:533:1:533:1 | NoOp: return ... | -| ir.cpp:537:9:537:15 | NoOp: return ... | -| ir.cpp:541:1:541:1 | NoOp: return ... | -| ir.cpp:580:1:580:1 | NoOp: return ... | -| ir.cpp:586:1:586:1 | NoOp: return ... | -| ir.cpp:595:1:595:1 | NoOp: return ... | -| ir.cpp:620:1:620:1 | NoOp: return ... | -| ir.cpp:622:37:622:37 | ReturnIndirection: p | -| ir.cpp:650:5:650:5 | NoOp: return ... | -| ir.cpp:656:5:656:5 | NoOp: return ... | -| ir.cpp:664:5:664:5 | NoOp: return ... | -| ir.cpp:689:1:689:1 | NoOp: return ... | -| ir.cpp:695:1:695:1 | NoOp: return ... | -| ir.cpp:701:1:701:1 | NoOp: return ... | -| ir.cpp:743:1:743:1 | NoOp: return ... | -| ir.cpp:749:3:749:3 | NoOp: return ... | -| ir.cpp:751:3:751:3 | CallSideEffect: call to ~String | -| ir.cpp:758:3:758:3 | NoOp: return ... | -| ir.cpp:760:3:760:3 | CallSideEffect: call to ~Base | -| ir.cpp:767:3:767:3 | NoOp: return ... | -| ir.cpp:769:3:769:3 | CallSideEffect: call to ~Middle | -| ir.cpp:776:3:776:3 | NoOp: return ... | -| ir.cpp:778:3:778:3 | CallSideEffect: call to ~Base | -| ir.cpp:785:3:785:3 | NoOp: return ... | -| ir.cpp:787:3:787:3 | CallSideEffect: call to ~Base | -| ir.cpp:794:3:794:3 | NoOp: return ... | -| ir.cpp:796:3:796:3 | CallSideEffect: call to ~Base | -| ir.cpp:840:1:840:1 | NoOp: return ... | -| ir.cpp:842:8:842:8 | NoOp: return ... | -| ir.cpp:846:8:846:8 | CallSideEffect: call to ~PolymorphicBase | -| ir.cpp:846:8:846:8 | NoOp: return ... | -| ir.cpp:865:1:865:1 | NoOp: return ... | -| ir.cpp:869:1:869:1 | NoOp: return ... | -| ir.cpp:881:1:881:1 | NoOp: return ... | -| ir.cpp:883:47:883:47 | ReturnIndirection: p | -| ir.cpp:898:1:898:1 | NoOp: return ... | -| ir.cpp:902:1:902:1 | NoOp: return ... | -| ir.cpp:907:1:907:1 | NoOp: return ... | -| ir.cpp:948:1:948:1 | NoOp: return ... | -| ir.cpp:959:1:959:1 | NoOp: return ... | -| ir.cpp:976:1:976:1 | NoOp: return ... | -| ir.cpp:985:1:985:1 | NoOp: return ... | -| ir.cpp:1012:1:1012:1 | NoOp: return ... | -| ir.cpp:1021:1:1021:1 | NoOp: return ... | -| ir.cpp:1027:1:1027:1 | NoOp: return ... | -| ir.cpp:1029:18:1029:18 | NoOp: return ... | -| ir.cpp:1031:34:1031:34 | ReturnIndirection: s | -| ir.cpp:1036:21:1036:21 | CallSideEffect: call to ~String | -| ir.cpp:1040:30:1040:30 | CallSideEffect: call to ~String | -| ir.cpp:1068:39:1068:39 | ReturnIndirection: v | -| ir.cpp:1104:79:1104:79 | ReturnIndirection: c | -| ir.cpp:1120:1:1120:1 | NoOp: return ... | -| ir.cpp:1131:1:1131:1 | NoOp: return ... | -| ir.cpp:1149:1:1149:1 | NoOp: return ... | -| ir.cpp:1159:1:1159:1 | NoOp: return ... | -| perf-regression.cpp:6:21:6:21 | NoOp: return ... | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction @@ -120,43 +14,6 @@ containsLoopOfForwardEdges lostReachability backEdgeCountMismatch useNotDominatedByDefinition -| clang.cpp:5:6:5:21 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | clang.cpp:5:6:5:21 | IR: globalIntAddress | int* globalIntAddress() | -| ir.cpp:235:5:235:14 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:235:5:235:14 | IR: Parameters | int Parameters(int, int) | -| ir.cpp:341:5:341:15 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:341:5:341:15 | IR: Dereference | int Dereference(int*) | -| ir.cpp:348:6:348:14 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:348:6:348:14 | IR: AddressOf | int* AddressOf() | -| ir.cpp:376:5:376:11 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:376:5:376:11 | IR: CallAdd | int CallAdd(int, int) | -| ir.cpp:380:5:380:9 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:380:5:380:9 | IR: Comma | int Comma(int, int) | -| ir.cpp:422:7:422:18 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:422:7:422:18 | IR: ReturnStruct | Point ReturnStruct(Point) | -| ir.cpp:543:5:543:20 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:543:5:543:20 | IR: EarlyReturnValue | int EarlyReturnValue(int, int) | -| ir.cpp:551:5:551:18 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:551:5:551:18 | IR: CallViaFuncPtr | int CallViaFuncPtr(int(*)(int)) | -| ir.cpp:560:5:560:14 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:560:5:560:14 | IR: EnumSwitch | int EnumSwitch(E) | -| ir.cpp:630:16:630:35 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:630:16:630:35 | IR: StaticMemberFunction | int C::StaticMemberFunction(int) | -| ir.cpp:634:9:634:30 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:634:9:634:30 | IR: InstanceMemberFunction | int C::InstanceMemberFunction(int) | -| ir.cpp:638:17:638:37 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:638:17:638:37 | IR: VirtualMemberFunction | int C::VirtualMemberFunction(int) | -| ir.cpp:675:5:675:18 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:675:5:675:18 | IR: DerefReference | int DerefReference(int&) | -| ir.cpp:679:6:679:18 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:679:6:679:18 | IR: TakeReference | int& TakeReference() | -| ir.cpp:704:3:704:3 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:704:3:704:3 | IR: min | int min(int, int) | -| ir.cpp:708:5:708:11 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:708:5:708:11 | IR: CallMin | int CallMin(int, int) | -| ir.cpp:715:12:715:12 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:715:12:715:12 | IR: Func | long Outer::Func(void*, char) | -| ir.cpp:720:8:720:29 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:720:8:720:29 | IR: CallNestedTemplateFunc | double CallNestedTemplateFunc() | -| ir.cpp:745:8:745:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:745:8:745:8 | IR: operator= | Base& Base::operator=(Base const&) | -| ir.cpp:754:8:754:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:754:8:754:8 | IR: operator= | Middle& Middle::operator=(Middle const&) | -| ir.cpp:763:8:763:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:763:8:763:8 | IR: operator= | Derived& Derived::operator=(Derived const&) | -| ir.cpp:961:5:961:18 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:961:5:961:18 | IR: designatedInit | int designatedInit() | -| ir.cpp:987:5:987:16 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:987:5:987:16 | IR: PointerDecay | int PointerDecay(int[], int(float)) | -| ir.cpp:991:5:991:12 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:991:5:991:12 | IR: ExprStmt | int ExprStmt(int, int, int) | -| ir.cpp:1029:14:1029:14 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1029:14:1029:14 | IR: operator void (*)() | void(* (lambda [] type at line 1029, col. 12)::operator void (*)()() const)() | -| ir.cpp:1032:25:1032:25 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1032:25:1032:25 | IR: operator char (*)(float) | char(* (void Lambda(int, String const&))::(lambda [] type at line 1032, col. 23)::operator char (*)(float)() const)(float) | -| ir.cpp:1032:25:1032:25 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1032:25:1032:25 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1032, col. 23)::operator()(float) const | -| ir.cpp:1034:24:1034:24 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1034:24:1034:24 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1034, col. 21)::operator()(float) const | -| ir.cpp:1036:24:1036:24 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1036:24:1036:24 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1036, col. 21)::operator()(float) const | -| ir.cpp:1038:34:1038:34 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1038:34:1038:34 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1038, col. 30)::operator()(float) const | -| ir.cpp:1040:33:1040:33 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1040:33:1040:33 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1040, col. 30)::operator()(float) const | -| ir.cpp:1042:39:1042:39 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1042:39:1042:39 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1042, col. 32)::operator()(float) const | -| ir.cpp:1045:49:1045:49 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1045:49:1045:49 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1045, col. 23)::operator()(float) const | -| ir.cpp:1099:5:1099:11 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1099:5:1099:11 | IR: AsmStmt | int AsmStmt(int) | -| ir.cpp:1163:5:1163:21 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1163:5:1163:21 | IR: ModeledCallTarget | int ModeledCallTarget(int) | -| perf-regression.cpp:9:5:9:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | perf-regression.cpp:9:5:9:8 | IR: main | int main() | missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_sanity.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_sanity.expected index a79515761f3..928f535f9d8 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_sanity.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_sanity.expected @@ -1,153 +1,10 @@ missingOperand -| clang.cpp:5:6:5:21 | ReturnValue: globalIntAddress | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | clang.cpp:5:6:5:21 | IR: globalIntAddress | int* globalIntAddress() | -| ir.cpp:235:5:235:14 | ReturnValue: Parameters | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:235:5:235:14 | IR: Parameters | int Parameters(int, int) | -| ir.cpp:341:5:341:15 | ReturnValue: Dereference | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:341:5:341:15 | IR: Dereference | int Dereference(int*) | -| ir.cpp:348:6:348:14 | ReturnValue: AddressOf | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:348:6:348:14 | IR: AddressOf | int* AddressOf() | -| ir.cpp:376:5:376:11 | ReturnValue: CallAdd | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:376:5:376:11 | IR: CallAdd | int CallAdd(int, int) | -| ir.cpp:380:5:380:9 | ReturnValue: Comma | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:380:5:380:9 | IR: Comma | int Comma(int, int) | -| ir.cpp:422:7:422:18 | ReturnValue: ReturnStruct | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:422:7:422:18 | IR: ReturnStruct | Point ReturnStruct(Point) | -| ir.cpp:543:5:543:20 | ReturnValue: EarlyReturnValue | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:543:5:543:20 | IR: EarlyReturnValue | int EarlyReturnValue(int, int) | -| ir.cpp:551:5:551:18 | ReturnValue: CallViaFuncPtr | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:551:5:551:18 | IR: CallViaFuncPtr | int CallViaFuncPtr(int(*)(int)) | -| ir.cpp:560:5:560:14 | ReturnValue: EnumSwitch | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:560:5:560:14 | IR: EnumSwitch | int EnumSwitch(E) | -| ir.cpp:630:16:630:35 | ReturnValue: StaticMemberFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:630:16:630:35 | IR: StaticMemberFunction | int C::StaticMemberFunction(int) | -| ir.cpp:634:9:634:30 | ReturnValue: InstanceMemberFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:634:9:634:30 | IR: InstanceMemberFunction | int C::InstanceMemberFunction(int) | -| ir.cpp:638:17:638:37 | ReturnValue: VirtualMemberFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:638:17:638:37 | IR: VirtualMemberFunction | int C::VirtualMemberFunction(int) | -| ir.cpp:675:5:675:18 | ReturnValue: DerefReference | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:675:5:675:18 | IR: DerefReference | int DerefReference(int&) | -| ir.cpp:679:6:679:18 | ReturnValue: TakeReference | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:679:6:679:18 | IR: TakeReference | int& TakeReference() | -| ir.cpp:704:3:704:3 | ReturnValue: min | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:704:3:704:3 | IR: min | int min(int, int) | -| ir.cpp:708:5:708:11 | ReturnValue: CallMin | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:708:5:708:11 | IR: CallMin | int CallMin(int, int) | -| ir.cpp:715:12:715:12 | ReturnValue: Func | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:715:12:715:12 | IR: Func | long Outer::Func(void*, char) | -| ir.cpp:720:8:720:29 | ReturnValue: CallNestedTemplateFunc | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:720:8:720:29 | IR: CallNestedTemplateFunc | double CallNestedTemplateFunc() | -| ir.cpp:745:8:745:8 | ReturnValue: operator= | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:745:8:745:8 | IR: operator= | Base& Base::operator=(Base const&) | -| ir.cpp:754:8:754:8 | ReturnValue: operator= | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:754:8:754:8 | IR: operator= | Middle& Middle::operator=(Middle const&) | -| ir.cpp:763:8:763:8 | ReturnValue: operator= | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:763:8:763:8 | IR: operator= | Derived& Derived::operator=(Derived const&) | -| ir.cpp:961:5:961:18 | ReturnValue: designatedInit | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:961:5:961:18 | IR: designatedInit | int designatedInit() | -| ir.cpp:987:5:987:16 | ReturnValue: PointerDecay | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:987:5:987:16 | IR: PointerDecay | int PointerDecay(int[], int(float)) | -| ir.cpp:991:5:991:12 | ReturnValue: ExprStmt | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:991:5:991:12 | IR: ExprStmt | int ExprStmt(int, int, int) | -| ir.cpp:1029:14:1029:14 | ReturnValue: operator void (*)() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1029:14:1029:14 | IR: operator void (*)() | void(* (lambda [] type at line 1029, col. 12)::operator void (*)()() const)() | -| ir.cpp:1032:25:1032:25 | ReturnValue: operator char (*)(float) | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1032:25:1032:25 | IR: operator char (*)(float) | char(* (void Lambda(int, String const&))::(lambda [] type at line 1032, col. 23)::operator char (*)(float)() const)(float) | -| ir.cpp:1032:25:1032:25 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1032:25:1032:25 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1032, col. 23)::operator()(float) const | -| ir.cpp:1034:24:1034:24 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1034:24:1034:24 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1034, col. 21)::operator()(float) const | -| ir.cpp:1036:24:1036:24 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1036:24:1036:24 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1036, col. 21)::operator()(float) const | -| ir.cpp:1038:34:1038:34 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1038:34:1038:34 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1038, col. 30)::operator()(float) const | -| ir.cpp:1040:33:1040:33 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1040:33:1040:33 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1040, col. 30)::operator()(float) const | -| ir.cpp:1042:39:1042:39 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1042:39:1042:39 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1042, col. 32)::operator()(float) const | -| ir.cpp:1045:49:1045:49 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1045:49:1045:49 | IR: operator() | char (void Lambda(int, String const&))::(lambda [] type at line 1045, col. 23)::operator()(float) const | -| ir.cpp:1099:5:1099:11 | ReturnValue: AsmStmt | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1099:5:1099:11 | IR: AsmStmt | int AsmStmt(int) | -| ir.cpp:1163:5:1163:21 | ReturnValue: ModeledCallTarget | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:1163:5:1163:21 | IR: ModeledCallTarget | int ModeledCallTarget(int) | -| perf-regression.cpp:9:5:9:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | perf-regression.cpp:9:5:9:8 | IR: main | int main() | unexpectedOperand duplicateOperand missingPhiOperand missingOperandType sideEffectWithoutPrimary instructionWithoutSuccessor -| bad_asts.cpp:17:3:17:3 | NoOp: return ... | -| bad_asts.cpp:23:5:23:5 | NoOp: return ... | -| bad_asts.cpp:26:41:26:41 | ReturnIndirection: a | -| bad_asts.cpp:34:3:34:3 | NoOp: return ... | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| ir.cpp:41:1:41:1 | NoOp: return ... | -| ir.cpp:48:1:48:1 | NoOp: return ... | -| ir.cpp:85:1:85:1 | NoOp: return ... | -| ir.cpp:96:1:96:1 | NoOp: return ... | -| ir.cpp:105:1:105:1 | NoOp: return ... | -| ir.cpp:112:1:112:1 | NoOp: return ... | -| ir.cpp:131:1:131:1 | NoOp: return ... | -| ir.cpp:142:1:142:1 | NoOp: return ... | -| ir.cpp:151:1:151:1 | NoOp: return ... | -| ir.cpp:153:22:153:22 | ReturnIndirection: p | -| ir.cpp:171:23:171:23 | ReturnIndirection: p | -| ir.cpp:191:1:191:1 | NoOp: return ... | -| ir.cpp:193:34:193:34 | ReturnIndirection: q | -| ir.cpp:204:26:204:26 | ReturnIndirection: p | -| ir.cpp:228:1:228:1 | NoOp: return ... | -| ir.cpp:233:1:233:1 | NoOp: return ... | -| ir.cpp:251:1:251:1 | NoOp: return ... | -| ir.cpp:257:1:257:1 | NoOp: return ... | -| ir.cpp:263:1:263:1 | NoOp: return ... | -| ir.cpp:283:1:283:1 | NoOp: return ... | -| ir.cpp:296:1:296:1 | NoOp: return ... | -| ir.cpp:309:1:309:1 | NoOp: return ... | -| ir.cpp:315:1:315:1 | NoOp: return ... | -| ir.cpp:323:1:323:1 | NoOp: return ... | -| ir.cpp:331:1:331:1 | NoOp: return ... | -| ir.cpp:339:1:339:1 | NoOp: return ... | -| ir.cpp:358:1:358:1 | NoOp: return ... | -| ir.cpp:367:1:367:1 | NoOp: return ... | -| ir.cpp:374:1:374:1 | NoOp: return ... | -| ir.cpp:410:1:410:1 | NoOp: return ... | -| ir.cpp:431:1:431:1 | NoOp: return ... | -| ir.cpp:445:1:445:1 | NoOp: return ... | -| ir.cpp:459:1:459:1 | NoOp: return ... | -| ir.cpp:473:1:473:1 | NoOp: return ... | -| ir.cpp:480:1:480:1 | NoOp: return ... | -| ir.cpp:484:1:484:1 | NoOp: return ... | -| ir.cpp:490:1:490:1 | NoOp: return ... | -| ir.cpp:494:1:494:1 | NoOp: return ... | -| ir.cpp:501:1:501:1 | NoOp: return ... | -| ir.cpp:510:1:510:1 | NoOp: return ... | -| ir.cpp:517:1:517:1 | NoOp: return ... | -| ir.cpp:523:1:523:1 | NoOp: return ... | -| ir.cpp:533:1:533:1 | NoOp: return ... | -| ir.cpp:537:9:537:15 | NoOp: return ... | -| ir.cpp:541:1:541:1 | NoOp: return ... | -| ir.cpp:580:1:580:1 | NoOp: return ... | -| ir.cpp:586:1:586:1 | NoOp: return ... | -| ir.cpp:595:1:595:1 | NoOp: return ... | -| ir.cpp:620:1:620:1 | NoOp: return ... | -| ir.cpp:622:37:622:37 | ReturnIndirection: p | -| ir.cpp:650:5:650:5 | NoOp: return ... | -| ir.cpp:656:5:656:5 | NoOp: return ... | -| ir.cpp:664:5:664:5 | NoOp: return ... | -| ir.cpp:689:1:689:1 | NoOp: return ... | -| ir.cpp:695:1:695:1 | NoOp: return ... | -| ir.cpp:701:1:701:1 | NoOp: return ... | -| ir.cpp:743:1:743:1 | NoOp: return ... | -| ir.cpp:749:3:749:3 | NoOp: return ... | -| ir.cpp:751:3:751:3 | CallSideEffect: call to ~String | -| ir.cpp:758:3:758:3 | NoOp: return ... | -| ir.cpp:760:3:760:3 | CallSideEffect: call to ~Base | -| ir.cpp:767:3:767:3 | NoOp: return ... | -| ir.cpp:769:3:769:3 | CallSideEffect: call to ~Middle | -| ir.cpp:776:3:776:3 | NoOp: return ... | -| ir.cpp:778:3:778:3 | CallSideEffect: call to ~Base | -| ir.cpp:785:3:785:3 | NoOp: return ... | -| ir.cpp:787:3:787:3 | CallSideEffect: call to ~Base | -| ir.cpp:794:3:794:3 | NoOp: return ... | -| ir.cpp:796:3:796:3 | CallSideEffect: call to ~Base | -| ir.cpp:840:1:840:1 | NoOp: return ... | -| ir.cpp:842:8:842:8 | NoOp: return ... | -| ir.cpp:846:8:846:8 | CallSideEffect: call to ~PolymorphicBase | -| ir.cpp:846:8:846:8 | NoOp: return ... | -| ir.cpp:865:1:865:1 | NoOp: return ... | -| ir.cpp:869:1:869:1 | NoOp: return ... | -| ir.cpp:881:1:881:1 | NoOp: return ... | -| ir.cpp:883:47:883:47 | ReturnIndirection: p | -| ir.cpp:898:1:898:1 | NoOp: return ... | -| ir.cpp:902:1:902:1 | NoOp: return ... | -| ir.cpp:907:1:907:1 | NoOp: return ... | -| ir.cpp:948:1:948:1 | NoOp: return ... | -| ir.cpp:959:1:959:1 | NoOp: return ... | -| ir.cpp:976:1:976:1 | NoOp: return ... | -| ir.cpp:985:1:985:1 | NoOp: return ... | -| ir.cpp:1012:1:1012:1 | NoOp: return ... | -| ir.cpp:1021:1:1021:1 | NoOp: return ... | -| ir.cpp:1027:1:1027:1 | NoOp: return ... | -| ir.cpp:1029:18:1029:18 | NoOp: return ... | -| ir.cpp:1031:34:1031:34 | ReturnIndirection: s | -| ir.cpp:1036:21:1036:21 | CallSideEffect: call to ~String | -| ir.cpp:1040:30:1040:30 | CallSideEffect: call to ~String | -| ir.cpp:1068:39:1068:39 | ReturnIndirection: v | -| ir.cpp:1104:79:1104:79 | ReturnIndirection: c | -| ir.cpp:1120:1:1120:1 | NoOp: return ... | -| ir.cpp:1131:1:1131:1 | NoOp: return ... | -| ir.cpp:1149:1:1149:1 | NoOp: return ... | -| ir.cpp:1159:1:1159:1 | NoOp: return ... | -| perf-regression.cpp:6:21:6:21 | NoOp: return ... | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_ir.expected b/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_ir.expected index 5c326418fd2..50542e52824 100644 --- a/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_ir.expected +++ b/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_ir.expected @@ -85,9 +85,10 @@ ssa.cpp: # 28| r6_10(int) = Add : r6_5, r6_9 # 28| m6_11(int) = Store : &:r6_1, r6_10 # 13| v6_12(void) = ReturnIndirection : &:r0_5, ~m6_0 -# 13| v6_13(void) = ReturnValue : ~m6_0 -# 13| v6_14(void) = UnmodeledUse : mu* -# 13| v6_15(void) = ExitFunction : +# 13| r6_13(glval) = VariableAddress[#return] : +# 13| v6_14(void) = ReturnValue : &:r6_13, m6_11 +# 13| v6_15(void) = UnmodeledUse : mu* +# 13| v6_16(void) = ExitFunction : # 31| int UnreachableViaGoto() # 31| Block 0 @@ -99,9 +100,10 @@ ssa.cpp: # 35| r0_5(glval) = VariableAddress[#return] : # 35| r0_6(int) = Constant[0] : # 35| m0_7(int) = Store : &:r0_5, r0_6 -# 31| v0_8(void) = ReturnValue : ~m0_1 -# 31| v0_9(void) = UnmodeledUse : mu* -# 31| v0_10(void) = ExitFunction : +# 31| r0_8(glval) = VariableAddress[#return] : +# 31| v0_9(void) = ReturnValue : &:r0_8, m0_7 +# 31| v0_10(void) = UnmodeledUse : mu* +# 31| v0_11(void) = ExitFunction : # 38| int UnreachableIf(bool) # 38| Block 0 @@ -123,9 +125,11 @@ ssa.cpp: #-----| True -> Block 2 # 38| Block 1 -# 38| v1_0(void) = ReturnValue : ~m0_1 -# 38| v1_1(void) = UnmodeledUse : mu* -# 38| v1_2(void) = ExitFunction : +# 38| m1_0(int) = Phi : from 3:m3_2, from 5:m5_2 +# 38| r1_1(glval) = VariableAddress[#return] : +# 38| v1_2(void) = ReturnValue : &:r1_1, m1_0 +# 38| v1_3(void) = UnmodeledUse : mu* +# 38| v1_4(void) = ExitFunction : # 42| Block 2 # 42| r2_0(glval) = VariableAddress[x] : @@ -185,9 +189,10 @@ ssa.cpp: # 65| r1_1(glval) = VariableAddress[i] : # 65| r1_2(int) = Load : &:r1_1, m0_10 # 65| m1_3(int) = Store : &:r1_0, r1_2 -# 59| v1_4(void) = ReturnValue : ~m0_1 -# 59| v1_5(void) = UnmodeledUse : mu* -# 59| v1_6(void) = ExitFunction : +# 59| r1_4(glval) = VariableAddress[#return] : +# 59| v1_5(void) = ReturnValue : &:r1_4, m1_3 +# 59| v1_6(void) = UnmodeledUse : mu* +# 59| v1_7(void) = ExitFunction : # 59| Block 2 # 59| v2_0(void) = Unreached : @@ -220,6 +225,9 @@ ssa.cpp: # 71| Block 2 # 71| v2_0(void) = NoOp : # 68| v2_1(void) = ReturnIndirection : &:r0_7, ~m3_0 +# 68| v2_2(void) = ReturnVoid : +# 68| v2_3(void) = UnmodeledUse : mu* +# 68| v2_4(void) = ExitFunction : # 69| Block 3 # 69| m3_0(unknown) = Phi : from 0:~m0_9, from 1:~m1_7 @@ -289,6 +297,9 @@ ssa.cpp: # 88| r3_12(int) = Load : &:r3_11, m0_13 # 88| m3_13(int) = Store : &:r3_10, r3_12 # 89| v3_14(void) = NoOp : +# 75| v3_15(void) = ReturnVoid : +# 75| v3_16(void) = UnmodeledUse : mu* +# 75| v3_17(void) = ExitFunction : # 91| void MustExactlyOverlap(Point) # 91| Block 0 @@ -302,6 +313,9 @@ ssa.cpp: # 92| r0_7(Point) = Load : &:r0_6, m0_4 # 92| m0_8(Point) = Store : &:r0_5, r0_7 # 93| v0_9(void) = NoOp : +# 91| v0_10(void) = ReturnVoid : +# 91| v0_11(void) = UnmodeledUse : mu* +# 91| v0_12(void) = ExitFunction : # 95| void MustExactlyOverlapEscaped(Point) # 95| Block 0 @@ -325,6 +339,9 @@ ssa.cpp: # 97| m0_17(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_12 # 97| m0_18(unknown) = Chi : total:m0_15, partial:m0_17 # 98| v0_19(void) = NoOp : +# 95| v0_20(void) = ReturnVoid : +# 95| v0_21(void) = UnmodeledUse : mu* +# 95| v0_22(void) = ExitFunction : # 100| void MustTotallyOverlap(Point) # 100| Block 0 @@ -344,6 +361,9 @@ ssa.cpp: # 102| r0_13(int) = Load : &:r0_12, ~m0_4 # 102| m0_14(int) = Store : &:r0_10, r0_13 # 103| v0_15(void) = NoOp : +# 100| v0_16(void) = ReturnVoid : +# 100| v0_17(void) = UnmodeledUse : mu* +# 100| v0_18(void) = ExitFunction : # 105| void MustTotallyOverlapEscaped(Point) # 105| Block 0 @@ -373,6 +393,9 @@ ssa.cpp: # 108| m0_23(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_18 # 108| m0_24(unknown) = Chi : total:m0_21, partial:m0_23 # 109| v0_25(void) = NoOp : +# 105| v0_26(void) = ReturnVoid : +# 105| v0_27(void) = UnmodeledUse : mu* +# 105| v0_28(void) = ExitFunction : # 111| void MayPartiallyOverlap(int, int) # 111| Block 0 @@ -400,6 +423,9 @@ ssa.cpp: # 113| r0_21(Point) = Load : &:r0_20, ~m0_18 # 113| m0_22(Point) = Store : &:r0_19, r0_21 # 114| v0_23(void) = NoOp : +# 111| v0_24(void) = ReturnVoid : +# 111| v0_25(void) = UnmodeledUse : mu* +# 111| v0_26(void) = ExitFunction : # 116| void MayPartiallyOverlapEscaped(int, int) # 116| Block 0 @@ -437,6 +463,9 @@ ssa.cpp: # 119| m0_31(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_26 # 119| m0_32(unknown) = Chi : total:m0_29, partial:m0_31 # 120| v0_33(void) = NoOp : +# 116| v0_34(void) = ReturnVoid : +# 116| v0_35(void) = UnmodeledUse : mu* +# 116| v0_36(void) = ExitFunction : # 122| void MergeMustExactlyOverlap(bool, int, int) # 122| Block 0 @@ -496,6 +525,9 @@ ssa.cpp: # 131| r3_9(Point) = Load : &:r3_8, m3_0 # 131| m3_10(Point) = Store : &:r3_7, r3_9 # 132| v3_11(void) = NoOp : +# 122| v3_12(void) = ReturnVoid : +# 122| v3_13(void) = UnmodeledUse : mu* +# 122| v3_14(void) = ExitFunction : # 134| void MergeMustExactlyWithMustTotallyOverlap(bool, Point, int) # 134| Block 0 @@ -549,6 +581,9 @@ ssa.cpp: # 142| r3_5(int) = Load : &:r3_4, m3_1 # 142| m3_6(int) = Store : &:r3_2, r3_5 # 143| v3_7(void) = NoOp : +# 134| v3_8(void) = ReturnVoid : +# 134| v3_9(void) = UnmodeledUse : mu* +# 134| v3_10(void) = ExitFunction : # 145| void MergeMustExactlyWithMayPartiallyOverlap(bool, Point, int) # 145| Block 0 @@ -600,6 +635,9 @@ ssa.cpp: # 153| r3_3(Point) = Load : &:r3_2, m3_0 # 153| m3_4(Point) = Store : &:r3_1, r3_3 # 154| v3_5(void) = NoOp : +# 145| v3_6(void) = ReturnVoid : +# 145| v3_7(void) = UnmodeledUse : mu* +# 145| v3_8(void) = ExitFunction : # 156| void MergeMustTotallyOverlapWithMayPartiallyOverlap(bool, Rect, int) # 156| Block 0 @@ -653,6 +691,9 @@ ssa.cpp: # 164| r3_4(Point) = Load : &:r3_3, ~m3_0 # 164| m3_5(Point) = Store : &:r3_1, r3_4 # 165| v3_6(void) = NoOp : +# 156| v3_7(void) = ReturnVoid : +# 156| v3_8(void) = UnmodeledUse : mu* +# 156| v3_9(void) = ExitFunction : # 171| void WrapperStruct(Wrapper) # 171| Block 0 @@ -684,6 +725,9 @@ ssa.cpp: # 176| r0_25(glval) = VariableAddress[x] : # 176| m0_26(Wrapper) = Store : &:r0_25, r0_24 # 177| v0_27(void) = NoOp : +# 171| v0_28(void) = ReturnVoid : +# 171| v0_29(void) = UnmodeledUse : mu* +# 171| v0_30(void) = ExitFunction : # 179| int AsmStmt(int*) # 179| Block 0 @@ -703,9 +747,10 @@ ssa.cpp: # 181| r0_13(int) = Load : &:r0_12, ~m0_9 # 181| m0_14(int) = Store : &:r0_10, r0_13 # 179| v0_15(void) = ReturnIndirection : &:r0_5, ~m0_9 -# 179| v0_16(void) = ReturnValue : ~m0_9 -# 179| v0_17(void) = UnmodeledUse : mu* -# 179| v0_18(void) = ExitFunction : +# 179| r0_16(glval) = VariableAddress[#return] : +# 179| v0_17(void) = ReturnValue : &:r0_16, m0_14 +# 179| v0_18(void) = UnmodeledUse : mu* +# 179| v0_19(void) = ExitFunction : # 184| void AsmStmtWithOutputs(unsigned int&, unsigned int&, unsigned int&, unsigned int&) # 184| Block 0 @@ -749,6 +794,9 @@ ssa.cpp: # 184| v0_37(void) = ReturnIndirection : &:r0_10, ~m0_34 # 184| v0_38(void) = ReturnIndirection : &:r0_15, ~m0_34 # 184| v0_39(void) = ReturnIndirection : &:r0_20, ~m0_34 +# 184| v0_40(void) = ReturnVoid : +# 184| v0_41(void) = UnmodeledUse : mu* +# 184| v0_42(void) = ExitFunction : # 198| int PureFunctions(char*, char*, int) # 198| Block 0 @@ -802,9 +850,10 @@ ssa.cpp: # 202| m0_47(int) = Store : &:r0_44, r0_46 # 198| v0_48(void) = ReturnIndirection : &:r0_5, ~m0_12 # 198| v0_49(void) = ReturnIndirection : &:r0_10, ~m0_12 -# 198| v0_50(void) = ReturnValue : ~m0_12 -# 198| v0_51(void) = UnmodeledUse : mu* -# 198| v0_52(void) = ExitFunction : +# 198| r0_50(glval) = VariableAddress[#return] : +# 198| v0_51(void) = ReturnValue : &:r0_50, m0_47 +# 198| v0_52(void) = UnmodeledUse : mu* +# 198| v0_53(void) = ExitFunction : # 207| int ModeledCallTarget(int) # 207| Block 0 @@ -831,6 +880,7 @@ ssa.cpp: # 210| r0_20(glval) = VariableAddress[y] : # 210| r0_21(int) = Load : &:r0_20, ~m0_18 # 210| m0_22(int) = Store : &:r0_19, r0_21 -# 207| v0_23(void) = ReturnValue : ~m0_18 -# 207| v0_24(void) = UnmodeledUse : mu* -# 207| v0_25(void) = ExitFunction : +# 207| r0_23(glval) = VariableAddress[#return] : +# 207| v0_24(void) = ReturnValue : &:r0_23, m0_22 +# 207| v0_25(void) = UnmodeledUse : mu* +# 207| v0_26(void) = ExitFunction : diff --git a/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_sanity.expected b/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_sanity.expected index b0974a52cf5..928f535f9d8 100644 --- a/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_sanity.expected +++ b/cpp/ql/test/library-tests/ir/ssa/aliased_ssa_sanity.expected @@ -1,31 +1,10 @@ missingOperand -| ssa.cpp:13:5:13:14 | ReturnValue: ChiPhiNode | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ssa.cpp:13:5:13:14 | IR: ChiPhiNode | int ChiPhiNode(Point*, bool, bool) | -| ssa.cpp:31:5:31:22 | ReturnValue: UnreachableViaGoto | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ssa.cpp:31:5:31:22 | IR: UnreachableViaGoto | int UnreachableViaGoto() | -| ssa.cpp:38:5:38:17 | ReturnValue: UnreachableIf | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ssa.cpp:38:5:38:17 | IR: UnreachableIf | int UnreachableIf(bool) | -| ssa.cpp:59:5:59:16 | ReturnValue: DoWhileFalse | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ssa.cpp:59:5:59:16 | IR: DoWhileFalse | int DoWhileFalse() | -| ssa.cpp:179:5:179:11 | ReturnValue: AsmStmt | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ssa.cpp:179:5:179:11 | IR: AsmStmt | int AsmStmt(int*) | -| ssa.cpp:198:5:198:17 | ReturnValue: PureFunctions | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ssa.cpp:198:5:198:17 | IR: PureFunctions | int PureFunctions(char*, char*, int) | -| ssa.cpp:207:5:207:21 | ReturnValue: ModeledCallTarget | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ssa.cpp:207:5:207:21 | IR: ModeledCallTarget | int ModeledCallTarget(int) | unexpectedOperand duplicateOperand missingPhiOperand missingOperandType sideEffectWithoutPrimary instructionWithoutSuccessor -| ssa.cpp:68:38:68:38 | ReturnIndirection: p | -| ssa.cpp:89:1:89:1 | NoOp: return ... | -| ssa.cpp:93:1:93:1 | NoOp: return ... | -| ssa.cpp:98:1:98:1 | NoOp: return ... | -| ssa.cpp:103:1:103:1 | NoOp: return ... | -| ssa.cpp:109:1:109:1 | NoOp: return ... | -| ssa.cpp:114:1:114:1 | NoOp: return ... | -| ssa.cpp:120:1:120:1 | NoOp: return ... | -| ssa.cpp:132:1:132:1 | NoOp: return ... | -| ssa.cpp:143:1:143:1 | NoOp: return ... | -| ssa.cpp:154:1:154:1 | NoOp: return ... | -| ssa.cpp:165:1:165:1 | NoOp: return ... | -| ssa.cpp:177:1:177:1 | NoOp: return ... | -| ssa.cpp:184:97:184:97 | ReturnIndirection: d | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_ir.expected b/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_ir.expected index fa8e920eb63..46845bdeca4 100644 --- a/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_ir.expected +++ b/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_ir.expected @@ -78,9 +78,10 @@ ssa.cpp: # 28| r6_9(int) = Add : r6_4, r6_8 # 28| m6_10(int) = Store : &:r6_0, r6_9 # 13| v6_11(void) = ReturnIndirection : &:r0_5, ~mu0_2 -# 13| v6_12(void) = ReturnValue : m6_10 -# 13| v6_13(void) = UnmodeledUse : mu* -# 13| v6_14(void) = ExitFunction : +# 13| r6_12(glval) = VariableAddress[#return] : +# 13| v6_13(void) = ReturnValue : &:r6_12, m6_10 +# 13| v6_14(void) = UnmodeledUse : mu* +# 13| v6_15(void) = ExitFunction : # 31| int UnreachableViaGoto() # 31| Block 0 @@ -92,9 +93,10 @@ ssa.cpp: # 35| r0_5(glval) = VariableAddress[#return] : # 35| r0_6(int) = Constant[0] : # 35| m0_7(int) = Store : &:r0_5, r0_6 -# 31| v0_8(void) = ReturnValue : m0_7 -# 31| v0_9(void) = UnmodeledUse : mu* -# 31| v0_10(void) = ExitFunction : +# 31| r0_8(glval) = VariableAddress[#return] : +# 31| v0_9(void) = ReturnValue : &:r0_8, m0_7 +# 31| v0_10(void) = UnmodeledUse : mu* +# 31| v0_11(void) = ExitFunction : # 38| int UnreachableIf(bool) # 38| Block 0 @@ -116,10 +118,11 @@ ssa.cpp: #-----| True -> Block 2 # 38| Block 1 -# 38| m1_0(int) = Phi : from 3:m3_2, from 4:m4_2, from 6:m6_2, from 7:m7_2 -# 38| v1_1(void) = ReturnValue : m1_0 -# 38| v1_2(void) = UnmodeledUse : mu* -# 38| v1_3(void) = ExitFunction : +# 38| m1_0(int) = Phi : from 3:m3_2, from 4:m4_2, from 6:m6_2, from 7:m7_2 +# 38| r1_1(glval) = VariableAddress[#return] : +# 38| v1_2(void) = ReturnValue : &:r1_1, m1_0 +# 38| v1_3(void) = UnmodeledUse : mu* +# 38| v1_4(void) = ExitFunction : # 42| Block 2 # 42| r2_0(glval) = VariableAddress[x] : @@ -188,9 +191,10 @@ ssa.cpp: # 65| r1_1(glval) = VariableAddress[i] : # 65| r1_2(int) = Load : &:r1_1, m0_10 # 65| m1_3(int) = Store : &:r1_0, r1_2 -# 59| v1_4(void) = ReturnValue : m1_3 -# 59| v1_5(void) = UnmodeledUse : mu* -# 59| v1_6(void) = ExitFunction : +# 59| r1_4(glval) = VariableAddress[#return] : +# 59| v1_5(void) = ReturnValue : &:r1_4, m1_3 +# 59| v1_6(void) = UnmodeledUse : mu* +# 59| v1_7(void) = ExitFunction : # 59| Block 2 # 59| v2_0(void) = Unreached : @@ -221,6 +225,9 @@ ssa.cpp: # 71| Block 2 # 71| v2_0(void) = NoOp : # 68| v2_1(void) = ReturnIndirection : &:r0_7, ~mu0_2 +# 68| v2_2(void) = ReturnVoid : +# 68| v2_3(void) = UnmodeledUse : mu* +# 68| v2_4(void) = ExitFunction : # 69| Block 3 # 69| m3_0(int) = Phi : from 0:m0_4, from 1:m3_6 @@ -289,6 +296,9 @@ ssa.cpp: # 88| r3_12(int) = Load : &:r3_11, m0_13 # 88| m3_13(int) = Store : &:r3_10, r3_12 # 89| v3_14(void) = NoOp : +# 75| v3_15(void) = ReturnVoid : +# 75| v3_16(void) = UnmodeledUse : mu* +# 75| v3_17(void) = ExitFunction : # 91| void MustExactlyOverlap(Point) # 91| Block 0 @@ -302,6 +312,9 @@ ssa.cpp: # 92| r0_7(Point) = Load : &:r0_6, m0_4 # 92| m0_8(Point) = Store : &:r0_5, r0_7 # 93| v0_9(void) = NoOp : +# 91| v0_10(void) = ReturnVoid : +# 91| v0_11(void) = UnmodeledUse : mu* +# 91| v0_12(void) = ExitFunction : # 95| void MustExactlyOverlapEscaped(Point) # 95| Block 0 @@ -322,6 +335,9 @@ ssa.cpp: # 97| v0_14(void) = ^IndirectReadSideEffect[0] : &:r0_11, ~mu0_2 # 97| mu0_15(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_11 # 98| v0_16(void) = NoOp : +# 95| v0_17(void) = ReturnVoid : +# 95| v0_18(void) = UnmodeledUse : mu* +# 95| v0_19(void) = ExitFunction : # 100| void MustTotallyOverlap(Point) # 100| Block 0 @@ -341,6 +357,9 @@ ssa.cpp: # 102| r0_13(int) = Load : &:r0_12, ~mu0_2 # 102| m0_14(int) = Store : &:r0_10, r0_13 # 103| v0_15(void) = NoOp : +# 100| v0_16(void) = ReturnVoid : +# 100| v0_17(void) = UnmodeledUse : mu* +# 100| v0_18(void) = ExitFunction : # 105| void MustTotallyOverlapEscaped(Point) # 105| Block 0 @@ -367,6 +386,9 @@ ssa.cpp: # 108| v0_20(void) = ^IndirectReadSideEffect[0] : &:r0_17, ~mu0_2 # 108| mu0_21(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_17 # 109| v0_22(void) = NoOp : +# 105| v0_23(void) = ReturnVoid : +# 105| v0_24(void) = UnmodeledUse : mu* +# 105| v0_25(void) = ExitFunction : # 111| void MayPartiallyOverlap(int, int) # 111| Block 0 @@ -392,6 +414,9 @@ ssa.cpp: # 113| r0_19(Point) = Load : &:r0_18, ~mu0_2 # 113| m0_20(Point) = Store : &:r0_17, r0_19 # 114| v0_21(void) = NoOp : +# 111| v0_22(void) = ReturnVoid : +# 111| v0_23(void) = UnmodeledUse : mu* +# 111| v0_24(void) = ExitFunction : # 116| void MayPartiallyOverlapEscaped(int, int) # 116| Block 0 @@ -424,6 +449,9 @@ ssa.cpp: # 119| v0_26(void) = ^IndirectReadSideEffect[0] : &:r0_23, ~mu0_2 # 119| mu0_27(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_23 # 120| v0_28(void) = NoOp : +# 116| v0_29(void) = ReturnVoid : +# 116| v0_30(void) = UnmodeledUse : mu* +# 116| v0_31(void) = ExitFunction : # 122| void MergeMustExactlyOverlap(bool, int, int) # 122| Block 0 @@ -477,6 +505,9 @@ ssa.cpp: # 131| r3_7(Point) = Load : &:r3_6, ~mu0_2 # 131| m3_8(Point) = Store : &:r3_5, r3_7 # 132| v3_9(void) = NoOp : +# 122| v3_10(void) = ReturnVoid : +# 122| v3_11(void) = UnmodeledUse : mu* +# 122| v3_12(void) = ExitFunction : # 134| void MergeMustExactlyWithMustTotallyOverlap(bool, Point, int) # 134| Block 0 @@ -525,6 +556,9 @@ ssa.cpp: # 142| r3_3(int) = Load : &:r3_2, ~mu0_2 # 142| m3_4(int) = Store : &:r3_0, r3_3 # 143| v3_5(void) = NoOp : +# 134| v3_6(void) = ReturnVoid : +# 134| v3_7(void) = UnmodeledUse : mu* +# 134| v3_8(void) = ExitFunction : # 145| void MergeMustExactlyWithMayPartiallyOverlap(bool, Point, int) # 145| Block 0 @@ -572,6 +606,9 @@ ssa.cpp: # 153| r3_2(Point) = Load : &:r3_1, ~mu0_2 # 153| m3_3(Point) = Store : &:r3_0, r3_2 # 154| v3_4(void) = NoOp : +# 145| v3_5(void) = ReturnVoid : +# 145| v3_6(void) = UnmodeledUse : mu* +# 145| v3_7(void) = ExitFunction : # 156| void MergeMustTotallyOverlapWithMayPartiallyOverlap(bool, Rect, int) # 156| Block 0 @@ -621,6 +658,9 @@ ssa.cpp: # 164| r3_3(Point) = Load : &:r3_2, ~mu0_2 # 164| m3_4(Point) = Store : &:r3_0, r3_3 # 165| v3_5(void) = NoOp : +# 156| v3_6(void) = ReturnVoid : +# 156| v3_7(void) = UnmodeledUse : mu* +# 156| v3_8(void) = ExitFunction : # 171| void WrapperStruct(Wrapper) # 171| Block 0 @@ -652,6 +692,9 @@ ssa.cpp: # 176| r0_25(glval) = VariableAddress[x] : # 176| m0_26(Wrapper) = Store : &:r0_25, r0_24 # 177| v0_27(void) = NoOp : +# 171| v0_28(void) = ReturnVoid : +# 171| v0_29(void) = UnmodeledUse : mu* +# 171| v0_30(void) = ExitFunction : # 179| int AsmStmt(int*) # 179| Block 0 @@ -669,9 +712,10 @@ ssa.cpp: # 181| r0_11(int) = Load : &:r0_10, ~mu0_2 # 181| m0_12(int) = Store : &:r0_8, r0_11 # 179| v0_13(void) = ReturnIndirection : &:r0_5, ~mu0_2 -# 179| v0_14(void) = ReturnValue : m0_12 -# 179| v0_15(void) = UnmodeledUse : mu* -# 179| v0_16(void) = ExitFunction : +# 179| r0_14(glval) = VariableAddress[#return] : +# 179| v0_15(void) = ReturnValue : &:r0_14, m0_12 +# 179| v0_16(void) = UnmodeledUse : mu* +# 179| v0_17(void) = ExitFunction : # 184| void AsmStmtWithOutputs(unsigned int&, unsigned int&, unsigned int&, unsigned int&) # 184| Block 0 @@ -710,6 +754,9 @@ ssa.cpp: # 184| v0_32(void) = ReturnIndirection : &:r0_9, ~mu0_2 # 184| v0_33(void) = ReturnIndirection : &:r0_13, ~mu0_2 # 184| v0_34(void) = ReturnIndirection : &:r0_17, ~mu0_2 +# 184| v0_35(void) = ReturnVoid : +# 184| v0_36(void) = UnmodeledUse : mu* +# 184| v0_37(void) = ExitFunction : # 198| int PureFunctions(char*, char*, int) # 198| Block 0 @@ -761,9 +808,10 @@ ssa.cpp: # 202| m0_45(int) = Store : &:r0_42, r0_44 # 198| v0_46(void) = ReturnIndirection : &:r0_5, ~mu0_2 # 198| v0_47(void) = ReturnIndirection : &:r0_9, ~mu0_2 -# 198| v0_48(void) = ReturnValue : m0_45 -# 198| v0_49(void) = UnmodeledUse : mu* -# 198| v0_50(void) = ExitFunction : +# 198| r0_48(glval) = VariableAddress[#return] : +# 198| v0_49(void) = ReturnValue : &:r0_48, m0_45 +# 198| v0_50(void) = UnmodeledUse : mu* +# 198| v0_51(void) = ExitFunction : # 207| int ModeledCallTarget(int) # 207| Block 0 @@ -787,6 +835,7 @@ ssa.cpp: # 210| r0_17(glval) = VariableAddress[y] : # 210| r0_18(int) = Load : &:r0_17, ~mu0_2 # 210| m0_19(int) = Store : &:r0_16, r0_18 -# 207| v0_20(void) = ReturnValue : m0_19 -# 207| v0_21(void) = UnmodeledUse : mu* -# 207| v0_22(void) = ExitFunction : +# 207| r0_20(glval) = VariableAddress[#return] : +# 207| v0_21(void) = ReturnValue : &:r0_20, m0_19 +# 207| v0_22(void) = UnmodeledUse : mu* +# 207| v0_23(void) = ExitFunction : diff --git a/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_sanity.expected b/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_sanity.expected index b0974a52cf5..928f535f9d8 100644 --- a/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_sanity.expected +++ b/cpp/ql/test/library-tests/ir/ssa/unaliased_ssa_sanity.expected @@ -1,31 +1,10 @@ missingOperand -| ssa.cpp:13:5:13:14 | ReturnValue: ChiPhiNode | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ssa.cpp:13:5:13:14 | IR: ChiPhiNode | int ChiPhiNode(Point*, bool, bool) | -| ssa.cpp:31:5:31:22 | ReturnValue: UnreachableViaGoto | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ssa.cpp:31:5:31:22 | IR: UnreachableViaGoto | int UnreachableViaGoto() | -| ssa.cpp:38:5:38:17 | ReturnValue: UnreachableIf | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ssa.cpp:38:5:38:17 | IR: UnreachableIf | int UnreachableIf(bool) | -| ssa.cpp:59:5:59:16 | ReturnValue: DoWhileFalse | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ssa.cpp:59:5:59:16 | IR: DoWhileFalse | int DoWhileFalse() | -| ssa.cpp:179:5:179:11 | ReturnValue: AsmStmt | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ssa.cpp:179:5:179:11 | IR: AsmStmt | int AsmStmt(int*) | -| ssa.cpp:198:5:198:17 | ReturnValue: PureFunctions | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ssa.cpp:198:5:198:17 | IR: PureFunctions | int PureFunctions(char*, char*, int) | -| ssa.cpp:207:5:207:21 | ReturnValue: ModeledCallTarget | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ssa.cpp:207:5:207:21 | IR: ModeledCallTarget | int ModeledCallTarget(int) | unexpectedOperand duplicateOperand missingPhiOperand missingOperandType sideEffectWithoutPrimary instructionWithoutSuccessor -| ssa.cpp:68:38:68:38 | ReturnIndirection: p | -| ssa.cpp:89:1:89:1 | NoOp: return ... | -| ssa.cpp:93:1:93:1 | NoOp: return ... | -| ssa.cpp:98:1:98:1 | NoOp: return ... | -| ssa.cpp:103:1:103:1 | NoOp: return ... | -| ssa.cpp:109:1:109:1 | NoOp: return ... | -| ssa.cpp:114:1:114:1 | NoOp: return ... | -| ssa.cpp:120:1:120:1 | NoOp: return ... | -| ssa.cpp:132:1:132:1 | NoOp: return ... | -| ssa.cpp:143:1:143:1 | NoOp: return ... | -| ssa.cpp:154:1:154:1 | NoOp: return ... | -| ssa.cpp:165:1:165:1 | NoOp: return ... | -| ssa.cpp:177:1:177:1 | NoOp: return ... | -| ssa.cpp:184:97:184:97 | ReturnIndirection: d | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_sanity.expected b/cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_sanity.expected index 84f619dec38..4d33a9c0d21 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_sanity.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/aliased_ssa_sanity.expected @@ -1,444 +1,33 @@ missingOperand -| FunctionTryStmt.cpp:1:5:1:7 | ReturnValue: foo | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | FunctionTryStmt.cpp:1:5:1:7 | IR: foo | int foo() | -| allocators.cpp:7:16:7:27 | ReturnValue: operator new | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | allocators.cpp:7:16:7:27 | IR: operator new | void* Foo::operator new(unsigned long, int, int) | -| allocators.cpp:14:5:14:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() | -| allocators.cpp:14:5:14:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() | -| allocators.cpp:14:5:14:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() | -| allocators.cpp:14:5:14:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() | -| builtin.c:5:5:5:11 | ReturnValue: builtin | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | builtin.c:5:5:5:11 | IR: builtin | int builtin(int, int) | -| builtin.cpp:4:4:4:4 | ReturnValue: addressof | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | builtin.cpp:4:4:4:4 | IR: addressof | int* addressof(int&) | -| condition_decls.cpp:8:3:8:14 | ReturnValue: operator int | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | condition_decls.cpp:8:3:8:14 | IR: operator int | int BoxedInt::operator int() | -| conditional_destructors.cpp:9:10:9:19 | ReturnValue: operator== | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | conditional_destructors.cpp:9:10:9:19 | IR: operator== | bool C1::operator==(C1 const&) const | -| conditional_destructors.cpp:24:10:24:19 | ReturnValue: operator== | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | conditional_destructors.cpp:24:10:24:19 | IR: operator== | bool C2::operator==(C2 const&) const | -| cpp11.cpp:27:7:27:14 | ReturnValue: getFirst | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | cpp11.cpp:27:7:27:14 | IR: getFirst | int range_based_for_11::getFirst() | -| cpp11.cpp:65:23:65:23 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | cpp11.cpp:65:23:65:23 | IR: operator() | int (void lambda::simple(int))::(lambda [] type at line 65, col. 20)::operator()() const | -| cpp11.cpp:106:7:106:9 | ReturnValue: ret | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | cpp11.cpp:106:7:106:9 | IR: ret | int synthetic_dtor_calls::ret() | -| cpp11.cpp:141:7:141:7 | ReturnValue: g | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | cpp11.cpp:141:7:141:7 | IR: g | int synthetic_dtor_calls::g(int) | -| destructors.cpp:6:5:6:20 | ReturnValue: destructors_main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | destructors.cpp:6:5:6:20 | IR: destructors_main | int destructors_main(HasDtor) | -| destructors.cpp:49:7:49:7 | ReturnValue: f | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | destructors.cpp:49:7:49:7 | IR: f | int cond_destruct::f(int) | -| ir.cpp:235:5:235:14 | ReturnValue: Parameters | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:235:5:235:14 | IR: Parameters | int Parameters(int, int) | -| ir.cpp:341:5:341:15 | ReturnValue: Dereference | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:341:5:341:15 | IR: Dereference | int Dereference(int*) | -| ir.cpp:348:6:348:14 | ReturnValue: AddressOf | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:348:6:348:14 | IR: AddressOf | int* AddressOf() | -| ir.cpp:376:5:376:11 | ReturnValue: CallAdd | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:376:5:376:11 | IR: CallAdd | int CallAdd(int, int) | -| ir.cpp:380:5:380:9 | ReturnValue: Comma | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:380:5:380:9 | IR: Comma | int Comma(int, int) | -| ir.cpp:422:7:422:18 | ReturnValue: ReturnStruct | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:422:7:422:18 | IR: ReturnStruct | Point ReturnStruct(Point) | -| ir.cpp:543:5:543:20 | ReturnValue: EarlyReturnValue | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:543:5:543:20 | IR: EarlyReturnValue | int EarlyReturnValue(int, int) | -| ir.cpp:551:5:551:18 | ReturnValue: CallViaFuncPtr | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:551:5:551:18 | IR: CallViaFuncPtr | int CallViaFuncPtr(int(*)(int)) | -| ir.cpp:560:5:560:14 | ReturnValue: EnumSwitch | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:560:5:560:14 | IR: EnumSwitch | int EnumSwitch(E) | -| ir.cpp:630:16:630:35 | ReturnValue: StaticMemberFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:630:16:630:35 | IR: StaticMemberFunction | int C::StaticMemberFunction(int) | -| ir.cpp:634:9:634:30 | ReturnValue: InstanceMemberFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:634:9:634:30 | IR: InstanceMemberFunction | int C::InstanceMemberFunction(int) | -| ir.cpp:638:17:638:37 | ReturnValue: VirtualMemberFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:638:17:638:37 | IR: VirtualMemberFunction | int C::VirtualMemberFunction(int) | -| ir.cpp:675:5:675:18 | ReturnValue: DerefReference | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:675:5:675:18 | IR: DerefReference | int DerefReference(int&) | -| ir.cpp:679:6:679:18 | ReturnValue: TakeReference | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:679:6:679:18 | IR: TakeReference | int& TakeReference() | -| ir.cpp:704:3:704:3 | ReturnValue: min | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:704:3:704:3 | IR: min | int min(int, int) | -| ir.cpp:708:5:708:11 | ReturnValue: CallMin | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:708:5:708:11 | IR: CallMin | int CallMin(int, int) | -| ir.cpp:715:12:715:12 | ReturnValue: Func | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:715:12:715:12 | IR: Func | long Outer::Func(void*, char) | -| ir.cpp:720:8:720:29 | ReturnValue: CallNestedTemplateFunc | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:720:8:720:29 | IR: CallNestedTemplateFunc | double CallNestedTemplateFunc() | -| ir.cpp:745:8:745:8 | ReturnValue: operator= | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:745:8:745:8 | IR: operator= | Base& Base::operator=(Base const&) | -| ir.cpp:754:8:754:8 | ReturnValue: operator= | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:754:8:754:8 | IR: operator= | Middle& Middle::operator=(Middle const&) | -| ir.cpp:763:8:763:8 | ReturnValue: operator= | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:763:8:763:8 | IR: operator= | Derived& Derived::operator=(Derived const&) | -| ir.cpp:961:5:961:18 | ReturnValue: designatedInit | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:961:5:961:18 | IR: designatedInit | int designatedInit() | | misc.c:125:5:125:11 | CopyValue: (statement expression) | Instruction 'CopyValue' is missing an expected operand with tag 'Unary' in function '$@'. | misc.c:97:6:97:10 | IR: misc3 | void misc3() | -| misc.c:187:5:187:9 | ReturnValue: freti | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | misc.c:187:5:187:9 | IR: freti | int freti(int) | -| misc.c:208:1:208:3 | ReturnValue: fmac | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | misc.c:208:1:208:3 | IR: fmac | int fmac() | -| misc.c:212:5:212:16 | ReturnValue: extern_local | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | misc.c:212:5:212:16 | IR: extern_local | int extern_local() | -| misc.c:227:7:227:28 | ReturnValue: builtin_addressof_test | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | misc.c:227:7:227:28 | IR: builtin_addressof_test | void* builtin_addressof_test() | -| ms_assume.cpp:11:5:11:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ms_assume.cpp:11:5:11:8 | IR: main | int main(int, char*[]) | -| no_dynamic_init.cpp:9:5:9:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() | -| no_dynamic_init.cpp:9:5:9:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() | -| no_dynamic_init.cpp:9:5:9:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() | -| no_dynamic_init.cpp:9:5:9:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() | -| parameterinitializer.cpp:18:5:18:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() | -| parameterinitializer.cpp:18:5:18:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() | -| parameterinitializer.cpp:18:5:18:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() | -| parameterinitializer.cpp:18:5:18:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() | | parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() | | parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() | | parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() | | parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() | -| pointer_to_member.cpp:14:5:14:9 | ReturnValue: usePM | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | pointer_to_member.cpp:14:5:14:9 | IR: usePM | int usePM(int PM::*) | -| range_analysis.c:5:5:5:9 | ReturnValue: test1 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:5:5:5:9 | IR: test1 | int test1(List*) | -| range_analysis.c:13:5:13:9 | ReturnValue: test2 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:13:5:13:9 | IR: test2 | int test2(List*) | -| range_analysis.c:21:5:21:9 | ReturnValue: test3 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:21:5:21:9 | IR: test3 | int test3(List*) | -| range_analysis.c:30:5:30:9 | ReturnValue: test4 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:30:5:30:9 | IR: test4 | int test4() | -| range_analysis.c:39:5:39:9 | ReturnValue: test5 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:39:5:39:9 | IR: test5 | int test5() | -| range_analysis.c:48:5:48:9 | ReturnValue: test6 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:48:5:48:9 | IR: test6 | int test6() | -| range_analysis.c:57:5:57:9 | ReturnValue: test7 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:57:5:57:9 | IR: test7 | int test7(int) | -| range_analysis.c:66:5:66:9 | ReturnValue: test8 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:66:5:66:9 | IR: test8 | int test8(int, int) | -| range_analysis.c:75:5:75:9 | ReturnValue: test9 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:75:5:75:9 | IR: test9 | int test9(int, int) | -| range_analysis.c:88:5:88:10 | ReturnValue: test10 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:88:5:88:10 | IR: test10 | int test10(int, int) | -| range_analysis.c:98:5:98:10 | ReturnValue: test11 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:98:5:98:10 | IR: test11 | int test11(char*) | -| range_analysis.c:117:11:117:23 | ReturnValue: test12_helper | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:117:11:117:23 | IR: test12_helper | size_type test12_helper() | -| range_analysis.c:122:5:122:10 | ReturnValue: test12 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:122:5:122:10 | IR: test12 | int test12() | -| range_analysis.c:134:5:134:10 | ReturnValue: test13 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:134:5:134:10 | IR: test13 | int test13(char, int) | -| range_analysis.c:143:5:143:10 | ReturnValue: test14 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:143:5:143:10 | IR: test14 | int test14(int) | -| range_analysis.c:153:11:153:16 | ReturnValue: test15 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:153:11:153:16 | IR: test15 | long long test15(long long) | -| range_analysis.c:158:5:158:14 | ReturnValue: test_unary | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:158:5:158:14 | IR: test_unary | int test_unary(int) | -| range_analysis.c:197:5:197:15 | ReturnValue: test_mult01 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:197:5:197:15 | IR: test_mult01 | int test_mult01(int, int) | -| range_analysis.c:225:5:225:15 | ReturnValue: test_mult02 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:225:5:225:15 | IR: test_mult02 | int test_mult02(int, int) | -| range_analysis.c:253:5:253:15 | ReturnValue: test_mult03 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:253:5:253:15 | IR: test_mult03 | int test_mult03(int, int) | -| range_analysis.c:281:5:281:15 | ReturnValue: test_mult04 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:281:5:281:15 | IR: test_mult04 | int test_mult04(int, int) | -| range_analysis.c:309:5:309:15 | ReturnValue: test_mult05 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:309:5:309:15 | IR: test_mult05 | int test_mult05(int, int) | -| range_analysis.c:336:5:336:10 | ReturnValue: test16 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:336:5:336:10 | IR: test16 | int test16(int) | -| range_analysis.c:355:14:355:27 | ReturnValue: test_ternary01 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:355:14:355:27 | IR: test_ternary01 | unsigned int test_ternary01(unsigned int) | -| range_analysis.c:377:14:377:27 | ReturnValue: test_ternary02 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:377:14:377:27 | IR: test_ternary02 | unsigned int test_ternary02(unsigned int) | -| range_analysis.c:393:14:393:25 | ReturnValue: test_comma01 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:393:14:393:25 | IR: test_comma01 | unsigned int test_comma01(unsigned int) | -| rethrow_error.cpp:8:5:8:5 | ReturnValue: fun2 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | rethrow_error.cpp:8:5:8:5 | IR: fun2 | int fun2() | -| returnstmt.c:7:5:7:14 | ReturnValue: return_int | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | returnstmt.c:7:5:7:14 | IR: return_int | int return_int() | -| static_init_templates.cpp:77:28:77:28 | ReturnValue: instantiatedTemplateFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:77:28:77:28 | IR: instantiatedTemplateFunction | void* instantiatedTemplateFunction() | -| static_init_templates.cpp:77:28:77:28 | ReturnValue: instantiatedTemplateFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:77:28:77:28 | IR: instantiatedTemplateFunction | void* instantiatedTemplateFunction() | -| static_init_templates.cpp:86:28:86:28 | ReturnValue: instantiatedTemplateFunction2 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:86:28:86:28 | IR: instantiatedTemplateFunction2 | void* instantiatedTemplateFunction2() | -| static_init_templates.cpp:86:28:86:28 | ReturnValue: instantiatedTemplateFunction2 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:86:28:86:28 | IR: instantiatedTemplateFunction2 | void* instantiatedTemplateFunction2() | -| static_init_templates.cpp:94:28:94:28 | ReturnValue: instantiatedTemplateFunction3 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:94:28:94:28 | IR: instantiatedTemplateFunction3 | void* instantiatedTemplateFunction3() | -| static_init_templates.cpp:94:28:94:28 | ReturnValue: instantiatedTemplateFunction3 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:94:28:94:28 | IR: instantiatedTemplateFunction3 | void* instantiatedTemplateFunction3() | -| static_init_templates.cpp:102:28:102:28 | ReturnValue: instantiatedTemplateFunction4 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:102:28:102:28 | IR: instantiatedTemplateFunction4 | void* instantiatedTemplateFunction4() | -| static_init_templates.cpp:102:28:102:28 | ReturnValue: instantiatedTemplateFunction4 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:102:28:102:28 | IR: instantiatedTemplateFunction4 | void* instantiatedTemplateFunction4() | -| static_init_templates.cpp:122:7:122:25 | ReturnValue: nonTemplateFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:122:7:122:25 | IR: nonTemplateFunction | void* nonTemplateFunction() | -| static_init_templates.cpp:130:7:130:26 | ReturnValue: nonTemplateFunction2 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:130:7:130:26 | IR: nonTemplateFunction2 | void* nonTemplateFunction2() | -| staticlocals.cpp:3:5:3:5 | ReturnValue: g | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | staticlocals.cpp:3:5:3:5 | IR: g | int staticlocals::g() | -| staticlocals.cpp:7:5:7:5 | ReturnValue: h | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | staticlocals.cpp:7:5:7:5 | IR: h | int staticlocals::h() | -| staticlocals.cpp:17:15:17:20 | ReturnValue: addOne | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | staticlocals.cpp:17:15:17:20 | IR: addOne | int staticlocals::addOne(int) | -| stream_it.cpp:4:6:4:6 | ReturnValue: begin | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | stream_it.cpp:4:6:4:6 | IR: begin | int* vector::begin() | -| stream_it.cpp:5:6:5:6 | ReturnValue: end | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | stream_it.cpp:5:6:5:6 | IR: end | int* vector::end() | -| stream_it.cpp:16:5:16:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() | -| stream_it.cpp:16:5:16:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() | -| stream_it.cpp:16:5:16:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() | -| stream_it.cpp:16:5:16:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() | -| switchbody.c:4:5:4:16 | ReturnValue: switch_block | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | switchbody.c:4:5:4:16 | IR: switch_block | int switch_block(int) | -| switchbody.c:15:5:15:17 | ReturnValue: switch_single | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | switchbody.c:15:5:15:17 | IR: switch_single | int switch_single(int) | -| switchbody.c:27:5:27:19 | ReturnValue: switch_notblock | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | switchbody.c:27:5:27:19 | IR: switch_notblock | int switch_notblock(int) | -| test.c:218:5:218:11 | ReturnValue: f_and_1 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | test.c:218:5:218:11 | IR: f_and_1 | int f_and_1(int, int) | -| test.c:225:5:225:11 | ReturnValue: f_and_2 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | test.c:225:5:225:11 | IR: f_and_2 | int f_and_2(int, int) | | try_catch.cpp:13:5:13:16 | ThrowValue: throw ... | Instruction 'ThrowValue' is missing an expected operand with tag 'Load' in function '$@'. | try_catch.cpp:11:6:11:17 | IR: bypass_catch | void bypass_catch() | -| void_bug.cpp:3:5:3:12 | ReturnValue: void_bug | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | void_bug.cpp:3:5:3:12 | IR: void_bug | int void_bug() | unexpectedOperand duplicateOperand missingPhiOperand +| cpp11.cpp:141:7:141:7 | Phi: g | cpp11.cpp:161:16:161:16 | NoOp: label ...: | missingOperandType sideEffectWithoutPrimary instructionWithoutSuccessor -| CPP-309.cpp:8:1:8:1 | NoOp: return ... | -| CPP-309.cpp:12:1:12:1 | NoOp: return ... | -| FunctionTryStmt.cpp:11:5:11:11 | NoOp: return ... | | VacuousDestructorCall.cpp:2:29:2:29 | Chi: y | -| VacuousDestructorCall.cpp:11:1:11:1 | NoOp: return ... | -| abortingfunctions.cpp:10:1:10:1 | NoOp: return ... | -| abortingfunctions.cpp:17:1:17:1 | NoOp: return ... | -| abortingfunctions.cpp:25:1:25:1 | NoOp: return ... | -| abortingfunctions.cpp:35:1:35:1 | NoOp: return ... | -| abortingfunctions.cpp:42:1:42:1 | NoOp: return ... | -| abortingfunctions.cpp:46:1:46:1 | NoOp: return ... | -| aggregateinitializer.c:4:1:4:1 | NoOp: return ... | -| allocators.cpp:3:39:3:39 | NoOp: return ... | -| allocators.cpp:4:25:4:25 | NoOp: return ... | -| allocators.cpp:8:37:8:40 | ReturnIndirection: self | -| array_delete.cpp:7:1:7:1 | NoOp: return ... | -| assignexpr.cpp:11:1:11:1 | NoOp: return ... | -| assume0.cpp:12:1:12:1 | NoOp: return ... | -| assume0.cpp:20:1:20:1 | NoOp: return ... | -| bad_asts.cpp:17:3:17:3 | NoOp: return ... | -| bad_asts.cpp:23:5:23:5 | NoOp: return ... | -| bad_asts.cpp:26:41:26:41 | ReturnIndirection: a | -| break_labels.c:13:12:13:17 | Chi: result | -| break_labels.c:29:1:29:1 | NoOp: return ... | -| builtin.cpp:11:1:11:1 | NoOp: return ... | -| builtin.cpp:16:1:16:1 | NoOp: return ... | -| condition_decl_int.cpp:5:1:5:1 | NoOp: return ... | -| condition_decls.cpp:4:3:4:3 | NoOp: return ... | -| condition_decls.cpp:7:3:7:3 | NoOp: return ... | | condition_decls.cpp:16:19:16:20 | Chi: call to BoxedInt | | condition_decls.cpp:26:23:26:24 | Chi: call to BoxedInt | | condition_decls.cpp:41:22:41:23 | Chi: call to BoxedInt | | condition_decls.cpp:48:52:48:53 | Chi: call to BoxedInt | -| conditional_destructors.cpp:7:9:7:9 | NoOp: return ... | -| conditional_destructors.cpp:19:9:19:9 | NoOp: return ... | -| conditional_destructors.cpp:22:9:22:9 | NoOp: return ... | -| conditional_destructors.cpp:36:1:36:1 | NoOp: return ... | -| conditional_destructors.cpp:45:1:45:1 | NoOp: return ... | -| constmemberaccess.cpp:10:1:10:1 | NoOp: return ... | -| constructorinitializer.cpp:9:1:9:1 | NoOp: return ... | -| cpp11.cpp:9:3:9:3 | NoOp: return ... | -| cpp11.cpp:52:1:52:1 | NoOp: return ... | -| cpp11.cpp:61:1:61:1 | NoOp: return ... | -| cpp11.cpp:66:3:66:3 | NoOp: return ... | -| cpp11.cpp:78:3:78:3 | NoOp: return ... | -| cpp11.cpp:82:55:82:55 | NoOp: return ... | -| cpp11.cpp:83:3:83:3 | NoOp: return ... | -| cpp11.cpp:89:3:89:3 | NoOp: return ... | -| cpp11.cpp:104:3:104:3 | NoOp: return ... | -| cpp11.cpp:115:3:115:3 | NoOp: return ... | -| cpp11.cpp:136:3:136:3 | NoOp: return ... | -| cpp11.cpp:166:14:166:14 | NoOp: return ... | -| cpp11.cpp:171:3:171:3 | NoOp: return ... | | cpp17.cpp:15:11:15:21 | Convert: (void *)... | -| cpp17.cpp:18:42:18:42 | ReturnIndirection: p | -| defconstructornewexpr.cpp:5:3:5:9 | NoOp: return ... | -| defdestructordeleteexpr.cpp:6:1:6:1 | NoOp: return ... | -| deleteexpr.cpp:9:1:9:1 | NoOp: return ... | -| destructors.cpp:31:1:31:1 | NoOp: return ... | -| destructors.cpp:38:1:38:1 | NoOp: return ... | -| dostmt.c:6:1:6:1 | NoOp: return ... | -| dostmt.c:14:1:14:1 | NoOp: return ... | -| dostmt.c:23:1:23:1 | NoOp: return ... | -| dostmt.c:38:1:38:1 | NoOp: return ... | -| duff2.c:14:1:14:1 | NoOp: return ... | -| duff2.c:22:1:22:1 | NoOp: return ... | -| duff.c:15:1:15:1 | NoOp: return ... | -| dummyblock.c:4:1:4:1 | NoOp: return ... | -| ellipsisexceptionhandler.cpp:12:1:12:1 | NoOp: return ... | -| ellipsisexceptionhandler.cpp:19:1:19:1 | NoOp: return ... | -| emptyblock.c:5:1:5:1 | NoOp: return ... | -| enum.c:6:9:6:9 | Chi: (int)... | -| exceptionhandler.cpp:24:1:24:1 | NoOp: return ... | -| exprstmt.c:4:1:4:1 | NoOp: return ... | -| fieldaccess.cpp:10:1:10:1 | NoOp: return ... | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#2 | -| forstmt.cpp:6:1:6:1 | NoOp: return ... | -| forstmt.cpp:11:1:11:1 | NoOp: return ... | -| forstmt.cpp:21:1:21:1 | NoOp: return ... | -| gotostmt.c:5:1:5:1 | NoOp: return ... | -| ifelsestmt.c:9:1:9:1 | NoOp: return ... | -| ifelsestmt.c:17:1:17:1 | NoOp: return ... | -| ifelsestmt.c:27:1:27:1 | NoOp: return ... | -| ifelsestmt.c:35:1:35:1 | NoOp: return ... | -| ifelsestmt.c:45:1:45:1 | NoOp: return ... | -| ifstmt.c:6:1:6:1 | NoOp: return ... | -| ifstmt.c:12:1:12:1 | NoOp: return ... | -| ifstmt.c:19:1:19:1 | NoOp: return ... | -| ifstmt.c:25:1:25:1 | NoOp: return ... | -| ifstmt.c:32:1:32:1 | NoOp: return ... | -| initializer.c:4:1:4:1 | NoOp: return ... | -| ir.cpp:41:1:41:1 | NoOp: return ... | -| ir.cpp:48:1:48:1 | NoOp: return ... | -| ir.cpp:85:1:85:1 | NoOp: return ... | -| ir.cpp:96:1:96:1 | NoOp: return ... | -| ir.cpp:105:1:105:1 | NoOp: return ... | -| ir.cpp:112:1:112:1 | NoOp: return ... | -| ir.cpp:131:1:131:1 | NoOp: return ... | -| ir.cpp:142:1:142:1 | NoOp: return ... | -| ir.cpp:151:1:151:1 | NoOp: return ... | -| ir.cpp:153:22:153:22 | ReturnIndirection: p | -| ir.cpp:171:23:171:23 | ReturnIndirection: p | -| ir.cpp:191:1:191:1 | NoOp: return ... | -| ir.cpp:193:34:193:34 | ReturnIndirection: q | -| ir.cpp:204:26:204:26 | ReturnIndirection: p | -| ir.cpp:228:1:228:1 | NoOp: return ... | -| ir.cpp:233:1:233:1 | NoOp: return ... | -| ir.cpp:251:1:251:1 | NoOp: return ... | -| ir.cpp:257:1:257:1 | NoOp: return ... | -| ir.cpp:263:1:263:1 | NoOp: return ... | -| ir.cpp:309:1:309:1 | NoOp: return ... | -| ir.cpp:315:1:315:1 | NoOp: return ... | -| ir.cpp:323:1:323:1 | NoOp: return ... | -| ir.cpp:331:1:331:1 | NoOp: return ... | -| ir.cpp:358:1:358:1 | NoOp: return ... | -| ir.cpp:367:1:367:1 | NoOp: return ... | -| ir.cpp:374:1:374:1 | NoOp: return ... | -| ir.cpp:410:1:410:1 | NoOp: return ... | -| ir.cpp:431:1:431:1 | NoOp: return ... | -| ir.cpp:445:1:445:1 | NoOp: return ... | -| ir.cpp:459:1:459:1 | NoOp: return ... | -| ir.cpp:473:1:473:1 | NoOp: return ... | -| ir.cpp:480:1:480:1 | NoOp: return ... | -| ir.cpp:484:1:484:1 | NoOp: return ... | -| ir.cpp:490:1:490:1 | NoOp: return ... | -| ir.cpp:494:1:494:1 | NoOp: return ... | -| ir.cpp:501:1:501:1 | NoOp: return ... | -| ir.cpp:510:1:510:1 | NoOp: return ... | -| ir.cpp:517:1:517:1 | NoOp: return ... | -| ir.cpp:523:1:523:1 | NoOp: return ... | -| ir.cpp:533:1:533:1 | NoOp: return ... | -| ir.cpp:537:9:537:15 | NoOp: return ... | -| ir.cpp:541:1:541:1 | NoOp: return ... | -| ir.cpp:580:1:580:1 | NoOp: return ... | -| ir.cpp:586:1:586:1 | NoOp: return ... | -| ir.cpp:595:1:595:1 | NoOp: return ... | -| ir.cpp:620:1:620:1 | NoOp: return ... | -| ir.cpp:622:37:622:37 | ReturnIndirection: p | -| ir.cpp:650:5:650:5 | NoOp: return ... | -| ir.cpp:656:5:656:5 | NoOp: return ... | -| ir.cpp:664:5:664:5 | NoOp: return ... | -| ir.cpp:689:1:689:1 | NoOp: return ... | -| ir.cpp:695:1:695:1 | NoOp: return ... | -| ir.cpp:701:1:701:1 | NoOp: return ... | -| ir.cpp:743:1:743:1 | NoOp: return ... | -| ir.cpp:749:3:749:3 | NoOp: return ... | -| ir.cpp:751:3:751:3 | Chi: call to ~String | -| ir.cpp:758:3:758:3 | NoOp: return ... | -| ir.cpp:760:3:760:3 | Chi: call to ~Base | -| ir.cpp:767:3:767:3 | NoOp: return ... | -| ir.cpp:769:3:769:3 | Chi: call to ~Middle | -| ir.cpp:776:3:776:3 | NoOp: return ... | -| ir.cpp:778:3:778:3 | Chi: call to ~Base | -| ir.cpp:785:3:785:3 | NoOp: return ... | -| ir.cpp:787:3:787:3 | Chi: call to ~Base | -| ir.cpp:794:3:794:3 | NoOp: return ... | -| ir.cpp:796:3:796:3 | Chi: call to ~Base | -| ir.cpp:840:1:840:1 | NoOp: return ... | -| ir.cpp:842:8:842:8 | NoOp: return ... | -| ir.cpp:846:8:846:8 | Chi: call to ~PolymorphicBase | -| ir.cpp:846:8:846:8 | NoOp: return ... | -| ir.cpp:865:1:865:1 | NoOp: return ... | -| ir.cpp:869:1:869:1 | NoOp: return ... | -| ir.cpp:881:1:881:1 | NoOp: return ... | -| ir.cpp:883:47:883:47 | ReturnIndirection: p | -| ir.cpp:898:1:898:1 | NoOp: return ... | -| ir.cpp:902:1:902:1 | NoOp: return ... | -| ir.cpp:907:1:907:1 | NoOp: return ... | -| ir.cpp:948:1:948:1 | NoOp: return ... | -| ir.cpp:959:1:959:1 | NoOp: return ... | -| landexpr.c:6:1:6:1 | NoOp: return ... | -| lorexpr.c:6:1:6:1 | NoOp: return ... | -| ltrbinopexpr.c:43:1:43:1 | NoOp: return ... | -| membercallexpr.cpp:10:1:10:1 | NoOp: return ... | -| membercallexpr_args.cpp:11:1:11:1 | NoOp: return ... | -| misc.c:91:54:91:55 | ReturnIndirection: sp | -| misc.c:142:1:142:1 | NoOp: return ... | -| misc.c:150:1:150:1 | NoOp: return ... | -| misc.c:161:1:161:1 | NoOp: return ... | -| misc.c:166:1:166:1 | NoOp: return ... | | misc.c:171:10:171:13 | Uninitialized: definition of str2 | -| misc.c:181:1:181:1 | NoOp: return ... | -| misc.c:184:5:184:11 | NoOp: return ... | -| misc.c:197:23:197:25 | ReturnIndirection: fmt | | misc.c:219:47:219:48 | Chi: sp | | ms_try_except.cpp:3:9:3:9 | Uninitialized: definition of x | | ms_try_mix.cpp:11:12:11:15 | Chi: call to C | | ms_try_mix.cpp:28:12:28:15 | Chi: call to C | | ms_try_mix.cpp:48:10:48:13 | Chi: call to C | -| newexpr.cpp:9:1:9:1 | NoOp: return ... | -| no_dynamic_init.cpp:6:3:6:3 | NoOp: return ... | -| nodefaultswitchstmt.c:7:1:7:1 | NoOp: return ... | -| nonmembercallexpr.c:1:12:1:12 | NoOp: return ... | -| nonmembercallexpr.c:6:1:6:1 | NoOp: return ... | -| nonmemberfp2callexpr.c:6:1:6:1 | NoOp: return ... | -| nonmemberfpcallexpr.c:5:1:5:1 | NoOp: return ... | -| ops.cpp:14:29:14:29 | NoOp: return ... | -| ops.cpp:15:30:15:30 | NoOp: return ... | -| ops.cpp:28:1:28:1 | NoOp: return ... | -| parameterinitializer.cpp:4:12:4:12 | Chi: 5 | -| parameterinitializer.cpp:9:1:9:1 | NoOp: return ... | -| parameterinitializer.cpp:13:18:13:18 | NoOp: return ... | -| parameterinitializer.cpp:15:28:15:28 | NoOp: return ... | -| pmcallexpr.cpp:10:1:10:1 | NoOp: return ... | | pointer_to_member.cpp:36:11:36:30 | FieldAddress: {...} | -| pruning.c:10:1:10:1 | NoOp: return ... | -| pruning.c:14:9:14:15 | NoOp: return ... | -| pruning.c:22:9:22:15 | NoOp: return ... | -| pruning.c:34:1:34:1 | NoOp: return ... | -| pruning.c:38:9:38:15 | NoOp: return ... | -| pruning.c:50:1:50:1 | NoOp: return ... | -| pruning.c:54:9:54:15 | NoOp: return ... | -| pruning.c:62:9:62:15 | NoOp: return ... | -| pruning.c:75:1:75:1 | NoOp: return ... | -| pruning.c:80:9:80:15 | NoOp: return ... | -| pruning.c:89:9:89:15 | NoOp: return ... | -| pruning.c:102:1:102:1 | NoOp: return ... | -| pruning.c:107:9:107:15 | NoOp: return ... | -| pruning.c:120:1:120:1 | NoOp: return ... | -| pruning.c:125:9:125:15 | NoOp: return ... | -| pruning.c:134:9:134:15 | NoOp: return ... | -| pruning.c:138:1:138:1 | NoOp: return ... | -| pruning.c:144:1:144:1 | NoOp: return ... | -| pruning.c:150:1:150:1 | NoOp: return ... | -| pruning.c:156:1:156:1 | NoOp: return ... | -| pruning.c:162:1:162:1 | NoOp: return ... | -| pruning.c:169:1:169:1 | NoOp: return ... | -| pruning.c:176:1:176:1 | NoOp: return ... | -| pruning.c:183:1:183:1 | NoOp: return ... | -| pruning.c:190:1:190:1 | NoOp: return ... | -| pruning.c:198:1:198:1 | NoOp: return ... | -| questionexpr.c:4:1:4:1 | NoOp: return ... | -| rethrow_error.cpp:3:13:3:13 | NoOp: return ... | -| rethrow_error.cpp:4:21:4:21 | NoOp: return ... | -| rethrow_error.cpp:22:1:22:1 | NoOp: return ... | -| returnstmt.c:3:5:3:11 | NoOp: return ... | -| revsubscriptexpr.c:5:1:5:1 | NoOp: return ... | -| shortforstmt.cpp:6:1:6:1 | NoOp: return ... | -| shortforstmt.cpp:14:1:14:1 | NoOp: return ... | -| shortforstmt.cpp:24:1:24:1 | NoOp: return ... | -| shortforstmt.cpp:38:1:38:1 | NoOp: return ... | -| statements.cpp:5:1:5:1 | NoOp: return ... | -| statements.cpp:10:1:10:1 | NoOp: return ... | -| statements.cpp:16:5:16:11 | NoOp: return ... | -| statements.cpp:19:1:19:1 | NoOp: return ... | -| statements.cpp:28:1:28:1 | NoOp: return ... | -| statements.cpp:36:1:36:1 | NoOp: return ... | -| statements.cpp:57:1:57:1 | NoOp: return ... | -| statements.h:3:3:3:3 | NoOp: return ... | -| static_init_templates.cpp:2:21:2:23 | ReturnIndirection: ref | -| static_init_templates.cpp:27:1:27:1 | NoOp: return ... | -| static_init_templates.cpp:34:1:34:1 | NoOp: return ... | -| static_init_templates.cpp:119:1:119:1 | NoOp: return ... | -| static_init_templates.cpp:227:30:227:30 | NoOp: return ... | -| static_init_templates.cpp:233:35:233:35 | NoOp: return ... | -| static_init_templates.cpp:236:7:236:7 | NoOp: return ... | -| static_init_templates.cpp:240:7:240:7 | NoOp: return ... | -| static_init_templates.cpp:252:1:252:1 | NoOp: return ... | -| staticlocals.cpp:15:1:15:1 | NoOp: return ... | -| staticlocals.cpp:22:19:22:19 | NoOp: return ... | -| staticlocals.cpp:30:1:30:1 | NoOp: return ... | -| staticmembercallexpr.cpp:10:1:10:1 | NoOp: return ... | -| staticmembercallexpr_args.cpp:11:1:11:1 | NoOp: return ... | -| stmt_expr.cpp:19:1:19:1 | NoOp: return ... | | stmt_expr.cpp:27:5:27:15 | Store: ... = ... | -| stmt_in_type.cpp:6:1:6:1 | NoOp: return ... | -| stream_it.cpp:9:27:9:27 | ReturnIndirection: t | -| subscriptexpr.c:5:1:5:1 | NoOp: return ... | -| switchstmt.c:8:1:8:1 | NoOp: return ... | -| test.c:8:1:8:1 | NoOp: return ... | -| test.c:16:1:16:1 | NoOp: return ... | -| test.c:24:1:24:1 | NoOp: return ... | -| test.c:31:5:31:11 | NoOp: return ... | -| test.c:47:5:47:11 | NoOp: return ... | -| test.c:54:5:54:11 | NoOp: return ... | -| test.c:68:5:68:11 | NoOp: return ... | -| test.c:75:5:75:11 | NoOp: return ... | -| test.c:89:5:89:11 | NoOp: return ... | -| test.c:94:5:94:11 | NoOp: return ... | -| test.c:99:5:99:11 | NoOp: return ... | -| test.c:104:5:104:11 | NoOp: return ... | -| test.c:110:13:110:19 | NoOp: return ... | -| test.c:112:13:112:19 | NoOp: return ... | -| test.c:117:13:117:19 | NoOp: return ... | -| test.c:119:13:119:19 | NoOp: return ... | -| test.c:127:13:127:19 | NoOp: return ... | -| test.c:129:13:129:19 | NoOp: return ... | -| test.c:134:13:134:19 | NoOp: return ... | -| test.c:142:13:142:19 | NoOp: return ... | -| test.c:144:13:144:19 | NoOp: return ... | -| test.c:149:13:149:19 | NoOp: return ... | -| test.c:151:13:151:19 | NoOp: return ... | -| test.c:159:13:159:19 | NoOp: return ... | -| test.c:161:13:161:19 | NoOp: return ... | -| test.c:166:13:166:19 | NoOp: return ... | -| test.c:174:13:174:19 | NoOp: return ... | -| test.c:176:13:176:19 | NoOp: return ... | -| test.c:181:13:181:19 | NoOp: return ... | -| test.c:183:13:183:19 | NoOp: return ... | -| test.c:191:13:191:19 | NoOp: return ... | -| test.c:193:13:193:19 | NoOp: return ... | -| test.c:198:13:198:19 | NoOp: return ... | -| test.c:206:13:206:19 | NoOp: return ... | -| test.c:208:13:208:19 | NoOp: return ... | -| test.c:213:13:213:19 | NoOp: return ... | -| test.c:235:1:235:1 | NoOp: return ... | -| try_catch.cpp:2:10:2:10 | NoOp: return ... | -| try_catch.cpp:7:8:7:8 | Chi: call to ~exception | -| try_catch.cpp:7:8:7:8 | NoOp: return ... | -| try_catch.cpp:15:5:15:11 | NoOp: return ... | -| unaryopexpr.c:14:1:14:1 | NoOp: return ... | | vla.c:5:9:5:14 | Uninitialized: definition of matrix | | vla.c:11:6:11:16 | UnmodeledDefinition: vla_typedef | -| void_bug.h:2:15:2:15 | NoOp: return ... | -| whilestmt.c:6:1:6:1 | NoOp: return ... | -| whilestmt.c:13:1:13:1 | NoOp: return ... | -| whilestmt.c:21:1:21:1 | NoOp: return ... | -| whilestmt.c:30:1:30:1 | NoOp: return ... | -| whilestmt.c:45:1:45:1 | NoOp: return ... | ambiguousSuccessors | allocators.cpp:14:5:14:8 | UnmodeledDefinition: main | Goto | 4 | allocators.cpp:16:8:16:10 | VariableAddress: definition of foo | | allocators.cpp:14:5:14:8 | UnmodeledDefinition: main | Goto | 4 | no_dynamic_init.cpp:10:16:10:16 | VariableAddress: definition of m | diff --git a/cpp/ql/test/library-tests/syntax-zoo/drawDifferent.expected b/cpp/ql/test/library-tests/syntax-zoo/drawDifferent.expected index 00cdd21f9ed..2d0be306bbe 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/drawDifferent.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/drawDifferent.expected @@ -1,53 +1,108 @@ -| staticlocals__staticlocals_f2_extractor | false | 22465 | 22465 | f2 | -| staticlocals__staticlocals_f2_extractor | false | 22470 | 22470 | declaration | -| staticlocals__staticlocals_f2_extractor | false | 22472 | 22472 | declaration | -| staticlocals__staticlocals_f2_extractor | false | 22474 | 22474 | declaration | -| staticlocals__staticlocals_f2_extractor | false | 22476 | 22476 | declaration | -| staticlocals__staticlocals_f2_extractor | false | 22478 | 22478 | return ... | -| staticlocals__staticlocals_f2_extractor | false | 22480 | 22480 | { ... } | -| staticlocals__staticlocals_f2_extractor | false | 22482 | 22482 | call to C | -| staticlocals__staticlocals_f2_extractor | false | 22484 | 22484 | initializer for c | -| staticlocals__staticlocals_f2_extractor | false | 22486 | 22486 | call to addOne | -| staticlocals__staticlocals_f2_extractor | false | 22490 | 22490 | 2 | -| staticlocals__staticlocals_f2_extractor | false | 22493 | 22493 | initializer for j | -| staticlocals__staticlocals_f2_extractor | false | 22494 | 22494 | call to addOne | -| staticlocals__staticlocals_f2_extractor | false | 22499 | 22499 | 2 | -| staticlocals__staticlocals_f2_extractor | false | 22500 | 22500 | initializer for two | -| staticlocals__staticlocals_f2_extractor | false | 22503 | 22503 | two | -| staticlocals__staticlocals_f2_extractor | false | 22508 | 22508 | initializer for i | -| staticlocals__staticlocals_f2_extractor | true | 22470 | 22500 | | -| staticlocals__staticlocals_f2_extractor | true | 22472 | 22474 | | -| staticlocals__staticlocals_f2_extractor | true | 22474 | 22476 | | -| staticlocals__staticlocals_f2_extractor | true | 22476 | 22478 | | -| staticlocals__staticlocals_f2_extractor | true | 22478 | 22465 | | -| staticlocals__staticlocals_f2_extractor | true | 22480 | 22470 | | -| staticlocals__staticlocals_f2_extractor | true | 22499 | 22472 | | -| staticlocals__staticlocals_f2_extractor | true | 22500 | 22499 | | -| staticlocals__staticlocals_f2_ql | false | 22465 | 22465 | f2 | -| staticlocals__staticlocals_f2_ql | false | 22470 | 22470 | declaration | -| staticlocals__staticlocals_f2_ql | false | 22472 | 22472 | declaration | -| staticlocals__staticlocals_f2_ql | false | 22474 | 22474 | declaration | -| staticlocals__staticlocals_f2_ql | false | 22476 | 22476 | declaration | -| staticlocals__staticlocals_f2_ql | false | 22478 | 22478 | return ... | -| staticlocals__staticlocals_f2_ql | false | 22480 | 22480 | { ... } | -| staticlocals__staticlocals_f2_ql | false | 22482 | 22482 | call to C | -| staticlocals__staticlocals_f2_ql | false | 22484 | 22484 | initializer for c | -| staticlocals__staticlocals_f2_ql | false | 22486 | 22486 | call to addOne | -| staticlocals__staticlocals_f2_ql | false | 22490 | 22490 | 2 | -| staticlocals__staticlocals_f2_ql | false | 22493 | 22493 | initializer for j | -| staticlocals__staticlocals_f2_ql | false | 22494 | 22494 | call to addOne | -| staticlocals__staticlocals_f2_ql | false | 22499 | 22499 | 2 | -| staticlocals__staticlocals_f2_ql | false | 22500 | 22500 | initializer for two | -| staticlocals__staticlocals_f2_ql | false | 22503 | 22503 | two | -| staticlocals__staticlocals_f2_ql | false | 22508 | 22508 | initializer for i | -| staticlocals__staticlocals_f2_ql | true | 22470 | 22500 | | -| staticlocals__staticlocals_f2_ql | true | 22472 | 22474 | | -| staticlocals__staticlocals_f2_ql | true | 22474 | 22476 | | -| staticlocals__staticlocals_f2_ql | true | 22476 | 22478 | | -| staticlocals__staticlocals_f2_ql | true | 22476 | 22484 | | -| staticlocals__staticlocals_f2_ql | true | 22478 | 22465 | | -| staticlocals__staticlocals_f2_ql | true | 22480 | 22470 | | -| staticlocals__staticlocals_f2_ql | true | 22482 | 22478 | | -| staticlocals__staticlocals_f2_ql | true | 22484 | 22482 | | -| staticlocals__staticlocals_f2_ql | true | 22499 | 22472 | | -| staticlocals__staticlocals_f2_ql | true | 22500 | 22499 | | +| pointer_to_member__pmIsConstT_extractor | false | 15733 | 15733 | pmIsConstT | +| pointer_to_member__pmIsConstT_extractor | false | 15741 | 15741 | declaration | +| pointer_to_member__pmIsConstT_extractor | false | 15743 | 15743 | return ... | +| pointer_to_member__pmIsConstT_extractor | false | 15745 | 15745 | { ... } | +| pointer_to_member__pmIsConstT_extractor | false | 15748 | 15748 | {...} | +| pointer_to_member__pmIsConstT_extractor | false | 15753 | 15753 | x1 | +| pointer_to_member__pmIsConstT_extractor | false | 15755 | 15755 | & ... | +| pointer_to_member__pmIsConstT_extractor | false | 15760 | 15760 | f1 | +| pointer_to_member__pmIsConstT_extractor | false | 15762 | 15762 | & ... | +| pointer_to_member__pmIsConstT_extractor | false | 15764 | 15764 | initializer for pms | +| pointer_to_member__pmIsConstT_extractor | true | 15741 | 15743 | | +| pointer_to_member__pmIsConstT_extractor | true | 15743 | 15733 | | +| pointer_to_member__pmIsConstT_extractor | true | 15745 | 15741 | | +| pointer_to_member__pmIsConstT_ql | false | 15733 | 15733 | pmIsConstT | +| pointer_to_member__pmIsConstT_ql | false | 15741 | 15741 | declaration | +| pointer_to_member__pmIsConstT_ql | false | 15743 | 15743 | return ... | +| pointer_to_member__pmIsConstT_ql | false | 15745 | 15745 | { ... } | +| pointer_to_member__pmIsConstT_ql | false | 15748 | 15748 | {...} | +| pointer_to_member__pmIsConstT_ql | false | 15753 | 15753 | x1 | +| pointer_to_member__pmIsConstT_ql | false | 15755 | 15755 | & ... | +| pointer_to_member__pmIsConstT_ql | false | 15760 | 15760 | f1 | +| pointer_to_member__pmIsConstT_ql | false | 15762 | 15762 | & ... | +| pointer_to_member__pmIsConstT_ql | false | 15764 | 15764 | initializer for pms | +| pointer_to_member__pmIsConstT_ql | true | 15741 | 15764 | | +| pointer_to_member__pmIsConstT_ql | true | 15743 | 15733 | | +| pointer_to_member__pmIsConstT_ql | true | 15745 | 15741 | | +| pointer_to_member__pmIsConstT_ql | true | 15748 | 15743 | | +| pointer_to_member__pmIsConstT_ql | true | 15753 | 15755 | | +| pointer_to_member__pmIsConstT_ql | true | 15755 | 15760 | | +| pointer_to_member__pmIsConstT_ql | true | 15760 | 15762 | | +| pointer_to_member__pmIsConstT_ql | true | 15762 | 15748 | | +| pointer_to_member__pmIsConstT_ql | true | 15764 | 15753 | | +| staticlocals__staticlocals_f2_extractor | false | 22550 | 22550 | f2 | +| staticlocals__staticlocals_f2_extractor | false | 22555 | 22555 | declaration | +| staticlocals__staticlocals_f2_extractor | false | 22557 | 22557 | declaration | +| staticlocals__staticlocals_f2_extractor | false | 22559 | 22559 | declaration | +| staticlocals__staticlocals_f2_extractor | false | 22561 | 22561 | declaration | +| staticlocals__staticlocals_f2_extractor | false | 22563 | 22563 | return ... | +| staticlocals__staticlocals_f2_extractor | false | 22565 | 22565 | { ... } | +| staticlocals__staticlocals_f2_extractor | false | 22567 | 22567 | call to C | +| staticlocals__staticlocals_f2_extractor | false | 22569 | 22569 | initializer for c | +| staticlocals__staticlocals_f2_extractor | false | 22571 | 22571 | call to addOne | +| staticlocals__staticlocals_f2_extractor | false | 22575 | 22575 | 2 | +| staticlocals__staticlocals_f2_extractor | false | 22578 | 22578 | initializer for j | +| staticlocals__staticlocals_f2_extractor | false | 22579 | 22579 | call to addOne | +| staticlocals__staticlocals_f2_extractor | false | 22584 | 22584 | 2 | +| staticlocals__staticlocals_f2_extractor | false | 22585 | 22585 | initializer for two | +| staticlocals__staticlocals_f2_extractor | false | 22588 | 22588 | two | +| staticlocals__staticlocals_f2_extractor | false | 22593 | 22593 | initializer for i | +| staticlocals__staticlocals_f2_extractor | true | 22555 | 22585 | | +| staticlocals__staticlocals_f2_extractor | true | 22557 | 22559 | | +| staticlocals__staticlocals_f2_extractor | true | 22559 | 22561 | | +| staticlocals__staticlocals_f2_extractor | true | 22561 | 22563 | | +| staticlocals__staticlocals_f2_extractor | true | 22563 | 22550 | | +| staticlocals__staticlocals_f2_extractor | true | 22565 | 22555 | | +| staticlocals__staticlocals_f2_extractor | true | 22584 | 22557 | | +| staticlocals__staticlocals_f2_extractor | true | 22585 | 22584 | | +| staticlocals__staticlocals_f2_ql | false | 22550 | 22550 | f2 | +| staticlocals__staticlocals_f2_ql | false | 22555 | 22555 | declaration | +| staticlocals__staticlocals_f2_ql | false | 22557 | 22557 | declaration | +| staticlocals__staticlocals_f2_ql | false | 22559 | 22559 | declaration | +| staticlocals__staticlocals_f2_ql | false | 22561 | 22561 | declaration | +| staticlocals__staticlocals_f2_ql | false | 22563 | 22563 | return ... | +| staticlocals__staticlocals_f2_ql | false | 22565 | 22565 | { ... } | +| staticlocals__staticlocals_f2_ql | false | 22567 | 22567 | call to C | +| staticlocals__staticlocals_f2_ql | false | 22569 | 22569 | initializer for c | +| staticlocals__staticlocals_f2_ql | false | 22571 | 22571 | call to addOne | +| staticlocals__staticlocals_f2_ql | false | 22575 | 22575 | 2 | +| staticlocals__staticlocals_f2_ql | false | 22578 | 22578 | initializer for j | +| staticlocals__staticlocals_f2_ql | false | 22579 | 22579 | call to addOne | +| staticlocals__staticlocals_f2_ql | false | 22584 | 22584 | 2 | +| staticlocals__staticlocals_f2_ql | false | 22585 | 22585 | initializer for two | +| staticlocals__staticlocals_f2_ql | false | 22588 | 22588 | two | +| staticlocals__staticlocals_f2_ql | false | 22593 | 22593 | initializer for i | +| staticlocals__staticlocals_f2_ql | true | 22555 | 22585 | | +| staticlocals__staticlocals_f2_ql | true | 22557 | 22559 | | +| staticlocals__staticlocals_f2_ql | true | 22559 | 22561 | | +| staticlocals__staticlocals_f2_ql | true | 22561 | 22563 | | +| staticlocals__staticlocals_f2_ql | true | 22561 | 22569 | | +| staticlocals__staticlocals_f2_ql | true | 22563 | 22550 | | +| staticlocals__staticlocals_f2_ql | true | 22565 | 22555 | | +| staticlocals__staticlocals_f2_ql | true | 22567 | 22563 | | +| staticlocals__staticlocals_f2_ql | true | 22569 | 22567 | | +| staticlocals__staticlocals_f2_ql | true | 22584 | 22557 | | +| staticlocals__staticlocals_f2_ql | true | 22585 | 22584 | | +| staticlocals__staticlocals_f3_extractor | false | 22529 | 22529 | f3 | +| staticlocals__staticlocals_f3_extractor | false | 22532 | 22532 | declaration | +| staticlocals__staticlocals_f3_extractor | false | 22534 | 22534 | return ... | +| staticlocals__staticlocals_f3_extractor | false | 22536 | 22536 | { ... } | +| staticlocals__staticlocals_f3_extractor | false | 22543 | 22543 | value | +| staticlocals__staticlocals_f3_extractor | false | 22545 | 22545 | (int)... | +| staticlocals__staticlocals_f3_extractor | false | 22546 | 22546 | initializer for i | +| staticlocals__staticlocals_f3_extractor | true | 22532 | 22534 | | +| staticlocals__staticlocals_f3_extractor | true | 22534 | 22529 | | +| staticlocals__staticlocals_f3_extractor | true | 22536 | 22532 | | +| staticlocals__staticlocals_f3_ql | false | 22529 | 22529 | f3 | +| staticlocals__staticlocals_f3_ql | false | 22532 | 22532 | declaration | +| staticlocals__staticlocals_f3_ql | false | 22534 | 22534 | return ... | +| staticlocals__staticlocals_f3_ql | false | 22536 | 22536 | { ... } | +| staticlocals__staticlocals_f3_ql | false | 22543 | 22543 | value | +| staticlocals__staticlocals_f3_ql | false | 22545 | 22545 | (int)... | +| staticlocals__staticlocals_f3_ql | false | 22546 | 22546 | initializer for i | +| staticlocals__staticlocals_f3_ql | true | 22532 | 22534 | | +| staticlocals__staticlocals_f3_ql | true | 22532 | 22546 | | +| staticlocals__staticlocals_f3_ql | true | 22534 | 22529 | | +| staticlocals__staticlocals_f3_ql | true | 22536 | 22532 | | +| staticlocals__staticlocals_f3_ql | true | 22543 | 22534 | | +| staticlocals__staticlocals_f3_ql | true | 22546 | 22543 | | diff --git a/cpp/ql/test/library-tests/syntax-zoo/raw_sanity.expected b/cpp/ql/test/library-tests/syntax-zoo/raw_sanity.expected index 4bc9e5e7865..ceced4142a2 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/raw_sanity.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/raw_sanity.expected @@ -23,206 +23,18 @@ missingPhiOperand missingOperandType sideEffectWithoutPrimary instructionWithoutSuccessor -| CPP-309.cpp:8:1:8:1 | NoOp: return ... | -| CPP-309.cpp:12:1:12:1 | NoOp: return ... | -| FunctionTryStmt.cpp:11:5:11:11 | NoOp: return ... | | VacuousDestructorCall.cpp:2:29:2:29 | InitializeIndirection: y | -| VacuousDestructorCall.cpp:2:29:2:29 | ReturnIndirection: y | | VacuousDestructorCall.cpp:3:3:3:3 | VariableAddress: x | | VacuousDestructorCall.cpp:4:3:4:3 | Load: y | -| VacuousDestructorCall.cpp:11:1:11:1 | NoOp: return ... | -| abortingfunctions.cpp:10:1:10:1 | NoOp: return ... | -| abortingfunctions.cpp:17:1:17:1 | NoOp: return ... | -| abortingfunctions.cpp:25:1:25:1 | NoOp: return ... | -| abortingfunctions.cpp:35:1:35:1 | NoOp: return ... | -| abortingfunctions.cpp:42:1:42:1 | NoOp: return ... | -| abortingfunctions.cpp:46:1:46:1 | NoOp: return ... | -| aggregateinitializer.c:4:1:4:1 | NoOp: return ... | -| allocators.cpp:3:39:3:39 | NoOp: return ... | -| allocators.cpp:4:25:4:25 | NoOp: return ... | -| allocators.cpp:8:37:8:40 | ReturnIndirection: self | -| array_delete.cpp:7:1:7:1 | NoOp: return ... | -| assignexpr.cpp:11:1:11:1 | NoOp: return ... | -| assume0.cpp:12:1:12:1 | NoOp: return ... | -| assume0.cpp:20:1:20:1 | NoOp: return ... | -| bad_asts.cpp:17:3:17:3 | NoOp: return ... | -| bad_asts.cpp:23:5:23:5 | NoOp: return ... | -| bad_asts.cpp:26:41:26:41 | ReturnIndirection: a | -| break_labels.c:13:12:13:17 | Store: result | -| break_labels.c:29:1:29:1 | NoOp: return ... | -| builtin.cpp:11:1:11:1 | NoOp: return ... | -| builtin.cpp:16:1:16:1 | NoOp: return ... | -| condition_decl_int.cpp:5:1:5:1 | NoOp: return ... | -| condition_decls.cpp:4:3:4:3 | NoOp: return ... | -| condition_decls.cpp:7:3:7:3 | NoOp: return ... | | condition_decls.cpp:16:19:16:20 | CallSideEffect: call to BoxedInt | -| condition_decls.cpp:23:1:23:1 | NoOp: return ... | | condition_decls.cpp:26:19:26:20 | IndirectMayWriteSideEffect: bi | | condition_decls.cpp:26:23:26:24 | CallSideEffect: call to BoxedInt | -| condition_decls.cpp:38:1:38:1 | NoOp: return ... | | condition_decls.cpp:41:22:41:23 | CallSideEffect: call to BoxedInt | -| condition_decls.cpp:45:1:45:1 | NoOp: return ... | | condition_decls.cpp:48:52:48:53 | CallSideEffect: call to BoxedInt | -| condition_decls.cpp:52:1:52:1 | NoOp: return ... | -| conditional_destructors.cpp:7:9:7:9 | NoOp: return ... | -| conditional_destructors.cpp:19:9:19:9 | NoOp: return ... | -| conditional_destructors.cpp:22:9:22:9 | NoOp: return ... | -| conditional_destructors.cpp:36:1:36:1 | NoOp: return ... | -| conditional_destructors.cpp:45:1:45:1 | NoOp: return ... | -| constmemberaccess.cpp:10:1:10:1 | NoOp: return ... | -| constructorinitializer.cpp:9:1:9:1 | NoOp: return ... | -| cpp11.cpp:9:3:9:3 | NoOp: return ... | -| cpp11.cpp:52:1:52:1 | NoOp: return ... | -| cpp11.cpp:61:1:61:1 | NoOp: return ... | -| cpp11.cpp:66:3:66:3 | NoOp: return ... | -| cpp11.cpp:78:3:78:3 | NoOp: return ... | -| cpp11.cpp:82:55:82:55 | NoOp: return ... | -| cpp11.cpp:83:3:83:3 | NoOp: return ... | -| cpp11.cpp:89:3:89:3 | NoOp: return ... | -| cpp11.cpp:104:3:104:3 | NoOp: return ... | -| cpp11.cpp:115:3:115:3 | NoOp: return ... | -| cpp11.cpp:136:3:136:3 | NoOp: return ... | -| cpp11.cpp:166:14:166:14 | NoOp: return ... | -| cpp11.cpp:171:3:171:3 | NoOp: return ... | | cpp17.cpp:15:11:15:21 | Convert: (void *)... | -| cpp17.cpp:18:42:18:42 | ReturnIndirection: p | -| defconstructornewexpr.cpp:5:3:5:9 | NoOp: return ... | -| defdestructordeleteexpr.cpp:6:1:6:1 | NoOp: return ... | -| deleteexpr.cpp:9:1:9:1 | NoOp: return ... | -| destructors.cpp:29:5:29:11 | NoOp: return ... | -| destructors.cpp:31:1:31:1 | NoOp: return ... | -| destructors.cpp:38:1:38:1 | NoOp: return ... | -| dostmt.c:6:1:6:1 | NoOp: return ... | -| dostmt.c:14:1:14:1 | NoOp: return ... | -| dostmt.c:23:1:23:1 | NoOp: return ... | -| dostmt.c:30:1:30:1 | NoOp: return ... | -| dostmt.c:38:1:38:1 | NoOp: return ... | -| duff2.c:14:1:14:1 | NoOp: return ... | -| duff2.c:22:1:22:1 | NoOp: return ... | -| duff.c:15:1:15:1 | NoOp: return ... | -| dummyblock.c:4:1:4:1 | NoOp: return ... | -| ellipsisexceptionhandler.cpp:12:1:12:1 | NoOp: return ... | -| ellipsisexceptionhandler.cpp:19:1:19:1 | NoOp: return ... | -| emptyblock.c:5:1:5:1 | NoOp: return ... | -| enum.c:6:9:6:9 | Store: (int)... | -| exceptionhandler.cpp:24:1:24:1 | NoOp: return ... | -| exprstmt.c:4:1:4:1 | NoOp: return ... | -| fieldaccess.cpp:10:1:10:1 | NoOp: return ... | | file://:0:0:0:0 | CompareNE: (bool)... | | file://:0:0:0:0 | CompareNE: (bool)... | | file://:0:0:0:0 | CompareNE: (bool)... | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#2 | -| forstmt.cpp:6:1:6:1 | NoOp: return ... | -| forstmt.cpp:11:1:11:1 | NoOp: return ... | -| forstmt.cpp:21:1:21:1 | NoOp: return ... | -| gotostmt.c:5:1:5:1 | NoOp: return ... | -| ifelsestmt.c:9:1:9:1 | NoOp: return ... | -| ifelsestmt.c:17:1:17:1 | NoOp: return ... | -| ifelsestmt.c:27:1:27:1 | NoOp: return ... | -| ifelsestmt.c:35:1:35:1 | NoOp: return ... | -| ifelsestmt.c:45:1:45:1 | NoOp: return ... | -| ifstmt.c:6:1:6:1 | NoOp: return ... | -| ifstmt.c:12:1:12:1 | NoOp: return ... | -| ifstmt.c:19:1:19:1 | NoOp: return ... | -| ifstmt.c:25:1:25:1 | NoOp: return ... | -| ifstmt.c:32:1:32:1 | NoOp: return ... | -| initializer.c:4:1:4:1 | NoOp: return ... | -| ir.cpp:41:1:41:1 | NoOp: return ... | -| ir.cpp:48:1:48:1 | NoOp: return ... | -| ir.cpp:85:1:85:1 | NoOp: return ... | -| ir.cpp:96:1:96:1 | NoOp: return ... | -| ir.cpp:105:1:105:1 | NoOp: return ... | -| ir.cpp:112:1:112:1 | NoOp: return ... | -| ir.cpp:131:1:131:1 | NoOp: return ... | -| ir.cpp:142:1:142:1 | NoOp: return ... | -| ir.cpp:151:1:151:1 | NoOp: return ... | -| ir.cpp:153:22:153:22 | ReturnIndirection: p | -| ir.cpp:171:23:171:23 | ReturnIndirection: p | -| ir.cpp:191:1:191:1 | NoOp: return ... | -| ir.cpp:193:34:193:34 | ReturnIndirection: q | -| ir.cpp:204:26:204:26 | ReturnIndirection: p | -| ir.cpp:228:1:228:1 | NoOp: return ... | -| ir.cpp:233:1:233:1 | NoOp: return ... | -| ir.cpp:251:1:251:1 | NoOp: return ... | -| ir.cpp:257:1:257:1 | NoOp: return ... | -| ir.cpp:263:1:263:1 | NoOp: return ... | -| ir.cpp:283:1:283:1 | NoOp: return ... | -| ir.cpp:296:1:296:1 | NoOp: return ... | -| ir.cpp:309:1:309:1 | NoOp: return ... | -| ir.cpp:315:1:315:1 | NoOp: return ... | -| ir.cpp:323:1:323:1 | NoOp: return ... | -| ir.cpp:331:1:331:1 | NoOp: return ... | -| ir.cpp:339:1:339:1 | NoOp: return ... | -| ir.cpp:358:1:358:1 | NoOp: return ... | -| ir.cpp:367:1:367:1 | NoOp: return ... | -| ir.cpp:374:1:374:1 | NoOp: return ... | -| ir.cpp:410:1:410:1 | NoOp: return ... | -| ir.cpp:431:1:431:1 | NoOp: return ... | -| ir.cpp:445:1:445:1 | NoOp: return ... | -| ir.cpp:459:1:459:1 | NoOp: return ... | -| ir.cpp:473:1:473:1 | NoOp: return ... | -| ir.cpp:480:1:480:1 | NoOp: return ... | -| ir.cpp:484:1:484:1 | NoOp: return ... | -| ir.cpp:490:1:490:1 | NoOp: return ... | -| ir.cpp:494:1:494:1 | NoOp: return ... | -| ir.cpp:501:1:501:1 | NoOp: return ... | -| ir.cpp:510:1:510:1 | NoOp: return ... | -| ir.cpp:517:1:517:1 | NoOp: return ... | -| ir.cpp:523:1:523:1 | NoOp: return ... | -| ir.cpp:533:1:533:1 | NoOp: return ... | -| ir.cpp:537:9:537:15 | NoOp: return ... | -| ir.cpp:541:1:541:1 | NoOp: return ... | -| ir.cpp:580:1:580:1 | NoOp: return ... | -| ir.cpp:586:1:586:1 | NoOp: return ... | -| ir.cpp:595:1:595:1 | NoOp: return ... | -| ir.cpp:620:1:620:1 | NoOp: return ... | -| ir.cpp:622:37:622:37 | ReturnIndirection: p | -| ir.cpp:650:5:650:5 | NoOp: return ... | -| ir.cpp:656:5:656:5 | NoOp: return ... | -| ir.cpp:664:5:664:5 | NoOp: return ... | -| ir.cpp:689:1:689:1 | NoOp: return ... | -| ir.cpp:695:1:695:1 | NoOp: return ... | -| ir.cpp:701:1:701:1 | NoOp: return ... | -| ir.cpp:743:1:743:1 | NoOp: return ... | -| ir.cpp:749:3:749:3 | NoOp: return ... | -| ir.cpp:751:3:751:3 | CallSideEffect: call to ~String | -| ir.cpp:758:3:758:3 | NoOp: return ... | -| ir.cpp:760:3:760:3 | CallSideEffect: call to ~Base | -| ir.cpp:767:3:767:3 | NoOp: return ... | -| ir.cpp:769:3:769:3 | CallSideEffect: call to ~Middle | -| ir.cpp:776:3:776:3 | NoOp: return ... | -| ir.cpp:778:3:778:3 | CallSideEffect: call to ~Base | -| ir.cpp:785:3:785:3 | NoOp: return ... | -| ir.cpp:787:3:787:3 | CallSideEffect: call to ~Base | -| ir.cpp:794:3:794:3 | NoOp: return ... | -| ir.cpp:796:3:796:3 | CallSideEffect: call to ~Base | -| ir.cpp:840:1:840:1 | NoOp: return ... | -| ir.cpp:842:8:842:8 | NoOp: return ... | -| ir.cpp:846:8:846:8 | CallSideEffect: call to ~PolymorphicBase | -| ir.cpp:846:8:846:8 | NoOp: return ... | -| ir.cpp:865:1:865:1 | NoOp: return ... | -| ir.cpp:869:1:869:1 | NoOp: return ... | -| ir.cpp:881:1:881:1 | NoOp: return ... | -| ir.cpp:883:47:883:47 | ReturnIndirection: p | -| ir.cpp:898:1:898:1 | NoOp: return ... | -| ir.cpp:902:1:902:1 | NoOp: return ... | -| ir.cpp:907:1:907:1 | NoOp: return ... | -| ir.cpp:948:1:948:1 | NoOp: return ... | -| ir.cpp:959:1:959:1 | NoOp: return ... | -| landexpr.c:6:1:6:1 | NoOp: return ... | -| lorexpr.c:6:1:6:1 | NoOp: return ... | -| ltrbinopexpr.c:43:1:43:1 | NoOp: return ... | -| membercallexpr.cpp:10:1:10:1 | NoOp: return ... | -| membercallexpr_args.cpp:11:1:11:1 | NoOp: return ... | -| misc.c:89:1:89:1 | NoOp: return ... | -| misc.c:91:54:91:55 | ReturnIndirection: sp | -| misc.c:142:1:142:1 | NoOp: return ... | -| misc.c:150:1:150:1 | NoOp: return ... | -| misc.c:161:1:161:1 | NoOp: return ... | -| misc.c:166:1:166:1 | NoOp: return ... | | misc.c:171:10:171:13 | Uninitialized: definition of str2 | | misc.c:171:15:171:31 | Add: ... + ... | | misc.c:173:14:173:26 | Mul: ... * ... | @@ -230,10 +42,6 @@ instructionWithoutSuccessor | misc.c:174:17:174:22 | CallSideEffect: call to getInt | | misc.c:174:30:174:35 | CallSideEffect: call to getInt | | misc.c:174:55:174:60 | Store: (char ****)... | -| misc.c:175:1:175:1 | NoOp: return ... | -| misc.c:181:1:181:1 | NoOp: return ... | -| misc.c:184:5:184:11 | NoOp: return ... | -| misc.c:197:23:197:25 | ReturnIndirection: fmt | | misc.c:219:47:219:48 | InitializeIndirection: sp | | misc.c:221:10:221:10 | Store: 1 | | misc.c:222:10:222:10 | Store: 2 | @@ -245,104 +53,20 @@ instructionWithoutSuccessor | ms_try_except.cpp:17:13:17:17 | Store: ... = ... | | ms_try_except.cpp:19:17:19:21 | Sub: ... - ... | | ms_try_except.cpp:20:9:20:13 | Store: ... = ... | -| ms_try_except.cpp:23:1:23:1 | NoOp: return ... | | ms_try_mix.cpp:11:12:11:15 | CallSideEffect: call to C | | ms_try_mix.cpp:16:13:16:19 | ThrowValue: throw ... | | ms_try_mix.cpp:18:16:18:19 | CallSideEffect: call to C | | ms_try_mix.cpp:20:15:20:39 | Constant: 1 | | ms_try_mix.cpp:21:16:21:19 | CallSideEffect: call to C | -| ms_try_mix.cpp:25:1:25:1 | NoOp: return ... | | ms_try_mix.cpp:28:12:28:15 | CallSideEffect: call to C | | ms_try_mix.cpp:33:13:33:19 | ThrowValue: throw ... | | ms_try_mix.cpp:35:16:35:19 | CallSideEffect: call to C | | ms_try_mix.cpp:38:16:38:19 | CallSideEffect: call to C | -| ms_try_mix.cpp:42:1:42:1 | NoOp: return ... | | ms_try_mix.cpp:48:10:48:13 | CallSideEffect: call to C | | ms_try_mix.cpp:51:5:51:11 | ThrowValue: throw ... | | ms_try_mix.cpp:53:13:54:3 | NoOp: { ... } | -| ms_try_mix.cpp:55:1:55:1 | NoOp: return ... | -| newexpr.cpp:9:1:9:1 | NoOp: return ... | -| no_dynamic_init.cpp:6:3:6:3 | NoOp: return ... | -| nodefaultswitchstmt.c:7:1:7:1 | NoOp: return ... | -| nonmembercallexpr.c:1:12:1:12 | NoOp: return ... | -| nonmembercallexpr.c:6:1:6:1 | NoOp: return ... | -| nonmemberfp2callexpr.c:6:1:6:1 | NoOp: return ... | -| nonmemberfpcallexpr.c:5:1:5:1 | NoOp: return ... | -| ops.cpp:14:29:14:29 | NoOp: return ... | -| ops.cpp:15:30:15:30 | NoOp: return ... | -| ops.cpp:28:1:28:1 | NoOp: return ... | -| parameterinitializer.cpp:4:12:4:12 | Store: 5 | -| parameterinitializer.cpp:9:1:9:1 | NoOp: return ... | -| parameterinitializer.cpp:13:18:13:18 | NoOp: return ... | -| parameterinitializer.cpp:15:28:15:28 | NoOp: return ... | -| pmcallexpr.cpp:10:1:10:1 | NoOp: return ... | | pointer_to_member.cpp:36:11:36:30 | FieldAddress: {...} | | pointer_to_member.cpp:36:11:36:30 | FieldAddress: {...} | -| pointer_to_member.cpp:37:1:37:1 | NoOp: return ... | -| pruning.c:6:9:6:15 | NoOp: return ... | -| pruning.c:10:1:10:1 | NoOp: return ... | -| pruning.c:14:9:14:15 | NoOp: return ... | -| pruning.c:18:1:18:1 | NoOp: return ... | -| pruning.c:22:9:22:15 | NoOp: return ... | -| pruning.c:26:1:26:1 | NoOp: return ... | -| pruning.c:30:9:30:15 | NoOp: return ... | -| pruning.c:34:1:34:1 | NoOp: return ... | -| pruning.c:38:9:38:15 | NoOp: return ... | -| pruning.c:42:1:42:1 | NoOp: return ... | -| pruning.c:46:9:46:15 | NoOp: return ... | -| pruning.c:50:1:50:1 | NoOp: return ... | -| pruning.c:54:9:54:15 | NoOp: return ... | -| pruning.c:58:1:58:1 | NoOp: return ... | -| pruning.c:62:9:62:15 | NoOp: return ... | -| pruning.c:66:1:66:1 | NoOp: return ... | -| pruning.c:71:9:71:15 | NoOp: return ... | -| pruning.c:75:1:75:1 | NoOp: return ... | -| pruning.c:80:9:80:15 | NoOp: return ... | -| pruning.c:84:1:84:1 | NoOp: return ... | -| pruning.c:89:9:89:15 | NoOp: return ... | -| pruning.c:93:1:93:1 | NoOp: return ... | -| pruning.c:98:9:98:15 | NoOp: return ... | -| pruning.c:102:1:102:1 | NoOp: return ... | -| pruning.c:107:9:107:15 | NoOp: return ... | -| pruning.c:111:1:111:1 | NoOp: return ... | -| pruning.c:116:9:116:15 | NoOp: return ... | -| pruning.c:120:1:120:1 | NoOp: return ... | -| pruning.c:125:9:125:15 | NoOp: return ... | -| pruning.c:129:1:129:1 | NoOp: return ... | -| pruning.c:134:9:134:15 | NoOp: return ... | -| pruning.c:138:1:138:1 | NoOp: return ... | -| pruning.c:144:1:144:1 | NoOp: return ... | -| pruning.c:150:1:150:1 | NoOp: return ... | -| pruning.c:156:1:156:1 | NoOp: return ... | -| pruning.c:162:1:162:1 | NoOp: return ... | -| pruning.c:169:1:169:1 | NoOp: return ... | -| pruning.c:176:1:176:1 | NoOp: return ... | -| pruning.c:183:1:183:1 | NoOp: return ... | -| pruning.c:190:1:190:1 | NoOp: return ... | -| pruning.c:198:1:198:1 | NoOp: return ... | -| questionexpr.c:4:1:4:1 | NoOp: return ... | -| rethrow_error.cpp:3:13:3:13 | NoOp: return ... | -| rethrow_error.cpp:4:21:4:21 | NoOp: return ... | -| rethrow_error.cpp:22:1:22:1 | NoOp: return ... | -| returnstmt.c:3:5:3:11 | NoOp: return ... | -| returnstmt.c:4:5:4:5 | NoOp: ; | -| revsubscriptexpr.c:5:1:5:1 | NoOp: return ... | -| shortforstmt.cpp:6:1:6:1 | NoOp: return ... | -| shortforstmt.cpp:14:1:14:1 | NoOp: return ... | -| shortforstmt.cpp:24:1:24:1 | NoOp: return ... | -| shortforstmt.cpp:31:1:31:1 | NoOp: return ... | -| shortforstmt.cpp:38:1:38:1 | NoOp: return ... | -| statements.cpp:5:1:5:1 | NoOp: return ... | -| statements.cpp:10:1:10:1 | NoOp: return ... | -| statements.cpp:16:5:16:11 | NoOp: return ... | -| statements.cpp:19:1:19:1 | NoOp: return ... | -| statements.cpp:28:1:28:1 | NoOp: return ... | -| statements.cpp:36:1:36:1 | NoOp: return ... | -| statements.cpp:57:1:57:1 | NoOp: return ... | -| statements.h:3:3:3:3 | NoOp: return ... | -| static_init_templates.cpp:2:21:2:23 | ReturnIndirection: ref | -| static_init_templates.cpp:27:1:27:1 | NoOp: return ... | -| static_init_templates.cpp:34:1:34:1 | NoOp: return ... | | static_init_templates.cpp:80:27:80:36 | Convert: (void *)... | | static_init_templates.cpp:80:27:80:36 | Convert: (void *)... | | static_init_templates.cpp:89:27:89:36 | Convert: (void *)... | @@ -351,78 +75,9 @@ instructionWithoutSuccessor | static_init_templates.cpp:97:27:97:36 | Convert: (void *)... | | static_init_templates.cpp:105:27:105:27 | Constant: (void *)... | | static_init_templates.cpp:105:27:105:27 | Constant: (void *)... | -| static_init_templates.cpp:119:1:119:1 | NoOp: return ... | -| static_init_templates.cpp:227:30:227:30 | NoOp: return ... | -| static_init_templates.cpp:233:35:233:35 | NoOp: return ... | -| static_init_templates.cpp:236:7:236:7 | NoOp: return ... | -| static_init_templates.cpp:240:7:240:7 | NoOp: return ... | -| static_init_templates.cpp:252:1:252:1 | NoOp: return ... | -| staticlocals.cpp:15:1:15:1 | NoOp: return ... | -| staticlocals.cpp:22:19:22:19 | NoOp: return ... | -| staticlocals.cpp:30:1:30:1 | NoOp: return ... | -| staticmembercallexpr.cpp:10:1:10:1 | NoOp: return ... | -| staticmembercallexpr_args.cpp:11:1:11:1 | NoOp: return ... | -| stmt_expr.cpp:19:1:19:1 | NoOp: return ... | | stmt_expr.cpp:27:5:27:15 | Store: ... = ... | | stmt_expr.cpp:29:11:32:11 | CopyValue: (statement expression) | | stmt_in_type.cpp:5:53:5:53 | Constant: 1 | -| stmt_in_type.cpp:6:1:6:1 | NoOp: return ... | -| stream_it.cpp:9:27:9:27 | ReturnIndirection: t | -| subscriptexpr.c:5:1:5:1 | NoOp: return ... | -| switchstmt.c:8:1:8:1 | NoOp: return ... | -| test.c:8:1:8:1 | NoOp: return ... | -| test.c:16:1:16:1 | NoOp: return ... | -| test.c:24:1:24:1 | NoOp: return ... | -| test.c:31:5:31:11 | NoOp: return ... | -| test.c:39:5:39:11 | NoOp: return ... | -| test.c:47:5:47:11 | NoOp: return ... | -| test.c:54:5:54:11 | NoOp: return ... | -| test.c:61:5:61:11 | NoOp: return ... | -| test.c:68:5:68:11 | NoOp: return ... | -| test.c:75:5:75:11 | NoOp: return ... | -| test.c:82:5:82:11 | NoOp: return ... | -| test.c:89:5:89:11 | NoOp: return ... | -| test.c:94:5:94:11 | NoOp: return ... | -| test.c:99:5:99:11 | NoOp: return ... | -| test.c:104:5:104:11 | NoOp: return ... | -| test.c:110:13:110:19 | NoOp: return ... | -| test.c:112:13:112:19 | NoOp: return ... | -| test.c:117:13:117:19 | NoOp: return ... | -| test.c:119:13:119:19 | NoOp: return ... | -| test.c:121:5:121:11 | NoOp: return ... | -| test.c:127:13:127:19 | NoOp: return ... | -| test.c:129:13:129:19 | NoOp: return ... | -| test.c:134:13:134:19 | NoOp: return ... | -| test.c:136:5:136:11 | NoOp: return ... | -| test.c:142:13:142:19 | NoOp: return ... | -| test.c:144:13:144:19 | NoOp: return ... | -| test.c:149:13:149:19 | NoOp: return ... | -| test.c:151:13:151:19 | NoOp: return ... | -| test.c:153:5:153:11 | NoOp: return ... | -| test.c:159:13:159:19 | NoOp: return ... | -| test.c:161:13:161:19 | NoOp: return ... | -| test.c:166:13:166:19 | NoOp: return ... | -| test.c:168:5:168:11 | NoOp: return ... | -| test.c:174:13:174:19 | NoOp: return ... | -| test.c:176:13:176:19 | NoOp: return ... | -| test.c:181:13:181:19 | NoOp: return ... | -| test.c:183:13:183:19 | NoOp: return ... | -| test.c:185:5:185:11 | NoOp: return ... | -| test.c:191:13:191:19 | NoOp: return ... | -| test.c:193:13:193:19 | NoOp: return ... | -| test.c:198:13:198:19 | NoOp: return ... | -| test.c:200:5:200:11 | NoOp: return ... | -| test.c:206:13:206:19 | NoOp: return ... | -| test.c:208:13:208:19 | NoOp: return ... | -| test.c:213:13:213:19 | NoOp: return ... | -| test.c:215:5:215:11 | NoOp: return ... | -| test.c:235:1:235:1 | NoOp: return ... | -| try_catch.cpp:2:10:2:10 | NoOp: return ... | -| try_catch.cpp:7:8:7:8 | CallSideEffect: call to ~exception | -| try_catch.cpp:7:8:7:8 | NoOp: return ... | -| try_catch.cpp:15:5:15:11 | NoOp: return ... | -| try_catch.cpp:25:1:25:1 | NoOp: return ... | -| unaryopexpr.c:14:1:14:1 | NoOp: return ... | | vla.c:5:9:5:14 | Uninitialized: definition of matrix | | vla.c:5:16:5:19 | Load: argc | | vla.c:5:22:5:25 | CallReadSideEffect: call to atoi | @@ -434,14 +89,6 @@ instructionWithoutSuccessor | vla.c:14:53:14:65 | Mul: ... * ... | | vla.c:14:74:14:79 | CallSideEffect: call to getInt | | vla.c:14:92:14:94 | Store: (char *)... | -| vla.c:15:1:15:1 | NoOp: return ... | -| void_bug.h:2:15:2:15 | NoOp: return ... | -| whilestmt.c:6:1:6:1 | NoOp: return ... | -| whilestmt.c:13:1:13:1 | NoOp: return ... | -| whilestmt.c:21:1:21:1 | NoOp: return ... | -| whilestmt.c:30:1:30:1 | NoOp: return ... | -| whilestmt.c:37:1:37:1 | NoOp: return ... | -| whilestmt.c:45:1:45:1 | NoOp: return ... | ambiguousSuccessors | allocators.cpp:14:5:14:8 | UnmodeledDefinition: main | Goto | 4 | allocators.cpp:16:8:16:10 | VariableAddress: definition of foo | | allocators.cpp:14:5:14:8 | UnmodeledDefinition: main | Goto | 4 | no_dynamic_init.cpp:10:16:10:16 | VariableAddress: definition of m | @@ -963,18 +610,9 @@ lostReachability | range_analysis.c:371:37:371:39 | Constant: 500 | backEdgeCountMismatch useNotDominatedByDefinition -| FunctionTryStmt.cpp:1:5:1:7 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | FunctionTryStmt.cpp:1:5:1:7 | IR: foo | int foo() | | VacuousDestructorCall.cpp:2:29:2:29 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | VacuousDestructorCall.cpp:2:6:2:6 | IR: CallDestructor | void CallDestructor(int, int*) | | VacuousDestructorCall.cpp:2:29:2:29 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | VacuousDestructorCall.cpp:2:6:2:6 | IR: CallDestructor | void CallDestructor(int, int*) | | 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*) | -| allocators.cpp:7:16:7:27 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | allocators.cpp:7:16:7:27 | IR: operator new | void* Foo::operator new(unsigned long, int, int) | -| allocators.cpp:14:5:14:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() | -| allocators.cpp:14:5:14:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() | -| allocators.cpp:14:5:14:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() | -| allocators.cpp:14:5:14:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() | -| builtin.c:5:5:5:11 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | builtin.c:5:5:5:11 | IR: builtin | int builtin(int, int) | -| builtin.cpp:4:4:4:4 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | builtin.cpp:4:4:4:4 | IR: addressof | int* addressof(int&) | -| condition_decls.cpp:8:3:8:14 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | condition_decls.cpp:8:3:8:14 | IR: operator int | int BoxedInt::operator 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) | @@ -1002,38 +640,8 @@ useNotDominatedByDefinition | 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) | -| conditional_destructors.cpp:9:10:9:19 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | conditional_destructors.cpp:9:10:9:19 | IR: operator== | bool C1::operator==(C1 const&) const | -| conditional_destructors.cpp:24:10:24:19 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | conditional_destructors.cpp:24:10:24:19 | IR: operator== | bool C2::operator==(C2 const&) const | -| cpp11.cpp:27:7:27:14 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | cpp11.cpp:27:7:27:14 | IR: getFirst | int range_based_for_11::getFirst() | | 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() | -| cpp11.cpp:65:23:65:23 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | cpp11.cpp:65:23:65:23 | IR: operator() | int (void lambda::simple(int))::(lambda [] type at line 65, col. 20)::operator()() const | -| cpp11.cpp:106:7:106:9 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | cpp11.cpp:106:7:106:9 | IR: ret | int synthetic_dtor_calls::ret() | -| cpp11.cpp:141:7:141:7 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | cpp11.cpp:141:7:141:7 | IR: g | int synthetic_dtor_calls::g(int) | -| destructors.cpp:6:5:6:20 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | destructors.cpp:6:5:6:20 | IR: destructors_main | int destructors_main(HasDtor) | -| destructors.cpp:49:7:49:7 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | destructors.cpp:49:7:49:7 | IR: f | int cond_destruct::f(int) | | 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() | -| ir.cpp:235:5:235:14 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:235:5:235:14 | IR: Parameters | int Parameters(int, int) | -| ir.cpp:341:5:341:15 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:341:5:341:15 | IR: Dereference | int Dereference(int*) | -| ir.cpp:348:6:348:14 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:348:6:348:14 | IR: AddressOf | int* AddressOf() | -| ir.cpp:376:5:376:11 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:376:5:376:11 | IR: CallAdd | int CallAdd(int, int) | -| ir.cpp:380:5:380:9 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:380:5:380:9 | IR: Comma | int Comma(int, int) | -| ir.cpp:422:7:422:18 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:422:7:422:18 | IR: ReturnStruct | Point ReturnStruct(Point) | -| ir.cpp:543:5:543:20 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:543:5:543:20 | IR: EarlyReturnValue | int EarlyReturnValue(int, int) | -| ir.cpp:551:5:551:18 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:551:5:551:18 | IR: CallViaFuncPtr | int CallViaFuncPtr(int(*)(int)) | -| ir.cpp:560:5:560:14 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:560:5:560:14 | IR: EnumSwitch | int EnumSwitch(E) | -| ir.cpp:630:16:630:35 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:630:16:630:35 | IR: StaticMemberFunction | int C::StaticMemberFunction(int) | -| ir.cpp:634:9:634:30 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:634:9:634:30 | IR: InstanceMemberFunction | int C::InstanceMemberFunction(int) | -| ir.cpp:638:17:638:37 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:638:17:638:37 | IR: VirtualMemberFunction | int C::VirtualMemberFunction(int) | -| ir.cpp:675:5:675:18 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:675:5:675:18 | IR: DerefReference | int DerefReference(int&) | -| ir.cpp:679:6:679:18 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:679:6:679:18 | IR: TakeReference | int& TakeReference() | -| ir.cpp:704:3:704:3 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:704:3:704:3 | IR: min | int min(int, int) | -| ir.cpp:708:5:708:11 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:708:5:708:11 | IR: CallMin | int CallMin(int, int) | -| ir.cpp:715:12:715:12 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:715:12:715:12 | IR: Func | long Outer::Func(void*, char) | -| ir.cpp:720:8:720:29 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:720:8:720:29 | IR: CallNestedTemplateFunc | double CallNestedTemplateFunc() | -| ir.cpp:745:8:745:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:745:8:745:8 | IR: operator= | Base& Base::operator=(Base const&) | -| ir.cpp:754:8:754:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:754:8:754:8 | IR: operator= | Middle& Middle::operator=(Middle const&) | -| ir.cpp:763:8:763:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:763:8:763:8 | IR: operator= | Derived& Derived::operator=(Derived const&) | -| ir.cpp:961:5:961:18 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:961:5:961:18 | IR: designatedInit | int designatedInit() | | 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) | @@ -1054,16 +662,10 @@ useNotDominatedByDefinition | 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:187:5:187:9 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | misc.c:187:5:187:9 | IR: freti | int freti(int) | -| misc.c:208:1:208:3 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | misc.c:208:1:208:3 | IR: fmac | int fmac() | -| misc.c:212:5:212:16 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | misc.c:212:5:212:16 | IR: extern_local | int extern_local() | -| misc.c:219:5:219:26 | Address | Operand 'Address' 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: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:219:47:219:48 | Address | Operand 'Address' 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:219:47:219:48 | Operand | Operand 'Operand' 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*) | -| misc.c:227:7:227:28 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | misc.c:227:7:227:28 | IR: builtin_addressof_test | void* builtin_addressof_test() | -| ms_assume.cpp:11:5:11:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ms_assume.cpp:11:5:11:8 | IR: main | int main(int, char*[]) | | 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) | @@ -1079,74 +681,12 @@ useNotDominatedByDefinition | 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() | -| no_dynamic_init.cpp:9:5:9:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() | -| no_dynamic_init.cpp:9:5:9:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() | -| no_dynamic_init.cpp:9:5:9:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() | -| no_dynamic_init.cpp:9:5:9:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() | -| parameterinitializer.cpp:18:5:18:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() | -| parameterinitializer.cpp:18:5:18:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() | -| parameterinitializer.cpp:18:5:18:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() | -| parameterinitializer.cpp:18:5:18:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() | -| pointer_to_member.cpp:14:5:14:9 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | pointer_to_member.cpp:14:5:14:9 | IR: usePM | int usePM(int PM::*) | | 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() | -| range_analysis.c:5:5:5:9 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:5:5:5:9 | IR: test1 | int test1(List*) | -| range_analysis.c:13:5:13:9 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:13:5:13:9 | IR: test2 | int test2(List*) | -| range_analysis.c:21:5:21:9 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:21:5:21:9 | IR: test3 | int test3(List*) | -| range_analysis.c:30:5:30:9 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:30:5:30:9 | IR: test4 | int test4() | -| range_analysis.c:39:5:39:9 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:39:5:39:9 | IR: test5 | int test5() | -| range_analysis.c:48:5:48:9 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:48:5:48:9 | IR: test6 | int test6() | -| range_analysis.c:57:5:57:9 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:57:5:57:9 | IR: test7 | int test7(int) | -| range_analysis.c:66:5:66:9 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:66:5:66:9 | IR: test8 | int test8(int, int) | -| range_analysis.c:75:5:75:9 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:75:5:75:9 | IR: test9 | int test9(int, int) | -| range_analysis.c:88:5:88:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:88:5:88:10 | IR: test10 | int test10(int, int) | -| range_analysis.c:98:5:98:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:98:5:98:10 | IR: test11 | int test11(char*) | -| range_analysis.c:117:11:117:23 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:117:11:117:23 | IR: test12_helper | size_type test12_helper() | -| range_analysis.c:122:5:122:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:122:5:122:10 | IR: test12 | int test12() | -| range_analysis.c:134:5:134:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:134:5:134:10 | IR: test13 | int test13(char, int) | -| range_analysis.c:143:5:143:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:143:5:143:10 | IR: test14 | int test14(int) | -| range_analysis.c:153:11:153:16 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:153:11:153:16 | IR: test15 | long long test15(long long) | -| range_analysis.c:158:5:158:14 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:158:5:158:14 | IR: test_unary | int test_unary(int) | -| range_analysis.c:197:5:197:15 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:197:5:197:15 | IR: test_mult01 | int test_mult01(int, int) | -| range_analysis.c:225:5:225:15 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:225:5:225:15 | IR: test_mult02 | int test_mult02(int, int) | -| range_analysis.c:253:5:253:15 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:253:5:253:15 | IR: test_mult03 | int test_mult03(int, int) | -| range_analysis.c:281:5:281:15 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:281:5:281:15 | IR: test_mult04 | int test_mult04(int, int) | -| range_analysis.c:309:5:309:15 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:309:5:309:15 | IR: test_mult05 | int test_mult05(int, int) | -| range_analysis.c:336:5:336:10 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:336:5:336:10 | IR: test16 | int test16(int) | -| range_analysis.c:355:14:355:27 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:355:14:355:27 | IR: test_ternary01 | unsigned int test_ternary01(unsigned int) | -| range_analysis.c:377:14:377:27 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:377:14:377:27 | IR: test_ternary02 | unsigned int test_ternary02(unsigned int) | -| range_analysis.c:393:14:393:25 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | range_analysis.c:393:14:393:25 | IR: test_comma01 | unsigned int test_comma01(unsigned int) | -| rethrow_error.cpp:8:5:8:5 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | rethrow_error.cpp:8:5:8:5 | IR: fun2 | int fun2() | -| returnstmt.c:7:5:7:14 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | returnstmt.c:7:5:7:14 | IR: return_int | int return_int() | -| static_init_templates.cpp:77:28:77:28 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | static_init_templates.cpp:77:28:77:28 | IR: instantiatedTemplateFunction | void* instantiatedTemplateFunction() | -| static_init_templates.cpp:77:28:77:28 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | static_init_templates.cpp:77:28:77:28 | IR: instantiatedTemplateFunction | void* instantiatedTemplateFunction() | -| static_init_templates.cpp:86:28:86:28 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | static_init_templates.cpp:86:28:86:28 | IR: instantiatedTemplateFunction2 | void* instantiatedTemplateFunction2() | -| static_init_templates.cpp:86:28:86:28 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | static_init_templates.cpp:86:28:86:28 | IR: instantiatedTemplateFunction2 | void* instantiatedTemplateFunction2() | -| static_init_templates.cpp:94:28:94:28 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | static_init_templates.cpp:94:28:94:28 | IR: instantiatedTemplateFunction3 | void* instantiatedTemplateFunction3() | -| static_init_templates.cpp:94:28:94:28 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | static_init_templates.cpp:94:28:94:28 | IR: instantiatedTemplateFunction3 | void* instantiatedTemplateFunction3() | -| static_init_templates.cpp:102:28:102:28 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | static_init_templates.cpp:102:28:102:28 | IR: instantiatedTemplateFunction4 | void* instantiatedTemplateFunction4() | -| static_init_templates.cpp:102:28:102:28 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | static_init_templates.cpp:102:28:102:28 | IR: instantiatedTemplateFunction4 | void* instantiatedTemplateFunction4() | -| static_init_templates.cpp:122:7:122:25 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | static_init_templates.cpp:122:7:122:25 | IR: nonTemplateFunction | void* nonTemplateFunction() | -| static_init_templates.cpp:130:7:130:26 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | static_init_templates.cpp:130:7:130:26 | IR: nonTemplateFunction2 | void* nonTemplateFunction2() | -| staticlocals.cpp:3:5:3:5 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | staticlocals.cpp:3:5:3:5 | IR: g | int staticlocals::g() | -| staticlocals.cpp:7:5:7:5 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | staticlocals.cpp:7:5:7:5 | IR: h | int staticlocals::h() | -| staticlocals.cpp:17:15:17:20 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | staticlocals.cpp:17:15:17:20 | IR: addOne | int staticlocals::addOne(int) | | 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) | -| stream_it.cpp:4:6:4:6 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | stream_it.cpp:4:6:4:6 | IR: begin | int* vector::begin() | -| stream_it.cpp:5:6:5:6 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | stream_it.cpp:5:6:5:6 | IR: end | int* vector::end() | -| stream_it.cpp:16:5:16:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() | -| stream_it.cpp:16:5:16:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() | -| stream_it.cpp:16:5:16:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() | -| stream_it.cpp:16:5:16:8 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() | -| switchbody.c:4:5:4:16 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | switchbody.c:4:5:4:16 | IR: switch_block | int switch_block(int) | -| switchbody.c:15:5:15:17 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | switchbody.c:15:5:15:17 | IR: switch_single | int switch_single(int) | -| switchbody.c:27:5:27:19 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | switchbody.c:27:5:27:19 | IR: switch_notblock | int switch_notblock(int) | -| test.c:218:5:218:11 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | test.c:218:5:218:11 | IR: f_and_1 | int f_and_1(int, int) | -| test.c:225:5:225:11 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | test.c:225:5:225:11 | IR: f_and_2 | int f_and_2(int, 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 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | vla.c:3:5:3:8 | IR: main | int main(int, char**) | | 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:3:27:3:30 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | vla.c:3:5:3:8 | IR: main | int main(int, char**) | | vla.c:3:27:3:30 | Operand | Operand 'Operand' is not dominated by its definition in function '$@'. | vla.c:3:5:3:8 | IR: main | int main(int, char**) | @@ -1159,7 +699,6 @@ useNotDominatedByDefinition | 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() | -| void_bug.cpp:3:5:3:12 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | void_bug.cpp:3:5:3:12 | IR: void_bug | int void_bug() | missingCanonicalLanguageType multipleCanonicalLanguageTypes missingIRType diff --git a/cpp/ql/test/library-tests/syntax-zoo/tellDifferent.expected b/cpp/ql/test/library-tests/syntax-zoo/tellDifferent.expected index 0e06bb202c4..ae6f3429892 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/tellDifferent.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/tellDifferent.expected @@ -1,3 +1,14 @@ +| pointer_to_member__pmIsConstT | pointer_to_member.cpp:41:3:44:29 | declaration | pointer_to_member.cpp:44:11:44:28 | initializer for pms | Standard edge, only from QL | uninstantiated | +| pointer_to_member__pmIsConstT | pointer_to_member.cpp:41:3:44:29 | declaration | pointer_to_member.cpp:45:1:45:1 | return ... | Standard edge, only from extractor | uninstantiated | +| pointer_to_member__pmIsConstT | pointer_to_member.cpp:44:11:44:28 | initializer for pms | pointer_to_member.cpp:44:14:44:18 | x1 | Standard edge, only from QL | uninstantiated | +| pointer_to_member__pmIsConstT | pointer_to_member.cpp:44:11:44:28 | {...} | pointer_to_member.cpp:45:1:45:1 | return ... | Standard edge, only from QL | uninstantiated | +| pointer_to_member__pmIsConstT | pointer_to_member.cpp:44:13:44:18 | & ... | pointer_to_member.cpp:44:22:44:26 | f1 | Standard edge, only from QL | uninstantiated | +| pointer_to_member__pmIsConstT | pointer_to_member.cpp:44:14:44:18 | x1 | pointer_to_member.cpp:44:13:44:18 | & ... | Standard edge, only from QL | uninstantiated | +| pointer_to_member__pmIsConstT | pointer_to_member.cpp:44:21:44:26 | & ... | pointer_to_member.cpp:44:11:44:28 | {...} | Standard edge, only from QL | uninstantiated | +| pointer_to_member__pmIsConstT | pointer_to_member.cpp:44:22:44:26 | f1 | pointer_to_member.cpp:44:21:44:26 | & ... | Standard edge, only from QL | uninstantiated | | staticlocals__staticlocals_f2 | file://:0:0:0:0 | call to C | staticlocals.cpp:30:1:30:1 | return ... | Standard edge, only from QL | | | staticlocals__staticlocals_f2 | file://:0:0:0:0 | initializer for c | file://:0:0:0:0 | call to C | Standard edge, only from QL | | | staticlocals__staticlocals_f2 | staticlocals.cpp:29:5:29:17 | declaration | file://:0:0:0:0 | initializer for c | Standard edge, only from QL | | +| staticlocals__staticlocals_f3 | staticlocals.cpp:39:3:39:34 | declaration | staticlocals.cpp:39:18:39:33 | initializer for i | Standard edge, only from QL | uninstantiated | +| staticlocals__staticlocals_f3 | staticlocals.cpp:39:18:39:33 | initializer for i | staticlocals.cpp:39:18:39:33 | value | Standard edge, only from QL | uninstantiated | +| staticlocals__staticlocals_f3 | staticlocals.cpp:39:18:39:33 | value | staticlocals.cpp:40:1:40:1 | return ... | Standard edge, only from QL | uninstantiated | diff --git a/cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_sanity.expected b/cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_sanity.expected index 8173410649e..05d03810a40 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_sanity.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/unaliased_ssa_sanity.expected @@ -1,116 +1,10 @@ missingOperand -| FunctionTryStmt.cpp:1:5:1:7 | ReturnValue: foo | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | FunctionTryStmt.cpp:1:5:1:7 | IR: foo | int foo() | -| allocators.cpp:7:16:7:27 | ReturnValue: operator new | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | allocators.cpp:7:16:7:27 | IR: operator new | void* Foo::operator new(unsigned long, int, int) | -| allocators.cpp:14:5:14:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() | -| allocators.cpp:14:5:14:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() | -| allocators.cpp:14:5:14:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() | -| allocators.cpp:14:5:14:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() | -| builtin.c:5:5:5:11 | ReturnValue: builtin | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | builtin.c:5:5:5:11 | IR: builtin | int builtin(int, int) | -| builtin.cpp:4:4:4:4 | ReturnValue: addressof | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | builtin.cpp:4:4:4:4 | IR: addressof | int* addressof(int&) | -| condition_decls.cpp:8:3:8:14 | ReturnValue: operator int | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | condition_decls.cpp:8:3:8:14 | IR: operator int | int BoxedInt::operator int() | -| conditional_destructors.cpp:9:10:9:19 | ReturnValue: operator== | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | conditional_destructors.cpp:9:10:9:19 | IR: operator== | bool C1::operator==(C1 const&) const | -| conditional_destructors.cpp:24:10:24:19 | ReturnValue: operator== | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | conditional_destructors.cpp:24:10:24:19 | IR: operator== | bool C2::operator==(C2 const&) const | -| cpp11.cpp:27:7:27:14 | ReturnValue: getFirst | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | cpp11.cpp:27:7:27:14 | IR: getFirst | int range_based_for_11::getFirst() | -| cpp11.cpp:65:23:65:23 | ReturnValue: operator() | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | cpp11.cpp:65:23:65:23 | IR: operator() | int (void lambda::simple(int))::(lambda [] type at line 65, col. 20)::operator()() const | -| cpp11.cpp:106:7:106:9 | ReturnValue: ret | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | cpp11.cpp:106:7:106:9 | IR: ret | int synthetic_dtor_calls::ret() | -| cpp11.cpp:141:7:141:7 | ReturnValue: g | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | cpp11.cpp:141:7:141:7 | IR: g | int synthetic_dtor_calls::g(int) | -| destructors.cpp:6:5:6:20 | ReturnValue: destructors_main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | destructors.cpp:6:5:6:20 | IR: destructors_main | int destructors_main(HasDtor) | -| destructors.cpp:49:7:49:7 | ReturnValue: f | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | destructors.cpp:49:7:49:7 | IR: f | int cond_destruct::f(int) | -| ir.cpp:235:5:235:14 | ReturnValue: Parameters | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:235:5:235:14 | IR: Parameters | int Parameters(int, int) | -| ir.cpp:341:5:341:15 | ReturnValue: Dereference | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:341:5:341:15 | IR: Dereference | int Dereference(int*) | -| ir.cpp:348:6:348:14 | ReturnValue: AddressOf | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:348:6:348:14 | IR: AddressOf | int* AddressOf() | -| ir.cpp:376:5:376:11 | ReturnValue: CallAdd | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:376:5:376:11 | IR: CallAdd | int CallAdd(int, int) | -| ir.cpp:380:5:380:9 | ReturnValue: Comma | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:380:5:380:9 | IR: Comma | int Comma(int, int) | -| ir.cpp:422:7:422:18 | ReturnValue: ReturnStruct | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:422:7:422:18 | IR: ReturnStruct | Point ReturnStruct(Point) | -| ir.cpp:543:5:543:20 | ReturnValue: EarlyReturnValue | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:543:5:543:20 | IR: EarlyReturnValue | int EarlyReturnValue(int, int) | -| ir.cpp:551:5:551:18 | ReturnValue: CallViaFuncPtr | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:551:5:551:18 | IR: CallViaFuncPtr | int CallViaFuncPtr(int(*)(int)) | -| ir.cpp:560:5:560:14 | ReturnValue: EnumSwitch | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:560:5:560:14 | IR: EnumSwitch | int EnumSwitch(E) | -| ir.cpp:630:16:630:35 | ReturnValue: StaticMemberFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:630:16:630:35 | IR: StaticMemberFunction | int C::StaticMemberFunction(int) | -| ir.cpp:634:9:634:30 | ReturnValue: InstanceMemberFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:634:9:634:30 | IR: InstanceMemberFunction | int C::InstanceMemberFunction(int) | -| ir.cpp:638:17:638:37 | ReturnValue: VirtualMemberFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:638:17:638:37 | IR: VirtualMemberFunction | int C::VirtualMemberFunction(int) | -| ir.cpp:675:5:675:18 | ReturnValue: DerefReference | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:675:5:675:18 | IR: DerefReference | int DerefReference(int&) | -| ir.cpp:679:6:679:18 | ReturnValue: TakeReference | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:679:6:679:18 | IR: TakeReference | int& TakeReference() | -| ir.cpp:704:3:704:3 | ReturnValue: min | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:704:3:704:3 | IR: min | int min(int, int) | -| ir.cpp:708:5:708:11 | ReturnValue: CallMin | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:708:5:708:11 | IR: CallMin | int CallMin(int, int) | -| ir.cpp:715:12:715:12 | ReturnValue: Func | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:715:12:715:12 | IR: Func | long Outer::Func(void*, char) | -| ir.cpp:720:8:720:29 | ReturnValue: CallNestedTemplateFunc | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:720:8:720:29 | IR: CallNestedTemplateFunc | double CallNestedTemplateFunc() | -| ir.cpp:745:8:745:8 | ReturnValue: operator= | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:745:8:745:8 | IR: operator= | Base& Base::operator=(Base const&) | -| ir.cpp:754:8:754:8 | ReturnValue: operator= | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:754:8:754:8 | IR: operator= | Middle& Middle::operator=(Middle const&) | -| ir.cpp:763:8:763:8 | ReturnValue: operator= | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:763:8:763:8 | IR: operator= | Derived& Derived::operator=(Derived const&) | -| ir.cpp:961:5:961:18 | ReturnValue: designatedInit | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ir.cpp:961:5:961:18 | IR: designatedInit | int designatedInit() | | misc.c:125:5:125:11 | CopyValue: (statement expression) | Instruction 'CopyValue' is missing an expected operand with tag 'Unary' in function '$@'. | misc.c:97:6:97:10 | IR: misc3 | void misc3() | -| misc.c:187:5:187:9 | ReturnValue: freti | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | misc.c:187:5:187:9 | IR: freti | int freti(int) | -| misc.c:208:1:208:3 | ReturnValue: fmac | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | misc.c:208:1:208:3 | IR: fmac | int fmac() | -| misc.c:212:5:212:16 | ReturnValue: extern_local | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | misc.c:212:5:212:16 | IR: extern_local | int extern_local() | -| misc.c:227:7:227:28 | ReturnValue: builtin_addressof_test | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | misc.c:227:7:227:28 | IR: builtin_addressof_test | void* builtin_addressof_test() | -| ms_assume.cpp:11:5:11:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | ms_assume.cpp:11:5:11:8 | IR: main | int main(int, char*[]) | -| no_dynamic_init.cpp:9:5:9:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() | -| no_dynamic_init.cpp:9:5:9:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() | -| no_dynamic_init.cpp:9:5:9:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() | -| no_dynamic_init.cpp:9:5:9:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() | -| parameterinitializer.cpp:18:5:18:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() | -| parameterinitializer.cpp:18:5:18:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() | -| parameterinitializer.cpp:18:5:18:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() | -| parameterinitializer.cpp:18:5:18:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() | | parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() | | parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() | | parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() | | parameterinitializer.cpp:27:3:27:6 | IndirectReadSideEffect: my_c | Instruction 'IndirectReadSideEffect' is missing an expected operand with tag 'SideEffect' in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() | -| pointer_to_member.cpp:14:5:14:9 | ReturnValue: usePM | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | pointer_to_member.cpp:14:5:14:9 | IR: usePM | int usePM(int PM::*) | -| range_analysis.c:5:5:5:9 | ReturnValue: test1 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:5:5:5:9 | IR: test1 | int test1(List*) | -| range_analysis.c:13:5:13:9 | ReturnValue: test2 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:13:5:13:9 | IR: test2 | int test2(List*) | -| range_analysis.c:21:5:21:9 | ReturnValue: test3 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:21:5:21:9 | IR: test3 | int test3(List*) | -| range_analysis.c:30:5:30:9 | ReturnValue: test4 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:30:5:30:9 | IR: test4 | int test4() | -| range_analysis.c:39:5:39:9 | ReturnValue: test5 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:39:5:39:9 | IR: test5 | int test5() | -| range_analysis.c:48:5:48:9 | ReturnValue: test6 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:48:5:48:9 | IR: test6 | int test6() | -| range_analysis.c:57:5:57:9 | ReturnValue: test7 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:57:5:57:9 | IR: test7 | int test7(int) | -| range_analysis.c:66:5:66:9 | ReturnValue: test8 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:66:5:66:9 | IR: test8 | int test8(int, int) | -| range_analysis.c:75:5:75:9 | ReturnValue: test9 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:75:5:75:9 | IR: test9 | int test9(int, int) | -| range_analysis.c:88:5:88:10 | ReturnValue: test10 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:88:5:88:10 | IR: test10 | int test10(int, int) | -| range_analysis.c:98:5:98:10 | ReturnValue: test11 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:98:5:98:10 | IR: test11 | int test11(char*) | -| range_analysis.c:117:11:117:23 | ReturnValue: test12_helper | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:117:11:117:23 | IR: test12_helper | size_type test12_helper() | -| range_analysis.c:122:5:122:10 | ReturnValue: test12 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:122:5:122:10 | IR: test12 | int test12() | -| range_analysis.c:134:5:134:10 | ReturnValue: test13 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:134:5:134:10 | IR: test13 | int test13(char, int) | -| range_analysis.c:143:5:143:10 | ReturnValue: test14 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:143:5:143:10 | IR: test14 | int test14(int) | -| range_analysis.c:153:11:153:16 | ReturnValue: test15 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:153:11:153:16 | IR: test15 | long long test15(long long) | -| range_analysis.c:158:5:158:14 | ReturnValue: test_unary | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:158:5:158:14 | IR: test_unary | int test_unary(int) | -| range_analysis.c:197:5:197:15 | ReturnValue: test_mult01 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:197:5:197:15 | IR: test_mult01 | int test_mult01(int, int) | -| range_analysis.c:225:5:225:15 | ReturnValue: test_mult02 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:225:5:225:15 | IR: test_mult02 | int test_mult02(int, int) | -| range_analysis.c:253:5:253:15 | ReturnValue: test_mult03 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:253:5:253:15 | IR: test_mult03 | int test_mult03(int, int) | -| range_analysis.c:281:5:281:15 | ReturnValue: test_mult04 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:281:5:281:15 | IR: test_mult04 | int test_mult04(int, int) | -| range_analysis.c:309:5:309:15 | ReturnValue: test_mult05 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:309:5:309:15 | IR: test_mult05 | int test_mult05(int, int) | -| range_analysis.c:336:5:336:10 | ReturnValue: test16 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:336:5:336:10 | IR: test16 | int test16(int) | -| range_analysis.c:355:14:355:27 | ReturnValue: test_ternary01 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:355:14:355:27 | IR: test_ternary01 | unsigned int test_ternary01(unsigned int) | -| range_analysis.c:377:14:377:27 | ReturnValue: test_ternary02 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:377:14:377:27 | IR: test_ternary02 | unsigned int test_ternary02(unsigned int) | -| range_analysis.c:393:14:393:25 | ReturnValue: test_comma01 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | range_analysis.c:393:14:393:25 | IR: test_comma01 | unsigned int test_comma01(unsigned int) | -| rethrow_error.cpp:8:5:8:5 | ReturnValue: fun2 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | rethrow_error.cpp:8:5:8:5 | IR: fun2 | int fun2() | -| returnstmt.c:7:5:7:14 | ReturnValue: return_int | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | returnstmt.c:7:5:7:14 | IR: return_int | int return_int() | -| static_init_templates.cpp:77:28:77:28 | ReturnValue: instantiatedTemplateFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:77:28:77:28 | IR: instantiatedTemplateFunction | void* instantiatedTemplateFunction() | -| static_init_templates.cpp:77:28:77:28 | ReturnValue: instantiatedTemplateFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:77:28:77:28 | IR: instantiatedTemplateFunction | void* instantiatedTemplateFunction() | -| static_init_templates.cpp:86:28:86:28 | ReturnValue: instantiatedTemplateFunction2 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:86:28:86:28 | IR: instantiatedTemplateFunction2 | void* instantiatedTemplateFunction2() | -| static_init_templates.cpp:86:28:86:28 | ReturnValue: instantiatedTemplateFunction2 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:86:28:86:28 | IR: instantiatedTemplateFunction2 | void* instantiatedTemplateFunction2() | -| static_init_templates.cpp:94:28:94:28 | ReturnValue: instantiatedTemplateFunction3 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:94:28:94:28 | IR: instantiatedTemplateFunction3 | void* instantiatedTemplateFunction3() | -| static_init_templates.cpp:94:28:94:28 | ReturnValue: instantiatedTemplateFunction3 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:94:28:94:28 | IR: instantiatedTemplateFunction3 | void* instantiatedTemplateFunction3() | -| static_init_templates.cpp:102:28:102:28 | ReturnValue: instantiatedTemplateFunction4 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:102:28:102:28 | IR: instantiatedTemplateFunction4 | void* instantiatedTemplateFunction4() | -| static_init_templates.cpp:102:28:102:28 | ReturnValue: instantiatedTemplateFunction4 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:102:28:102:28 | IR: instantiatedTemplateFunction4 | void* instantiatedTemplateFunction4() | -| static_init_templates.cpp:122:7:122:25 | ReturnValue: nonTemplateFunction | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:122:7:122:25 | IR: nonTemplateFunction | void* nonTemplateFunction() | -| static_init_templates.cpp:130:7:130:26 | ReturnValue: nonTemplateFunction2 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | static_init_templates.cpp:130:7:130:26 | IR: nonTemplateFunction2 | void* nonTemplateFunction2() | -| staticlocals.cpp:3:5:3:5 | ReturnValue: g | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | staticlocals.cpp:3:5:3:5 | IR: g | int staticlocals::g() | -| staticlocals.cpp:7:5:7:5 | ReturnValue: h | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | staticlocals.cpp:7:5:7:5 | IR: h | int staticlocals::h() | -| staticlocals.cpp:17:15:17:20 | ReturnValue: addOne | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | staticlocals.cpp:17:15:17:20 | IR: addOne | int staticlocals::addOne(int) | -| stream_it.cpp:4:6:4:6 | ReturnValue: begin | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | stream_it.cpp:4:6:4:6 | IR: begin | int* vector::begin() | -| stream_it.cpp:5:6:5:6 | ReturnValue: end | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | stream_it.cpp:5:6:5:6 | IR: end | int* vector::end() | -| stream_it.cpp:16:5:16:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | allocators.cpp:14:5:14:8 | IR: main | int main() | -| stream_it.cpp:16:5:16:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | no_dynamic_init.cpp:9:5:9:8 | IR: main | int main() | -| stream_it.cpp:16:5:16:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | parameterinitializer.cpp:18:5:18:8 | IR: main | int main() | -| stream_it.cpp:16:5:16:8 | ReturnValue: main | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | stream_it.cpp:16:5:16:8 | IR: main | int main() | -| switchbody.c:4:5:4:16 | ReturnValue: switch_block | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | switchbody.c:4:5:4:16 | IR: switch_block | int switch_block(int) | -| switchbody.c:15:5:15:17 | ReturnValue: switch_single | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | switchbody.c:15:5:15:17 | IR: switch_single | int switch_single(int) | -| switchbody.c:27:5:27:19 | ReturnValue: switch_notblock | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | switchbody.c:27:5:27:19 | IR: switch_notblock | int switch_notblock(int) | -| test.c:218:5:218:11 | ReturnValue: f_and_1 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | test.c:218:5:218:11 | IR: f_and_1 | int f_and_1(int, int) | -| test.c:225:5:225:11 | ReturnValue: f_and_2 | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | test.c:225:5:225:11 | IR: f_and_2 | int f_and_2(int, int) | | try_catch.cpp:13:5:13:16 | ThrowValue: throw ... | Instruction 'ThrowValue' is missing an expected operand with tag 'Load' in function '$@'. | try_catch.cpp:11:6:11:17 | IR: bypass_catch | void bypass_catch() | -| void_bug.cpp:3:5:3:12 | ReturnValue: void_bug | Instruction 'ReturnValue' is missing an expected operand with tag 'Address' in function '$@'. | void_bug.cpp:3:5:3:12 | IR: void_bug | int void_bug() | unexpectedOperand duplicateOperand missingPhiOperand @@ -127,338 +21,22 @@ missingPhiOperand missingOperandType sideEffectWithoutPrimary instructionWithoutSuccessor -| CPP-309.cpp:8:1:8:1 | NoOp: return ... | -| CPP-309.cpp:12:1:12:1 | NoOp: return ... | -| FunctionTryStmt.cpp:11:5:11:11 | NoOp: return ... | | VacuousDestructorCall.cpp:2:29:2:29 | InitializeIndirection: y | -| VacuousDestructorCall.cpp:11:1:11:1 | NoOp: return ... | -| abortingfunctions.cpp:10:1:10:1 | NoOp: return ... | -| abortingfunctions.cpp:17:1:17:1 | NoOp: return ... | -| abortingfunctions.cpp:25:1:25:1 | NoOp: return ... | -| abortingfunctions.cpp:35:1:35:1 | NoOp: return ... | -| abortingfunctions.cpp:42:1:42:1 | NoOp: return ... | -| abortingfunctions.cpp:46:1:46:1 | NoOp: return ... | -| aggregateinitializer.c:4:1:4:1 | NoOp: return ... | -| allocators.cpp:3:39:3:39 | NoOp: return ... | -| allocators.cpp:4:25:4:25 | NoOp: return ... | -| allocators.cpp:8:37:8:40 | ReturnIndirection: self | -| array_delete.cpp:7:1:7:1 | NoOp: return ... | -| assignexpr.cpp:11:1:11:1 | NoOp: return ... | -| assume0.cpp:12:1:12:1 | NoOp: return ... | -| assume0.cpp:20:1:20:1 | NoOp: return ... | -| bad_asts.cpp:17:3:17:3 | NoOp: return ... | -| bad_asts.cpp:23:5:23:5 | NoOp: return ... | -| bad_asts.cpp:26:41:26:41 | ReturnIndirection: a | -| break_labels.c:13:12:13:17 | Store: result | -| break_labels.c:29:1:29:1 | NoOp: return ... | -| builtin.cpp:11:1:11:1 | NoOp: return ... | -| builtin.cpp:16:1:16:1 | NoOp: return ... | -| condition_decl_int.cpp:5:1:5:1 | NoOp: return ... | -| condition_decls.cpp:4:3:4:3 | NoOp: return ... | -| condition_decls.cpp:7:3:7:3 | NoOp: return ... | | condition_decls.cpp:16:19:16:20 | CallSideEffect: call to BoxedInt | | condition_decls.cpp:26:23:26:24 | CallSideEffect: call to BoxedInt | | condition_decls.cpp:41:22:41:23 | CallSideEffect: call to BoxedInt | | condition_decls.cpp:48:52:48:53 | CallSideEffect: call to BoxedInt | -| conditional_destructors.cpp:7:9:7:9 | NoOp: return ... | -| conditional_destructors.cpp:19:9:19:9 | NoOp: return ... | -| conditional_destructors.cpp:22:9:22:9 | NoOp: return ... | -| conditional_destructors.cpp:36:1:36:1 | NoOp: return ... | -| conditional_destructors.cpp:45:1:45:1 | NoOp: return ... | -| constmemberaccess.cpp:10:1:10:1 | NoOp: return ... | -| constructorinitializer.cpp:9:1:9:1 | NoOp: return ... | -| cpp11.cpp:9:3:9:3 | NoOp: return ... | -| cpp11.cpp:52:1:52:1 | NoOp: return ... | -| cpp11.cpp:61:1:61:1 | NoOp: return ... | -| cpp11.cpp:66:3:66:3 | NoOp: return ... | -| cpp11.cpp:78:3:78:3 | NoOp: return ... | -| cpp11.cpp:82:55:82:55 | NoOp: return ... | -| cpp11.cpp:83:3:83:3 | NoOp: return ... | -| cpp11.cpp:89:3:89:3 | NoOp: return ... | -| cpp11.cpp:104:3:104:3 | NoOp: return ... | -| cpp11.cpp:115:3:115:3 | NoOp: return ... | -| cpp11.cpp:136:3:136:3 | NoOp: return ... | -| cpp11.cpp:166:14:166:14 | NoOp: return ... | -| cpp11.cpp:171:3:171:3 | NoOp: return ... | | cpp17.cpp:15:11:15:21 | Convert: (void *)... | -| cpp17.cpp:18:42:18:42 | ReturnIndirection: p | -| defconstructornewexpr.cpp:5:3:5:9 | NoOp: return ... | -| defdestructordeleteexpr.cpp:6:1:6:1 | NoOp: return ... | -| deleteexpr.cpp:9:1:9:1 | NoOp: return ... | -| destructors.cpp:31:1:31:1 | NoOp: return ... | -| destructors.cpp:38:1:38:1 | NoOp: return ... | -| dostmt.c:6:1:6:1 | NoOp: return ... | -| dostmt.c:14:1:14:1 | NoOp: return ... | -| dostmt.c:23:1:23:1 | NoOp: return ... | -| dostmt.c:38:1:38:1 | NoOp: return ... | -| duff2.c:14:1:14:1 | NoOp: return ... | -| duff2.c:22:1:22:1 | NoOp: return ... | -| duff.c:15:1:15:1 | NoOp: return ... | -| dummyblock.c:4:1:4:1 | NoOp: return ... | -| ellipsisexceptionhandler.cpp:12:1:12:1 | NoOp: return ... | -| ellipsisexceptionhandler.cpp:19:1:19:1 | NoOp: return ... | -| emptyblock.c:5:1:5:1 | NoOp: return ... | -| enum.c:6:9:6:9 | Store: (int)... | -| exceptionhandler.cpp:24:1:24:1 | NoOp: return ... | -| exprstmt.c:4:1:4:1 | NoOp: return ... | -| fieldaccess.cpp:10:1:10:1 | NoOp: return ... | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#0 | -| file://:0:0:0:0 | ReturnIndirection: p#2 | -| forstmt.cpp:6:1:6:1 | NoOp: return ... | -| forstmt.cpp:11:1:11:1 | NoOp: return ... | -| forstmt.cpp:21:1:21:1 | NoOp: return ... | -| gotostmt.c:5:1:5:1 | NoOp: return ... | -| ifelsestmt.c:9:1:9:1 | NoOp: return ... | -| ifelsestmt.c:17:1:17:1 | NoOp: return ... | -| ifelsestmt.c:27:1:27:1 | NoOp: return ... | -| ifelsestmt.c:35:1:35:1 | NoOp: return ... | -| ifelsestmt.c:45:1:45:1 | NoOp: return ... | -| ifstmt.c:6:1:6:1 | NoOp: return ... | -| ifstmt.c:12:1:12:1 | NoOp: return ... | -| ifstmt.c:19:1:19:1 | NoOp: return ... | -| ifstmt.c:25:1:25:1 | NoOp: return ... | -| ifstmt.c:32:1:32:1 | NoOp: return ... | -| initializer.c:4:1:4:1 | NoOp: return ... | -| ir.cpp:41:1:41:1 | NoOp: return ... | -| ir.cpp:48:1:48:1 | NoOp: return ... | -| ir.cpp:85:1:85:1 | NoOp: return ... | -| ir.cpp:96:1:96:1 | NoOp: return ... | -| ir.cpp:105:1:105:1 | NoOp: return ... | -| ir.cpp:112:1:112:1 | NoOp: return ... | -| ir.cpp:131:1:131:1 | NoOp: return ... | -| ir.cpp:142:1:142:1 | NoOp: return ... | -| ir.cpp:151:1:151:1 | NoOp: return ... | -| ir.cpp:153:22:153:22 | ReturnIndirection: p | -| ir.cpp:171:23:171:23 | ReturnIndirection: p | -| ir.cpp:191:1:191:1 | NoOp: return ... | -| ir.cpp:193:34:193:34 | ReturnIndirection: q | -| ir.cpp:204:26:204:26 | ReturnIndirection: p | -| ir.cpp:228:1:228:1 | NoOp: return ... | -| ir.cpp:233:1:233:1 | NoOp: return ... | -| ir.cpp:251:1:251:1 | NoOp: return ... | -| ir.cpp:257:1:257:1 | NoOp: return ... | -| ir.cpp:263:1:263:1 | NoOp: return ... | -| ir.cpp:283:1:283:1 | NoOp: return ... | -| ir.cpp:296:1:296:1 | NoOp: return ... | -| ir.cpp:309:1:309:1 | NoOp: return ... | -| ir.cpp:315:1:315:1 | NoOp: return ... | -| ir.cpp:323:1:323:1 | NoOp: return ... | -| ir.cpp:331:1:331:1 | NoOp: return ... | -| ir.cpp:339:1:339:1 | NoOp: return ... | -| ir.cpp:358:1:358:1 | NoOp: return ... | -| ir.cpp:367:1:367:1 | NoOp: return ... | -| ir.cpp:374:1:374:1 | NoOp: return ... | -| ir.cpp:410:1:410:1 | NoOp: return ... | -| ir.cpp:431:1:431:1 | NoOp: return ... | -| ir.cpp:445:1:445:1 | NoOp: return ... | -| ir.cpp:459:1:459:1 | NoOp: return ... | -| ir.cpp:473:1:473:1 | NoOp: return ... | -| ir.cpp:480:1:480:1 | NoOp: return ... | -| ir.cpp:484:1:484:1 | NoOp: return ... | -| ir.cpp:490:1:490:1 | NoOp: return ... | -| ir.cpp:494:1:494:1 | NoOp: return ... | -| ir.cpp:501:1:501:1 | NoOp: return ... | -| ir.cpp:510:1:510:1 | NoOp: return ... | -| ir.cpp:517:1:517:1 | NoOp: return ... | -| ir.cpp:523:1:523:1 | NoOp: return ... | -| ir.cpp:533:1:533:1 | NoOp: return ... | -| ir.cpp:537:9:537:15 | NoOp: return ... | -| ir.cpp:541:1:541:1 | NoOp: return ... | -| ir.cpp:580:1:580:1 | NoOp: return ... | -| ir.cpp:586:1:586:1 | NoOp: return ... | -| ir.cpp:595:1:595:1 | NoOp: return ... | -| ir.cpp:620:1:620:1 | NoOp: return ... | -| ir.cpp:622:37:622:37 | ReturnIndirection: p | -| ir.cpp:650:5:650:5 | NoOp: return ... | -| ir.cpp:656:5:656:5 | NoOp: return ... | -| ir.cpp:664:5:664:5 | NoOp: return ... | -| ir.cpp:689:1:689:1 | NoOp: return ... | -| ir.cpp:695:1:695:1 | NoOp: return ... | -| ir.cpp:701:1:701:1 | NoOp: return ... | -| ir.cpp:743:1:743:1 | NoOp: return ... | -| ir.cpp:749:3:749:3 | NoOp: return ... | -| ir.cpp:751:3:751:3 | CallSideEffect: call to ~String | -| ir.cpp:758:3:758:3 | NoOp: return ... | -| ir.cpp:760:3:760:3 | CallSideEffect: call to ~Base | -| ir.cpp:767:3:767:3 | NoOp: return ... | -| ir.cpp:769:3:769:3 | CallSideEffect: call to ~Middle | -| ir.cpp:776:3:776:3 | NoOp: return ... | -| ir.cpp:778:3:778:3 | CallSideEffect: call to ~Base | -| ir.cpp:785:3:785:3 | NoOp: return ... | -| ir.cpp:787:3:787:3 | CallSideEffect: call to ~Base | -| ir.cpp:794:3:794:3 | NoOp: return ... | -| ir.cpp:796:3:796:3 | CallSideEffect: call to ~Base | -| ir.cpp:840:1:840:1 | NoOp: return ... | -| ir.cpp:842:8:842:8 | NoOp: return ... | -| ir.cpp:846:8:846:8 | CallSideEffect: call to ~PolymorphicBase | -| ir.cpp:846:8:846:8 | NoOp: return ... | -| ir.cpp:865:1:865:1 | NoOp: return ... | -| ir.cpp:869:1:869:1 | NoOp: return ... | -| ir.cpp:881:1:881:1 | NoOp: return ... | -| ir.cpp:883:47:883:47 | ReturnIndirection: p | -| ir.cpp:898:1:898:1 | NoOp: return ... | -| ir.cpp:902:1:902:1 | NoOp: return ... | -| ir.cpp:907:1:907:1 | NoOp: return ... | -| ir.cpp:948:1:948:1 | NoOp: return ... | -| ir.cpp:959:1:959:1 | NoOp: return ... | -| landexpr.c:6:1:6:1 | NoOp: return ... | -| lorexpr.c:6:1:6:1 | NoOp: return ... | -| ltrbinopexpr.c:43:1:43:1 | NoOp: return ... | -| membercallexpr.cpp:10:1:10:1 | NoOp: return ... | -| membercallexpr_args.cpp:11:1:11:1 | NoOp: return ... | -| misc.c:91:54:91:55 | ReturnIndirection: sp | -| misc.c:142:1:142:1 | NoOp: return ... | -| misc.c:150:1:150:1 | NoOp: return ... | -| misc.c:161:1:161:1 | NoOp: return ... | -| misc.c:166:1:166:1 | NoOp: return ... | | misc.c:171:10:171:13 | Uninitialized: definition of str2 | -| misc.c:181:1:181:1 | NoOp: return ... | -| misc.c:184:5:184:11 | NoOp: return ... | -| misc.c:197:23:197:25 | ReturnIndirection: fmt | | misc.c:219:47:219:48 | InitializeIndirection: sp | | ms_try_except.cpp:3:9:3:9 | Uninitialized: definition of x | | ms_try_mix.cpp:11:12:11:15 | CallSideEffect: call to C | | ms_try_mix.cpp:28:12:28:15 | CallSideEffect: call to C | | ms_try_mix.cpp:48:10:48:13 | CallSideEffect: call to C | -| newexpr.cpp:9:1:9:1 | NoOp: return ... | -| no_dynamic_init.cpp:6:3:6:3 | NoOp: return ... | -| nodefaultswitchstmt.c:7:1:7:1 | NoOp: return ... | -| nonmembercallexpr.c:1:12:1:12 | NoOp: return ... | -| nonmembercallexpr.c:6:1:6:1 | NoOp: return ... | -| nonmemberfp2callexpr.c:6:1:6:1 | NoOp: return ... | -| nonmemberfpcallexpr.c:5:1:5:1 | NoOp: return ... | -| ops.cpp:14:29:14:29 | NoOp: return ... | -| ops.cpp:15:30:15:30 | NoOp: return ... | -| ops.cpp:28:1:28:1 | NoOp: return ... | -| parameterinitializer.cpp:4:12:4:12 | Store: 5 | -| parameterinitializer.cpp:9:1:9:1 | NoOp: return ... | -| parameterinitializer.cpp:13:18:13:18 | NoOp: return ... | -| parameterinitializer.cpp:15:28:15:28 | NoOp: return ... | -| pmcallexpr.cpp:10:1:10:1 | NoOp: return ... | | pointer_to_member.cpp:36:11:36:30 | FieldAddress: {...} | -| pruning.c:10:1:10:1 | NoOp: return ... | -| pruning.c:14:9:14:15 | NoOp: return ... | -| pruning.c:22:9:22:15 | NoOp: return ... | -| pruning.c:34:1:34:1 | NoOp: return ... | -| pruning.c:38:9:38:15 | NoOp: return ... | -| pruning.c:50:1:50:1 | NoOp: return ... | -| pruning.c:54:9:54:15 | NoOp: return ... | -| pruning.c:62:9:62:15 | NoOp: return ... | -| pruning.c:71:9:71:15 | NoOp: return ... | -| pruning.c:75:1:75:1 | NoOp: return ... | -| pruning.c:80:9:80:15 | NoOp: return ... | -| pruning.c:84:1:84:1 | NoOp: return ... | -| pruning.c:89:9:89:15 | NoOp: return ... | -| pruning.c:93:1:93:1 | NoOp: return ... | -| pruning.c:98:9:98:15 | NoOp: return ... | -| pruning.c:102:1:102:1 | NoOp: return ... | -| pruning.c:107:9:107:15 | NoOp: return ... | -| pruning.c:111:1:111:1 | NoOp: return ... | -| pruning.c:116:9:116:15 | NoOp: return ... | -| pruning.c:120:1:120:1 | NoOp: return ... | -| pruning.c:125:9:125:15 | NoOp: return ... | -| pruning.c:129:1:129:1 | NoOp: return ... | -| pruning.c:134:9:134:15 | NoOp: return ... | -| pruning.c:138:1:138:1 | NoOp: return ... | -| pruning.c:144:1:144:1 | NoOp: return ... | -| pruning.c:150:1:150:1 | NoOp: return ... | -| pruning.c:156:1:156:1 | NoOp: return ... | -| pruning.c:162:1:162:1 | NoOp: return ... | -| pruning.c:169:1:169:1 | NoOp: return ... | -| pruning.c:176:1:176:1 | NoOp: return ... | -| pruning.c:183:1:183:1 | NoOp: return ... | -| pruning.c:190:1:190:1 | NoOp: return ... | -| pruning.c:198:1:198:1 | NoOp: return ... | -| questionexpr.c:4:1:4:1 | NoOp: return ... | -| rethrow_error.cpp:3:13:3:13 | NoOp: return ... | -| rethrow_error.cpp:4:21:4:21 | NoOp: return ... | -| rethrow_error.cpp:22:1:22:1 | NoOp: return ... | -| returnstmt.c:3:5:3:11 | NoOp: return ... | -| revsubscriptexpr.c:5:1:5:1 | NoOp: return ... | -| shortforstmt.cpp:6:1:6:1 | NoOp: return ... | -| shortforstmt.cpp:14:1:14:1 | NoOp: return ... | -| shortforstmt.cpp:24:1:24:1 | NoOp: return ... | -| shortforstmt.cpp:38:1:38:1 | NoOp: return ... | -| statements.cpp:5:1:5:1 | NoOp: return ... | -| statements.cpp:10:1:10:1 | NoOp: return ... | -| statements.cpp:16:5:16:11 | NoOp: return ... | -| statements.cpp:19:1:19:1 | NoOp: return ... | -| statements.cpp:28:1:28:1 | NoOp: return ... | -| statements.cpp:36:1:36:1 | NoOp: return ... | -| statements.cpp:57:1:57:1 | NoOp: return ... | -| statements.h:3:3:3:3 | NoOp: return ... | -| static_init_templates.cpp:2:21:2:23 | ReturnIndirection: ref | -| static_init_templates.cpp:27:1:27:1 | NoOp: return ... | -| static_init_templates.cpp:34:1:34:1 | NoOp: return ... | -| static_init_templates.cpp:119:1:119:1 | NoOp: return ... | -| static_init_templates.cpp:227:30:227:30 | NoOp: return ... | -| static_init_templates.cpp:233:35:233:35 | NoOp: return ... | -| static_init_templates.cpp:236:7:236:7 | NoOp: return ... | -| static_init_templates.cpp:240:7:240:7 | NoOp: return ... | -| static_init_templates.cpp:252:1:252:1 | NoOp: return ... | -| staticlocals.cpp:15:1:15:1 | NoOp: return ... | -| staticlocals.cpp:22:19:22:19 | NoOp: return ... | -| staticlocals.cpp:30:1:30:1 | NoOp: return ... | -| staticmembercallexpr.cpp:10:1:10:1 | NoOp: return ... | -| staticmembercallexpr_args.cpp:11:1:11:1 | NoOp: return ... | -| stmt_expr.cpp:19:1:19:1 | NoOp: return ... | | stmt_expr.cpp:27:5:27:15 | Store: ... = ... | -| stmt_in_type.cpp:6:1:6:1 | NoOp: return ... | -| stream_it.cpp:9:27:9:27 | ReturnIndirection: t | -| subscriptexpr.c:5:1:5:1 | NoOp: return ... | -| switchstmt.c:8:1:8:1 | NoOp: return ... | -| test.c:8:1:8:1 | NoOp: return ... | -| test.c:16:1:16:1 | NoOp: return ... | -| test.c:24:1:24:1 | NoOp: return ... | -| test.c:31:5:31:11 | NoOp: return ... | -| test.c:47:5:47:11 | NoOp: return ... | -| test.c:54:5:54:11 | NoOp: return ... | -| test.c:68:5:68:11 | NoOp: return ... | -| test.c:75:5:75:11 | NoOp: return ... | -| test.c:89:5:89:11 | NoOp: return ... | -| test.c:94:5:94:11 | NoOp: return ... | -| test.c:99:5:99:11 | NoOp: return ... | -| test.c:104:5:104:11 | NoOp: return ... | -| test.c:110:13:110:19 | NoOp: return ... | -| test.c:112:13:112:19 | NoOp: return ... | -| test.c:117:13:117:19 | NoOp: return ... | -| test.c:119:13:119:19 | NoOp: return ... | -| test.c:127:13:127:19 | NoOp: return ... | -| test.c:129:13:129:19 | NoOp: return ... | -| test.c:134:13:134:19 | NoOp: return ... | -| test.c:142:13:142:19 | NoOp: return ... | -| test.c:144:13:144:19 | NoOp: return ... | -| test.c:149:13:149:19 | NoOp: return ... | -| test.c:151:13:151:19 | NoOp: return ... | -| test.c:159:13:159:19 | NoOp: return ... | -| test.c:161:13:161:19 | NoOp: return ... | -| test.c:166:13:166:19 | NoOp: return ... | -| test.c:174:13:174:19 | NoOp: return ... | -| test.c:176:13:176:19 | NoOp: return ... | -| test.c:181:13:181:19 | NoOp: return ... | -| test.c:183:13:183:19 | NoOp: return ... | -| test.c:191:13:191:19 | NoOp: return ... | -| test.c:193:13:193:19 | NoOp: return ... | -| test.c:198:13:198:19 | NoOp: return ... | -| test.c:206:13:206:19 | NoOp: return ... | -| test.c:208:13:208:19 | NoOp: return ... | -| test.c:213:13:213:19 | NoOp: return ... | -| test.c:235:1:235:1 | NoOp: return ... | -| try_catch.cpp:2:10:2:10 | NoOp: return ... | -| try_catch.cpp:7:8:7:8 | CallSideEffect: call to ~exception | -| try_catch.cpp:7:8:7:8 | NoOp: return ... | -| try_catch.cpp:15:5:15:11 | NoOp: return ... | -| unaryopexpr.c:14:1:14:1 | NoOp: return ... | | vla.c:5:9:5:14 | Uninitialized: definition of matrix | | vla.c:11:6:11:16 | UnmodeledDefinition: vla_typedef | -| void_bug.h:2:15:2:15 | NoOp: return ... | -| whilestmt.c:6:1:6:1 | NoOp: return ... | -| whilestmt.c:13:1:13:1 | NoOp: return ... | -| whilestmt.c:21:1:21:1 | NoOp: return ... | -| whilestmt.c:30:1:30:1 | NoOp: return ... | -| whilestmt.c:45:1:45:1 | NoOp: return ... | ambiguousSuccessors | allocators.cpp:14:5:14:8 | UnmodeledDefinition: main | Goto | 4 | allocators.cpp:16:8:16:10 | VariableAddress: definition of foo | | allocators.cpp:14:5:14:8 | UnmodeledDefinition: main | Goto | 4 | no_dynamic_init.cpp:10:16:10:16 | VariableAddress: definition of m | diff --git a/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected b/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected index 149b92fd6c8..01d36b53198 100644 --- a/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected +++ b/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected @@ -1,71 +1,73 @@ test.cpp: # 1| int test00(int, int) # 1| Block 0 -# 1| v0_0(void) = EnterFunction : -# 1| m0_1(unknown) = AliasedDefinition : +# 1| v0_0(void) = EnterFunction : +# 1| m0_1(unknown) = AliasedDefinition : # 1| valnum = unique -# 1| mu0_2(unknown) = UnmodeledDefinition : +# 1| mu0_2(unknown) = UnmodeledDefinition : # 1| valnum = unique -# 1| r0_3(glval) = VariableAddress[p0] : +# 1| r0_3(glval) = VariableAddress[p0] : # 1| valnum = r0_3 -# 1| m0_4(int) = InitializeParameter[p0] : &:r0_3 +# 1| m0_4(int) = InitializeParameter[p0] : &:r0_3 # 1| valnum = m0_4 -# 1| r0_5(glval) = VariableAddress[p1] : +# 1| r0_5(glval) = VariableAddress[p1] : # 1| valnum = r0_5 -# 1| m0_6(int) = InitializeParameter[p1] : &:r0_5 +# 1| m0_6(int) = InitializeParameter[p1] : &:r0_5 # 1| valnum = m0_6 -# 2| r0_7(glval) = VariableAddress[x] : +# 2| r0_7(glval) = VariableAddress[x] : # 2| valnum = r0_7 -# 2| m0_8(int) = Uninitialized[x] : &:r0_7 +# 2| m0_8(int) = Uninitialized[x] : &:r0_7 # 2| valnum = unique -# 2| r0_9(glval) = VariableAddress[y] : +# 2| r0_9(glval) = VariableAddress[y] : # 2| valnum = r0_9 -# 2| m0_10(int) = Uninitialized[y] : &:r0_9 +# 2| m0_10(int) = Uninitialized[y] : &:r0_9 # 2| valnum = unique -# 3| r0_11(glval) = VariableAddress[b] : +# 3| r0_11(glval) = VariableAddress[b] : # 3| valnum = unique -# 3| m0_12(unsigned char) = Uninitialized[b] : &:r0_11 +# 3| m0_12(unsigned char) = Uninitialized[b] : &:r0_11 # 3| valnum = unique -# 5| r0_13(glval) = VariableAddress[p0] : +# 5| r0_13(glval) = VariableAddress[p0] : # 5| valnum = r0_3 -# 5| r0_14(int) = Load : &:r0_13, m0_4 +# 5| r0_14(int) = Load : &:r0_13, m0_4 # 5| valnum = m0_4 -# 5| r0_15(glval) = VariableAddress[p1] : +# 5| r0_15(glval) = VariableAddress[p1] : # 5| valnum = r0_5 -# 5| r0_16(int) = Load : &:r0_15, m0_6 +# 5| r0_16(int) = Load : &:r0_15, m0_6 # 5| valnum = m0_6 -# 5| r0_17(int) = Add : r0_14, r0_16 +# 5| r0_17(int) = Add : r0_14, r0_16 # 5| valnum = r0_17 -# 5| r0_18(glval) = VariableAddress[x] : +# 5| r0_18(glval) = VariableAddress[x] : # 5| valnum = r0_7 -# 5| m0_19(int) = Store : &:r0_18, r0_17 +# 5| m0_19(int) = Store : &:r0_18, r0_17 # 5| valnum = r0_17 -# 6| r0_20(glval) = VariableAddress[p0] : +# 6| r0_20(glval) = VariableAddress[p0] : # 6| valnum = r0_3 -# 6| r0_21(int) = Load : &:r0_20, m0_4 +# 6| r0_21(int) = Load : &:r0_20, m0_4 # 6| valnum = m0_4 -# 6| r0_22(glval) = VariableAddress[p1] : +# 6| r0_22(glval) = VariableAddress[p1] : # 6| valnum = r0_5 -# 6| r0_23(int) = Load : &:r0_22, m0_6 +# 6| r0_23(int) = Load : &:r0_22, m0_6 # 6| valnum = m0_6 -# 6| r0_24(int) = Add : r0_21, r0_23 +# 6| r0_24(int) = Add : r0_21, r0_23 # 6| valnum = r0_17 -# 6| r0_25(glval) = VariableAddress[x] : +# 6| r0_25(glval) = VariableAddress[x] : # 6| valnum = r0_7 -# 6| m0_26(int) = Store : &:r0_25, r0_24 +# 6| m0_26(int) = Store : &:r0_25, r0_24 # 6| valnum = r0_17 -# 7| r0_27(glval) = VariableAddress[x] : +# 7| r0_27(glval) = VariableAddress[x] : # 7| valnum = r0_7 -# 7| r0_28(int) = Load : &:r0_27, m0_26 +# 7| r0_28(int) = Load : &:r0_27, m0_26 # 7| valnum = r0_17 -# 7| r0_29(glval) = VariableAddress[y] : +# 7| r0_29(glval) = VariableAddress[y] : # 7| valnum = r0_9 -# 7| m0_30(int) = Store : &:r0_29, r0_28 +# 7| m0_30(int) = Store : &:r0_29, r0_28 # 7| valnum = r0_17 -# 8| v0_31(void) = NoOp : -# 1| v0_32(void) = ReturnValue : -# 1| v0_33(void) = UnmodeledUse : mu* -# 1| v0_34(void) = ExitFunction : +# 8| v0_31(void) = NoOp : +# 1| r0_32(glval) = VariableAddress[#return] : +# 1| valnum = unique +# 1| v0_33(void) = ReturnValue : &:r0_32 +# 1| v0_34(void) = UnmodeledUse : mu* +# 1| v0_35(void) = ExitFunction : # 12| int test01(int, int) # 12| Block 0 @@ -143,9 +145,11 @@ test.cpp: # 18| m0_36(int) = Store : &:r0_35, r0_34 # 18| valnum = r0_30 # 19| v0_37(void) = NoOp : -# 12| v0_38(void) = ReturnValue : -# 12| v0_39(void) = UnmodeledUse : mu* -# 12| v0_40(void) = ExitFunction : +# 12| r0_38(glval) = VariableAddress[#return] : +# 12| valnum = unique +# 12| v0_39(void) = ReturnValue : &:r0_38 +# 12| v0_40(void) = UnmodeledUse : mu* +# 12| v0_41(void) = ExitFunction : # 25| int test02(int, int) # 25| Block 0 @@ -230,9 +234,11 @@ test.cpp: # 32| m0_40(int) = Store : &:r0_39, r0_38 # 32| valnum = r0_34 # 33| v0_41(void) = NoOp : -# 25| v0_42(void) = ReturnValue : -# 25| v0_43(void) = UnmodeledUse : mu* -# 25| v0_44(void) = ExitFunction : +# 25| r0_42(glval) = VariableAddress[#return] : +# 25| valnum = unique +# 25| v0_43(void) = ReturnValue : &:r0_42 +# 25| v0_44(void) = UnmodeledUse : mu* +# 25| v0_45(void) = ExitFunction : # 39| int test03(int, int, int*) # 39| Block 0 @@ -331,9 +337,11 @@ test.cpp: # 46| valnum = r0_40 # 47| v0_47(void) = NoOp : # 39| v0_48(void) = ReturnIndirection : &:r0_9, ~m0_32 -# 39| v0_49(void) = ReturnValue : -# 39| v0_50(void) = UnmodeledUse : mu* -# 39| v0_51(void) = ExitFunction : +# 39| r0_49(glval) = VariableAddress[#return] : +# 39| valnum = unique +# 39| v0_50(void) = ReturnValue : &:r0_49 +# 39| v0_51(void) = UnmodeledUse : mu* +# 39| v0_52(void) = ExitFunction : # 49| unsigned int my_strspn(char const*, char const*) # 49| Block 0 @@ -496,7 +504,7 @@ test.cpp: # 63| Block 9 # 63| v9_0(void) = NoOp : # 65| r9_1(glval) = VariableAddress[#return] : -# 65| valnum = unique +# 65| valnum = r9_1 # 65| r9_2(glval) = VariableAddress[result] : # 65| valnum = r0_15 # 65| r9_3(unsigned int) = Load : &:r9_2, m1_0 @@ -505,9 +513,11 @@ test.cpp: # 65| valnum = m1_0 # 49| v9_5(void) = ReturnIndirection : &:r0_5, ~m0_12 # 49| v9_6(void) = ReturnIndirection : &:r0_10, ~m0_12 -# 49| v9_7(void) = ReturnValue : ~m0_12 -# 49| v9_8(void) = UnmodeledUse : mu* -# 49| v9_9(void) = ExitFunction : +# 49| r9_7(glval) = VariableAddress[#return] : +# 49| valnum = r9_1 +# 49| v9_8(void) = ReturnValue : &:r9_7, m9_4 +# 49| v9_9(void) = UnmodeledUse : mu* +# 49| v9_10(void) = ExitFunction : # 75| void test04(two_values*) # 75| Block 0 @@ -596,6 +606,9 @@ test.cpp: # 82| valnum = unique # 82| v2_1(void) = NoOp : # 75| v2_2(void) = ReturnIndirection : &:r0_5, ~m2_0 +# 75| v2_3(void) = ReturnVoid : +# 75| v2_4(void) = UnmodeledUse : mu* +# 75| v2_5(void) = ExitFunction : # 84| void test05(int, int, void*) # 84| Block 0 @@ -651,6 +664,9 @@ test.cpp: # 88| valnum = m1_0 # 89| v1_5(void) = NoOp : # 84| v1_6(void) = ReturnIndirection : &:r0_9, ~m0_11 +# 84| v1_7(void) = ReturnVoid : +# 84| v1_8(void) = UnmodeledUse : mu* +# 84| v1_9(void) = ExitFunction : # 88| Block 2 # 88| r2_0(glval) = VariableAddress[x] : @@ -676,32 +692,34 @@ test.cpp: # 91| int regression_test00() # 91| Block 0 -# 91| v0_0(void) = EnterFunction : -# 91| m0_1(unknown) = AliasedDefinition : +# 91| v0_0(void) = EnterFunction : +# 91| m0_1(unknown) = AliasedDefinition : # 91| valnum = unique -# 91| mu0_2(unknown) = UnmodeledDefinition : +# 91| mu0_2(unknown) = UnmodeledDefinition : # 91| valnum = unique -# 92| r0_3(glval) = VariableAddress[x] : +# 92| r0_3(glval) = VariableAddress[x] : # 92| valnum = r0_3 -# 92| r0_4(int) = Constant[10] : +# 92| r0_4(int) = Constant[10] : # 92| valnum = r0_4 -# 92| r0_5(glval) = VariableAddress[x] : +# 92| r0_5(glval) = VariableAddress[x] : # 92| valnum = r0_3 -# 92| m0_6(int) = Store : &:r0_5, r0_4 +# 92| m0_6(int) = Store : &:r0_5, r0_4 # 92| valnum = r0_4 -# 92| m0_7(int) = Store : &:r0_3, r0_4 +# 92| m0_7(int) = Store : &:r0_3, r0_4 # 92| valnum = r0_4 -# 93| r0_8(glval) = VariableAddress[#return] : -# 93| valnum = unique -# 93| r0_9(glval) = VariableAddress[x] : +# 93| r0_8(glval) = VariableAddress[#return] : +# 93| valnum = r0_8 +# 93| r0_9(glval) = VariableAddress[x] : # 93| valnum = r0_3 -# 93| r0_10(int) = Load : &:r0_9, m0_7 +# 93| r0_10(int) = Load : &:r0_9, m0_7 # 93| valnum = r0_4 -# 93| m0_11(int) = Store : &:r0_8, r0_10 +# 93| m0_11(int) = Store : &:r0_8, r0_10 # 93| valnum = r0_4 -# 91| v0_12(void) = ReturnValue : ~m0_1 -# 91| v0_13(void) = UnmodeledUse : mu* -# 91| v0_14(void) = ExitFunction : +# 91| r0_12(glval) = VariableAddress[#return] : +# 91| valnum = r0_8 +# 91| v0_13(void) = ReturnValue : &:r0_12, m0_11 +# 91| v0_14(void) = UnmodeledUse : mu* +# 91| v0_15(void) = ExitFunction : # 104| int inheritanceConversions(Derived*) # 104| Block 0 @@ -757,7 +775,7 @@ test.cpp: # 107| m0_25(int) = Store : &:r0_20, r0_24 # 107| valnum = r0_24 # 109| r0_26(glval) = VariableAddress[#return] : -# 109| valnum = unique +# 109| valnum = r0_26 # 109| r0_27(glval) = VariableAddress[y] : # 109| valnum = r0_20 # 109| r0_28(int) = Load : &:r0_27, m0_25 @@ -765,9 +783,11 @@ test.cpp: # 109| m0_29(int) = Store : &:r0_26, r0_28 # 109| valnum = r0_24 # 104| v0_30(void) = ReturnIndirection : &:r0_5, ~m0_7 -# 104| v0_31(void) = ReturnValue : ~m0_7 -# 104| v0_32(void) = UnmodeledUse : mu* -# 104| v0_33(void) = ExitFunction : +# 104| r0_31(glval) = VariableAddress[#return] : +# 104| valnum = r0_26 +# 104| v0_32(void) = ReturnValue : &:r0_31, m0_29 +# 104| v0_33(void) = UnmodeledUse : mu* +# 104| v0_34(void) = ExitFunction : # 112| void test06() # 112| Block 0 @@ -785,3 +805,6 @@ test.cpp: # 116| r0_6(glval) = StringConstant["c"] : # 116| valnum = unique # 117| v0_7(void) = NoOp : +# 112| v0_8(void) = ReturnVoid : +# 112| v0_9(void) = UnmodeledUse : mu* +# 112| v0_10(void) = ExitFunction :