From b73f38e7f2d0f046aa726cdb4cb1f5bc4f23a703 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 11 Jul 2023 13:42:48 +0200 Subject: [PATCH 01/14] C++: Update IR generation for changes in frontend --- .../raw/internal/TranslatedExpr.qll | 48 ++----------------- 1 file changed, 5 insertions(+), 43 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index 4f93f5d37024..c0e79b95fdb2 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -648,19 +648,7 @@ abstract class TranslatedCrementOperation extends TranslatedNonConstantExpr { class TranslatedPrefixCrementOperation extends TranslatedCrementOperation { override PrefixCrementOperation expr; - override Instruction getResult() { - if expr.isPRValueCategory() - then - // If this is C, then the result of a prefix crement is a prvalue for the - // new value assigned to the operand. If this is C++, then the result is - // an lvalue, but that lvalue is being loaded as part of this expression. - // EDG doesn't mark this as a load. - result = this.getInstruction(CrementOpTag()) - else - // This is C++, where the result is an lvalue for the operand, and that - // lvalue is not being loaded as part of this expression. - result = this.getUnloadedOperand().getResult() - } + override Instruction getResult() { result = this.getUnloadedOperand().getResult() } } class TranslatedPostfixCrementOperation extends TranslatedCrementOperation { @@ -1503,19 +1491,7 @@ class TranslatedAssignExpr extends TranslatedNonConstantExpr { result = this.getRightOperand().getFirstInstruction() } - final override Instruction getResult() { - if expr.isPRValueCategory() - then - // If this is C, then the result of an assignment is a prvalue for the new - // value assigned to the left operand. If this is C++, then the result is - // an lvalue, but that lvalue is being loaded as part of this expression. - // EDG doesn't mark this as a load. - result = this.getRightOperand().getResult() - else - // This is C++, where the result is an lvalue for the left operand, - // and that lvalue is not being loaded as part of this expression. - result = this.getLeftOperand().getResult() - } + final override Instruction getResult() { result = this.getLeftOperand().getResult() } final TranslatedExpr getLeftOperand() { result = getTranslatedExpr(expr.getLValue().getFullyConverted()) @@ -1641,19 +1617,7 @@ class TranslatedAssignOperation extends TranslatedNonConstantExpr { result = this.getRightOperand().getFirstInstruction() } - final override Instruction getResult() { - if expr.isPRValueCategory() - then - // If this is C, then the result of an assignment is a prvalue for the new - // value assigned to the left operand. If this is C++, then the result is - // an lvalue, but that lvalue is being loaded as part of this expression. - // EDG doesn't mark this as a load. - result = this.getStoredValue() - else - // This is C++, where the result is an lvalue for the left operand, - // and that lvalue is not being loaded as part of this expression. - result = this.getUnloadedLeftOperand().getResult() - } + final override Instruction getResult() { result = this.getUnloadedLeftOperand().getResult() } final TranslatedExpr getUnloadedLeftOperand() { result = this.getLoadedLeftOperand().getOperand() @@ -3232,11 +3196,9 @@ predicate exprNeedsCopyIfNotLoaded(Expr expr) { ( expr instanceof AssignExpr or - expr instanceof AssignOperation and - not expr.isPRValueCategory() // is C++ + expr instanceof AssignOperation or - expr instanceof PrefixCrementOperation and - not expr.isPRValueCategory() // is C++ + expr instanceof PrefixCrementOperation or // Because the load is on the `e` in `e++`. expr instanceof PostfixCrementOperation From f19758f1b00e0c9bf6d5ae46f85c6d7274e2f0e9 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 20 Jul 2023 22:37:32 +0200 Subject: [PATCH 02/14] C++: Do not generate loads for `ParenthesisExpr`s --- .../cpp/ir/implementation/raw/internal/TranslatedElement.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index 2149f148fef2..d6139c35a574 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -362,6 +362,8 @@ predicate ignoreLoad(Expr expr) { or expr instanceof FunctionAccess or + expr instanceof ParenthesisExpr + or expr.(PointerDereferenceExpr).getOperand().getFullyConverted().getType().getUnspecifiedType() instanceof FunctionPointerType or From 2f70cc51c5b2f8bff51ec0046afd8693c402df48 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 20 Jul 2023 22:38:25 +0200 Subject: [PATCH 03/14] C++: Handle ternary operators whose value category is a prvalue with a load --- .../raw/internal/TranslatedExpr.qll | 41 +++++++++++++++---- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll index c0e79b95fdb2..9160e212cc28 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedExpr.qll @@ -2078,8 +2078,15 @@ abstract class TranslatedConditionalExpr extends TranslatedNonConstantExpr { not this.elseIsVoid() and tag = ConditionValueFalseStoreTag() ) and opcode instanceof Opcode::Store and - resultType = this.getResultType() + ( + not expr.hasLValueToRValueConversion() and + resultType = this.getResultType() + or + expr.hasLValueToRValueConversion() and + resultType = getTypeForPRValue(expr.getType()) + ) or + not expr.hasLValueToRValueConversion() and tag = ConditionValueResultLoadTag() and opcode instanceof Opcode::Load and resultType = this.getResultType() @@ -2109,8 +2116,15 @@ abstract class TranslatedConditionalExpr extends TranslatedNonConstantExpr { ) or tag = ConditionValueResultTempAddressTag() and - result = this.getInstruction(ConditionValueResultLoadTag()) + ( + not expr.hasLValueToRValueConversion() and + result = this.getInstruction(ConditionValueResultLoadTag()) + or + expr.hasLValueToRValueConversion() and + result = this.getParent().getChildSuccessor(this) + ) or + not expr.hasLValueToRValueConversion() and tag = ConditionValueResultLoadTag() and result = this.getParent().getChildSuccessor(this) ) @@ -2139,18 +2153,23 @@ abstract class TranslatedConditionalExpr extends TranslatedNonConstantExpr { result = this.getElse().getResult() ) or + not expr.hasLValueToRValueConversion() and tag = ConditionValueResultLoadTag() and - ( - operandTag instanceof AddressOperandTag and - result = this.getInstruction(ConditionValueResultTempAddressTag()) - ) + operandTag instanceof AddressOperandTag and + result = this.getInstruction(ConditionValueResultTempAddressTag()) ) } final override predicate hasTempVariable(TempVariableTag tag, CppType type) { not this.resultIsVoid() and tag = ConditionValueTempVar() and - type = this.getResultType() + ( + not expr.hasLValueToRValueConversion() and + type = this.getResultType() + or + expr.hasLValueToRValueConversion() and + type = getTypeForPRValue(expr.getType()) + ) } final override IRVariable getInstructionVariable(InstructionTag tag) { @@ -2165,7 +2184,13 @@ abstract class TranslatedConditionalExpr extends TranslatedNonConstantExpr { final override Instruction getResult() { not this.resultIsVoid() and - result = this.getInstruction(ConditionValueResultLoadTag()) + ( + expr.hasLValueToRValueConversion() and + result = this.getInstruction(ConditionValueResultTempAddressTag()) + or + not expr.hasLValueToRValueConversion() and + result = this.getInstruction(ConditionValueResultLoadTag()) + ) } override Instruction getChildSuccessor(TranslatedElement child) { From 116b9780511fc6d64809ca99ba468924c3386e8a Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Mon, 31 Jul 2023 17:00:57 +0200 Subject: [PATCH 04/14] C++: Accept IR test changes after value category updates --- .../library-tests/ir/ir/PrintAST.expected | 251 ++++++++-------- .../ir/ir/operand_locations.expected | 270 ++++++++++++++++-- .../test/library-tests/ir/ir/raw_ir.expected | 182 ++++++++++-- 3 files changed, 531 insertions(+), 172 deletions(-) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 5de871e4c68c..200ab9e06158 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -266,7 +266,7 @@ complex.c: # 3| getStmt(1): [ExprStmt] ExprStmt # 3| getExpr(): [AssignExpr] ... = ... # 3| Type = [ArithmeticType] _Complex float -# 3| ValueCategory = prvalue +# 3| ValueCategory = prvalue(load) # 3| getLValue(): [VariableAccess] cf # 3| Type = [ArithmeticType] _Complex float # 3| ValueCategory = lvalue @@ -293,7 +293,7 @@ complex.c: # 5| getStmt(3): [ExprStmt] ExprStmt # 5| getExpr(): [AssignExpr] ... = ... # 5| Type = [ArithmeticType] _Complex double -# 5| ValueCategory = prvalue +# 5| ValueCategory = prvalue(load) # 5| getLValue(): [VariableAccess] cd # 5| Type = [ArithmeticType] _Complex double # 5| ValueCategory = lvalue @@ -320,7 +320,7 @@ complex.c: # 7| getStmt(5): [ExprStmt] ExprStmt # 7| getExpr(): [AssignExpr] ... = ... # 7| Type = [ArithmeticType] _Complex long double -# 7| ValueCategory = prvalue +# 7| ValueCategory = prvalue(load) # 7| getLValue(): [VariableAccess] cld # 7| Type = [ArithmeticType] _Complex long double # 7| ValueCategory = lvalue @@ -446,7 +446,7 @@ complex.c: # 26| getStmt(9): [ExprStmt] ExprStmt # 26| getExpr(): [AssignExpr] ... = ... # 26| Type = [ArithmeticType] _Complex float -# 26| ValueCategory = prvalue +# 26| ValueCategory = prvalue(load) # 26| getLValue(): [VariableAccess] cf3 # 26| Type = [ArithmeticType] _Complex float # 26| ValueCategory = lvalue @@ -459,7 +459,7 @@ complex.c: # 27| getStmt(10): [ExprStmt] ExprStmt # 27| getExpr(): [AssignExpr] ... = ... # 27| Type = [ArithmeticType] _Complex float -# 27| ValueCategory = prvalue +# 27| ValueCategory = prvalue(load) # 27| getLValue(): [VariableAccess] cf3 # 27| Type = [ArithmeticType] _Complex float # 27| ValueCategory = lvalue @@ -472,7 +472,7 @@ complex.c: # 30| getStmt(11): [ExprStmt] ExprStmt # 30| getExpr(): [AssignExpr] ... = ... # 30| Type = [ArithmeticType] _Complex float -# 30| ValueCategory = prvalue +# 30| ValueCategory = prvalue(load) # 30| getLValue(): [VariableAccess] cf3 # 30| Type = [ArithmeticType] _Complex float # 30| ValueCategory = lvalue @@ -488,7 +488,7 @@ complex.c: # 31| getStmt(12): [ExprStmt] ExprStmt # 31| getExpr(): [AssignExpr] ... = ... # 31| Type = [ArithmeticType] _Complex float -# 31| ValueCategory = prvalue +# 31| ValueCategory = prvalue(load) # 31| getLValue(): [VariableAccess] cf3 # 31| Type = [ArithmeticType] _Complex float # 31| ValueCategory = lvalue @@ -504,7 +504,7 @@ complex.c: # 32| getStmt(13): [ExprStmt] ExprStmt # 32| getExpr(): [AssignExpr] ... = ... # 32| Type = [ArithmeticType] _Complex float -# 32| ValueCategory = prvalue +# 32| ValueCategory = prvalue(load) # 32| getLValue(): [VariableAccess] cf3 # 32| Type = [ArithmeticType] _Complex float # 32| ValueCategory = lvalue @@ -520,7 +520,7 @@ complex.c: # 33| getStmt(14): [ExprStmt] ExprStmt # 33| getExpr(): [AssignExpr] ... = ... # 33| Type = [ArithmeticType] _Complex float -# 33| ValueCategory = prvalue +# 33| ValueCategory = prvalue(load) # 33| getLValue(): [VariableAccess] cf3 # 33| Type = [ArithmeticType] _Complex float # 33| ValueCategory = lvalue @@ -536,7 +536,7 @@ complex.c: # 36| getStmt(15): [ExprStmt] ExprStmt # 36| getExpr(): [AssignExpr] ... = ... # 36| Type = [ArithmeticType] _Imaginary float -# 36| ValueCategory = prvalue +# 36| ValueCategory = prvalue(load) # 36| getLValue(): [VariableAccess] jf3 # 36| Type = [ArithmeticType] _Imaginary float # 36| ValueCategory = lvalue @@ -549,7 +549,7 @@ complex.c: # 37| getStmt(16): [ExprStmt] ExprStmt # 37| getExpr(): [AssignExpr] ... = ... # 37| Type = [ArithmeticType] _Imaginary float -# 37| ValueCategory = prvalue +# 37| ValueCategory = prvalue(load) # 37| getLValue(): [VariableAccess] jf3 # 37| Type = [ArithmeticType] _Imaginary float # 37| ValueCategory = lvalue @@ -562,7 +562,7 @@ complex.c: # 40| getStmt(17): [ExprStmt] ExprStmt # 40| getExpr(): [AssignExpr] ... = ... # 40| Type = [ArithmeticType] _Imaginary float -# 40| ValueCategory = prvalue +# 40| ValueCategory = prvalue(load) # 40| getLValue(): [VariableAccess] jf3 # 40| Type = [ArithmeticType] _Imaginary float # 40| ValueCategory = lvalue @@ -578,7 +578,7 @@ complex.c: # 41| getStmt(18): [ExprStmt] ExprStmt # 41| getExpr(): [AssignExpr] ... = ... # 41| Type = [ArithmeticType] _Imaginary float -# 41| ValueCategory = prvalue +# 41| ValueCategory = prvalue(load) # 41| getLValue(): [VariableAccess] jf3 # 41| Type = [ArithmeticType] _Imaginary float # 41| ValueCategory = lvalue @@ -594,7 +594,7 @@ complex.c: # 42| getStmt(19): [ExprStmt] ExprStmt # 42| getExpr(): [AssignExpr] ... = ... # 42| Type = [FloatType] float -# 42| ValueCategory = prvalue +# 42| ValueCategory = prvalue(load) # 42| getLValue(): [VariableAccess] f3 # 42| Type = [FloatType] float # 42| ValueCategory = lvalue @@ -610,7 +610,7 @@ complex.c: # 43| getStmt(20): [ExprStmt] ExprStmt # 43| getExpr(): [AssignExpr] ... = ... # 43| Type = [FloatType] float -# 43| ValueCategory = prvalue +# 43| ValueCategory = prvalue(load) # 43| getLValue(): [VariableAccess] f3 # 43| Type = [FloatType] float # 43| ValueCategory = lvalue @@ -626,7 +626,7 @@ complex.c: # 46| getStmt(21): [ExprStmt] ExprStmt # 46| getExpr(): [AssignExpr] ... = ... # 46| Type = [ArithmeticType] _Complex float -# 46| ValueCategory = prvalue +# 46| ValueCategory = prvalue(load) # 46| getLValue(): [VariableAccess] cf3 # 46| Type = [ArithmeticType] _Complex float # 46| ValueCategory = lvalue @@ -642,7 +642,7 @@ complex.c: # 47| getStmt(22): [ExprStmt] ExprStmt # 47| getExpr(): [AssignExpr] ... = ... # 47| Type = [ArithmeticType] _Complex float -# 47| ValueCategory = prvalue +# 47| ValueCategory = prvalue(load) # 47| getLValue(): [VariableAccess] cf3 # 47| Type = [ArithmeticType] _Complex float # 47| ValueCategory = lvalue @@ -658,7 +658,7 @@ complex.c: # 48| getStmt(23): [ExprStmt] ExprStmt # 48| getExpr(): [AssignExpr] ... = ... # 48| Type = [ArithmeticType] _Imaginary float -# 48| ValueCategory = prvalue +# 48| ValueCategory = prvalue(load) # 48| getLValue(): [VariableAccess] jf3 # 48| Type = [ArithmeticType] _Imaginary float # 48| ValueCategory = lvalue @@ -674,7 +674,7 @@ complex.c: # 49| getStmt(24): [ExprStmt] ExprStmt # 49| getExpr(): [AssignExpr] ... = ... # 49| Type = [ArithmeticType] _Imaginary float -# 49| ValueCategory = prvalue +# 49| ValueCategory = prvalue(load) # 49| getLValue(): [VariableAccess] jf3 # 49| Type = [ArithmeticType] _Imaginary float # 49| ValueCategory = lvalue @@ -690,7 +690,7 @@ complex.c: # 52| getStmt(25): [ExprStmt] ExprStmt # 52| getExpr(): [AssignExpr] ... = ... # 52| Type = [ArithmeticType] _Complex float -# 52| ValueCategory = prvalue +# 52| ValueCategory = prvalue(load) # 52| getLValue(): [VariableAccess] cf3 # 52| Type = [ArithmeticType] _Complex float # 52| ValueCategory = lvalue @@ -706,7 +706,7 @@ complex.c: # 53| getStmt(26): [ExprStmt] ExprStmt # 53| getExpr(): [AssignExpr] ... = ... # 53| Type = [ArithmeticType] _Complex float -# 53| ValueCategory = prvalue +# 53| ValueCategory = prvalue(load) # 53| getLValue(): [VariableAccess] cf3 # 53| Type = [ArithmeticType] _Complex float # 53| ValueCategory = lvalue @@ -722,7 +722,7 @@ complex.c: # 54| getStmt(27): [ExprStmt] ExprStmt # 54| getExpr(): [AssignExpr] ... = ... # 54| Type = [ArithmeticType] _Imaginary float -# 54| ValueCategory = prvalue +# 54| ValueCategory = prvalue(load) # 54| getLValue(): [VariableAccess] jf3 # 54| Type = [ArithmeticType] _Imaginary float # 54| ValueCategory = lvalue @@ -738,7 +738,7 @@ complex.c: # 55| getStmt(28): [ExprStmt] ExprStmt # 55| getExpr(): [AssignExpr] ... = ... # 55| Type = [ArithmeticType] _Imaginary float -# 55| ValueCategory = prvalue +# 55| ValueCategory = prvalue(load) # 55| getLValue(): [VariableAccess] jf3 # 55| Type = [ArithmeticType] _Imaginary float # 55| ValueCategory = lvalue @@ -860,7 +860,7 @@ complex.c: # 70| getStmt(9): [ExprStmt] ExprStmt # 70| getExpr(): [AssignExpr] ... = ... # 70| Type = [ArithmeticType] _Complex float -# 70| ValueCategory = prvalue +# 70| ValueCategory = prvalue(load) # 70| getLValue(): [VariableAccess] cf # 70| Type = [ArithmeticType] _Complex float # 70| ValueCategory = lvalue @@ -870,7 +870,7 @@ complex.c: # 71| getStmt(10): [ExprStmt] ExprStmt # 71| getExpr(): [AssignExpr] ... = ... # 71| Type = [ArithmeticType] _Complex float -# 71| ValueCategory = prvalue +# 71| ValueCategory = prvalue(load) # 71| getLValue(): [VariableAccess] cf # 71| Type = [ArithmeticType] _Complex float # 71| ValueCategory = lvalue @@ -884,7 +884,7 @@ complex.c: # 72| getStmt(11): [ExprStmt] ExprStmt # 72| getExpr(): [AssignExpr] ... = ... # 72| Type = [ArithmeticType] _Complex float -# 72| ValueCategory = prvalue +# 72| ValueCategory = prvalue(load) # 72| getLValue(): [VariableAccess] cf # 72| Type = [ArithmeticType] _Complex float # 72| ValueCategory = lvalue @@ -898,7 +898,7 @@ complex.c: # 73| getStmt(12): [ExprStmt] ExprStmt # 73| getExpr(): [AssignExpr] ... = ... # 73| Type = [ArithmeticType] _Complex double -# 73| ValueCategory = prvalue +# 73| ValueCategory = prvalue(load) # 73| getLValue(): [VariableAccess] cd # 73| Type = [ArithmeticType] _Complex double # 73| ValueCategory = lvalue @@ -912,7 +912,7 @@ complex.c: # 74| getStmt(13): [ExprStmt] ExprStmt # 74| getExpr(): [AssignExpr] ... = ... # 74| Type = [ArithmeticType] _Complex double -# 74| ValueCategory = prvalue +# 74| ValueCategory = prvalue(load) # 74| getLValue(): [VariableAccess] cd # 74| Type = [ArithmeticType] _Complex double # 74| ValueCategory = lvalue @@ -922,7 +922,7 @@ complex.c: # 75| getStmt(14): [ExprStmt] ExprStmt # 75| getExpr(): [AssignExpr] ... = ... # 75| Type = [ArithmeticType] _Complex double -# 75| ValueCategory = prvalue +# 75| ValueCategory = prvalue(load) # 75| getLValue(): [VariableAccess] cd # 75| Type = [ArithmeticType] _Complex double # 75| ValueCategory = lvalue @@ -936,7 +936,7 @@ complex.c: # 76| getStmt(15): [ExprStmt] ExprStmt # 76| getExpr(): [AssignExpr] ... = ... # 76| Type = [ArithmeticType] _Complex long double -# 76| ValueCategory = prvalue +# 76| ValueCategory = prvalue(load) # 76| getLValue(): [VariableAccess] cld # 76| Type = [ArithmeticType] _Complex long double # 76| ValueCategory = lvalue @@ -950,7 +950,7 @@ complex.c: # 77| getStmt(16): [ExprStmt] ExprStmt # 77| getExpr(): [AssignExpr] ... = ... # 77| Type = [ArithmeticType] _Complex long double -# 77| ValueCategory = prvalue +# 77| ValueCategory = prvalue(load) # 77| getLValue(): [VariableAccess] cld # 77| Type = [ArithmeticType] _Complex long double # 77| ValueCategory = lvalue @@ -964,7 +964,7 @@ complex.c: # 78| getStmt(17): [ExprStmt] ExprStmt # 78| getExpr(): [AssignExpr] ... = ... # 78| Type = [ArithmeticType] _Complex long double -# 78| ValueCategory = prvalue +# 78| ValueCategory = prvalue(load) # 78| getLValue(): [VariableAccess] cld # 78| Type = [ArithmeticType] _Complex long double # 78| ValueCategory = lvalue @@ -974,7 +974,7 @@ complex.c: # 81| getStmt(18): [ExprStmt] ExprStmt # 81| getExpr(): [AssignExpr] ... = ... # 81| Type = [ArithmeticType] _Complex float -# 81| ValueCategory = prvalue +# 81| ValueCategory = prvalue(load) # 81| getLValue(): [VariableAccess] cf # 81| Type = [ArithmeticType] _Complex float # 81| ValueCategory = lvalue @@ -988,7 +988,7 @@ complex.c: # 82| getStmt(19): [ExprStmt] ExprStmt # 82| getExpr(): [AssignExpr] ... = ... # 82| Type = [ArithmeticType] _Complex float -# 82| ValueCategory = prvalue +# 82| ValueCategory = prvalue(load) # 82| getLValue(): [VariableAccess] cf # 82| Type = [ArithmeticType] _Complex float # 82| ValueCategory = lvalue @@ -1002,7 +1002,7 @@ complex.c: # 83| getStmt(20): [ExprStmt] ExprStmt # 83| getExpr(): [AssignExpr] ... = ... # 83| Type = [ArithmeticType] _Complex float -# 83| ValueCategory = prvalue +# 83| ValueCategory = prvalue(load) # 83| getLValue(): [VariableAccess] cf # 83| Type = [ArithmeticType] _Complex float # 83| ValueCategory = lvalue @@ -1016,7 +1016,7 @@ complex.c: # 84| getStmt(21): [ExprStmt] ExprStmt # 84| getExpr(): [AssignExpr] ... = ... # 84| Type = [ArithmeticType] _Complex double -# 84| ValueCategory = prvalue +# 84| ValueCategory = prvalue(load) # 84| getLValue(): [VariableAccess] cd # 84| Type = [ArithmeticType] _Complex double # 84| ValueCategory = lvalue @@ -1030,7 +1030,7 @@ complex.c: # 85| getStmt(22): [ExprStmt] ExprStmt # 85| getExpr(): [AssignExpr] ... = ... # 85| Type = [ArithmeticType] _Complex double -# 85| ValueCategory = prvalue +# 85| ValueCategory = prvalue(load) # 85| getLValue(): [VariableAccess] cd # 85| Type = [ArithmeticType] _Complex double # 85| ValueCategory = lvalue @@ -1044,7 +1044,7 @@ complex.c: # 86| getStmt(23): [ExprStmt] ExprStmt # 86| getExpr(): [AssignExpr] ... = ... # 86| Type = [ArithmeticType] _Complex double -# 86| ValueCategory = prvalue +# 86| ValueCategory = prvalue(load) # 86| getLValue(): [VariableAccess] cd # 86| Type = [ArithmeticType] _Complex double # 86| ValueCategory = lvalue @@ -1058,7 +1058,7 @@ complex.c: # 87| getStmt(24): [ExprStmt] ExprStmt # 87| getExpr(): [AssignExpr] ... = ... # 87| Type = [ArithmeticType] _Complex long double -# 87| ValueCategory = prvalue +# 87| ValueCategory = prvalue(load) # 87| getLValue(): [VariableAccess] cld # 87| Type = [ArithmeticType] _Complex long double # 87| ValueCategory = lvalue @@ -1072,7 +1072,7 @@ complex.c: # 88| getStmt(25): [ExprStmt] ExprStmt # 88| getExpr(): [AssignExpr] ... = ... # 88| Type = [ArithmeticType] _Complex long double -# 88| ValueCategory = prvalue +# 88| ValueCategory = prvalue(load) # 88| getLValue(): [VariableAccess] cld # 88| Type = [ArithmeticType] _Complex long double # 88| ValueCategory = lvalue @@ -1086,7 +1086,7 @@ complex.c: # 89| getStmt(26): [ExprStmt] ExprStmt # 89| getExpr(): [AssignExpr] ... = ... # 89| Type = [ArithmeticType] _Complex long double -# 89| ValueCategory = prvalue +# 89| ValueCategory = prvalue(load) # 89| getLValue(): [VariableAccess] cld # 89| Type = [ArithmeticType] _Complex long double # 89| ValueCategory = lvalue @@ -1100,7 +1100,7 @@ complex.c: # 92| getStmt(27): [ExprStmt] ExprStmt # 92| getExpr(): [AssignExpr] ... = ... # 92| Type = [FloatType] float -# 92| ValueCategory = prvalue +# 92| ValueCategory = prvalue(load) # 92| getLValue(): [VariableAccess] f # 92| Type = [FloatType] float # 92| ValueCategory = lvalue @@ -1114,7 +1114,7 @@ complex.c: # 93| getStmt(28): [ExprStmt] ExprStmt # 93| getExpr(): [AssignExpr] ... = ... # 93| Type = [FloatType] float -# 93| ValueCategory = prvalue +# 93| ValueCategory = prvalue(load) # 93| getLValue(): [VariableAccess] f # 93| Type = [FloatType] float # 93| ValueCategory = lvalue @@ -1128,7 +1128,7 @@ complex.c: # 94| getStmt(29): [ExprStmt] ExprStmt # 94| getExpr(): [AssignExpr] ... = ... # 94| Type = [FloatType] float -# 94| ValueCategory = prvalue +# 94| ValueCategory = prvalue(load) # 94| getLValue(): [VariableAccess] f # 94| Type = [FloatType] float # 94| ValueCategory = lvalue @@ -1142,7 +1142,7 @@ complex.c: # 95| getStmt(30): [ExprStmt] ExprStmt # 95| getExpr(): [AssignExpr] ... = ... # 95| Type = [DoubleType] double -# 95| ValueCategory = prvalue +# 95| ValueCategory = prvalue(load) # 95| getLValue(): [VariableAccess] d # 95| Type = [DoubleType] double # 95| ValueCategory = lvalue @@ -1156,7 +1156,7 @@ complex.c: # 96| getStmt(31): [ExprStmt] ExprStmt # 96| getExpr(): [AssignExpr] ... = ... # 96| Type = [DoubleType] double -# 96| ValueCategory = prvalue +# 96| ValueCategory = prvalue(load) # 96| getLValue(): [VariableAccess] d # 96| Type = [DoubleType] double # 96| ValueCategory = lvalue @@ -1170,7 +1170,7 @@ complex.c: # 97| getStmt(32): [ExprStmt] ExprStmt # 97| getExpr(): [AssignExpr] ... = ... # 97| Type = [DoubleType] double -# 97| ValueCategory = prvalue +# 97| ValueCategory = prvalue(load) # 97| getLValue(): [VariableAccess] d # 97| Type = [DoubleType] double # 97| ValueCategory = lvalue @@ -1184,7 +1184,7 @@ complex.c: # 98| getStmt(33): [ExprStmt] ExprStmt # 98| getExpr(): [AssignExpr] ... = ... # 98| Type = [LongDoubleType] long double -# 98| ValueCategory = prvalue +# 98| ValueCategory = prvalue(load) # 98| getLValue(): [VariableAccess] ld # 98| Type = [LongDoubleType] long double # 98| ValueCategory = lvalue @@ -1198,7 +1198,7 @@ complex.c: # 99| getStmt(34): [ExprStmt] ExprStmt # 99| getExpr(): [AssignExpr] ... = ... # 99| Type = [LongDoubleType] long double -# 99| ValueCategory = prvalue +# 99| ValueCategory = prvalue(load) # 99| getLValue(): [VariableAccess] ld # 99| Type = [LongDoubleType] long double # 99| ValueCategory = lvalue @@ -1212,7 +1212,7 @@ complex.c: # 100| getStmt(35): [ExprStmt] ExprStmt # 100| getExpr(): [AssignExpr] ... = ... # 100| Type = [LongDoubleType] long double -# 100| ValueCategory = prvalue +# 100| ValueCategory = prvalue(load) # 100| getLValue(): [VariableAccess] ld # 100| Type = [LongDoubleType] long double # 100| ValueCategory = lvalue @@ -1226,7 +1226,7 @@ complex.c: # 103| getStmt(36): [ExprStmt] ExprStmt # 103| getExpr(): [AssignExpr] ... = ... # 103| Type = [ArithmeticType] _Complex float -# 103| ValueCategory = prvalue +# 103| ValueCategory = prvalue(load) # 103| getLValue(): [VariableAccess] cf # 103| Type = [ArithmeticType] _Complex float # 103| ValueCategory = lvalue @@ -1240,7 +1240,7 @@ complex.c: # 104| getStmt(37): [ExprStmt] ExprStmt # 104| getExpr(): [AssignExpr] ... = ... # 104| Type = [ArithmeticType] _Complex float -# 104| ValueCategory = prvalue +# 104| ValueCategory = prvalue(load) # 104| getLValue(): [VariableAccess] cf # 104| Type = [ArithmeticType] _Complex float # 104| ValueCategory = lvalue @@ -1254,7 +1254,7 @@ complex.c: # 105| getStmt(38): [ExprStmt] ExprStmt # 105| getExpr(): [AssignExpr] ... = ... # 105| Type = [ArithmeticType] _Complex float -# 105| ValueCategory = prvalue +# 105| ValueCategory = prvalue(load) # 105| getLValue(): [VariableAccess] cf # 105| Type = [ArithmeticType] _Complex float # 105| ValueCategory = lvalue @@ -1268,7 +1268,7 @@ complex.c: # 106| getStmt(39): [ExprStmt] ExprStmt # 106| getExpr(): [AssignExpr] ... = ... # 106| Type = [ArithmeticType] _Complex double -# 106| ValueCategory = prvalue +# 106| ValueCategory = prvalue(load) # 106| getLValue(): [VariableAccess] cd # 106| Type = [ArithmeticType] _Complex double # 106| ValueCategory = lvalue @@ -1282,7 +1282,7 @@ complex.c: # 107| getStmt(40): [ExprStmt] ExprStmt # 107| getExpr(): [AssignExpr] ... = ... # 107| Type = [ArithmeticType] _Complex double -# 107| ValueCategory = prvalue +# 107| ValueCategory = prvalue(load) # 107| getLValue(): [VariableAccess] cd # 107| Type = [ArithmeticType] _Complex double # 107| ValueCategory = lvalue @@ -1296,7 +1296,7 @@ complex.c: # 108| getStmt(41): [ExprStmt] ExprStmt # 108| getExpr(): [AssignExpr] ... = ... # 108| Type = [ArithmeticType] _Complex double -# 108| ValueCategory = prvalue +# 108| ValueCategory = prvalue(load) # 108| getLValue(): [VariableAccess] cd # 108| Type = [ArithmeticType] _Complex double # 108| ValueCategory = lvalue @@ -1310,7 +1310,7 @@ complex.c: # 109| getStmt(42): [ExprStmt] ExprStmt # 109| getExpr(): [AssignExpr] ... = ... # 109| Type = [ArithmeticType] _Complex long double -# 109| ValueCategory = prvalue +# 109| ValueCategory = prvalue(load) # 109| getLValue(): [VariableAccess] cld # 109| Type = [ArithmeticType] _Complex long double # 109| ValueCategory = lvalue @@ -1324,7 +1324,7 @@ complex.c: # 110| getStmt(43): [ExprStmt] ExprStmt # 110| getExpr(): [AssignExpr] ... = ... # 110| Type = [ArithmeticType] _Complex long double -# 110| ValueCategory = prvalue +# 110| ValueCategory = prvalue(load) # 110| getLValue(): [VariableAccess] cld # 110| Type = [ArithmeticType] _Complex long double # 110| ValueCategory = lvalue @@ -1338,7 +1338,7 @@ complex.c: # 111| getStmt(44): [ExprStmt] ExprStmt # 111| getExpr(): [AssignExpr] ... = ... # 111| Type = [ArithmeticType] _Complex long double -# 111| ValueCategory = prvalue +# 111| ValueCategory = prvalue(load) # 111| getLValue(): [VariableAccess] cld # 111| Type = [ArithmeticType] _Complex long double # 111| ValueCategory = lvalue @@ -1352,7 +1352,7 @@ complex.c: # 114| getStmt(45): [ExprStmt] ExprStmt # 114| getExpr(): [AssignExpr] ... = ... # 114| Type = [ArithmeticType] _Imaginary float -# 114| ValueCategory = prvalue +# 114| ValueCategory = prvalue(load) # 114| getLValue(): [VariableAccess] jf # 114| Type = [ArithmeticType] _Imaginary float # 114| ValueCategory = lvalue @@ -1366,7 +1366,7 @@ complex.c: # 115| getStmt(46): [ExprStmt] ExprStmt # 115| getExpr(): [AssignExpr] ... = ... # 115| Type = [ArithmeticType] _Imaginary float -# 115| ValueCategory = prvalue +# 115| ValueCategory = prvalue(load) # 115| getLValue(): [VariableAccess] jf # 115| Type = [ArithmeticType] _Imaginary float # 115| ValueCategory = lvalue @@ -1380,7 +1380,7 @@ complex.c: # 116| getStmt(47): [ExprStmt] ExprStmt # 116| getExpr(): [AssignExpr] ... = ... # 116| Type = [ArithmeticType] _Imaginary float -# 116| ValueCategory = prvalue +# 116| ValueCategory = prvalue(load) # 116| getLValue(): [VariableAccess] jf # 116| Type = [ArithmeticType] _Imaginary float # 116| ValueCategory = lvalue @@ -1394,7 +1394,7 @@ complex.c: # 117| getStmt(48): [ExprStmt] ExprStmt # 117| getExpr(): [AssignExpr] ... = ... # 117| Type = [ArithmeticType] _Imaginary double -# 117| ValueCategory = prvalue +# 117| ValueCategory = prvalue(load) # 117| getLValue(): [VariableAccess] jd # 117| Type = [ArithmeticType] _Imaginary double # 117| ValueCategory = lvalue @@ -1408,7 +1408,7 @@ complex.c: # 118| getStmt(49): [ExprStmt] ExprStmt # 118| getExpr(): [AssignExpr] ... = ... # 118| Type = [ArithmeticType] _Imaginary double -# 118| ValueCategory = prvalue +# 118| ValueCategory = prvalue(load) # 118| getLValue(): [VariableAccess] jd # 118| Type = [ArithmeticType] _Imaginary double # 118| ValueCategory = lvalue @@ -1422,7 +1422,7 @@ complex.c: # 119| getStmt(50): [ExprStmt] ExprStmt # 119| getExpr(): [AssignExpr] ... = ... # 119| Type = [ArithmeticType] _Imaginary double -# 119| ValueCategory = prvalue +# 119| ValueCategory = prvalue(load) # 119| getLValue(): [VariableAccess] jd # 119| Type = [ArithmeticType] _Imaginary double # 119| ValueCategory = lvalue @@ -1436,7 +1436,7 @@ complex.c: # 120| getStmt(51): [ExprStmt] ExprStmt # 120| getExpr(): [AssignExpr] ... = ... # 120| Type = [ArithmeticType] _Imaginary long double -# 120| ValueCategory = prvalue +# 120| ValueCategory = prvalue(load) # 120| getLValue(): [VariableAccess] jld # 120| Type = [ArithmeticType] _Imaginary long double # 120| ValueCategory = lvalue @@ -1450,7 +1450,7 @@ complex.c: # 121| getStmt(52): [ExprStmt] ExprStmt # 121| getExpr(): [AssignExpr] ... = ... # 121| Type = [ArithmeticType] _Imaginary long double -# 121| ValueCategory = prvalue +# 121| ValueCategory = prvalue(load) # 121| getLValue(): [VariableAccess] jld # 121| Type = [ArithmeticType] _Imaginary long double # 121| ValueCategory = lvalue @@ -1464,7 +1464,7 @@ complex.c: # 122| getStmt(53): [ExprStmt] ExprStmt # 122| getExpr(): [AssignExpr] ... = ... # 122| Type = [ArithmeticType] _Imaginary long double -# 122| ValueCategory = prvalue +# 122| ValueCategory = prvalue(load) # 122| getLValue(): [VariableAccess] jld # 122| Type = [ArithmeticType] _Imaginary long double # 122| ValueCategory = lvalue @@ -1478,7 +1478,7 @@ complex.c: # 125| getStmt(54): [ExprStmt] ExprStmt # 125| getExpr(): [AssignExpr] ... = ... # 125| Type = [ArithmeticType] _Imaginary float -# 125| ValueCategory = prvalue +# 125| ValueCategory = prvalue(load) # 125| getLValue(): [VariableAccess] jf # 125| Type = [ArithmeticType] _Imaginary float # 125| ValueCategory = lvalue @@ -1492,7 +1492,7 @@ complex.c: # 126| getStmt(55): [ExprStmt] ExprStmt # 126| getExpr(): [AssignExpr] ... = ... # 126| Type = [ArithmeticType] _Imaginary float -# 126| ValueCategory = prvalue +# 126| ValueCategory = prvalue(load) # 126| getLValue(): [VariableAccess] jf # 126| Type = [ArithmeticType] _Imaginary float # 126| ValueCategory = lvalue @@ -1506,7 +1506,7 @@ complex.c: # 127| getStmt(56): [ExprStmt] ExprStmt # 127| getExpr(): [AssignExpr] ... = ... # 127| Type = [ArithmeticType] _Imaginary float -# 127| ValueCategory = prvalue +# 127| ValueCategory = prvalue(load) # 127| getLValue(): [VariableAccess] jf # 127| Type = [ArithmeticType] _Imaginary float # 127| ValueCategory = lvalue @@ -1520,7 +1520,7 @@ complex.c: # 128| getStmt(57): [ExprStmt] ExprStmt # 128| getExpr(): [AssignExpr] ... = ... # 128| Type = [ArithmeticType] _Imaginary double -# 128| ValueCategory = prvalue +# 128| ValueCategory = prvalue(load) # 128| getLValue(): [VariableAccess] jd # 128| Type = [ArithmeticType] _Imaginary double # 128| ValueCategory = lvalue @@ -1534,7 +1534,7 @@ complex.c: # 129| getStmt(58): [ExprStmt] ExprStmt # 129| getExpr(): [AssignExpr] ... = ... # 129| Type = [ArithmeticType] _Imaginary double -# 129| ValueCategory = prvalue +# 129| ValueCategory = prvalue(load) # 129| getLValue(): [VariableAccess] jd # 129| Type = [ArithmeticType] _Imaginary double # 129| ValueCategory = lvalue @@ -1548,7 +1548,7 @@ complex.c: # 130| getStmt(59): [ExprStmt] ExprStmt # 130| getExpr(): [AssignExpr] ... = ... # 130| Type = [ArithmeticType] _Imaginary double -# 130| ValueCategory = prvalue +# 130| ValueCategory = prvalue(load) # 130| getLValue(): [VariableAccess] jd # 130| Type = [ArithmeticType] _Imaginary double # 130| ValueCategory = lvalue @@ -1562,7 +1562,7 @@ complex.c: # 131| getStmt(60): [ExprStmt] ExprStmt # 131| getExpr(): [AssignExpr] ... = ... # 131| Type = [ArithmeticType] _Imaginary long double -# 131| ValueCategory = prvalue +# 131| ValueCategory = prvalue(load) # 131| getLValue(): [VariableAccess] jld # 131| Type = [ArithmeticType] _Imaginary long double # 131| ValueCategory = lvalue @@ -1576,7 +1576,7 @@ complex.c: # 132| getStmt(61): [ExprStmt] ExprStmt # 132| getExpr(): [AssignExpr] ... = ... # 132| Type = [ArithmeticType] _Imaginary long double -# 132| ValueCategory = prvalue +# 132| ValueCategory = prvalue(load) # 132| getLValue(): [VariableAccess] jld # 132| Type = [ArithmeticType] _Imaginary long double # 132| ValueCategory = lvalue @@ -1590,7 +1590,7 @@ complex.c: # 133| getStmt(62): [ExprStmt] ExprStmt # 133| getExpr(): [AssignExpr] ... = ... # 133| Type = [ArithmeticType] _Imaginary long double -# 133| ValueCategory = prvalue +# 133| ValueCategory = prvalue(load) # 133| getLValue(): [VariableAccess] jld # 133| Type = [ArithmeticType] _Imaginary long double # 133| ValueCategory = lvalue @@ -1604,7 +1604,7 @@ complex.c: # 136| getStmt(63): [ExprStmt] ExprStmt # 136| getExpr(): [AssignExpr] ... = ... # 136| Type = [FloatType] float -# 136| ValueCategory = prvalue +# 136| ValueCategory = prvalue(load) # 136| getLValue(): [VariableAccess] f # 136| Type = [FloatType] float # 136| ValueCategory = lvalue @@ -1618,7 +1618,7 @@ complex.c: # 137| getStmt(64): [ExprStmt] ExprStmt # 137| getExpr(): [AssignExpr] ... = ... # 137| Type = [FloatType] float -# 137| ValueCategory = prvalue +# 137| ValueCategory = prvalue(load) # 137| getLValue(): [VariableAccess] f # 137| Type = [FloatType] float # 137| ValueCategory = lvalue @@ -1632,7 +1632,7 @@ complex.c: # 138| getStmt(65): [ExprStmt] ExprStmt # 138| getExpr(): [AssignExpr] ... = ... # 138| Type = [FloatType] float -# 138| ValueCategory = prvalue +# 138| ValueCategory = prvalue(load) # 138| getLValue(): [VariableAccess] f # 138| Type = [FloatType] float # 138| ValueCategory = lvalue @@ -1646,7 +1646,7 @@ complex.c: # 139| getStmt(66): [ExprStmt] ExprStmt # 139| getExpr(): [AssignExpr] ... = ... # 139| Type = [DoubleType] double -# 139| ValueCategory = prvalue +# 139| ValueCategory = prvalue(load) # 139| getLValue(): [VariableAccess] d # 139| Type = [DoubleType] double # 139| ValueCategory = lvalue @@ -1660,7 +1660,7 @@ complex.c: # 140| getStmt(67): [ExprStmt] ExprStmt # 140| getExpr(): [AssignExpr] ... = ... # 140| Type = [DoubleType] double -# 140| ValueCategory = prvalue +# 140| ValueCategory = prvalue(load) # 140| getLValue(): [VariableAccess] d # 140| Type = [DoubleType] double # 140| ValueCategory = lvalue @@ -1674,7 +1674,7 @@ complex.c: # 141| getStmt(68): [ExprStmt] ExprStmt # 141| getExpr(): [AssignExpr] ... = ... # 141| Type = [DoubleType] double -# 141| ValueCategory = prvalue +# 141| ValueCategory = prvalue(load) # 141| getLValue(): [VariableAccess] d # 141| Type = [DoubleType] double # 141| ValueCategory = lvalue @@ -1688,7 +1688,7 @@ complex.c: # 142| getStmt(69): [ExprStmt] ExprStmt # 142| getExpr(): [AssignExpr] ... = ... # 142| Type = [LongDoubleType] long double -# 142| ValueCategory = prvalue +# 142| ValueCategory = prvalue(load) # 142| getLValue(): [VariableAccess] ld # 142| Type = [LongDoubleType] long double # 142| ValueCategory = lvalue @@ -1702,7 +1702,7 @@ complex.c: # 143| getStmt(70): [ExprStmt] ExprStmt # 143| getExpr(): [AssignExpr] ... = ... # 143| Type = [LongDoubleType] long double -# 143| ValueCategory = prvalue +# 143| ValueCategory = prvalue(load) # 143| getLValue(): [VariableAccess] ld # 143| Type = [LongDoubleType] long double # 143| ValueCategory = lvalue @@ -1716,7 +1716,7 @@ complex.c: # 144| getStmt(71): [ExprStmt] ExprStmt # 144| getExpr(): [AssignExpr] ... = ... # 144| Type = [LongDoubleType] long double -# 144| ValueCategory = prvalue +# 144| ValueCategory = prvalue(load) # 144| getLValue(): [VariableAccess] ld # 144| Type = [LongDoubleType] long double # 144| ValueCategory = lvalue @@ -1752,7 +1752,7 @@ ir.c: # 9| getStmt(1): [ExprStmt] ExprStmt # 9| getExpr(): [AssignExpr] ... = ... # 9| Type = [IntType] int -# 9| ValueCategory = prvalue +# 9| ValueCategory = prvalue(load) # 9| getLValue(): [ValueFieldAccess] x # 9| Type = [IntType] int # 9| ValueCategory = lvalue @@ -1761,7 +1761,7 @@ ir.c: # 9| ValueCategory = lvalue # 9| getRValue(): [AssignExpr] ... = ... # 9| Type = [IntType] int -# 9| ValueCategory = prvalue +# 9| ValueCategory = prvalue(load) # 9| getLValue(): [ValueFieldAccess] y # 9| Type = [IntType] int # 9| ValueCategory = lvalue @@ -1781,7 +1781,7 @@ ir.c: # 10| getStmt(2): [ExprStmt] ExprStmt # 10| getExpr(): [AssignExpr] ... = ... # 10| Type = [IntType] int -# 10| ValueCategory = prvalue +# 10| ValueCategory = prvalue(load) # 10| getLValue(): [ValueFieldAccess] x # 10| Type = [IntType] int # 10| ValueCategory = lvalue @@ -2675,7 +2675,7 @@ ir.cpp: # 101| ValueCategory = lvalue # 101| getRValue(): [PrefixIncrExpr] ++ ... # 101| Type = [IntType] int -# 101| ValueCategory = prvalue +# 101| ValueCategory = prvalue(load) # 101| getOperand(): [VariableAccess] x # 101| Type = [IntType] int # 101| ValueCategory = lvalue @@ -2688,7 +2688,7 @@ ir.cpp: # 102| ValueCategory = lvalue # 102| getRValue(): [PrefixDecrExpr] -- ... # 102| Type = [IntType] int -# 102| ValueCategory = prvalue +# 102| ValueCategory = prvalue(load) # 102| getOperand(): [VariableAccess] x # 102| Type = [IntType] int # 102| ValueCategory = lvalue @@ -3041,7 +3041,7 @@ ir.cpp: # 147| ValueCategory = lvalue # 147| getRValue(): [PrefixIncrExpr] ++ ... # 147| Type = [FloatType] float -# 147| ValueCategory = prvalue +# 147| ValueCategory = prvalue(load) # 147| getOperand(): [VariableAccess] x # 147| Type = [FloatType] float # 147| ValueCategory = lvalue @@ -3054,7 +3054,7 @@ ir.cpp: # 148| ValueCategory = lvalue # 148| getRValue(): [PrefixDecrExpr] -- ... # 148| Type = [FloatType] float -# 148| ValueCategory = prvalue +# 148| ValueCategory = prvalue(load) # 148| getOperand(): [VariableAccess] x # 148| Type = [FloatType] float # 148| ValueCategory = lvalue @@ -3557,7 +3557,7 @@ ir.cpp: # 207| ValueCategory = lvalue # 207| getRValue(): [PrefixIncrExpr] ++ ... # 207| Type = [IntPointerType] int * -# 207| ValueCategory = prvalue +# 207| ValueCategory = prvalue(load) # 207| getOperand(): [VariableAccess] p # 207| Type = [IntPointerType] int * # 207| ValueCategory = lvalue @@ -3570,7 +3570,7 @@ ir.cpp: # 208| ValueCategory = lvalue # 208| getRValue(): [PrefixDecrExpr] -- ... # 208| Type = [IntPointerType] int * -# 208| ValueCategory = prvalue +# 208| ValueCategory = prvalue(load) # 208| getOperand(): [VariableAccess] p # 208| Type = [IntPointerType] int * # 208| ValueCategory = lvalue @@ -4825,7 +4825,7 @@ ir.cpp: # 483| getVariable().getInitializer(): [Initializer] initializer for z # 483| getExpr(): [ConditionalExpr] ... ? ... : ... # 483| Type = [IntType] int -# 483| ValueCategory = prvalue +# 483| ValueCategory = prvalue(load) # 483| getCondition(): [VariableAccess] a # 483| Type = [BoolType] bool # 483| ValueCategory = prvalue(load) @@ -6025,7 +6025,7 @@ ir.cpp: # 705| getStmt(0): [ReturnStmt] return ... # 705| getExpr(): [ConditionalExpr] ... ? ... : ... # 705| Type = [UnknownType] unknown -# 705| ValueCategory = prvalue(load) +# 705| ValueCategory = prvalue # 705| getCondition(): [LTExpr] ... < ... # 705| Type = [UnknownType] unknown # 705| ValueCategory = prvalue @@ -6058,7 +6058,7 @@ ir.cpp: # 705| getStmt(0): [ReturnStmt] return ... # 705| getExpr(): [ConditionalExpr] ... ? ... : ... # 705| Type = [IntType] int -# 705| ValueCategory = prvalue +# 705| ValueCategory = prvalue(load) # 705| getCondition(): [LTExpr] ... < ... # 705| Type = [BoolType] bool # 705| ValueCategory = prvalue @@ -7864,7 +7864,7 @@ ir.cpp: # 915| getVariable().getInitializer(): [Initializer] initializer for b # 915| getExpr(): [ConditionalExpr] ... ? ... : ... # 915| Type = [IntType] int -# 915| ValueCategory = prvalue +# 915| ValueCategory = prvalue(load) # 915| getCondition(): [Literal] 1 # 915| Type = [BoolType] bool # 915| Value = [Literal] 1 @@ -8633,6 +8633,9 @@ ir.cpp: # 1038| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] lambda [] type at line 1038, col. 12 && +# 1038| : +# 1038| getEntryPoint(): [BlockStmt] { ... } +# 1038| getStmt(0): [ReturnStmt] return ... # 1038| [Constructor] void (lambda [] type at line 1038, col. 12)::(unnamed constructor)() # 1038| : # 1038| [MemberFunction] void (lambda [] type at line 1038, col. 12)::_FUN() @@ -8963,6 +8966,9 @@ ir.cpp: # 1041| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] lambda [] type at line 1041, col. 23 && +# 1041| : +# 1041| getEntryPoint(): [BlockStmt] { ... } +# 1041| getStmt(0): [ReturnStmt] return ... # 1041| [Constructor] void (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::(unnamed constructor)() # 1041| : # 1041| [MemberFunction] char (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::_FUN(float) @@ -10456,7 +10462,7 @@ ir.cpp: # 1301| ValueCategory = lvalue # 1301| getRValue(): [ConditionalExpr] ... ? ... : ... # 1301| Type = [IntType] int -# 1301| ValueCategory = prvalue +# 1301| ValueCategory = prvalue(load) # 1301| getCondition(): [VariableAccess] b # 1301| Type = [BoolType] bool # 1301| ValueCategory = prvalue(load) @@ -10472,7 +10478,7 @@ ir.cpp: # 1302| ValueCategory = lvalue # 1302| getRValue(): [ConditionalExpr] ... ? ... : ... # 1302| Type = [LongType] long -# 1302| ValueCategory = prvalue +# 1302| ValueCategory = prvalue(load) # 1302| getCondition(): [VariableAccess] b # 1302| Type = [BoolType] bool # 1302| ValueCategory = prvalue(load) @@ -10492,7 +10498,7 @@ ir.cpp: # 1303| ValueCategory = lvalue # 1303| getRValue(): [ConditionalExpr] ... ? ... : ... # 1303| Type = [IntType] int -# 1303| ValueCategory = prvalue +# 1303| ValueCategory = prvalue(load) # 1303| getCondition(): [VariableAccess] x # 1303| Type = [IntType] int # 1303| ValueCategory = prvalue(load) @@ -10512,7 +10518,7 @@ ir.cpp: # 1304| ValueCategory = lvalue # 1304| getRValue(): [ConditionalExpr] ... ? ... : ... # 1304| Type = [LongType] long -# 1304| ValueCategory = prvalue +# 1304| ValueCategory = prvalue(load) # 1304| getCondition(): [VariableAccess] x # 1304| Type = [IntType] int # 1304| ValueCategory = prvalue(load) @@ -10536,7 +10542,7 @@ ir.cpp: # 1305| ValueCategory = lvalue # 1305| getRValue(): [ConditionalExpr] ... ? ... : ... # 1305| Type = [LongType] long -# 1305| ValueCategory = prvalue +# 1305| ValueCategory = prvalue(load) # 1305| getCondition(): [VariableAccess] y # 1305| Type = [LongType] long # 1305| ValueCategory = prvalue(load) @@ -10564,7 +10570,7 @@ ir.cpp: # 1306| ValueCategory = lvalue # 1306| getRValue(): [ConditionalExpr] ... ? ... : ... # 1306| Type = [LongType] long -# 1306| ValueCategory = prvalue +# 1306| ValueCategory = prvalue(load) # 1306| getCondition(): [VariableAccess] y # 1306| Type = [LongType] long # 1306| ValueCategory = prvalue(load) @@ -10588,7 +10594,7 @@ ir.cpp: # 1308| ValueCategory = lvalue # 1308| getRValue(): [ConditionalExpr] ... ? ... : ... # 1308| Type = [IntType] int -# 1308| ValueCategory = prvalue +# 1308| ValueCategory = prvalue(load) # 1308| getCondition(): [LogicalOrExpr] ... || ... # 1308| Type = [BoolType] bool # 1308| ValueCategory = prvalue @@ -10633,7 +10639,7 @@ ir.cpp: # 1315| getStmt(0): [ReturnStmt] return ... # 1315| getExpr(): [ConditionalExpr] ... ? ... : ... # 1315| Type = [IntType] int -# 1315| ValueCategory = prvalue +# 1315| ValueCategory = prvalue(load) # 1315| getCondition(): [LogicalAndExpr] ... && ... # 1315| Type = [BoolType] bool # 1315| ValueCategory = prvalue @@ -13368,9 +13374,6 @@ ir.cpp: # 1714| getExpr(): [TemporaryObjectExpr] temporary object # 1714| Type = [Class] TrivialLambdaClass # 1714| ValueCategory = lvalue -# 1714| getExpr(): [TemporaryObjectExpr] temporary object -# 1714| Type = [Class] TrivialLambdaClass -# 1714| ValueCategory = prvalue(load) # 1716| getStmt(2): [DeclStmt] declaration # 1716| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_outer1 # 1716| Type = [Closure,LocalClass] decltype([...](...){...}) @@ -14710,7 +14713,7 @@ ir.cpp: # 1930| ValueCategory = lvalue # 1930| getRValue(): [AssignExpr] ... = ... # 1930| Type = [IntType] int -# 1930| ValueCategory = prvalue +# 1930| ValueCategory = prvalue(load) # 1930| getLValue(): [VariableAccess] j # 1930| Type = [IntType] int # 1930| ValueCategory = lvalue @@ -14741,7 +14744,7 @@ ir.cpp: # 1935| ValueCategory = lvalue # 1935| getRValue(): [AssignAddExpr] ... += ... # 1935| Type = [IntType] int -# 1935| ValueCategory = prvalue +# 1935| ValueCategory = prvalue(load) # 1935| getLValue(): [VariableAccess] j # 1935| Type = [IntType] int # 1935| ValueCategory = lvalue @@ -14751,7 +14754,7 @@ ir.cpp: # 1935| ValueCategory = prvalue # 1935| getRValue().getFullyConverted(): [ParenthesisExpr] (...) # 1935| Type = [IntType] int -# 1935| ValueCategory = prvalue +# 1935| ValueCategory = prvalue(load) # 1936| getStmt(2): [ReturnStmt] return ... # 1938| [CopyAssignmentOperator] D& D::operator=(D const&) # 1938| : @@ -15040,7 +15043,7 @@ ir.cpp: # 1993| ValueCategory = lvalue # 1993| getRValue(): [FunctionAccess] StaticMemberFunction # 1993| Type = [FunctionPointerType] ..(*)(..) -# 1993| ValueCategory = prvalue +# 1993| ValueCategory = prvalue(load) # 1993| getQualifier(): [VariableAccess] c # 1993| Type = [Class] C # 1993| ValueCategory = lvalue @@ -15065,7 +15068,7 @@ ir.cpp: # 1997| ValueCategory = lvalue # 1997| getRValue(): [ConditionalExpr] ... ? ... : ... # 1997| Type = [IntType] int -# 1997| ValueCategory = prvalue +# 1997| ValueCategory = prvalue(load) # 1997| getCondition(): [VariableAccess] a # 1997| Type = [BoolType] bool # 1997| ValueCategory = prvalue(load) @@ -15084,7 +15087,7 @@ ir.cpp: # 1998| ValueCategory = lvalue # 1998| getRValue(): [ConditionalExpr] ... ? ... : ... # 1998| Type = [IntType] int -# 1998| ValueCategory = prvalue +# 1998| ValueCategory = prvalue(load) # 1998| getCondition(): [VariableAccess] a # 1998| Type = [BoolType] bool # 1998| ValueCategory = prvalue(load) @@ -15168,7 +15171,7 @@ ir.cpp: # 2007| ValueCategory = lvalue # 2007| getRValue(): [ConditionalExpr] ... ? ... : ... # 2007| Type = [Struct] TernaryPodObj -# 2007| ValueCategory = prvalue +# 2007| ValueCategory = prvalue(load) # 2007| getCondition(): [VariableAccess] a # 2007| Type = [BoolType] bool # 2007| ValueCategory = prvalue(load) @@ -15187,7 +15190,7 @@ ir.cpp: # 2008| ValueCategory = lvalue # 2008| getRValue(): [ConditionalExpr] ... ? ... : ... # 2008| Type = [Struct] TernaryPodObj -# 2008| ValueCategory = prvalue +# 2008| ValueCategory = prvalue(load) # 2008| getCondition(): [VariableAccess] a # 2008| Type = [BoolType] bool # 2008| ValueCategory = prvalue(load) @@ -15216,7 +15219,7 @@ ir.cpp: # 2009| ValueCategory = lvalue # 2009| getRValue(): [ConditionalExpr] ... ? ... : ... # 2009| Type = [Struct] TernaryPodObj -# 2009| ValueCategory = prvalue +# 2009| ValueCategory = prvalue(load) # 2009| getCondition(): [VariableAccess] a # 2009| Type = [BoolType] bool # 2009| ValueCategory = prvalue(load) @@ -15249,7 +15252,7 @@ ir.cpp: # 2010| ValueCategory = lvalue # 2010| getRValue(): [ConditionalExpr] ... ? ... : ... # 2010| Type = [Struct] TernaryPodObj -# 2010| ValueCategory = prvalue +# 2010| ValueCategory = prvalue(load) # 2010| getCondition(): [VariableAccess] a # 2010| Type = [BoolType] bool # 2010| ValueCategory = prvalue(load) @@ -15351,7 +15354,7 @@ ir.cpp: # 2019| ValueCategory = lvalue # 2019| getArgument(0): [ConditionalExpr] ... ? ... : ... # 2019| Type = [Struct] TernaryNonPodObj -# 2019| ValueCategory = prvalue +# 2019| ValueCategory = prvalue(load) # 2019| getCondition(): [VariableAccess] a # 2019| Type = [BoolType] bool # 2019| ValueCategory = prvalue(load) @@ -15399,7 +15402,7 @@ ir.cpp: # 2020| ValueCategory = lvalue # 2020| getArgument(0): [ConditionalExpr] ... ? ... : ... # 2020| Type = [Struct] TernaryNonPodObj -# 2020| ValueCategory = prvalue +# 2020| ValueCategory = prvalue(load) # 2020| getCondition(): [VariableAccess] a # 2020| Type = [BoolType] bool # 2020| ValueCategory = prvalue(load) @@ -16064,7 +16067,7 @@ try_except.c: # 10| getStmt(1): [ExprStmt] ExprStmt # 10| getExpr(): [AssignExpr] ... = ... # 10| Type = [IntType] int -# 10| ValueCategory = prvalue +# 10| ValueCategory = prvalue(load) # 10| getLValue(): [VariableAccess] x # 10| Type = [IntType] int # 10| ValueCategory = lvalue @@ -16118,7 +16121,7 @@ try_except.c: # 22| getStmt(1): [ExprStmt] ExprStmt # 22| getExpr(): [AssignExpr] ... = ... # 22| Type = [IntType] int -# 22| ValueCategory = prvalue +# 22| ValueCategory = prvalue(load) # 22| getLValue(): [VariableAccess] x # 22| Type = [IntType] int # 22| ValueCategory = lvalue diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index bfe31bbefe7a..64766a968065 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -124,18 +124,24 @@ | complex.c:2:23:2:25 | StoreValue | r2_3 | | complex.c:2:23:2:25 | Unary | r2_2 | | complex.c:3:3:3:4 | Address | &:r3_3 | +| complex.c:3:3:3:4 | Address | &:r3_3 | +| complex.c:3:3:3:12 | Load | m3_4 | | complex.c:3:8:3:12 | StoreValue | r3_2 | | complex.c:3:8:3:12 | Unary | r3_1 | | complex.c:4:19:4:20 | Address | &:r4_1 | | complex.c:4:24:4:26 | StoreValue | r4_3 | | complex.c:4:24:4:26 | Unary | r4_2 | | complex.c:5:3:5:4 | Address | &:r5_3 | +| complex.c:5:3:5:4 | Address | &:r5_3 | +| complex.c:5:3:5:12 | Load | m5_4 | | complex.c:5:8:5:12 | StoreValue | r5_2 | | complex.c:5:8:5:12 | Unary | r5_1 | | complex.c:6:24:6:26 | Address | &:r6_1 | | complex.c:6:30:6:32 | StoreValue | r6_3 | | complex.c:6:30:6:32 | Unary | r6_2 | | complex.c:7:3:7:5 | Address | &:r7_3 | +| complex.c:7:3:7:5 | Address | &:r7_3 | +| complex.c:7:3:7:13 | Load | m7_4 | | complex.c:7:9:7:13 | StoreValue | r7_2 | | complex.c:7:9:7:13 | Unary | r7_1 | | complex.c:9:20:9:21 | Address | &:r9_1 | @@ -167,16 +173,22 @@ | complex.c:22:25:22:30 | StoreValue | r22_2 | | complex.c:23:20:23:22 | Address | &:r23_1 | | complex.c:26:3:26:5 | Address | &:r26_4 | +| complex.c:26:3:26:5 | Address | &:r26_4 | +| complex.c:26:3:26:12 | Load | m26_5 | | complex.c:26:9:26:12 | StoreValue | r26_3 | | complex.c:26:10:26:12 | Address | &:r26_1 | | complex.c:26:10:26:12 | Load | m18_4 | | complex.c:26:10:26:12 | Unary | r26_2 | | complex.c:27:3:27:5 | Address | &:r27_4 | +| complex.c:27:3:27:5 | Address | &:r27_4 | +| complex.c:27:3:27:12 | Load | m27_5 | | complex.c:27:9:27:12 | StoreValue | r27_3 | | complex.c:27:10:27:12 | Address | &:r27_1 | | complex.c:27:10:27:12 | Load | m18_4 | | complex.c:27:10:27:12 | Unary | r27_2 | | complex.c:30:3:30:5 | Address | &:r30_6 | +| complex.c:30:3:30:5 | Address | &:r30_6 | +| complex.c:30:3:30:17 | Load | m30_7 | | complex.c:30:9:30:11 | Address | &:r30_1 | | complex.c:30:9:30:11 | Left | r30_2 | | complex.c:30:9:30:11 | Load | m18_4 | @@ -185,6 +197,8 @@ | complex.c:30:15:30:17 | Load | m19_4 | | complex.c:30:15:30:17 | Right | r30_4 | | complex.c:31:3:31:5 | Address | &:r31_6 | +| complex.c:31:3:31:5 | Address | &:r31_6 | +| complex.c:31:3:31:17 | Load | m31_7 | | complex.c:31:9:31:11 | Address | &:r31_1 | | complex.c:31:9:31:11 | Left | r31_2 | | complex.c:31:9:31:11 | Load | m18_4 | @@ -193,6 +207,8 @@ | complex.c:31:15:31:17 | Load | m19_4 | | complex.c:31:15:31:17 | Right | r31_4 | | complex.c:32:3:32:5 | Address | &:r32_6 | +| complex.c:32:3:32:5 | Address | &:r32_6 | +| complex.c:32:3:32:17 | Load | m32_7 | | complex.c:32:9:32:11 | Address | &:r32_1 | | complex.c:32:9:32:11 | Left | r32_2 | | complex.c:32:9:32:11 | Load | m18_4 | @@ -201,6 +217,8 @@ | complex.c:32:15:32:17 | Load | m19_4 | | complex.c:32:15:32:17 | Right | r32_4 | | complex.c:33:3:33:5 | Address | &:r33_6 | +| complex.c:33:3:33:5 | Address | &:r33_6 | +| complex.c:33:3:33:17 | Load | m33_7 | | complex.c:33:9:33:11 | Address | &:r33_1 | | complex.c:33:9:33:11 | Left | r33_2 | | complex.c:33:9:33:11 | Load | m18_4 | @@ -209,16 +227,22 @@ | complex.c:33:15:33:17 | Load | m19_4 | | complex.c:33:15:33:17 | Right | r33_4 | | complex.c:36:3:36:5 | Address | &:r36_4 | +| complex.c:36:3:36:5 | Address | &:r36_4 | +| complex.c:36:3:36:12 | Load | m36_5 | | complex.c:36:9:36:12 | StoreValue | r36_3 | | complex.c:36:10:36:12 | Address | &:r36_1 | | complex.c:36:10:36:12 | Load | m21_3 | | complex.c:36:10:36:12 | Unary | r36_2 | | complex.c:37:3:37:5 | Address | &:r37_4 | +| complex.c:37:3:37:5 | Address | &:r37_4 | +| complex.c:37:3:37:12 | Load | m37_5 | | complex.c:37:9:37:12 | StoreValue | r37_3 | | complex.c:37:10:37:12 | Address | &:r37_1 | | complex.c:37:10:37:12 | Load | m21_3 | | complex.c:37:10:37:12 | Unary | r37_2 | | complex.c:40:3:40:5 | Address | &:r40_6 | +| complex.c:40:3:40:5 | Address | &:r40_6 | +| complex.c:40:3:40:17 | Load | m40_7 | | complex.c:40:9:40:11 | Address | &:r40_1 | | complex.c:40:9:40:11 | Left | r40_2 | | complex.c:40:9:40:11 | Load | m21_3 | @@ -227,6 +251,8 @@ | complex.c:40:15:40:17 | Load | m22_3 | | complex.c:40:15:40:17 | Right | r40_4 | | complex.c:41:3:41:5 | Address | &:r41_6 | +| complex.c:41:3:41:5 | Address | &:r41_6 | +| complex.c:41:3:41:17 | Load | m41_7 | | complex.c:41:9:41:11 | Address | &:r41_1 | | complex.c:41:9:41:11 | Left | r41_2 | | complex.c:41:9:41:11 | Load | m21_3 | @@ -235,6 +261,8 @@ | complex.c:41:15:41:17 | Load | m22_3 | | complex.c:41:15:41:17 | Right | r41_4 | | complex.c:42:3:42:4 | Address | &:r42_6 | +| complex.c:42:3:42:4 | Address | &:r42_6 | +| complex.c:42:3:42:16 | Load | m42_7 | | complex.c:42:8:42:10 | Address | &:r42_1 | | complex.c:42:8:42:10 | Left | r42_2 | | complex.c:42:8:42:10 | Load | m21_3 | @@ -243,6 +271,8 @@ | complex.c:42:14:42:16 | Load | m22_3 | | complex.c:42:14:42:16 | Right | r42_4 | | complex.c:43:3:43:4 | Address | &:r43_6 | +| complex.c:43:3:43:4 | Address | &:r43_6 | +| complex.c:43:3:43:16 | Load | m43_7 | | complex.c:43:8:43:10 | Address | &:r43_1 | | complex.c:43:8:43:10 | Left | r43_2 | | complex.c:43:8:43:10 | Load | m21_3 | @@ -251,6 +281,8 @@ | complex.c:43:14:43:16 | Load | m22_3 | | complex.c:43:14:43:16 | Right | r43_4 | | complex.c:46:3:46:5 | Address | &:r46_6 | +| complex.c:46:3:46:5 | Address | &:r46_6 | +| complex.c:46:3:46:16 | Load | m46_7 | | complex.c:46:9:46:11 | Address | &:r46_1 | | complex.c:46:9:46:11 | Left | r46_2 | | complex.c:46:9:46:11 | Load | m21_3 | @@ -259,6 +291,8 @@ | complex.c:46:15:46:16 | Load | m16_3 | | complex.c:46:15:46:16 | Right | r46_4 | | complex.c:47:3:47:5 | Address | &:r47_6 | +| complex.c:47:3:47:5 | Address | &:r47_6 | +| complex.c:47:3:47:16 | Load | m47_7 | | complex.c:47:9:47:11 | Address | &:r47_1 | | complex.c:47:9:47:11 | Left | r47_2 | | complex.c:47:9:47:11 | Load | m21_3 | @@ -267,6 +301,8 @@ | complex.c:47:15:47:16 | Load | m16_3 | | complex.c:47:15:47:16 | Right | r47_4 | | complex.c:48:3:48:5 | Address | &:r48_6 | +| complex.c:48:3:48:5 | Address | &:r48_6 | +| complex.c:48:3:48:16 | Load | m48_7 | | complex.c:48:9:48:11 | Address | &:r48_1 | | complex.c:48:9:48:11 | Left | r48_2 | | complex.c:48:9:48:11 | Load | m21_3 | @@ -275,6 +311,8 @@ | complex.c:48:15:48:16 | Load | m16_3 | | complex.c:48:15:48:16 | Right | r48_4 | | complex.c:49:3:49:5 | Address | &:r49_6 | +| complex.c:49:3:49:5 | Address | &:r49_6 | +| complex.c:49:3:49:16 | Load | m49_7 | | complex.c:49:9:49:11 | Address | &:r49_1 | | complex.c:49:9:49:11 | Left | r49_2 | | complex.c:49:9:49:11 | Load | m21_3 | @@ -283,6 +321,8 @@ | complex.c:49:15:49:16 | Load | m16_3 | | complex.c:49:15:49:16 | Right | r49_4 | | complex.c:52:3:52:5 | Address | &:r52_6 | +| complex.c:52:3:52:5 | Address | &:r52_6 | +| complex.c:52:3:52:16 | Load | m52_7 | | complex.c:52:9:52:10 | Address | &:r52_1 | | complex.c:52:9:52:10 | Left | r52_2 | | complex.c:52:9:52:10 | Load | m15_3 | @@ -291,6 +331,8 @@ | complex.c:52:14:52:16 | Load | m22_3 | | complex.c:52:14:52:16 | Right | r52_4 | | complex.c:53:3:53:5 | Address | &:r53_6 | +| complex.c:53:3:53:5 | Address | &:r53_6 | +| complex.c:53:3:53:16 | Load | m53_7 | | complex.c:53:9:53:10 | Address | &:r53_1 | | complex.c:53:9:53:10 | Left | r53_2 | | complex.c:53:9:53:10 | Load | m15_3 | @@ -299,6 +341,8 @@ | complex.c:53:14:53:16 | Load | m22_3 | | complex.c:53:14:53:16 | Right | r53_4 | | complex.c:54:3:54:5 | Address | &:r54_6 | +| complex.c:54:3:54:5 | Address | &:r54_6 | +| complex.c:54:3:54:16 | Load | m54_7 | | complex.c:54:9:54:10 | Address | &:r54_1 | | complex.c:54:9:54:10 | Left | r54_2 | | complex.c:54:9:54:10 | Load | m15_3 | @@ -307,6 +351,8 @@ | complex.c:54:14:54:16 | Load | m22_3 | | complex.c:54:14:54:16 | Right | r54_4 | | complex.c:55:3:55:5 | Address | &:r55_6 | +| complex.c:55:3:55:5 | Address | &:r55_6 | +| complex.c:55:3:55:16 | Load | m55_7 | | complex.c:55:9:55:10 | Address | &:r55_1 | | complex.c:55:9:55:10 | Left | r55_2 | | complex.c:55:9:55:10 | Load | m15_3 | @@ -341,313 +387,439 @@ | complex.c:67:32:67:36 | StoreValue | r67_3 | | complex.c:67:32:67:36 | Unary | r67_2 | | complex.c:70:3:70:4 | Address | &:r70_3 | +| complex.c:70:3:70:4 | Address | &:r70_3 | +| complex.c:70:3:70:9 | Load | m70_4 | | complex.c:70:8:70:9 | Address | &:r70_1 | | complex.c:70:8:70:9 | Load | m62_4 | | complex.c:70:8:70:9 | StoreValue | r70_2 | | complex.c:71:3:71:4 | Address | &:r71_4 | +| complex.c:71:3:71:4 | Address | &:r71_4 | +| complex.c:71:3:71:9 | Load | m71_5 | | complex.c:71:8:71:9 | Address | &:r71_1 | | complex.c:71:8:71:9 | Load | m63_4 | | complex.c:71:8:71:9 | StoreValue | r71_3 | | complex.c:71:8:71:9 | Unary | r71_2 | | complex.c:72:3:72:4 | Address | &:r72_4 | +| complex.c:72:3:72:4 | Address | &:r72_4 | +| complex.c:72:3:72:10 | Load | m72_5 | | complex.c:72:8:72:10 | Address | &:r72_1 | | complex.c:72:8:72:10 | Load | m64_4 | | complex.c:72:8:72:10 | StoreValue | r72_3 | | complex.c:72:8:72:10 | Unary | r72_2 | | complex.c:73:3:73:4 | Address | &:r73_4 | +| complex.c:73:3:73:4 | Address | &:r73_4 | +| complex.c:73:3:73:9 | Load | m73_5 | | complex.c:73:8:73:9 | Address | &:r73_1 | | complex.c:73:8:73:9 | Load | m72_5 | | complex.c:73:8:73:9 | StoreValue | r73_3 | | complex.c:73:8:73:9 | Unary | r73_2 | | complex.c:74:3:74:4 | Address | &:r74_3 | +| complex.c:74:3:74:4 | Address | &:r74_3 | +| complex.c:74:3:74:9 | Load | m74_4 | | complex.c:74:8:74:9 | Address | &:r74_1 | | complex.c:74:8:74:9 | Load | m73_5 | | complex.c:74:8:74:9 | StoreValue | r74_2 | | complex.c:75:3:75:4 | Address | &:r75_4 | +| complex.c:75:3:75:4 | Address | &:r75_4 | +| complex.c:75:3:75:10 | Load | m75_5 | | complex.c:75:8:75:10 | Address | &:r75_1 | | complex.c:75:8:75:10 | Load | m64_4 | | complex.c:75:8:75:10 | StoreValue | r75_3 | | complex.c:75:8:75:10 | Unary | r75_2 | | complex.c:76:3:76:5 | Address | &:r76_4 | +| complex.c:76:3:76:5 | Address | &:r76_4 | +| complex.c:76:3:76:10 | Load | m76_5 | | complex.c:76:9:76:10 | Address | &:r76_1 | | complex.c:76:9:76:10 | Load | m72_5 | | complex.c:76:9:76:10 | StoreValue | r76_3 | | complex.c:76:9:76:10 | Unary | r76_2 | | complex.c:77:3:77:5 | Address | &:r77_4 | +| complex.c:77:3:77:5 | Address | &:r77_4 | +| complex.c:77:3:77:10 | Load | m77_5 | | complex.c:77:9:77:10 | Address | &:r77_1 | | complex.c:77:9:77:10 | Load | m75_5 | | complex.c:77:9:77:10 | StoreValue | r77_3 | | complex.c:77:9:77:10 | Unary | r77_2 | | complex.c:78:3:78:5 | Address | &:r78_3 | +| complex.c:78:3:78:5 | Address | &:r78_3 | +| complex.c:78:3:78:11 | Load | m78_4 | | complex.c:78:9:78:11 | Address | &:r78_1 | | complex.c:78:9:78:11 | Load | m77_5 | | complex.c:78:9:78:11 | StoreValue | r78_2 | | complex.c:81:3:81:4 | Address | &:r81_4 | +| complex.c:81:3:81:4 | Address | &:r81_4 | +| complex.c:81:3:81:8 | Load | m81_5 | | complex.c:81:8:81:8 | Address | &:r81_1 | | complex.c:81:8:81:8 | Load | m59_3 | | complex.c:81:8:81:8 | StoreValue | r81_3 | | complex.c:81:8:81:8 | Unary | r81_2 | | complex.c:82:3:82:4 | Address | &:r82_4 | +| complex.c:82:3:82:4 | Address | &:r82_4 | +| complex.c:82:3:82:8 | Load | m82_5 | | complex.c:82:8:82:8 | Address | &:r82_1 | | complex.c:82:8:82:8 | Load | m60_3 | | complex.c:82:8:82:8 | StoreValue | r82_3 | | complex.c:82:8:82:8 | Unary | r82_2 | | complex.c:83:3:83:4 | Address | &:r83_4 | +| complex.c:83:3:83:4 | Address | &:r83_4 | +| complex.c:83:3:83:9 | Load | m83_5 | | complex.c:83:8:83:9 | Address | &:r83_1 | | complex.c:83:8:83:9 | Load | m61_3 | | complex.c:83:8:83:9 | StoreValue | r83_3 | | complex.c:83:8:83:9 | Unary | r83_2 | | complex.c:84:3:84:4 | Address | &:r84_4 | +| complex.c:84:3:84:4 | Address | &:r84_4 | +| complex.c:84:3:84:8 | Load | m84_5 | | complex.c:84:8:84:8 | Address | &:r84_1 | | complex.c:84:8:84:8 | Load | m59_3 | | complex.c:84:8:84:8 | StoreValue | r84_3 | | complex.c:84:8:84:8 | Unary | r84_2 | | complex.c:85:3:85:4 | Address | &:r85_4 | +| complex.c:85:3:85:4 | Address | &:r85_4 | +| complex.c:85:3:85:8 | Load | m85_5 | | complex.c:85:8:85:8 | Address | &:r85_1 | | complex.c:85:8:85:8 | Load | m60_3 | | complex.c:85:8:85:8 | StoreValue | r85_3 | | complex.c:85:8:85:8 | Unary | r85_2 | | complex.c:86:3:86:4 | Address | &:r86_4 | +| complex.c:86:3:86:4 | Address | &:r86_4 | +| complex.c:86:3:86:9 | Load | m86_5 | | complex.c:86:8:86:9 | Address | &:r86_1 | | complex.c:86:8:86:9 | Load | m61_3 | | complex.c:86:8:86:9 | StoreValue | r86_3 | | complex.c:86:8:86:9 | Unary | r86_2 | | complex.c:87:3:87:5 | Address | &:r87_4 | +| complex.c:87:3:87:5 | Address | &:r87_4 | +| complex.c:87:3:87:9 | Load | m87_5 | | complex.c:87:9:87:9 | Address | &:r87_1 | | complex.c:87:9:87:9 | Load | m59_3 | | complex.c:87:9:87:9 | StoreValue | r87_3 | | complex.c:87:9:87:9 | Unary | r87_2 | | complex.c:88:3:88:5 | Address | &:r88_4 | +| complex.c:88:3:88:5 | Address | &:r88_4 | +| complex.c:88:3:88:9 | Load | m88_5 | | complex.c:88:9:88:9 | Address | &:r88_1 | | complex.c:88:9:88:9 | Load | m60_3 | | complex.c:88:9:88:9 | StoreValue | r88_3 | | complex.c:88:9:88:9 | Unary | r88_2 | | complex.c:89:3:89:5 | Address | &:r89_4 | +| complex.c:89:3:89:5 | Address | &:r89_4 | +| complex.c:89:3:89:10 | Load | m89_5 | | complex.c:89:9:89:10 | Address | &:r89_1 | | complex.c:89:9:89:10 | Load | m61_3 | | complex.c:89:9:89:10 | StoreValue | r89_3 | | complex.c:89:9:89:10 | Unary | r89_2 | | complex.c:92:3:92:3 | Address | &:r92_4 | +| complex.c:92:3:92:3 | Address | &:r92_4 | +| complex.c:92:3:92:8 | Load | m92_5 | | complex.c:92:7:92:8 | Address | &:r92_1 | | complex.c:92:7:92:8 | Load | m83_5 | | complex.c:92:7:92:8 | StoreValue | r92_3 | | complex.c:92:7:92:8 | Unary | r92_2 | | complex.c:93:3:93:3 | Address | &:r93_4 | +| complex.c:93:3:93:3 | Address | &:r93_4 | +| complex.c:93:3:93:8 | Load | m93_5 | | complex.c:93:7:93:8 | Address | &:r93_1 | | complex.c:93:7:93:8 | Load | m86_5 | | complex.c:93:7:93:8 | StoreValue | r93_3 | | complex.c:93:7:93:8 | Unary | r93_2 | | complex.c:94:3:94:3 | Address | &:r94_4 | +| complex.c:94:3:94:3 | Address | &:r94_4 | +| complex.c:94:3:94:9 | Load | m94_5 | | complex.c:94:7:94:9 | Address | &:r94_1 | | complex.c:94:7:94:9 | Load | m89_5 | | complex.c:94:7:94:9 | StoreValue | r94_3 | | complex.c:94:7:94:9 | Unary | r94_2 | | complex.c:95:3:95:3 | Address | &:r95_4 | +| complex.c:95:3:95:3 | Address | &:r95_4 | +| complex.c:95:3:95:8 | Load | m95_5 | | complex.c:95:7:95:8 | Address | &:r95_1 | | complex.c:95:7:95:8 | Load | m83_5 | | complex.c:95:7:95:8 | StoreValue | r95_3 | | complex.c:95:7:95:8 | Unary | r95_2 | | complex.c:96:3:96:3 | Address | &:r96_4 | +| complex.c:96:3:96:3 | Address | &:r96_4 | +| complex.c:96:3:96:8 | Load | m96_5 | | complex.c:96:7:96:8 | Address | &:r96_1 | | complex.c:96:7:96:8 | Load | m86_5 | | complex.c:96:7:96:8 | StoreValue | r96_3 | | complex.c:96:7:96:8 | Unary | r96_2 | | complex.c:97:3:97:3 | Address | &:r97_4 | +| complex.c:97:3:97:3 | Address | &:r97_4 | +| complex.c:97:3:97:9 | Load | m97_5 | | complex.c:97:7:97:9 | Address | &:r97_1 | | complex.c:97:7:97:9 | Load | m89_5 | | complex.c:97:7:97:9 | StoreValue | r97_3 | | complex.c:97:7:97:9 | Unary | r97_2 | | complex.c:98:3:98:4 | Address | &:r98_4 | +| complex.c:98:3:98:4 | Address | &:r98_4 | +| complex.c:98:3:98:9 | Load | m98_5 | | complex.c:98:8:98:9 | Address | &:r98_1 | | complex.c:98:8:98:9 | Load | m83_5 | | complex.c:98:8:98:9 | StoreValue | r98_3 | | complex.c:98:8:98:9 | Unary | r98_2 | | complex.c:99:3:99:4 | Address | &:r99_4 | +| complex.c:99:3:99:4 | Address | &:r99_4 | +| complex.c:99:3:99:9 | Load | m99_5 | | complex.c:99:8:99:9 | Address | &:r99_1 | | complex.c:99:8:99:9 | Load | m86_5 | | complex.c:99:8:99:9 | StoreValue | r99_3 | | complex.c:99:8:99:9 | Unary | r99_2 | | complex.c:100:3:100:4 | Address | &:r100_4 | +| complex.c:100:3:100:4 | Address | &:r100_4 | +| complex.c:100:3:100:10 | Load | m100_5 | | complex.c:100:8:100:10 | Address | &:r100_1 | | complex.c:100:8:100:10 | Load | m89_5 | | complex.c:100:8:100:10 | StoreValue | r100_3 | | complex.c:100:8:100:10 | Unary | r100_2 | | complex.c:103:3:103:4 | Address | &:r103_4 | +| complex.c:103:3:103:4 | Address | &:r103_4 | +| complex.c:103:3:103:9 | Load | m103_5 | | complex.c:103:8:103:9 | Address | &:r103_1 | | complex.c:103:8:103:9 | Load | m65_3 | | complex.c:103:8:103:9 | StoreValue | r103_3 | | complex.c:103:8:103:9 | Unary | r103_2 | | complex.c:104:3:104:4 | Address | &:r104_4 | +| complex.c:104:3:104:4 | Address | &:r104_4 | +| complex.c:104:3:104:9 | Load | m104_5 | | complex.c:104:8:104:9 | Address | &:r104_1 | | complex.c:104:8:104:9 | Load | m66_4 | | complex.c:104:8:104:9 | StoreValue | r104_3 | | complex.c:104:8:104:9 | Unary | r104_2 | | complex.c:105:3:105:4 | Address | &:r105_4 | +| complex.c:105:3:105:4 | Address | &:r105_4 | +| complex.c:105:3:105:10 | Load | m105_5 | | complex.c:105:8:105:10 | Address | &:r105_1 | | complex.c:105:8:105:10 | Load | m67_4 | | complex.c:105:8:105:10 | StoreValue | r105_3 | | complex.c:105:8:105:10 | Unary | r105_2 | | complex.c:106:3:106:4 | Address | &:r106_4 | +| complex.c:106:3:106:4 | Address | &:r106_4 | +| complex.c:106:3:106:9 | Load | m106_5 | | complex.c:106:8:106:9 | Address | &:r106_1 | | complex.c:106:8:106:9 | Load | m65_3 | | complex.c:106:8:106:9 | StoreValue | r106_3 | | complex.c:106:8:106:9 | Unary | r106_2 | | complex.c:107:3:107:4 | Address | &:r107_4 | +| complex.c:107:3:107:4 | Address | &:r107_4 | +| complex.c:107:3:107:9 | Load | m107_5 | | complex.c:107:8:107:9 | Address | &:r107_1 | | complex.c:107:8:107:9 | Load | m66_4 | | complex.c:107:8:107:9 | StoreValue | r107_3 | | complex.c:107:8:107:9 | Unary | r107_2 | | complex.c:108:3:108:4 | Address | &:r108_4 | +| complex.c:108:3:108:4 | Address | &:r108_4 | +| complex.c:108:3:108:10 | Load | m108_5 | | complex.c:108:8:108:10 | Address | &:r108_1 | | complex.c:108:8:108:10 | Load | m67_4 | | complex.c:108:8:108:10 | StoreValue | r108_3 | | complex.c:108:8:108:10 | Unary | r108_2 | | complex.c:109:3:109:5 | Address | &:r109_4 | +| complex.c:109:3:109:5 | Address | &:r109_4 | +| complex.c:109:3:109:10 | Load | m109_5 | | complex.c:109:9:109:10 | Address | &:r109_1 | | complex.c:109:9:109:10 | Load | m65_3 | | complex.c:109:9:109:10 | StoreValue | r109_3 | | complex.c:109:9:109:10 | Unary | r109_2 | | complex.c:110:3:110:5 | Address | &:r110_4 | +| complex.c:110:3:110:5 | Address | &:r110_4 | +| complex.c:110:3:110:10 | Load | m110_5 | | complex.c:110:9:110:10 | Address | &:r110_1 | | complex.c:110:9:110:10 | Load | m66_4 | | complex.c:110:9:110:10 | StoreValue | r110_3 | | complex.c:110:9:110:10 | Unary | r110_2 | | complex.c:111:3:111:5 | Address | &:r111_4 | +| complex.c:111:3:111:5 | Address | &:r111_4 | +| complex.c:111:3:111:11 | Load | m111_5 | | complex.c:111:9:111:11 | Address | &:r111_1 | | complex.c:111:9:111:11 | Load | m67_4 | | complex.c:111:9:111:11 | StoreValue | r111_3 | | complex.c:111:9:111:11 | Unary | r111_2 | | complex.c:114:3:114:4 | Address | &:r114_4 | +| complex.c:114:3:114:4 | Address | &:r114_4 | +| complex.c:114:3:114:9 | Load | m114_5 | | complex.c:114:8:114:9 | Address | &:r114_1 | | complex.c:114:8:114:9 | Load | m105_5 | | complex.c:114:8:114:9 | StoreValue | r114_3 | | complex.c:114:8:114:9 | Unary | r114_2 | | complex.c:115:3:115:4 | Address | &:r115_4 | +| complex.c:115:3:115:4 | Address | &:r115_4 | +| complex.c:115:3:115:9 | Load | m115_5 | | complex.c:115:8:115:9 | Address | &:r115_1 | | complex.c:115:8:115:9 | Load | m108_5 | | complex.c:115:8:115:9 | StoreValue | r115_3 | | complex.c:115:8:115:9 | Unary | r115_2 | | complex.c:116:3:116:4 | Address | &:r116_4 | +| complex.c:116:3:116:4 | Address | &:r116_4 | +| complex.c:116:3:116:10 | Load | m116_5 | | complex.c:116:8:116:10 | Address | &:r116_1 | | complex.c:116:8:116:10 | Load | m111_5 | | complex.c:116:8:116:10 | StoreValue | r116_3 | | complex.c:116:8:116:10 | Unary | r116_2 | | complex.c:117:3:117:4 | Address | &:r117_4 | +| complex.c:117:3:117:4 | Address | &:r117_4 | +| complex.c:117:3:117:9 | Load | m117_5 | | complex.c:117:8:117:9 | Address | &:r117_1 | | complex.c:117:8:117:9 | Load | m105_5 | | complex.c:117:8:117:9 | StoreValue | r117_3 | | complex.c:117:8:117:9 | Unary | r117_2 | | complex.c:118:3:118:4 | Address | &:r118_4 | +| complex.c:118:3:118:4 | Address | &:r118_4 | +| complex.c:118:3:118:9 | Load | m118_5 | | complex.c:118:8:118:9 | Address | &:r118_1 | | complex.c:118:8:118:9 | Load | m108_5 | | complex.c:118:8:118:9 | StoreValue | r118_3 | | complex.c:118:8:118:9 | Unary | r118_2 | | complex.c:119:3:119:4 | Address | &:r119_4 | +| complex.c:119:3:119:4 | Address | &:r119_4 | +| complex.c:119:3:119:10 | Load | m119_5 | | complex.c:119:8:119:10 | Address | &:r119_1 | | complex.c:119:8:119:10 | Load | m111_5 | | complex.c:119:8:119:10 | StoreValue | r119_3 | | complex.c:119:8:119:10 | Unary | r119_2 | | complex.c:120:3:120:5 | Address | &:r120_4 | +| complex.c:120:3:120:5 | Address | &:r120_4 | +| complex.c:120:3:120:10 | Load | m120_5 | | complex.c:120:9:120:10 | Address | &:r120_1 | | complex.c:120:9:120:10 | Load | m105_5 | | complex.c:120:9:120:10 | StoreValue | r120_3 | | complex.c:120:9:120:10 | Unary | r120_2 | | complex.c:121:3:121:5 | Address | &:r121_4 | +| complex.c:121:3:121:5 | Address | &:r121_4 | +| complex.c:121:3:121:10 | Load | m121_5 | | complex.c:121:9:121:10 | Address | &:r121_1 | | complex.c:121:9:121:10 | Load | m108_5 | | complex.c:121:9:121:10 | StoreValue | r121_3 | | complex.c:121:9:121:10 | Unary | r121_2 | | complex.c:122:3:122:5 | Address | &:r122_4 | +| complex.c:122:3:122:5 | Address | &:r122_4 | +| complex.c:122:3:122:11 | Load | m122_5 | | complex.c:122:9:122:11 | Address | &:r122_1 | | complex.c:122:9:122:11 | Load | m111_5 | | complex.c:122:9:122:11 | StoreValue | r122_3 | | complex.c:122:9:122:11 | Unary | r122_2 | | complex.c:125:3:125:4 | Address | &:r125_4 | +| complex.c:125:3:125:4 | Address | &:r125_4 | +| complex.c:125:3:125:8 | Load | m125_5 | | complex.c:125:8:125:8 | Address | &:r125_1 | | complex.c:125:8:125:8 | Load | m94_5 | | complex.c:125:8:125:8 | StoreValue | r125_3 | | complex.c:125:8:125:8 | Unary | r125_2 | | complex.c:126:3:126:4 | Address | &:r126_4 | +| complex.c:126:3:126:4 | Address | &:r126_4 | +| complex.c:126:3:126:8 | Load | m126_5 | | complex.c:126:8:126:8 | Address | &:r126_1 | | complex.c:126:8:126:8 | Load | m97_5 | | complex.c:126:8:126:8 | StoreValue | r126_3 | | complex.c:126:8:126:8 | Unary | r126_2 | | complex.c:127:3:127:4 | Address | &:r127_4 | +| complex.c:127:3:127:4 | Address | &:r127_4 | +| complex.c:127:3:127:9 | Load | m127_5 | | complex.c:127:8:127:9 | Address | &:r127_1 | | complex.c:127:8:127:9 | Load | m100_5 | | complex.c:127:8:127:9 | StoreValue | r127_3 | | complex.c:127:8:127:9 | Unary | r127_2 | | complex.c:128:3:128:4 | Address | &:r128_4 | +| complex.c:128:3:128:4 | Address | &:r128_4 | +| complex.c:128:3:128:8 | Load | m128_5 | | complex.c:128:8:128:8 | Address | &:r128_1 | | complex.c:128:8:128:8 | Load | m94_5 | | complex.c:128:8:128:8 | StoreValue | r128_3 | | complex.c:128:8:128:8 | Unary | r128_2 | | complex.c:129:3:129:4 | Address | &:r129_4 | +| complex.c:129:3:129:4 | Address | &:r129_4 | +| complex.c:129:3:129:8 | Load | m129_5 | | complex.c:129:8:129:8 | Address | &:r129_1 | | complex.c:129:8:129:8 | Load | m97_5 | | complex.c:129:8:129:8 | StoreValue | r129_3 | | complex.c:129:8:129:8 | Unary | r129_2 | | complex.c:130:3:130:4 | Address | &:r130_4 | +| complex.c:130:3:130:4 | Address | &:r130_4 | +| complex.c:130:3:130:9 | Load | m130_5 | | complex.c:130:8:130:9 | Address | &:r130_1 | | complex.c:130:8:130:9 | Load | m100_5 | | complex.c:130:8:130:9 | StoreValue | r130_3 | | complex.c:130:8:130:9 | Unary | r130_2 | | complex.c:131:3:131:5 | Address | &:r131_4 | +| complex.c:131:3:131:5 | Address | &:r131_4 | +| complex.c:131:3:131:9 | Load | m131_5 | | complex.c:131:9:131:9 | Address | &:r131_1 | | complex.c:131:9:131:9 | Load | m94_5 | | complex.c:131:9:131:9 | StoreValue | r131_3 | | complex.c:131:9:131:9 | Unary | r131_2 | | complex.c:132:3:132:5 | Address | &:r132_4 | +| complex.c:132:3:132:5 | Address | &:r132_4 | +| complex.c:132:3:132:9 | Load | m132_5 | | complex.c:132:9:132:9 | Address | &:r132_1 | | complex.c:132:9:132:9 | Load | m97_5 | | complex.c:132:9:132:9 | StoreValue | r132_3 | | complex.c:132:9:132:9 | Unary | r132_2 | | complex.c:133:3:133:5 | Address | &:r133_4 | +| complex.c:133:3:133:5 | Address | &:r133_4 | +| complex.c:133:3:133:10 | Load | m133_5 | | complex.c:133:9:133:10 | Address | &:r133_1 | | complex.c:133:9:133:10 | Load | m100_5 | | complex.c:133:9:133:10 | StoreValue | r133_3 | | complex.c:133:9:133:10 | Unary | r133_2 | | complex.c:136:3:136:3 | Address | &:r136_4 | +| complex.c:136:3:136:3 | Address | &:r136_4 | +| complex.c:136:3:136:8 | Load | m136_5 | | complex.c:136:7:136:8 | Address | &:r136_1 | | complex.c:136:7:136:8 | Load | m127_5 | | complex.c:136:7:136:8 | StoreValue | r136_3 | | complex.c:136:7:136:8 | Unary | r136_2 | | complex.c:137:3:137:3 | Address | &:r137_4 | +| complex.c:137:3:137:3 | Address | &:r137_4 | +| complex.c:137:3:137:8 | Load | m137_5 | | complex.c:137:7:137:8 | Address | &:r137_1 | | complex.c:137:7:137:8 | Load | m130_5 | | complex.c:137:7:137:8 | StoreValue | r137_3 | | complex.c:137:7:137:8 | Unary | r137_2 | | complex.c:138:3:138:3 | Address | &:r138_4 | +| complex.c:138:3:138:3 | Address | &:r138_4 | +| complex.c:138:3:138:9 | Load | m138_5 | | complex.c:138:7:138:9 | Address | &:r138_1 | | complex.c:138:7:138:9 | Load | m133_5 | | complex.c:138:7:138:9 | StoreValue | r138_3 | | complex.c:138:7:138:9 | Unary | r138_2 | | complex.c:139:3:139:3 | Address | &:r139_4 | +| complex.c:139:3:139:3 | Address | &:r139_4 | +| complex.c:139:3:139:8 | Load | m139_5 | | complex.c:139:7:139:8 | Address | &:r139_1 | | complex.c:139:7:139:8 | Load | m127_5 | | complex.c:139:7:139:8 | StoreValue | r139_3 | | complex.c:139:7:139:8 | Unary | r139_2 | | complex.c:140:3:140:3 | Address | &:r140_4 | +| complex.c:140:3:140:3 | Address | &:r140_4 | +| complex.c:140:3:140:8 | Load | m140_5 | | complex.c:140:7:140:8 | Address | &:r140_1 | | complex.c:140:7:140:8 | Load | m130_5 | | complex.c:140:7:140:8 | StoreValue | r140_3 | | complex.c:140:7:140:8 | Unary | r140_2 | | complex.c:141:3:141:3 | Address | &:r141_4 | +| complex.c:141:3:141:3 | Address | &:r141_4 | +| complex.c:141:3:141:9 | Load | m141_5 | | complex.c:141:7:141:9 | Address | &:r141_1 | | complex.c:141:7:141:9 | Load | m133_5 | | complex.c:141:7:141:9 | StoreValue | r141_3 | | complex.c:141:7:141:9 | Unary | r141_2 | | complex.c:142:3:142:4 | Address | &:r142_4 | +| complex.c:142:3:142:4 | Address | &:r142_4 | +| complex.c:142:3:142:9 | Load | m142_5 | | complex.c:142:8:142:9 | Address | &:r142_1 | | complex.c:142:8:142:9 | Load | m127_5 | | complex.c:142:8:142:9 | StoreValue | r142_3 | | complex.c:142:8:142:9 | Unary | r142_2 | | complex.c:143:3:143:4 | Address | &:r143_4 | +| complex.c:143:3:143:4 | Address | &:r143_4 | +| complex.c:143:3:143:9 | Load | m143_5 | | complex.c:143:8:143:9 | Address | &:r143_1 | | complex.c:143:8:143:9 | Load | m130_5 | | complex.c:143:8:143:9 | StoreValue | r143_3 | | complex.c:143:8:143:9 | Unary | r143_2 | | complex.c:144:3:144:4 | Address | &:r144_4 | +| complex.c:144:3:144:4 | Address | &:r144_4 | +| complex.c:144:3:144:10 | Load | m144_5 | | complex.c:144:8:144:10 | Address | &:r144_1 | | complex.c:144:8:144:10 | Load | m133_5 | | complex.c:144:8:144:10 | StoreValue | r144_3 | @@ -684,6 +856,10 @@ | file://:0:0:0:0 | Address | &:r0_1 | | file://:0:0:0:0 | Address | &:r0_1 | | file://:0:0:0:0 | Address | &:r0_1 | +| file://:0:0:0:0 | Address | &:r0_1 | +| file://:0:0:0:0 | Address | &:r0_1 | +| file://:0:0:0:0 | Address | &:r0_1 | +| file://:0:0:0:0 | Address | &:r0_1 | | file://:0:0:0:0 | Address | &:r0_2 | | file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_3 | @@ -712,6 +888,10 @@ | file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_3 | +| file://:0:0:0:0 | Address | &:r0_3 | +| file://:0:0:0:0 | Address | &:r0_3 | +| file://:0:0:0:0 | Address | &:r0_3 | +| file://:0:0:0:0 | Address | &:r0_3 | | file://:0:0:0:0 | Address | &:r0_4 | | file://:0:0:0:0 | Address | &:r0_4 | | file://:0:0:0:0 | Address | &:r0_5 | @@ -811,6 +991,8 @@ | file://:0:0:0:0 | Load | m0_2 | | file://:0:0:0:0 | Load | m0_2 | | file://:0:0:0:0 | Load | m0_2 | +| file://:0:0:0:0 | Load | m0_2 | +| file://:0:0:0:0 | Load | m0_2 | | file://:0:0:0:0 | Load | m0_5 | | file://:0:0:0:0 | Load | m0_8 | | file://:0:0:0:0 | Load | m0_11 | @@ -822,7 +1004,7 @@ | file://:0:0:0:0 | Load | m1466_4 | | file://:0:0:0:0 | Load | m1466_4 | | file://:0:0:0:0 | Load | m1685_9 | -| file://:0:0:0:0 | Load | m1714_7 | +| file://:0:0:0:0 | Load | m1714_4 | | file://:0:0:0:0 | Load | m1834_6 | | file://:0:0:0:0 | Load | m1834_6 | | file://:0:0:0:0 | Load | m1839_6 | @@ -847,6 +1029,8 @@ | file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_4 | +| file://:0:0:0:0 | SideEffect | m0_4 | +| file://:0:0:0:0 | SideEffect | m0_4 | | file://:0:0:0:0 | SideEffect | m0_14 | | file://:0:0:0:0 | SideEffect | m1078_23 | | file://:0:0:0:0 | SideEffect | m1078_23 | @@ -950,21 +1134,26 @@ | ir.c:9:3:9:8 | Unary | r9_10 | | ir.c:9:3:9:31 | ChiPartial | partial:m9_12 | | ir.c:9:3:9:31 | ChiTotal | total:m9_8 | +| ir.c:9:3:9:31 | Load | m9_12 | +| ir.c:9:10:9:10 | Address | &:r9_11 | | ir.c:9:10:9:10 | Address | &:r9_11 | | ir.c:9:14:9:19 | Unary | r9_5 | | ir.c:9:14:9:31 | ChiPartial | partial:m9_7 | | ir.c:9:14:9:31 | ChiTotal | total:m8_10 | +| ir.c:9:14:9:31 | Load | m9_7 | | ir.c:9:14:9:31 | StoreValue | r9_9 | | ir.c:9:21:9:21 | Address | &:r9_6 | +| ir.c:9:21:9:21 | Address | &:r9_6 | | ir.c:9:25:9:27 | Address | &:r9_1 | | ir.c:9:25:9:27 | Left | r9_2 | | ir.c:9:25:9:27 | Load | m7_6 | | ir.c:9:25:9:31 | StoreValue | r9_4 | -| ir.c:9:25:9:31 | Unary | r9_4 | | ir.c:9:31:9:31 | Right | r9_3 | | ir.c:10:3:10:8 | Unary | r10_10 | | ir.c:10:3:10:26 | ChiPartial | partial:m10_12 | | ir.c:10:3:10:26 | ChiTotal | total:m10_9 | +| ir.c:10:3:10:26 | Load | m10_12 | +| ir.c:10:10:10:10 | Address | &:r10_11 | | ir.c:10:10:10:10 | Address | &:r10_11 | | ir.c:10:14:10:17 | CallTarget | func:r10_1 | | ir.c:10:14:10:17 | ChiPartial | partial:m10_5 | @@ -1329,18 +1518,22 @@ | ir.cpp:98:6:98:19 | SideEffect | m98_3 | | ir.cpp:98:25:98:25 | Address | &:r98_5 | | ir.cpp:99:9:99:9 | Address | &:r99_1 | -| ir.cpp:101:5:101:5 | Address | &:r101_6 | +| ir.cpp:101:5:101:5 | Address | &:r101_7 | +| ir.cpp:101:9:101:11 | Load | m101_5 | | ir.cpp:101:9:101:11 | Right | r101_3 | | ir.cpp:101:9:101:11 | StoreValue | r101_4 | -| ir.cpp:101:9:101:11 | StoreValue | r101_4 | +| ir.cpp:101:9:101:11 | StoreValue | r101_6 | +| ir.cpp:101:11:101:11 | Address | &:r101_1 | | ir.cpp:101:11:101:11 | Address | &:r101_1 | | ir.cpp:101:11:101:11 | Address | &:r101_1 | | ir.cpp:101:11:101:11 | Left | r101_2 | | ir.cpp:101:11:101:11 | Load | m98_6 | -| ir.cpp:102:5:102:5 | Address | &:r102_6 | +| ir.cpp:102:5:102:5 | Address | &:r102_7 | +| ir.cpp:102:9:102:11 | Load | m102_5 | | ir.cpp:102:9:102:11 | Right | r102_3 | | ir.cpp:102:9:102:11 | StoreValue | r102_4 | -| ir.cpp:102:9:102:11 | StoreValue | r102_4 | +| ir.cpp:102:9:102:11 | StoreValue | r102_6 | +| ir.cpp:102:11:102:11 | Address | &:r102_1 | | ir.cpp:102:11:102:11 | Address | &:r102_1 | | ir.cpp:102:11:102:11 | Address | &:r102_1 | | ir.cpp:102:11:102:11 | Left | r102_2 | @@ -1531,18 +1724,22 @@ | ir.cpp:144:6:144:17 | SideEffect | m144_3 | | ir.cpp:144:25:144:25 | Address | &:r144_5 | | ir.cpp:145:11:145:11 | Address | &:r145_1 | -| ir.cpp:147:5:147:5 | Address | &:r147_6 | +| ir.cpp:147:5:147:5 | Address | &:r147_7 | +| ir.cpp:147:9:147:11 | Load | m147_5 | | ir.cpp:147:9:147:11 | Right | r147_3 | | ir.cpp:147:9:147:11 | StoreValue | r147_4 | -| ir.cpp:147:9:147:11 | StoreValue | r147_4 | +| ir.cpp:147:9:147:11 | StoreValue | r147_6 | +| ir.cpp:147:11:147:11 | Address | &:r147_1 | | ir.cpp:147:11:147:11 | Address | &:r147_1 | | ir.cpp:147:11:147:11 | Address | &:r147_1 | | ir.cpp:147:11:147:11 | Left | r147_2 | | ir.cpp:147:11:147:11 | Load | m144_6 | -| ir.cpp:148:5:148:5 | Address | &:r148_6 | +| ir.cpp:148:5:148:5 | Address | &:r148_7 | +| ir.cpp:148:9:148:11 | Load | m148_5 | | ir.cpp:148:9:148:11 | Right | r148_3 | | ir.cpp:148:9:148:11 | StoreValue | r148_4 | -| ir.cpp:148:9:148:11 | StoreValue | r148_4 | +| ir.cpp:148:9:148:11 | StoreValue | r148_6 | +| ir.cpp:148:11:148:11 | Address | &:r148_1 | | ir.cpp:148:11:148:11 | Address | &:r148_1 | | ir.cpp:148:11:148:11 | Address | &:r148_1 | | ir.cpp:148:11:148:11 | Left | r148_2 | @@ -1840,18 +2037,22 @@ | ir.cpp:204:26:204:26 | Load | m204_6 | | ir.cpp:204:26:204:26 | SideEffect | m204_8 | | ir.cpp:205:10:205:10 | Address | &:r205_1 | -| ir.cpp:207:5:207:5 | Address | &:r207_6 | +| ir.cpp:207:5:207:5 | Address | &:r207_7 | +| ir.cpp:207:9:207:11 | Load | m207_5 | | ir.cpp:207:9:207:11 | Right | r207_3 | | ir.cpp:207:9:207:11 | StoreValue | r207_4 | -| ir.cpp:207:9:207:11 | StoreValue | r207_4 | +| ir.cpp:207:9:207:11 | StoreValue | r207_6 | +| ir.cpp:207:11:207:11 | Address | &:r207_1 | | ir.cpp:207:11:207:11 | Address | &:r207_1 | | ir.cpp:207:11:207:11 | Address | &:r207_1 | | ir.cpp:207:11:207:11 | Left | r207_2 | | ir.cpp:207:11:207:11 | Load | m204_6 | -| ir.cpp:208:5:208:5 | Address | &:r208_6 | +| ir.cpp:208:5:208:5 | Address | &:r208_7 | +| ir.cpp:208:9:208:11 | Load | m208_5 | | ir.cpp:208:9:208:11 | Right | r208_3 | | ir.cpp:208:9:208:11 | StoreValue | r208_4 | -| ir.cpp:208:9:208:11 | StoreValue | r208_4 | +| ir.cpp:208:9:208:11 | StoreValue | r208_6 | +| ir.cpp:208:11:208:11 | Address | &:r208_1 | | ir.cpp:208:11:208:11 | Address | &:r208_1 | | ir.cpp:208:11:208:11 | Address | &:r208_1 | | ir.cpp:208:11:208:11 | Left | r208_2 | @@ -4897,6 +5098,15 @@ | ir.cpp:1035:15:1035:15 | Address | &:r1035_1 | | ir.cpp:1038:6:1038:8 | Address | &:r1038_3 | | ir.cpp:1038:6:1038:8 | SideEffect | ~m1038_8 | +| ir.cpp:1038:12:1038:12 | Address | &:r1038_5 | +| ir.cpp:1038:12:1038:12 | Address | &:r1038_5 | +| ir.cpp:1038:12:1038:12 | Address | &:r1038_7 | +| ir.cpp:1038:12:1038:12 | Address | &:r1038_7 | +| ir.cpp:1038:12:1038:12 | ChiPartial | partial:m1038_3 | +| ir.cpp:1038:12:1038:12 | ChiTotal | total:m1038_2 | +| ir.cpp:1038:12:1038:12 | Load | m1038_6 | +| ir.cpp:1038:12:1038:12 | SideEffect | m1038_3 | +| ir.cpp:1038:12:1038:12 | SideEffect | m1038_8 | | ir.cpp:1038:12:1038:18 | Address | &:r1038_4 | | ir.cpp:1038:12:1038:18 | Address | &:r1038_4 | | ir.cpp:1038:12:1038:18 | ChiPartial | partial:m1038_7 | @@ -4936,6 +5146,15 @@ | ir.cpp:1040:34:1040:34 | Load | m1040_8 | | ir.cpp:1040:34:1040:34 | SideEffect | m1040_10 | | ir.cpp:1041:8:1041:19 | Address | &:r1041_1 | +| ir.cpp:1041:23:1041:23 | Address | &:r1041_5 | +| ir.cpp:1041:23:1041:23 | Address | &:r1041_5 | +| ir.cpp:1041:23:1041:23 | Address | &:r1041_7 | +| ir.cpp:1041:23:1041:23 | Address | &:r1041_7 | +| ir.cpp:1041:23:1041:23 | ChiPartial | partial:m1041_3 | +| ir.cpp:1041:23:1041:23 | ChiTotal | total:m1041_2 | +| ir.cpp:1041:23:1041:23 | Load | m1041_6 | +| ir.cpp:1041:23:1041:23 | SideEffect | m1041_3 | +| ir.cpp:1041:23:1041:23 | SideEffect | m1041_8 | | ir.cpp:1041:23:1041:49 | Address | &:r1041_2 | | ir.cpp:1041:23:1041:49 | Address | &:r1041_2 | | ir.cpp:1041:23:1041:49 | Load | m1041_3 | @@ -8118,14 +8337,10 @@ | ir.cpp:1713:30:1713:31 | Address | &:r1713_1 | | ir.cpp:1714:31:1714:32 | Address | &:r1714_1 | | ir.cpp:1714:36:1714:55 | Address | &:r1714_2 | -| ir.cpp:1714:36:1714:55 | Address | &:r1714_3 | -| ir.cpp:1714:36:1714:55 | Address | &:r1714_3 | -| ir.cpp:1714:36:1714:55 | Load | m1714_5 | -| ir.cpp:1714:36:1714:55 | StoreValue | r1714_4 | +| ir.cpp:1714:36:1714:55 | StoreValue | r1714_3 | | ir.cpp:1714:36:1714:55 | StoreValue | r1714_6 | -| ir.cpp:1714:36:1714:55 | StoreValue | r1714_9 | | ir.cpp:1714:36:1714:55 | Unary | r1714_2 | -| ir.cpp:1714:36:1714:55 | Unary | r1714_8 | +| ir.cpp:1714:36:1714:55 | Unary | r1714_5 | | ir.cpp:1716:10:1716:17 | Address | &:r1716_1 | | ir.cpp:1716:20:1718:5 | Address | &:r1716_2 | | ir.cpp:1716:20:1718:5 | Address | &:r1716_2 | @@ -8151,7 +8366,7 @@ | ir.cpp:1716:20:1718:5 | Load | m1712_8 | | ir.cpp:1716:20:1718:5 | Load | m1712_12 | | ir.cpp:1716:20:1718:5 | Load | m1713_2 | -| ir.cpp:1716:20:1718:5 | Load | m1714_10 | +| ir.cpp:1716:20:1718:5 | Load | m1714_7 | | ir.cpp:1716:20:1718:5 | StoreValue | r1716_6 | | ir.cpp:1716:20:1718:5 | StoreValue | r1716_17 | | ir.cpp:1716:20:1718:5 | StoreValue | r1716_23 | @@ -8976,22 +9191,25 @@ | ir.cpp:1929:10:1929:10 | Address | &:r1929_3 | | ir.cpp:1930:3:1930:3 | Address | &:r1930_5 | | ir.cpp:1930:7:1930:7 | Address | &:r1930_2 | +| ir.cpp:1930:7:1930:7 | Address | &:r1930_2 | +| ir.cpp:1930:7:1930:12 | Load | m1930_3 | | ir.cpp:1930:7:1930:12 | StoreValue | r1930_4 | | ir.cpp:1930:11:1930:12 | StoreValue | r1930_1 | -| ir.cpp:1930:11:1930:12 | Unary | r1930_1 | | ir.cpp:1933:6:1933:38 | ChiPartial | partial:m1933_3 | | ir.cpp:1933:6:1933:38 | ChiTotal | total:m1933_2 | | ir.cpp:1933:6:1933:38 | SideEffect | m1933_3 | | ir.cpp:1934:7:1934:7 | Address | &:r1934_1 | | ir.cpp:1934:10:1934:10 | Address | &:r1934_3 | | ir.cpp:1934:13:1934:14 | StoreValue | r1934_4 | -| ir.cpp:1935:3:1935:3 | Address | &:r1935_6 | +| ir.cpp:1935:3:1935:3 | Address | &:r1935_7 | +| ir.cpp:1935:8:1935:8 | Address | &:r1935_2 | | ir.cpp:1935:8:1935:8 | Address | &:r1935_2 | | ir.cpp:1935:8:1935:8 | Address | &:r1935_2 | | ir.cpp:1935:8:1935:8 | Left | r1935_3 | | ir.cpp:1935:8:1935:8 | Load | m1934_5 | +| ir.cpp:1935:8:1935:14 | Load | m1935_5 | | ir.cpp:1935:8:1935:14 | StoreValue | r1935_4 | -| ir.cpp:1935:8:1935:14 | StoreValue | r1935_4 | +| ir.cpp:1935:8:1935:14 | StoreValue | r1935_6 | | ir.cpp:1935:13:1935:14 | Right | r1935_1 | | ir.cpp:1942:15:1942:43 | Address | &:r1942_5 | | ir.cpp:1942:15:1942:43 | ChiPartial | partial:m1942_3 | @@ -10015,6 +10233,8 @@ | try_except.c:9:5:9:17 | SideEffect | ~m6_4 | | try_except.c:9:19:9:19 | Arg(0) | 0:r9_2 | | try_except.c:10:5:10:5 | Address | &:r10_3 | +| try_except.c:10:5:10:5 | Address | &:r10_3 | +| try_except.c:10:5:10:9 | Load | m10_4 | | try_except.c:10:9:10:9 | Address | &:r10_1 | | try_except.c:10:9:10:9 | Load | m7_5 | | try_except.c:10:9:10:9 | StoreValue | r10_2 | @@ -10035,6 +10255,8 @@ | try_except.c:21:5:21:17 | SideEffect | ~m18_4 | | try_except.c:21:19:21:19 | Arg(0) | 0:r21_2 | | try_except.c:22:5:22:5 | Address | &:r22_3 | +| try_except.c:22:5:22:5 | Address | &:r22_3 | +| try_except.c:22:5:22:9 | Load | m22_4 | | try_except.c:22:9:22:9 | Address | &:r22_1 | | try_except.c:22:9:22:9 | Load | m19_5 | | try_except.c:22:9:22:9 | StoreValue | r22_2 | 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 019199d980d0..082f4f2ee756 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -170,6 +170,7 @@ complex.c: # 3| r3_2(_Complex float) = Convert : r3_1 # 3| r3_3(glval<_Complex float>) = VariableAddress[cf] : # 3| mu3_4(_Complex float) = Store[cf] : &:r3_3, r3_2 +# 3| r3_5(_Complex float) = Load[cf] : &:r3_3, ~m? # 4| r4_1(glval<_Complex double>) = VariableAddress[cd] : # 4| r4_2(double) = Constant[3.0] : # 4| r4_3(_Complex double) = Convert : r4_2 @@ -178,6 +179,7 @@ complex.c: # 5| r5_2(_Complex double) = Convert : r5_1 # 5| r5_3(glval<_Complex double>) = VariableAddress[cd] : # 5| mu5_4(_Complex double) = Store[cd] : &:r5_3, r5_2 +# 5| r5_5(_Complex double) = Load[cd] : &:r5_3, ~m? # 6| r6_1(glval<_Complex long double>) = VariableAddress[cld] : # 6| r6_2(double) = Constant[5.0] : # 6| r6_3(_Complex long double) = Convert : r6_2 @@ -186,6 +188,7 @@ complex.c: # 7| r7_2(_Complex long double) = Convert : r7_1 # 7| r7_3(glval<_Complex long double>) = VariableAddress[cld] : # 7| mu7_4(_Complex long double) = Store[cld] : &:r7_3, r7_2 +# 7| r7_5(_Complex long double) = Load[cld] : &:r7_3, ~m? # 9| r9_1(glval<_Imaginary float>) = VariableAddress[jf] : # 9| r9_2(_Imaginary float) = Constant[1.0i] : # 9| mu9_3(_Imaginary float) = Store[jf] : &:r9_1, r9_2 @@ -238,11 +241,13 @@ complex.c: # 26| r26_3(_Complex float) = CopyValue : r26_2 # 26| r26_4(glval<_Complex float>) = VariableAddress[cf3] : # 26| mu26_5(_Complex float) = Store[cf3] : &:r26_4, r26_3 +# 26| r26_6(_Complex float) = Load[cf3] : &:r26_4, ~m? # 27| r27_1(glval<_Complex float>) = VariableAddress[cf1] : # 27| r27_2(_Complex float) = Load[cf1] : &:r27_1, ~m? # 27| r27_3(_Complex float) = Negate : r27_2 # 27| r27_4(glval<_Complex float>) = VariableAddress[cf3] : # 27| mu27_5(_Complex float) = Store[cf3] : &:r27_4, r27_3 +# 27| r27_6(_Complex float) = Load[cf3] : &:r27_4, ~m? # 30| r30_1(glval<_Complex float>) = VariableAddress[cf1] : # 30| r30_2(_Complex float) = Load[cf1] : &:r30_1, ~m? # 30| r30_3(glval<_Complex float>) = VariableAddress[cf2] : @@ -250,6 +255,7 @@ complex.c: # 30| r30_5(_Complex float) = Add : r30_2, r30_4 # 30| r30_6(glval<_Complex float>) = VariableAddress[cf3] : # 30| mu30_7(_Complex float) = Store[cf3] : &:r30_6, r30_5 +# 30| r30_8(_Complex float) = Load[cf3] : &:r30_6, ~m? # 31| r31_1(glval<_Complex float>) = VariableAddress[cf1] : # 31| r31_2(_Complex float) = Load[cf1] : &:r31_1, ~m? # 31| r31_3(glval<_Complex float>) = VariableAddress[cf2] : @@ -257,6 +263,7 @@ complex.c: # 31| r31_5(_Complex float) = Sub : r31_2, r31_4 # 31| r31_6(glval<_Complex float>) = VariableAddress[cf3] : # 31| mu31_7(_Complex float) = Store[cf3] : &:r31_6, r31_5 +# 31| r31_8(_Complex float) = Load[cf3] : &:r31_6, ~m? # 32| r32_1(glval<_Complex float>) = VariableAddress[cf1] : # 32| r32_2(_Complex float) = Load[cf1] : &:r32_1, ~m? # 32| r32_3(glval<_Complex float>) = VariableAddress[cf2] : @@ -264,6 +271,7 @@ complex.c: # 32| r32_5(_Complex float) = Mul : r32_2, r32_4 # 32| r32_6(glval<_Complex float>) = VariableAddress[cf3] : # 32| mu32_7(_Complex float) = Store[cf3] : &:r32_6, r32_5 +# 32| r32_8(_Complex float) = Load[cf3] : &:r32_6, ~m? # 33| r33_1(glval<_Complex float>) = VariableAddress[cf1] : # 33| r33_2(_Complex float) = Load[cf1] : &:r33_1, ~m? # 33| r33_3(glval<_Complex float>) = VariableAddress[cf2] : @@ -271,16 +279,19 @@ complex.c: # 33| r33_5(_Complex float) = Div : r33_2, r33_4 # 33| r33_6(glval<_Complex float>) = VariableAddress[cf3] : # 33| mu33_7(_Complex float) = Store[cf3] : &:r33_6, r33_5 +# 33| r33_8(_Complex float) = Load[cf3] : &:r33_6, ~m? # 36| r36_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 36| r36_2(_Imaginary float) = Load[jf1] : &:r36_1, ~m? # 36| r36_3(_Imaginary float) = CopyValue : r36_2 # 36| r36_4(glval<_Imaginary float>) = VariableAddress[jf3] : # 36| mu36_5(_Imaginary float) = Store[jf3] : &:r36_4, r36_3 +# 36| r36_6(_Imaginary float) = Load[jf3] : &:r36_4, ~m? # 37| r37_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 37| r37_2(_Imaginary float) = Load[jf1] : &:r37_1, ~m? # 37| r37_3(_Imaginary float) = Negate : r37_2 # 37| r37_4(glval<_Imaginary float>) = VariableAddress[jf3] : # 37| mu37_5(_Imaginary float) = Store[jf3] : &:r37_4, r37_3 +# 37| r37_6(_Imaginary float) = Load[jf3] : &:r37_4, ~m? # 40| r40_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 40| r40_2(_Imaginary float) = Load[jf1] : &:r40_1, ~m? # 40| r40_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -288,6 +299,7 @@ complex.c: # 40| r40_5(_Imaginary float) = Add : r40_2, r40_4 # 40| r40_6(glval<_Imaginary float>) = VariableAddress[jf3] : # 40| mu40_7(_Imaginary float) = Store[jf3] : &:r40_6, r40_5 +# 40| r40_8(_Imaginary float) = Load[jf3] : &:r40_6, ~m? # 41| r41_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 41| r41_2(_Imaginary float) = Load[jf1] : &:r41_1, ~m? # 41| r41_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -295,6 +307,7 @@ complex.c: # 41| r41_5(_Imaginary float) = Sub : r41_2, r41_4 # 41| r41_6(glval<_Imaginary float>) = VariableAddress[jf3] : # 41| mu41_7(_Imaginary float) = Store[jf3] : &:r41_6, r41_5 +# 41| r41_8(_Imaginary float) = Load[jf3] : &:r41_6, ~m? # 42| r42_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 42| r42_2(_Imaginary float) = Load[jf1] : &:r42_1, ~m? # 42| r42_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -302,6 +315,7 @@ complex.c: # 42| r42_5(float) = Mul : r42_2, r42_4 # 42| r42_6(glval) = VariableAddress[f3] : # 42| mu42_7(float) = Store[f3] : &:r42_6, r42_5 +# 42| r42_8(float) = Load[f3] : &:r42_6, ~m? # 43| r43_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 43| r43_2(_Imaginary float) = Load[jf1] : &:r43_1, ~m? # 43| r43_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -309,6 +323,7 @@ complex.c: # 43| r43_5(float) = Div : r43_2, r43_4 # 43| r43_6(glval) = VariableAddress[f3] : # 43| mu43_7(float) = Store[f3] : &:r43_6, r43_5 +# 43| r43_8(float) = Load[f3] : &:r43_6, ~m? # 46| r46_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 46| r46_2(_Imaginary float) = Load[jf1] : &:r46_1, ~m? # 46| r46_3(glval) = VariableAddress[f2] : @@ -316,6 +331,7 @@ complex.c: # 46| r46_5(_Complex float) = Add : r46_2, r46_4 # 46| r46_6(glval<_Complex float>) = VariableAddress[cf3] : # 46| mu46_7(_Complex float) = Store[cf3] : &:r46_6, r46_5 +# 46| r46_8(_Complex float) = Load[cf3] : &:r46_6, ~m? # 47| r47_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 47| r47_2(_Imaginary float) = Load[jf1] : &:r47_1, ~m? # 47| r47_3(glval) = VariableAddress[f2] : @@ -323,6 +339,7 @@ complex.c: # 47| r47_5(_Complex float) = Sub : r47_2, r47_4 # 47| r47_6(glval<_Complex float>) = VariableAddress[cf3] : # 47| mu47_7(_Complex float) = Store[cf3] : &:r47_6, r47_5 +# 47| r47_8(_Complex float) = Load[cf3] : &:r47_6, ~m? # 48| r48_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 48| r48_2(_Imaginary float) = Load[jf1] : &:r48_1, ~m? # 48| r48_3(glval) = VariableAddress[f2] : @@ -330,6 +347,7 @@ complex.c: # 48| r48_5(_Imaginary float) = Mul : r48_2, r48_4 # 48| r48_6(glval<_Imaginary float>) = VariableAddress[jf3] : # 48| mu48_7(_Imaginary float) = Store[jf3] : &:r48_6, r48_5 +# 48| r48_8(_Imaginary float) = Load[jf3] : &:r48_6, ~m? # 49| r49_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 49| r49_2(_Imaginary float) = Load[jf1] : &:r49_1, ~m? # 49| r49_3(glval) = VariableAddress[f2] : @@ -337,6 +355,7 @@ complex.c: # 49| r49_5(_Imaginary float) = Div : r49_2, r49_4 # 49| r49_6(glval<_Imaginary float>) = VariableAddress[jf3] : # 49| mu49_7(_Imaginary float) = Store[jf3] : &:r49_6, r49_5 +# 49| r49_8(_Imaginary float) = Load[jf3] : &:r49_6, ~m? # 52| r52_1(glval) = VariableAddress[f1] : # 52| r52_2(float) = Load[f1] : &:r52_1, ~m? # 52| r52_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -344,6 +363,7 @@ complex.c: # 52| r52_5(_Complex float) = Add : r52_2, r52_4 # 52| r52_6(glval<_Complex float>) = VariableAddress[cf3] : # 52| mu52_7(_Complex float) = Store[cf3] : &:r52_6, r52_5 +# 52| r52_8(_Complex float) = Load[cf3] : &:r52_6, ~m? # 53| r53_1(glval) = VariableAddress[f1] : # 53| r53_2(float) = Load[f1] : &:r53_1, ~m? # 53| r53_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -351,6 +371,7 @@ complex.c: # 53| r53_5(_Complex float) = Sub : r53_2, r53_4 # 53| r53_6(glval<_Complex float>) = VariableAddress[cf3] : # 53| mu53_7(_Complex float) = Store[cf3] : &:r53_6, r53_5 +# 53| r53_8(_Complex float) = Load[cf3] : &:r53_6, ~m? # 54| r54_1(glval) = VariableAddress[f1] : # 54| r54_2(float) = Load[f1] : &:r54_1, ~m? # 54| r54_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -358,6 +379,7 @@ complex.c: # 54| r54_5(_Imaginary float) = Mul : r54_2, r54_4 # 54| r54_6(glval<_Imaginary float>) = VariableAddress[jf3] : # 54| mu54_7(_Imaginary float) = Store[jf3] : &:r54_6, r54_5 +# 54| r54_8(_Imaginary float) = Load[jf3] : &:r54_6, ~m? # 55| r55_1(glval) = VariableAddress[f1] : # 55| r55_2(float) = Load[f1] : &:r55_1, ~m? # 55| r55_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -365,6 +387,7 @@ complex.c: # 55| r55_5(_Imaginary float) = Div : r55_2, r55_4 # 55| r55_6(glval<_Imaginary float>) = VariableAddress[jf3] : # 55| mu55_7(_Imaginary float) = Store[jf3] : &:r55_6, r55_5 +# 55| r55_8(_Imaginary float) = Load[jf3] : &:r55_6, ~m? # 56| v56_1(void) = NoOp : # 14| v14_4(void) = ReturnVoid : # 14| v14_5(void) = AliasedUse : ~m? @@ -411,314 +434,377 @@ complex.c: # 70| r70_2(_Complex float) = Load[cf] : &:r70_1, ~m? # 70| r70_3(glval<_Complex float>) = VariableAddress[cf] : # 70| mu70_4(_Complex float) = Store[cf] : &:r70_3, r70_2 +# 70| r70_5(_Complex float) = Load[cf] : &:r70_3, ~m? # 71| r71_1(glval<_Complex double>) = VariableAddress[cd] : # 71| r71_2(_Complex double) = Load[cd] : &:r71_1, ~m? # 71| r71_3(_Complex float) = Convert : r71_2 # 71| r71_4(glval<_Complex float>) = VariableAddress[cf] : # 71| mu71_5(_Complex float) = Store[cf] : &:r71_4, r71_3 +# 71| r71_6(_Complex float) = Load[cf] : &:r71_4, ~m? # 72| r72_1(glval<_Complex long double>) = VariableAddress[cld] : # 72| r72_2(_Complex long double) = Load[cld] : &:r72_1, ~m? # 72| r72_3(_Complex float) = Convert : r72_2 # 72| r72_4(glval<_Complex float>) = VariableAddress[cf] : # 72| mu72_5(_Complex float) = Store[cf] : &:r72_4, r72_3 +# 72| r72_6(_Complex float) = Load[cf] : &:r72_4, ~m? # 73| r73_1(glval<_Complex float>) = VariableAddress[cf] : # 73| r73_2(_Complex float) = Load[cf] : &:r73_1, ~m? # 73| r73_3(_Complex double) = Convert : r73_2 # 73| r73_4(glval<_Complex double>) = VariableAddress[cd] : # 73| mu73_5(_Complex double) = Store[cd] : &:r73_4, r73_3 +# 73| r73_6(_Complex double) = Load[cd] : &:r73_4, ~m? # 74| r74_1(glval<_Complex double>) = VariableAddress[cd] : # 74| r74_2(_Complex double) = Load[cd] : &:r74_1, ~m? # 74| r74_3(glval<_Complex double>) = VariableAddress[cd] : # 74| mu74_4(_Complex double) = Store[cd] : &:r74_3, r74_2 +# 74| r74_5(_Complex double) = Load[cd] : &:r74_3, ~m? # 75| r75_1(glval<_Complex long double>) = VariableAddress[cld] : # 75| r75_2(_Complex long double) = Load[cld] : &:r75_1, ~m? # 75| r75_3(_Complex double) = Convert : r75_2 # 75| r75_4(glval<_Complex double>) = VariableAddress[cd] : # 75| mu75_5(_Complex double) = Store[cd] : &:r75_4, r75_3 +# 75| r75_6(_Complex double) = Load[cd] : &:r75_4, ~m? # 76| r76_1(glval<_Complex float>) = VariableAddress[cf] : # 76| r76_2(_Complex float) = Load[cf] : &:r76_1, ~m? # 76| r76_3(_Complex long double) = Convert : r76_2 # 76| r76_4(glval<_Complex long double>) = VariableAddress[cld] : # 76| mu76_5(_Complex long double) = Store[cld] : &:r76_4, r76_3 +# 76| r76_6(_Complex long double) = Load[cld] : &:r76_4, ~m? # 77| r77_1(glval<_Complex double>) = VariableAddress[cd] : # 77| r77_2(_Complex double) = Load[cd] : &:r77_1, ~m? # 77| r77_3(_Complex long double) = Convert : r77_2 # 77| r77_4(glval<_Complex long double>) = VariableAddress[cld] : # 77| mu77_5(_Complex long double) = Store[cld] : &:r77_4, r77_3 +# 77| r77_6(_Complex long double) = Load[cld] : &:r77_4, ~m? # 78| r78_1(glval<_Complex long double>) = VariableAddress[cld] : # 78| r78_2(_Complex long double) = Load[cld] : &:r78_1, ~m? # 78| r78_3(glval<_Complex long double>) = VariableAddress[cld] : # 78| mu78_4(_Complex long double) = Store[cld] : &:r78_3, r78_2 +# 78| r78_5(_Complex long double) = Load[cld] : &:r78_3, ~m? # 81| r81_1(glval) = VariableAddress[f] : # 81| r81_2(float) = Load[f] : &:r81_1, ~m? # 81| r81_3(_Complex float) = Convert : r81_2 # 81| r81_4(glval<_Complex float>) = VariableAddress[cf] : # 81| mu81_5(_Complex float) = Store[cf] : &:r81_4, r81_3 +# 81| r81_6(_Complex float) = Load[cf] : &:r81_4, ~m? # 82| r82_1(glval) = VariableAddress[d] : # 82| r82_2(double) = Load[d] : &:r82_1, ~m? # 82| r82_3(_Complex float) = Convert : r82_2 # 82| r82_4(glval<_Complex float>) = VariableAddress[cf] : # 82| mu82_5(_Complex float) = Store[cf] : &:r82_4, r82_3 +# 82| r82_6(_Complex float) = Load[cf] : &:r82_4, ~m? # 83| r83_1(glval) = VariableAddress[ld] : # 83| r83_2(long double) = Load[ld] : &:r83_1, ~m? # 83| r83_3(_Complex float) = Convert : r83_2 # 83| r83_4(glval<_Complex float>) = VariableAddress[cf] : # 83| mu83_5(_Complex float) = Store[cf] : &:r83_4, r83_3 +# 83| r83_6(_Complex float) = Load[cf] : &:r83_4, ~m? # 84| r84_1(glval) = VariableAddress[f] : # 84| r84_2(float) = Load[f] : &:r84_1, ~m? # 84| r84_3(_Complex double) = Convert : r84_2 # 84| r84_4(glval<_Complex double>) = VariableAddress[cd] : # 84| mu84_5(_Complex double) = Store[cd] : &:r84_4, r84_3 +# 84| r84_6(_Complex double) = Load[cd] : &:r84_4, ~m? # 85| r85_1(glval) = VariableAddress[d] : # 85| r85_2(double) = Load[d] : &:r85_1, ~m? # 85| r85_3(_Complex double) = Convert : r85_2 # 85| r85_4(glval<_Complex double>) = VariableAddress[cd] : # 85| mu85_5(_Complex double) = Store[cd] : &:r85_4, r85_3 +# 85| r85_6(_Complex double) = Load[cd] : &:r85_4, ~m? # 86| r86_1(glval) = VariableAddress[ld] : # 86| r86_2(long double) = Load[ld] : &:r86_1, ~m? # 86| r86_3(_Complex double) = Convert : r86_2 # 86| r86_4(glval<_Complex double>) = VariableAddress[cd] : # 86| mu86_5(_Complex double) = Store[cd] : &:r86_4, r86_3 +# 86| r86_6(_Complex double) = Load[cd] : &:r86_4, ~m? # 87| r87_1(glval) = VariableAddress[f] : # 87| r87_2(float) = Load[f] : &:r87_1, ~m? # 87| r87_3(_Complex long double) = Convert : r87_2 # 87| r87_4(glval<_Complex long double>) = VariableAddress[cld] : # 87| mu87_5(_Complex long double) = Store[cld] : &:r87_4, r87_3 +# 87| r87_6(_Complex long double) = Load[cld] : &:r87_4, ~m? # 88| r88_1(glval) = VariableAddress[d] : # 88| r88_2(double) = Load[d] : &:r88_1, ~m? # 88| r88_3(_Complex long double) = Convert : r88_2 # 88| r88_4(glval<_Complex long double>) = VariableAddress[cld] : # 88| mu88_5(_Complex long double) = Store[cld] : &:r88_4, r88_3 +# 88| r88_6(_Complex long double) = Load[cld] : &:r88_4, ~m? # 89| r89_1(glval) = VariableAddress[ld] : # 89| r89_2(long double) = Load[ld] : &:r89_1, ~m? # 89| r89_3(_Complex long double) = Convert : r89_2 # 89| r89_4(glval<_Complex long double>) = VariableAddress[cld] : # 89| mu89_5(_Complex long double) = Store[cld] : &:r89_4, r89_3 +# 89| r89_6(_Complex long double) = Load[cld] : &:r89_4, ~m? # 92| r92_1(glval<_Complex float>) = VariableAddress[cf] : # 92| r92_2(_Complex float) = Load[cf] : &:r92_1, ~m? # 92| r92_3(float) = Convert : r92_2 # 92| r92_4(glval) = VariableAddress[f] : # 92| mu92_5(float) = Store[f] : &:r92_4, r92_3 +# 92| r92_6(float) = Load[f] : &:r92_4, ~m? # 93| r93_1(glval<_Complex double>) = VariableAddress[cd] : # 93| r93_2(_Complex double) = Load[cd] : &:r93_1, ~m? # 93| r93_3(float) = Convert : r93_2 # 93| r93_4(glval) = VariableAddress[f] : # 93| mu93_5(float) = Store[f] : &:r93_4, r93_3 +# 93| r93_6(float) = Load[f] : &:r93_4, ~m? # 94| r94_1(glval<_Complex long double>) = VariableAddress[cld] : # 94| r94_2(_Complex long double) = Load[cld] : &:r94_1, ~m? # 94| r94_3(float) = Convert : r94_2 # 94| r94_4(glval) = VariableAddress[f] : # 94| mu94_5(float) = Store[f] : &:r94_4, r94_3 +# 94| r94_6(float) = Load[f] : &:r94_4, ~m? # 95| r95_1(glval<_Complex float>) = VariableAddress[cf] : # 95| r95_2(_Complex float) = Load[cf] : &:r95_1, ~m? # 95| r95_3(double) = Convert : r95_2 # 95| r95_4(glval) = VariableAddress[d] : # 95| mu95_5(double) = Store[d] : &:r95_4, r95_3 +# 95| r95_6(double) = Load[d] : &:r95_4, ~m? # 96| r96_1(glval<_Complex double>) = VariableAddress[cd] : # 96| r96_2(_Complex double) = Load[cd] : &:r96_1, ~m? # 96| r96_3(double) = Convert : r96_2 # 96| r96_4(glval) = VariableAddress[d] : # 96| mu96_5(double) = Store[d] : &:r96_4, r96_3 +# 96| r96_6(double) = Load[d] : &:r96_4, ~m? # 97| r97_1(glval<_Complex long double>) = VariableAddress[cld] : # 97| r97_2(_Complex long double) = Load[cld] : &:r97_1, ~m? # 97| r97_3(double) = Convert : r97_2 # 97| r97_4(glval) = VariableAddress[d] : # 97| mu97_5(double) = Store[d] : &:r97_4, r97_3 +# 97| r97_6(double) = Load[d] : &:r97_4, ~m? # 98| r98_1(glval<_Complex float>) = VariableAddress[cf] : # 98| r98_2(_Complex float) = Load[cf] : &:r98_1, ~m? # 98| r98_3(long double) = Convert : r98_2 # 98| r98_4(glval) = VariableAddress[ld] : # 98| mu98_5(long double) = Store[ld] : &:r98_4, r98_3 +# 98| r98_6(long double) = Load[ld] : &:r98_4, ~m? # 99| r99_1(glval<_Complex double>) = VariableAddress[cd] : # 99| r99_2(_Complex double) = Load[cd] : &:r99_1, ~m? # 99| r99_3(long double) = Convert : r99_2 # 99| r99_4(glval) = VariableAddress[ld] : # 99| mu99_5(long double) = Store[ld] : &:r99_4, r99_3 +# 99| r99_6(long double) = Load[ld] : &:r99_4, ~m? # 100| r100_1(glval<_Complex long double>) = VariableAddress[cld] : # 100| r100_2(_Complex long double) = Load[cld] : &:r100_1, ~m? # 100| r100_3(long double) = Convert : r100_2 # 100| r100_4(glval) = VariableAddress[ld] : # 100| mu100_5(long double) = Store[ld] : &:r100_4, r100_3 +# 100| r100_6(long double) = Load[ld] : &:r100_4, ~m? # 103| r103_1(glval<_Imaginary float>) = VariableAddress[jf] : # 103| r103_2(_Imaginary float) = Load[jf] : &:r103_1, ~m? # 103| r103_3(_Complex float) = Convert : r103_2 # 103| r103_4(glval<_Complex float>) = VariableAddress[cf] : # 103| mu103_5(_Complex float) = Store[cf] : &:r103_4, r103_3 +# 103| r103_6(_Complex float) = Load[cf] : &:r103_4, ~m? # 104| r104_1(glval<_Imaginary double>) = VariableAddress[jd] : # 104| r104_2(_Imaginary double) = Load[jd] : &:r104_1, ~m? # 104| r104_3(_Complex float) = Convert : r104_2 # 104| r104_4(glval<_Complex float>) = VariableAddress[cf] : # 104| mu104_5(_Complex float) = Store[cf] : &:r104_4, r104_3 +# 104| r104_6(_Complex float) = Load[cf] : &:r104_4, ~m? # 105| r105_1(glval<_Imaginary long double>) = VariableAddress[jld] : # 105| r105_2(_Imaginary long double) = Load[jld] : &:r105_1, ~m? # 105| r105_3(_Complex float) = Convert : r105_2 # 105| r105_4(glval<_Complex float>) = VariableAddress[cf] : # 105| mu105_5(_Complex float) = Store[cf] : &:r105_4, r105_3 +# 105| r105_6(_Complex float) = Load[cf] : &:r105_4, ~m? # 106| r106_1(glval<_Imaginary float>) = VariableAddress[jf] : # 106| r106_2(_Imaginary float) = Load[jf] : &:r106_1, ~m? # 106| r106_3(_Complex double) = Convert : r106_2 # 106| r106_4(glval<_Complex double>) = VariableAddress[cd] : # 106| mu106_5(_Complex double) = Store[cd] : &:r106_4, r106_3 +# 106| r106_6(_Complex double) = Load[cd] : &:r106_4, ~m? # 107| r107_1(glval<_Imaginary double>) = VariableAddress[jd] : # 107| r107_2(_Imaginary double) = Load[jd] : &:r107_1, ~m? # 107| r107_3(_Complex double) = Convert : r107_2 # 107| r107_4(glval<_Complex double>) = VariableAddress[cd] : # 107| mu107_5(_Complex double) = Store[cd] : &:r107_4, r107_3 +# 107| r107_6(_Complex double) = Load[cd] : &:r107_4, ~m? # 108| r108_1(glval<_Imaginary long double>) = VariableAddress[jld] : # 108| r108_2(_Imaginary long double) = Load[jld] : &:r108_1, ~m? # 108| r108_3(_Complex double) = Convert : r108_2 # 108| r108_4(glval<_Complex double>) = VariableAddress[cd] : # 108| mu108_5(_Complex double) = Store[cd] : &:r108_4, r108_3 +# 108| r108_6(_Complex double) = Load[cd] : &:r108_4, ~m? # 109| r109_1(glval<_Imaginary float>) = VariableAddress[jf] : # 109| r109_2(_Imaginary float) = Load[jf] : &:r109_1, ~m? # 109| r109_3(_Complex long double) = Convert : r109_2 # 109| r109_4(glval<_Complex long double>) = VariableAddress[cld] : # 109| mu109_5(_Complex long double) = Store[cld] : &:r109_4, r109_3 +# 109| r109_6(_Complex long double) = Load[cld] : &:r109_4, ~m? # 110| r110_1(glval<_Imaginary double>) = VariableAddress[jd] : # 110| r110_2(_Imaginary double) = Load[jd] : &:r110_1, ~m? # 110| r110_3(_Complex long double) = Convert : r110_2 # 110| r110_4(glval<_Complex long double>) = VariableAddress[cld] : # 110| mu110_5(_Complex long double) = Store[cld] : &:r110_4, r110_3 +# 110| r110_6(_Complex long double) = Load[cld] : &:r110_4, ~m? # 111| r111_1(glval<_Imaginary long double>) = VariableAddress[jld] : # 111| r111_2(_Imaginary long double) = Load[jld] : &:r111_1, ~m? # 111| r111_3(_Complex long double) = Convert : r111_2 # 111| r111_4(glval<_Complex long double>) = VariableAddress[cld] : # 111| mu111_5(_Complex long double) = Store[cld] : &:r111_4, r111_3 +# 111| r111_6(_Complex long double) = Load[cld] : &:r111_4, ~m? # 114| r114_1(glval<_Complex float>) = VariableAddress[cf] : # 114| r114_2(_Complex float) = Load[cf] : &:r114_1, ~m? # 114| r114_3(_Imaginary float) = Convert : r114_2 # 114| r114_4(glval<_Imaginary float>) = VariableAddress[jf] : # 114| mu114_5(_Imaginary float) = Store[jf] : &:r114_4, r114_3 +# 114| r114_6(_Imaginary float) = Load[jf] : &:r114_4, ~m? # 115| r115_1(glval<_Complex double>) = VariableAddress[cd] : # 115| r115_2(_Complex double) = Load[cd] : &:r115_1, ~m? # 115| r115_3(_Imaginary float) = Convert : r115_2 # 115| r115_4(glval<_Imaginary float>) = VariableAddress[jf] : # 115| mu115_5(_Imaginary float) = Store[jf] : &:r115_4, r115_3 +# 115| r115_6(_Imaginary float) = Load[jf] : &:r115_4, ~m? # 116| r116_1(glval<_Complex long double>) = VariableAddress[cld] : # 116| r116_2(_Complex long double) = Load[cld] : &:r116_1, ~m? # 116| r116_3(_Imaginary float) = Convert : r116_2 # 116| r116_4(glval<_Imaginary float>) = VariableAddress[jf] : # 116| mu116_5(_Imaginary float) = Store[jf] : &:r116_4, r116_3 +# 116| r116_6(_Imaginary float) = Load[jf] : &:r116_4, ~m? # 117| r117_1(glval<_Complex float>) = VariableAddress[cf] : # 117| r117_2(_Complex float) = Load[cf] : &:r117_1, ~m? # 117| r117_3(_Imaginary double) = Convert : r117_2 # 117| r117_4(glval<_Imaginary double>) = VariableAddress[jd] : # 117| mu117_5(_Imaginary double) = Store[jd] : &:r117_4, r117_3 +# 117| r117_6(_Imaginary double) = Load[jd] : &:r117_4, ~m? # 118| r118_1(glval<_Complex double>) = VariableAddress[cd] : # 118| r118_2(_Complex double) = Load[cd] : &:r118_1, ~m? # 118| r118_3(_Imaginary double) = Convert : r118_2 # 118| r118_4(glval<_Imaginary double>) = VariableAddress[jd] : # 118| mu118_5(_Imaginary double) = Store[jd] : &:r118_4, r118_3 +# 118| r118_6(_Imaginary double) = Load[jd] : &:r118_4, ~m? # 119| r119_1(glval<_Complex long double>) = VariableAddress[cld] : # 119| r119_2(_Complex long double) = Load[cld] : &:r119_1, ~m? # 119| r119_3(_Imaginary double) = Convert : r119_2 # 119| r119_4(glval<_Imaginary double>) = VariableAddress[jd] : # 119| mu119_5(_Imaginary double) = Store[jd] : &:r119_4, r119_3 +# 119| r119_6(_Imaginary double) = Load[jd] : &:r119_4, ~m? # 120| r120_1(glval<_Complex float>) = VariableAddress[cf] : # 120| r120_2(_Complex float) = Load[cf] : &:r120_1, ~m? # 120| r120_3(_Imaginary long double) = Convert : r120_2 # 120| r120_4(glval<_Imaginary long double>) = VariableAddress[jld] : # 120| mu120_5(_Imaginary long double) = Store[jld] : &:r120_4, r120_3 +# 120| r120_6(_Imaginary long double) = Load[jld] : &:r120_4, ~m? # 121| r121_1(glval<_Complex double>) = VariableAddress[cd] : # 121| r121_2(_Complex double) = Load[cd] : &:r121_1, ~m? # 121| r121_3(_Imaginary long double) = Convert : r121_2 # 121| r121_4(glval<_Imaginary long double>) = VariableAddress[jld] : # 121| mu121_5(_Imaginary long double) = Store[jld] : &:r121_4, r121_3 +# 121| r121_6(_Imaginary long double) = Load[jld] : &:r121_4, ~m? # 122| r122_1(glval<_Complex long double>) = VariableAddress[cld] : # 122| r122_2(_Complex long double) = Load[cld] : &:r122_1, ~m? # 122| r122_3(_Imaginary long double) = Convert : r122_2 # 122| r122_4(glval<_Imaginary long double>) = VariableAddress[jld] : # 122| mu122_5(_Imaginary long double) = Store[jld] : &:r122_4, r122_3 +# 122| r122_6(_Imaginary long double) = Load[jld] : &:r122_4, ~m? # 125| r125_1(glval) = VariableAddress[f] : # 125| r125_2(float) = Load[f] : &:r125_1, ~m? # 125| r125_3(_Imaginary float) = Convert : r125_2 # 125| r125_4(glval<_Imaginary float>) = VariableAddress[jf] : # 125| mu125_5(_Imaginary float) = Store[jf] : &:r125_4, r125_3 +# 125| r125_6(_Imaginary float) = Load[jf] : &:r125_4, ~m? # 126| r126_1(glval) = VariableAddress[d] : # 126| r126_2(double) = Load[d] : &:r126_1, ~m? # 126| r126_3(_Imaginary float) = Convert : r126_2 # 126| r126_4(glval<_Imaginary float>) = VariableAddress[jf] : # 126| mu126_5(_Imaginary float) = Store[jf] : &:r126_4, r126_3 +# 126| r126_6(_Imaginary float) = Load[jf] : &:r126_4, ~m? # 127| r127_1(glval) = VariableAddress[ld] : # 127| r127_2(long double) = Load[ld] : &:r127_1, ~m? # 127| r127_3(_Imaginary float) = Convert : r127_2 # 127| r127_4(glval<_Imaginary float>) = VariableAddress[jf] : # 127| mu127_5(_Imaginary float) = Store[jf] : &:r127_4, r127_3 +# 127| r127_6(_Imaginary float) = Load[jf] : &:r127_4, ~m? # 128| r128_1(glval) = VariableAddress[f] : # 128| r128_2(float) = Load[f] : &:r128_1, ~m? # 128| r128_3(_Imaginary double) = Convert : r128_2 # 128| r128_4(glval<_Imaginary double>) = VariableAddress[jd] : # 128| mu128_5(_Imaginary double) = Store[jd] : &:r128_4, r128_3 +# 128| r128_6(_Imaginary double) = Load[jd] : &:r128_4, ~m? # 129| r129_1(glval) = VariableAddress[d] : # 129| r129_2(double) = Load[d] : &:r129_1, ~m? # 129| r129_3(_Imaginary double) = Convert : r129_2 # 129| r129_4(glval<_Imaginary double>) = VariableAddress[jd] : # 129| mu129_5(_Imaginary double) = Store[jd] : &:r129_4, r129_3 +# 129| r129_6(_Imaginary double) = Load[jd] : &:r129_4, ~m? # 130| r130_1(glval) = VariableAddress[ld] : # 130| r130_2(long double) = Load[ld] : &:r130_1, ~m? # 130| r130_3(_Imaginary double) = Convert : r130_2 # 130| r130_4(glval<_Imaginary double>) = VariableAddress[jd] : # 130| mu130_5(_Imaginary double) = Store[jd] : &:r130_4, r130_3 +# 130| r130_6(_Imaginary double) = Load[jd] : &:r130_4, ~m? # 131| r131_1(glval) = VariableAddress[f] : # 131| r131_2(float) = Load[f] : &:r131_1, ~m? # 131| r131_3(_Imaginary long double) = Convert : r131_2 # 131| r131_4(glval<_Imaginary long double>) = VariableAddress[jld] : # 131| mu131_5(_Imaginary long double) = Store[jld] : &:r131_4, r131_3 +# 131| r131_6(_Imaginary long double) = Load[jld] : &:r131_4, ~m? # 132| r132_1(glval) = VariableAddress[d] : # 132| r132_2(double) = Load[d] : &:r132_1, ~m? # 132| r132_3(_Imaginary long double) = Convert : r132_2 # 132| r132_4(glval<_Imaginary long double>) = VariableAddress[jld] : # 132| mu132_5(_Imaginary long double) = Store[jld] : &:r132_4, r132_3 +# 132| r132_6(_Imaginary long double) = Load[jld] : &:r132_4, ~m? # 133| r133_1(glval) = VariableAddress[ld] : # 133| r133_2(long double) = Load[ld] : &:r133_1, ~m? # 133| r133_3(_Imaginary long double) = Convert : r133_2 # 133| r133_4(glval<_Imaginary long double>) = VariableAddress[jld] : # 133| mu133_5(_Imaginary long double) = Store[jld] : &:r133_4, r133_3 +# 133| r133_6(_Imaginary long double) = Load[jld] : &:r133_4, ~m? # 136| r136_1(glval<_Imaginary float>) = VariableAddress[jf] : # 136| r136_2(_Imaginary float) = Load[jf] : &:r136_1, ~m? # 136| r136_3(float) = Convert : r136_2 # 136| r136_4(glval) = VariableAddress[f] : # 136| mu136_5(float) = Store[f] : &:r136_4, r136_3 +# 136| r136_6(float) = Load[f] : &:r136_4, ~m? # 137| r137_1(glval<_Imaginary double>) = VariableAddress[jd] : # 137| r137_2(_Imaginary double) = Load[jd] : &:r137_1, ~m? # 137| r137_3(float) = Convert : r137_2 # 137| r137_4(glval) = VariableAddress[f] : # 137| mu137_5(float) = Store[f] : &:r137_4, r137_3 +# 137| r137_6(float) = Load[f] : &:r137_4, ~m? # 138| r138_1(glval<_Imaginary long double>) = VariableAddress[jld] : # 138| r138_2(_Imaginary long double) = Load[jld] : &:r138_1, ~m? # 138| r138_3(float) = Convert : r138_2 # 138| r138_4(glval) = VariableAddress[f] : # 138| mu138_5(float) = Store[f] : &:r138_4, r138_3 +# 138| r138_6(float) = Load[f] : &:r138_4, ~m? # 139| r139_1(glval<_Imaginary float>) = VariableAddress[jf] : # 139| r139_2(_Imaginary float) = Load[jf] : &:r139_1, ~m? # 139| r139_3(double) = Convert : r139_2 # 139| r139_4(glval) = VariableAddress[d] : # 139| mu139_5(double) = Store[d] : &:r139_4, r139_3 +# 139| r139_6(double) = Load[d] : &:r139_4, ~m? # 140| r140_1(glval<_Imaginary double>) = VariableAddress[jd] : # 140| r140_2(_Imaginary double) = Load[jd] : &:r140_1, ~m? # 140| r140_3(double) = Convert : r140_2 # 140| r140_4(glval) = VariableAddress[d] : # 140| mu140_5(double) = Store[d] : &:r140_4, r140_3 +# 140| r140_6(double) = Load[d] : &:r140_4, ~m? # 141| r141_1(glval<_Imaginary long double>) = VariableAddress[jld] : # 141| r141_2(_Imaginary long double) = Load[jld] : &:r141_1, ~m? # 141| r141_3(double) = Convert : r141_2 # 141| r141_4(glval) = VariableAddress[d] : # 141| mu141_5(double) = Store[d] : &:r141_4, r141_3 +# 141| r141_6(double) = Load[d] : &:r141_4, ~m? # 142| r142_1(glval<_Imaginary float>) = VariableAddress[jf] : # 142| r142_2(_Imaginary float) = Load[jf] : &:r142_1, ~m? # 142| r142_3(long double) = Convert : r142_2 # 142| r142_4(glval) = VariableAddress[ld] : # 142| mu142_5(long double) = Store[ld] : &:r142_4, r142_3 +# 142| r142_6(long double) = Load[ld] : &:r142_4, ~m? # 143| r143_1(glval<_Imaginary double>) = VariableAddress[jd] : # 143| r143_2(_Imaginary double) = Load[jd] : &:r143_1, ~m? # 143| r143_3(long double) = Convert : r143_2 # 143| r143_4(glval) = VariableAddress[ld] : # 143| mu143_5(long double) = Store[ld] : &:r143_4, r143_3 +# 143| r143_6(long double) = Load[ld] : &:r143_4, ~m? # 144| r144_1(glval<_Imaginary long double>) = VariableAddress[jld] : # 144| r144_2(_Imaginary long double) = Load[jld] : &:r144_1, ~m? # 144| r144_3(long double) = Convert : r144_2 # 144| r144_4(glval) = VariableAddress[ld] : # 144| mu144_5(long double) = Store[ld] : &:r144_4, r144_3 +# 144| r144_6(long double) = Load[ld] : &:r144_4, ~m? # 145| v145_1(void) = NoOp : # 58| v58_4(void) = ReturnVoid : # 58| v58_5(void) = AliasedUse : ~m? @@ -747,10 +833,11 @@ ir.c: # 9| r9_5(glval<(unnamed class/struct/union)>) = VariableAddress[coords] : # 9| r9_6(glval) = FieldAddress[y] : r9_5 # 9| mu9_7(int) = Store[?] : &:r9_6, r9_4 -# 9| r9_8(int) = CopyValue : r9_4 +# 9| r9_8(int) = Load[?] : &:r9_6, ~m? # 9| r9_9(glval<(unnamed class/struct/union)>) = VariableAddress[coords] : # 9| r9_10(glval) = FieldAddress[x] : r9_9 # 9| mu9_11(int) = Store[?] : &:r9_10, r9_8 +# 9| r9_12(int) = Load[?] : &:r9_10, ~m? # 10| r10_1(glval) = FunctionAddress[getX] : # 10| r10_2(glval<(unnamed class/struct/union)>) = VariableAddress[coords] : # 10| r10_3(struct *) = CopyValue : r10_2 @@ -761,6 +848,7 @@ ir.c: # 10| r10_8(glval<(unnamed class/struct/union)>) = VariableAddress[coords] : # 10| r10_9(glval) = FieldAddress[x] : r10_8 # 10| mu10_10(int) = Store[?] : &:r10_9, r10_4 +# 10| r10_11(int) = Load[?] : &:r10_9, ~m? # 11| v11_1(void) = NoOp : # 7| v7_6(void) = ReturnVoid : # 7| v7_7(void) = AliasedUse : ~m? @@ -1159,15 +1247,17 @@ ir.cpp: # 101| r101_3(int) = Constant[1] : # 101| r101_4(int) = Add : r101_2, r101_3 # 101| mu101_5(int) = Store[x] : &:r101_1, r101_4 -# 101| r101_6(glval) = VariableAddress[y] : -# 101| mu101_7(int) = Store[y] : &:r101_6, r101_4 +# 101| r101_6(int) = Load[x] : &:r101_1, ~m? +# 101| r101_7(glval) = VariableAddress[y] : +# 101| mu101_8(int) = Store[y] : &:r101_7, r101_6 # 102| r102_1(glval) = VariableAddress[x] : # 102| r102_2(int) = Load[x] : &:r102_1, ~m? # 102| r102_3(int) = Constant[1] : # 102| r102_4(int) = Sub : r102_2, r102_3 # 102| mu102_5(int) = Store[x] : &:r102_1, r102_4 -# 102| r102_6(glval) = VariableAddress[y] : -# 102| mu102_7(int) = Store[y] : &:r102_6, r102_4 +# 102| r102_6(int) = Load[x] : &:r102_1, ~m? +# 102| r102_7(glval) = VariableAddress[y] : +# 102| mu102_8(int) = Store[y] : &:r102_7, r102_6 # 103| r103_1(glval) = VariableAddress[x] : # 103| r103_2(int) = Load[x] : &:r103_1, ~m? # 103| r103_3(int) = Constant[1] : @@ -1375,15 +1465,17 @@ ir.cpp: # 147| r147_3(float) = Constant[1.0] : # 147| r147_4(float) = Add : r147_2, r147_3 # 147| mu147_5(float) = Store[x] : &:r147_1, r147_4 -# 147| r147_6(glval) = VariableAddress[y] : -# 147| mu147_7(float) = Store[y] : &:r147_6, r147_4 +# 147| r147_6(float) = Load[x] : &:r147_1, ~m? +# 147| r147_7(glval) = VariableAddress[y] : +# 147| mu147_8(float) = Store[y] : &:r147_7, r147_6 # 148| r148_1(glval) = VariableAddress[x] : # 148| r148_2(float) = Load[x] : &:r148_1, ~m? # 148| r148_3(float) = Constant[1.0] : # 148| r148_4(float) = Sub : r148_2, r148_3 # 148| mu148_5(float) = Store[x] : &:r148_1, r148_4 -# 148| r148_6(glval) = VariableAddress[y] : -# 148| mu148_7(float) = Store[y] : &:r148_6, r148_4 +# 148| r148_6(float) = Load[x] : &:r148_1, ~m? +# 148| r148_7(glval) = VariableAddress[y] : +# 148| mu148_8(float) = Store[y] : &:r148_7, r148_6 # 149| r149_1(glval) = VariableAddress[x] : # 149| r149_2(float) = Load[x] : &:r149_1, ~m? # 149| r149_3(float) = Constant[1.0] : @@ -1682,15 +1774,17 @@ ir.cpp: # 207| r207_3(int) = Constant[1] : # 207| r207_4(int *) = PointerAdd[4] : r207_2, r207_3 # 207| mu207_5(int *) = Store[p] : &:r207_1, r207_4 -# 207| r207_6(glval) = VariableAddress[q] : -# 207| mu207_7(int *) = Store[q] : &:r207_6, r207_4 +# 207| r207_6(int *) = Load[p] : &:r207_1, ~m? +# 207| r207_7(glval) = VariableAddress[q] : +# 207| mu207_8(int *) = Store[q] : &:r207_7, r207_6 # 208| r208_1(glval) = VariableAddress[p] : # 208| r208_2(int *) = Load[p] : &:r208_1, ~m? # 208| r208_3(int) = Constant[1] : # 208| r208_4(int *) = PointerSub[4] : r208_2, r208_3 # 208| mu208_5(int *) = Store[p] : &:r208_1, r208_4 -# 208| r208_6(glval) = VariableAddress[q] : -# 208| mu208_7(int *) = Store[q] : &:r208_6, r208_4 +# 208| r208_6(int *) = Load[p] : &:r208_1, ~m? +# 208| r208_7(glval) = VariableAddress[q] : +# 208| mu208_8(int *) = Store[q] : &:r208_7, r208_6 # 209| r209_1(glval) = VariableAddress[p] : # 209| r209_2(int *) = Load[p] : &:r209_1, ~m? # 209| r209_3(int) = Constant[1] : @@ -5726,6 +5820,26 @@ ir.cpp: # 1038| v1038_9(void) = AliasedUse : ~m? # 1038| v1038_10(void) = ExitFunction : +# 1038| void (lambda [] type at line 1038, col. 12)::(unnamed constructor)((lambda [] type at line 1038, col. 12)&&) +# 1038| Block 0 +# 1038| v1038_1(void) = EnterFunction : +# 1038| mu1038_2(unknown) = AliasedDefinition : +# 1038| mu1038_3(unknown) = InitializeNonLocal : +# 1038| r1038_4(glval) = VariableAddress[#this] : +# 1038| mu1038_5(glval) = InitializeParameter[#this] : &:r1038_4 +# 1038| r1038_6(glval) = Load[#this] : &:r1038_4, ~m? +# 1038| mu1038_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1038_6 +#-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : +#-----| mu0_2(lambda [] type at line 1038, col. 12 &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 +#-----| r0_3(lambda [] type at line 1038, col. 12 &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m? +#-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 +# 1038| v1038_8(void) = NoOp : +# 1038| v1038_9(void) = ReturnIndirection[#this] : &:r1038_6, ~m? +#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? +# 1038| v1038_10(void) = ReturnVoid : +# 1038| v1038_11(void) = AliasedUse : ~m? +# 1038| v1038_12(void) = ExitFunction : + # 1038| void (lambda [] type at line 1038, col. 12)::operator()() const # 1038| Block 0 # 1038| v1038_1(void) = EnterFunction : @@ -5920,6 +6034,26 @@ ir.cpp: # 1040| v1040_12(void) = AliasedUse : ~m? # 1040| v1040_13(void) = ExitFunction : +# 1041| void (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::(unnamed constructor)((void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)&&) +# 1041| Block 0 +# 1041| v1041_1(void) = EnterFunction : +# 1041| mu1041_2(unknown) = AliasedDefinition : +# 1041| mu1041_3(unknown) = InitializeNonLocal : +# 1041| r1041_4(glval) = VariableAddress[#this] : +# 1041| mu1041_5(glval) = InitializeParameter[#this] : &:r1041_4 +# 1041| r1041_6(glval) = Load[#this] : &:r1041_4, ~m? +# 1041| mu1041_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1041_6 +#-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : +#-----| mu0_2(lambda [] type at line 1041, col. 23 &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 +#-----| r0_3(lambda [] type at line 1041, col. 23 &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m? +#-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 +# 1041| v1041_8(void) = NoOp : +# 1041| v1041_9(void) = ReturnIndirection[#this] : &:r1041_6, ~m? +#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? +# 1041| v1041_10(void) = ReturnVoid : +# 1041| v1041_11(void) = AliasedUse : ~m? +# 1041| v1041_12(void) = ExitFunction : + # 1041| char (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::operator()(float) const # 1041| Block 0 # 1041| v1041_1(void) = EnterFunction : @@ -9216,14 +9350,11 @@ ir.cpp: # 1713| mu1713_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1713_1 # 1714| r1714_1(glval) = VariableAddress[l2] : # 1714| r1714_2(glval) = VariableAddress[#temp1714:36] : -# 1714| r1714_3(glval) = VariableAddress[#temp1714:36] : -# 1714| r1714_4(TrivialLambdaClass) = Constant[0] : -# 1714| mu1714_5(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_3, r1714_4 -# 1714| r1714_6(TrivialLambdaClass) = Load[#temp1714:36] : &:r1714_3, ~m? -# 1714| mu1714_7(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_2, r1714_6 -# 1714| r1714_8(glval) = Convert : r1714_2 -# 1714| r1714_9(TrivialLambdaClass &) = CopyValue : r1714_8 -# 1714| mu1714_10(TrivialLambdaClass &) = Store[l2] : &:r1714_1, r1714_9 +# 1714| r1714_3(TrivialLambdaClass) = Constant[0] : +# 1714| mu1714_4(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_2, r1714_3 +# 1714| r1714_5(glval) = Convert : r1714_2 +# 1714| r1714_6(TrivialLambdaClass &) = CopyValue : r1714_5 +# 1714| mu1714_7(TrivialLambdaClass &) = Store[l2] : &:r1714_1, r1714_6 # 1716| r1716_1(glval) = VariableAddress[l_outer1] : # 1716| r1716_2(glval) = VariableAddress[#temp1716:20] : # 1716| mu1716_3(decltype([...](...){...})) = Uninitialized[#temp1716:20] : &:r1716_2 @@ -10298,7 +10429,7 @@ ir.cpp: # 1930| r1930_1(int) = Constant[40] : # 1930| r1930_2(glval) = VariableAddress[j] : # 1930| mu1930_3(int) = Store[j] : &:r1930_2, r1930_1 -# 1930| r1930_4(int) = CopyValue : r1930_1 +# 1930| r1930_4(int) = Load[j] : &:r1930_2, ~m? # 1930| r1930_5(glval) = VariableAddress[i] : # 1930| mu1930_6(int) = Store[i] : &:r1930_5, r1930_4 # 1931| v1931_1(void) = NoOp : @@ -10321,8 +10452,9 @@ ir.cpp: # 1935| r1935_3(int) = Load[j] : &:r1935_2, ~m? # 1935| r1935_4(int) = Add : r1935_3, r1935_1 # 1935| mu1935_5(int) = Store[j] : &:r1935_2, r1935_4 -# 1935| r1935_6(glval) = VariableAddress[i] : -# 1935| mu1935_7(int) = Store[i] : &:r1935_6, r1935_4 +# 1935| r1935_6(int) = Load[j] : &:r1935_2, ~m? +# 1935| r1935_7(glval) = VariableAddress[i] : +# 1935| mu1935_8(int) = Store[i] : &:r1935_7, r1935_6 # 1936| v1936_1(void) = NoOp : # 1933| v1933_4(void) = ReturnVoid : # 1933| v1933_5(void) = AliasedUse : ~m? @@ -11515,6 +11647,7 @@ try_except.c: # 10| r10_2(int) = Load[y] : &:r10_1, ~m? # 10| r10_3(glval) = VariableAddress[x] : # 10| mu10_4(int) = Store[x] : &:r10_3, r10_2 +# 10| r10_5(int) = Load[x] : &:r10_3, ~m? # 11| r11_1(glval) = FunctionAddress[ProbeFunction] : # 11| r11_2(int) = Constant[0] : # 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 @@ -11578,6 +11711,7 @@ try_except.c: # 22| r22_2(int) = Load[y] : &:r22_1, ~m? # 22| r22_3(glval) = VariableAddress[x] : # 22| mu22_4(int) = Store[x] : &:r22_3, r22_2 +# 22| r22_5(int) = Load[x] : &:r22_3, ~m? # 23| r23_1(glval) = FunctionAddress[ProbeFunction] : # 23| r23_2(int) = Constant[0] : # 23| v23_3(void) = Call[ProbeFunction] : func:r23_1, 0:r23_2 From c418b4f0d872cc5f8c29f9d10a7ed38204a82b5a Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Mon, 31 Jul 2023 17:03:49 +0200 Subject: [PATCH 05/14] C++: Accept PrintAST value category changes after frontend update --- .../examples/expressions/PrintAST.expected | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/cpp/ql/test/examples/expressions/PrintAST.expected b/cpp/ql/test/examples/expressions/PrintAST.expected index 8de5ea5b9b0f..88abd01672ad 100644 --- a/cpp/ql/test/examples/expressions/PrintAST.expected +++ b/cpp/ql/test/examples/expressions/PrintAST.expected @@ -49,7 +49,7 @@ ArrayToPointer.c: # 9| getStmt(2): [ExprStmt] ExprStmt # 9| getExpr(): [AssignExpr] ... = ... # 9| Type = [CharPointerType] char * -# 9| ValueCategory = prvalue +# 9| ValueCategory = prvalue(load) # 9| getLValue(): [ValueFieldAccess] name # 9| Type = [CharPointerType] char * # 9| ValueCategory = lvalue @@ -74,7 +74,7 @@ Cast.c: # 2| getStmt(0): [ExprStmt] ExprStmt # 2| getExpr(): [AssignExpr] ... = ... # 2| Type = [CharPointerType] char * -# 2| ValueCategory = prvalue +# 2| ValueCategory = prvalue(load) # 2| getLValue(): [VariableAccess] c # 2| Type = [CharPointerType] char * # 2| ValueCategory = lvalue @@ -245,7 +245,7 @@ Conversion2.c: # 2| getStmt(0): [ExprStmt] ExprStmt # 2| getExpr(): [AssignExpr] ... = ... # 2| Type = [IntType] int -# 2| ValueCategory = prvalue +# 2| ValueCategory = prvalue(load) # 2| getLValue(): [VariableAccess] x # 2| Type = [IntType] int # 2| ValueCategory = lvalue @@ -331,7 +331,7 @@ Conversion4.c: # 2| getStmt(0): [ExprStmt] ExprStmt # 2| getExpr(): [AssignExpr] ... = ... # 2| Type = [IntType] int -# 2| ValueCategory = prvalue +# 2| ValueCategory = prvalue(load) # 2| getLValue(): [VariableAccess] x # 2| Type = [IntType] int # 2| ValueCategory = lvalue @@ -589,7 +589,7 @@ Parenthesis.c: # 2| getStmt(0): [ExprStmt] ExprStmt # 2| getExpr(): [AssignExpr] ... = ... # 2| Type = [IntType] int -# 2| ValueCategory = prvalue +# 2| ValueCategory = prvalue(load) # 2| getLValue(): [VariableAccess] i # 2| Type = [IntType] int # 2| ValueCategory = lvalue @@ -625,7 +625,7 @@ PointerDereference.c: # 2| getStmt(0): [ExprStmt] ExprStmt # 2| getExpr(): [AssignExpr] ... = ... # 2| Type = [IntType] int -# 2| ValueCategory = prvalue +# 2| ValueCategory = prvalue(load) # 2| getLValue(): [VariableAccess] j # 2| Type = [IntType] int # 2| ValueCategory = lvalue @@ -763,7 +763,7 @@ StaticMemberAccess.cpp: # 7| ValueCategory = lvalue # 7| getRValue(): [VariableAccess] i # 7| Type = [IntType] int -# 7| ValueCategory = prvalue +# 7| ValueCategory = prvalue(load) # 7| getQualifier(): [VariableAccess] xref # 7| Type = [LValueReferenceType] X & # 7| ValueCategory = prvalue(load) @@ -782,7 +782,7 @@ Subscript.c: # 2| getStmt(0): [ExprStmt] ExprStmt # 2| getExpr(): [AssignExpr] ... = ... # 2| Type = [IntType] int -# 2| ValueCategory = prvalue +# 2| ValueCategory = prvalue(load) # 2| getLValue(): [VariableAccess] j # 2| Type = [IntType] int # 2| ValueCategory = lvalue @@ -1009,7 +1009,7 @@ macro_etc.c: # 9| getStmt(1): [ExprStmt] ExprStmt # 9| getExpr(): [AssignExpr] ... = ... # 9| Type = [IntType] int -# 9| ValueCategory = prvalue +# 9| ValueCategory = prvalue(load) # 9| getLValue(): [ValueFieldAccess] b # 9| Type = [IntType] int # 9| ValueCategory = lvalue @@ -1079,7 +1079,7 @@ macro_etc.c: # 27| getInitialization(): [ExprStmt] ExprStmt # 27| getExpr(): [AssignExpr] ... = ... # 27| Type = [PlainCharType] char -# 27| ValueCategory = prvalue +# 27| ValueCategory = prvalue(load) # 27| getLValue(): [VariableAccess] i # 27| Type = [PlainCharType] char # 27| ValueCategory = lvalue @@ -1108,7 +1108,7 @@ macro_etc.c: # 27| ValueCategory = prvalue # 27| getUpdate(): [PrefixIncrExpr] ++ ... # 27| Type = [PlainCharType] char -# 27| ValueCategory = prvalue +# 27| ValueCategory = prvalue(load) # 27| getOperand(): [VariableAccess] i # 27| Type = [PlainCharType] char # 27| ValueCategory = lvalue @@ -1116,7 +1116,7 @@ macro_etc.c: # 27| getStmt(0): [ExprStmt] ExprStmt # 27| getExpr(): [AssignAddExpr] ... += ... # 27| Type = [IntType] int -# 27| ValueCategory = prvalue +# 27| ValueCategory = prvalue(load) # 27| getLValue(): [VariableAccess] t # 27| Type = [IntType] int # 27| ValueCategory = lvalue @@ -1131,7 +1131,7 @@ macro_etc.c: # 28| getInitialization(): [ExprStmt] ExprStmt # 28| getExpr(): [AssignExpr] ... = ... # 28| Type = [PlainCharType] char -# 28| ValueCategory = prvalue +# 28| ValueCategory = prvalue(load) # 28| getLValue(): [VariableAccess] i # 28| Type = [PlainCharType] char # 28| ValueCategory = lvalue @@ -1160,7 +1160,7 @@ macro_etc.c: # 28| ValueCategory = prvalue # 28| getUpdate(): [PrefixIncrExpr] ++ ... # 28| Type = [PlainCharType] char -# 28| ValueCategory = prvalue +# 28| ValueCategory = prvalue(load) # 28| getOperand(): [VariableAccess] i # 28| Type = [PlainCharType] char # 28| ValueCategory = lvalue @@ -1168,7 +1168,7 @@ macro_etc.c: # 28| getStmt(0): [ExprStmt] ExprStmt # 28| getExpr(): [AssignAddExpr] ... += ... # 28| Type = [IntType] int -# 28| ValueCategory = prvalue +# 28| ValueCategory = prvalue(load) # 28| getLValue(): [VariableAccess] t # 28| Type = [IntType] int # 28| ValueCategory = lvalue @@ -1182,7 +1182,7 @@ macro_etc.c: # 29| getStmt(8): [ExprStmt] ExprStmt # 29| getExpr(): [AssignExpr] ... = ... # 29| Type = [CharPointerType] char * -# 29| ValueCategory = prvalue +# 29| ValueCategory = prvalue(load) # 29| getLValue(): [VariableAccess] bt # 29| Type = [CharPointerType] char * # 29| ValueCategory = lvalue @@ -1196,7 +1196,7 @@ macro_etc.c: # 30| getStmt(9): [ExprStmt] ExprStmt # 30| getExpr(): [AssignExpr] ... = ... # 30| Type = [PlainCharType] char -# 30| ValueCategory = prvalue +# 30| ValueCategory = prvalue(load) # 30| getLValue(): [ArrayExpr] access to array # 30| Type = [PlainCharType] char # 30| ValueCategory = lvalue @@ -1220,7 +1220,7 @@ macro_etc.c: # 31| getStmt(10): [ExprStmt] ExprStmt # 31| getExpr(): [AssignExpr] ... = ... # 31| Type = [FunctionPointerType] ..(*)(..) -# 31| ValueCategory = prvalue +# 31| ValueCategory = prvalue(load) # 31| getLValue(): [VariableAccess] bp # 31| Type = [FunctionPointerType] ..(*)(..) # 31| ValueCategory = lvalue @@ -1394,7 +1394,7 @@ union_etc.cpp: # 26| ValueCategory = lvalue # 26| getRValue(): [AssignExpr] ... = ... # 26| Type = [IntType] int -# 26| ValueCategory = prvalue +# 26| ValueCategory = prvalue(load) # 26| getLValue(): [ValueFieldAccess] e # 26| Type = [IntType] int # 26| ValueCategory = lvalue @@ -1406,7 +1406,7 @@ union_etc.cpp: # 26| ValueCategory = lvalue # 26| getRValue(): [AssignExpr] ... = ... # 26| Type = [IntType] int -# 26| ValueCategory = prvalue +# 26| ValueCategory = prvalue(load) # 26| getLValue(): [ValueFieldAccess] i # 26| Type = [IntType] int # 26| ValueCategory = lvalue From f1977f040d0d17c488cda88d32d8de06c0691d55 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 2 Aug 2023 15:43:40 +0200 Subject: [PATCH 06/14] C++: Accept new dataflow IR inconsistencies These are due to additional loads being generated on fields, and should not cause any problems. Ideally, we should tune the definition of `TPostFieldUpdateNode` to make these go away. --- .../dataflow/dataflow-tests/dataflow-ir-consistency.expected | 3 +++ .../library-tests/syntax-zoo/dataflow-ir-consistency.expected | 3 +++ 2 files changed, 6 insertions(+) diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected index 58049de095de..e676f1edc5c0 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected @@ -15,6 +15,9 @@ localCallNodes postIsNotPre postHasUniquePre uniquePostUpdate +| example.c:24:2:24:7 | coords indirection | Node has multiple PostUpdateNodes. | +| example.c:24:13:24:18 | coords indirection | Node has multiple PostUpdateNodes. | +| example.c:26:2:26:7 | coords indirection | Node has multiple PostUpdateNodes. | postIsInSameCallable reverseRead argHasPostUpdate diff --git a/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected b/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected index eb1472ebfaa9..d223de293a61 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected @@ -17,6 +17,7 @@ localCallNodes postIsNotPre postHasUniquePre uniquePostUpdate +| allocators.cpp:4:24:4:26 | this indirection | Node has multiple PostUpdateNodes. | | cpp11.cpp:82:17:82:17 | this indirection | Node has multiple PostUpdateNodes. | | cpp11.cpp:82:17:82:55 | [...](...){...} indirection | Node has multiple PostUpdateNodes. | | ir.cpp:514:10:514:11 | definition of r2 indirection | Node has multiple PostUpdateNodes. | @@ -33,6 +34,8 @@ uniquePostUpdate | ir.cpp:777:3:777:11 | this indirection | Node has multiple PostUpdateNodes. | | ir.cpp:786:3:786:11 | this indirection | Node has multiple PostUpdateNodes. | | ir.cpp:795:3:795:11 | this indirection | Node has multiple PostUpdateNodes. | +| misc.c:130:5:130:5 | s indirection | Node has multiple PostUpdateNodes. | +| misc.c:131:5:131:6 | sp indirection | Node has multiple PostUpdateNodes. | | static_init_templates.cpp:240:7:240:7 | this indirection | Node has multiple PostUpdateNodes. | postIsInSameCallable reverseRead From 39efe48de00113d36eb71d1f4aaba61c932db864 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 2 Aug 2023 15:48:16 +0200 Subject: [PATCH 07/14] C++: Accept IR GVN test changes a `CopyValue` is now `Load` due to IR changes --- .../valuenumbering/GlobalValueNumbering/ir_gvn.expected | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 88e365023a11..794d35433dfa 100644 --- a/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected +++ b/cpp/ql/test/library-tests/valuenumbering/GlobalValueNumbering/ir_gvn.expected @@ -756,7 +756,7 @@ test.cpp: # 92| valnum = r92_1, r92_3, r93_2 # 92| m92_4(int) = Store[x] : &:r92_3, r92_2 # 92| valnum = m92_4, m92_6, m93_4, r92_2, r92_5, r93_3 -# 92| r92_5(int) = CopyValue : r92_2 +# 92| r92_5(int) = Load[x] : &:r92_3, m92_4 # 92| valnum = m92_4, m92_6, m93_4, r92_2, r92_5, r93_3 # 92| m92_6(int) = Store[x] : &:r92_1, r92_5 # 92| valnum = m92_4, m92_6, m93_4, r92_2, r92_5, r93_3 From 8af272c437cbdd27c345db4023c92203f9891345 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 3 Aug 2023 18:20:36 +0200 Subject: [PATCH 08/14] C++: Fix extractor options for `deprecated_with_msg` test The previous extractor options no longer work, because the default assumed compiler versions have changed in the frontend. --- .../library-tests/attributes/deprecated_with_msg/clang421.c | 2 +- .../library-tests/attributes/deprecated_with_msg/clang450.c | 2 +- .../test/library-tests/attributes/deprecated_with_msg/gcc421.c | 2 +- .../test/library-tests/attributes/deprecated_with_msg/gcc450.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang421.c b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang421.c index 43e489fdffb8..3c772b3be229 100644 --- a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang421.c +++ b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang421.c @@ -1,2 +1,2 @@ static int clang421 = __has_feature(attribute_deprecated_with_message); -// semmle-extractor-options: --gnu_version 40201 --edg --clang +// semmle-extractor-options: --gnu_version 40201 --clang_version 30400 diff --git a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang450.c b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang450.c index 80b0a5a8711c..8c43f17d7183 100644 --- a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang450.c +++ b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/clang450.c @@ -1,2 +1,2 @@ static int clang450 = __has_feature(attribute_deprecated_with_message); -// semmle-extractor-options: --gnu_version 40500 --edg --clang +// semmle-extractor-options: --gnu_version 40500 --clang_version 30500 diff --git a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc421.c b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc421.c index 25ca6a4f694c..7f4e4f4d380b 100644 --- a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc421.c +++ b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc421.c @@ -1,2 +1,2 @@ static int gcc421 = __has_feature(attribute_deprecated_with_message); -// semmle-extractor-options: --gnu_version 40201 --edg --clang +// semmle-extractor-options: --gnu_version 40201 diff --git a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc450.c b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc450.c index e10dd05dfc85..a49c88651638 100644 --- a/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc450.c +++ b/cpp/ql/test/library-tests/attributes/deprecated_with_msg/gcc450.c @@ -1,2 +1,2 @@ static int gcc450 = __has_feature(attribute_deprecated_with_message); -// semmle-extractor-options: --gnu_version 40500 --edg --clang +// semmle-extractor-options: --gnu_version 40500 From 3952c71777ca6977ad4ec20271007f5dd319ae72 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 4 Aug 2023 15:01:21 +0200 Subject: [PATCH 09/14] C++: Fix IR generation for the comma operator --- .../ir/implementation/raw/internal/TranslatedElement.qll | 4 ++++ cpp/ql/test/library-tests/ir/ir/PrintAST.expected | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll index d6139c35a574..39d27581ab27 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedElement.qll @@ -362,8 +362,12 @@ predicate ignoreLoad(Expr expr) { or expr instanceof FunctionAccess or + // The load is duplicated from the operand. expr instanceof ParenthesisExpr or + // The load is duplicated from the right operand. + expr instanceof CommaExpr + or expr.(PointerDereferenceExpr).getOperand().getFullyConverted().getType().getUnspecifiedType() instanceof FunctionPointerType or diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 200ab9e06158..808ffef6d889 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -15504,7 +15504,7 @@ ir.cpp: # 2028| ValueCategory = lvalue # 2028| getRValue(): [ConditionalExpr] ... ? ... : ... # 2028| Type = [IntType] unsigned int -# 2028| ValueCategory = prvalue +# 2028| ValueCategory = prvalue(load) # 2028| getCondition(): [LTExpr] ... < ... # 2028| Type = [BoolType] bool # 2028| ValueCategory = prvalue @@ -15522,7 +15522,7 @@ ir.cpp: # 2028| ValueCategory = prvalue # 2029| getThen(): [CommaExpr] ... , ... # 2029| Type = [IntType] unsigned int -# 2029| ValueCategory = prvalue +# 2029| ValueCategory = prvalue(load) # 2029| getLeftOperand(): [FunctionCall] call to CommaTestHelper # 2029| Type = [VoidType] void # 2029| ValueCategory = prvalue @@ -15547,7 +15547,7 @@ ir.cpp: # 2030| ValueCategory = prvalue # 2029| getThen().getFullyConverted(): [ParenthesisExpr] (...) # 2029| Type = [IntType] unsigned int -# 2029| ValueCategory = prvalue +# 2029| ValueCategory = prvalue(load) # 2030| getElse().getFullyConverted(): [CStyleCast] (unsigned int)... # 2030| Conversion = [IntegralConversion] integral conversion # 2030| Type = [IntType] unsigned int From ecf3b5cfea60bcc53a786fd65c50c2ceb77a12bf Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 4 Aug 2023 15:01:56 +0200 Subject: [PATCH 10/14] C++: Accept sign analysis test changes The IR now contains extra loads that need to be accounted for. --- .../signanalysis/SignAnalysis.expected | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/cpp/ql/test/experimental/library-tests/rangeanalysis/signanalysis/SignAnalysis.expected b/cpp/ql/test/experimental/library-tests/rangeanalysis/signanalysis/SignAnalysis.expected index 438bc9173f22..46d25d0ca35b 100644 --- a/cpp/ql/test/experimental/library-tests/rangeanalysis/signanalysis/SignAnalysis.expected +++ b/cpp/ql/test/experimental/library-tests/rangeanalysis/signanalysis/SignAnalysis.expected @@ -13,6 +13,7 @@ | bounded_bounds.c:16:12:16:12 | Load: x | negative strictlyNegative | | bounded_bounds.c:16:12:16:12 | Store: x | negative strictlyNegative | | inline_assembly.c:9:23:9:23 | Uninitialized: definition of y | positive | +| inline_assembly.c:10:3:10:7 | Load: ... = ... | positive strictlyPositive | | inline_assembly.c:10:3:10:7 | Store: ... = ... | positive strictlyPositive | | inline_assembly.c:10:7:10:7 | Constant: (unsigned int)... | positive strictlyPositive | | inline_assembly.c:12:32:12:32 | Load: y | positive strictlyPositive | @@ -26,8 +27,10 @@ | minmax.c:18:37:18:37 | Load: x | positive strictlyPositive | | minmax.c:18:40:18:40 | Load: y | positive strictlyPositive | | minmax.c:18:43:18:43 | Load: z | positive strictlyPositive | +| minmax.c:20:2:24:3 | Load: ... = ... | positive | | minmax.c:20:2:24:3 | Store: ... = ... | positive | | minmax.c:20:6:24:3 | CopyValue: (statement expression) | positive | +| minmax.c:22:18:22:22 | Load: ... = ... | positive strictlyPositive | | minmax.c:22:18:22:22 | Store: ... = ... | positive strictlyPositive | | minmax.c:22:22:22:22 | Load: x | positive strictlyPositive | | minmax.c:23:3:23:3 | Load: t | positive | @@ -36,6 +39,7 @@ | minmax.c:26:40:26:40 | Load: y | positive strictlyPositive | | minmax.c:26:43:26:43 | Load: z | positive | | test.c:7:10:7:10 | Phi: p | positive | +| test.c:8:5:8:19 | Load: ... = ... | positive strictlyPositive | | test.c:8:5:8:19 | Store: ... = ... | positive strictlyPositive | | test.c:8:13:8:17 | Load: count | positive | | test.c:8:13:8:19 | Add: ... + ... | positive strictlyPositive | @@ -43,6 +47,7 @@ | test.c:10:10:10:14 | Load: count | positive | | test.c:10:10:10:14 | Store: count | positive | | test.c:15:10:15:10 | Phi: p | positive | +| test.c:16:5:16:26 | Load: ... = ... | positive | | test.c:16:5:16:26 | Store: ... = ... | positive | | test.c:16:13:16:26 | Rem: ... % ... | positive | | test.c:16:14:16:18 | Load: count | positive | @@ -56,6 +61,7 @@ | test.c:24:5:24:11 | Add: ... ++ | positive strictlyPositive | | test.c:24:5:24:11 | Constant: ... ++ | positive strictlyPositive | | test.c:24:5:24:11 | Store: ... ++ | positive strictlyPositive | +| test.c:25:5:25:22 | Load: ... = ... | positive | | test.c:25:5:25:22 | Store: ... = ... | positive | | test.c:25:13:25:17 | Load: count | positive strictlyPositive | | test.c:25:13:25:22 | Rem: ... % ... | positive | @@ -66,12 +72,14 @@ | test.c:33:15:33:15 | Phi: i | positive | | test.c:33:15:33:15 | Phi: i | positive | | test.c:33:19:33:19 | Constant: 2 | positive strictlyPositive | +| test.c:33:22:33:28 | Load: ... = ... | positive strictlyPositive | | test.c:33:22:33:28 | Store: ... = ... | positive strictlyPositive | | test.c:33:26:33:26 | Load: i | positive | | test.c:33:26:33:28 | Add: ... + ... | positive strictlyPositive | | test.c:33:28:33:28 | Constant: 1 | positive strictlyPositive | | test.c:34:5:34:9 | Load: total | positive | | test.c:34:5:34:14 | Add: ... += ... | positive | +| test.c:34:5:34:14 | Load: ... += ... | positive | | test.c:34:5:34:14 | Store: ... += ... | positive | | test.c:34:14:34:14 | Load: i | positive | | test.c:36:10:36:14 | Load: total | positive | @@ -88,6 +96,7 @@ | test.c:42:22:42:24 | Store: ... ++ | positive strictlyPositive | | test.c:43:5:43:9 | Load: total | positive | | test.c:43:5:43:14 | Add: ... += ... | positive | +| test.c:43:5:43:14 | Load: ... += ... | positive | | test.c:43:5:43:14 | Store: ... += ... | positive | | test.c:43:14:43:14 | Load: i | positive | | test.c:45:10:45:14 | Load: total | positive | @@ -100,12 +109,14 @@ | test.c:51:15:51:17 | Add: ... + ... | positive strictlyPositive | | test.c:51:17:51:17 | Constant: 2 | positive strictlyPositive | | test.c:51:21:51:21 | Constant: 4 | positive strictlyPositive | +| test.c:51:24:51:30 | Load: ... = ... | positive strictlyPositive | | test.c:51:24:51:30 | Store: ... = ... | positive strictlyPositive | | test.c:51:28:51:28 | Load: i | positive | | test.c:51:28:51:30 | Add: ... + ... | positive strictlyPositive | | test.c:51:30:51:30 | Constant: 1 | positive strictlyPositive | | test.c:52:5:52:9 | Load: total | positive | | test.c:52:5:52:14 | Add: ... += ... | positive | +| test.c:52:5:52:14 | Load: ... += ... | positive | | test.c:52:5:52:14 | Store: ... += ... | positive | | test.c:52:14:52:14 | Load: i | positive | | test.c:54:10:54:14 | Load: total | positive | @@ -152,6 +163,7 @@ | test.c:126:31:126:43 | Store: call to test12_helper | positive | | test.c:127:6:127:10 | Load: Start | positive | | test.c:127:6:127:24 | Add: ... += ... | positive strictlyPositive | +| test.c:127:6:127:24 | Load: ... += ... | positive strictlyPositive | | test.c:127:6:127:24 | Store: ... += ... | positive strictlyPositive | | test.c:127:15:127:20 | Load: Length | positive | | test.c:127:15:127:24 | Add: ... + ... | positive strictlyPositive | @@ -243,6 +255,7 @@ | test.c:201:13:201:15 | Store: ... * ... | positive strictlyPositive | | test.c:201:15:201:15 | Load: b | positive strictlyPositive | | test.c:202:5:202:14 | Add: ... += ... | positive strictlyPositive | +| test.c:202:5:202:14 | Load: ... += ... | positive strictlyPositive | | test.c:202:5:202:14 | Store: ... += ... | positive strictlyPositive | | test.c:202:14:202:14 | Load: r | positive strictlyPositive | | test.c:204:7:204:7 | Constant: 3 | positive strictlyPositive | @@ -257,6 +270,7 @@ | test.c:205:15:205:15 | Load: b | positive | | test.c:206:5:206:9 | Load: total | positive | | test.c:206:5:206:14 | Add: ... += ... | positive | +| test.c:206:5:206:14 | Load: ... += ... | positive | | test.c:206:5:206:14 | Store: ... += ... | positive | | test.c:206:14:206:14 | Load: r | positive | | test.c:208:7:208:7 | Constant: 3 | positive strictlyPositive | @@ -296,6 +310,7 @@ | test.c:229:13:229:15 | Store: ... * ... | positive | | test.c:229:15:229:15 | Load: b | positive strictlyPositive | | test.c:230:5:230:14 | Add: ... += ... | positive | +| test.c:230:5:230:14 | Load: ... += ... | positive | | test.c:230:5:230:14 | Store: ... += ... | positive | | test.c:230:14:230:14 | Load: r | positive | | test.c:232:7:232:7 | Phi: 0 | positive | @@ -309,6 +324,7 @@ | test.c:233:15:233:15 | Load: b | positive | | test.c:234:5:234:9 | Load: total | positive | | test.c:234:5:234:14 | Add: ... += ... | positive | +| test.c:234:5:234:14 | Load: ... += ... | positive | | test.c:234:5:234:14 | Store: ... += ... | positive | | test.c:234:14:234:14 | Load: r | positive | | test.c:236:7:236:7 | Phi: 0 | positive | @@ -368,6 +384,7 @@ | test.c:285:13:285:15 | Store: ... * ... | negative | | test.c:285:15:285:15 | Load: b | positive strictlyPositive | | test.c:286:5:286:14 | Add: ... += ... | negative | +| test.c:286:5:286:14 | Load: ... += ... | negative | | test.c:286:5:286:14 | Store: ... += ... | negative | | test.c:286:14:286:14 | Load: r | negative | | test.c:288:7:288:9 | Constant: - ... | negative strictlyNegative | @@ -380,6 +397,7 @@ | test.c:289:15:289:15 | Load: b | positive | | test.c:290:5:290:9 | Load: total | negative | | test.c:290:5:290:14 | Add: ... += ... | negative | +| test.c:290:5:290:14 | Load: ... += ... | negative | | test.c:290:5:290:14 | Store: ... += ... | negative | | test.c:290:14:290:14 | Load: r | negative | | test.c:292:7:292:9 | Constant: - ... | negative strictlyNegative | @@ -413,6 +431,7 @@ | test.c:313:13:313:15 | Store: ... * ... | negative strictlyNegative | | test.c:313:15:313:15 | Load: b | positive strictlyPositive | | test.c:314:5:314:14 | Add: ... += ... | negative strictlyNegative | +| test.c:314:5:314:14 | Load: ... += ... | negative strictlyNegative | | test.c:314:5:314:14 | Store: ... += ... | negative strictlyNegative | | test.c:314:14:314:14 | Load: r | negative strictlyNegative | | test.c:316:7:316:9 | Constant: - ... | negative strictlyNegative | @@ -426,6 +445,7 @@ | test.c:317:15:317:15 | Load: b | positive | | test.c:318:5:318:9 | Load: total | negative | | test.c:318:5:318:14 | Add: ... += ... | negative | +| test.c:318:5:318:14 | Load: ... += ... | negative | | test.c:318:5:318:14 | Store: ... += ... | negative | | test.c:318:14:318:14 | Load: r | negative | | test.c:320:7:320:9 | Constant: - ... | negative strictlyNegative | @@ -461,6 +481,7 @@ | test.c:343:5:343:7 | Add: ... ++ | positive strictlyPositive | | test.c:343:5:343:7 | Constant: ... ++ | positive strictlyPositive | | test.c:343:5:343:7 | Store: ... ++ | positive strictlyPositive | +| test.c:345:3:345:7 | Load: ... = ... | positive strictlyPositive | | test.c:345:3:345:7 | Store: ... = ... | positive strictlyPositive | | test.c:345:7:345:7 | Load: i | positive strictlyPositive | | test.c:346:7:346:7 | Load: x | positive | @@ -476,6 +497,7 @@ | test.c:356:36:356:37 | Uninitialized: definition of y6 | positive | | test.c:356:40:356:41 | Uninitialized: definition of y7 | positive | | test.c:356:44:356:45 | Uninitialized: definition of y8 | positive | +| test.c:357:3:357:23 | Load: ... = ... | positive | | test.c:357:3:357:23 | Store: ... = ... | positive | | test.c:357:8:357:8 | Load: x | positive | | test.c:357:8:357:23 | Load: ... ? ... : ... | positive | @@ -485,6 +507,7 @@ | test.c:357:12:357:14 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:357:18:357:18 | Load: x | positive | | test.c:357:22:357:23 | Constant: (unsigned int)... | positive strictlyPositive | +| test.c:358:3:358:24 | Load: ... = ... | positive | | test.c:358:3:358:24 | Store: ... = ... | positive | | test.c:358:8:358:8 | Load: x | positive | | test.c:358:8:358:24 | Load: ... ? ... : ... | positive | @@ -496,6 +519,7 @@ | test.c:358:24:358:24 | Load: x | positive | | test.c:365:7:365:7 | Load: x | positive | | test.c:365:11:365:13 | Constant: (unsigned int)... | positive strictlyPositive | +| test.c:366:5:366:15 | Load: ... = ... | positive | | test.c:366:5:366:15 | Store: ... = ... | positive | | test.c:366:10:366:10 | Load: x | positive | | test.c:366:10:366:15 | Load: ... ? ... : ... | positive | @@ -503,6 +527,7 @@ | test.c:366:10:366:15 | Store: ... ? ... : ... | positive | | test.c:366:10:366:15 | Store: ... ? ... : ... | positive strictlyPositive | | test.c:366:15:366:15 | Constant: (unsigned int)... | positive strictlyPositive | +| test.c:367:5:367:17 | Load: ... = ... | positive | | test.c:367:5:367:17 | Store: ... = ... | positive | | test.c:367:10:367:10 | Load: x | positive | | test.c:367:10:367:17 | Load: ... ? ... : ... | positive | @@ -510,6 +535,7 @@ | test.c:367:10:367:17 | Store: ... ? ... : ... | positive | | test.c:367:10:367:17 | Store: ... ? ... : ... | positive strictlyPositive | | test.c:367:15:367:17 | Constant: (unsigned int)... | positive strictlyPositive | +| test.c:368:5:368:21 | Load: ... = ... | positive strictlyPositive | | test.c:368:5:368:21 | Store: ... = ... | positive strictlyPositive | | test.c:368:10:368:21 | Load: ... ? ... : ... | positive strictlyPositive | | test.c:368:10:368:21 | Phi: ... ? ... : ... | positive strictlyPositive | @@ -519,6 +545,7 @@ | test.c:368:11:368:13 | Add: ... + ... | positive strictlyPositive | | test.c:368:13:368:13 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:368:19:368:21 | Constant: (unsigned int)... | positive strictlyPositive | +| test.c:369:5:369:36 | Load: ... = ... | positive | | test.c:369:5:369:36 | Store: ... = ... | positive | | test.c:369:10:369:36 | Convert: (unsigned int)... | positive | | test.c:369:10:369:36 | Load: ... ? ... : ... | positive | @@ -530,6 +557,7 @@ | test.c:369:27:369:29 | Add: ... + ... | positive strictlyPositive | | test.c:369:29:369:29 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:369:36:369:36 | Constant: 5 | positive strictlyPositive | +| test.c:370:5:370:38 | Load: ... = ... | positive | | test.c:370:5:370:38 | Store: ... = ... | positive | | test.c:370:10:370:38 | Convert: (unsigned int)... | positive | | test.c:370:10:370:38 | Load: ... ? ... : ... | positive | @@ -541,6 +569,7 @@ | test.c:370:27:370:29 | Add: ... + ... | positive strictlyPositive | | test.c:370:29:370:29 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:370:36:370:38 | Constant: 500 | positive strictlyPositive | +| test.c:371:5:371:39 | Load: ... = ... | positive | | test.c:371:5:371:39 | Store: ... = ... | positive | | test.c:371:10:371:39 | Convert: (unsigned int)... | positive | | test.c:371:10:371:39 | Load: ... ? ... : ... | positive | @@ -580,6 +609,7 @@ | test.c:378:24:378:25 | Uninitialized: definition of y3 | positive | | test.c:378:28:378:29 | Uninitialized: definition of y4 | positive | | test.c:378:32:378:33 | Uninitialized: definition of y5 | positive | +| test.c:379:3:379:24 | Load: ... = ... | positive strictlyPositive | | test.c:379:3:379:24 | Store: ... = ... | positive strictlyPositive | | test.c:379:8:379:8 | Load: x | positive | | test.c:379:8:379:24 | Load: ... ? ... : ... | positive strictlyPositive | @@ -589,6 +619,7 @@ | test.c:379:12:379:14 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:379:18:379:18 | Load: x | positive strictlyPositive | | test.c:379:22:379:24 | Constant: (unsigned int)... | positive strictlyPositive | +| test.c:380:3:380:25 | Load: ... = ... | positive strictlyPositive | | test.c:380:3:380:25 | Store: ... = ... | positive strictlyPositive | | test.c:380:8:380:8 | Load: x | positive | | test.c:380:8:380:25 | Load: ... ? ... : ... | positive strictlyPositive | @@ -598,14 +629,18 @@ | test.c:380:13:380:15 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:380:19:380:21 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:380:25:380:25 | Load: x | positive strictlyPositive | +| test.c:381:3:381:11 | Load: ... = ... | positive strictlyPositive | | test.c:381:3:381:11 | Store: ... = ... | positive strictlyPositive | | test.c:381:8:381:11 | Constant: (unsigned int)... | positive strictlyPositive | +| test.c:382:3:382:11 | Load: ... = ... | positive strictlyPositive | | test.c:382:3:382:11 | Store: ... = ... | positive strictlyPositive | | test.c:382:8:382:11 | Constant: (unsigned int)... | positive strictlyPositive | +| test.c:383:3:383:11 | Load: ... = ... | positive strictlyPositive | | test.c:383:3:383:11 | Store: ... = ... | positive strictlyPositive | | test.c:383:8:383:11 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:384:7:384:7 | Load: x | positive | | test.c:384:12:384:14 | Constant: (unsigned int)... | positive strictlyPositive | +| test.c:385:5:385:21 | Load: ... = ... | positive | | test.c:385:5:385:21 | Store: ... = ... | positive | | test.c:385:10:385:21 | Load: ... ? ... : ... | positive | | test.c:385:10:385:21 | Phi: ... ? ... : ... | positive | @@ -615,6 +650,7 @@ | test.c:385:11:385:15 | Sub: ... - ... | positive | | test.c:385:13:385:15 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:385:21:385:21 | Constant: (unsigned int)... | positive strictlyPositive | +| test.c:386:5:386:21 | Load: ... = ... | positive | | test.c:386:5:386:21 | Store: ... = ... | positive | | test.c:386:10:386:21 | Load: ... ? ... : ... | positive | | test.c:386:10:386:21 | Phi: ... ? ... : ... | positive | @@ -624,6 +660,7 @@ | test.c:386:11:386:15 | Sub: ... - ... | positive | | test.c:386:13:386:15 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:386:21:386:21 | Constant: (unsigned int)... | positive strictlyPositive | +| test.c:387:5:387:38 | Load: ... = ... | positive | | test.c:387:5:387:38 | Store: ... = ... | positive | | test.c:387:10:387:38 | Convert: (unsigned int)... | positive | | test.c:387:10:387:38 | Load: ... ? ... : ... | positive | @@ -660,13 +697,16 @@ | test.c:394:34:394:36 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:395:16:395:17 | Uninitialized: definition of y1 | positive | | test.c:396:16:396:17 | Uninitialized: definition of y2 | positive | +| test.c:397:3:397:15 | Load: ... = ... | positive strictlyPositive | | test.c:397:3:397:15 | Store: ... = ... | positive strictlyPositive | | test.c:397:9:397:11 | Add: ++ ... | positive strictlyPositive | | test.c:397:9:397:11 | Constant: ++ ... | positive strictlyPositive | +| test.c:397:9:397:11 | Load: ++ ... | positive strictlyPositive | | test.c:397:9:397:11 | Store: ++ ... | positive strictlyPositive | | test.c:397:9:397:14 | CopyValue: ... , ... | positive strictlyPositive | | test.c:397:11:397:11 | Load: y | positive | | test.c:397:14:397:14 | Load: y | positive strictlyPositive | +| test.c:398:3:398:23 | Load: ... = ... | positive strictlyPositive | | test.c:398:3:398:23 | Store: ... = ... | positive strictlyPositive | | test.c:398:9:398:9 | Load: y | positive strictlyPositive | | test.c:398:9:398:11 | Add: ... ++ | positive strictlyPositive | @@ -675,6 +715,7 @@ | test.c:398:9:398:22 | CopyValue: ... , ... | positive strictlyPositive | | test.c:398:14:398:14 | Load: y | positive strictlyPositive | | test.c:398:14:398:19 | Add: ... += ... | positive strictlyPositive | +| test.c:398:14:398:19 | Load: ... += ... | positive strictlyPositive | | test.c:398:14:398:19 | Store: ... += ... | positive strictlyPositive | | test.c:398:19:398:19 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:398:22:398:22 | Load: y | positive strictlyPositive | From 3ae2af8fa440f2a3d3fed3a0460ebe609cd380d4 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 4 Aug 2023 15:13:49 +0200 Subject: [PATCH 11/14] C++: Accept semantic range analysis test changes due to extra loads in the IR --- .../ir/range-analysis/SimpleRangeAnalysis_tests.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp b/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp index df29578409b8..4881e00fd29d 100644 --- a/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp +++ b/cpp/ql/test/library-tests/ir/range-analysis/SimpleRangeAnalysis_tests.cpp @@ -672,7 +672,7 @@ void test17() { range(i); // $ range===50 i = 20 + (j -= 10); - range(i); // $ range="==Store: ... += ... | Store: ... = ...+10" range===60 + range(i); // $ range="==Store: ... += ... | Store: ... = ...+10" range===60 range="==Store: ... -= ...+20" } // Tests for unsigned multiplication. From 09d8abcddf19dde566dc6b1f1c96ef68bca001f7 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 9 Aug 2023 16:28:17 +0200 Subject: [PATCH 12/14] C++: Update expected test changes after frontend update --- .../Security/CWE/CWE-134/semmle/argv/argvLocal.expected | 3 --- .../ArithmeticWithExtremeValues.expected | 1 + .../CWE/CWE-190/semmle/ArithmeticWithExtremeValues/test.c | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/argv/argvLocal.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/argv/argvLocal.expected index c422484ea7d1..e91e6d4d0d5c 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/argv/argvLocal.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/argv/argvLocal.expected @@ -79,8 +79,6 @@ edges | argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... | | argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... | | argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... | -| argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... | -| argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... | | argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:17:136:18 | i4 | | argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:17:136:18 | i4 | | argvLocal.c:126:10:126:13 | argv | argvLocal.c:127:9:127:10 | i5 | @@ -193,7 +191,6 @@ nodes | argvLocal.c:135:9:135:12 | ... ++ | semmle.label | ... ++ | | argvLocal.c:136:15:136:18 | -- ... | semmle.label | -- ... | | argvLocal.c:136:15:136:18 | -- ... | semmle.label | -- ... | -| argvLocal.c:136:15:136:18 | -- ... | semmle.label | -- ... | | argvLocal.c:136:17:136:18 | i4 | semmle.label | i4 | | argvLocal.c:139:9:139:26 | ... ? ... : ... | semmle.label | ... ? ... : ... | | argvLocal.c:139:9:139:26 | ... ? ... : ... | semmle.label | ... ? ... : ... | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/ArithmeticWithExtremeValues.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/ArithmeticWithExtremeValues.expected index c8d2e10bd85b..79d2c8633d09 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/ArithmeticWithExtremeValues.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/ArithmeticWithExtremeValues.expected @@ -3,4 +3,5 @@ | test.c:50:3:50:5 | sc3 | $@ flows to an operand of an arithmetic expression, potentially causing an overflow. | test.c:49:9:49:16 | 127 | Extreme value | | test.c:59:3:59:5 | sc6 | $@ flows to an operand of an arithmetic expression, potentially causing an overflow. | test.c:58:9:58:16 | 127 | Extreme value | | test.c:63:3:63:5 | sc8 | $@ flows to an operand of an arithmetic expression, potentially causing an underflow. | test.c:62:9:62:16 | - ... | Extreme value | +| test.c:68:3:68:6 | sc10 | $@ flows to an operand of an arithmetic expression, potentially causing an overflow. | test.c:68:11:68:18 | 127 | Extreme value | | test.c:124:9:124:9 | x | $@ flows to an operand of an arithmetic expression, potentially causing an overflow. | test.c:118:17:118:23 | 2147483647 | Extreme value | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/test.c b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/test.c index 8760641c8e2d..8550e6c93d8d 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/test.c +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/test.c @@ -65,7 +65,7 @@ void test_crement() { sc9 += 1; // GOOD sc10 = 1; - sc10 += CHAR_MAX; // BAD [NOT DETECTED] + sc10 += CHAR_MAX; // BAD } void test_negatives() { From ba1c905960e359085af1386077a82aba4cb476cc Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 16 Aug 2023 21:53:38 +0200 Subject: [PATCH 13/14] C++: Update `cpp/constant-array-overflow` test results after frontend update --- .../CWE-193/constant-size/ConstantSizeArrayOffByOne.expected | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected index b5bbc68dbd4d..147933c2b230 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-193/constant-size/ConstantSizeArrayOffByOne.expected @@ -35,6 +35,7 @@ edges | test.cpp:136:9:136:16 | ... += ... | test.cpp:138:13:138:15 | arr | | test.cpp:143:18:143:21 | asdf | test.cpp:134:25:134:27 | arr | | test.cpp:143:18:143:21 | asdf | test.cpp:143:18:143:21 | asdf | +| test.cpp:146:26:146:26 | p indirection | test.cpp:147:4:147:9 | -- ... | | test.cpp:146:26:146:26 | p indirection | test.cpp:148:6:148:9 | * ... | | test.cpp:156:12:156:14 | buf | test.cpp:156:12:156:18 | ... + ... | | test.cpp:156:12:156:18 | ... + ... | test.cpp:158:17:158:18 | & ... indirection | @@ -122,6 +123,7 @@ nodes | test.cpp:143:18:143:21 | asdf | semmle.label | asdf | | test.cpp:143:18:143:21 | asdf | semmle.label | asdf | | test.cpp:146:26:146:26 | p indirection | semmle.label | p indirection | +| test.cpp:147:4:147:9 | -- ... | semmle.label | -- ... | | test.cpp:148:6:148:9 | * ... | semmle.label | * ... | | test.cpp:156:12:156:14 | buf | semmle.label | buf | | test.cpp:156:12:156:18 | ... + ... | semmle.label | ... + ... | @@ -175,6 +177,7 @@ subpaths | test.cpp:88:5:88:27 | PointerAdd: access to array | test.cpp:85:34:85:36 | buf | test.cpp:88:5:88:27 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:15:9:15:11 | buf | buf | test.cpp:88:5:88:31 | Store: ... = ... | write | | test.cpp:128:9:128:14 | PointerAdd: access to array | test.cpp:128:9:128:11 | arr | test.cpp:128:9:128:14 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:125:11:125:13 | arr | arr | test.cpp:128:9:128:18 | Store: ... = ... | write | | test.cpp:136:9:136:16 | PointerAdd: ... += ... | test.cpp:143:18:143:21 | asdf | test.cpp:138:13:138:15 | arr | This pointer arithmetic may have an off-by-2 error allowing it to overrun $@ at this $@. | test.cpp:142:10:142:13 | asdf | asdf | test.cpp:138:12:138:15 | Load: * ... | read | +| test.cpp:156:12:156:18 | PointerAdd: ... + ... | test.cpp:156:12:156:14 | buf | test.cpp:147:4:147:9 | -- ... | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:154:7:154:9 | buf | buf | test.cpp:147:3:147:13 | Store: ... = ... | write | | test.cpp:156:12:156:18 | PointerAdd: ... + ... | test.cpp:156:12:156:14 | buf | test.cpp:148:6:148:9 | * ... | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:154:7:154:9 | buf | buf | test.cpp:147:3:147:13 | Store: ... = ... | write | | test.cpp:221:5:221:11 | PointerAdd: access to array | test.cpp:218:23:218:28 | buffer | test.cpp:221:5:221:11 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:217:19:217:24 | buffer | buffer | test.cpp:221:5:221:15 | Store: ... = ... | write | | test.cpp:232:5:232:10 | PointerAdd: access to array | test.cpp:229:25:229:29 | array | test.cpp:232:5:232:10 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:228:10:228:14 | array | array | test.cpp:232:5:232:19 | Store: ... = ... | write | From 7750938693fbc61262d612de4ea5606c1598ae7f Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Fri, 18 Aug 2023 19:26:27 +0200 Subject: [PATCH 14/14] C++: Update expected test results after outputting less loads from the extractor --- .../examples/expressions/PrintAST.expected | 34 +-- .../signanalysis/SignAnalysis.expected | 40 ---- .../dataflow-ir-consistency.expected | 2 - .../library-tests/ir/ir/PrintAST.expected | 194 +++++++++--------- .../ir/ir/operand_locations.expected | 186 ----------------- .../test/library-tests/ir/ir/raw_ir.expected | 93 --------- .../dataflow-ir-consistency.expected | 2 - .../ArithmeticWithExtremeValues.expected | 1 - .../semmle/ArithmeticWithExtremeValues/test.c | 2 +- 9 files changed, 115 insertions(+), 439 deletions(-) diff --git a/cpp/ql/test/examples/expressions/PrintAST.expected b/cpp/ql/test/examples/expressions/PrintAST.expected index 88abd01672ad..511a4d55c154 100644 --- a/cpp/ql/test/examples/expressions/PrintAST.expected +++ b/cpp/ql/test/examples/expressions/PrintAST.expected @@ -49,7 +49,7 @@ ArrayToPointer.c: # 9| getStmt(2): [ExprStmt] ExprStmt # 9| getExpr(): [AssignExpr] ... = ... # 9| Type = [CharPointerType] char * -# 9| ValueCategory = prvalue(load) +# 9| ValueCategory = prvalue # 9| getLValue(): [ValueFieldAccess] name # 9| Type = [CharPointerType] char * # 9| ValueCategory = lvalue @@ -74,7 +74,7 @@ Cast.c: # 2| getStmt(0): [ExprStmt] ExprStmt # 2| getExpr(): [AssignExpr] ... = ... # 2| Type = [CharPointerType] char * -# 2| ValueCategory = prvalue(load) +# 2| ValueCategory = prvalue # 2| getLValue(): [VariableAccess] c # 2| Type = [CharPointerType] char * # 2| ValueCategory = lvalue @@ -245,7 +245,7 @@ Conversion2.c: # 2| getStmt(0): [ExprStmt] ExprStmt # 2| getExpr(): [AssignExpr] ... = ... # 2| Type = [IntType] int -# 2| ValueCategory = prvalue(load) +# 2| ValueCategory = prvalue # 2| getLValue(): [VariableAccess] x # 2| Type = [IntType] int # 2| ValueCategory = lvalue @@ -331,7 +331,7 @@ Conversion4.c: # 2| getStmt(0): [ExprStmt] ExprStmt # 2| getExpr(): [AssignExpr] ... = ... # 2| Type = [IntType] int -# 2| ValueCategory = prvalue(load) +# 2| ValueCategory = prvalue # 2| getLValue(): [VariableAccess] x # 2| Type = [IntType] int # 2| ValueCategory = lvalue @@ -589,7 +589,7 @@ Parenthesis.c: # 2| getStmt(0): [ExprStmt] ExprStmt # 2| getExpr(): [AssignExpr] ... = ... # 2| Type = [IntType] int -# 2| ValueCategory = prvalue(load) +# 2| ValueCategory = prvalue # 2| getLValue(): [VariableAccess] i # 2| Type = [IntType] int # 2| ValueCategory = lvalue @@ -625,7 +625,7 @@ PointerDereference.c: # 2| getStmt(0): [ExprStmt] ExprStmt # 2| getExpr(): [AssignExpr] ... = ... # 2| Type = [IntType] int -# 2| ValueCategory = prvalue(load) +# 2| ValueCategory = prvalue # 2| getLValue(): [VariableAccess] j # 2| Type = [IntType] int # 2| ValueCategory = lvalue @@ -782,7 +782,7 @@ Subscript.c: # 2| getStmt(0): [ExprStmt] ExprStmt # 2| getExpr(): [AssignExpr] ... = ... # 2| Type = [IntType] int -# 2| ValueCategory = prvalue(load) +# 2| ValueCategory = prvalue # 2| getLValue(): [VariableAccess] j # 2| Type = [IntType] int # 2| ValueCategory = lvalue @@ -1009,7 +1009,7 @@ macro_etc.c: # 9| getStmt(1): [ExprStmt] ExprStmt # 9| getExpr(): [AssignExpr] ... = ... # 9| Type = [IntType] int -# 9| ValueCategory = prvalue(load) +# 9| ValueCategory = prvalue # 9| getLValue(): [ValueFieldAccess] b # 9| Type = [IntType] int # 9| ValueCategory = lvalue @@ -1079,7 +1079,7 @@ macro_etc.c: # 27| getInitialization(): [ExprStmt] ExprStmt # 27| getExpr(): [AssignExpr] ... = ... # 27| Type = [PlainCharType] char -# 27| ValueCategory = prvalue(load) +# 27| ValueCategory = prvalue # 27| getLValue(): [VariableAccess] i # 27| Type = [PlainCharType] char # 27| ValueCategory = lvalue @@ -1108,7 +1108,7 @@ macro_etc.c: # 27| ValueCategory = prvalue # 27| getUpdate(): [PrefixIncrExpr] ++ ... # 27| Type = [PlainCharType] char -# 27| ValueCategory = prvalue(load) +# 27| ValueCategory = prvalue # 27| getOperand(): [VariableAccess] i # 27| Type = [PlainCharType] char # 27| ValueCategory = lvalue @@ -1116,7 +1116,7 @@ macro_etc.c: # 27| getStmt(0): [ExprStmt] ExprStmt # 27| getExpr(): [AssignAddExpr] ... += ... # 27| Type = [IntType] int -# 27| ValueCategory = prvalue(load) +# 27| ValueCategory = prvalue # 27| getLValue(): [VariableAccess] t # 27| Type = [IntType] int # 27| ValueCategory = lvalue @@ -1131,7 +1131,7 @@ macro_etc.c: # 28| getInitialization(): [ExprStmt] ExprStmt # 28| getExpr(): [AssignExpr] ... = ... # 28| Type = [PlainCharType] char -# 28| ValueCategory = prvalue(load) +# 28| ValueCategory = prvalue # 28| getLValue(): [VariableAccess] i # 28| Type = [PlainCharType] char # 28| ValueCategory = lvalue @@ -1160,7 +1160,7 @@ macro_etc.c: # 28| ValueCategory = prvalue # 28| getUpdate(): [PrefixIncrExpr] ++ ... # 28| Type = [PlainCharType] char -# 28| ValueCategory = prvalue(load) +# 28| ValueCategory = prvalue # 28| getOperand(): [VariableAccess] i # 28| Type = [PlainCharType] char # 28| ValueCategory = lvalue @@ -1168,7 +1168,7 @@ macro_etc.c: # 28| getStmt(0): [ExprStmt] ExprStmt # 28| getExpr(): [AssignAddExpr] ... += ... # 28| Type = [IntType] int -# 28| ValueCategory = prvalue(load) +# 28| ValueCategory = prvalue # 28| getLValue(): [VariableAccess] t # 28| Type = [IntType] int # 28| ValueCategory = lvalue @@ -1182,7 +1182,7 @@ macro_etc.c: # 29| getStmt(8): [ExprStmt] ExprStmt # 29| getExpr(): [AssignExpr] ... = ... # 29| Type = [CharPointerType] char * -# 29| ValueCategory = prvalue(load) +# 29| ValueCategory = prvalue # 29| getLValue(): [VariableAccess] bt # 29| Type = [CharPointerType] char * # 29| ValueCategory = lvalue @@ -1196,7 +1196,7 @@ macro_etc.c: # 30| getStmt(9): [ExprStmt] ExprStmt # 30| getExpr(): [AssignExpr] ... = ... # 30| Type = [PlainCharType] char -# 30| ValueCategory = prvalue(load) +# 30| ValueCategory = prvalue # 30| getLValue(): [ArrayExpr] access to array # 30| Type = [PlainCharType] char # 30| ValueCategory = lvalue @@ -1220,7 +1220,7 @@ macro_etc.c: # 31| getStmt(10): [ExprStmt] ExprStmt # 31| getExpr(): [AssignExpr] ... = ... # 31| Type = [FunctionPointerType] ..(*)(..) -# 31| ValueCategory = prvalue(load) +# 31| ValueCategory = prvalue # 31| getLValue(): [VariableAccess] bp # 31| Type = [FunctionPointerType] ..(*)(..) # 31| ValueCategory = lvalue diff --git a/cpp/ql/test/experimental/library-tests/rangeanalysis/signanalysis/SignAnalysis.expected b/cpp/ql/test/experimental/library-tests/rangeanalysis/signanalysis/SignAnalysis.expected index 46d25d0ca35b..7a73b0dabebc 100644 --- a/cpp/ql/test/experimental/library-tests/rangeanalysis/signanalysis/SignAnalysis.expected +++ b/cpp/ql/test/experimental/library-tests/rangeanalysis/signanalysis/SignAnalysis.expected @@ -13,7 +13,6 @@ | bounded_bounds.c:16:12:16:12 | Load: x | negative strictlyNegative | | bounded_bounds.c:16:12:16:12 | Store: x | negative strictlyNegative | | inline_assembly.c:9:23:9:23 | Uninitialized: definition of y | positive | -| inline_assembly.c:10:3:10:7 | Load: ... = ... | positive strictlyPositive | | inline_assembly.c:10:3:10:7 | Store: ... = ... | positive strictlyPositive | | inline_assembly.c:10:7:10:7 | Constant: (unsigned int)... | positive strictlyPositive | | inline_assembly.c:12:32:12:32 | Load: y | positive strictlyPositive | @@ -27,10 +26,8 @@ | minmax.c:18:37:18:37 | Load: x | positive strictlyPositive | | minmax.c:18:40:18:40 | Load: y | positive strictlyPositive | | minmax.c:18:43:18:43 | Load: z | positive strictlyPositive | -| minmax.c:20:2:24:3 | Load: ... = ... | positive | | minmax.c:20:2:24:3 | Store: ... = ... | positive | | minmax.c:20:6:24:3 | CopyValue: (statement expression) | positive | -| minmax.c:22:18:22:22 | Load: ... = ... | positive strictlyPositive | | minmax.c:22:18:22:22 | Store: ... = ... | positive strictlyPositive | | minmax.c:22:22:22:22 | Load: x | positive strictlyPositive | | minmax.c:23:3:23:3 | Load: t | positive | @@ -39,7 +36,6 @@ | minmax.c:26:40:26:40 | Load: y | positive strictlyPositive | | minmax.c:26:43:26:43 | Load: z | positive | | test.c:7:10:7:10 | Phi: p | positive | -| test.c:8:5:8:19 | Load: ... = ... | positive strictlyPositive | | test.c:8:5:8:19 | Store: ... = ... | positive strictlyPositive | | test.c:8:13:8:17 | Load: count | positive | | test.c:8:13:8:19 | Add: ... + ... | positive strictlyPositive | @@ -47,7 +43,6 @@ | test.c:10:10:10:14 | Load: count | positive | | test.c:10:10:10:14 | Store: count | positive | | test.c:15:10:15:10 | Phi: p | positive | -| test.c:16:5:16:26 | Load: ... = ... | positive | | test.c:16:5:16:26 | Store: ... = ... | positive | | test.c:16:13:16:26 | Rem: ... % ... | positive | | test.c:16:14:16:18 | Load: count | positive | @@ -61,7 +56,6 @@ | test.c:24:5:24:11 | Add: ... ++ | positive strictlyPositive | | test.c:24:5:24:11 | Constant: ... ++ | positive strictlyPositive | | test.c:24:5:24:11 | Store: ... ++ | positive strictlyPositive | -| test.c:25:5:25:22 | Load: ... = ... | positive | | test.c:25:5:25:22 | Store: ... = ... | positive | | test.c:25:13:25:17 | Load: count | positive strictlyPositive | | test.c:25:13:25:22 | Rem: ... % ... | positive | @@ -72,14 +66,12 @@ | test.c:33:15:33:15 | Phi: i | positive | | test.c:33:15:33:15 | Phi: i | positive | | test.c:33:19:33:19 | Constant: 2 | positive strictlyPositive | -| test.c:33:22:33:28 | Load: ... = ... | positive strictlyPositive | | test.c:33:22:33:28 | Store: ... = ... | positive strictlyPositive | | test.c:33:26:33:26 | Load: i | positive | | test.c:33:26:33:28 | Add: ... + ... | positive strictlyPositive | | test.c:33:28:33:28 | Constant: 1 | positive strictlyPositive | | test.c:34:5:34:9 | Load: total | positive | | test.c:34:5:34:14 | Add: ... += ... | positive | -| test.c:34:5:34:14 | Load: ... += ... | positive | | test.c:34:5:34:14 | Store: ... += ... | positive | | test.c:34:14:34:14 | Load: i | positive | | test.c:36:10:36:14 | Load: total | positive | @@ -96,7 +88,6 @@ | test.c:42:22:42:24 | Store: ... ++ | positive strictlyPositive | | test.c:43:5:43:9 | Load: total | positive | | test.c:43:5:43:14 | Add: ... += ... | positive | -| test.c:43:5:43:14 | Load: ... += ... | positive | | test.c:43:5:43:14 | Store: ... += ... | positive | | test.c:43:14:43:14 | Load: i | positive | | test.c:45:10:45:14 | Load: total | positive | @@ -109,14 +100,12 @@ | test.c:51:15:51:17 | Add: ... + ... | positive strictlyPositive | | test.c:51:17:51:17 | Constant: 2 | positive strictlyPositive | | test.c:51:21:51:21 | Constant: 4 | positive strictlyPositive | -| test.c:51:24:51:30 | Load: ... = ... | positive strictlyPositive | | test.c:51:24:51:30 | Store: ... = ... | positive strictlyPositive | | test.c:51:28:51:28 | Load: i | positive | | test.c:51:28:51:30 | Add: ... + ... | positive strictlyPositive | | test.c:51:30:51:30 | Constant: 1 | positive strictlyPositive | | test.c:52:5:52:9 | Load: total | positive | | test.c:52:5:52:14 | Add: ... += ... | positive | -| test.c:52:5:52:14 | Load: ... += ... | positive | | test.c:52:5:52:14 | Store: ... += ... | positive | | test.c:52:14:52:14 | Load: i | positive | | test.c:54:10:54:14 | Load: total | positive | @@ -163,7 +152,6 @@ | test.c:126:31:126:43 | Store: call to test12_helper | positive | | test.c:127:6:127:10 | Load: Start | positive | | test.c:127:6:127:24 | Add: ... += ... | positive strictlyPositive | -| test.c:127:6:127:24 | Load: ... += ... | positive strictlyPositive | | test.c:127:6:127:24 | Store: ... += ... | positive strictlyPositive | | test.c:127:15:127:20 | Load: Length | positive | | test.c:127:15:127:24 | Add: ... + ... | positive strictlyPositive | @@ -255,7 +243,6 @@ | test.c:201:13:201:15 | Store: ... * ... | positive strictlyPositive | | test.c:201:15:201:15 | Load: b | positive strictlyPositive | | test.c:202:5:202:14 | Add: ... += ... | positive strictlyPositive | -| test.c:202:5:202:14 | Load: ... += ... | positive strictlyPositive | | test.c:202:5:202:14 | Store: ... += ... | positive strictlyPositive | | test.c:202:14:202:14 | Load: r | positive strictlyPositive | | test.c:204:7:204:7 | Constant: 3 | positive strictlyPositive | @@ -270,7 +257,6 @@ | test.c:205:15:205:15 | Load: b | positive | | test.c:206:5:206:9 | Load: total | positive | | test.c:206:5:206:14 | Add: ... += ... | positive | -| test.c:206:5:206:14 | Load: ... += ... | positive | | test.c:206:5:206:14 | Store: ... += ... | positive | | test.c:206:14:206:14 | Load: r | positive | | test.c:208:7:208:7 | Constant: 3 | positive strictlyPositive | @@ -310,7 +296,6 @@ | test.c:229:13:229:15 | Store: ... * ... | positive | | test.c:229:15:229:15 | Load: b | positive strictlyPositive | | test.c:230:5:230:14 | Add: ... += ... | positive | -| test.c:230:5:230:14 | Load: ... += ... | positive | | test.c:230:5:230:14 | Store: ... += ... | positive | | test.c:230:14:230:14 | Load: r | positive | | test.c:232:7:232:7 | Phi: 0 | positive | @@ -324,7 +309,6 @@ | test.c:233:15:233:15 | Load: b | positive | | test.c:234:5:234:9 | Load: total | positive | | test.c:234:5:234:14 | Add: ... += ... | positive | -| test.c:234:5:234:14 | Load: ... += ... | positive | | test.c:234:5:234:14 | Store: ... += ... | positive | | test.c:234:14:234:14 | Load: r | positive | | test.c:236:7:236:7 | Phi: 0 | positive | @@ -384,7 +368,6 @@ | test.c:285:13:285:15 | Store: ... * ... | negative | | test.c:285:15:285:15 | Load: b | positive strictlyPositive | | test.c:286:5:286:14 | Add: ... += ... | negative | -| test.c:286:5:286:14 | Load: ... += ... | negative | | test.c:286:5:286:14 | Store: ... += ... | negative | | test.c:286:14:286:14 | Load: r | negative | | test.c:288:7:288:9 | Constant: - ... | negative strictlyNegative | @@ -397,7 +380,6 @@ | test.c:289:15:289:15 | Load: b | positive | | test.c:290:5:290:9 | Load: total | negative | | test.c:290:5:290:14 | Add: ... += ... | negative | -| test.c:290:5:290:14 | Load: ... += ... | negative | | test.c:290:5:290:14 | Store: ... += ... | negative | | test.c:290:14:290:14 | Load: r | negative | | test.c:292:7:292:9 | Constant: - ... | negative strictlyNegative | @@ -431,7 +413,6 @@ | test.c:313:13:313:15 | Store: ... * ... | negative strictlyNegative | | test.c:313:15:313:15 | Load: b | positive strictlyPositive | | test.c:314:5:314:14 | Add: ... += ... | negative strictlyNegative | -| test.c:314:5:314:14 | Load: ... += ... | negative strictlyNegative | | test.c:314:5:314:14 | Store: ... += ... | negative strictlyNegative | | test.c:314:14:314:14 | Load: r | negative strictlyNegative | | test.c:316:7:316:9 | Constant: - ... | negative strictlyNegative | @@ -445,7 +426,6 @@ | test.c:317:15:317:15 | Load: b | positive | | test.c:318:5:318:9 | Load: total | negative | | test.c:318:5:318:14 | Add: ... += ... | negative | -| test.c:318:5:318:14 | Load: ... += ... | negative | | test.c:318:5:318:14 | Store: ... += ... | negative | | test.c:318:14:318:14 | Load: r | negative | | test.c:320:7:320:9 | Constant: - ... | negative strictlyNegative | @@ -481,7 +461,6 @@ | test.c:343:5:343:7 | Add: ... ++ | positive strictlyPositive | | test.c:343:5:343:7 | Constant: ... ++ | positive strictlyPositive | | test.c:343:5:343:7 | Store: ... ++ | positive strictlyPositive | -| test.c:345:3:345:7 | Load: ... = ... | positive strictlyPositive | | test.c:345:3:345:7 | Store: ... = ... | positive strictlyPositive | | test.c:345:7:345:7 | Load: i | positive strictlyPositive | | test.c:346:7:346:7 | Load: x | positive | @@ -497,7 +476,6 @@ | test.c:356:36:356:37 | Uninitialized: definition of y6 | positive | | test.c:356:40:356:41 | Uninitialized: definition of y7 | positive | | test.c:356:44:356:45 | Uninitialized: definition of y8 | positive | -| test.c:357:3:357:23 | Load: ... = ... | positive | | test.c:357:3:357:23 | Store: ... = ... | positive | | test.c:357:8:357:8 | Load: x | positive | | test.c:357:8:357:23 | Load: ... ? ... : ... | positive | @@ -507,7 +485,6 @@ | test.c:357:12:357:14 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:357:18:357:18 | Load: x | positive | | test.c:357:22:357:23 | Constant: (unsigned int)... | positive strictlyPositive | -| test.c:358:3:358:24 | Load: ... = ... | positive | | test.c:358:3:358:24 | Store: ... = ... | positive | | test.c:358:8:358:8 | Load: x | positive | | test.c:358:8:358:24 | Load: ... ? ... : ... | positive | @@ -519,7 +496,6 @@ | test.c:358:24:358:24 | Load: x | positive | | test.c:365:7:365:7 | Load: x | positive | | test.c:365:11:365:13 | Constant: (unsigned int)... | positive strictlyPositive | -| test.c:366:5:366:15 | Load: ... = ... | positive | | test.c:366:5:366:15 | Store: ... = ... | positive | | test.c:366:10:366:10 | Load: x | positive | | test.c:366:10:366:15 | Load: ... ? ... : ... | positive | @@ -527,7 +503,6 @@ | test.c:366:10:366:15 | Store: ... ? ... : ... | positive | | test.c:366:10:366:15 | Store: ... ? ... : ... | positive strictlyPositive | | test.c:366:15:366:15 | Constant: (unsigned int)... | positive strictlyPositive | -| test.c:367:5:367:17 | Load: ... = ... | positive | | test.c:367:5:367:17 | Store: ... = ... | positive | | test.c:367:10:367:10 | Load: x | positive | | test.c:367:10:367:17 | Load: ... ? ... : ... | positive | @@ -535,7 +510,6 @@ | test.c:367:10:367:17 | Store: ... ? ... : ... | positive | | test.c:367:10:367:17 | Store: ... ? ... : ... | positive strictlyPositive | | test.c:367:15:367:17 | Constant: (unsigned int)... | positive strictlyPositive | -| test.c:368:5:368:21 | Load: ... = ... | positive strictlyPositive | | test.c:368:5:368:21 | Store: ... = ... | positive strictlyPositive | | test.c:368:10:368:21 | Load: ... ? ... : ... | positive strictlyPositive | | test.c:368:10:368:21 | Phi: ... ? ... : ... | positive strictlyPositive | @@ -545,7 +519,6 @@ | test.c:368:11:368:13 | Add: ... + ... | positive strictlyPositive | | test.c:368:13:368:13 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:368:19:368:21 | Constant: (unsigned int)... | positive strictlyPositive | -| test.c:369:5:369:36 | Load: ... = ... | positive | | test.c:369:5:369:36 | Store: ... = ... | positive | | test.c:369:10:369:36 | Convert: (unsigned int)... | positive | | test.c:369:10:369:36 | Load: ... ? ... : ... | positive | @@ -557,7 +530,6 @@ | test.c:369:27:369:29 | Add: ... + ... | positive strictlyPositive | | test.c:369:29:369:29 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:369:36:369:36 | Constant: 5 | positive strictlyPositive | -| test.c:370:5:370:38 | Load: ... = ... | positive | | test.c:370:5:370:38 | Store: ... = ... | positive | | test.c:370:10:370:38 | Convert: (unsigned int)... | positive | | test.c:370:10:370:38 | Load: ... ? ... : ... | positive | @@ -569,7 +541,6 @@ | test.c:370:27:370:29 | Add: ... + ... | positive strictlyPositive | | test.c:370:29:370:29 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:370:36:370:38 | Constant: 500 | positive strictlyPositive | -| test.c:371:5:371:39 | Load: ... = ... | positive | | test.c:371:5:371:39 | Store: ... = ... | positive | | test.c:371:10:371:39 | Convert: (unsigned int)... | positive | | test.c:371:10:371:39 | Load: ... ? ... : ... | positive | @@ -609,7 +580,6 @@ | test.c:378:24:378:25 | Uninitialized: definition of y3 | positive | | test.c:378:28:378:29 | Uninitialized: definition of y4 | positive | | test.c:378:32:378:33 | Uninitialized: definition of y5 | positive | -| test.c:379:3:379:24 | Load: ... = ... | positive strictlyPositive | | test.c:379:3:379:24 | Store: ... = ... | positive strictlyPositive | | test.c:379:8:379:8 | Load: x | positive | | test.c:379:8:379:24 | Load: ... ? ... : ... | positive strictlyPositive | @@ -619,7 +589,6 @@ | test.c:379:12:379:14 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:379:18:379:18 | Load: x | positive strictlyPositive | | test.c:379:22:379:24 | Constant: (unsigned int)... | positive strictlyPositive | -| test.c:380:3:380:25 | Load: ... = ... | positive strictlyPositive | | test.c:380:3:380:25 | Store: ... = ... | positive strictlyPositive | | test.c:380:8:380:8 | Load: x | positive | | test.c:380:8:380:25 | Load: ... ? ... : ... | positive strictlyPositive | @@ -629,18 +598,14 @@ | test.c:380:13:380:15 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:380:19:380:21 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:380:25:380:25 | Load: x | positive strictlyPositive | -| test.c:381:3:381:11 | Load: ... = ... | positive strictlyPositive | | test.c:381:3:381:11 | Store: ... = ... | positive strictlyPositive | | test.c:381:8:381:11 | Constant: (unsigned int)... | positive strictlyPositive | -| test.c:382:3:382:11 | Load: ... = ... | positive strictlyPositive | | test.c:382:3:382:11 | Store: ... = ... | positive strictlyPositive | | test.c:382:8:382:11 | Constant: (unsigned int)... | positive strictlyPositive | -| test.c:383:3:383:11 | Load: ... = ... | positive strictlyPositive | | test.c:383:3:383:11 | Store: ... = ... | positive strictlyPositive | | test.c:383:8:383:11 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:384:7:384:7 | Load: x | positive | | test.c:384:12:384:14 | Constant: (unsigned int)... | positive strictlyPositive | -| test.c:385:5:385:21 | Load: ... = ... | positive | | test.c:385:5:385:21 | Store: ... = ... | positive | | test.c:385:10:385:21 | Load: ... ? ... : ... | positive | | test.c:385:10:385:21 | Phi: ... ? ... : ... | positive | @@ -650,7 +615,6 @@ | test.c:385:11:385:15 | Sub: ... - ... | positive | | test.c:385:13:385:15 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:385:21:385:21 | Constant: (unsigned int)... | positive strictlyPositive | -| test.c:386:5:386:21 | Load: ... = ... | positive | | test.c:386:5:386:21 | Store: ... = ... | positive | | test.c:386:10:386:21 | Load: ... ? ... : ... | positive | | test.c:386:10:386:21 | Phi: ... ? ... : ... | positive | @@ -660,7 +624,6 @@ | test.c:386:11:386:15 | Sub: ... - ... | positive | | test.c:386:13:386:15 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:386:21:386:21 | Constant: (unsigned int)... | positive strictlyPositive | -| test.c:387:5:387:38 | Load: ... = ... | positive | | test.c:387:5:387:38 | Store: ... = ... | positive | | test.c:387:10:387:38 | Convert: (unsigned int)... | positive | | test.c:387:10:387:38 | Load: ... ? ... : ... | positive | @@ -697,16 +660,13 @@ | test.c:394:34:394:36 | Constant: (unsigned int)... | positive strictlyPositive | | test.c:395:16:395:17 | Uninitialized: definition of y1 | positive | | test.c:396:16:396:17 | Uninitialized: definition of y2 | positive | -| test.c:397:3:397:15 | Load: ... = ... | positive strictlyPositive | | test.c:397:3:397:15 | Store: ... = ... | positive strictlyPositive | | test.c:397:9:397:11 | Add: ++ ... | positive strictlyPositive | | test.c:397:9:397:11 | Constant: ++ ... | positive strictlyPositive | -| test.c:397:9:397:11 | Load: ++ ... | positive strictlyPositive | | test.c:397:9:397:11 | Store: ++ ... | positive strictlyPositive | | test.c:397:9:397:14 | CopyValue: ... , ... | positive strictlyPositive | | test.c:397:11:397:11 | Load: y | positive | | test.c:397:14:397:14 | Load: y | positive strictlyPositive | -| test.c:398:3:398:23 | Load: ... = ... | positive strictlyPositive | | test.c:398:3:398:23 | Store: ... = ... | positive strictlyPositive | | test.c:398:9:398:9 | Load: y | positive strictlyPositive | | test.c:398:9:398:11 | Add: ... ++ | positive strictlyPositive | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected index e676f1edc5c0..eadf03fca62c 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/dataflow-ir-consistency.expected @@ -15,9 +15,7 @@ localCallNodes postIsNotPre postHasUniquePre uniquePostUpdate -| example.c:24:2:24:7 | coords indirection | Node has multiple PostUpdateNodes. | | example.c:24:13:24:18 | coords indirection | Node has multiple PostUpdateNodes. | -| example.c:26:2:26:7 | coords indirection | Node has multiple PostUpdateNodes. | postIsInSameCallable reverseRead argHasPostUpdate diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 808ffef6d889..bb719e53918d 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -266,7 +266,7 @@ complex.c: # 3| getStmt(1): [ExprStmt] ExprStmt # 3| getExpr(): [AssignExpr] ... = ... # 3| Type = [ArithmeticType] _Complex float -# 3| ValueCategory = prvalue(load) +# 3| ValueCategory = prvalue # 3| getLValue(): [VariableAccess] cf # 3| Type = [ArithmeticType] _Complex float # 3| ValueCategory = lvalue @@ -293,7 +293,7 @@ complex.c: # 5| getStmt(3): [ExprStmt] ExprStmt # 5| getExpr(): [AssignExpr] ... = ... # 5| Type = [ArithmeticType] _Complex double -# 5| ValueCategory = prvalue(load) +# 5| ValueCategory = prvalue # 5| getLValue(): [VariableAccess] cd # 5| Type = [ArithmeticType] _Complex double # 5| ValueCategory = lvalue @@ -320,7 +320,7 @@ complex.c: # 7| getStmt(5): [ExprStmt] ExprStmt # 7| getExpr(): [AssignExpr] ... = ... # 7| Type = [ArithmeticType] _Complex long double -# 7| ValueCategory = prvalue(load) +# 7| ValueCategory = prvalue # 7| getLValue(): [VariableAccess] cld # 7| Type = [ArithmeticType] _Complex long double # 7| ValueCategory = lvalue @@ -446,7 +446,7 @@ complex.c: # 26| getStmt(9): [ExprStmt] ExprStmt # 26| getExpr(): [AssignExpr] ... = ... # 26| Type = [ArithmeticType] _Complex float -# 26| ValueCategory = prvalue(load) +# 26| ValueCategory = prvalue # 26| getLValue(): [VariableAccess] cf3 # 26| Type = [ArithmeticType] _Complex float # 26| ValueCategory = lvalue @@ -459,7 +459,7 @@ complex.c: # 27| getStmt(10): [ExprStmt] ExprStmt # 27| getExpr(): [AssignExpr] ... = ... # 27| Type = [ArithmeticType] _Complex float -# 27| ValueCategory = prvalue(load) +# 27| ValueCategory = prvalue # 27| getLValue(): [VariableAccess] cf3 # 27| Type = [ArithmeticType] _Complex float # 27| ValueCategory = lvalue @@ -472,7 +472,7 @@ complex.c: # 30| getStmt(11): [ExprStmt] ExprStmt # 30| getExpr(): [AssignExpr] ... = ... # 30| Type = [ArithmeticType] _Complex float -# 30| ValueCategory = prvalue(load) +# 30| ValueCategory = prvalue # 30| getLValue(): [VariableAccess] cf3 # 30| Type = [ArithmeticType] _Complex float # 30| ValueCategory = lvalue @@ -488,7 +488,7 @@ complex.c: # 31| getStmt(12): [ExprStmt] ExprStmt # 31| getExpr(): [AssignExpr] ... = ... # 31| Type = [ArithmeticType] _Complex float -# 31| ValueCategory = prvalue(load) +# 31| ValueCategory = prvalue # 31| getLValue(): [VariableAccess] cf3 # 31| Type = [ArithmeticType] _Complex float # 31| ValueCategory = lvalue @@ -504,7 +504,7 @@ complex.c: # 32| getStmt(13): [ExprStmt] ExprStmt # 32| getExpr(): [AssignExpr] ... = ... # 32| Type = [ArithmeticType] _Complex float -# 32| ValueCategory = prvalue(load) +# 32| ValueCategory = prvalue # 32| getLValue(): [VariableAccess] cf3 # 32| Type = [ArithmeticType] _Complex float # 32| ValueCategory = lvalue @@ -520,7 +520,7 @@ complex.c: # 33| getStmt(14): [ExprStmt] ExprStmt # 33| getExpr(): [AssignExpr] ... = ... # 33| Type = [ArithmeticType] _Complex float -# 33| ValueCategory = prvalue(load) +# 33| ValueCategory = prvalue # 33| getLValue(): [VariableAccess] cf3 # 33| Type = [ArithmeticType] _Complex float # 33| ValueCategory = lvalue @@ -536,7 +536,7 @@ complex.c: # 36| getStmt(15): [ExprStmt] ExprStmt # 36| getExpr(): [AssignExpr] ... = ... # 36| Type = [ArithmeticType] _Imaginary float -# 36| ValueCategory = prvalue(load) +# 36| ValueCategory = prvalue # 36| getLValue(): [VariableAccess] jf3 # 36| Type = [ArithmeticType] _Imaginary float # 36| ValueCategory = lvalue @@ -549,7 +549,7 @@ complex.c: # 37| getStmt(16): [ExprStmt] ExprStmt # 37| getExpr(): [AssignExpr] ... = ... # 37| Type = [ArithmeticType] _Imaginary float -# 37| ValueCategory = prvalue(load) +# 37| ValueCategory = prvalue # 37| getLValue(): [VariableAccess] jf3 # 37| Type = [ArithmeticType] _Imaginary float # 37| ValueCategory = lvalue @@ -562,7 +562,7 @@ complex.c: # 40| getStmt(17): [ExprStmt] ExprStmt # 40| getExpr(): [AssignExpr] ... = ... # 40| Type = [ArithmeticType] _Imaginary float -# 40| ValueCategory = prvalue(load) +# 40| ValueCategory = prvalue # 40| getLValue(): [VariableAccess] jf3 # 40| Type = [ArithmeticType] _Imaginary float # 40| ValueCategory = lvalue @@ -578,7 +578,7 @@ complex.c: # 41| getStmt(18): [ExprStmt] ExprStmt # 41| getExpr(): [AssignExpr] ... = ... # 41| Type = [ArithmeticType] _Imaginary float -# 41| ValueCategory = prvalue(load) +# 41| ValueCategory = prvalue # 41| getLValue(): [VariableAccess] jf3 # 41| Type = [ArithmeticType] _Imaginary float # 41| ValueCategory = lvalue @@ -594,7 +594,7 @@ complex.c: # 42| getStmt(19): [ExprStmt] ExprStmt # 42| getExpr(): [AssignExpr] ... = ... # 42| Type = [FloatType] float -# 42| ValueCategory = prvalue(load) +# 42| ValueCategory = prvalue # 42| getLValue(): [VariableAccess] f3 # 42| Type = [FloatType] float # 42| ValueCategory = lvalue @@ -610,7 +610,7 @@ complex.c: # 43| getStmt(20): [ExprStmt] ExprStmt # 43| getExpr(): [AssignExpr] ... = ... # 43| Type = [FloatType] float -# 43| ValueCategory = prvalue(load) +# 43| ValueCategory = prvalue # 43| getLValue(): [VariableAccess] f3 # 43| Type = [FloatType] float # 43| ValueCategory = lvalue @@ -626,7 +626,7 @@ complex.c: # 46| getStmt(21): [ExprStmt] ExprStmt # 46| getExpr(): [AssignExpr] ... = ... # 46| Type = [ArithmeticType] _Complex float -# 46| ValueCategory = prvalue(load) +# 46| ValueCategory = prvalue # 46| getLValue(): [VariableAccess] cf3 # 46| Type = [ArithmeticType] _Complex float # 46| ValueCategory = lvalue @@ -642,7 +642,7 @@ complex.c: # 47| getStmt(22): [ExprStmt] ExprStmt # 47| getExpr(): [AssignExpr] ... = ... # 47| Type = [ArithmeticType] _Complex float -# 47| ValueCategory = prvalue(load) +# 47| ValueCategory = prvalue # 47| getLValue(): [VariableAccess] cf3 # 47| Type = [ArithmeticType] _Complex float # 47| ValueCategory = lvalue @@ -658,7 +658,7 @@ complex.c: # 48| getStmt(23): [ExprStmt] ExprStmt # 48| getExpr(): [AssignExpr] ... = ... # 48| Type = [ArithmeticType] _Imaginary float -# 48| ValueCategory = prvalue(load) +# 48| ValueCategory = prvalue # 48| getLValue(): [VariableAccess] jf3 # 48| Type = [ArithmeticType] _Imaginary float # 48| ValueCategory = lvalue @@ -674,7 +674,7 @@ complex.c: # 49| getStmt(24): [ExprStmt] ExprStmt # 49| getExpr(): [AssignExpr] ... = ... # 49| Type = [ArithmeticType] _Imaginary float -# 49| ValueCategory = prvalue(load) +# 49| ValueCategory = prvalue # 49| getLValue(): [VariableAccess] jf3 # 49| Type = [ArithmeticType] _Imaginary float # 49| ValueCategory = lvalue @@ -690,7 +690,7 @@ complex.c: # 52| getStmt(25): [ExprStmt] ExprStmt # 52| getExpr(): [AssignExpr] ... = ... # 52| Type = [ArithmeticType] _Complex float -# 52| ValueCategory = prvalue(load) +# 52| ValueCategory = prvalue # 52| getLValue(): [VariableAccess] cf3 # 52| Type = [ArithmeticType] _Complex float # 52| ValueCategory = lvalue @@ -706,7 +706,7 @@ complex.c: # 53| getStmt(26): [ExprStmt] ExprStmt # 53| getExpr(): [AssignExpr] ... = ... # 53| Type = [ArithmeticType] _Complex float -# 53| ValueCategory = prvalue(load) +# 53| ValueCategory = prvalue # 53| getLValue(): [VariableAccess] cf3 # 53| Type = [ArithmeticType] _Complex float # 53| ValueCategory = lvalue @@ -722,7 +722,7 @@ complex.c: # 54| getStmt(27): [ExprStmt] ExprStmt # 54| getExpr(): [AssignExpr] ... = ... # 54| Type = [ArithmeticType] _Imaginary float -# 54| ValueCategory = prvalue(load) +# 54| ValueCategory = prvalue # 54| getLValue(): [VariableAccess] jf3 # 54| Type = [ArithmeticType] _Imaginary float # 54| ValueCategory = lvalue @@ -738,7 +738,7 @@ complex.c: # 55| getStmt(28): [ExprStmt] ExprStmt # 55| getExpr(): [AssignExpr] ... = ... # 55| Type = [ArithmeticType] _Imaginary float -# 55| ValueCategory = prvalue(load) +# 55| ValueCategory = prvalue # 55| getLValue(): [VariableAccess] jf3 # 55| Type = [ArithmeticType] _Imaginary float # 55| ValueCategory = lvalue @@ -860,7 +860,7 @@ complex.c: # 70| getStmt(9): [ExprStmt] ExprStmt # 70| getExpr(): [AssignExpr] ... = ... # 70| Type = [ArithmeticType] _Complex float -# 70| ValueCategory = prvalue(load) +# 70| ValueCategory = prvalue # 70| getLValue(): [VariableAccess] cf # 70| Type = [ArithmeticType] _Complex float # 70| ValueCategory = lvalue @@ -870,7 +870,7 @@ complex.c: # 71| getStmt(10): [ExprStmt] ExprStmt # 71| getExpr(): [AssignExpr] ... = ... # 71| Type = [ArithmeticType] _Complex float -# 71| ValueCategory = prvalue(load) +# 71| ValueCategory = prvalue # 71| getLValue(): [VariableAccess] cf # 71| Type = [ArithmeticType] _Complex float # 71| ValueCategory = lvalue @@ -884,7 +884,7 @@ complex.c: # 72| getStmt(11): [ExprStmt] ExprStmt # 72| getExpr(): [AssignExpr] ... = ... # 72| Type = [ArithmeticType] _Complex float -# 72| ValueCategory = prvalue(load) +# 72| ValueCategory = prvalue # 72| getLValue(): [VariableAccess] cf # 72| Type = [ArithmeticType] _Complex float # 72| ValueCategory = lvalue @@ -898,7 +898,7 @@ complex.c: # 73| getStmt(12): [ExprStmt] ExprStmt # 73| getExpr(): [AssignExpr] ... = ... # 73| Type = [ArithmeticType] _Complex double -# 73| ValueCategory = prvalue(load) +# 73| ValueCategory = prvalue # 73| getLValue(): [VariableAccess] cd # 73| Type = [ArithmeticType] _Complex double # 73| ValueCategory = lvalue @@ -912,7 +912,7 @@ complex.c: # 74| getStmt(13): [ExprStmt] ExprStmt # 74| getExpr(): [AssignExpr] ... = ... # 74| Type = [ArithmeticType] _Complex double -# 74| ValueCategory = prvalue(load) +# 74| ValueCategory = prvalue # 74| getLValue(): [VariableAccess] cd # 74| Type = [ArithmeticType] _Complex double # 74| ValueCategory = lvalue @@ -922,7 +922,7 @@ complex.c: # 75| getStmt(14): [ExprStmt] ExprStmt # 75| getExpr(): [AssignExpr] ... = ... # 75| Type = [ArithmeticType] _Complex double -# 75| ValueCategory = prvalue(load) +# 75| ValueCategory = prvalue # 75| getLValue(): [VariableAccess] cd # 75| Type = [ArithmeticType] _Complex double # 75| ValueCategory = lvalue @@ -936,7 +936,7 @@ complex.c: # 76| getStmt(15): [ExprStmt] ExprStmt # 76| getExpr(): [AssignExpr] ... = ... # 76| Type = [ArithmeticType] _Complex long double -# 76| ValueCategory = prvalue(load) +# 76| ValueCategory = prvalue # 76| getLValue(): [VariableAccess] cld # 76| Type = [ArithmeticType] _Complex long double # 76| ValueCategory = lvalue @@ -950,7 +950,7 @@ complex.c: # 77| getStmt(16): [ExprStmt] ExprStmt # 77| getExpr(): [AssignExpr] ... = ... # 77| Type = [ArithmeticType] _Complex long double -# 77| ValueCategory = prvalue(load) +# 77| ValueCategory = prvalue # 77| getLValue(): [VariableAccess] cld # 77| Type = [ArithmeticType] _Complex long double # 77| ValueCategory = lvalue @@ -964,7 +964,7 @@ complex.c: # 78| getStmt(17): [ExprStmt] ExprStmt # 78| getExpr(): [AssignExpr] ... = ... # 78| Type = [ArithmeticType] _Complex long double -# 78| ValueCategory = prvalue(load) +# 78| ValueCategory = prvalue # 78| getLValue(): [VariableAccess] cld # 78| Type = [ArithmeticType] _Complex long double # 78| ValueCategory = lvalue @@ -974,7 +974,7 @@ complex.c: # 81| getStmt(18): [ExprStmt] ExprStmt # 81| getExpr(): [AssignExpr] ... = ... # 81| Type = [ArithmeticType] _Complex float -# 81| ValueCategory = prvalue(load) +# 81| ValueCategory = prvalue # 81| getLValue(): [VariableAccess] cf # 81| Type = [ArithmeticType] _Complex float # 81| ValueCategory = lvalue @@ -988,7 +988,7 @@ complex.c: # 82| getStmt(19): [ExprStmt] ExprStmt # 82| getExpr(): [AssignExpr] ... = ... # 82| Type = [ArithmeticType] _Complex float -# 82| ValueCategory = prvalue(load) +# 82| ValueCategory = prvalue # 82| getLValue(): [VariableAccess] cf # 82| Type = [ArithmeticType] _Complex float # 82| ValueCategory = lvalue @@ -1002,7 +1002,7 @@ complex.c: # 83| getStmt(20): [ExprStmt] ExprStmt # 83| getExpr(): [AssignExpr] ... = ... # 83| Type = [ArithmeticType] _Complex float -# 83| ValueCategory = prvalue(load) +# 83| ValueCategory = prvalue # 83| getLValue(): [VariableAccess] cf # 83| Type = [ArithmeticType] _Complex float # 83| ValueCategory = lvalue @@ -1016,7 +1016,7 @@ complex.c: # 84| getStmt(21): [ExprStmt] ExprStmt # 84| getExpr(): [AssignExpr] ... = ... # 84| Type = [ArithmeticType] _Complex double -# 84| ValueCategory = prvalue(load) +# 84| ValueCategory = prvalue # 84| getLValue(): [VariableAccess] cd # 84| Type = [ArithmeticType] _Complex double # 84| ValueCategory = lvalue @@ -1030,7 +1030,7 @@ complex.c: # 85| getStmt(22): [ExprStmt] ExprStmt # 85| getExpr(): [AssignExpr] ... = ... # 85| Type = [ArithmeticType] _Complex double -# 85| ValueCategory = prvalue(load) +# 85| ValueCategory = prvalue # 85| getLValue(): [VariableAccess] cd # 85| Type = [ArithmeticType] _Complex double # 85| ValueCategory = lvalue @@ -1044,7 +1044,7 @@ complex.c: # 86| getStmt(23): [ExprStmt] ExprStmt # 86| getExpr(): [AssignExpr] ... = ... # 86| Type = [ArithmeticType] _Complex double -# 86| ValueCategory = prvalue(load) +# 86| ValueCategory = prvalue # 86| getLValue(): [VariableAccess] cd # 86| Type = [ArithmeticType] _Complex double # 86| ValueCategory = lvalue @@ -1058,7 +1058,7 @@ complex.c: # 87| getStmt(24): [ExprStmt] ExprStmt # 87| getExpr(): [AssignExpr] ... = ... # 87| Type = [ArithmeticType] _Complex long double -# 87| ValueCategory = prvalue(load) +# 87| ValueCategory = prvalue # 87| getLValue(): [VariableAccess] cld # 87| Type = [ArithmeticType] _Complex long double # 87| ValueCategory = lvalue @@ -1072,7 +1072,7 @@ complex.c: # 88| getStmt(25): [ExprStmt] ExprStmt # 88| getExpr(): [AssignExpr] ... = ... # 88| Type = [ArithmeticType] _Complex long double -# 88| ValueCategory = prvalue(load) +# 88| ValueCategory = prvalue # 88| getLValue(): [VariableAccess] cld # 88| Type = [ArithmeticType] _Complex long double # 88| ValueCategory = lvalue @@ -1086,7 +1086,7 @@ complex.c: # 89| getStmt(26): [ExprStmt] ExprStmt # 89| getExpr(): [AssignExpr] ... = ... # 89| Type = [ArithmeticType] _Complex long double -# 89| ValueCategory = prvalue(load) +# 89| ValueCategory = prvalue # 89| getLValue(): [VariableAccess] cld # 89| Type = [ArithmeticType] _Complex long double # 89| ValueCategory = lvalue @@ -1100,7 +1100,7 @@ complex.c: # 92| getStmt(27): [ExprStmt] ExprStmt # 92| getExpr(): [AssignExpr] ... = ... # 92| Type = [FloatType] float -# 92| ValueCategory = prvalue(load) +# 92| ValueCategory = prvalue # 92| getLValue(): [VariableAccess] f # 92| Type = [FloatType] float # 92| ValueCategory = lvalue @@ -1114,7 +1114,7 @@ complex.c: # 93| getStmt(28): [ExprStmt] ExprStmt # 93| getExpr(): [AssignExpr] ... = ... # 93| Type = [FloatType] float -# 93| ValueCategory = prvalue(load) +# 93| ValueCategory = prvalue # 93| getLValue(): [VariableAccess] f # 93| Type = [FloatType] float # 93| ValueCategory = lvalue @@ -1128,7 +1128,7 @@ complex.c: # 94| getStmt(29): [ExprStmt] ExprStmt # 94| getExpr(): [AssignExpr] ... = ... # 94| Type = [FloatType] float -# 94| ValueCategory = prvalue(load) +# 94| ValueCategory = prvalue # 94| getLValue(): [VariableAccess] f # 94| Type = [FloatType] float # 94| ValueCategory = lvalue @@ -1142,7 +1142,7 @@ complex.c: # 95| getStmt(30): [ExprStmt] ExprStmt # 95| getExpr(): [AssignExpr] ... = ... # 95| Type = [DoubleType] double -# 95| ValueCategory = prvalue(load) +# 95| ValueCategory = prvalue # 95| getLValue(): [VariableAccess] d # 95| Type = [DoubleType] double # 95| ValueCategory = lvalue @@ -1156,7 +1156,7 @@ complex.c: # 96| getStmt(31): [ExprStmt] ExprStmt # 96| getExpr(): [AssignExpr] ... = ... # 96| Type = [DoubleType] double -# 96| ValueCategory = prvalue(load) +# 96| ValueCategory = prvalue # 96| getLValue(): [VariableAccess] d # 96| Type = [DoubleType] double # 96| ValueCategory = lvalue @@ -1170,7 +1170,7 @@ complex.c: # 97| getStmt(32): [ExprStmt] ExprStmt # 97| getExpr(): [AssignExpr] ... = ... # 97| Type = [DoubleType] double -# 97| ValueCategory = prvalue(load) +# 97| ValueCategory = prvalue # 97| getLValue(): [VariableAccess] d # 97| Type = [DoubleType] double # 97| ValueCategory = lvalue @@ -1184,7 +1184,7 @@ complex.c: # 98| getStmt(33): [ExprStmt] ExprStmt # 98| getExpr(): [AssignExpr] ... = ... # 98| Type = [LongDoubleType] long double -# 98| ValueCategory = prvalue(load) +# 98| ValueCategory = prvalue # 98| getLValue(): [VariableAccess] ld # 98| Type = [LongDoubleType] long double # 98| ValueCategory = lvalue @@ -1198,7 +1198,7 @@ complex.c: # 99| getStmt(34): [ExprStmt] ExprStmt # 99| getExpr(): [AssignExpr] ... = ... # 99| Type = [LongDoubleType] long double -# 99| ValueCategory = prvalue(load) +# 99| ValueCategory = prvalue # 99| getLValue(): [VariableAccess] ld # 99| Type = [LongDoubleType] long double # 99| ValueCategory = lvalue @@ -1212,7 +1212,7 @@ complex.c: # 100| getStmt(35): [ExprStmt] ExprStmt # 100| getExpr(): [AssignExpr] ... = ... # 100| Type = [LongDoubleType] long double -# 100| ValueCategory = prvalue(load) +# 100| ValueCategory = prvalue # 100| getLValue(): [VariableAccess] ld # 100| Type = [LongDoubleType] long double # 100| ValueCategory = lvalue @@ -1226,7 +1226,7 @@ complex.c: # 103| getStmt(36): [ExprStmt] ExprStmt # 103| getExpr(): [AssignExpr] ... = ... # 103| Type = [ArithmeticType] _Complex float -# 103| ValueCategory = prvalue(load) +# 103| ValueCategory = prvalue # 103| getLValue(): [VariableAccess] cf # 103| Type = [ArithmeticType] _Complex float # 103| ValueCategory = lvalue @@ -1240,7 +1240,7 @@ complex.c: # 104| getStmt(37): [ExprStmt] ExprStmt # 104| getExpr(): [AssignExpr] ... = ... # 104| Type = [ArithmeticType] _Complex float -# 104| ValueCategory = prvalue(load) +# 104| ValueCategory = prvalue # 104| getLValue(): [VariableAccess] cf # 104| Type = [ArithmeticType] _Complex float # 104| ValueCategory = lvalue @@ -1254,7 +1254,7 @@ complex.c: # 105| getStmt(38): [ExprStmt] ExprStmt # 105| getExpr(): [AssignExpr] ... = ... # 105| Type = [ArithmeticType] _Complex float -# 105| ValueCategory = prvalue(load) +# 105| ValueCategory = prvalue # 105| getLValue(): [VariableAccess] cf # 105| Type = [ArithmeticType] _Complex float # 105| ValueCategory = lvalue @@ -1268,7 +1268,7 @@ complex.c: # 106| getStmt(39): [ExprStmt] ExprStmt # 106| getExpr(): [AssignExpr] ... = ... # 106| Type = [ArithmeticType] _Complex double -# 106| ValueCategory = prvalue(load) +# 106| ValueCategory = prvalue # 106| getLValue(): [VariableAccess] cd # 106| Type = [ArithmeticType] _Complex double # 106| ValueCategory = lvalue @@ -1282,7 +1282,7 @@ complex.c: # 107| getStmt(40): [ExprStmt] ExprStmt # 107| getExpr(): [AssignExpr] ... = ... # 107| Type = [ArithmeticType] _Complex double -# 107| ValueCategory = prvalue(load) +# 107| ValueCategory = prvalue # 107| getLValue(): [VariableAccess] cd # 107| Type = [ArithmeticType] _Complex double # 107| ValueCategory = lvalue @@ -1296,7 +1296,7 @@ complex.c: # 108| getStmt(41): [ExprStmt] ExprStmt # 108| getExpr(): [AssignExpr] ... = ... # 108| Type = [ArithmeticType] _Complex double -# 108| ValueCategory = prvalue(load) +# 108| ValueCategory = prvalue # 108| getLValue(): [VariableAccess] cd # 108| Type = [ArithmeticType] _Complex double # 108| ValueCategory = lvalue @@ -1310,7 +1310,7 @@ complex.c: # 109| getStmt(42): [ExprStmt] ExprStmt # 109| getExpr(): [AssignExpr] ... = ... # 109| Type = [ArithmeticType] _Complex long double -# 109| ValueCategory = prvalue(load) +# 109| ValueCategory = prvalue # 109| getLValue(): [VariableAccess] cld # 109| Type = [ArithmeticType] _Complex long double # 109| ValueCategory = lvalue @@ -1324,7 +1324,7 @@ complex.c: # 110| getStmt(43): [ExprStmt] ExprStmt # 110| getExpr(): [AssignExpr] ... = ... # 110| Type = [ArithmeticType] _Complex long double -# 110| ValueCategory = prvalue(load) +# 110| ValueCategory = prvalue # 110| getLValue(): [VariableAccess] cld # 110| Type = [ArithmeticType] _Complex long double # 110| ValueCategory = lvalue @@ -1338,7 +1338,7 @@ complex.c: # 111| getStmt(44): [ExprStmt] ExprStmt # 111| getExpr(): [AssignExpr] ... = ... # 111| Type = [ArithmeticType] _Complex long double -# 111| ValueCategory = prvalue(load) +# 111| ValueCategory = prvalue # 111| getLValue(): [VariableAccess] cld # 111| Type = [ArithmeticType] _Complex long double # 111| ValueCategory = lvalue @@ -1352,7 +1352,7 @@ complex.c: # 114| getStmt(45): [ExprStmt] ExprStmt # 114| getExpr(): [AssignExpr] ... = ... # 114| Type = [ArithmeticType] _Imaginary float -# 114| ValueCategory = prvalue(load) +# 114| ValueCategory = prvalue # 114| getLValue(): [VariableAccess] jf # 114| Type = [ArithmeticType] _Imaginary float # 114| ValueCategory = lvalue @@ -1366,7 +1366,7 @@ complex.c: # 115| getStmt(46): [ExprStmt] ExprStmt # 115| getExpr(): [AssignExpr] ... = ... # 115| Type = [ArithmeticType] _Imaginary float -# 115| ValueCategory = prvalue(load) +# 115| ValueCategory = prvalue # 115| getLValue(): [VariableAccess] jf # 115| Type = [ArithmeticType] _Imaginary float # 115| ValueCategory = lvalue @@ -1380,7 +1380,7 @@ complex.c: # 116| getStmt(47): [ExprStmt] ExprStmt # 116| getExpr(): [AssignExpr] ... = ... # 116| Type = [ArithmeticType] _Imaginary float -# 116| ValueCategory = prvalue(load) +# 116| ValueCategory = prvalue # 116| getLValue(): [VariableAccess] jf # 116| Type = [ArithmeticType] _Imaginary float # 116| ValueCategory = lvalue @@ -1394,7 +1394,7 @@ complex.c: # 117| getStmt(48): [ExprStmt] ExprStmt # 117| getExpr(): [AssignExpr] ... = ... # 117| Type = [ArithmeticType] _Imaginary double -# 117| ValueCategory = prvalue(load) +# 117| ValueCategory = prvalue # 117| getLValue(): [VariableAccess] jd # 117| Type = [ArithmeticType] _Imaginary double # 117| ValueCategory = lvalue @@ -1408,7 +1408,7 @@ complex.c: # 118| getStmt(49): [ExprStmt] ExprStmt # 118| getExpr(): [AssignExpr] ... = ... # 118| Type = [ArithmeticType] _Imaginary double -# 118| ValueCategory = prvalue(load) +# 118| ValueCategory = prvalue # 118| getLValue(): [VariableAccess] jd # 118| Type = [ArithmeticType] _Imaginary double # 118| ValueCategory = lvalue @@ -1422,7 +1422,7 @@ complex.c: # 119| getStmt(50): [ExprStmt] ExprStmt # 119| getExpr(): [AssignExpr] ... = ... # 119| Type = [ArithmeticType] _Imaginary double -# 119| ValueCategory = prvalue(load) +# 119| ValueCategory = prvalue # 119| getLValue(): [VariableAccess] jd # 119| Type = [ArithmeticType] _Imaginary double # 119| ValueCategory = lvalue @@ -1436,7 +1436,7 @@ complex.c: # 120| getStmt(51): [ExprStmt] ExprStmt # 120| getExpr(): [AssignExpr] ... = ... # 120| Type = [ArithmeticType] _Imaginary long double -# 120| ValueCategory = prvalue(load) +# 120| ValueCategory = prvalue # 120| getLValue(): [VariableAccess] jld # 120| Type = [ArithmeticType] _Imaginary long double # 120| ValueCategory = lvalue @@ -1450,7 +1450,7 @@ complex.c: # 121| getStmt(52): [ExprStmt] ExprStmt # 121| getExpr(): [AssignExpr] ... = ... # 121| Type = [ArithmeticType] _Imaginary long double -# 121| ValueCategory = prvalue(load) +# 121| ValueCategory = prvalue # 121| getLValue(): [VariableAccess] jld # 121| Type = [ArithmeticType] _Imaginary long double # 121| ValueCategory = lvalue @@ -1464,7 +1464,7 @@ complex.c: # 122| getStmt(53): [ExprStmt] ExprStmt # 122| getExpr(): [AssignExpr] ... = ... # 122| Type = [ArithmeticType] _Imaginary long double -# 122| ValueCategory = prvalue(load) +# 122| ValueCategory = prvalue # 122| getLValue(): [VariableAccess] jld # 122| Type = [ArithmeticType] _Imaginary long double # 122| ValueCategory = lvalue @@ -1478,7 +1478,7 @@ complex.c: # 125| getStmt(54): [ExprStmt] ExprStmt # 125| getExpr(): [AssignExpr] ... = ... # 125| Type = [ArithmeticType] _Imaginary float -# 125| ValueCategory = prvalue(load) +# 125| ValueCategory = prvalue # 125| getLValue(): [VariableAccess] jf # 125| Type = [ArithmeticType] _Imaginary float # 125| ValueCategory = lvalue @@ -1492,7 +1492,7 @@ complex.c: # 126| getStmt(55): [ExprStmt] ExprStmt # 126| getExpr(): [AssignExpr] ... = ... # 126| Type = [ArithmeticType] _Imaginary float -# 126| ValueCategory = prvalue(load) +# 126| ValueCategory = prvalue # 126| getLValue(): [VariableAccess] jf # 126| Type = [ArithmeticType] _Imaginary float # 126| ValueCategory = lvalue @@ -1506,7 +1506,7 @@ complex.c: # 127| getStmt(56): [ExprStmt] ExprStmt # 127| getExpr(): [AssignExpr] ... = ... # 127| Type = [ArithmeticType] _Imaginary float -# 127| ValueCategory = prvalue(load) +# 127| ValueCategory = prvalue # 127| getLValue(): [VariableAccess] jf # 127| Type = [ArithmeticType] _Imaginary float # 127| ValueCategory = lvalue @@ -1520,7 +1520,7 @@ complex.c: # 128| getStmt(57): [ExprStmt] ExprStmt # 128| getExpr(): [AssignExpr] ... = ... # 128| Type = [ArithmeticType] _Imaginary double -# 128| ValueCategory = prvalue(load) +# 128| ValueCategory = prvalue # 128| getLValue(): [VariableAccess] jd # 128| Type = [ArithmeticType] _Imaginary double # 128| ValueCategory = lvalue @@ -1534,7 +1534,7 @@ complex.c: # 129| getStmt(58): [ExprStmt] ExprStmt # 129| getExpr(): [AssignExpr] ... = ... # 129| Type = [ArithmeticType] _Imaginary double -# 129| ValueCategory = prvalue(load) +# 129| ValueCategory = prvalue # 129| getLValue(): [VariableAccess] jd # 129| Type = [ArithmeticType] _Imaginary double # 129| ValueCategory = lvalue @@ -1548,7 +1548,7 @@ complex.c: # 130| getStmt(59): [ExprStmt] ExprStmt # 130| getExpr(): [AssignExpr] ... = ... # 130| Type = [ArithmeticType] _Imaginary double -# 130| ValueCategory = prvalue(load) +# 130| ValueCategory = prvalue # 130| getLValue(): [VariableAccess] jd # 130| Type = [ArithmeticType] _Imaginary double # 130| ValueCategory = lvalue @@ -1562,7 +1562,7 @@ complex.c: # 131| getStmt(60): [ExprStmt] ExprStmt # 131| getExpr(): [AssignExpr] ... = ... # 131| Type = [ArithmeticType] _Imaginary long double -# 131| ValueCategory = prvalue(load) +# 131| ValueCategory = prvalue # 131| getLValue(): [VariableAccess] jld # 131| Type = [ArithmeticType] _Imaginary long double # 131| ValueCategory = lvalue @@ -1576,7 +1576,7 @@ complex.c: # 132| getStmt(61): [ExprStmt] ExprStmt # 132| getExpr(): [AssignExpr] ... = ... # 132| Type = [ArithmeticType] _Imaginary long double -# 132| ValueCategory = prvalue(load) +# 132| ValueCategory = prvalue # 132| getLValue(): [VariableAccess] jld # 132| Type = [ArithmeticType] _Imaginary long double # 132| ValueCategory = lvalue @@ -1590,7 +1590,7 @@ complex.c: # 133| getStmt(62): [ExprStmt] ExprStmt # 133| getExpr(): [AssignExpr] ... = ... # 133| Type = [ArithmeticType] _Imaginary long double -# 133| ValueCategory = prvalue(load) +# 133| ValueCategory = prvalue # 133| getLValue(): [VariableAccess] jld # 133| Type = [ArithmeticType] _Imaginary long double # 133| ValueCategory = lvalue @@ -1604,7 +1604,7 @@ complex.c: # 136| getStmt(63): [ExprStmt] ExprStmt # 136| getExpr(): [AssignExpr] ... = ... # 136| Type = [FloatType] float -# 136| ValueCategory = prvalue(load) +# 136| ValueCategory = prvalue # 136| getLValue(): [VariableAccess] f # 136| Type = [FloatType] float # 136| ValueCategory = lvalue @@ -1618,7 +1618,7 @@ complex.c: # 137| getStmt(64): [ExprStmt] ExprStmt # 137| getExpr(): [AssignExpr] ... = ... # 137| Type = [FloatType] float -# 137| ValueCategory = prvalue(load) +# 137| ValueCategory = prvalue # 137| getLValue(): [VariableAccess] f # 137| Type = [FloatType] float # 137| ValueCategory = lvalue @@ -1632,7 +1632,7 @@ complex.c: # 138| getStmt(65): [ExprStmt] ExprStmt # 138| getExpr(): [AssignExpr] ... = ... # 138| Type = [FloatType] float -# 138| ValueCategory = prvalue(load) +# 138| ValueCategory = prvalue # 138| getLValue(): [VariableAccess] f # 138| Type = [FloatType] float # 138| ValueCategory = lvalue @@ -1646,7 +1646,7 @@ complex.c: # 139| getStmt(66): [ExprStmt] ExprStmt # 139| getExpr(): [AssignExpr] ... = ... # 139| Type = [DoubleType] double -# 139| ValueCategory = prvalue(load) +# 139| ValueCategory = prvalue # 139| getLValue(): [VariableAccess] d # 139| Type = [DoubleType] double # 139| ValueCategory = lvalue @@ -1660,7 +1660,7 @@ complex.c: # 140| getStmt(67): [ExprStmt] ExprStmt # 140| getExpr(): [AssignExpr] ... = ... # 140| Type = [DoubleType] double -# 140| ValueCategory = prvalue(load) +# 140| ValueCategory = prvalue # 140| getLValue(): [VariableAccess] d # 140| Type = [DoubleType] double # 140| ValueCategory = lvalue @@ -1674,7 +1674,7 @@ complex.c: # 141| getStmt(68): [ExprStmt] ExprStmt # 141| getExpr(): [AssignExpr] ... = ... # 141| Type = [DoubleType] double -# 141| ValueCategory = prvalue(load) +# 141| ValueCategory = prvalue # 141| getLValue(): [VariableAccess] d # 141| Type = [DoubleType] double # 141| ValueCategory = lvalue @@ -1688,7 +1688,7 @@ complex.c: # 142| getStmt(69): [ExprStmt] ExprStmt # 142| getExpr(): [AssignExpr] ... = ... # 142| Type = [LongDoubleType] long double -# 142| ValueCategory = prvalue(load) +# 142| ValueCategory = prvalue # 142| getLValue(): [VariableAccess] ld # 142| Type = [LongDoubleType] long double # 142| ValueCategory = lvalue @@ -1702,7 +1702,7 @@ complex.c: # 143| getStmt(70): [ExprStmt] ExprStmt # 143| getExpr(): [AssignExpr] ... = ... # 143| Type = [LongDoubleType] long double -# 143| ValueCategory = prvalue(load) +# 143| ValueCategory = prvalue # 143| getLValue(): [VariableAccess] ld # 143| Type = [LongDoubleType] long double # 143| ValueCategory = lvalue @@ -1716,7 +1716,7 @@ complex.c: # 144| getStmt(71): [ExprStmt] ExprStmt # 144| getExpr(): [AssignExpr] ... = ... # 144| Type = [LongDoubleType] long double -# 144| ValueCategory = prvalue(load) +# 144| ValueCategory = prvalue # 144| getLValue(): [VariableAccess] ld # 144| Type = [LongDoubleType] long double # 144| ValueCategory = lvalue @@ -1752,7 +1752,7 @@ ir.c: # 9| getStmt(1): [ExprStmt] ExprStmt # 9| getExpr(): [AssignExpr] ... = ... # 9| Type = [IntType] int -# 9| ValueCategory = prvalue(load) +# 9| ValueCategory = prvalue # 9| getLValue(): [ValueFieldAccess] x # 9| Type = [IntType] int # 9| ValueCategory = lvalue @@ -1781,7 +1781,7 @@ ir.c: # 10| getStmt(2): [ExprStmt] ExprStmt # 10| getExpr(): [AssignExpr] ... = ... # 10| Type = [IntType] int -# 10| ValueCategory = prvalue(load) +# 10| ValueCategory = prvalue # 10| getLValue(): [ValueFieldAccess] x # 10| Type = [IntType] int # 10| ValueCategory = lvalue @@ -10955,7 +10955,7 @@ ir.cpp: # 1376| ValueCategory = prvalue # 1376| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object # 1376| Type = [Struct] String -# 1376| ValueCategory = prvalue(load) +# 1376| ValueCategory = prvalue # 1377| getStmt(9): [ReturnStmt] return ... # 1379| [TopLevelFunction] void temporary_destructor_only() # 1379| : @@ -11038,7 +11038,7 @@ ir.cpp: # 1388| ValueCategory = prvalue # 1388| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object # 1388| Type = [Class] destructor_only -# 1388| ValueCategory = prvalue(load) +# 1388| ValueCategory = prvalue # 1389| getStmt(8): [ReturnStmt] return ... # 1391| [TopLevelFunction] void temporary_copy_constructor() # 1391| : @@ -11134,7 +11134,7 @@ ir.cpp: # 1399| ValueCategory = prvalue # 1399| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object # 1399| Type = [Class] copy_constructor -# 1399| ValueCategory = prvalue(load) +# 1399| ValueCategory = prvalue # 1401| getStmt(8): [DeclStmt] declaration # 1401| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y # 1401| Type = [IntType] int @@ -15190,7 +15190,7 @@ ir.cpp: # 2008| ValueCategory = lvalue # 2008| getRValue(): [ConditionalExpr] ... ? ... : ... # 2008| Type = [Struct] TernaryPodObj -# 2008| ValueCategory = prvalue(load) +# 2008| ValueCategory = prvalue # 2008| getCondition(): [VariableAccess] a # 2008| Type = [BoolType] bool # 2008| ValueCategory = prvalue(load) @@ -15219,7 +15219,7 @@ ir.cpp: # 2009| ValueCategory = lvalue # 2009| getRValue(): [ConditionalExpr] ... ? ... : ... # 2009| Type = [Struct] TernaryPodObj -# 2009| ValueCategory = prvalue(load) +# 2009| ValueCategory = prvalue # 2009| getCondition(): [VariableAccess] a # 2009| Type = [BoolType] bool # 2009| ValueCategory = prvalue(load) @@ -15354,7 +15354,7 @@ ir.cpp: # 2019| ValueCategory = lvalue # 2019| getArgument(0): [ConditionalExpr] ... ? ... : ... # 2019| Type = [Struct] TernaryNonPodObj -# 2019| ValueCategory = prvalue(load) +# 2019| ValueCategory = prvalue # 2019| getCondition(): [VariableAccess] a # 2019| Type = [BoolType] bool # 2019| ValueCategory = prvalue(load) @@ -15402,7 +15402,7 @@ ir.cpp: # 2020| ValueCategory = lvalue # 2020| getArgument(0): [ConditionalExpr] ... ? ... : ... # 2020| Type = [Struct] TernaryNonPodObj -# 2020| ValueCategory = prvalue(load) +# 2020| ValueCategory = prvalue # 2020| getCondition(): [VariableAccess] a # 2020| Type = [BoolType] bool # 2020| ValueCategory = prvalue(load) @@ -16067,7 +16067,7 @@ try_except.c: # 10| getStmt(1): [ExprStmt] ExprStmt # 10| getExpr(): [AssignExpr] ... = ... # 10| Type = [IntType] int -# 10| ValueCategory = prvalue(load) +# 10| ValueCategory = prvalue # 10| getLValue(): [VariableAccess] x # 10| Type = [IntType] int # 10| ValueCategory = lvalue @@ -16121,7 +16121,7 @@ try_except.c: # 22| getStmt(1): [ExprStmt] ExprStmt # 22| getExpr(): [AssignExpr] ... = ... # 22| Type = [IntType] int -# 22| ValueCategory = prvalue(load) +# 22| ValueCategory = prvalue # 22| getLValue(): [VariableAccess] x # 22| Type = [IntType] int # 22| ValueCategory = lvalue diff --git a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected index 64766a968065..84d864f13b1e 100644 --- a/cpp/ql/test/library-tests/ir/ir/operand_locations.expected +++ b/cpp/ql/test/library-tests/ir/ir/operand_locations.expected @@ -124,24 +124,18 @@ | complex.c:2:23:2:25 | StoreValue | r2_3 | | complex.c:2:23:2:25 | Unary | r2_2 | | complex.c:3:3:3:4 | Address | &:r3_3 | -| complex.c:3:3:3:4 | Address | &:r3_3 | -| complex.c:3:3:3:12 | Load | m3_4 | | complex.c:3:8:3:12 | StoreValue | r3_2 | | complex.c:3:8:3:12 | Unary | r3_1 | | complex.c:4:19:4:20 | Address | &:r4_1 | | complex.c:4:24:4:26 | StoreValue | r4_3 | | complex.c:4:24:4:26 | Unary | r4_2 | | complex.c:5:3:5:4 | Address | &:r5_3 | -| complex.c:5:3:5:4 | Address | &:r5_3 | -| complex.c:5:3:5:12 | Load | m5_4 | | complex.c:5:8:5:12 | StoreValue | r5_2 | | complex.c:5:8:5:12 | Unary | r5_1 | | complex.c:6:24:6:26 | Address | &:r6_1 | | complex.c:6:30:6:32 | StoreValue | r6_3 | | complex.c:6:30:6:32 | Unary | r6_2 | | complex.c:7:3:7:5 | Address | &:r7_3 | -| complex.c:7:3:7:5 | Address | &:r7_3 | -| complex.c:7:3:7:13 | Load | m7_4 | | complex.c:7:9:7:13 | StoreValue | r7_2 | | complex.c:7:9:7:13 | Unary | r7_1 | | complex.c:9:20:9:21 | Address | &:r9_1 | @@ -173,22 +167,16 @@ | complex.c:22:25:22:30 | StoreValue | r22_2 | | complex.c:23:20:23:22 | Address | &:r23_1 | | complex.c:26:3:26:5 | Address | &:r26_4 | -| complex.c:26:3:26:5 | Address | &:r26_4 | -| complex.c:26:3:26:12 | Load | m26_5 | | complex.c:26:9:26:12 | StoreValue | r26_3 | | complex.c:26:10:26:12 | Address | &:r26_1 | | complex.c:26:10:26:12 | Load | m18_4 | | complex.c:26:10:26:12 | Unary | r26_2 | | complex.c:27:3:27:5 | Address | &:r27_4 | -| complex.c:27:3:27:5 | Address | &:r27_4 | -| complex.c:27:3:27:12 | Load | m27_5 | | complex.c:27:9:27:12 | StoreValue | r27_3 | | complex.c:27:10:27:12 | Address | &:r27_1 | | complex.c:27:10:27:12 | Load | m18_4 | | complex.c:27:10:27:12 | Unary | r27_2 | | complex.c:30:3:30:5 | Address | &:r30_6 | -| complex.c:30:3:30:5 | Address | &:r30_6 | -| complex.c:30:3:30:17 | Load | m30_7 | | complex.c:30:9:30:11 | Address | &:r30_1 | | complex.c:30:9:30:11 | Left | r30_2 | | complex.c:30:9:30:11 | Load | m18_4 | @@ -197,8 +185,6 @@ | complex.c:30:15:30:17 | Load | m19_4 | | complex.c:30:15:30:17 | Right | r30_4 | | complex.c:31:3:31:5 | Address | &:r31_6 | -| complex.c:31:3:31:5 | Address | &:r31_6 | -| complex.c:31:3:31:17 | Load | m31_7 | | complex.c:31:9:31:11 | Address | &:r31_1 | | complex.c:31:9:31:11 | Left | r31_2 | | complex.c:31:9:31:11 | Load | m18_4 | @@ -207,8 +193,6 @@ | complex.c:31:15:31:17 | Load | m19_4 | | complex.c:31:15:31:17 | Right | r31_4 | | complex.c:32:3:32:5 | Address | &:r32_6 | -| complex.c:32:3:32:5 | Address | &:r32_6 | -| complex.c:32:3:32:17 | Load | m32_7 | | complex.c:32:9:32:11 | Address | &:r32_1 | | complex.c:32:9:32:11 | Left | r32_2 | | complex.c:32:9:32:11 | Load | m18_4 | @@ -217,8 +201,6 @@ | complex.c:32:15:32:17 | Load | m19_4 | | complex.c:32:15:32:17 | Right | r32_4 | | complex.c:33:3:33:5 | Address | &:r33_6 | -| complex.c:33:3:33:5 | Address | &:r33_6 | -| complex.c:33:3:33:17 | Load | m33_7 | | complex.c:33:9:33:11 | Address | &:r33_1 | | complex.c:33:9:33:11 | Left | r33_2 | | complex.c:33:9:33:11 | Load | m18_4 | @@ -227,22 +209,16 @@ | complex.c:33:15:33:17 | Load | m19_4 | | complex.c:33:15:33:17 | Right | r33_4 | | complex.c:36:3:36:5 | Address | &:r36_4 | -| complex.c:36:3:36:5 | Address | &:r36_4 | -| complex.c:36:3:36:12 | Load | m36_5 | | complex.c:36:9:36:12 | StoreValue | r36_3 | | complex.c:36:10:36:12 | Address | &:r36_1 | | complex.c:36:10:36:12 | Load | m21_3 | | complex.c:36:10:36:12 | Unary | r36_2 | | complex.c:37:3:37:5 | Address | &:r37_4 | -| complex.c:37:3:37:5 | Address | &:r37_4 | -| complex.c:37:3:37:12 | Load | m37_5 | | complex.c:37:9:37:12 | StoreValue | r37_3 | | complex.c:37:10:37:12 | Address | &:r37_1 | | complex.c:37:10:37:12 | Load | m21_3 | | complex.c:37:10:37:12 | Unary | r37_2 | | complex.c:40:3:40:5 | Address | &:r40_6 | -| complex.c:40:3:40:5 | Address | &:r40_6 | -| complex.c:40:3:40:17 | Load | m40_7 | | complex.c:40:9:40:11 | Address | &:r40_1 | | complex.c:40:9:40:11 | Left | r40_2 | | complex.c:40:9:40:11 | Load | m21_3 | @@ -251,8 +227,6 @@ | complex.c:40:15:40:17 | Load | m22_3 | | complex.c:40:15:40:17 | Right | r40_4 | | complex.c:41:3:41:5 | Address | &:r41_6 | -| complex.c:41:3:41:5 | Address | &:r41_6 | -| complex.c:41:3:41:17 | Load | m41_7 | | complex.c:41:9:41:11 | Address | &:r41_1 | | complex.c:41:9:41:11 | Left | r41_2 | | complex.c:41:9:41:11 | Load | m21_3 | @@ -261,8 +235,6 @@ | complex.c:41:15:41:17 | Load | m22_3 | | complex.c:41:15:41:17 | Right | r41_4 | | complex.c:42:3:42:4 | Address | &:r42_6 | -| complex.c:42:3:42:4 | Address | &:r42_6 | -| complex.c:42:3:42:16 | Load | m42_7 | | complex.c:42:8:42:10 | Address | &:r42_1 | | complex.c:42:8:42:10 | Left | r42_2 | | complex.c:42:8:42:10 | Load | m21_3 | @@ -271,8 +243,6 @@ | complex.c:42:14:42:16 | Load | m22_3 | | complex.c:42:14:42:16 | Right | r42_4 | | complex.c:43:3:43:4 | Address | &:r43_6 | -| complex.c:43:3:43:4 | Address | &:r43_6 | -| complex.c:43:3:43:16 | Load | m43_7 | | complex.c:43:8:43:10 | Address | &:r43_1 | | complex.c:43:8:43:10 | Left | r43_2 | | complex.c:43:8:43:10 | Load | m21_3 | @@ -281,8 +251,6 @@ | complex.c:43:14:43:16 | Load | m22_3 | | complex.c:43:14:43:16 | Right | r43_4 | | complex.c:46:3:46:5 | Address | &:r46_6 | -| complex.c:46:3:46:5 | Address | &:r46_6 | -| complex.c:46:3:46:16 | Load | m46_7 | | complex.c:46:9:46:11 | Address | &:r46_1 | | complex.c:46:9:46:11 | Left | r46_2 | | complex.c:46:9:46:11 | Load | m21_3 | @@ -291,8 +259,6 @@ | complex.c:46:15:46:16 | Load | m16_3 | | complex.c:46:15:46:16 | Right | r46_4 | | complex.c:47:3:47:5 | Address | &:r47_6 | -| complex.c:47:3:47:5 | Address | &:r47_6 | -| complex.c:47:3:47:16 | Load | m47_7 | | complex.c:47:9:47:11 | Address | &:r47_1 | | complex.c:47:9:47:11 | Left | r47_2 | | complex.c:47:9:47:11 | Load | m21_3 | @@ -301,8 +267,6 @@ | complex.c:47:15:47:16 | Load | m16_3 | | complex.c:47:15:47:16 | Right | r47_4 | | complex.c:48:3:48:5 | Address | &:r48_6 | -| complex.c:48:3:48:5 | Address | &:r48_6 | -| complex.c:48:3:48:16 | Load | m48_7 | | complex.c:48:9:48:11 | Address | &:r48_1 | | complex.c:48:9:48:11 | Left | r48_2 | | complex.c:48:9:48:11 | Load | m21_3 | @@ -311,8 +275,6 @@ | complex.c:48:15:48:16 | Load | m16_3 | | complex.c:48:15:48:16 | Right | r48_4 | | complex.c:49:3:49:5 | Address | &:r49_6 | -| complex.c:49:3:49:5 | Address | &:r49_6 | -| complex.c:49:3:49:16 | Load | m49_7 | | complex.c:49:9:49:11 | Address | &:r49_1 | | complex.c:49:9:49:11 | Left | r49_2 | | complex.c:49:9:49:11 | Load | m21_3 | @@ -321,8 +283,6 @@ | complex.c:49:15:49:16 | Load | m16_3 | | complex.c:49:15:49:16 | Right | r49_4 | | complex.c:52:3:52:5 | Address | &:r52_6 | -| complex.c:52:3:52:5 | Address | &:r52_6 | -| complex.c:52:3:52:16 | Load | m52_7 | | complex.c:52:9:52:10 | Address | &:r52_1 | | complex.c:52:9:52:10 | Left | r52_2 | | complex.c:52:9:52:10 | Load | m15_3 | @@ -331,8 +291,6 @@ | complex.c:52:14:52:16 | Load | m22_3 | | complex.c:52:14:52:16 | Right | r52_4 | | complex.c:53:3:53:5 | Address | &:r53_6 | -| complex.c:53:3:53:5 | Address | &:r53_6 | -| complex.c:53:3:53:16 | Load | m53_7 | | complex.c:53:9:53:10 | Address | &:r53_1 | | complex.c:53:9:53:10 | Left | r53_2 | | complex.c:53:9:53:10 | Load | m15_3 | @@ -341,8 +299,6 @@ | complex.c:53:14:53:16 | Load | m22_3 | | complex.c:53:14:53:16 | Right | r53_4 | | complex.c:54:3:54:5 | Address | &:r54_6 | -| complex.c:54:3:54:5 | Address | &:r54_6 | -| complex.c:54:3:54:16 | Load | m54_7 | | complex.c:54:9:54:10 | Address | &:r54_1 | | complex.c:54:9:54:10 | Left | r54_2 | | complex.c:54:9:54:10 | Load | m15_3 | @@ -351,8 +307,6 @@ | complex.c:54:14:54:16 | Load | m22_3 | | complex.c:54:14:54:16 | Right | r54_4 | | complex.c:55:3:55:5 | Address | &:r55_6 | -| complex.c:55:3:55:5 | Address | &:r55_6 | -| complex.c:55:3:55:16 | Load | m55_7 | | complex.c:55:9:55:10 | Address | &:r55_1 | | complex.c:55:9:55:10 | Left | r55_2 | | complex.c:55:9:55:10 | Load | m15_3 | @@ -387,439 +341,313 @@ | complex.c:67:32:67:36 | StoreValue | r67_3 | | complex.c:67:32:67:36 | Unary | r67_2 | | complex.c:70:3:70:4 | Address | &:r70_3 | -| complex.c:70:3:70:4 | Address | &:r70_3 | -| complex.c:70:3:70:9 | Load | m70_4 | | complex.c:70:8:70:9 | Address | &:r70_1 | | complex.c:70:8:70:9 | Load | m62_4 | | complex.c:70:8:70:9 | StoreValue | r70_2 | | complex.c:71:3:71:4 | Address | &:r71_4 | -| complex.c:71:3:71:4 | Address | &:r71_4 | -| complex.c:71:3:71:9 | Load | m71_5 | | complex.c:71:8:71:9 | Address | &:r71_1 | | complex.c:71:8:71:9 | Load | m63_4 | | complex.c:71:8:71:9 | StoreValue | r71_3 | | complex.c:71:8:71:9 | Unary | r71_2 | | complex.c:72:3:72:4 | Address | &:r72_4 | -| complex.c:72:3:72:4 | Address | &:r72_4 | -| complex.c:72:3:72:10 | Load | m72_5 | | complex.c:72:8:72:10 | Address | &:r72_1 | | complex.c:72:8:72:10 | Load | m64_4 | | complex.c:72:8:72:10 | StoreValue | r72_3 | | complex.c:72:8:72:10 | Unary | r72_2 | | complex.c:73:3:73:4 | Address | &:r73_4 | -| complex.c:73:3:73:4 | Address | &:r73_4 | -| complex.c:73:3:73:9 | Load | m73_5 | | complex.c:73:8:73:9 | Address | &:r73_1 | | complex.c:73:8:73:9 | Load | m72_5 | | complex.c:73:8:73:9 | StoreValue | r73_3 | | complex.c:73:8:73:9 | Unary | r73_2 | | complex.c:74:3:74:4 | Address | &:r74_3 | -| complex.c:74:3:74:4 | Address | &:r74_3 | -| complex.c:74:3:74:9 | Load | m74_4 | | complex.c:74:8:74:9 | Address | &:r74_1 | | complex.c:74:8:74:9 | Load | m73_5 | | complex.c:74:8:74:9 | StoreValue | r74_2 | | complex.c:75:3:75:4 | Address | &:r75_4 | -| complex.c:75:3:75:4 | Address | &:r75_4 | -| complex.c:75:3:75:10 | Load | m75_5 | | complex.c:75:8:75:10 | Address | &:r75_1 | | complex.c:75:8:75:10 | Load | m64_4 | | complex.c:75:8:75:10 | StoreValue | r75_3 | | complex.c:75:8:75:10 | Unary | r75_2 | | complex.c:76:3:76:5 | Address | &:r76_4 | -| complex.c:76:3:76:5 | Address | &:r76_4 | -| complex.c:76:3:76:10 | Load | m76_5 | | complex.c:76:9:76:10 | Address | &:r76_1 | | complex.c:76:9:76:10 | Load | m72_5 | | complex.c:76:9:76:10 | StoreValue | r76_3 | | complex.c:76:9:76:10 | Unary | r76_2 | | complex.c:77:3:77:5 | Address | &:r77_4 | -| complex.c:77:3:77:5 | Address | &:r77_4 | -| complex.c:77:3:77:10 | Load | m77_5 | | complex.c:77:9:77:10 | Address | &:r77_1 | | complex.c:77:9:77:10 | Load | m75_5 | | complex.c:77:9:77:10 | StoreValue | r77_3 | | complex.c:77:9:77:10 | Unary | r77_2 | | complex.c:78:3:78:5 | Address | &:r78_3 | -| complex.c:78:3:78:5 | Address | &:r78_3 | -| complex.c:78:3:78:11 | Load | m78_4 | | complex.c:78:9:78:11 | Address | &:r78_1 | | complex.c:78:9:78:11 | Load | m77_5 | | complex.c:78:9:78:11 | StoreValue | r78_2 | | complex.c:81:3:81:4 | Address | &:r81_4 | -| complex.c:81:3:81:4 | Address | &:r81_4 | -| complex.c:81:3:81:8 | Load | m81_5 | | complex.c:81:8:81:8 | Address | &:r81_1 | | complex.c:81:8:81:8 | Load | m59_3 | | complex.c:81:8:81:8 | StoreValue | r81_3 | | complex.c:81:8:81:8 | Unary | r81_2 | | complex.c:82:3:82:4 | Address | &:r82_4 | -| complex.c:82:3:82:4 | Address | &:r82_4 | -| complex.c:82:3:82:8 | Load | m82_5 | | complex.c:82:8:82:8 | Address | &:r82_1 | | complex.c:82:8:82:8 | Load | m60_3 | | complex.c:82:8:82:8 | StoreValue | r82_3 | | complex.c:82:8:82:8 | Unary | r82_2 | | complex.c:83:3:83:4 | Address | &:r83_4 | -| complex.c:83:3:83:4 | Address | &:r83_4 | -| complex.c:83:3:83:9 | Load | m83_5 | | complex.c:83:8:83:9 | Address | &:r83_1 | | complex.c:83:8:83:9 | Load | m61_3 | | complex.c:83:8:83:9 | StoreValue | r83_3 | | complex.c:83:8:83:9 | Unary | r83_2 | | complex.c:84:3:84:4 | Address | &:r84_4 | -| complex.c:84:3:84:4 | Address | &:r84_4 | -| complex.c:84:3:84:8 | Load | m84_5 | | complex.c:84:8:84:8 | Address | &:r84_1 | | complex.c:84:8:84:8 | Load | m59_3 | | complex.c:84:8:84:8 | StoreValue | r84_3 | | complex.c:84:8:84:8 | Unary | r84_2 | | complex.c:85:3:85:4 | Address | &:r85_4 | -| complex.c:85:3:85:4 | Address | &:r85_4 | -| complex.c:85:3:85:8 | Load | m85_5 | | complex.c:85:8:85:8 | Address | &:r85_1 | | complex.c:85:8:85:8 | Load | m60_3 | | complex.c:85:8:85:8 | StoreValue | r85_3 | | complex.c:85:8:85:8 | Unary | r85_2 | | complex.c:86:3:86:4 | Address | &:r86_4 | -| complex.c:86:3:86:4 | Address | &:r86_4 | -| complex.c:86:3:86:9 | Load | m86_5 | | complex.c:86:8:86:9 | Address | &:r86_1 | | complex.c:86:8:86:9 | Load | m61_3 | | complex.c:86:8:86:9 | StoreValue | r86_3 | | complex.c:86:8:86:9 | Unary | r86_2 | | complex.c:87:3:87:5 | Address | &:r87_4 | -| complex.c:87:3:87:5 | Address | &:r87_4 | -| complex.c:87:3:87:9 | Load | m87_5 | | complex.c:87:9:87:9 | Address | &:r87_1 | | complex.c:87:9:87:9 | Load | m59_3 | | complex.c:87:9:87:9 | StoreValue | r87_3 | | complex.c:87:9:87:9 | Unary | r87_2 | | complex.c:88:3:88:5 | Address | &:r88_4 | -| complex.c:88:3:88:5 | Address | &:r88_4 | -| complex.c:88:3:88:9 | Load | m88_5 | | complex.c:88:9:88:9 | Address | &:r88_1 | | complex.c:88:9:88:9 | Load | m60_3 | | complex.c:88:9:88:9 | StoreValue | r88_3 | | complex.c:88:9:88:9 | Unary | r88_2 | | complex.c:89:3:89:5 | Address | &:r89_4 | -| complex.c:89:3:89:5 | Address | &:r89_4 | -| complex.c:89:3:89:10 | Load | m89_5 | | complex.c:89:9:89:10 | Address | &:r89_1 | | complex.c:89:9:89:10 | Load | m61_3 | | complex.c:89:9:89:10 | StoreValue | r89_3 | | complex.c:89:9:89:10 | Unary | r89_2 | | complex.c:92:3:92:3 | Address | &:r92_4 | -| complex.c:92:3:92:3 | Address | &:r92_4 | -| complex.c:92:3:92:8 | Load | m92_5 | | complex.c:92:7:92:8 | Address | &:r92_1 | | complex.c:92:7:92:8 | Load | m83_5 | | complex.c:92:7:92:8 | StoreValue | r92_3 | | complex.c:92:7:92:8 | Unary | r92_2 | | complex.c:93:3:93:3 | Address | &:r93_4 | -| complex.c:93:3:93:3 | Address | &:r93_4 | -| complex.c:93:3:93:8 | Load | m93_5 | | complex.c:93:7:93:8 | Address | &:r93_1 | | complex.c:93:7:93:8 | Load | m86_5 | | complex.c:93:7:93:8 | StoreValue | r93_3 | | complex.c:93:7:93:8 | Unary | r93_2 | | complex.c:94:3:94:3 | Address | &:r94_4 | -| complex.c:94:3:94:3 | Address | &:r94_4 | -| complex.c:94:3:94:9 | Load | m94_5 | | complex.c:94:7:94:9 | Address | &:r94_1 | | complex.c:94:7:94:9 | Load | m89_5 | | complex.c:94:7:94:9 | StoreValue | r94_3 | | complex.c:94:7:94:9 | Unary | r94_2 | | complex.c:95:3:95:3 | Address | &:r95_4 | -| complex.c:95:3:95:3 | Address | &:r95_4 | -| complex.c:95:3:95:8 | Load | m95_5 | | complex.c:95:7:95:8 | Address | &:r95_1 | | complex.c:95:7:95:8 | Load | m83_5 | | complex.c:95:7:95:8 | StoreValue | r95_3 | | complex.c:95:7:95:8 | Unary | r95_2 | | complex.c:96:3:96:3 | Address | &:r96_4 | -| complex.c:96:3:96:3 | Address | &:r96_4 | -| complex.c:96:3:96:8 | Load | m96_5 | | complex.c:96:7:96:8 | Address | &:r96_1 | | complex.c:96:7:96:8 | Load | m86_5 | | complex.c:96:7:96:8 | StoreValue | r96_3 | | complex.c:96:7:96:8 | Unary | r96_2 | | complex.c:97:3:97:3 | Address | &:r97_4 | -| complex.c:97:3:97:3 | Address | &:r97_4 | -| complex.c:97:3:97:9 | Load | m97_5 | | complex.c:97:7:97:9 | Address | &:r97_1 | | complex.c:97:7:97:9 | Load | m89_5 | | complex.c:97:7:97:9 | StoreValue | r97_3 | | complex.c:97:7:97:9 | Unary | r97_2 | | complex.c:98:3:98:4 | Address | &:r98_4 | -| complex.c:98:3:98:4 | Address | &:r98_4 | -| complex.c:98:3:98:9 | Load | m98_5 | | complex.c:98:8:98:9 | Address | &:r98_1 | | complex.c:98:8:98:9 | Load | m83_5 | | complex.c:98:8:98:9 | StoreValue | r98_3 | | complex.c:98:8:98:9 | Unary | r98_2 | | complex.c:99:3:99:4 | Address | &:r99_4 | -| complex.c:99:3:99:4 | Address | &:r99_4 | -| complex.c:99:3:99:9 | Load | m99_5 | | complex.c:99:8:99:9 | Address | &:r99_1 | | complex.c:99:8:99:9 | Load | m86_5 | | complex.c:99:8:99:9 | StoreValue | r99_3 | | complex.c:99:8:99:9 | Unary | r99_2 | | complex.c:100:3:100:4 | Address | &:r100_4 | -| complex.c:100:3:100:4 | Address | &:r100_4 | -| complex.c:100:3:100:10 | Load | m100_5 | | complex.c:100:8:100:10 | Address | &:r100_1 | | complex.c:100:8:100:10 | Load | m89_5 | | complex.c:100:8:100:10 | StoreValue | r100_3 | | complex.c:100:8:100:10 | Unary | r100_2 | | complex.c:103:3:103:4 | Address | &:r103_4 | -| complex.c:103:3:103:4 | Address | &:r103_4 | -| complex.c:103:3:103:9 | Load | m103_5 | | complex.c:103:8:103:9 | Address | &:r103_1 | | complex.c:103:8:103:9 | Load | m65_3 | | complex.c:103:8:103:9 | StoreValue | r103_3 | | complex.c:103:8:103:9 | Unary | r103_2 | | complex.c:104:3:104:4 | Address | &:r104_4 | -| complex.c:104:3:104:4 | Address | &:r104_4 | -| complex.c:104:3:104:9 | Load | m104_5 | | complex.c:104:8:104:9 | Address | &:r104_1 | | complex.c:104:8:104:9 | Load | m66_4 | | complex.c:104:8:104:9 | StoreValue | r104_3 | | complex.c:104:8:104:9 | Unary | r104_2 | | complex.c:105:3:105:4 | Address | &:r105_4 | -| complex.c:105:3:105:4 | Address | &:r105_4 | -| complex.c:105:3:105:10 | Load | m105_5 | | complex.c:105:8:105:10 | Address | &:r105_1 | | complex.c:105:8:105:10 | Load | m67_4 | | complex.c:105:8:105:10 | StoreValue | r105_3 | | complex.c:105:8:105:10 | Unary | r105_2 | | complex.c:106:3:106:4 | Address | &:r106_4 | -| complex.c:106:3:106:4 | Address | &:r106_4 | -| complex.c:106:3:106:9 | Load | m106_5 | | complex.c:106:8:106:9 | Address | &:r106_1 | | complex.c:106:8:106:9 | Load | m65_3 | | complex.c:106:8:106:9 | StoreValue | r106_3 | | complex.c:106:8:106:9 | Unary | r106_2 | | complex.c:107:3:107:4 | Address | &:r107_4 | -| complex.c:107:3:107:4 | Address | &:r107_4 | -| complex.c:107:3:107:9 | Load | m107_5 | | complex.c:107:8:107:9 | Address | &:r107_1 | | complex.c:107:8:107:9 | Load | m66_4 | | complex.c:107:8:107:9 | StoreValue | r107_3 | | complex.c:107:8:107:9 | Unary | r107_2 | | complex.c:108:3:108:4 | Address | &:r108_4 | -| complex.c:108:3:108:4 | Address | &:r108_4 | -| complex.c:108:3:108:10 | Load | m108_5 | | complex.c:108:8:108:10 | Address | &:r108_1 | | complex.c:108:8:108:10 | Load | m67_4 | | complex.c:108:8:108:10 | StoreValue | r108_3 | | complex.c:108:8:108:10 | Unary | r108_2 | | complex.c:109:3:109:5 | Address | &:r109_4 | -| complex.c:109:3:109:5 | Address | &:r109_4 | -| complex.c:109:3:109:10 | Load | m109_5 | | complex.c:109:9:109:10 | Address | &:r109_1 | | complex.c:109:9:109:10 | Load | m65_3 | | complex.c:109:9:109:10 | StoreValue | r109_3 | | complex.c:109:9:109:10 | Unary | r109_2 | | complex.c:110:3:110:5 | Address | &:r110_4 | -| complex.c:110:3:110:5 | Address | &:r110_4 | -| complex.c:110:3:110:10 | Load | m110_5 | | complex.c:110:9:110:10 | Address | &:r110_1 | | complex.c:110:9:110:10 | Load | m66_4 | | complex.c:110:9:110:10 | StoreValue | r110_3 | | complex.c:110:9:110:10 | Unary | r110_2 | | complex.c:111:3:111:5 | Address | &:r111_4 | -| complex.c:111:3:111:5 | Address | &:r111_4 | -| complex.c:111:3:111:11 | Load | m111_5 | | complex.c:111:9:111:11 | Address | &:r111_1 | | complex.c:111:9:111:11 | Load | m67_4 | | complex.c:111:9:111:11 | StoreValue | r111_3 | | complex.c:111:9:111:11 | Unary | r111_2 | | complex.c:114:3:114:4 | Address | &:r114_4 | -| complex.c:114:3:114:4 | Address | &:r114_4 | -| complex.c:114:3:114:9 | Load | m114_5 | | complex.c:114:8:114:9 | Address | &:r114_1 | | complex.c:114:8:114:9 | Load | m105_5 | | complex.c:114:8:114:9 | StoreValue | r114_3 | | complex.c:114:8:114:9 | Unary | r114_2 | | complex.c:115:3:115:4 | Address | &:r115_4 | -| complex.c:115:3:115:4 | Address | &:r115_4 | -| complex.c:115:3:115:9 | Load | m115_5 | | complex.c:115:8:115:9 | Address | &:r115_1 | | complex.c:115:8:115:9 | Load | m108_5 | | complex.c:115:8:115:9 | StoreValue | r115_3 | | complex.c:115:8:115:9 | Unary | r115_2 | | complex.c:116:3:116:4 | Address | &:r116_4 | -| complex.c:116:3:116:4 | Address | &:r116_4 | -| complex.c:116:3:116:10 | Load | m116_5 | | complex.c:116:8:116:10 | Address | &:r116_1 | | complex.c:116:8:116:10 | Load | m111_5 | | complex.c:116:8:116:10 | StoreValue | r116_3 | | complex.c:116:8:116:10 | Unary | r116_2 | | complex.c:117:3:117:4 | Address | &:r117_4 | -| complex.c:117:3:117:4 | Address | &:r117_4 | -| complex.c:117:3:117:9 | Load | m117_5 | | complex.c:117:8:117:9 | Address | &:r117_1 | | complex.c:117:8:117:9 | Load | m105_5 | | complex.c:117:8:117:9 | StoreValue | r117_3 | | complex.c:117:8:117:9 | Unary | r117_2 | | complex.c:118:3:118:4 | Address | &:r118_4 | -| complex.c:118:3:118:4 | Address | &:r118_4 | -| complex.c:118:3:118:9 | Load | m118_5 | | complex.c:118:8:118:9 | Address | &:r118_1 | | complex.c:118:8:118:9 | Load | m108_5 | | complex.c:118:8:118:9 | StoreValue | r118_3 | | complex.c:118:8:118:9 | Unary | r118_2 | | complex.c:119:3:119:4 | Address | &:r119_4 | -| complex.c:119:3:119:4 | Address | &:r119_4 | -| complex.c:119:3:119:10 | Load | m119_5 | | complex.c:119:8:119:10 | Address | &:r119_1 | | complex.c:119:8:119:10 | Load | m111_5 | | complex.c:119:8:119:10 | StoreValue | r119_3 | | complex.c:119:8:119:10 | Unary | r119_2 | | complex.c:120:3:120:5 | Address | &:r120_4 | -| complex.c:120:3:120:5 | Address | &:r120_4 | -| complex.c:120:3:120:10 | Load | m120_5 | | complex.c:120:9:120:10 | Address | &:r120_1 | | complex.c:120:9:120:10 | Load | m105_5 | | complex.c:120:9:120:10 | StoreValue | r120_3 | | complex.c:120:9:120:10 | Unary | r120_2 | | complex.c:121:3:121:5 | Address | &:r121_4 | -| complex.c:121:3:121:5 | Address | &:r121_4 | -| complex.c:121:3:121:10 | Load | m121_5 | | complex.c:121:9:121:10 | Address | &:r121_1 | | complex.c:121:9:121:10 | Load | m108_5 | | complex.c:121:9:121:10 | StoreValue | r121_3 | | complex.c:121:9:121:10 | Unary | r121_2 | | complex.c:122:3:122:5 | Address | &:r122_4 | -| complex.c:122:3:122:5 | Address | &:r122_4 | -| complex.c:122:3:122:11 | Load | m122_5 | | complex.c:122:9:122:11 | Address | &:r122_1 | | complex.c:122:9:122:11 | Load | m111_5 | | complex.c:122:9:122:11 | StoreValue | r122_3 | | complex.c:122:9:122:11 | Unary | r122_2 | | complex.c:125:3:125:4 | Address | &:r125_4 | -| complex.c:125:3:125:4 | Address | &:r125_4 | -| complex.c:125:3:125:8 | Load | m125_5 | | complex.c:125:8:125:8 | Address | &:r125_1 | | complex.c:125:8:125:8 | Load | m94_5 | | complex.c:125:8:125:8 | StoreValue | r125_3 | | complex.c:125:8:125:8 | Unary | r125_2 | | complex.c:126:3:126:4 | Address | &:r126_4 | -| complex.c:126:3:126:4 | Address | &:r126_4 | -| complex.c:126:3:126:8 | Load | m126_5 | | complex.c:126:8:126:8 | Address | &:r126_1 | | complex.c:126:8:126:8 | Load | m97_5 | | complex.c:126:8:126:8 | StoreValue | r126_3 | | complex.c:126:8:126:8 | Unary | r126_2 | | complex.c:127:3:127:4 | Address | &:r127_4 | -| complex.c:127:3:127:4 | Address | &:r127_4 | -| complex.c:127:3:127:9 | Load | m127_5 | | complex.c:127:8:127:9 | Address | &:r127_1 | | complex.c:127:8:127:9 | Load | m100_5 | | complex.c:127:8:127:9 | StoreValue | r127_3 | | complex.c:127:8:127:9 | Unary | r127_2 | | complex.c:128:3:128:4 | Address | &:r128_4 | -| complex.c:128:3:128:4 | Address | &:r128_4 | -| complex.c:128:3:128:8 | Load | m128_5 | | complex.c:128:8:128:8 | Address | &:r128_1 | | complex.c:128:8:128:8 | Load | m94_5 | | complex.c:128:8:128:8 | StoreValue | r128_3 | | complex.c:128:8:128:8 | Unary | r128_2 | | complex.c:129:3:129:4 | Address | &:r129_4 | -| complex.c:129:3:129:4 | Address | &:r129_4 | -| complex.c:129:3:129:8 | Load | m129_5 | | complex.c:129:8:129:8 | Address | &:r129_1 | | complex.c:129:8:129:8 | Load | m97_5 | | complex.c:129:8:129:8 | StoreValue | r129_3 | | complex.c:129:8:129:8 | Unary | r129_2 | | complex.c:130:3:130:4 | Address | &:r130_4 | -| complex.c:130:3:130:4 | Address | &:r130_4 | -| complex.c:130:3:130:9 | Load | m130_5 | | complex.c:130:8:130:9 | Address | &:r130_1 | | complex.c:130:8:130:9 | Load | m100_5 | | complex.c:130:8:130:9 | StoreValue | r130_3 | | complex.c:130:8:130:9 | Unary | r130_2 | | complex.c:131:3:131:5 | Address | &:r131_4 | -| complex.c:131:3:131:5 | Address | &:r131_4 | -| complex.c:131:3:131:9 | Load | m131_5 | | complex.c:131:9:131:9 | Address | &:r131_1 | | complex.c:131:9:131:9 | Load | m94_5 | | complex.c:131:9:131:9 | StoreValue | r131_3 | | complex.c:131:9:131:9 | Unary | r131_2 | | complex.c:132:3:132:5 | Address | &:r132_4 | -| complex.c:132:3:132:5 | Address | &:r132_4 | -| complex.c:132:3:132:9 | Load | m132_5 | | complex.c:132:9:132:9 | Address | &:r132_1 | | complex.c:132:9:132:9 | Load | m97_5 | | complex.c:132:9:132:9 | StoreValue | r132_3 | | complex.c:132:9:132:9 | Unary | r132_2 | | complex.c:133:3:133:5 | Address | &:r133_4 | -| complex.c:133:3:133:5 | Address | &:r133_4 | -| complex.c:133:3:133:10 | Load | m133_5 | | complex.c:133:9:133:10 | Address | &:r133_1 | | complex.c:133:9:133:10 | Load | m100_5 | | complex.c:133:9:133:10 | StoreValue | r133_3 | | complex.c:133:9:133:10 | Unary | r133_2 | | complex.c:136:3:136:3 | Address | &:r136_4 | -| complex.c:136:3:136:3 | Address | &:r136_4 | -| complex.c:136:3:136:8 | Load | m136_5 | | complex.c:136:7:136:8 | Address | &:r136_1 | | complex.c:136:7:136:8 | Load | m127_5 | | complex.c:136:7:136:8 | StoreValue | r136_3 | | complex.c:136:7:136:8 | Unary | r136_2 | | complex.c:137:3:137:3 | Address | &:r137_4 | -| complex.c:137:3:137:3 | Address | &:r137_4 | -| complex.c:137:3:137:8 | Load | m137_5 | | complex.c:137:7:137:8 | Address | &:r137_1 | | complex.c:137:7:137:8 | Load | m130_5 | | complex.c:137:7:137:8 | StoreValue | r137_3 | | complex.c:137:7:137:8 | Unary | r137_2 | | complex.c:138:3:138:3 | Address | &:r138_4 | -| complex.c:138:3:138:3 | Address | &:r138_4 | -| complex.c:138:3:138:9 | Load | m138_5 | | complex.c:138:7:138:9 | Address | &:r138_1 | | complex.c:138:7:138:9 | Load | m133_5 | | complex.c:138:7:138:9 | StoreValue | r138_3 | | complex.c:138:7:138:9 | Unary | r138_2 | | complex.c:139:3:139:3 | Address | &:r139_4 | -| complex.c:139:3:139:3 | Address | &:r139_4 | -| complex.c:139:3:139:8 | Load | m139_5 | | complex.c:139:7:139:8 | Address | &:r139_1 | | complex.c:139:7:139:8 | Load | m127_5 | | complex.c:139:7:139:8 | StoreValue | r139_3 | | complex.c:139:7:139:8 | Unary | r139_2 | | complex.c:140:3:140:3 | Address | &:r140_4 | -| complex.c:140:3:140:3 | Address | &:r140_4 | -| complex.c:140:3:140:8 | Load | m140_5 | | complex.c:140:7:140:8 | Address | &:r140_1 | | complex.c:140:7:140:8 | Load | m130_5 | | complex.c:140:7:140:8 | StoreValue | r140_3 | | complex.c:140:7:140:8 | Unary | r140_2 | | complex.c:141:3:141:3 | Address | &:r141_4 | -| complex.c:141:3:141:3 | Address | &:r141_4 | -| complex.c:141:3:141:9 | Load | m141_5 | | complex.c:141:7:141:9 | Address | &:r141_1 | | complex.c:141:7:141:9 | Load | m133_5 | | complex.c:141:7:141:9 | StoreValue | r141_3 | | complex.c:141:7:141:9 | Unary | r141_2 | | complex.c:142:3:142:4 | Address | &:r142_4 | -| complex.c:142:3:142:4 | Address | &:r142_4 | -| complex.c:142:3:142:9 | Load | m142_5 | | complex.c:142:8:142:9 | Address | &:r142_1 | | complex.c:142:8:142:9 | Load | m127_5 | | complex.c:142:8:142:9 | StoreValue | r142_3 | | complex.c:142:8:142:9 | Unary | r142_2 | | complex.c:143:3:143:4 | Address | &:r143_4 | -| complex.c:143:3:143:4 | Address | &:r143_4 | -| complex.c:143:3:143:9 | Load | m143_5 | | complex.c:143:8:143:9 | Address | &:r143_1 | | complex.c:143:8:143:9 | Load | m130_5 | | complex.c:143:8:143:9 | StoreValue | r143_3 | | complex.c:143:8:143:9 | Unary | r143_2 | | complex.c:144:3:144:4 | Address | &:r144_4 | -| complex.c:144:3:144:4 | Address | &:r144_4 | -| complex.c:144:3:144:10 | Load | m144_5 | | complex.c:144:8:144:10 | Address | &:r144_1 | | complex.c:144:8:144:10 | Load | m133_5 | | complex.c:144:8:144:10 | StoreValue | r144_3 | @@ -1134,8 +962,6 @@ | ir.c:9:3:9:8 | Unary | r9_10 | | ir.c:9:3:9:31 | ChiPartial | partial:m9_12 | | ir.c:9:3:9:31 | ChiTotal | total:m9_8 | -| ir.c:9:3:9:31 | Load | m9_12 | -| ir.c:9:10:9:10 | Address | &:r9_11 | | ir.c:9:10:9:10 | Address | &:r9_11 | | ir.c:9:14:9:19 | Unary | r9_5 | | ir.c:9:14:9:31 | ChiPartial | partial:m9_7 | @@ -1152,8 +978,6 @@ | ir.c:10:3:10:8 | Unary | r10_10 | | ir.c:10:3:10:26 | ChiPartial | partial:m10_12 | | ir.c:10:3:10:26 | ChiTotal | total:m10_9 | -| ir.c:10:3:10:26 | Load | m10_12 | -| ir.c:10:10:10:10 | Address | &:r10_11 | | ir.c:10:10:10:10 | Address | &:r10_11 | | ir.c:10:14:10:17 | CallTarget | func:r10_1 | | ir.c:10:14:10:17 | ChiPartial | partial:m10_5 | @@ -6776,8 +6600,6 @@ | ir.cpp:1376:5:1376:28 | SideEffect | ~m1374_11 | | ir.cpp:1376:5:1376:28 | StoreValue | r1376_3 | | ir.cpp:1376:5:1376:30 | Address | &:r1376_1 | -| ir.cpp:1376:5:1376:30 | Address | &:r1376_1 | -| ir.cpp:1376:5:1376:30 | Load | m1376_6 | | ir.cpp:1379:6:1379:30 | ChiPartial | partial:m1379_3 | | ir.cpp:1379:6:1379:30 | ChiTotal | total:m1379_2 | | ir.cpp:1379:6:1379:30 | SideEffect | ~m1388_5 | @@ -6852,8 +6674,6 @@ | ir.cpp:1388:5:1388:37 | SideEffect | ~m1386_10 | | ir.cpp:1388:5:1388:37 | StoreValue | r1388_3 | | ir.cpp:1388:5:1388:39 | Address | &:r1388_1 | -| ir.cpp:1388:5:1388:39 | Address | &:r1388_1 | -| ir.cpp:1388:5:1388:39 | Load | m1388_6 | | ir.cpp:1391:6:1391:31 | ChiPartial | partial:m1391_3 | | ir.cpp:1391:6:1391:31 | ChiTotal | total:m1391_2 | | ir.cpp:1391:6:1391:31 | SideEffect | ~m1401_6 | @@ -6953,8 +6773,6 @@ | ir.cpp:1399:5:1399:38 | SideEffect | ~m1398_10 | | ir.cpp:1399:5:1399:38 | StoreValue | r1399_3 | | ir.cpp:1399:5:1399:40 | Address | &:r1399_1 | -| ir.cpp:1399:5:1399:40 | Address | &:r1399_1 | -| ir.cpp:1399:5:1399:40 | Load | m1399_6 | | ir.cpp:1401:9:1401:9 | Address | &:r1401_1 | | ir.cpp:1401:13:1401:41 | CallTarget | func:r1401_3 | | ir.cpp:1401:13:1401:41 | ChiPartial | partial:m1401_5 | @@ -10233,8 +10051,6 @@ | try_except.c:9:5:9:17 | SideEffect | ~m6_4 | | try_except.c:9:19:9:19 | Arg(0) | 0:r9_2 | | try_except.c:10:5:10:5 | Address | &:r10_3 | -| try_except.c:10:5:10:5 | Address | &:r10_3 | -| try_except.c:10:5:10:9 | Load | m10_4 | | try_except.c:10:9:10:9 | Address | &:r10_1 | | try_except.c:10:9:10:9 | Load | m7_5 | | try_except.c:10:9:10:9 | StoreValue | r10_2 | @@ -10255,8 +10071,6 @@ | try_except.c:21:5:21:17 | SideEffect | ~m18_4 | | try_except.c:21:19:21:19 | Arg(0) | 0:r21_2 | | try_except.c:22:5:22:5 | Address | &:r22_3 | -| try_except.c:22:5:22:5 | Address | &:r22_3 | -| try_except.c:22:5:22:9 | Load | m22_4 | | try_except.c:22:9:22:9 | Address | &:r22_1 | | try_except.c:22:9:22:9 | Load | m19_5 | | try_except.c:22:9:22:9 | StoreValue | r22_2 | 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 082f4f2ee756..72cb60c3eedc 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -170,7 +170,6 @@ complex.c: # 3| r3_2(_Complex float) = Convert : r3_1 # 3| r3_3(glval<_Complex float>) = VariableAddress[cf] : # 3| mu3_4(_Complex float) = Store[cf] : &:r3_3, r3_2 -# 3| r3_5(_Complex float) = Load[cf] : &:r3_3, ~m? # 4| r4_1(glval<_Complex double>) = VariableAddress[cd] : # 4| r4_2(double) = Constant[3.0] : # 4| r4_3(_Complex double) = Convert : r4_2 @@ -179,7 +178,6 @@ complex.c: # 5| r5_2(_Complex double) = Convert : r5_1 # 5| r5_3(glval<_Complex double>) = VariableAddress[cd] : # 5| mu5_4(_Complex double) = Store[cd] : &:r5_3, r5_2 -# 5| r5_5(_Complex double) = Load[cd] : &:r5_3, ~m? # 6| r6_1(glval<_Complex long double>) = VariableAddress[cld] : # 6| r6_2(double) = Constant[5.0] : # 6| r6_3(_Complex long double) = Convert : r6_2 @@ -188,7 +186,6 @@ complex.c: # 7| r7_2(_Complex long double) = Convert : r7_1 # 7| r7_3(glval<_Complex long double>) = VariableAddress[cld] : # 7| mu7_4(_Complex long double) = Store[cld] : &:r7_3, r7_2 -# 7| r7_5(_Complex long double) = Load[cld] : &:r7_3, ~m? # 9| r9_1(glval<_Imaginary float>) = VariableAddress[jf] : # 9| r9_2(_Imaginary float) = Constant[1.0i] : # 9| mu9_3(_Imaginary float) = Store[jf] : &:r9_1, r9_2 @@ -241,13 +238,11 @@ complex.c: # 26| r26_3(_Complex float) = CopyValue : r26_2 # 26| r26_4(glval<_Complex float>) = VariableAddress[cf3] : # 26| mu26_5(_Complex float) = Store[cf3] : &:r26_4, r26_3 -# 26| r26_6(_Complex float) = Load[cf3] : &:r26_4, ~m? # 27| r27_1(glval<_Complex float>) = VariableAddress[cf1] : # 27| r27_2(_Complex float) = Load[cf1] : &:r27_1, ~m? # 27| r27_3(_Complex float) = Negate : r27_2 # 27| r27_4(glval<_Complex float>) = VariableAddress[cf3] : # 27| mu27_5(_Complex float) = Store[cf3] : &:r27_4, r27_3 -# 27| r27_6(_Complex float) = Load[cf3] : &:r27_4, ~m? # 30| r30_1(glval<_Complex float>) = VariableAddress[cf1] : # 30| r30_2(_Complex float) = Load[cf1] : &:r30_1, ~m? # 30| r30_3(glval<_Complex float>) = VariableAddress[cf2] : @@ -255,7 +250,6 @@ complex.c: # 30| r30_5(_Complex float) = Add : r30_2, r30_4 # 30| r30_6(glval<_Complex float>) = VariableAddress[cf3] : # 30| mu30_7(_Complex float) = Store[cf3] : &:r30_6, r30_5 -# 30| r30_8(_Complex float) = Load[cf3] : &:r30_6, ~m? # 31| r31_1(glval<_Complex float>) = VariableAddress[cf1] : # 31| r31_2(_Complex float) = Load[cf1] : &:r31_1, ~m? # 31| r31_3(glval<_Complex float>) = VariableAddress[cf2] : @@ -263,7 +257,6 @@ complex.c: # 31| r31_5(_Complex float) = Sub : r31_2, r31_4 # 31| r31_6(glval<_Complex float>) = VariableAddress[cf3] : # 31| mu31_7(_Complex float) = Store[cf3] : &:r31_6, r31_5 -# 31| r31_8(_Complex float) = Load[cf3] : &:r31_6, ~m? # 32| r32_1(glval<_Complex float>) = VariableAddress[cf1] : # 32| r32_2(_Complex float) = Load[cf1] : &:r32_1, ~m? # 32| r32_3(glval<_Complex float>) = VariableAddress[cf2] : @@ -271,7 +264,6 @@ complex.c: # 32| r32_5(_Complex float) = Mul : r32_2, r32_4 # 32| r32_6(glval<_Complex float>) = VariableAddress[cf3] : # 32| mu32_7(_Complex float) = Store[cf3] : &:r32_6, r32_5 -# 32| r32_8(_Complex float) = Load[cf3] : &:r32_6, ~m? # 33| r33_1(glval<_Complex float>) = VariableAddress[cf1] : # 33| r33_2(_Complex float) = Load[cf1] : &:r33_1, ~m? # 33| r33_3(glval<_Complex float>) = VariableAddress[cf2] : @@ -279,19 +271,16 @@ complex.c: # 33| r33_5(_Complex float) = Div : r33_2, r33_4 # 33| r33_6(glval<_Complex float>) = VariableAddress[cf3] : # 33| mu33_7(_Complex float) = Store[cf3] : &:r33_6, r33_5 -# 33| r33_8(_Complex float) = Load[cf3] : &:r33_6, ~m? # 36| r36_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 36| r36_2(_Imaginary float) = Load[jf1] : &:r36_1, ~m? # 36| r36_3(_Imaginary float) = CopyValue : r36_2 # 36| r36_4(glval<_Imaginary float>) = VariableAddress[jf3] : # 36| mu36_5(_Imaginary float) = Store[jf3] : &:r36_4, r36_3 -# 36| r36_6(_Imaginary float) = Load[jf3] : &:r36_4, ~m? # 37| r37_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 37| r37_2(_Imaginary float) = Load[jf1] : &:r37_1, ~m? # 37| r37_3(_Imaginary float) = Negate : r37_2 # 37| r37_4(glval<_Imaginary float>) = VariableAddress[jf3] : # 37| mu37_5(_Imaginary float) = Store[jf3] : &:r37_4, r37_3 -# 37| r37_6(_Imaginary float) = Load[jf3] : &:r37_4, ~m? # 40| r40_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 40| r40_2(_Imaginary float) = Load[jf1] : &:r40_1, ~m? # 40| r40_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -299,7 +288,6 @@ complex.c: # 40| r40_5(_Imaginary float) = Add : r40_2, r40_4 # 40| r40_6(glval<_Imaginary float>) = VariableAddress[jf3] : # 40| mu40_7(_Imaginary float) = Store[jf3] : &:r40_6, r40_5 -# 40| r40_8(_Imaginary float) = Load[jf3] : &:r40_6, ~m? # 41| r41_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 41| r41_2(_Imaginary float) = Load[jf1] : &:r41_1, ~m? # 41| r41_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -307,7 +295,6 @@ complex.c: # 41| r41_5(_Imaginary float) = Sub : r41_2, r41_4 # 41| r41_6(glval<_Imaginary float>) = VariableAddress[jf3] : # 41| mu41_7(_Imaginary float) = Store[jf3] : &:r41_6, r41_5 -# 41| r41_8(_Imaginary float) = Load[jf3] : &:r41_6, ~m? # 42| r42_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 42| r42_2(_Imaginary float) = Load[jf1] : &:r42_1, ~m? # 42| r42_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -315,7 +302,6 @@ complex.c: # 42| r42_5(float) = Mul : r42_2, r42_4 # 42| r42_6(glval) = VariableAddress[f3] : # 42| mu42_7(float) = Store[f3] : &:r42_6, r42_5 -# 42| r42_8(float) = Load[f3] : &:r42_6, ~m? # 43| r43_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 43| r43_2(_Imaginary float) = Load[jf1] : &:r43_1, ~m? # 43| r43_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -323,7 +309,6 @@ complex.c: # 43| r43_5(float) = Div : r43_2, r43_4 # 43| r43_6(glval) = VariableAddress[f3] : # 43| mu43_7(float) = Store[f3] : &:r43_6, r43_5 -# 43| r43_8(float) = Load[f3] : &:r43_6, ~m? # 46| r46_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 46| r46_2(_Imaginary float) = Load[jf1] : &:r46_1, ~m? # 46| r46_3(glval) = VariableAddress[f2] : @@ -331,7 +316,6 @@ complex.c: # 46| r46_5(_Complex float) = Add : r46_2, r46_4 # 46| r46_6(glval<_Complex float>) = VariableAddress[cf3] : # 46| mu46_7(_Complex float) = Store[cf3] : &:r46_6, r46_5 -# 46| r46_8(_Complex float) = Load[cf3] : &:r46_6, ~m? # 47| r47_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 47| r47_2(_Imaginary float) = Load[jf1] : &:r47_1, ~m? # 47| r47_3(glval) = VariableAddress[f2] : @@ -339,7 +323,6 @@ complex.c: # 47| r47_5(_Complex float) = Sub : r47_2, r47_4 # 47| r47_6(glval<_Complex float>) = VariableAddress[cf3] : # 47| mu47_7(_Complex float) = Store[cf3] : &:r47_6, r47_5 -# 47| r47_8(_Complex float) = Load[cf3] : &:r47_6, ~m? # 48| r48_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 48| r48_2(_Imaginary float) = Load[jf1] : &:r48_1, ~m? # 48| r48_3(glval) = VariableAddress[f2] : @@ -347,7 +330,6 @@ complex.c: # 48| r48_5(_Imaginary float) = Mul : r48_2, r48_4 # 48| r48_6(glval<_Imaginary float>) = VariableAddress[jf3] : # 48| mu48_7(_Imaginary float) = Store[jf3] : &:r48_6, r48_5 -# 48| r48_8(_Imaginary float) = Load[jf3] : &:r48_6, ~m? # 49| r49_1(glval<_Imaginary float>) = VariableAddress[jf1] : # 49| r49_2(_Imaginary float) = Load[jf1] : &:r49_1, ~m? # 49| r49_3(glval) = VariableAddress[f2] : @@ -355,7 +337,6 @@ complex.c: # 49| r49_5(_Imaginary float) = Div : r49_2, r49_4 # 49| r49_6(glval<_Imaginary float>) = VariableAddress[jf3] : # 49| mu49_7(_Imaginary float) = Store[jf3] : &:r49_6, r49_5 -# 49| r49_8(_Imaginary float) = Load[jf3] : &:r49_6, ~m? # 52| r52_1(glval) = VariableAddress[f1] : # 52| r52_2(float) = Load[f1] : &:r52_1, ~m? # 52| r52_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -363,7 +344,6 @@ complex.c: # 52| r52_5(_Complex float) = Add : r52_2, r52_4 # 52| r52_6(glval<_Complex float>) = VariableAddress[cf3] : # 52| mu52_7(_Complex float) = Store[cf3] : &:r52_6, r52_5 -# 52| r52_8(_Complex float) = Load[cf3] : &:r52_6, ~m? # 53| r53_1(glval) = VariableAddress[f1] : # 53| r53_2(float) = Load[f1] : &:r53_1, ~m? # 53| r53_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -371,7 +351,6 @@ complex.c: # 53| r53_5(_Complex float) = Sub : r53_2, r53_4 # 53| r53_6(glval<_Complex float>) = VariableAddress[cf3] : # 53| mu53_7(_Complex float) = Store[cf3] : &:r53_6, r53_5 -# 53| r53_8(_Complex float) = Load[cf3] : &:r53_6, ~m? # 54| r54_1(glval) = VariableAddress[f1] : # 54| r54_2(float) = Load[f1] : &:r54_1, ~m? # 54| r54_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -379,7 +358,6 @@ complex.c: # 54| r54_5(_Imaginary float) = Mul : r54_2, r54_4 # 54| r54_6(glval<_Imaginary float>) = VariableAddress[jf3] : # 54| mu54_7(_Imaginary float) = Store[jf3] : &:r54_6, r54_5 -# 54| r54_8(_Imaginary float) = Load[jf3] : &:r54_6, ~m? # 55| r55_1(glval) = VariableAddress[f1] : # 55| r55_2(float) = Load[f1] : &:r55_1, ~m? # 55| r55_3(glval<_Imaginary float>) = VariableAddress[jf2] : @@ -387,7 +365,6 @@ complex.c: # 55| r55_5(_Imaginary float) = Div : r55_2, r55_4 # 55| r55_6(glval<_Imaginary float>) = VariableAddress[jf3] : # 55| mu55_7(_Imaginary float) = Store[jf3] : &:r55_6, r55_5 -# 55| r55_8(_Imaginary float) = Load[jf3] : &:r55_6, ~m? # 56| v56_1(void) = NoOp : # 14| v14_4(void) = ReturnVoid : # 14| v14_5(void) = AliasedUse : ~m? @@ -434,377 +411,314 @@ complex.c: # 70| r70_2(_Complex float) = Load[cf] : &:r70_1, ~m? # 70| r70_3(glval<_Complex float>) = VariableAddress[cf] : # 70| mu70_4(_Complex float) = Store[cf] : &:r70_3, r70_2 -# 70| r70_5(_Complex float) = Load[cf] : &:r70_3, ~m? # 71| r71_1(glval<_Complex double>) = VariableAddress[cd] : # 71| r71_2(_Complex double) = Load[cd] : &:r71_1, ~m? # 71| r71_3(_Complex float) = Convert : r71_2 # 71| r71_4(glval<_Complex float>) = VariableAddress[cf] : # 71| mu71_5(_Complex float) = Store[cf] : &:r71_4, r71_3 -# 71| r71_6(_Complex float) = Load[cf] : &:r71_4, ~m? # 72| r72_1(glval<_Complex long double>) = VariableAddress[cld] : # 72| r72_2(_Complex long double) = Load[cld] : &:r72_1, ~m? # 72| r72_3(_Complex float) = Convert : r72_2 # 72| r72_4(glval<_Complex float>) = VariableAddress[cf] : # 72| mu72_5(_Complex float) = Store[cf] : &:r72_4, r72_3 -# 72| r72_6(_Complex float) = Load[cf] : &:r72_4, ~m? # 73| r73_1(glval<_Complex float>) = VariableAddress[cf] : # 73| r73_2(_Complex float) = Load[cf] : &:r73_1, ~m? # 73| r73_3(_Complex double) = Convert : r73_2 # 73| r73_4(glval<_Complex double>) = VariableAddress[cd] : # 73| mu73_5(_Complex double) = Store[cd] : &:r73_4, r73_3 -# 73| r73_6(_Complex double) = Load[cd] : &:r73_4, ~m? # 74| r74_1(glval<_Complex double>) = VariableAddress[cd] : # 74| r74_2(_Complex double) = Load[cd] : &:r74_1, ~m? # 74| r74_3(glval<_Complex double>) = VariableAddress[cd] : # 74| mu74_4(_Complex double) = Store[cd] : &:r74_3, r74_2 -# 74| r74_5(_Complex double) = Load[cd] : &:r74_3, ~m? # 75| r75_1(glval<_Complex long double>) = VariableAddress[cld] : # 75| r75_2(_Complex long double) = Load[cld] : &:r75_1, ~m? # 75| r75_3(_Complex double) = Convert : r75_2 # 75| r75_4(glval<_Complex double>) = VariableAddress[cd] : # 75| mu75_5(_Complex double) = Store[cd] : &:r75_4, r75_3 -# 75| r75_6(_Complex double) = Load[cd] : &:r75_4, ~m? # 76| r76_1(glval<_Complex float>) = VariableAddress[cf] : # 76| r76_2(_Complex float) = Load[cf] : &:r76_1, ~m? # 76| r76_3(_Complex long double) = Convert : r76_2 # 76| r76_4(glval<_Complex long double>) = VariableAddress[cld] : # 76| mu76_5(_Complex long double) = Store[cld] : &:r76_4, r76_3 -# 76| r76_6(_Complex long double) = Load[cld] : &:r76_4, ~m? # 77| r77_1(glval<_Complex double>) = VariableAddress[cd] : # 77| r77_2(_Complex double) = Load[cd] : &:r77_1, ~m? # 77| r77_3(_Complex long double) = Convert : r77_2 # 77| r77_4(glval<_Complex long double>) = VariableAddress[cld] : # 77| mu77_5(_Complex long double) = Store[cld] : &:r77_4, r77_3 -# 77| r77_6(_Complex long double) = Load[cld] : &:r77_4, ~m? # 78| r78_1(glval<_Complex long double>) = VariableAddress[cld] : # 78| r78_2(_Complex long double) = Load[cld] : &:r78_1, ~m? # 78| r78_3(glval<_Complex long double>) = VariableAddress[cld] : # 78| mu78_4(_Complex long double) = Store[cld] : &:r78_3, r78_2 -# 78| r78_5(_Complex long double) = Load[cld] : &:r78_3, ~m? # 81| r81_1(glval) = VariableAddress[f] : # 81| r81_2(float) = Load[f] : &:r81_1, ~m? # 81| r81_3(_Complex float) = Convert : r81_2 # 81| r81_4(glval<_Complex float>) = VariableAddress[cf] : # 81| mu81_5(_Complex float) = Store[cf] : &:r81_4, r81_3 -# 81| r81_6(_Complex float) = Load[cf] : &:r81_4, ~m? # 82| r82_1(glval) = VariableAddress[d] : # 82| r82_2(double) = Load[d] : &:r82_1, ~m? # 82| r82_3(_Complex float) = Convert : r82_2 # 82| r82_4(glval<_Complex float>) = VariableAddress[cf] : # 82| mu82_5(_Complex float) = Store[cf] : &:r82_4, r82_3 -# 82| r82_6(_Complex float) = Load[cf] : &:r82_4, ~m? # 83| r83_1(glval) = VariableAddress[ld] : # 83| r83_2(long double) = Load[ld] : &:r83_1, ~m? # 83| r83_3(_Complex float) = Convert : r83_2 # 83| r83_4(glval<_Complex float>) = VariableAddress[cf] : # 83| mu83_5(_Complex float) = Store[cf] : &:r83_4, r83_3 -# 83| r83_6(_Complex float) = Load[cf] : &:r83_4, ~m? # 84| r84_1(glval) = VariableAddress[f] : # 84| r84_2(float) = Load[f] : &:r84_1, ~m? # 84| r84_3(_Complex double) = Convert : r84_2 # 84| r84_4(glval<_Complex double>) = VariableAddress[cd] : # 84| mu84_5(_Complex double) = Store[cd] : &:r84_4, r84_3 -# 84| r84_6(_Complex double) = Load[cd] : &:r84_4, ~m? # 85| r85_1(glval) = VariableAddress[d] : # 85| r85_2(double) = Load[d] : &:r85_1, ~m? # 85| r85_3(_Complex double) = Convert : r85_2 # 85| r85_4(glval<_Complex double>) = VariableAddress[cd] : # 85| mu85_5(_Complex double) = Store[cd] : &:r85_4, r85_3 -# 85| r85_6(_Complex double) = Load[cd] : &:r85_4, ~m? # 86| r86_1(glval) = VariableAddress[ld] : # 86| r86_2(long double) = Load[ld] : &:r86_1, ~m? # 86| r86_3(_Complex double) = Convert : r86_2 # 86| r86_4(glval<_Complex double>) = VariableAddress[cd] : # 86| mu86_5(_Complex double) = Store[cd] : &:r86_4, r86_3 -# 86| r86_6(_Complex double) = Load[cd] : &:r86_4, ~m? # 87| r87_1(glval) = VariableAddress[f] : # 87| r87_2(float) = Load[f] : &:r87_1, ~m? # 87| r87_3(_Complex long double) = Convert : r87_2 # 87| r87_4(glval<_Complex long double>) = VariableAddress[cld] : # 87| mu87_5(_Complex long double) = Store[cld] : &:r87_4, r87_3 -# 87| r87_6(_Complex long double) = Load[cld] : &:r87_4, ~m? # 88| r88_1(glval) = VariableAddress[d] : # 88| r88_2(double) = Load[d] : &:r88_1, ~m? # 88| r88_3(_Complex long double) = Convert : r88_2 # 88| r88_4(glval<_Complex long double>) = VariableAddress[cld] : # 88| mu88_5(_Complex long double) = Store[cld] : &:r88_4, r88_3 -# 88| r88_6(_Complex long double) = Load[cld] : &:r88_4, ~m? # 89| r89_1(glval) = VariableAddress[ld] : # 89| r89_2(long double) = Load[ld] : &:r89_1, ~m? # 89| r89_3(_Complex long double) = Convert : r89_2 # 89| r89_4(glval<_Complex long double>) = VariableAddress[cld] : # 89| mu89_5(_Complex long double) = Store[cld] : &:r89_4, r89_3 -# 89| r89_6(_Complex long double) = Load[cld] : &:r89_4, ~m? # 92| r92_1(glval<_Complex float>) = VariableAddress[cf] : # 92| r92_2(_Complex float) = Load[cf] : &:r92_1, ~m? # 92| r92_3(float) = Convert : r92_2 # 92| r92_4(glval) = VariableAddress[f] : # 92| mu92_5(float) = Store[f] : &:r92_4, r92_3 -# 92| r92_6(float) = Load[f] : &:r92_4, ~m? # 93| r93_1(glval<_Complex double>) = VariableAddress[cd] : # 93| r93_2(_Complex double) = Load[cd] : &:r93_1, ~m? # 93| r93_3(float) = Convert : r93_2 # 93| r93_4(glval) = VariableAddress[f] : # 93| mu93_5(float) = Store[f] : &:r93_4, r93_3 -# 93| r93_6(float) = Load[f] : &:r93_4, ~m? # 94| r94_1(glval<_Complex long double>) = VariableAddress[cld] : # 94| r94_2(_Complex long double) = Load[cld] : &:r94_1, ~m? # 94| r94_3(float) = Convert : r94_2 # 94| r94_4(glval) = VariableAddress[f] : # 94| mu94_5(float) = Store[f] : &:r94_4, r94_3 -# 94| r94_6(float) = Load[f] : &:r94_4, ~m? # 95| r95_1(glval<_Complex float>) = VariableAddress[cf] : # 95| r95_2(_Complex float) = Load[cf] : &:r95_1, ~m? # 95| r95_3(double) = Convert : r95_2 # 95| r95_4(glval) = VariableAddress[d] : # 95| mu95_5(double) = Store[d] : &:r95_4, r95_3 -# 95| r95_6(double) = Load[d] : &:r95_4, ~m? # 96| r96_1(glval<_Complex double>) = VariableAddress[cd] : # 96| r96_2(_Complex double) = Load[cd] : &:r96_1, ~m? # 96| r96_3(double) = Convert : r96_2 # 96| r96_4(glval) = VariableAddress[d] : # 96| mu96_5(double) = Store[d] : &:r96_4, r96_3 -# 96| r96_6(double) = Load[d] : &:r96_4, ~m? # 97| r97_1(glval<_Complex long double>) = VariableAddress[cld] : # 97| r97_2(_Complex long double) = Load[cld] : &:r97_1, ~m? # 97| r97_3(double) = Convert : r97_2 # 97| r97_4(glval) = VariableAddress[d] : # 97| mu97_5(double) = Store[d] : &:r97_4, r97_3 -# 97| r97_6(double) = Load[d] : &:r97_4, ~m? # 98| r98_1(glval<_Complex float>) = VariableAddress[cf] : # 98| r98_2(_Complex float) = Load[cf] : &:r98_1, ~m? # 98| r98_3(long double) = Convert : r98_2 # 98| r98_4(glval) = VariableAddress[ld] : # 98| mu98_5(long double) = Store[ld] : &:r98_4, r98_3 -# 98| r98_6(long double) = Load[ld] : &:r98_4, ~m? # 99| r99_1(glval<_Complex double>) = VariableAddress[cd] : # 99| r99_2(_Complex double) = Load[cd] : &:r99_1, ~m? # 99| r99_3(long double) = Convert : r99_2 # 99| r99_4(glval) = VariableAddress[ld] : # 99| mu99_5(long double) = Store[ld] : &:r99_4, r99_3 -# 99| r99_6(long double) = Load[ld] : &:r99_4, ~m? # 100| r100_1(glval<_Complex long double>) = VariableAddress[cld] : # 100| r100_2(_Complex long double) = Load[cld] : &:r100_1, ~m? # 100| r100_3(long double) = Convert : r100_2 # 100| r100_4(glval) = VariableAddress[ld] : # 100| mu100_5(long double) = Store[ld] : &:r100_4, r100_3 -# 100| r100_6(long double) = Load[ld] : &:r100_4, ~m? # 103| r103_1(glval<_Imaginary float>) = VariableAddress[jf] : # 103| r103_2(_Imaginary float) = Load[jf] : &:r103_1, ~m? # 103| r103_3(_Complex float) = Convert : r103_2 # 103| r103_4(glval<_Complex float>) = VariableAddress[cf] : # 103| mu103_5(_Complex float) = Store[cf] : &:r103_4, r103_3 -# 103| r103_6(_Complex float) = Load[cf] : &:r103_4, ~m? # 104| r104_1(glval<_Imaginary double>) = VariableAddress[jd] : # 104| r104_2(_Imaginary double) = Load[jd] : &:r104_1, ~m? # 104| r104_3(_Complex float) = Convert : r104_2 # 104| r104_4(glval<_Complex float>) = VariableAddress[cf] : # 104| mu104_5(_Complex float) = Store[cf] : &:r104_4, r104_3 -# 104| r104_6(_Complex float) = Load[cf] : &:r104_4, ~m? # 105| r105_1(glval<_Imaginary long double>) = VariableAddress[jld] : # 105| r105_2(_Imaginary long double) = Load[jld] : &:r105_1, ~m? # 105| r105_3(_Complex float) = Convert : r105_2 # 105| r105_4(glval<_Complex float>) = VariableAddress[cf] : # 105| mu105_5(_Complex float) = Store[cf] : &:r105_4, r105_3 -# 105| r105_6(_Complex float) = Load[cf] : &:r105_4, ~m? # 106| r106_1(glval<_Imaginary float>) = VariableAddress[jf] : # 106| r106_2(_Imaginary float) = Load[jf] : &:r106_1, ~m? # 106| r106_3(_Complex double) = Convert : r106_2 # 106| r106_4(glval<_Complex double>) = VariableAddress[cd] : # 106| mu106_5(_Complex double) = Store[cd] : &:r106_4, r106_3 -# 106| r106_6(_Complex double) = Load[cd] : &:r106_4, ~m? # 107| r107_1(glval<_Imaginary double>) = VariableAddress[jd] : # 107| r107_2(_Imaginary double) = Load[jd] : &:r107_1, ~m? # 107| r107_3(_Complex double) = Convert : r107_2 # 107| r107_4(glval<_Complex double>) = VariableAddress[cd] : # 107| mu107_5(_Complex double) = Store[cd] : &:r107_4, r107_3 -# 107| r107_6(_Complex double) = Load[cd] : &:r107_4, ~m? # 108| r108_1(glval<_Imaginary long double>) = VariableAddress[jld] : # 108| r108_2(_Imaginary long double) = Load[jld] : &:r108_1, ~m? # 108| r108_3(_Complex double) = Convert : r108_2 # 108| r108_4(glval<_Complex double>) = VariableAddress[cd] : # 108| mu108_5(_Complex double) = Store[cd] : &:r108_4, r108_3 -# 108| r108_6(_Complex double) = Load[cd] : &:r108_4, ~m? # 109| r109_1(glval<_Imaginary float>) = VariableAddress[jf] : # 109| r109_2(_Imaginary float) = Load[jf] : &:r109_1, ~m? # 109| r109_3(_Complex long double) = Convert : r109_2 # 109| r109_4(glval<_Complex long double>) = VariableAddress[cld] : # 109| mu109_5(_Complex long double) = Store[cld] : &:r109_4, r109_3 -# 109| r109_6(_Complex long double) = Load[cld] : &:r109_4, ~m? # 110| r110_1(glval<_Imaginary double>) = VariableAddress[jd] : # 110| r110_2(_Imaginary double) = Load[jd] : &:r110_1, ~m? # 110| r110_3(_Complex long double) = Convert : r110_2 # 110| r110_4(glval<_Complex long double>) = VariableAddress[cld] : # 110| mu110_5(_Complex long double) = Store[cld] : &:r110_4, r110_3 -# 110| r110_6(_Complex long double) = Load[cld] : &:r110_4, ~m? # 111| r111_1(glval<_Imaginary long double>) = VariableAddress[jld] : # 111| r111_2(_Imaginary long double) = Load[jld] : &:r111_1, ~m? # 111| r111_3(_Complex long double) = Convert : r111_2 # 111| r111_4(glval<_Complex long double>) = VariableAddress[cld] : # 111| mu111_5(_Complex long double) = Store[cld] : &:r111_4, r111_3 -# 111| r111_6(_Complex long double) = Load[cld] : &:r111_4, ~m? # 114| r114_1(glval<_Complex float>) = VariableAddress[cf] : # 114| r114_2(_Complex float) = Load[cf] : &:r114_1, ~m? # 114| r114_3(_Imaginary float) = Convert : r114_2 # 114| r114_4(glval<_Imaginary float>) = VariableAddress[jf] : # 114| mu114_5(_Imaginary float) = Store[jf] : &:r114_4, r114_3 -# 114| r114_6(_Imaginary float) = Load[jf] : &:r114_4, ~m? # 115| r115_1(glval<_Complex double>) = VariableAddress[cd] : # 115| r115_2(_Complex double) = Load[cd] : &:r115_1, ~m? # 115| r115_3(_Imaginary float) = Convert : r115_2 # 115| r115_4(glval<_Imaginary float>) = VariableAddress[jf] : # 115| mu115_5(_Imaginary float) = Store[jf] : &:r115_4, r115_3 -# 115| r115_6(_Imaginary float) = Load[jf] : &:r115_4, ~m? # 116| r116_1(glval<_Complex long double>) = VariableAddress[cld] : # 116| r116_2(_Complex long double) = Load[cld] : &:r116_1, ~m? # 116| r116_3(_Imaginary float) = Convert : r116_2 # 116| r116_4(glval<_Imaginary float>) = VariableAddress[jf] : # 116| mu116_5(_Imaginary float) = Store[jf] : &:r116_4, r116_3 -# 116| r116_6(_Imaginary float) = Load[jf] : &:r116_4, ~m? # 117| r117_1(glval<_Complex float>) = VariableAddress[cf] : # 117| r117_2(_Complex float) = Load[cf] : &:r117_1, ~m? # 117| r117_3(_Imaginary double) = Convert : r117_2 # 117| r117_4(glval<_Imaginary double>) = VariableAddress[jd] : # 117| mu117_5(_Imaginary double) = Store[jd] : &:r117_4, r117_3 -# 117| r117_6(_Imaginary double) = Load[jd] : &:r117_4, ~m? # 118| r118_1(glval<_Complex double>) = VariableAddress[cd] : # 118| r118_2(_Complex double) = Load[cd] : &:r118_1, ~m? # 118| r118_3(_Imaginary double) = Convert : r118_2 # 118| r118_4(glval<_Imaginary double>) = VariableAddress[jd] : # 118| mu118_5(_Imaginary double) = Store[jd] : &:r118_4, r118_3 -# 118| r118_6(_Imaginary double) = Load[jd] : &:r118_4, ~m? # 119| r119_1(glval<_Complex long double>) = VariableAddress[cld] : # 119| r119_2(_Complex long double) = Load[cld] : &:r119_1, ~m? # 119| r119_3(_Imaginary double) = Convert : r119_2 # 119| r119_4(glval<_Imaginary double>) = VariableAddress[jd] : # 119| mu119_5(_Imaginary double) = Store[jd] : &:r119_4, r119_3 -# 119| r119_6(_Imaginary double) = Load[jd] : &:r119_4, ~m? # 120| r120_1(glval<_Complex float>) = VariableAddress[cf] : # 120| r120_2(_Complex float) = Load[cf] : &:r120_1, ~m? # 120| r120_3(_Imaginary long double) = Convert : r120_2 # 120| r120_4(glval<_Imaginary long double>) = VariableAddress[jld] : # 120| mu120_5(_Imaginary long double) = Store[jld] : &:r120_4, r120_3 -# 120| r120_6(_Imaginary long double) = Load[jld] : &:r120_4, ~m? # 121| r121_1(glval<_Complex double>) = VariableAddress[cd] : # 121| r121_2(_Complex double) = Load[cd] : &:r121_1, ~m? # 121| r121_3(_Imaginary long double) = Convert : r121_2 # 121| r121_4(glval<_Imaginary long double>) = VariableAddress[jld] : # 121| mu121_5(_Imaginary long double) = Store[jld] : &:r121_4, r121_3 -# 121| r121_6(_Imaginary long double) = Load[jld] : &:r121_4, ~m? # 122| r122_1(glval<_Complex long double>) = VariableAddress[cld] : # 122| r122_2(_Complex long double) = Load[cld] : &:r122_1, ~m? # 122| r122_3(_Imaginary long double) = Convert : r122_2 # 122| r122_4(glval<_Imaginary long double>) = VariableAddress[jld] : # 122| mu122_5(_Imaginary long double) = Store[jld] : &:r122_4, r122_3 -# 122| r122_6(_Imaginary long double) = Load[jld] : &:r122_4, ~m? # 125| r125_1(glval) = VariableAddress[f] : # 125| r125_2(float) = Load[f] : &:r125_1, ~m? # 125| r125_3(_Imaginary float) = Convert : r125_2 # 125| r125_4(glval<_Imaginary float>) = VariableAddress[jf] : # 125| mu125_5(_Imaginary float) = Store[jf] : &:r125_4, r125_3 -# 125| r125_6(_Imaginary float) = Load[jf] : &:r125_4, ~m? # 126| r126_1(glval) = VariableAddress[d] : # 126| r126_2(double) = Load[d] : &:r126_1, ~m? # 126| r126_3(_Imaginary float) = Convert : r126_2 # 126| r126_4(glval<_Imaginary float>) = VariableAddress[jf] : # 126| mu126_5(_Imaginary float) = Store[jf] : &:r126_4, r126_3 -# 126| r126_6(_Imaginary float) = Load[jf] : &:r126_4, ~m? # 127| r127_1(glval) = VariableAddress[ld] : # 127| r127_2(long double) = Load[ld] : &:r127_1, ~m? # 127| r127_3(_Imaginary float) = Convert : r127_2 # 127| r127_4(glval<_Imaginary float>) = VariableAddress[jf] : # 127| mu127_5(_Imaginary float) = Store[jf] : &:r127_4, r127_3 -# 127| r127_6(_Imaginary float) = Load[jf] : &:r127_4, ~m? # 128| r128_1(glval) = VariableAddress[f] : # 128| r128_2(float) = Load[f] : &:r128_1, ~m? # 128| r128_3(_Imaginary double) = Convert : r128_2 # 128| r128_4(glval<_Imaginary double>) = VariableAddress[jd] : # 128| mu128_5(_Imaginary double) = Store[jd] : &:r128_4, r128_3 -# 128| r128_6(_Imaginary double) = Load[jd] : &:r128_4, ~m? # 129| r129_1(glval) = VariableAddress[d] : # 129| r129_2(double) = Load[d] : &:r129_1, ~m? # 129| r129_3(_Imaginary double) = Convert : r129_2 # 129| r129_4(glval<_Imaginary double>) = VariableAddress[jd] : # 129| mu129_5(_Imaginary double) = Store[jd] : &:r129_4, r129_3 -# 129| r129_6(_Imaginary double) = Load[jd] : &:r129_4, ~m? # 130| r130_1(glval) = VariableAddress[ld] : # 130| r130_2(long double) = Load[ld] : &:r130_1, ~m? # 130| r130_3(_Imaginary double) = Convert : r130_2 # 130| r130_4(glval<_Imaginary double>) = VariableAddress[jd] : # 130| mu130_5(_Imaginary double) = Store[jd] : &:r130_4, r130_3 -# 130| r130_6(_Imaginary double) = Load[jd] : &:r130_4, ~m? # 131| r131_1(glval) = VariableAddress[f] : # 131| r131_2(float) = Load[f] : &:r131_1, ~m? # 131| r131_3(_Imaginary long double) = Convert : r131_2 # 131| r131_4(glval<_Imaginary long double>) = VariableAddress[jld] : # 131| mu131_5(_Imaginary long double) = Store[jld] : &:r131_4, r131_3 -# 131| r131_6(_Imaginary long double) = Load[jld] : &:r131_4, ~m? # 132| r132_1(glval) = VariableAddress[d] : # 132| r132_2(double) = Load[d] : &:r132_1, ~m? # 132| r132_3(_Imaginary long double) = Convert : r132_2 # 132| r132_4(glval<_Imaginary long double>) = VariableAddress[jld] : # 132| mu132_5(_Imaginary long double) = Store[jld] : &:r132_4, r132_3 -# 132| r132_6(_Imaginary long double) = Load[jld] : &:r132_4, ~m? # 133| r133_1(glval) = VariableAddress[ld] : # 133| r133_2(long double) = Load[ld] : &:r133_1, ~m? # 133| r133_3(_Imaginary long double) = Convert : r133_2 # 133| r133_4(glval<_Imaginary long double>) = VariableAddress[jld] : # 133| mu133_5(_Imaginary long double) = Store[jld] : &:r133_4, r133_3 -# 133| r133_6(_Imaginary long double) = Load[jld] : &:r133_4, ~m? # 136| r136_1(glval<_Imaginary float>) = VariableAddress[jf] : # 136| r136_2(_Imaginary float) = Load[jf] : &:r136_1, ~m? # 136| r136_3(float) = Convert : r136_2 # 136| r136_4(glval) = VariableAddress[f] : # 136| mu136_5(float) = Store[f] : &:r136_4, r136_3 -# 136| r136_6(float) = Load[f] : &:r136_4, ~m? # 137| r137_1(glval<_Imaginary double>) = VariableAddress[jd] : # 137| r137_2(_Imaginary double) = Load[jd] : &:r137_1, ~m? # 137| r137_3(float) = Convert : r137_2 # 137| r137_4(glval) = VariableAddress[f] : # 137| mu137_5(float) = Store[f] : &:r137_4, r137_3 -# 137| r137_6(float) = Load[f] : &:r137_4, ~m? # 138| r138_1(glval<_Imaginary long double>) = VariableAddress[jld] : # 138| r138_2(_Imaginary long double) = Load[jld] : &:r138_1, ~m? # 138| r138_3(float) = Convert : r138_2 # 138| r138_4(glval) = VariableAddress[f] : # 138| mu138_5(float) = Store[f] : &:r138_4, r138_3 -# 138| r138_6(float) = Load[f] : &:r138_4, ~m? # 139| r139_1(glval<_Imaginary float>) = VariableAddress[jf] : # 139| r139_2(_Imaginary float) = Load[jf] : &:r139_1, ~m? # 139| r139_3(double) = Convert : r139_2 # 139| r139_4(glval) = VariableAddress[d] : # 139| mu139_5(double) = Store[d] : &:r139_4, r139_3 -# 139| r139_6(double) = Load[d] : &:r139_4, ~m? # 140| r140_1(glval<_Imaginary double>) = VariableAddress[jd] : # 140| r140_2(_Imaginary double) = Load[jd] : &:r140_1, ~m? # 140| r140_3(double) = Convert : r140_2 # 140| r140_4(glval) = VariableAddress[d] : # 140| mu140_5(double) = Store[d] : &:r140_4, r140_3 -# 140| r140_6(double) = Load[d] : &:r140_4, ~m? # 141| r141_1(glval<_Imaginary long double>) = VariableAddress[jld] : # 141| r141_2(_Imaginary long double) = Load[jld] : &:r141_1, ~m? # 141| r141_3(double) = Convert : r141_2 # 141| r141_4(glval) = VariableAddress[d] : # 141| mu141_5(double) = Store[d] : &:r141_4, r141_3 -# 141| r141_6(double) = Load[d] : &:r141_4, ~m? # 142| r142_1(glval<_Imaginary float>) = VariableAddress[jf] : # 142| r142_2(_Imaginary float) = Load[jf] : &:r142_1, ~m? # 142| r142_3(long double) = Convert : r142_2 # 142| r142_4(glval) = VariableAddress[ld] : # 142| mu142_5(long double) = Store[ld] : &:r142_4, r142_3 -# 142| r142_6(long double) = Load[ld] : &:r142_4, ~m? # 143| r143_1(glval<_Imaginary double>) = VariableAddress[jd] : # 143| r143_2(_Imaginary double) = Load[jd] : &:r143_1, ~m? # 143| r143_3(long double) = Convert : r143_2 # 143| r143_4(glval) = VariableAddress[ld] : # 143| mu143_5(long double) = Store[ld] : &:r143_4, r143_3 -# 143| r143_6(long double) = Load[ld] : &:r143_4, ~m? # 144| r144_1(glval<_Imaginary long double>) = VariableAddress[jld] : # 144| r144_2(_Imaginary long double) = Load[jld] : &:r144_1, ~m? # 144| r144_3(long double) = Convert : r144_2 # 144| r144_4(glval) = VariableAddress[ld] : # 144| mu144_5(long double) = Store[ld] : &:r144_4, r144_3 -# 144| r144_6(long double) = Load[ld] : &:r144_4, ~m? # 145| v145_1(void) = NoOp : # 58| v58_4(void) = ReturnVoid : # 58| v58_5(void) = AliasedUse : ~m? @@ -837,7 +751,6 @@ ir.c: # 9| r9_9(glval<(unnamed class/struct/union)>) = VariableAddress[coords] : # 9| r9_10(glval) = FieldAddress[x] : r9_9 # 9| mu9_11(int) = Store[?] : &:r9_10, r9_8 -# 9| r9_12(int) = Load[?] : &:r9_10, ~m? # 10| r10_1(glval) = FunctionAddress[getX] : # 10| r10_2(glval<(unnamed class/struct/union)>) = VariableAddress[coords] : # 10| r10_3(struct *) = CopyValue : r10_2 @@ -848,7 +761,6 @@ ir.c: # 10| r10_8(glval<(unnamed class/struct/union)>) = VariableAddress[coords] : # 10| r10_9(glval) = FieldAddress[x] : r10_8 # 10| mu10_10(int) = Store[?] : &:r10_9, r10_4 -# 10| r10_11(int) = Load[?] : &:r10_9, ~m? # 11| v11_1(void) = NoOp : # 7| v7_6(void) = ReturnVoid : # 7| v7_7(void) = AliasedUse : ~m? @@ -7806,7 +7718,6 @@ ir.cpp: # 1376| r1376_3(String) = Call[defaultConstruct] : func:r1376_2 # 1376| mu1376_4(unknown) = ^CallSideEffect : ~m? # 1376| mu1376_5(String) = Store[#temp1376:5] : &:r1376_1, r1376_3 -# 1376| r1376_6(String) = Load[#temp1376:5] : &:r1376_1, ~m? # 1377| v1377_1(void) = NoOp : # 1365| v1365_4(void) = ReturnVoid : # 1365| v1365_5(void) = AliasedUse : ~m? @@ -7871,7 +7782,6 @@ ir.cpp: # 1388| r1388_3(destructor_only) = Call[defaultConstruct] : func:r1388_2 # 1388| mu1388_4(unknown) = ^CallSideEffect : ~m? # 1388| mu1388_5(destructor_only) = Store[#temp1388:5] : &:r1388_1, r1388_3 -# 1388| r1388_6(destructor_only) = Load[#temp1388:5] : &:r1388_1, ~m? # 1389| v1389_1(void) = NoOp : # 1379| v1379_4(void) = ReturnVoid : # 1379| v1379_5(void) = AliasedUse : ~m? @@ -7949,7 +7859,6 @@ ir.cpp: # 1399| r1399_3(copy_constructor) = Call[defaultConstruct] : func:r1399_2 # 1399| mu1399_4(unknown) = ^CallSideEffect : ~m? # 1399| mu1399_5(copy_constructor) = Store[#temp1399:5] : &:r1399_1, r1399_3 -# 1399| r1399_6(copy_constructor) = Load[#temp1399:5] : &:r1399_1, ~m? # 1401| r1401_1(glval) = VariableAddress[y] : # 1401| r1401_2(glval) = VariableAddress[#temp1401:13] : # 1401| r1401_3(glval) = FunctionAddress[returnValue] : @@ -11647,7 +11556,6 @@ try_except.c: # 10| r10_2(int) = Load[y] : &:r10_1, ~m? # 10| r10_3(glval) = VariableAddress[x] : # 10| mu10_4(int) = Store[x] : &:r10_3, r10_2 -# 10| r10_5(int) = Load[x] : &:r10_3, ~m? # 11| r11_1(glval) = FunctionAddress[ProbeFunction] : # 11| r11_2(int) = Constant[0] : # 11| v11_3(void) = Call[ProbeFunction] : func:r11_1, 0:r11_2 @@ -11711,7 +11619,6 @@ try_except.c: # 22| r22_2(int) = Load[y] : &:r22_1, ~m? # 22| r22_3(glval) = VariableAddress[x] : # 22| mu22_4(int) = Store[x] : &:r22_3, r22_2 -# 22| r22_5(int) = Load[x] : &:r22_3, ~m? # 23| r23_1(glval) = FunctionAddress[ProbeFunction] : # 23| r23_2(int) = Constant[0] : # 23| v23_3(void) = Call[ProbeFunction] : func:r23_1, 0:r23_2 diff --git a/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected b/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected index d223de293a61..71d42c826e8a 100644 --- a/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected +++ b/cpp/ql/test/library-tests/syntax-zoo/dataflow-ir-consistency.expected @@ -34,8 +34,6 @@ uniquePostUpdate | ir.cpp:777:3:777:11 | this indirection | Node has multiple PostUpdateNodes. | | ir.cpp:786:3:786:11 | this indirection | Node has multiple PostUpdateNodes. | | ir.cpp:795:3:795:11 | this indirection | Node has multiple PostUpdateNodes. | -| misc.c:130:5:130:5 | s indirection | Node has multiple PostUpdateNodes. | -| misc.c:131:5:131:6 | sp indirection | Node has multiple PostUpdateNodes. | | static_init_templates.cpp:240:7:240:7 | this indirection | Node has multiple PostUpdateNodes. | postIsInSameCallable reverseRead diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/ArithmeticWithExtremeValues.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/ArithmeticWithExtremeValues.expected index 79d2c8633d09..c8d2e10bd85b 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/ArithmeticWithExtremeValues.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/ArithmeticWithExtremeValues.expected @@ -3,5 +3,4 @@ | test.c:50:3:50:5 | sc3 | $@ flows to an operand of an arithmetic expression, potentially causing an overflow. | test.c:49:9:49:16 | 127 | Extreme value | | test.c:59:3:59:5 | sc6 | $@ flows to an operand of an arithmetic expression, potentially causing an overflow. | test.c:58:9:58:16 | 127 | Extreme value | | test.c:63:3:63:5 | sc8 | $@ flows to an operand of an arithmetic expression, potentially causing an underflow. | test.c:62:9:62:16 | - ... | Extreme value | -| test.c:68:3:68:6 | sc10 | $@ flows to an operand of an arithmetic expression, potentially causing an overflow. | test.c:68:11:68:18 | 127 | Extreme value | | test.c:124:9:124:9 | x | $@ flows to an operand of an arithmetic expression, potentially causing an overflow. | test.c:118:17:118:23 | 2147483647 | Extreme value | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/test.c b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/test.c index 8550e6c93d8d..8760641c8e2d 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/test.c +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticWithExtremeValues/test.c @@ -65,7 +65,7 @@ void test_crement() { sc9 += 1; // GOOD sc10 = 1; - sc10 += CHAR_MAX; // BAD + sc10 += CHAR_MAX; // BAD [NOT DETECTED] } void test_negatives() {