diff --git a/cpp/ql/lib/change-notes/2024-04-18-param-nodes.md b/cpp/ql/lib/change-notes/2024-04-18-param-nodes.md new file mode 100644 index 000000000000..1911af38d8a0 --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-04-18-param-nodes.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Parameters of functions without definitions now have `ParameterNode`s. diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll index 2aff0ebf4701..db80d5a31a69 100644 --- a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll +++ b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll @@ -1371,17 +1371,7 @@ class ReuseExpr extends Expr, @reuseexpr { /** * Gets the expression that is being re-used. */ - Expr getReusedExpr() { - // In the case of a prvalue, the extractor outputs the expression - // before conversion, but the converted expression is intended. - if this.isPRValueCategory() - then result = this.getBaseReusedExpr().getFullyConverted() - else result = this.getBaseReusedExpr() - } - - private Expr getBaseReusedExpr() { - expr_reuse(underlyingElement(this), unresolveElement(result), _) - } + Expr getReusedExpr() { expr_reuse(underlyingElement(this), unresolveElement(result), _) } override Type getType() { result = this.getReusedExpr().getType() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll index 60039116673e..c1516df32b63 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll @@ -78,6 +78,8 @@ module NodeStars { result = n.(PostUpdateNodeImpl).getIndirectionIndex() or result = n.(FinalParameterNode).getIndirectionIndex() + or + result = n.(BodyLessParameterNodeImpl).getIndirectionIndex() } /** @@ -1247,7 +1249,7 @@ module IsUnreachableInCall { predicate isUnreachableInCall(Node n, DataFlowCall call) { exists( - DirectParameterNode paramNode, ConstantIntegralTypeArgumentNode arg, + InstructionDirectParameterNode paramNode, ConstantIntegralTypeArgumentNode arg, IntegerConstantInstruction constant, int k, Operand left, Operand right, IRBlock block | // arg flows into `paramNode` @@ -1461,7 +1463,7 @@ private predicate getAdditionalFlowIntoCallNodeTermStep(Node node1, Node node2) /** Gets the `IRVariable` associated with the parameter node `p`. */ pragma[nomagic] private IRVariable getIRVariableForParameterNode(ParameterNode p) { - result = p.(DirectParameterNode).getIRVariable() + result = p.(InstructionDirectParameterNode).getIRVariable() or result.getAst() = p.(IndirectParameterNode).getParameter() } diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll index 5f10467ca417..94729c47fcb3 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowUtil.qll @@ -61,6 +61,15 @@ private newtype TIRDataFlowNode = } or TFinalGlobalValue(Ssa::GlobalUse globalUse) or TInitialGlobalValue(Ssa::GlobalDef globalUse) or + TBodyLessParameterNodeImpl(Parameter p, int indirectionIndex) { + // Rule out parameters of catch blocks. + not exists(p.getCatchBlock()) and + // We subtract one because `getMaxIndirectionsForType` returns the maximum + // indirection for a glvalue of a given type, and this doesn't apply to + // parameters. + indirectionIndex = [0 .. Ssa::getMaxIndirectionsForType(p.getUnspecifiedType()) - 1] and + not any(InitializeParameterInstruction init).getParameter() = p + } or TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) /** @@ -389,7 +398,7 @@ class Node extends TIRDataFlowNode { index = 0 and result = this.(ExplicitParameterNode).getParameter() or - this.(IndirectParameterNode).hasInstructionAndIndirectionIndex(_, index) and + this.(IndirectParameterNode).getIndirectionIndex() = index and result = this.(IndirectParameterNode).getParameter() } @@ -737,6 +746,40 @@ class InitialGlobalValue extends Node, TInitialGlobalValue { override string toStringImpl() { result = globalDef.toString() } } +/** + * INTERNAL: do not use. + * + * A node representing a parameter for a function with no body. + */ +class BodyLessParameterNodeImpl extends Node, TBodyLessParameterNodeImpl { + Parameter p; + int indirectionIndex; + + BodyLessParameterNodeImpl() { this = TBodyLessParameterNodeImpl(p, indirectionIndex) } + + override Declaration getEnclosingCallable() { result = this.getFunction() } + + override Declaration getFunction() { result = p.getFunction() } + + /** Gets the indirection index of this node. */ + int getIndirectionIndex() { result = indirectionIndex } + + override DataFlowType getType() { + result = getTypeImpl(p.getUnderlyingType(), this.getIndirectionIndex()) + } + + final override Location getLocationImpl() { + result = unique( | | p.getLocation()) + or + count(p.getLocation()) != 1 and + result instanceof UnknownDefaultLocation + } + + final override string toStringImpl() { + exists(string prefix | prefix = stars(this) | result = prefix + p.toString()) + } +} + /** * A data-flow node used to model flow summaries. That is, a dataflow node * that is synthesized to represent a parameter, return value, or other part @@ -767,42 +810,6 @@ class FlowSummaryNode extends Node, TFlowSummaryNode { override string toStringImpl() { result = this.getSummaryNode().toString() } } -/** - * INTERNAL: do not use. - * - * A node representing an indirection of a parameter. - */ -class IndirectParameterNode extends Node instanceof IndirectInstruction { - InitializeParameterInstruction init; - - IndirectParameterNode() { IndirectInstruction.super.hasInstructionAndIndirectionIndex(init, _) } - - int getArgumentIndex() { init.hasIndex(result) } - - /** Gets the parameter whose indirection is initialized. */ - Parameter getParameter() { result = init.getParameter() } - - override Declaration getEnclosingCallable() { result = this.getFunction() } - - override Declaration getFunction() { result = init.getEnclosingFunction() } - - /** Gets the underlying operand and the underlying indirection index. */ - predicate hasInstructionAndIndirectionIndex(Instruction instr, int index) { - IndirectInstruction.super.hasInstructionAndIndirectionIndex(instr, index) - } - - override Location getLocationImpl() { result = this.getParameter().getLocation() } - - override string toStringImpl() { - exists(string prefix | prefix = stars(this) | - result = prefix + this.getParameter().toString() - or - not exists(this.getParameter()) and - result = prefix + "this" - ) - } -} - /** * INTERNAL: do not use. * @@ -1655,6 +1662,88 @@ class IndirectExprNode extends Node instanceof IndirectExprNodeBase { } } +abstract private class AbstractParameterNode extends Node { + /** + * Holds if this node is the parameter of `f` at the specified position. The + * implicit `this` parameter is considered to have position `-1`, and + * pointer-indirection parameters are at further negative positions. + */ + abstract predicate isParameterOf(DataFlowCallable f, ParameterPosition pos); + + /** Gets the `Parameter` associated with this node, if it exists. */ + Parameter getParameter() { none() } // overridden by subclasses +} + +abstract private class AbstractIndirectParameterNode extends AbstractParameterNode { + /** Gets the indirection index of this parameter node. */ + abstract int getIndirectionIndex(); +} + +/** + * INTERNAL: do not use. + * + * A node representing an indirection of a parameter. + */ +final class IndirectParameterNode = AbstractIndirectParameterNode; + +pragma[noinline] +private predicate indirectParameterNodeHasArgumentIndexAndIndex( + IndirectInstructionParameterNode node, int argumentIndex, int indirectionIndex +) { + node.hasInstructionAndIndirectionIndex(_, indirectionIndex) and + node.getArgumentIndex() = argumentIndex +} + +pragma[noinline] +private predicate indirectPositionHasArgumentIndexAndIndex( + IndirectionPosition pos, int argumentIndex, int indirectionIndex +) { + pos.getArgumentIndex() = argumentIndex and + pos.getIndirectionIndex() = indirectionIndex +} + +private class IndirectInstructionParameterNode extends AbstractIndirectParameterNode instanceof IndirectInstruction +{ + InitializeParameterInstruction init; + + IndirectInstructionParameterNode() { + IndirectInstruction.super.hasInstructionAndIndirectionIndex(init, _) + } + + int getArgumentIndex() { init.hasIndex(result) } + + override string toStringImpl() { + exists(string prefix | prefix = stars(this) | + result = prefix + this.getParameter().toString() + or + not exists(this.getParameter()) and + result = prefix + "this" + ) + } + + /** Gets the parameter whose indirection is initialized. */ + override Parameter getParameter() { result = init.getParameter() } + + override Declaration getEnclosingCallable() { result = this.getFunction() } + + override Declaration getFunction() { result = init.getEnclosingFunction() } + + override predicate isParameterOf(DataFlowCallable f, ParameterPosition pos) { + this.getEnclosingCallable() = f.getUnderlyingCallable() and + exists(int argumentIndex, int indirectionIndex | + indirectPositionHasArgumentIndexAndIndex(pos, argumentIndex, indirectionIndex) and + indirectParameterNodeHasArgumentIndexAndIndex(this, argumentIndex, indirectionIndex) + ) + } + + /** Gets the underlying operand and the underlying indirection index. */ + predicate hasInstructionAndIndirectionIndex(Instruction instr, int index) { + IndirectInstruction.super.hasInstructionAndIndirectionIndex(instr, index) + } + + final override int getIndirectionIndex() { this.hasInstructionAndIndirectionIndex(init, result) } +} + /** * The value of a parameter at function entry, viewed as a node in a data * flow graph. This includes both explicit parameters such as `x` in `f(x)` @@ -1664,42 +1753,38 @@ class IndirectExprNode extends Node instanceof IndirectExprNodeBase { * `ExplicitParameterNode`, `ThisParameterNode`, or * `ParameterIndirectionNode`. */ -class ParameterNode extends Node { - ParameterNode() { - // To avoid making this class abstract, we enumerate its values here - this.asInstruction() instanceof InitializeParameterInstruction - or - this instanceof IndirectParameterNode - or - FlowSummaryImpl::Private::summaryParameterNode(this.(FlowSummaryNode).getSummaryNode(), _) - } +final class ParameterNode = AbstractParameterNode; - /** - * Holds if this node is the parameter of `f` at the specified position. The - * implicit `this` parameter is considered to have position `-1`, and - * pointer-indirection parameters are at further negative positions. - */ - predicate isParameterOf(DataFlowCallable f, ParameterPosition pos) { none() } // overridden by subclasses - - /** Gets the `Parameter` associated with this node, if it exists. */ - Parameter getParameter() { none() } // overridden by subclasses -} +abstract private class AbstractDirectParameterNode extends AbstractParameterNode { } /** An explicit positional parameter, including `this`, but not `...`. */ -class DirectParameterNode extends InstructionNode { - override InitializeParameterInstruction instr; +final class DirectParameterNode = AbstractDirectParameterNode; + +/** + * INTERNAL: Do not use. + * + * A non-indirect parameter node that is represented as an `Instruction`. + */ +abstract class InstructionDirectParameterNode extends InstructionNode, AbstractDirectParameterNode { + final override InitializeParameterInstruction instr; /** * INTERNAL: Do not use. * * Gets the `IRVariable` that this parameter references. */ - IRVariable getIRVariable() { result = instr.getIRVariable() } + final IRVariable getIRVariable() { result = instr.getIRVariable() } } +abstract private class AbstractExplicitParameterNode extends AbstractDirectParameterNode { } + +final class ExplicitParameterNode = AbstractExplicitParameterNode; + /** An explicit positional parameter, not including `this` or `...`. */ -private class ExplicitParameterNode extends ParameterNode, DirectParameterNode { - ExplicitParameterNode() { exists(instr.getParameter()) } +private class ExplicitParameterInstructionNode extends AbstractExplicitParameterNode, + InstructionDirectParameterNode +{ + ExplicitParameterInstructionNode() { exists(instr.getParameter()) } override predicate isParameterOf(DataFlowCallable f, ParameterPosition pos) { f.getUnderlyingCallable().(Function).getParameter(pos.(DirectPosition).getIndex()) = @@ -1712,8 +1797,10 @@ private class ExplicitParameterNode extends ParameterNode, DirectParameterNode { } /** An implicit `this` parameter. */ -class ThisParameterNode extends ParameterNode, DirectParameterNode { - ThisParameterNode() { instr.getIRVariable() instanceof IRThisVariable } +class ThisParameterInstructionNode extends AbstractExplicitParameterNode, + InstructionDirectParameterNode +{ + ThisParameterInstructionNode() { instr.getIRVariable() instanceof IRThisVariable } override predicate isParameterOf(DataFlowCallable f, ParameterPosition pos) { pos.(DirectPosition).getIndex() = -1 and @@ -1726,7 +1813,7 @@ class ThisParameterNode extends ParameterNode, DirectParameterNode { /** * A parameter node that is part of a summary. */ -class SummaryParameterNode extends ParameterNode, FlowSummaryNode { +class SummaryParameterNode extends AbstractParameterNode, FlowSummaryNode { SummaryParameterNode() { FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), _) } @@ -1741,31 +1828,41 @@ class SummaryParameterNode extends ParameterNode, FlowSummaryNode { } } -pragma[noinline] -private predicate indirectPositionHasArgumentIndexAndIndex( - IndirectionPosition pos, int argumentIndex, int indirectionIndex -) { - pos.getArgumentIndex() = argumentIndex and - pos.getIndirectionIndex() = indirectionIndex -} +private class DirectBodyLessParameterNode extends AbstractExplicitParameterNode, + BodyLessParameterNodeImpl +{ + DirectBodyLessParameterNode() { indirectionIndex = 0 } -pragma[noinline] -private predicate indirectParameterNodeHasArgumentIndexAndIndex( - IndirectParameterNode node, int argumentIndex, int indirectionIndex -) { - node.hasInstructionAndIndirectionIndex(_, indirectionIndex) and - node.getArgumentIndex() = argumentIndex + override predicate isParameterOf(DataFlowCallable f, ParameterPosition pos) { + exists(Function func | + this.getFunction() = func and + f.asSourceCallable() = func and + func.getParameter(pos.(DirectPosition).getIndex()) = p + ) + } + + override Parameter getParameter() { result = p } } -/** A synthetic parameter to model the pointed-to object of a pointer parameter. */ -class ParameterIndirectionNode extends ParameterNode instanceof IndirectParameterNode { +private class IndirectBodyLessParameterNode extends AbstractIndirectParameterNode, + BodyLessParameterNodeImpl +{ + IndirectBodyLessParameterNode() { not this instanceof DirectBodyLessParameterNode } + override predicate isParameterOf(DataFlowCallable f, ParameterPosition pos) { - IndirectParameterNode.super.getEnclosingCallable() = f.getUnderlyingCallable() and - exists(int argumentIndex, int indirectionIndex | - indirectPositionHasArgumentIndexAndIndex(pos, argumentIndex, indirectionIndex) and - indirectParameterNodeHasArgumentIndexAndIndex(this, argumentIndex, indirectionIndex) + exists(Function func, int argumentPosition | + this.getFunction() = func and + f.asSourceCallable() = func and + indirectPositionHasArgumentIndexAndIndex(pos, argumentPosition, indirectionIndex) and + func.getParameter(argumentPosition) = p ) } + + override int getIndirectionIndex() { + result = BodyLessParameterNodeImpl.super.getIndirectionIndex() + } + + override Parameter getParameter() { result = p } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/NormalNode0ToString.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/NormalNode0ToString.qll index ef2681104cb2..a7f11c805b90 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/NormalNode0ToString.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/NormalNode0ToString.qll @@ -3,12 +3,26 @@ * `toString` for `Instruction` and `Operand` dataflow nodes. */ +private import cpp private import semmle.code.cpp.ir.IR private import codeql.util.Unit private import Node0ToString private import DataFlowUtil private import DataFlowPrivate +/** + * Gets the string representation of the unconverted expression `loc` if + * `loc` is an `Expression`. + * + * Otherwise, this gets the string representation of `loc`. + */ +private string unconvertedAstToString(Locatable loc) { + result = loc.(Expr).getUnconverted().toString() + or + not loc instanceof Expr and + result = loc.toString() +} + private class NormalNode0ToString extends Node0ToString { NormalNode0ToString() { // Silence warning about `this` not being bound. @@ -18,14 +32,10 @@ private class NormalNode0ToString extends Node0ToString { override string instructionToString(Instruction i) { if i.(InitializeParameterInstruction).getIRVariable() instanceof IRThisVariable then result = "this" - else result = i.getAst().toString() + else result = unconvertedAstToString(i.getAst()) } - override string operandToString(Operand op) { - if op.getDef().(InitializeParameterInstruction).getIRVariable() instanceof IRThisVariable - then result = "this" - else result = op.getDef().getAst().toString() - } + override string operandToString(Operand op) { result = this.instructionToString(op.getDef()) } override string toExprString(Node n) { result = n.asExpr(0).toString() 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 86e240b51c3e..49cbe866833a 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 @@ -1259,7 +1259,9 @@ class TranslatedUnaryExpr extends TranslatedSingleInstructionExpr { expr instanceof NotExpr or expr instanceof ComplementExpr or expr instanceof UnaryPlusExpr or - expr instanceof UnaryMinusExpr + expr instanceof UnaryMinusExpr or + expr instanceof CoAwaitExpr or + expr instanceof CoYieldExpr } final override Instruction getFirstInstruction(EdgeKind kind) { @@ -1299,6 +1301,12 @@ class TranslatedUnaryExpr extends TranslatedSingleInstructionExpr { expr instanceof UnaryPlusExpr and result instanceof Opcode::CopyValue or expr instanceof UnaryMinusExpr and result instanceof Opcode::Negate + or + // TODO: Use a new opcode to represent "awaiting the value" + expr instanceof CoAwaitExpr and result instanceof Opcode::CopyValue + or + // TODO: Use a new opcode to represent "awaiting the value" + expr instanceof CoYieldExpr and result instanceof Opcode::CopyValue } private TranslatedExpr getOperand() { diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll index d8ec66a2ee71..fab2dacc8a78 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedStmt.qll @@ -1501,3 +1501,41 @@ class TranslatedVlaDeclarationStmt extends TranslatedStmt { override Instruction getChildSuccessorInternal(TranslatedElement child, EdgeKind kind) { none() } } + +class TranslatedCoReturnStmt extends TranslatedStmt { + override CoReturnStmt stmt; + + private TranslatedExpr getTranslatedOperand() { + result = getTranslatedExpr(stmt.getOperand().getFullyConverted()) + } + + override TranslatedExpr getChildInternal(int id) { + id = 0 and + result = this.getTranslatedOperand() + } + + override Instruction getFirstInstruction(EdgeKind kind) { + result = this.getTranslatedOperand().getFirstInstruction(kind) + } + + override Instruction getALastInstructionInternal() { + result = this.getInstruction(OnlyInstructionTag()) + } + + override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) { + tag = OnlyInstructionTag() and + opcode instanceof Opcode::NoOp and + resultType = getVoidType() + } + + override Instruction getInstructionSuccessorInternal(InstructionTag tag, EdgeKind kind) { + tag = OnlyInstructionTag() and + result = this.getParent().getChildSuccessor(this, kind) + } + + override Instruction getChildSuccessorInternal(TranslatedElement child, EdgeKind kind) { + child = this.getTranslatedOperand() and + kind instanceof GotoEdge and + result = this.getInstruction(OnlyInstructionTag()) + } +} diff --git a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/AllocMultiplicationOverflow/AllocMultiplicationOverflow.expected b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/AllocMultiplicationOverflow/AllocMultiplicationOverflow.expected index 9f378875e98a..c55008f6550c 100644 --- a/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/AllocMultiplicationOverflow/AllocMultiplicationOverflow.expected +++ b/cpp/ql/test/experimental/query-tests/Security/CWE/CWE-190/AllocMultiplicationOverflow/AllocMultiplicationOverflow.expected @@ -1,13 +1,13 @@ edges -| test.cpp:22:17:22:21 | (size_t)... | test.cpp:23:33:23:37 | size1 | provenance | | -| test.cpp:22:17:22:21 | ... * ... | test.cpp:22:17:22:21 | (size_t)... | provenance | | +| test.cpp:22:17:22:21 | ... * ... | test.cpp:22:17:22:21 | ... * ... | provenance | | +| test.cpp:22:17:22:21 | ... * ... | test.cpp:23:33:23:37 | size1 | provenance | | | test.cpp:37:24:37:27 | size | test.cpp:37:46:37:49 | size | provenance | | | test.cpp:45:36:45:40 | ... * ... | test.cpp:37:24:37:27 | size | provenance | | nodes | test.cpp:13:33:13:37 | ... * ... | semmle.label | ... * ... | | test.cpp:15:31:15:35 | ... * ... | semmle.label | ... * ... | | test.cpp:19:34:19:38 | ... * ... | semmle.label | ... * ... | -| test.cpp:22:17:22:21 | (size_t)... | semmle.label | (size_t)... | +| test.cpp:22:17:22:21 | ... * ... | semmle.label | ... * ... | | test.cpp:22:17:22:21 | ... * ... | semmle.label | ... * ... | | test.cpp:23:33:23:37 | size1 | semmle.label | size1 | | test.cpp:30:18:30:32 | ... * ... | semmle.label | ... * ... | 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 c3cde9f30330..805d87c96458 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 @@ -18,9 +18,9 @@ edges | test.cpp:77:32:77:34 | buf | test.cpp:77:26:77:44 | & ... | provenance | | | test.cpp:79:27:79:34 | buf | test.cpp:70:33:70:33 | p | provenance | | | test.cpp:79:32:79:34 | buf | test.cpp:79:27:79:34 | buf | provenance | | -| test.cpp:85:21:85:36 | (char *)... | test.cpp:87:5:87:31 | access to array | provenance | | -| test.cpp:85:21:85:36 | (char *)... | test.cpp:88:5:88:27 | access to array | provenance | | -| test.cpp:85:34:85:36 | buf | test.cpp:85:21:85:36 | (char *)... | provenance | | +| test.cpp:85:21:85:36 | buf | test.cpp:87:5:87:31 | access to array | provenance | | +| test.cpp:85:21:85:36 | buf | test.cpp:88:5:88:27 | access to array | provenance | | +| test.cpp:85:34:85:36 | buf | test.cpp:85:21:85:36 | buf | provenance | | | test.cpp:96:13:96:15 | arr | test.cpp:96:13:96:18 | access to array | provenance | | | test.cpp:111:17:111:19 | arr | test.cpp:111:17:111:22 | access to array | provenance | | | test.cpp:111:17:111:19 | arr | test.cpp:115:35:115:40 | access to array | provenance | | @@ -42,12 +42,12 @@ edges | test.cpp:156:12:156:18 | ... + ... | test.cpp:156:12:156:18 | ... + ... | provenance | | | test.cpp:156:12:156:18 | ... + ... | test.cpp:158:17:158:18 | *& ... | provenance | | | test.cpp:158:17:158:18 | *& ... | test.cpp:146:26:146:26 | *p | provenance | | -| test.cpp:218:16:218:28 | (int *)... | test.cpp:220:5:220:11 | access to array | provenance | | -| test.cpp:218:16:218:28 | (int *)... | test.cpp:221:5:221:11 | access to array | provenance | | -| test.cpp:218:23:218:28 | buffer | test.cpp:218:16:218:28 | (int *)... | provenance | | -| test.cpp:229:17:229:29 | (vec2 *)... | test.cpp:231:5:231:10 | access to array | provenance | | -| test.cpp:229:17:229:29 | (vec2 *)... | test.cpp:232:5:232:10 | access to array | provenance | | -| test.cpp:229:25:229:29 | array | test.cpp:229:17:229:29 | (vec2 *)... | provenance | | +| test.cpp:218:16:218:28 | buffer | test.cpp:220:5:220:11 | access to array | provenance | | +| test.cpp:218:16:218:28 | buffer | test.cpp:221:5:221:11 | access to array | provenance | | +| test.cpp:218:23:218:28 | buffer | test.cpp:218:16:218:28 | buffer | provenance | | +| test.cpp:229:17:229:29 | array | test.cpp:231:5:231:10 | access to array | provenance | | +| test.cpp:229:17:229:29 | array | test.cpp:232:5:232:10 | access to array | provenance | | +| test.cpp:229:25:229:29 | array | test.cpp:229:17:229:29 | array | provenance | | | test.cpp:245:30:245:30 | p | test.cpp:261:27:261:30 | access to array | provenance | | | test.cpp:245:30:245:30 | p | test.cpp:261:27:261:30 | access to array | provenance | | | test.cpp:274:14:274:20 | buffer3 | test.cpp:245:30:245:30 | p | provenance | | @@ -111,7 +111,7 @@ nodes | test.cpp:77:32:77:34 | buf | semmle.label | buf | | test.cpp:79:27:79:34 | buf | semmle.label | buf | | test.cpp:79:32:79:34 | buf | semmle.label | buf | -| test.cpp:85:21:85:36 | (char *)... | semmle.label | (char *)... | +| test.cpp:85:21:85:36 | buf | semmle.label | buf | | test.cpp:85:34:85:36 | buf | semmle.label | buf | | test.cpp:87:5:87:31 | access to array | semmle.label | access to array | | test.cpp:88:5:88:27 | access to array | semmle.label | access to array | @@ -137,11 +137,11 @@ nodes | test.cpp:156:12:156:18 | ... + ... | semmle.label | ... + ... | | test.cpp:156:12:156:18 | ... + ... | semmle.label | ... + ... | | test.cpp:158:17:158:18 | *& ... | semmle.label | *& ... | -| test.cpp:218:16:218:28 | (int *)... | semmle.label | (int *)... | +| test.cpp:218:16:218:28 | buffer | semmle.label | buffer | | test.cpp:218:23:218:28 | buffer | semmle.label | buffer | | test.cpp:220:5:220:11 | access to array | semmle.label | access to array | | test.cpp:221:5:221:11 | access to array | semmle.label | access to array | -| test.cpp:229:17:229:29 | (vec2 *)... | semmle.label | (vec2 *)... | +| test.cpp:229:17:229:29 | array | semmle.label | array | | test.cpp:229:25:229:29 | array | semmle.label | array | | test.cpp:231:5:231:10 | access to array | semmle.label | access to array | | test.cpp:232:5:232:10 | access to array | semmle.label | access to array | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected index 0e33430cde79..00e6b03b9319 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/localFlow-ir.expected @@ -125,8 +125,8 @@ | test.cpp:384:16:384:23 | *& ... | test.cpp:384:3:384:8 | *call to memcpy | | test.cpp:384:16:384:23 | *& ... | test.cpp:384:10:384:13 | memcpy output argument | | test.cpp:384:16:384:23 | *& ... | test.cpp:384:16:384:23 | *& ... | -| test.cpp:384:16:384:23 | **(const void *)... | test.cpp:384:3:384:8 | **call to memcpy | -| test.cpp:384:16:384:23 | **(const void *)... | test.cpp:384:10:384:13 | memcpy output argument | +| test.cpp:384:16:384:23 | **& ... | test.cpp:384:3:384:8 | **call to memcpy | +| test.cpp:384:16:384:23 | **& ... | test.cpp:384:10:384:13 | memcpy output argument | | test.cpp:384:17:384:23 | *source1 | test.cpp:384:16:384:23 | *& ... | | test.cpp:384:17:384:23 | source1 | test.cpp:384:16:384:23 | & ... | | test.cpp:388:53:388:59 | source1 | test.cpp:391:16:391:23 | *& ... | @@ -152,8 +152,8 @@ | test.cpp:391:16:391:23 | *& ... | test.cpp:391:3:391:8 | *call to memcpy | | test.cpp:391:16:391:23 | *& ... | test.cpp:391:10:391:13 | memcpy output argument | | test.cpp:391:16:391:23 | *& ... | test.cpp:391:16:391:23 | *& ... | -| test.cpp:391:16:391:23 | **(const void *)... | test.cpp:391:3:391:8 | **call to memcpy | -| test.cpp:391:16:391:23 | **(const void *)... | test.cpp:391:10:391:13 | memcpy output argument | +| test.cpp:391:16:391:23 | **& ... | test.cpp:391:3:391:8 | **call to memcpy | +| test.cpp:391:16:391:23 | **& ... | test.cpp:391:10:391:13 | memcpy output argument | | test.cpp:391:17:391:23 | *source1 | test.cpp:391:16:391:23 | *& ... | | test.cpp:391:17:391:23 | source1 | test.cpp:391:16:391:23 | & ... | | test.cpp:392:8:392:10 | tmp | test.cpp:394:10:394:12 | tmp | diff --git a/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected index 4d87c2da534a..05488e91ea41 100644 --- a/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected +++ b/cpp/ql/test/library-tests/dataflow/dataflow-tests/type-bugs.expected @@ -7,12 +7,12 @@ incorrectBaseType | flowOut.cpp:84:9:84:10 | *& ... | Expected 'Node.getType()' to be int, but it was int * | | flowOut.cpp:101:13:101:14 | *& ... | Expected 'Node.getType()' to be int, but it was int * | | self_parameter_flow.cpp:8:8:8:9 | *& ... | Expected 'Node.getType()' to be unsigned char, but it was unsigned char * | -| test.cpp:67:28:67:37 | (reference dereference) | Expected 'Node.getType()' to be const int, but it was int * | +| test.cpp:67:28:67:37 | call to move | Expected 'Node.getType()' to be const int, but it was int * | | test.cpp:531:39:531:40 | *& ... | Expected 'Node.getType()' to be int, but it was const int * | | test.cpp:615:13:615:21 | *& ... | Expected 'Node.getType()' to be int, but it was void | | test.cpp:704:22:704:25 | *& ... | Expected 'Node.getType()' to be int, but it was int * | | test.cpp:715:24:715:25 | *& ... | Expected 'Node.getType()' to be unsigned char, but it was unsigned char * | -| test.cpp:848:23:848:25 | (reference dereference) | Expected 'Node.getType()' to be int, but it was int * | +| test.cpp:848:23:848:25 | rpx | Expected 'Node.getType()' to be int, but it was int * | | test.cpp:854:10:854:36 | * ... | Expected 'Node.getType()' to be const int, but it was int | | test.cpp:867:10:867:30 | * ... | Expected 'Node.getType()' to be const int, but it was int | | test.cpp:1062:52:1062:53 | *& ... | Expected 'Node.getType()' to be char, but it was char * | diff --git a/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected b/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected index f703a208e230..66439f38754f 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected @@ -58,13 +58,13 @@ edges | A.cpp:100:5:100:6 | *c1 [post update] [a] | A.cpp:101:8:101:9 | *c1 [a] | provenance | | | A.cpp:100:5:100:13 | ... = ... | A.cpp:100:5:100:6 | *c1 [post update] [a] | provenance | | | A.cpp:101:8:101:9 | *c1 [a] | A.cpp:103:14:103:14 | *c [a] | provenance | | -| A.cpp:103:14:103:14 | *c [a] | A.cpp:105:18:105:38 | *dynamic_cast... [a] | provenance | | -| A.cpp:103:14:103:14 | *c [a] | A.cpp:110:18:110:38 | *dynamic_cast... [a] | provenance | | -| A.cpp:105:18:105:38 | *dynamic_cast... [a] | A.cpp:107:12:107:13 | *c1 [a] | provenance | | +| A.cpp:103:14:103:14 | *c [a] | A.cpp:105:18:105:38 | *c [a] | provenance | | +| A.cpp:103:14:103:14 | *c [a] | A.cpp:110:18:110:38 | *c [a] | provenance | | +| A.cpp:105:18:105:38 | *c [a] | A.cpp:107:12:107:13 | *c1 [a] | provenance | | | A.cpp:107:12:107:13 | *c1 [a] | A.cpp:107:12:107:16 | a | provenance | | -| A.cpp:110:18:110:38 | *dynamic_cast... [a] | A.cpp:112:7:112:13 | *... = ... [a] | provenance | | -| A.cpp:112:7:112:13 | *... = ... [a] | A.cpp:118:18:118:39 | *dynamic_cast... [a] | provenance | | -| A.cpp:118:18:118:39 | *dynamic_cast... [a] | A.cpp:120:12:120:13 | *c1 [a] | provenance | | +| A.cpp:110:18:110:38 | *c [a] | A.cpp:112:7:112:13 | *... = ... [a] | provenance | | +| A.cpp:112:7:112:13 | *... = ... [a] | A.cpp:118:18:118:39 | *cc [a] | provenance | | +| A.cpp:118:18:118:39 | *cc [a] | A.cpp:120:12:120:13 | *c1 [a] | provenance | | | A.cpp:120:12:120:13 | *c1 [a] | A.cpp:120:12:120:16 | a | provenance | | | A.cpp:124:14:124:14 | *b [c] | A.cpp:131:8:131:8 | f7 output argument [c] | provenance | | | A.cpp:126:5:126:5 | set output argument [c] | A.cpp:124:14:124:14 | *b [c] | provenance | | @@ -906,12 +906,12 @@ nodes | A.cpp:100:5:100:13 | ... = ... | semmle.label | ... = ... | | A.cpp:101:8:101:9 | *c1 [a] | semmle.label | *c1 [a] | | A.cpp:103:14:103:14 | *c [a] | semmle.label | *c [a] | -| A.cpp:105:18:105:38 | *dynamic_cast... [a] | semmle.label | *dynamic_cast... [a] | +| A.cpp:105:18:105:38 | *c [a] | semmle.label | *c [a] | | A.cpp:107:12:107:13 | *c1 [a] | semmle.label | *c1 [a] | | A.cpp:107:12:107:16 | a | semmle.label | a | -| A.cpp:110:18:110:38 | *dynamic_cast... [a] | semmle.label | *dynamic_cast... [a] | +| A.cpp:110:18:110:38 | *c [a] | semmle.label | *c [a] | | A.cpp:112:7:112:13 | *... = ... [a] | semmle.label | *... = ... [a] | -| A.cpp:118:18:118:39 | *dynamic_cast... [a] | semmle.label | *dynamic_cast... [a] | +| A.cpp:118:18:118:39 | *cc [a] | semmle.label | *cc [a] | | A.cpp:120:12:120:13 | *c1 [a] | semmle.label | *c1 [a] | | A.cpp:120:12:120:16 | a | semmle.label | a | | A.cpp:124:14:124:14 | *b [c] | semmle.label | *b [c] | diff --git a/cpp/ql/test/library-tests/dataflow/parameters-without-defs/test.cpp b/cpp/ql/test/library-tests/dataflow/parameters-without-defs/test.cpp new file mode 100644 index 000000000000..8fca6a3994c1 --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/parameters-without-defs/test.cpp @@ -0,0 +1,11 @@ +void sink(int); // $ ir +void indirect_sink(int*); // $ ir +int source(); + +void test() { + int x = source(); + sink(x); + + int* p = &x; + indirect_sink(p); +} \ No newline at end of file diff --git a/cpp/ql/test/library-tests/dataflow/parameters-without-defs/test.expected b/cpp/ql/test/library-tests/dataflow/parameters-without-defs/test.expected new file mode 100644 index 000000000000..8ec8033d086e --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/parameters-without-defs/test.expected @@ -0,0 +1,2 @@ +testFailures +failures diff --git a/cpp/ql/test/library-tests/dataflow/parameters-without-defs/test.ql b/cpp/ql/test/library-tests/dataflow/parameters-without-defs/test.ql new file mode 100644 index 000000000000..13a818d50b2e --- /dev/null +++ b/cpp/ql/test/library-tests/dataflow/parameters-without-defs/test.ql @@ -0,0 +1,16 @@ +import TestUtilities.dataflow.FlowTestCommon +import semmle.code.cpp.dataflow.new.DataFlow + +module ParamConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source.asExpr().(Call).getTarget().hasName("source") } + + predicate isSink(DataFlow::Node sink) { + sink.asParameter().getFunction().hasName("sink") + or + sink.asParameter(1).getFunction().hasName("indirect_sink") + } +} + +module IRFlow = DataFlow::Global; + +import MakeTest> diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index 2f1810a4020c..38e21d14835b 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -747,81 +747,340 @@ coroutines.cpp: # 87| m87_4(unknown) = Chi : total:m87_2, partial:m87_3 # 87| r87_5(glval) = VariableAddress[(unnamed local variable)] : # 87| m87_6(promise_type) = Uninitialized[(unnamed local variable)] : &:r87_5 +# 87| m87_7(unknown) = Chi : total:m87_4, partial:m87_6 +# 87| r87_8(glval) = VariableAddress[(unnamed local variable)] : +# 87| r87_9(glval) = FunctionAddress[initial_suspend] : +# 87| r87_10(suspend_always) = Call[initial_suspend] : func:r87_9, this:r87_8 +# 87| m87_11(unknown) = ^CallSideEffect : ~m87_7 +# 87| m87_12(unknown) = Chi : total:m87_7, partial:m87_11 +# 87| v87_13(void) = ^IndirectReadSideEffect[-1] : &:r87_8, ~m87_12 +# 87| m87_14(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_8 +# 87| m87_15(unknown) = Chi : total:m87_12, partial:m87_14 +#-----| v0_1(void) = CopyValue : r87_10 +#-----| r0_2(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_3(glval) = FunctionAddress[return_void] : +#-----| v0_4(void) = Call[return_void] : func:r0_3, this:r0_2 +#-----| m0_5(unknown) = ^CallSideEffect : ~m87_15 +#-----| m0_6(unknown) = Chi : total:m87_15, partial:m0_5 +#-----| v0_7(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m0_6 +#-----| m0_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_2 +#-----| m0_9(unknown) = Chi : total:m0_6, partial:m0_8 +# 88| v88_1(void) = NoOp : +#-----| v0_10(void) = NoOp : +#-----| Goto (back edge) -> Block 1 + +#-----| Block 1 +#-----| v0_11(void) = NoOp : +# 87| r87_16(glval) = VariableAddress[(unnamed local variable)] : +# 87| r87_17(glval) = FunctionAddress[final_suspend] : +# 87| r87_18(suspend_always) = Call[final_suspend] : func:r87_17, this:r87_16 +# 87| m87_19(unknown) = ^CallSideEffect : ~m0_9 +# 87| m87_20(unknown) = Chi : total:m0_9, partial:m87_19 +# 87| v87_21(void) = ^IndirectReadSideEffect[-1] : &:r87_16, ~m87_20 +# 87| m87_22(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_16 +# 87| m87_23(unknown) = Chi : total:m87_20, partial:m87_22 +#-----| v0_12(void) = CopyValue : r87_18 +# 87| r87_24(glval) = VariableAddress[#return] : +# 87| v87_25(void) = ReturnValue : &:r87_24, ~m87_23 +# 87| v87_26(void) = AliasedUse : ~m87_20 +# 87| v87_27(void) = ExitFunction : # 91| co_returnable_value co_return_int(int) # 91| Block 0 -# 91| v91_1(void) = EnterFunction : -# 91| m91_2(unknown) = AliasedDefinition : -# 91| m91_3(unknown) = InitializeNonLocal : -# 91| m91_4(unknown) = Chi : total:m91_2, partial:m91_3 -# 91| r91_5(glval) = VariableAddress[i] : -# 91| m91_6(int) = InitializeParameter[i] : &:r91_5 -#-----| r0_1(glval) = VariableAddress[i] : -#-----| r0_2(glval) = VariableAddress[i] : -#-----| r0_3(int) = Load[i] : &:r0_2, m91_6 -#-----| m0_4(int) = Store[i] : &:r0_1, r0_3 -# 91| r91_7(glval) = VariableAddress[(unnamed local variable)] : -# 91| m91_8(promise_type) = Uninitialized[(unnamed local variable)] : &:r91_7 +# 91| v91_1(void) = EnterFunction : +# 91| m91_2(unknown) = AliasedDefinition : +# 91| m91_3(unknown) = InitializeNonLocal : +# 91| m91_4(unknown) = Chi : total:m91_2, partial:m91_3 +# 91| r91_5(glval) = VariableAddress[i] : +# 91| m91_6(int) = InitializeParameter[i] : &:r91_5 +#-----| r0_1(glval) = VariableAddress[i] : +#-----| r0_2(glval) = VariableAddress[i] : +#-----| r0_3(int) = Load[i] : &:r0_2, m91_6 +#-----| m0_4(int) = Store[i] : &:r0_1, r0_3 +# 91| r91_7(glval) = VariableAddress[(unnamed local variable)] : +# 91| m91_8(promise_type) = Uninitialized[(unnamed local variable)] : &:r91_7 +# 91| m91_9(unknown) = Chi : total:m91_4, partial:m91_8 +# 91| r91_10(glval) = VariableAddress[(unnamed local variable)] : +# 91| r91_11(glval) = FunctionAddress[initial_suspend] : +# 91| r91_12(suspend_always) = Call[initial_suspend] : func:r91_11, this:r91_10 +# 91| m91_13(unknown) = ^CallSideEffect : ~m91_9 +# 91| m91_14(unknown) = Chi : total:m91_9, partial:m91_13 +# 91| v91_15(void) = ^IndirectReadSideEffect[-1] : &:r91_10, ~m91_14 +# 91| m91_16(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_10 +# 91| m91_17(unknown) = Chi : total:m91_14, partial:m91_16 +#-----| v0_5(void) = CopyValue : r91_12 +#-----| r0_6(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_7(glval) = FunctionAddress[return_value] : +# 92| r92_1(glval) = VariableAddress[i] : +# 92| r92_2(int) = Load[i] : &:r92_1, m0_4 +#-----| v0_8(void) = Call[return_value] : func:r0_7, this:r0_6, 0:r92_2 +#-----| m0_9(unknown) = ^CallSideEffect : ~m91_17 +#-----| m0_10(unknown) = Chi : total:m91_17, partial:m0_9 +#-----| v0_11(void) = ^IndirectReadSideEffect[-1] : &:r0_6, ~m0_10 +#-----| m0_12(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_6 +#-----| m0_13(unknown) = Chi : total:m0_10, partial:m0_12 +# 92| v92_3(void) = NoOp : +#-----| v0_14(void) = NoOp : +#-----| Goto (back edge) -> Block 1 + +#-----| Block 1 +#-----| v0_15(void) = NoOp : +# 91| r91_18(glval) = VariableAddress[(unnamed local variable)] : +# 91| r91_19(glval) = FunctionAddress[final_suspend] : +# 91| r91_20(suspend_always) = Call[final_suspend] : func:r91_19, this:r91_18 +# 91| m91_21(unknown) = ^CallSideEffect : ~m0_13 +# 91| m91_22(unknown) = Chi : total:m0_13, partial:m91_21 +# 91| v91_23(void) = ^IndirectReadSideEffect[-1] : &:r91_18, ~m91_22 +# 91| m91_24(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_18 +# 91| m91_25(unknown) = Chi : total:m91_22, partial:m91_24 +#-----| v0_16(void) = CopyValue : r91_20 +# 91| r91_26(glval) = VariableAddress[#return] : +# 91| v91_27(void) = ReturnValue : &:r91_26, ~m91_25 +# 91| v91_28(void) = AliasedUse : ~m91_22 +# 91| v91_29(void) = ExitFunction : # 95| co_returnable_void co_yield_value_void(int) # 95| Block 0 -# 95| v95_1(void) = EnterFunction : -# 95| m95_2(unknown) = AliasedDefinition : -# 95| m95_3(unknown) = InitializeNonLocal : -# 95| m95_4(unknown) = Chi : total:m95_2, partial:m95_3 -# 95| r95_5(glval) = VariableAddress[i] : -# 95| m95_6(int) = InitializeParameter[i] : &:r95_5 -#-----| r0_1(glval) = VariableAddress[i] : -#-----| r0_2(glval) = VariableAddress[i] : -#-----| r0_3(int) = Load[i] : &:r0_2, m95_6 -#-----| m0_4(int) = Store[i] : &:r0_1, r0_3 -# 95| r95_7(glval) = VariableAddress[(unnamed local variable)] : -# 95| m95_8(promise_type) = Uninitialized[(unnamed local variable)] : &:r95_7 +# 95| v95_1(void) = EnterFunction : +# 95| m95_2(unknown) = AliasedDefinition : +# 95| m95_3(unknown) = InitializeNonLocal : +# 95| m95_4(unknown) = Chi : total:m95_2, partial:m95_3 +# 95| r95_5(glval) = VariableAddress[i] : +# 95| m95_6(int) = InitializeParameter[i] : &:r95_5 +#-----| r0_1(glval) = VariableAddress[i] : +#-----| r0_2(glval) = VariableAddress[i] : +#-----| r0_3(int) = Load[i] : &:r0_2, m95_6 +#-----| m0_4(int) = Store[i] : &:r0_1, r0_3 +# 95| r95_7(glval) = VariableAddress[(unnamed local variable)] : +# 95| m95_8(promise_type) = Uninitialized[(unnamed local variable)] : &:r95_7 +# 95| m95_9(unknown) = Chi : total:m95_4, partial:m95_8 +# 95| r95_10(glval) = VariableAddress[(unnamed local variable)] : +# 95| r95_11(glval) = FunctionAddress[initial_suspend] : +# 95| r95_12(suspend_always) = Call[initial_suspend] : func:r95_11, this:r95_10 +# 95| m95_13(unknown) = ^CallSideEffect : ~m95_9 +# 95| m95_14(unknown) = Chi : total:m95_9, partial:m95_13 +# 95| v95_15(void) = ^IndirectReadSideEffect[-1] : &:r95_10, ~m95_14 +# 95| m95_16(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_10 +# 95| m95_17(unknown) = Chi : total:m95_14, partial:m95_16 +#-----| v0_5(void) = CopyValue : r95_12 +# 96| r96_1(glval) = VariableAddress[(unnamed local variable)] : +# 96| r96_2(glval) = FunctionAddress[yield_value] : +# 96| r96_3(glval) = VariableAddress[i] : +# 96| r96_4(int) = Load[i] : &:r96_3, m0_4 +# 96| r96_5(suspend_always) = Call[yield_value] : func:r96_2, this:r96_1, 0:r96_4 +# 96| m96_6(unknown) = ^CallSideEffect : ~m95_17 +# 96| m96_7(unknown) = Chi : total:m95_17, partial:m96_6 +# 96| v96_8(void) = ^IndirectReadSideEffect[-1] : &:r96_1, ~m96_7 +# 96| m96_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_1 +# 96| m96_10(unknown) = Chi : total:m96_7, partial:m96_9 +# 96| v96_11(void) = CopyValue : r96_5 +#-----| r0_6(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_7(glval) = FunctionAddress[return_void] : +#-----| v0_8(void) = Call[return_void] : func:r0_7, this:r0_6 +#-----| m0_9(unknown) = ^CallSideEffect : ~m96_10 +#-----| m0_10(unknown) = Chi : total:m96_10, partial:m0_9 +#-----| v0_11(void) = ^IndirectReadSideEffect[-1] : &:r0_6, ~m0_10 +#-----| m0_12(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_6 +#-----| m0_13(unknown) = Chi : total:m0_10, partial:m0_12 +# 97| v97_1(void) = NoOp : +#-----| v0_14(void) = NoOp : +#-----| Goto (back edge) -> Block 1 + +#-----| Block 1 +#-----| v0_15(void) = NoOp : +# 95| r95_18(glval) = VariableAddress[(unnamed local variable)] : +# 95| r95_19(glval) = FunctionAddress[final_suspend] : +# 95| r95_20(suspend_always) = Call[final_suspend] : func:r95_19, this:r95_18 +# 95| m95_21(unknown) = ^CallSideEffect : ~m0_13 +# 95| m95_22(unknown) = Chi : total:m0_13, partial:m95_21 +# 95| v95_23(void) = ^IndirectReadSideEffect[-1] : &:r95_18, ~m95_22 +# 95| m95_24(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_18 +# 95| m95_25(unknown) = Chi : total:m95_22, partial:m95_24 +#-----| v0_16(void) = CopyValue : r95_20 +# 95| r95_26(glval) = VariableAddress[#return] : +# 95| v95_27(void) = ReturnValue : &:r95_26, ~m95_25 +# 95| v95_28(void) = AliasedUse : ~m95_22 +# 95| v95_29(void) = ExitFunction : # 99| co_returnable_value co_yield_value_value(int) # 99| Block 0 -# 99| v99_1(void) = EnterFunction : -# 99| m99_2(unknown) = AliasedDefinition : -# 99| m99_3(unknown) = InitializeNonLocal : -# 99| m99_4(unknown) = Chi : total:m99_2, partial:m99_3 -# 99| r99_5(glval) = VariableAddress[i] : -# 99| m99_6(int) = InitializeParameter[i] : &:r99_5 -#-----| r0_1(glval) = VariableAddress[i] : -#-----| r0_2(glval) = VariableAddress[i] : -#-----| r0_3(int) = Load[i] : &:r0_2, m99_6 -#-----| m0_4(int) = Store[i] : &:r0_1, r0_3 -# 99| r99_7(glval) = VariableAddress[(unnamed local variable)] : -# 99| m99_8(promise_type) = Uninitialized[(unnamed local variable)] : &:r99_7 +# 99| v99_1(void) = EnterFunction : +# 99| m99_2(unknown) = AliasedDefinition : +# 99| m99_3(unknown) = InitializeNonLocal : +# 99| m99_4(unknown) = Chi : total:m99_2, partial:m99_3 +# 99| r99_5(glval) = VariableAddress[i] : +# 99| m99_6(int) = InitializeParameter[i] : &:r99_5 +#-----| r0_1(glval) = VariableAddress[i] : +#-----| r0_2(glval) = VariableAddress[i] : +#-----| r0_3(int) = Load[i] : &:r0_2, m99_6 +#-----| m0_4(int) = Store[i] : &:r0_1, r0_3 +# 99| r99_7(glval) = VariableAddress[(unnamed local variable)] : +# 99| m99_8(promise_type) = Uninitialized[(unnamed local variable)] : &:r99_7 +# 99| m99_9(unknown) = Chi : total:m99_4, partial:m99_8 +# 99| r99_10(glval) = VariableAddress[(unnamed local variable)] : +# 99| r99_11(glval) = FunctionAddress[initial_suspend] : +# 99| r99_12(suspend_always) = Call[initial_suspend] : func:r99_11, this:r99_10 +# 99| m99_13(unknown) = ^CallSideEffect : ~m99_9 +# 99| m99_14(unknown) = Chi : total:m99_9, partial:m99_13 +# 99| v99_15(void) = ^IndirectReadSideEffect[-1] : &:r99_10, ~m99_14 +# 99| m99_16(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_10 +# 99| m99_17(unknown) = Chi : total:m99_14, partial:m99_16 +#-----| v0_5(void) = CopyValue : r99_12 +# 100| r100_1(glval) = VariableAddress[(unnamed local variable)] : +# 100| r100_2(glval) = FunctionAddress[yield_value] : +# 100| r100_3(glval) = VariableAddress[i] : +# 100| r100_4(int) = Load[i] : &:r100_3, m0_4 +# 100| r100_5(suspend_always) = Call[yield_value] : func:r100_2, this:r100_1, 0:r100_4 +# 100| m100_6(unknown) = ^CallSideEffect : ~m99_17 +# 100| m100_7(unknown) = Chi : total:m99_17, partial:m100_6 +# 100| v100_8(void) = ^IndirectReadSideEffect[-1] : &:r100_1, ~m100_7 +# 100| m100_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_1 +# 100| m100_10(unknown) = Chi : total:m100_7, partial:m100_9 +# 100| v100_11(void) = CopyValue : r100_5 +#-----| v0_6(void) = NoOp : +# 99| r99_18(glval) = VariableAddress[(unnamed local variable)] : +# 99| r99_19(glval) = FunctionAddress[final_suspend] : +# 99| r99_20(suspend_always) = Call[final_suspend] : func:r99_19, this:r99_18 +# 99| m99_21(unknown) = ^CallSideEffect : ~m100_10 +# 99| m99_22(unknown) = Chi : total:m100_10, partial:m99_21 +# 99| v99_23(void) = ^IndirectReadSideEffect[-1] : &:r99_18, ~m99_22 +# 99| m99_24(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_18 +# 99| m99_25(unknown) = Chi : total:m99_22, partial:m99_24 +#-----| v0_7(void) = CopyValue : r99_20 +# 99| r99_26(glval) = VariableAddress[#return] : +# 99| v99_27(void) = ReturnValue : &:r99_26, ~m99_25 +# 99| v99_28(void) = AliasedUse : ~m99_22 +# 99| v99_29(void) = ExitFunction : # 103| co_returnable_void co_yield_and_return_void(int) # 103| Block 0 -# 103| v103_1(void) = EnterFunction : -# 103| m103_2(unknown) = AliasedDefinition : -# 103| m103_3(unknown) = InitializeNonLocal : -# 103| m103_4(unknown) = Chi : total:m103_2, partial:m103_3 -# 103| r103_5(glval) = VariableAddress[i] : -# 103| m103_6(int) = InitializeParameter[i] : &:r103_5 -#-----| r0_1(glval) = VariableAddress[i] : -#-----| r0_2(glval) = VariableAddress[i] : -#-----| r0_3(int) = Load[i] : &:r0_2, m103_6 -#-----| m0_4(int) = Store[i] : &:r0_1, r0_3 -# 103| r103_7(glval) = VariableAddress[(unnamed local variable)] : -# 103| m103_8(promise_type) = Uninitialized[(unnamed local variable)] : &:r103_7 +# 103| v103_1(void) = EnterFunction : +# 103| m103_2(unknown) = AliasedDefinition : +# 103| m103_3(unknown) = InitializeNonLocal : +# 103| m103_4(unknown) = Chi : total:m103_2, partial:m103_3 +# 103| r103_5(glval) = VariableAddress[i] : +# 103| m103_6(int) = InitializeParameter[i] : &:r103_5 +#-----| r0_1(glval) = VariableAddress[i] : +#-----| r0_2(glval) = VariableAddress[i] : +#-----| r0_3(int) = Load[i] : &:r0_2, m103_6 +#-----| m0_4(int) = Store[i] : &:r0_1, r0_3 +# 103| r103_7(glval) = VariableAddress[(unnamed local variable)] : +# 103| m103_8(promise_type) = Uninitialized[(unnamed local variable)] : &:r103_7 +# 103| m103_9(unknown) = Chi : total:m103_4, partial:m103_8 +# 103| r103_10(glval) = VariableAddress[(unnamed local variable)] : +# 103| r103_11(glval) = FunctionAddress[initial_suspend] : +# 103| r103_12(suspend_always) = Call[initial_suspend] : func:r103_11, this:r103_10 +# 103| m103_13(unknown) = ^CallSideEffect : ~m103_9 +# 103| m103_14(unknown) = Chi : total:m103_9, partial:m103_13 +# 103| v103_15(void) = ^IndirectReadSideEffect[-1] : &:r103_10, ~m103_14 +# 103| m103_16(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_10 +# 103| m103_17(unknown) = Chi : total:m103_14, partial:m103_16 +#-----| v0_5(void) = CopyValue : r103_12 +# 104| r104_1(glval) = VariableAddress[(unnamed local variable)] : +# 104| r104_2(glval) = FunctionAddress[yield_value] : +# 104| r104_3(glval) = VariableAddress[i] : +# 104| r104_4(int) = Load[i] : &:r104_3, m0_4 +# 104| r104_5(suspend_always) = Call[yield_value] : func:r104_2, this:r104_1, 0:r104_4 +# 104| m104_6(unknown) = ^CallSideEffect : ~m103_17 +# 104| m104_7(unknown) = Chi : total:m103_17, partial:m104_6 +# 104| v104_8(void) = ^IndirectReadSideEffect[-1] : &:r104_1, ~m104_7 +# 104| m104_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_1 +# 104| m104_10(unknown) = Chi : total:m104_7, partial:m104_9 +# 104| v104_11(void) = CopyValue : r104_5 +#-----| r0_6(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_7(glval) = FunctionAddress[return_void] : +#-----| v0_8(void) = Call[return_void] : func:r0_7, this:r0_6 +#-----| m0_9(unknown) = ^CallSideEffect : ~m104_10 +#-----| m0_10(unknown) = Chi : total:m104_10, partial:m0_9 +#-----| v0_11(void) = ^IndirectReadSideEffect[-1] : &:r0_6, ~m0_10 +#-----| m0_12(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_6 +#-----| m0_13(unknown) = Chi : total:m0_10, partial:m0_12 +# 105| v105_1(void) = NoOp : +#-----| v0_14(void) = NoOp : +#-----| Goto (back edge) -> Block 1 + +#-----| Block 1 +#-----| v0_15(void) = NoOp : +# 103| r103_18(glval) = VariableAddress[(unnamed local variable)] : +# 103| r103_19(glval) = FunctionAddress[final_suspend] : +# 103| r103_20(suspend_always) = Call[final_suspend] : func:r103_19, this:r103_18 +# 103| m103_21(unknown) = ^CallSideEffect : ~m0_13 +# 103| m103_22(unknown) = Chi : total:m0_13, partial:m103_21 +# 103| v103_23(void) = ^IndirectReadSideEffect[-1] : &:r103_18, ~m103_22 +# 103| m103_24(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_18 +# 103| m103_25(unknown) = Chi : total:m103_22, partial:m103_24 +#-----| v0_16(void) = CopyValue : r103_20 +# 103| r103_26(glval) = VariableAddress[#return] : +# 103| v103_27(void) = ReturnValue : &:r103_26, ~m103_25 +# 103| v103_28(void) = AliasedUse : ~m103_22 +# 103| v103_29(void) = ExitFunction : # 108| co_returnable_value co_yield_and_return_value(int) # 108| Block 0 -# 108| v108_1(void) = EnterFunction : -# 108| m108_2(unknown) = AliasedDefinition : -# 108| m108_3(unknown) = InitializeNonLocal : -# 108| m108_4(unknown) = Chi : total:m108_2, partial:m108_3 -# 108| r108_5(glval) = VariableAddress[i] : -# 108| m108_6(int) = InitializeParameter[i] : &:r108_5 -#-----| r0_1(glval) = VariableAddress[i] : -#-----| r0_2(glval) = VariableAddress[i] : -#-----| r0_3(int) = Load[i] : &:r0_2, m108_6 -#-----| m0_4(int) = Store[i] : &:r0_1, r0_3 -# 108| r108_7(glval) = VariableAddress[(unnamed local variable)] : -# 108| m108_8(promise_type) = Uninitialized[(unnamed local variable)] : &:r108_7 +# 108| v108_1(void) = EnterFunction : +# 108| m108_2(unknown) = AliasedDefinition : +# 108| m108_3(unknown) = InitializeNonLocal : +# 108| m108_4(unknown) = Chi : total:m108_2, partial:m108_3 +# 108| r108_5(glval) = VariableAddress[i] : +# 108| m108_6(int) = InitializeParameter[i] : &:r108_5 +#-----| r0_1(glval) = VariableAddress[i] : +#-----| r0_2(glval) = VariableAddress[i] : +#-----| r0_3(int) = Load[i] : &:r0_2, m108_6 +#-----| m0_4(int) = Store[i] : &:r0_1, r0_3 +# 108| r108_7(glval) = VariableAddress[(unnamed local variable)] : +# 108| m108_8(promise_type) = Uninitialized[(unnamed local variable)] : &:r108_7 +# 108| m108_9(unknown) = Chi : total:m108_4, partial:m108_8 +# 108| r108_10(glval) = VariableAddress[(unnamed local variable)] : +# 108| r108_11(glval) = FunctionAddress[initial_suspend] : +# 108| r108_12(suspend_always) = Call[initial_suspend] : func:r108_11, this:r108_10 +# 108| m108_13(unknown) = ^CallSideEffect : ~m108_9 +# 108| m108_14(unknown) = Chi : total:m108_9, partial:m108_13 +# 108| v108_15(void) = ^IndirectReadSideEffect[-1] : &:r108_10, ~m108_14 +# 108| m108_16(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_10 +# 108| m108_17(unknown) = Chi : total:m108_14, partial:m108_16 +#-----| v0_5(void) = CopyValue : r108_12 +# 109| r109_1(glval) = VariableAddress[(unnamed local variable)] : +# 109| r109_2(glval) = FunctionAddress[yield_value] : +# 109| r109_3(glval) = VariableAddress[i] : +# 109| r109_4(int) = Load[i] : &:r109_3, m0_4 +# 109| r109_5(suspend_always) = Call[yield_value] : func:r109_2, this:r109_1, 0:r109_4 +# 109| m109_6(unknown) = ^CallSideEffect : ~m108_17 +# 109| m109_7(unknown) = Chi : total:m108_17, partial:m109_6 +# 109| v109_8(void) = ^IndirectReadSideEffect[-1] : &:r109_1, ~m109_7 +# 109| m109_9(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_1 +# 109| m109_10(unknown) = Chi : total:m109_7, partial:m109_9 +# 109| v109_11(void) = CopyValue : r109_5 +#-----| r0_6(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_7(glval) = FunctionAddress[return_value] : +# 110| r110_1(glval) = VariableAddress[i] : +# 110| r110_2(int) = Load[i] : &:r110_1, m0_4 +# 110| r110_3(int) = Constant[1] : +# 110| r110_4(int) = Add : r110_2, r110_3 +#-----| v0_8(void) = Call[return_value] : func:r0_7, this:r0_6, 0:r110_4 +#-----| m0_9(unknown) = ^CallSideEffect : ~m109_10 +#-----| m0_10(unknown) = Chi : total:m109_10, partial:m0_9 +#-----| v0_11(void) = ^IndirectReadSideEffect[-1] : &:r0_6, ~m0_10 +#-----| m0_12(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_6 +#-----| m0_13(unknown) = Chi : total:m0_10, partial:m0_12 +# 110| v110_5(void) = NoOp : +#-----| v0_14(void) = NoOp : +#-----| Goto (back edge) -> Block 1 + +#-----| Block 1 +#-----| v0_15(void) = NoOp : +# 108| r108_18(glval) = VariableAddress[(unnamed local variable)] : +# 108| r108_19(glval) = FunctionAddress[final_suspend] : +# 108| r108_20(suspend_always) = Call[final_suspend] : func:r108_19, this:r108_18 +# 108| m108_21(unknown) = ^CallSideEffect : ~m0_13 +# 108| m108_22(unknown) = Chi : total:m0_13, partial:m108_21 +# 108| v108_23(void) = ^IndirectReadSideEffect[-1] : &:r108_18, ~m108_22 +# 108| m108_24(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_18 +# 108| m108_25(unknown) = Chi : total:m108_22, partial:m108_24 +#-----| v0_16(void) = CopyValue : r108_20 +# 108| r108_26(glval) = VariableAddress[#return] : +# 108| v108_27(void) = ReturnValue : &:r108_26, ~m108_25 +# 108| v108_28(void) = AliasedUse : ~m108_22 +# 108| v108_29(void) = ExitFunction : destructors_for_temps.cpp: # 9| void ClassWithConstructor::ClassWithConstructor(ClassWithConstructor&&) diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected index 208ab45aefab..b93c7d2649f8 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected @@ -6,12 +6,6 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor -| coroutines.cpp:87:20:87:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:91:21:91:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:95:20:95:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:99:21:99:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:103:20:103:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:108:21:108:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected index 208ab45aefab..b93c7d2649f8 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected @@ -6,12 +6,6 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor -| coroutines.cpp:87:20:87:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:91:21:91:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:95:20:95:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:99:21:99:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:103:20:103:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:108:21:108:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index 50009fe76412..943fd6753eba 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -38,43 +38,21 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor -| coroutines.cpp:87:20:87:20 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:87:20:87:20 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:87:20:87:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | | coroutines.cpp:87:20:88:11 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | | coroutines.cpp:87:20:88:11 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:91:21:91:21 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:91:21:91:21 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:91:21:91:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | | coroutines.cpp:91:21:92:11 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | | coroutines.cpp:91:21:92:11 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:95:20:95:20 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:95:20:95:20 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:95:20:95:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | | coroutines.cpp:95:20:96:13 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | | coroutines.cpp:95:20:96:13 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:96:12:96:12 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | | coroutines.cpp:96:13:96:13 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:99:21:99:21 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:99:21:99:21 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:99:21:99:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | | coroutines.cpp:99:21:100:13 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | | coroutines.cpp:99:21:100:13 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:100:12:100:12 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | | coroutines.cpp:100:13:100:13 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:103:20:103:20 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:103:20:103:20 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:103:20:103:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | | coroutines.cpp:103:20:104:13 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | | coroutines.cpp:103:20:104:13 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:104:12:104:12 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | | coroutines.cpp:104:13:104:13 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:108:21:108:21 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| coroutines.cpp:108:21:108:21 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| coroutines.cpp:108:21:108:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | | coroutines.cpp:108:21:109:13 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | | coroutines.cpp:108:21:109:13 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| coroutines.cpp:109:12:109:12 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | | coroutines.cpp:109:13:109:13 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | | file://:0:0:0:0 | CopyValue: ... , ... | Instruction 'CopyValue: ... , ...' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | | file://:0:0:0:0 | CopyValue: ... , ... | Instruction 'CopyValue: ... , ...' has no successors in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | @@ -82,11 +60,6 @@ instructionWithoutSuccessor | file://:0:0:0:0 | CopyValue: ... , ... | Instruction 'CopyValue: ... , ...' has no successors in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | | file://:0:0:0:0 | CopyValue: ... , ... | Instruction 'CopyValue: ... , ...' has no successors in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | | file://:0:0:0:0 | CopyValue: ... , ... | Instruction 'CopyValue: ... , ...' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| file://:0:0:0:0 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| file://:0:0:0:0 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| file://:0:0:0:0 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| file://:0:0:0:0 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| file://:0:0:0:0 | IndirectMayWriteSideEffect: (unnamed local variable) | Instruction 'IndirectMayWriteSideEffect: (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | | file://:0:0:0:0 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | | file://:0:0:0:0 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | | file://:0:0:0:0 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | @@ -113,12 +86,6 @@ instructionWithoutSuccessor | file://:0:0:0:0 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | | file://:0:0:0:0 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | | file://:0:0:0:0 | IndirectReadSideEffect: (const suspend_always)... | Instruction 'IndirectReadSideEffect: (const suspend_always)...' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | -| file://:0:0:0:0 | NoOp: label ...: | Instruction 'NoOp: label ...:' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| file://:0:0:0:0 | NoOp: label ...: | Instruction 'NoOp: label ...:' has no successors in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| file://:0:0:0:0 | NoOp: label ...: | Instruction 'NoOp: label ...:' has no successors in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| file://:0:0:0:0 | NoOp: label ...: | Instruction 'NoOp: label ...:' has no successors in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| file://:0:0:0:0 | NoOp: label ...: | Instruction 'NoOp: label ...:' has no successors in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| file://:0:0:0:0 | NoOp: label ...: | Instruction 'NoOp: label ...:' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | | file://:0:0:0:0 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | | file://:0:0:0:0 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | | file://:0:0:0:0 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | 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 21f946036e89..28c2fc45502b 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -787,117 +787,110 @@ coroutines.cpp: # 87| mu87_3(unknown) = InitializeNonLocal : # 87| r87_4(glval) = VariableAddress[(unnamed local variable)] : # 87| mu87_5(promise_type) = Uninitialized[(unnamed local variable)] : &:r87_4 +# 87| r87_6(glval) = VariableAddress[(unnamed local variable)] : +# 87| r87_7(glval) = FunctionAddress[initial_suspend] : +# 87| r87_8(suspend_always) = Call[initial_suspend] : func:r87_7, this:r87_6 +# 87| mu87_9(unknown) = ^CallSideEffect : ~m? +# 87| v87_10(void) = ^IndirectReadSideEffect[-1] : &:r87_6, ~m? +# 87| mu87_11(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_6 +#-----| v0_1(void) = CopyValue : r87_8 +#-----| r0_2(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_3(glval) = FunctionAddress[return_void] : +#-----| v0_4(void) = Call[return_void] : func:r0_3, this:r0_2 +#-----| mu0_5(unknown) = ^CallSideEffect : ~m? +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? +#-----| mu0_7(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_2 +# 88| v88_1(void) = NoOp : +#-----| v0_8(void) = NoOp : +#-----| Goto (back edge) -> Block 9 # 87| Block 1 -# 87| v87_6(void) = AliasedUse : ~m? -# 87| v87_7(void) = ExitFunction : +# 87| v87_12(void) = AliasedUse : ~m? +# 87| v87_13(void) = ExitFunction : # 87| Block 2 -# 87| r87_8(glval) = VariableAddress[#return] : -# 87| v87_9(void) = ReturnValue : &:r87_8, ~m? +# 87| v87_14(void) = Unwind : #-----| Goto -> Block 1 -# 87| Block 3 -# 87| v87_10(void) = Unwind : -#-----| Goto -> Block 1 +#-----| Block 3 +#-----| r0_9(bool) = Constant[1] : +#-----| r0_10(glval) = VariableAddress : +#-----| mu0_11(bool) = Store[?] : &:r0_10, r0_9 -# 87| Block 4 -# 87| r87_11(glval) = VariableAddress[(unnamed local variable)] : -# 87| r87_13(glval) = FunctionAddress[initial_suspend] : -# 87| r87_15(suspend_always) = Call[initial_suspend] : func:r87_13, this:r87_11 -# 87| mu87_17(unknown) = ^CallSideEffect : ~m? -# 87| v87_19(void) = ^IndirectReadSideEffect[-1] : &:r87_11, ~m? -# 87| mu87_21(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_11 +#-----| Block 4 +#-----| r0_12(glval) = VariableAddress[#temp0:0] : +# 87| r87_15(glval) = VariableAddress[#temp87:20] : +# 87| r87_17(glval) = VariableAddress[(unnamed local variable)] : +# 87| r87_19(glval) = FunctionAddress[initial_suspend] : +# 87| r87_21(suspend_always) = Call[initial_suspend] : func:r87_19, this:r87_17 +# 87| mu87_23(unknown) = ^CallSideEffect : ~m? +# 87| v87_25(void) = ^IndirectReadSideEffect[-1] : &:r87_17, ~m? +# 87| mu87_27(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_17 +# 87| mu87_29(suspend_always) = Store[#temp87:20] : &:r87_15, r87_21 +# 87| r87_31(suspend_always *) = CopyValue : r87_15 +# 87| mu87_33(suspend_always *) = Store[#temp0:0] : &:r0_12, r87_31 +#-----| r0_14(suspend_always *) = Load[#temp0:0] : &:r0_12, ~m? +# 87| r87_35(glval) = CopyValue : r0_14 +# 87| r87_37(glval) = Convert : r87_35 +# 87| r87_39(glval) = FunctionAddress[await_ready] : +# 87| r87_41(bool) = Call[await_ready] : func:r87_39, this:r87_37 +# 87| mu87_43(unknown) = ^CallSideEffect : ~m? +# 87| v87_45(void) = ^IndirectReadSideEffect[-1] : &:r87_37, ~m? #-----| Block 4 -#-----| r0_1(glval) = VariableAddress[(unnamed local variable)] : -#-----| r0_2(glval) = FunctionAddress[return_void] : -#-----| v0_3(void) = Call[return_void] : func:r0_2, this:r0_1 -#-----| mu0_4(unknown) = ^CallSideEffect : ~m? -#-----| v0_5(void) = ^IndirectReadSideEffect[-1] : &:r0_1, ~m? -#-----| mu0_6(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_1 - -# 87| Block 4 -# 87| r87_11(glval) = VariableAddress[(unnamed local variable)] : -# 87| r87_13(glval) = FunctionAddress[final_suspend] : -# 87| r87_15(suspend_always) = Call[final_suspend] : func:r87_13, this:r87_11 -# 87| mu87_17(unknown) = ^CallSideEffect : ~m? -# 87| v87_19(void) = ^IndirectReadSideEffect[-1] : &:r87_11, ~m? -# 87| mu87_21(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_11 +#-----| r0_12(glval) = VariableAddress[#temp0:0] : +# 87| r87_15(glval) = VariableAddress[#temp87:20] : +# 87| r87_17(glval) = VariableAddress[(unnamed local variable)] : +# 87| r87_19(glval) = FunctionAddress[final_suspend] : +# 87| r87_21(suspend_always) = Call[final_suspend] : func:r87_19, this:r87_17 +# 87| mu87_23(unknown) = ^CallSideEffect : ~m? +# 87| v87_25(void) = ^IndirectReadSideEffect[-1] : &:r87_17, ~m? +# 87| mu87_27(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_17 +# 87| mu87_29(suspend_always) = Store[#temp87:20] : &:r87_15, r87_21 +# 87| r87_31(suspend_always *) = CopyValue : r87_15 +# 87| mu87_33(suspend_always *) = Store[#temp0:0] : &:r0_12, r87_31 +#-----| r0_14(suspend_always *) = Load[#temp0:0] : &:r0_12, ~m? +# 87| r87_35(glval) = CopyValue : r0_14 +# 87| r87_37(glval) = Convert : r87_35 +# 87| r87_39(glval) = FunctionAddress[await_ready] : +# 87| r87_41(bool) = Call[await_ready] : func:r87_39, this:r87_37 +# 87| mu87_43(unknown) = ^CallSideEffect : ~m? +# 87| v87_45(void) = ^IndirectReadSideEffect[-1] : &:r87_37, ~m? + +#-----| Block 6 +#-----| v0_16(void) = CatchAny : +#-----| r0_17(glval) = VariableAddress : +#-----| r0_18(bool) = Load[?] : &:r0_17, ~m? +#-----| r0_19(bool) = LogicalNot : r0_18 +#-----| v0_20(void) = ConditionalBranch : r0_19 +#-----| False -> Block 8 +#-----| True -> Block 7 #-----| Block 7 -#-----| r0_7(bool) = Constant[1] : -#-----| r0_8(glval) = VariableAddress : -#-----| mu0_9(bool) = Store[?] : &:r0_8, r0_7 - -#-----| Block 8 -#-----| r0_10(glval) = VariableAddress[#temp0:0] : -# 87| r87_23(glval) = VariableAddress[#temp87:20] : -# 87| r87_25(glval) = VariableAddress[(unnamed local variable)] : -# 87| r87_27(glval) = FunctionAddress[initial_suspend] : -# 87| r87_29(suspend_always) = Call[initial_suspend] : func:r87_27, this:r87_25 -# 87| mu87_31(unknown) = ^CallSideEffect : ~m? -# 87| v87_33(void) = ^IndirectReadSideEffect[-1] : &:r87_25, ~m? -# 87| mu87_35(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_25 -# 87| mu87_37(suspend_always) = Store[#temp87:20] : &:r87_23, r87_29 -# 87| r87_39(suspend_always *) = CopyValue : r87_23 -# 87| mu87_41(suspend_always *) = Store[#temp0:0] : &:r0_10, r87_39 -#-----| r0_12(suspend_always *) = Load[#temp0:0] : &:r0_10, ~m? -# 87| r87_43(glval) = CopyValue : r0_12 -# 87| r87_45(glval) = Convert : r87_43 -# 87| r87_47(glval) = FunctionAddress[await_ready] : -# 87| r87_49(bool) = Call[await_ready] : func:r87_47, this:r87_45 -# 87| mu87_51(unknown) = ^CallSideEffect : ~m? -# 87| v87_53(void) = ^IndirectReadSideEffect[-1] : &:r87_45, ~m? - -#-----| Block 8 -#-----| r0_10(glval) = VariableAddress[#temp0:0] : -# 87| r87_23(glval) = VariableAddress[#temp87:20] : -# 87| r87_25(glval) = VariableAddress[(unnamed local variable)] : -# 87| r87_27(glval) = FunctionAddress[final_suspend] : -# 87| r87_29(suspend_always) = Call[final_suspend] : func:r87_27, this:r87_25 -# 87| mu87_31(unknown) = ^CallSideEffect : ~m? -# 87| v87_33(void) = ^IndirectReadSideEffect[-1] : &:r87_25, ~m? -# 87| mu87_35(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_25 -# 87| mu87_37(suspend_always) = Store[#temp87:20] : &:r87_23, r87_29 -# 87| r87_39(suspend_always *) = CopyValue : r87_23 -# 87| mu87_41(suspend_always *) = Store[#temp0:0] : &:r0_10, r87_39 -#-----| r0_12(suspend_always *) = Load[#temp0:0] : &:r0_10, ~m? -# 87| r87_43(glval) = CopyValue : r0_12 -# 87| r87_45(glval) = Convert : r87_43 -# 87| r87_47(glval) = FunctionAddress[await_ready] : -# 87| r87_49(bool) = Call[await_ready] : func:r87_47, this:r87_45 -# 87| mu87_51(unknown) = ^CallSideEffect : ~m? -# 87| v87_53(void) = ^IndirectReadSideEffect[-1] : &:r87_45, ~m? - -#-----| Block 10 -#-----| v0_14(void) = NoOp : -#-----| Goto (back edge) -> Block 14 - -#-----| Block 11 -#-----| v0_15(void) = CatchAny : -#-----| r0_16(glval) = VariableAddress : -#-----| r0_17(bool) = Load[?] : &:r0_16, ~m? -#-----| r0_18(bool) = LogicalNot : r0_17 -#-----| v0_19(void) = ConditionalBranch : r0_18 -#-----| False -> Block 13 -#-----| True -> Block 12 - -#-----| Block 12 -#-----| v0_20(void) = ReThrow : -#-----| Exception -> Block 3 +#-----| v0_21(void) = ReThrow : +#-----| Exception -> Block 2 -# 87| Block 13 -# 87| r87_55(glval) = VariableAddress[(unnamed local variable)] : -# 87| r87_56(glval) = FunctionAddress[unhandled_exception] : -# 87| v87_57(void) = Call[unhandled_exception] : func:r87_56, this:r87_55 -# 87| mu87_58(unknown) = ^CallSideEffect : ~m? -# 87| v87_59(void) = ^IndirectReadSideEffect[-1] : &:r87_55, ~m? -# 87| mu87_60(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_55 -#-----| Goto -> Block 14 +# 87| Block 8 +# 87| r87_47(glval) = VariableAddress[(unnamed local variable)] : +# 87| r87_48(glval) = FunctionAddress[unhandled_exception] : +# 87| v87_49(void) = Call[unhandled_exception] : func:r87_48, this:r87_47 +# 87| mu87_50(unknown) = ^CallSideEffect : ~m? +# 87| v87_51(void) = ^IndirectReadSideEffect[-1] : &:r87_47, ~m? +# 87| mu87_52(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_47 +#-----| Goto -> Block 9 -#-----| Block 14 -#-----| v0_21(void) = NoOp : +#-----| Block 9 +#-----| v0_22(void) = NoOp : +# 87| r87_53(glval) = VariableAddress[(unnamed local variable)] : +# 87| r87_54(glval) = FunctionAddress[final_suspend] : +# 87| r87_55(suspend_always) = Call[final_suspend] : func:r87_54, this:r87_53 +# 87| mu87_56(unknown) = ^CallSideEffect : ~m? +# 87| v87_57(void) = ^IndirectReadSideEffect[-1] : &:r87_53, ~m? +# 87| mu87_58(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r87_53 +#-----| v0_23(void) = CopyValue : r87_55 +# 87| r87_59(glval) = VariableAddress[#return] : +# 87| v87_60(void) = ReturnValue : &:r87_59, ~m? +#-----| Goto -> Block 1 # 91| co_returnable_value co_return_int(int) # 91| (no string representation) @@ -967,119 +960,112 @@ coroutines.cpp: #-----| mu0_4(int) = Store[i] : &:r0_1, r0_3 # 91| r91_6(glval) = VariableAddress[(unnamed local variable)] : # 91| mu91_7(promise_type) = Uninitialized[(unnamed local variable)] : &:r91_6 +# 91| r91_8(glval) = VariableAddress[(unnamed local variable)] : +# 91| r91_9(glval) = FunctionAddress[initial_suspend] : +# 91| r91_10(suspend_always) = Call[initial_suspend] : func:r91_9, this:r91_8 +# 91| mu91_11(unknown) = ^CallSideEffect : ~m? +# 91| v91_12(void) = ^IndirectReadSideEffect[-1] : &:r91_8, ~m? +# 91| mu91_13(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_8 +#-----| v0_5(void) = CopyValue : r91_10 +#-----| r0_6(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_7(glval) = FunctionAddress[return_value] : +# 92| r92_1(glval) = VariableAddress[i] : +# 92| r92_2(int) = Load[i] : &:r92_1, ~m? +#-----| v0_8(void) = Call[return_value] : func:r0_7, this:r0_6, 0:r92_2 +#-----| mu0_9(unknown) = ^CallSideEffect : ~m? +#-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_6, ~m? +#-----| mu0_11(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_6 +# 92| v92_3(void) = NoOp : +#-----| v0_12(void) = NoOp : +#-----| Goto (back edge) -> Block 9 # 91| Block 1 -# 91| v91_8(void) = AliasedUse : ~m? -# 91| v91_9(void) = ExitFunction : +# 91| v91_14(void) = AliasedUse : ~m? +# 91| v91_15(void) = ExitFunction : # 91| Block 2 -# 91| r91_10(glval) = VariableAddress[#return] : -# 91| v91_11(void) = ReturnValue : &:r91_10, ~m? +# 91| v91_16(void) = Unwind : #-----| Goto -> Block 1 -# 91| Block 3 -# 91| v91_12(void) = Unwind : -#-----| Goto -> Block 1 +#-----| Block 3 +#-----| r0_13(bool) = Constant[1] : +#-----| r0_14(glval) = VariableAddress : +#-----| mu0_15(bool) = Store[?] : &:r0_14, r0_13 -# 91| Block 4 -# 91| r91_13(glval) = VariableAddress[(unnamed local variable)] : -# 91| r91_15(glval) = FunctionAddress[initial_suspend] : -# 91| r91_17(suspend_always) = Call[initial_suspend] : func:r91_15, this:r91_13 -# 91| mu91_19(unknown) = ^CallSideEffect : ~m? -# 91| v91_21(void) = ^IndirectReadSideEffect[-1] : &:r91_13, ~m? -# 91| mu91_23(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_13 +#-----| Block 4 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 91| r91_17(glval) = VariableAddress[#temp91:21] : +# 91| r91_19(glval) = VariableAddress[(unnamed local variable)] : +# 91| r91_21(glval) = FunctionAddress[initial_suspend] : +# 91| r91_23(suspend_always) = Call[initial_suspend] : func:r91_21, this:r91_19 +# 91| mu91_25(unknown) = ^CallSideEffect : ~m? +# 91| v91_27(void) = ^IndirectReadSideEffect[-1] : &:r91_19, ~m? +# 91| mu91_29(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_19 +# 91| mu91_31(suspend_always) = Store[#temp91:21] : &:r91_17, r91_23 +# 91| r91_33(suspend_always *) = CopyValue : r91_17 +# 91| mu91_35(suspend_always *) = Store[#temp0:0] : &:r0_16, r91_33 +#-----| r0_18(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 91| r91_37(glval) = CopyValue : r0_18 +# 91| r91_39(glval) = Convert : r91_37 +# 91| r91_41(glval) = FunctionAddress[await_ready] : +# 91| r91_43(bool) = Call[await_ready] : func:r91_41, this:r91_39 +# 91| mu91_45(unknown) = ^CallSideEffect : ~m? +# 91| v91_47(void) = ^IndirectReadSideEffect[-1] : &:r91_39, ~m? #-----| Block 4 -#-----| r0_5(glval) = VariableAddress[(unnamed local variable)] : -#-----| r0_6(glval) = FunctionAddress[return_value] : -# 92| r92_1(glval) = VariableAddress[i] : -# 92| r92_2(int) = Load[i] : &:r92_1, ~m? -#-----| v0_7(void) = Call[return_value] : func:r0_6, this:r0_5, 0:r92_2 -#-----| mu0_8(unknown) = ^CallSideEffect : ~m? -#-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -#-----| mu0_10(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_5 - -# 91| Block 4 -# 91| r91_13(glval) = VariableAddress[(unnamed local variable)] : -# 91| r91_15(glval) = FunctionAddress[final_suspend] : -# 91| r91_17(suspend_always) = Call[final_suspend] : func:r91_15, this:r91_13 -# 91| mu91_19(unknown) = ^CallSideEffect : ~m? -# 91| v91_21(void) = ^IndirectReadSideEffect[-1] : &:r91_13, ~m? -# 91| mu91_23(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_13 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 91| r91_17(glval) = VariableAddress[#temp91:21] : +# 91| r91_19(glval) = VariableAddress[(unnamed local variable)] : +# 91| r91_21(glval) = FunctionAddress[final_suspend] : +# 91| r91_23(suspend_always) = Call[final_suspend] : func:r91_21, this:r91_19 +# 91| mu91_25(unknown) = ^CallSideEffect : ~m? +# 91| v91_27(void) = ^IndirectReadSideEffect[-1] : &:r91_19, ~m? +# 91| mu91_29(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_19 +# 91| mu91_31(suspend_always) = Store[#temp91:21] : &:r91_17, r91_23 +# 91| r91_33(suspend_always *) = CopyValue : r91_17 +# 91| mu91_35(suspend_always *) = Store[#temp0:0] : &:r0_16, r91_33 +#-----| r0_18(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 91| r91_37(glval) = CopyValue : r0_18 +# 91| r91_39(glval) = Convert : r91_37 +# 91| r91_41(glval) = FunctionAddress[await_ready] : +# 91| r91_43(bool) = Call[await_ready] : func:r91_41, this:r91_39 +# 91| mu91_45(unknown) = ^CallSideEffect : ~m? +# 91| v91_47(void) = ^IndirectReadSideEffect[-1] : &:r91_39, ~m? + +#-----| Block 6 +#-----| v0_20(void) = CatchAny : +#-----| r0_21(glval) = VariableAddress : +#-----| r0_22(bool) = Load[?] : &:r0_21, ~m? +#-----| r0_23(bool) = LogicalNot : r0_22 +#-----| v0_24(void) = ConditionalBranch : r0_23 +#-----| False -> Block 8 +#-----| True -> Block 7 #-----| Block 7 -#-----| r0_11(bool) = Constant[1] : -#-----| r0_12(glval) = VariableAddress : -#-----| mu0_13(bool) = Store[?] : &:r0_12, r0_11 - -#-----| Block 8 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 91| r91_25(glval) = VariableAddress[#temp91:21] : -# 91| r91_27(glval) = VariableAddress[(unnamed local variable)] : -# 91| r91_29(glval) = FunctionAddress[initial_suspend] : -# 91| r91_31(suspend_always) = Call[initial_suspend] : func:r91_29, this:r91_27 -# 91| mu91_33(unknown) = ^CallSideEffect : ~m? -# 91| v91_35(void) = ^IndirectReadSideEffect[-1] : &:r91_27, ~m? -# 91| mu91_37(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_27 -# 91| mu91_39(suspend_always) = Store[#temp91:21] : &:r91_25, r91_31 -# 91| r91_41(suspend_always *) = CopyValue : r91_25 -# 91| mu91_43(suspend_always *) = Store[#temp0:0] : &:r0_14, r91_41 -#-----| r0_16(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 91| r91_45(glval) = CopyValue : r0_16 -# 91| r91_47(glval) = Convert : r91_45 -# 91| r91_49(glval) = FunctionAddress[await_ready] : -# 91| r91_51(bool) = Call[await_ready] : func:r91_49, this:r91_47 -# 91| mu91_53(unknown) = ^CallSideEffect : ~m? -# 91| v91_55(void) = ^IndirectReadSideEffect[-1] : &:r91_47, ~m? - -#-----| Block 8 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 91| r91_25(glval) = VariableAddress[#temp91:21] : -# 91| r91_27(glval) = VariableAddress[(unnamed local variable)] : -# 91| r91_29(glval) = FunctionAddress[final_suspend] : -# 91| r91_31(suspend_always) = Call[final_suspend] : func:r91_29, this:r91_27 -# 91| mu91_33(unknown) = ^CallSideEffect : ~m? -# 91| v91_35(void) = ^IndirectReadSideEffect[-1] : &:r91_27, ~m? -# 91| mu91_37(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_27 -# 91| mu91_39(suspend_always) = Store[#temp91:21] : &:r91_25, r91_31 -# 91| r91_41(suspend_always *) = CopyValue : r91_25 -# 91| mu91_43(suspend_always *) = Store[#temp0:0] : &:r0_14, r91_41 -#-----| r0_16(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 91| r91_45(glval) = CopyValue : r0_16 -# 91| r91_47(glval) = Convert : r91_45 -# 91| r91_49(glval) = FunctionAddress[await_ready] : -# 91| r91_51(bool) = Call[await_ready] : func:r91_49, this:r91_47 -# 91| mu91_53(unknown) = ^CallSideEffect : ~m? -# 91| v91_55(void) = ^IndirectReadSideEffect[-1] : &:r91_47, ~m? - -#-----| Block 10 -#-----| v0_18(void) = NoOp : -#-----| Goto (back edge) -> Block 14 - -#-----| Block 11 -#-----| v0_19(void) = CatchAny : -#-----| r0_20(glval) = VariableAddress : -#-----| r0_21(bool) = Load[?] : &:r0_20, ~m? -#-----| r0_22(bool) = LogicalNot : r0_21 -#-----| v0_23(void) = ConditionalBranch : r0_22 -#-----| False -> Block 13 -#-----| True -> Block 12 - -#-----| Block 12 -#-----| v0_24(void) = ReThrow : -#-----| Exception -> Block 3 +#-----| v0_25(void) = ReThrow : +#-----| Exception -> Block 2 -# 91| Block 13 -# 91| r91_57(glval) = VariableAddress[(unnamed local variable)] : -# 91| r91_58(glval) = FunctionAddress[unhandled_exception] : -# 91| v91_59(void) = Call[unhandled_exception] : func:r91_58, this:r91_57 -# 91| mu91_60(unknown) = ^CallSideEffect : ~m? -# 91| v91_61(void) = ^IndirectReadSideEffect[-1] : &:r91_57, ~m? -# 91| mu91_62(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_57 -#-----| Goto -> Block 14 +# 91| Block 8 +# 91| r91_49(glval) = VariableAddress[(unnamed local variable)] : +# 91| r91_50(glval) = FunctionAddress[unhandled_exception] : +# 91| v91_51(void) = Call[unhandled_exception] : func:r91_50, this:r91_49 +# 91| mu91_52(unknown) = ^CallSideEffect : ~m? +# 91| v91_53(void) = ^IndirectReadSideEffect[-1] : &:r91_49, ~m? +# 91| mu91_54(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_49 +#-----| Goto -> Block 9 -#-----| Block 14 -#-----| v0_25(void) = NoOp : +#-----| Block 9 +#-----| v0_26(void) = NoOp : +# 91| r91_55(glval) = VariableAddress[(unnamed local variable)] : +# 91| r91_56(glval) = FunctionAddress[final_suspend] : +# 91| r91_57(suspend_always) = Call[final_suspend] : func:r91_56, this:r91_55 +# 91| mu91_58(unknown) = ^CallSideEffect : ~m? +# 91| v91_59(void) = ^IndirectReadSideEffect[-1] : &:r91_55, ~m? +# 91| mu91_60(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r91_55 +#-----| v0_27(void) = CopyValue : r91_57 +# 91| r91_61(glval) = VariableAddress[#return] : +# 91| v91_62(void) = ReturnValue : &:r91_61, ~m? +#-----| Goto -> Block 1 # 95| co_returnable_void co_yield_value_void(int) # 95| (no string representation) @@ -1176,29 +1162,13 @@ coroutines.cpp: #-----| mu0_4(int) = Store[i] : &:r0_1, r0_3 # 95| r95_6(glval) = VariableAddress[(unnamed local variable)] : # 95| mu95_7(promise_type) = Uninitialized[(unnamed local variable)] : &:r95_6 - -# 95| Block 1 -# 95| v95_8(void) = AliasedUse : ~m? -# 95| v95_9(void) = ExitFunction : - -# 95| Block 2 -# 95| r95_10(glval) = VariableAddress[#return] : -# 95| v95_11(void) = ReturnValue : &:r95_10, ~m? -#-----| Goto -> Block 1 - -# 95| Block 3 -# 95| v95_12(void) = Unwind : -#-----| Goto -> Block 1 - -# 95| Block 4 -# 95| r95_13(glval) = VariableAddress[(unnamed local variable)] : -# 95| r95_15(glval) = FunctionAddress[initial_suspend] : -# 95| r95_17(suspend_always) = Call[initial_suspend] : func:r95_15, this:r95_13 -# 95| mu95_19(unknown) = ^CallSideEffect : ~m? -# 95| v95_21(void) = ^IndirectReadSideEffect[-1] : &:r95_13, ~m? -# 95| mu95_23(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_13 - -# 96| Block 4 +# 95| r95_8(glval) = VariableAddress[(unnamed local variable)] : +# 95| r95_9(glval) = FunctionAddress[initial_suspend] : +# 95| r95_10(suspend_always) = Call[initial_suspend] : func:r95_9, this:r95_8 +# 95| mu95_11(unknown) = ^CallSideEffect : ~m? +# 95| v95_12(void) = ^IndirectReadSideEffect[-1] : &:r95_8, ~m? +# 95| mu95_13(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_8 +#-----| v0_5(void) = CopyValue : r95_10 # 96| r96_1(glval) = VariableAddress[(unnamed local variable)] : # 96| r96_2(glval) = FunctionAddress[yield_value] : # 96| r96_3(glval) = VariableAddress[i] : @@ -1207,118 +1177,126 @@ coroutines.cpp: # 96| mu96_6(unknown) = ^CallSideEffect : ~m? # 96| v96_7(void) = ^IndirectReadSideEffect[-1] : &:r96_1, ~m? # 96| mu96_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_1 +# 96| v96_9(void) = CopyValue : r96_5 +#-----| r0_6(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_7(glval) = FunctionAddress[return_void] : +#-----| v0_8(void) = Call[return_void] : func:r0_7, this:r0_6 +#-----| mu0_9(unknown) = ^CallSideEffect : ~m? +#-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_6, ~m? +#-----| mu0_11(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_6 +# 97| v97_1(void) = NoOp : +#-----| v0_12(void) = NoOp : +#-----| Goto (back edge) -> Block 10 -#-----| Block 4 -#-----| r0_5(glval) = VariableAddress[(unnamed local variable)] : -#-----| r0_6(glval) = FunctionAddress[return_void] : -#-----| v0_7(void) = Call[return_void] : func:r0_6, this:r0_5 -#-----| mu0_8(unknown) = ^CallSideEffect : ~m? -#-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -#-----| mu0_10(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_5 - -# 95| Block 4 -# 95| r95_13(glval) = VariableAddress[(unnamed local variable)] : -# 95| r95_15(glval) = FunctionAddress[final_suspend] : -# 95| r95_17(suspend_always) = Call[final_suspend] : func:r95_15, this:r95_13 -# 95| mu95_19(unknown) = ^CallSideEffect : ~m? -# 95| v95_21(void) = ^IndirectReadSideEffect[-1] : &:r95_13, ~m? -# 95| mu95_23(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_13 +# 95| Block 1 +# 95| v95_14(void) = AliasedUse : ~m? +# 95| v95_15(void) = ExitFunction : -#-----| Block 8 -#-----| r0_11(bool) = Constant[1] : -#-----| r0_12(glval) = VariableAddress : -#-----| mu0_13(bool) = Store[?] : &:r0_12, r0_11 +# 95| Block 2 +# 95| v95_16(void) = Unwind : +#-----| Goto -> Block 1 -#-----| Block 9 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 95| r95_25(glval) = VariableAddress[#temp95:20] : -# 95| r95_27(glval) = VariableAddress[(unnamed local variable)] : -# 95| r95_29(glval) = FunctionAddress[initial_suspend] : -# 95| r95_31(suspend_always) = Call[initial_suspend] : func:r95_29, this:r95_27 -# 95| mu95_33(unknown) = ^CallSideEffect : ~m? -# 95| v95_35(void) = ^IndirectReadSideEffect[-1] : &:r95_27, ~m? -# 95| mu95_37(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_27 -# 95| mu95_39(suspend_always) = Store[#temp95:20] : &:r95_25, r95_31 -# 95| r95_41(suspend_always *) = CopyValue : r95_25 -# 95| mu95_43(suspend_always *) = Store[#temp0:0] : &:r0_14, r95_41 -#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 95| r95_45(glval) = CopyValue : r0_17 -# 95| r95_47(glval) = Convert : r95_45 -# 95| r95_49(glval) = FunctionAddress[await_ready] : -# 95| r95_51(bool) = Call[await_ready] : func:r95_49, this:r95_47 -# 95| mu95_53(unknown) = ^CallSideEffect : ~m? -# 95| v95_55(void) = ^IndirectReadSideEffect[-1] : &:r95_47, ~m? +#-----| Block 3 +#-----| r0_13(bool) = Constant[1] : +#-----| r0_14(glval) = VariableAddress : +#-----| mu0_15(bool) = Store[?] : &:r0_14, r0_13 -#-----| Block 9 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 96| r96_9(glval) = VariableAddress[#temp96:13] : -# 96| r96_10(glval) = VariableAddress[(unnamed local variable)] : -# 96| r96_11(glval) = FunctionAddress[yield_value] : -# 96| r96_12(glval) = VariableAddress[i] : -# 96| r96_13(int) = Load[i] : &:r96_12, ~m? -# 96| r96_14(suspend_always) = Call[yield_value] : func:r96_11, this:r96_10, 0:r96_13 -# 96| mu96_15(unknown) = ^CallSideEffect : ~m? -# 96| v96_16(void) = ^IndirectReadSideEffect[-1] : &:r96_10, ~m? -# 96| mu96_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_10 -# 96| mu96_18(suspend_always) = Store[#temp96:13] : &:r96_9, r96_14 -# 96| r96_19(suspend_always *) = CopyValue : r96_9 -# 96| mu96_20(suspend_always *) = Store[#temp0:0] : &:r0_14, r96_19 -#-----| r0_19(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 96| r96_21(glval) = CopyValue : r0_19 -# 96| r96_22(glval) = Convert : r96_21 -# 96| r96_23(glval) = FunctionAddress[await_ready] : -# 96| r96_24(bool) = Call[await_ready] : func:r96_23, this:r96_22 -# 96| mu96_25(unknown) = ^CallSideEffect : ~m? -# 96| v96_26(void) = ^IndirectReadSideEffect[-1] : &:r96_22, ~m? +#-----| Block 4 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 95| r95_17(glval) = VariableAddress[#temp95:20] : +# 95| r95_19(glval) = VariableAddress[(unnamed local variable)] : +# 95| r95_21(glval) = FunctionAddress[initial_suspend] : +# 95| r95_23(suspend_always) = Call[initial_suspend] : func:r95_21, this:r95_19 +# 95| mu95_25(unknown) = ^CallSideEffect : ~m? +# 95| v95_27(void) = ^IndirectReadSideEffect[-1] : &:r95_19, ~m? +# 95| mu95_29(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_19 +# 95| mu95_31(suspend_always) = Store[#temp95:20] : &:r95_17, r95_23 +# 95| r95_33(suspend_always *) = CopyValue : r95_17 +# 95| mu95_35(suspend_always *) = Store[#temp0:0] : &:r0_16, r95_33 +#-----| r0_19(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 95| r95_37(glval) = CopyValue : r0_19 +# 95| r95_39(glval) = Convert : r95_37 +# 95| r95_41(glval) = FunctionAddress[await_ready] : +# 95| r95_43(bool) = Call[await_ready] : func:r95_41, this:r95_39 +# 95| mu95_45(unknown) = ^CallSideEffect : ~m? +# 95| v95_47(void) = ^IndirectReadSideEffect[-1] : &:r95_39, ~m? -#-----| Block 9 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 95| r95_25(glval) = VariableAddress[#temp95:20] : -# 95| r95_27(glval) = VariableAddress[(unnamed local variable)] : -# 95| r95_29(glval) = FunctionAddress[final_suspend] : -# 95| r95_31(suspend_always) = Call[final_suspend] : func:r95_29, this:r95_27 -# 95| mu95_33(unknown) = ^CallSideEffect : ~m? -# 95| v95_35(void) = ^IndirectReadSideEffect[-1] : &:r95_27, ~m? -# 95| mu95_37(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_27 -# 95| mu95_39(suspend_always) = Store[#temp95:20] : &:r95_25, r95_31 -# 95| r95_41(suspend_always *) = CopyValue : r95_25 -# 95| mu95_43(suspend_always *) = Store[#temp0:0] : &:r0_14, r95_41 -#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 95| r95_45(glval) = CopyValue : r0_17 -# 95| r95_47(glval) = Convert : r95_45 -# 95| r95_49(glval) = FunctionAddress[await_ready] : -# 95| r95_51(bool) = Call[await_ready] : func:r95_49, this:r95_47 -# 95| mu95_53(unknown) = ^CallSideEffect : ~m? -# 95| v95_55(void) = ^IndirectReadSideEffect[-1] : &:r95_47, ~m? - -#-----| Block 12 -#-----| v0_20(void) = NoOp : -#-----| Goto (back edge) -> Block 16 - -#-----| Block 13 -#-----| v0_21(void) = CatchAny : -#-----| r0_22(glval) = VariableAddress : -#-----| r0_23(bool) = Load[?] : &:r0_22, ~m? -#-----| r0_24(bool) = LogicalNot : r0_23 -#-----| v0_25(void) = ConditionalBranch : r0_24 -#-----| False -> Block 15 -#-----| True -> Block 14 +#-----| Block 4 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 96| r96_10(glval) = VariableAddress[#temp96:13] : +# 96| r96_11(glval) = VariableAddress[(unnamed local variable)] : +# 96| r96_12(glval) = FunctionAddress[yield_value] : +# 96| r96_13(glval) = VariableAddress[i] : +# 96| r96_14(int) = Load[i] : &:r96_13, ~m? +# 96| r96_15(suspend_always) = Call[yield_value] : func:r96_12, this:r96_11, 0:r96_14 +# 96| mu96_16(unknown) = ^CallSideEffect : ~m? +# 96| v96_17(void) = ^IndirectReadSideEffect[-1] : &:r96_11, ~m? +# 96| mu96_18(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r96_11 +# 96| mu96_19(suspend_always) = Store[#temp96:13] : &:r96_10, r96_15 +# 96| r96_20(suspend_always *) = CopyValue : r96_10 +# 96| mu96_21(suspend_always *) = Store[#temp0:0] : &:r0_16, r96_20 +#-----| r0_21(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 96| r96_22(glval) = CopyValue : r0_21 +# 96| r96_23(glval) = Convert : r96_22 +# 96| r96_24(glval) = FunctionAddress[await_ready] : +# 96| r96_25(bool) = Call[await_ready] : func:r96_24, this:r96_23 +# 96| mu96_26(unknown) = ^CallSideEffect : ~m? +# 96| v96_27(void) = ^IndirectReadSideEffect[-1] : &:r96_23, ~m? -#-----| Block 14 -#-----| v0_26(void) = ReThrow : -#-----| Exception -> Block 3 +#-----| Block 4 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 95| r95_17(glval) = VariableAddress[#temp95:20] : +# 95| r95_19(glval) = VariableAddress[(unnamed local variable)] : +# 95| r95_21(glval) = FunctionAddress[final_suspend] : +# 95| r95_23(suspend_always) = Call[final_suspend] : func:r95_21, this:r95_19 +# 95| mu95_25(unknown) = ^CallSideEffect : ~m? +# 95| v95_27(void) = ^IndirectReadSideEffect[-1] : &:r95_19, ~m? +# 95| mu95_29(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_19 +# 95| mu95_31(suspend_always) = Store[#temp95:20] : &:r95_17, r95_23 +# 95| r95_33(suspend_always *) = CopyValue : r95_17 +# 95| mu95_35(suspend_always *) = Store[#temp0:0] : &:r0_16, r95_33 +#-----| r0_19(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 95| r95_37(glval) = CopyValue : r0_19 +# 95| r95_39(glval) = Convert : r95_37 +# 95| r95_41(glval) = FunctionAddress[await_ready] : +# 95| r95_43(bool) = Call[await_ready] : func:r95_41, this:r95_39 +# 95| mu95_45(unknown) = ^CallSideEffect : ~m? +# 95| v95_47(void) = ^IndirectReadSideEffect[-1] : &:r95_39, ~m? -# 95| Block 15 -# 95| r95_57(glval) = VariableAddress[(unnamed local variable)] : -# 95| r95_58(glval) = FunctionAddress[unhandled_exception] : -# 95| v95_59(void) = Call[unhandled_exception] : func:r95_58, this:r95_57 -# 95| mu95_60(unknown) = ^CallSideEffect : ~m? -# 95| v95_61(void) = ^IndirectReadSideEffect[-1] : &:r95_57, ~m? -# 95| mu95_62(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_57 -#-----| Goto -> Block 16 +#-----| Block 7 +#-----| v0_22(void) = CatchAny : +#-----| r0_23(glval) = VariableAddress : +#-----| r0_24(bool) = Load[?] : &:r0_23, ~m? +#-----| r0_25(bool) = LogicalNot : r0_24 +#-----| v0_26(void) = ConditionalBranch : r0_25 +#-----| False -> Block 9 +#-----| True -> Block 8 + +#-----| Block 8 +#-----| v0_27(void) = ReThrow : +#-----| Exception -> Block 2 + +# 95| Block 9 +# 95| r95_49(glval) = VariableAddress[(unnamed local variable)] : +# 95| r95_50(glval) = FunctionAddress[unhandled_exception] : +# 95| v95_51(void) = Call[unhandled_exception] : func:r95_50, this:r95_49 +# 95| mu95_52(unknown) = ^CallSideEffect : ~m? +# 95| v95_53(void) = ^IndirectReadSideEffect[-1] : &:r95_49, ~m? +# 95| mu95_54(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_49 +#-----| Goto -> Block 10 -#-----| Block 16 -#-----| v0_27(void) = NoOp : +#-----| Block 10 +#-----| v0_28(void) = NoOp : +# 95| r95_55(glval) = VariableAddress[(unnamed local variable)] : +# 95| r95_56(glval) = FunctionAddress[final_suspend] : +# 95| r95_57(suspend_always) = Call[final_suspend] : func:r95_56, this:r95_55 +# 95| mu95_58(unknown) = ^CallSideEffect : ~m? +# 95| v95_59(void) = ^IndirectReadSideEffect[-1] : &:r95_55, ~m? +# 95| mu95_60(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r95_55 +#-----| v0_29(void) = CopyValue : r95_57 +# 95| r95_61(glval) = VariableAddress[#return] : +# 95| v95_62(void) = ReturnValue : &:r95_61, ~m? +#-----| Goto -> Block 1 # 99| co_returnable_value co_yield_value_value(int) # 99| (no string representation) @@ -1404,40 +1382,24 @@ coroutines.cpp: #-----| IndirectReadSideEffect: (const suspend_always)... # 99| Block 0 -# 99| v99_1(void) = EnterFunction : -# 99| mu99_2(unknown) = AliasedDefinition : -# 99| mu99_3(unknown) = InitializeNonLocal : -# 99| r99_4(glval) = VariableAddress[i] : -# 99| mu99_5(int) = InitializeParameter[i] : &:r99_4 -#-----| r0_1(glval) = VariableAddress[i] : -#-----| r0_2(glval) = VariableAddress[i] : -#-----| r0_3(int) = Load[i] : &:r0_2, ~m? -#-----| mu0_4(int) = Store[i] : &:r0_1, r0_3 -# 99| r99_6(glval) = VariableAddress[(unnamed local variable)] : -# 99| mu99_7(promise_type) = Uninitialized[(unnamed local variable)] : &:r99_6 - -# 99| Block 1 -# 99| v99_8(void) = AliasedUse : ~m? -# 99| v99_9(void) = ExitFunction : - -# 99| Block 2 -# 99| r99_10(glval) = VariableAddress[#return] : -# 99| v99_11(void) = ReturnValue : &:r99_10, ~m? -#-----| Goto -> Block 1 - -# 99| Block 3 -# 99| v99_12(void) = Unwind : -#-----| Goto -> Block 1 - -# 99| Block 4 -# 99| r99_13(glval) = VariableAddress[(unnamed local variable)] : -# 99| r99_15(glval) = FunctionAddress[initial_suspend] : -# 99| r99_17(suspend_always) = Call[initial_suspend] : func:r99_15, this:r99_13 -# 99| mu99_19(unknown) = ^CallSideEffect : ~m? -# 99| v99_21(void) = ^IndirectReadSideEffect[-1] : &:r99_13, ~m? -# 99| mu99_23(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_13 - -# 100| Block 4 +# 99| v99_1(void) = EnterFunction : +# 99| mu99_2(unknown) = AliasedDefinition : +# 99| mu99_3(unknown) = InitializeNonLocal : +# 99| r99_4(glval) = VariableAddress[i] : +# 99| mu99_5(int) = InitializeParameter[i] : &:r99_4 +#-----| r0_1(glval) = VariableAddress[i] : +#-----| r0_2(glval) = VariableAddress[i] : +#-----| r0_3(int) = Load[i] : &:r0_2, ~m? +#-----| mu0_4(int) = Store[i] : &:r0_1, r0_3 +# 99| r99_6(glval) = VariableAddress[(unnamed local variable)] : +# 99| mu99_7(promise_type) = Uninitialized[(unnamed local variable)] : &:r99_6 +# 99| r99_8(glval) = VariableAddress[(unnamed local variable)] : +# 99| r99_9(glval) = FunctionAddress[initial_suspend] : +# 99| r99_10(suspend_always) = Call[initial_suspend] : func:r99_9, this:r99_8 +# 99| mu99_11(unknown) = ^CallSideEffect : ~m? +# 99| v99_12(void) = ^IndirectReadSideEffect[-1] : &:r99_8, ~m? +# 99| mu99_13(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_8 +#-----| v0_5(void) = CopyValue : r99_10 # 100| r100_1(glval) = VariableAddress[(unnamed local variable)] : # 100| r100_2(glval) = FunctionAddress[yield_value] : # 100| r100_3(glval) = VariableAddress[i] : @@ -1446,103 +1408,118 @@ coroutines.cpp: # 100| mu100_6(unknown) = ^CallSideEffect : ~m? # 100| v100_7(void) = ^IndirectReadSideEffect[-1] : &:r100_1, ~m? # 100| mu100_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_1 +# 100| v100_9(void) = CopyValue : r100_5 +#-----| Goto -> Block 10 -# 99| Block 4 -# 99| r99_13(glval) = VariableAddress[(unnamed local variable)] : -# 99| r99_15(glval) = FunctionAddress[final_suspend] : -# 99| r99_17(suspend_always) = Call[final_suspend] : func:r99_15, this:r99_13 -# 99| mu99_19(unknown) = ^CallSideEffect : ~m? -# 99| v99_21(void) = ^IndirectReadSideEffect[-1] : &:r99_13, ~m? -# 99| mu99_23(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_13 +# 99| Block 1 +# 99| v99_14(void) = AliasedUse : ~m? +# 99| v99_15(void) = ExitFunction : -#-----| Block 7 -#-----| r0_5(bool) = Constant[1] : -#-----| r0_6(glval) = VariableAddress : -#-----| mu0_7(bool) = Store[?] : &:r0_6, r0_5 +# 99| Block 2 +# 99| v99_16(void) = Unwind : +#-----| Goto -> Block 1 -#-----| Block 8 -#-----| r0_8(glval) = VariableAddress[#temp0:0] : -# 99| r99_25(glval) = VariableAddress[#temp99:21] : -# 99| r99_27(glval) = VariableAddress[(unnamed local variable)] : -# 99| r99_29(glval) = FunctionAddress[initial_suspend] : -# 99| r99_31(suspend_always) = Call[initial_suspend] : func:r99_29, this:r99_27 -# 99| mu99_33(unknown) = ^CallSideEffect : ~m? -# 99| v99_35(void) = ^IndirectReadSideEffect[-1] : &:r99_27, ~m? -# 99| mu99_37(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_27 -# 99| mu99_39(suspend_always) = Store[#temp99:21] : &:r99_25, r99_31 -# 99| r99_41(suspend_always *) = CopyValue : r99_25 -# 99| mu99_43(suspend_always *) = Store[#temp0:0] : &:r0_8, r99_41 -#-----| r0_11(suspend_always *) = Load[#temp0:0] : &:r0_8, ~m? -# 99| r99_45(glval) = CopyValue : r0_11 -# 99| r99_47(glval) = Convert : r99_45 -# 99| r99_49(glval) = FunctionAddress[await_ready] : -# 99| r99_51(bool) = Call[await_ready] : func:r99_49, this:r99_47 -# 99| mu99_53(unknown) = ^CallSideEffect : ~m? -# 99| v99_55(void) = ^IndirectReadSideEffect[-1] : &:r99_47, ~m? +#-----| Block 3 +#-----| r0_6(bool) = Constant[1] : +#-----| r0_7(glval) = VariableAddress : +#-----| mu0_8(bool) = Store[?] : &:r0_7, r0_6 -#-----| Block 8 -#-----| r0_8(glval) = VariableAddress[#temp0:0] : -# 100| r100_9(glval) = VariableAddress[#temp100:13] : -# 100| r100_10(glval) = VariableAddress[(unnamed local variable)] : -# 100| r100_11(glval) = FunctionAddress[yield_value] : -# 100| r100_12(glval) = VariableAddress[i] : -# 100| r100_13(int) = Load[i] : &:r100_12, ~m? -# 100| r100_14(suspend_always) = Call[yield_value] : func:r100_11, this:r100_10, 0:r100_13 -# 100| mu100_15(unknown) = ^CallSideEffect : ~m? -# 100| v100_16(void) = ^IndirectReadSideEffect[-1] : &:r100_10, ~m? -# 100| mu100_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_10 -# 100| mu100_18(suspend_always) = Store[#temp100:13] : &:r100_9, r100_14 -# 100| r100_19(suspend_always *) = CopyValue : r100_9 -# 100| mu100_20(suspend_always *) = Store[#temp0:0] : &:r0_8, r100_19 -#-----| r0_13(suspend_always *) = Load[#temp0:0] : &:r0_8, ~m? -# 100| r100_21(glval) = CopyValue : r0_13 -# 100| r100_22(glval) = Convert : r100_21 -# 100| r100_23(glval) = FunctionAddress[await_ready] : -# 100| r100_24(bool) = Call[await_ready] : func:r100_23, this:r100_22 -# 100| mu100_25(unknown) = ^CallSideEffect : ~m? -# 100| v100_26(void) = ^IndirectReadSideEffect[-1] : &:r100_22, ~m? +#-----| Block 4 +#-----| r0_9(glval) = VariableAddress[#temp0:0] : +# 99| r99_17(glval) = VariableAddress[#temp99:21] : +# 99| r99_19(glval) = VariableAddress[(unnamed local variable)] : +# 99| r99_21(glval) = FunctionAddress[initial_suspend] : +# 99| r99_23(suspend_always) = Call[initial_suspend] : func:r99_21, this:r99_19 +# 99| mu99_25(unknown) = ^CallSideEffect : ~m? +# 99| v99_27(void) = ^IndirectReadSideEffect[-1] : &:r99_19, ~m? +# 99| mu99_29(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_19 +# 99| mu99_31(suspend_always) = Store[#temp99:21] : &:r99_17, r99_23 +# 99| r99_33(suspend_always *) = CopyValue : r99_17 +# 99| mu99_35(suspend_always *) = Store[#temp0:0] : &:r0_9, r99_33 +#-----| r0_12(suspend_always *) = Load[#temp0:0] : &:r0_9, ~m? +# 99| r99_37(glval) = CopyValue : r0_12 +# 99| r99_39(glval) = Convert : r99_37 +# 99| r99_41(glval) = FunctionAddress[await_ready] : +# 99| r99_43(bool) = Call[await_ready] : func:r99_41, this:r99_39 +# 99| mu99_45(unknown) = ^CallSideEffect : ~m? +# 99| v99_47(void) = ^IndirectReadSideEffect[-1] : &:r99_39, ~m? + +#-----| Block 4 +#-----| r0_9(glval) = VariableAddress[#temp0:0] : +# 100| r100_10(glval) = VariableAddress[#temp100:13] : +# 100| r100_11(glval) = VariableAddress[(unnamed local variable)] : +# 100| r100_12(glval) = FunctionAddress[yield_value] : +# 100| r100_13(glval) = VariableAddress[i] : +# 100| r100_14(int) = Load[i] : &:r100_13, ~m? +# 100| r100_15(suspend_always) = Call[yield_value] : func:r100_12, this:r100_11, 0:r100_14 +# 100| mu100_16(unknown) = ^CallSideEffect : ~m? +# 100| v100_17(void) = ^IndirectReadSideEffect[-1] : &:r100_11, ~m? +# 100| mu100_18(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r100_11 +# 100| mu100_19(suspend_always) = Store[#temp100:13] : &:r100_10, r100_15 +# 100| r100_20(suspend_always *) = CopyValue : r100_10 +# 100| mu100_21(suspend_always *) = Store[#temp0:0] : &:r0_9, r100_20 +#-----| r0_14(suspend_always *) = Load[#temp0:0] : &:r0_9, ~m? +# 100| r100_22(glval) = CopyValue : r0_14 +# 100| r100_23(glval) = Convert : r100_22 +# 100| r100_24(glval) = FunctionAddress[await_ready] : +# 100| r100_25(bool) = Call[await_ready] : func:r100_24, this:r100_23 +# 100| mu100_26(unknown) = ^CallSideEffect : ~m? +# 100| v100_27(void) = ^IndirectReadSideEffect[-1] : &:r100_23, ~m? + +#-----| Block 4 +#-----| r0_9(glval) = VariableAddress[#temp0:0] : +# 99| r99_17(glval) = VariableAddress[#temp99:21] : +# 99| r99_19(glval) = VariableAddress[(unnamed local variable)] : +# 99| r99_21(glval) = FunctionAddress[final_suspend] : +# 99| r99_23(suspend_always) = Call[final_suspend] : func:r99_21, this:r99_19 +# 99| mu99_25(unknown) = ^CallSideEffect : ~m? +# 99| v99_27(void) = ^IndirectReadSideEffect[-1] : &:r99_19, ~m? +# 99| mu99_29(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_19 +# 99| mu99_31(suspend_always) = Store[#temp99:21] : &:r99_17, r99_23 +# 99| r99_33(suspend_always *) = CopyValue : r99_17 +# 99| mu99_35(suspend_always *) = Store[#temp0:0] : &:r0_9, r99_33 +#-----| r0_12(suspend_always *) = Load[#temp0:0] : &:r0_9, ~m? +# 99| r99_37(glval) = CopyValue : r0_12 +# 99| r99_39(glval) = Convert : r99_37 +# 99| r99_41(glval) = FunctionAddress[await_ready] : +# 99| r99_43(bool) = Call[await_ready] : func:r99_41, this:r99_39 +# 99| mu99_45(unknown) = ^CallSideEffect : ~m? +# 99| v99_47(void) = ^IndirectReadSideEffect[-1] : &:r99_39, ~m? + +#-----| Block 7 +#-----| v0_15(void) = CatchAny : +#-----| r0_16(glval) = VariableAddress : +#-----| r0_17(bool) = Load[?] : &:r0_16, ~m? +#-----| r0_18(bool) = LogicalNot : r0_17 +#-----| v0_19(void) = ConditionalBranch : r0_18 +#-----| False -> Block 9 +#-----| True -> Block 8 #-----| Block 8 -#-----| r0_8(glval) = VariableAddress[#temp0:0] : -# 99| r99_25(glval) = VariableAddress[#temp99:21] : -# 99| r99_27(glval) = VariableAddress[(unnamed local variable)] : -# 99| r99_29(glval) = FunctionAddress[final_suspend] : -# 99| r99_31(suspend_always) = Call[final_suspend] : func:r99_29, this:r99_27 -# 99| mu99_33(unknown) = ^CallSideEffect : ~m? -# 99| v99_35(void) = ^IndirectReadSideEffect[-1] : &:r99_27, ~m? -# 99| mu99_37(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_27 -# 99| mu99_39(suspend_always) = Store[#temp99:21] : &:r99_25, r99_31 -# 99| r99_41(suspend_always *) = CopyValue : r99_25 -# 99| mu99_43(suspend_always *) = Store[#temp0:0] : &:r0_8, r99_41 -#-----| r0_11(suspend_always *) = Load[#temp0:0] : &:r0_8, ~m? -# 99| r99_45(glval) = CopyValue : r0_11 -# 99| r99_47(glval) = Convert : r99_45 -# 99| r99_49(glval) = FunctionAddress[await_ready] : -# 99| r99_51(bool) = Call[await_ready] : func:r99_49, this:r99_47 -# 99| mu99_53(unknown) = ^CallSideEffect : ~m? -# 99| v99_55(void) = ^IndirectReadSideEffect[-1] : &:r99_47, ~m? - -#-----| Block 11 -#-----| v0_14(void) = CatchAny : -#-----| r0_15(glval) = VariableAddress : -#-----| r0_16(bool) = Load[?] : &:r0_15, ~m? -#-----| r0_17(bool) = LogicalNot : r0_16 -#-----| v0_18(void) = ConditionalBranch : r0_17 -#-----| False -> Block 13 -#-----| True -> Block 12 +#-----| v0_20(void) = ReThrow : +#-----| Exception -> Block 2 -#-----| Block 12 -#-----| v0_19(void) = ReThrow : -#-----| Exception -> Block 3 +# 99| Block 9 +# 99| r99_49(glval) = VariableAddress[(unnamed local variable)] : +# 99| r99_50(glval) = FunctionAddress[unhandled_exception] : +# 99| v99_51(void) = Call[unhandled_exception] : func:r99_50, this:r99_49 +# 99| mu99_52(unknown) = ^CallSideEffect : ~m? +# 99| v99_53(void) = ^IndirectReadSideEffect[-1] : &:r99_49, ~m? +# 99| mu99_54(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_49 +#-----| Goto -> Block 10 -# 99| Block 13 -# 99| r99_57(glval) = VariableAddress[(unnamed local variable)] : -# 99| r99_58(glval) = FunctionAddress[unhandled_exception] : -# 99| v99_59(void) = Call[unhandled_exception] : func:r99_58, this:r99_57 -# 99| mu99_60(unknown) = ^CallSideEffect : ~m? -# 99| v99_61(void) = ^IndirectReadSideEffect[-1] : &:r99_57, ~m? -# 99| mu99_62(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_57 -#-----| v0_20(void) = NoOp : +#-----| Block 10 +#-----| v0_21(void) = NoOp : +# 99| r99_55(glval) = VariableAddress[(unnamed local variable)] : +# 99| r99_56(glval) = FunctionAddress[final_suspend] : +# 99| r99_57(suspend_always) = Call[final_suspend] : func:r99_56, this:r99_55 +# 99| mu99_58(unknown) = ^CallSideEffect : ~m? +# 99| v99_59(void) = ^IndirectReadSideEffect[-1] : &:r99_55, ~m? +# 99| mu99_60(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r99_55 +#-----| v0_22(void) = CopyValue : r99_57 +# 99| r99_61(glval) = VariableAddress[#return] : +# 99| v99_62(void) = ReturnValue : &:r99_61, ~m? +#-----| Goto -> Block 1 # 103| co_returnable_void co_yield_and_return_void(int) # 103| (no string representation) @@ -1639,29 +1616,13 @@ coroutines.cpp: #-----| mu0_4(int) = Store[i] : &:r0_1, r0_3 # 103| r103_6(glval) = VariableAddress[(unnamed local variable)] : # 103| mu103_7(promise_type) = Uninitialized[(unnamed local variable)] : &:r103_6 - -# 103| Block 1 -# 103| v103_8(void) = AliasedUse : ~m? -# 103| v103_9(void) = ExitFunction : - -# 103| Block 2 -# 103| r103_10(glval) = VariableAddress[#return] : -# 103| v103_11(void) = ReturnValue : &:r103_10, ~m? -#-----| Goto -> Block 1 - -# 103| Block 3 -# 103| v103_12(void) = Unwind : -#-----| Goto -> Block 1 - -# 103| Block 4 -# 103| r103_13(glval) = VariableAddress[(unnamed local variable)] : -# 103| r103_15(glval) = FunctionAddress[initial_suspend] : -# 103| r103_17(suspend_always) = Call[initial_suspend] : func:r103_15, this:r103_13 -# 103| mu103_19(unknown) = ^CallSideEffect : ~m? -# 103| v103_21(void) = ^IndirectReadSideEffect[-1] : &:r103_13, ~m? -# 103| mu103_23(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_13 - -# 104| Block 4 +# 103| r103_8(glval) = VariableAddress[(unnamed local variable)] : +# 103| r103_9(glval) = FunctionAddress[initial_suspend] : +# 103| r103_10(suspend_always) = Call[initial_suspend] : func:r103_9, this:r103_8 +# 103| mu103_11(unknown) = ^CallSideEffect : ~m? +# 103| v103_12(void) = ^IndirectReadSideEffect[-1] : &:r103_8, ~m? +# 103| mu103_13(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_8 +#-----| v0_5(void) = CopyValue : r103_10 # 104| r104_1(glval) = VariableAddress[(unnamed local variable)] : # 104| r104_2(glval) = FunctionAddress[yield_value] : # 104| r104_3(glval) = VariableAddress[i] : @@ -1670,118 +1631,126 @@ coroutines.cpp: # 104| mu104_6(unknown) = ^CallSideEffect : ~m? # 104| v104_7(void) = ^IndirectReadSideEffect[-1] : &:r104_1, ~m? # 104| mu104_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_1 +# 104| v104_9(void) = CopyValue : r104_5 +#-----| r0_6(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_7(glval) = FunctionAddress[return_void] : +#-----| v0_8(void) = Call[return_void] : func:r0_7, this:r0_6 +#-----| mu0_9(unknown) = ^CallSideEffect : ~m? +#-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_6, ~m? +#-----| mu0_11(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_6 +# 105| v105_1(void) = NoOp : +#-----| v0_12(void) = NoOp : +#-----| Goto (back edge) -> Block 10 -#-----| Block 4 -#-----| r0_5(glval) = VariableAddress[(unnamed local variable)] : -#-----| r0_6(glval) = FunctionAddress[return_void] : -#-----| v0_7(void) = Call[return_void] : func:r0_6, this:r0_5 -#-----| mu0_8(unknown) = ^CallSideEffect : ~m? -#-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -#-----| mu0_10(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_5 - -# 103| Block 4 -# 103| r103_13(glval) = VariableAddress[(unnamed local variable)] : -# 103| r103_15(glval) = FunctionAddress[final_suspend] : -# 103| r103_17(suspend_always) = Call[final_suspend] : func:r103_15, this:r103_13 -# 103| mu103_19(unknown) = ^CallSideEffect : ~m? -# 103| v103_21(void) = ^IndirectReadSideEffect[-1] : &:r103_13, ~m? -# 103| mu103_23(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_13 +# 103| Block 1 +# 103| v103_14(void) = AliasedUse : ~m? +# 103| v103_15(void) = ExitFunction : -#-----| Block 8 -#-----| r0_11(bool) = Constant[1] : -#-----| r0_12(glval) = VariableAddress : -#-----| mu0_13(bool) = Store[?] : &:r0_12, r0_11 +# 103| Block 2 +# 103| v103_16(void) = Unwind : +#-----| Goto -> Block 1 -#-----| Block 9 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 103| r103_25(glval) = VariableAddress[#temp103:20] : -# 103| r103_27(glval) = VariableAddress[(unnamed local variable)] : -# 103| r103_29(glval) = FunctionAddress[initial_suspend] : -# 103| r103_31(suspend_always) = Call[initial_suspend] : func:r103_29, this:r103_27 -# 103| mu103_33(unknown) = ^CallSideEffect : ~m? -# 103| v103_35(void) = ^IndirectReadSideEffect[-1] : &:r103_27, ~m? -# 103| mu103_37(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_27 -# 103| mu103_39(suspend_always) = Store[#temp103:20] : &:r103_25, r103_31 -# 103| r103_41(suspend_always *) = CopyValue : r103_25 -# 103| mu103_43(suspend_always *) = Store[#temp0:0] : &:r0_14, r103_41 -#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 103| r103_45(glval) = CopyValue : r0_17 -# 103| r103_47(glval) = Convert : r103_45 -# 103| r103_49(glval) = FunctionAddress[await_ready] : -# 103| r103_51(bool) = Call[await_ready] : func:r103_49, this:r103_47 -# 103| mu103_53(unknown) = ^CallSideEffect : ~m? -# 103| v103_55(void) = ^IndirectReadSideEffect[-1] : &:r103_47, ~m? +#-----| Block 3 +#-----| r0_13(bool) = Constant[1] : +#-----| r0_14(glval) = VariableAddress : +#-----| mu0_15(bool) = Store[?] : &:r0_14, r0_13 -#-----| Block 9 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 104| r104_9(glval) = VariableAddress[#temp104:13] : -# 104| r104_10(glval) = VariableAddress[(unnamed local variable)] : -# 104| r104_11(glval) = FunctionAddress[yield_value] : -# 104| r104_12(glval) = VariableAddress[i] : -# 104| r104_13(int) = Load[i] : &:r104_12, ~m? -# 104| r104_14(suspend_always) = Call[yield_value] : func:r104_11, this:r104_10, 0:r104_13 -# 104| mu104_15(unknown) = ^CallSideEffect : ~m? -# 104| v104_16(void) = ^IndirectReadSideEffect[-1] : &:r104_10, ~m? -# 104| mu104_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_10 -# 104| mu104_18(suspend_always) = Store[#temp104:13] : &:r104_9, r104_14 -# 104| r104_19(suspend_always *) = CopyValue : r104_9 -# 104| mu104_20(suspend_always *) = Store[#temp0:0] : &:r0_14, r104_19 -#-----| r0_19(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 104| r104_21(glval) = CopyValue : r0_19 -# 104| r104_22(glval) = Convert : r104_21 -# 104| r104_23(glval) = FunctionAddress[await_ready] : -# 104| r104_24(bool) = Call[await_ready] : func:r104_23, this:r104_22 -# 104| mu104_25(unknown) = ^CallSideEffect : ~m? -# 104| v104_26(void) = ^IndirectReadSideEffect[-1] : &:r104_22, ~m? +#-----| Block 4 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 103| r103_17(glval) = VariableAddress[#temp103:20] : +# 103| r103_19(glval) = VariableAddress[(unnamed local variable)] : +# 103| r103_21(glval) = FunctionAddress[initial_suspend] : +# 103| r103_23(suspend_always) = Call[initial_suspend] : func:r103_21, this:r103_19 +# 103| mu103_25(unknown) = ^CallSideEffect : ~m? +# 103| v103_27(void) = ^IndirectReadSideEffect[-1] : &:r103_19, ~m? +# 103| mu103_29(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_19 +# 103| mu103_31(suspend_always) = Store[#temp103:20] : &:r103_17, r103_23 +# 103| r103_33(suspend_always *) = CopyValue : r103_17 +# 103| mu103_35(suspend_always *) = Store[#temp0:0] : &:r0_16, r103_33 +#-----| r0_19(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 103| r103_37(glval) = CopyValue : r0_19 +# 103| r103_39(glval) = Convert : r103_37 +# 103| r103_41(glval) = FunctionAddress[await_ready] : +# 103| r103_43(bool) = Call[await_ready] : func:r103_41, this:r103_39 +# 103| mu103_45(unknown) = ^CallSideEffect : ~m? +# 103| v103_47(void) = ^IndirectReadSideEffect[-1] : &:r103_39, ~m? -#-----| Block 9 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 103| r103_25(glval) = VariableAddress[#temp103:20] : -# 103| r103_27(glval) = VariableAddress[(unnamed local variable)] : -# 103| r103_29(glval) = FunctionAddress[final_suspend] : -# 103| r103_31(suspend_always) = Call[final_suspend] : func:r103_29, this:r103_27 -# 103| mu103_33(unknown) = ^CallSideEffect : ~m? -# 103| v103_35(void) = ^IndirectReadSideEffect[-1] : &:r103_27, ~m? -# 103| mu103_37(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_27 -# 103| mu103_39(suspend_always) = Store[#temp103:20] : &:r103_25, r103_31 -# 103| r103_41(suspend_always *) = CopyValue : r103_25 -# 103| mu103_43(suspend_always *) = Store[#temp0:0] : &:r0_14, r103_41 -#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 103| r103_45(glval) = CopyValue : r0_17 -# 103| r103_47(glval) = Convert : r103_45 -# 103| r103_49(glval) = FunctionAddress[await_ready] : -# 103| r103_51(bool) = Call[await_ready] : func:r103_49, this:r103_47 -# 103| mu103_53(unknown) = ^CallSideEffect : ~m? -# 103| v103_55(void) = ^IndirectReadSideEffect[-1] : &:r103_47, ~m? - -#-----| Block 12 -#-----| v0_20(void) = NoOp : -#-----| Goto (back edge) -> Block 16 - -#-----| Block 13 -#-----| v0_21(void) = CatchAny : -#-----| r0_22(glval) = VariableAddress : -#-----| r0_23(bool) = Load[?] : &:r0_22, ~m? -#-----| r0_24(bool) = LogicalNot : r0_23 -#-----| v0_25(void) = ConditionalBranch : r0_24 -#-----| False -> Block 15 -#-----| True -> Block 14 +#-----| Block 4 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 104| r104_10(glval) = VariableAddress[#temp104:13] : +# 104| r104_11(glval) = VariableAddress[(unnamed local variable)] : +# 104| r104_12(glval) = FunctionAddress[yield_value] : +# 104| r104_13(glval) = VariableAddress[i] : +# 104| r104_14(int) = Load[i] : &:r104_13, ~m? +# 104| r104_15(suspend_always) = Call[yield_value] : func:r104_12, this:r104_11, 0:r104_14 +# 104| mu104_16(unknown) = ^CallSideEffect : ~m? +# 104| v104_17(void) = ^IndirectReadSideEffect[-1] : &:r104_11, ~m? +# 104| mu104_18(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r104_11 +# 104| mu104_19(suspend_always) = Store[#temp104:13] : &:r104_10, r104_15 +# 104| r104_20(suspend_always *) = CopyValue : r104_10 +# 104| mu104_21(suspend_always *) = Store[#temp0:0] : &:r0_16, r104_20 +#-----| r0_21(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 104| r104_22(glval) = CopyValue : r0_21 +# 104| r104_23(glval) = Convert : r104_22 +# 104| r104_24(glval) = FunctionAddress[await_ready] : +# 104| r104_25(bool) = Call[await_ready] : func:r104_24, this:r104_23 +# 104| mu104_26(unknown) = ^CallSideEffect : ~m? +# 104| v104_27(void) = ^IndirectReadSideEffect[-1] : &:r104_23, ~m? -#-----| Block 14 -#-----| v0_26(void) = ReThrow : -#-----| Exception -> Block 3 +#-----| Block 4 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 103| r103_17(glval) = VariableAddress[#temp103:20] : +# 103| r103_19(glval) = VariableAddress[(unnamed local variable)] : +# 103| r103_21(glval) = FunctionAddress[final_suspend] : +# 103| r103_23(suspend_always) = Call[final_suspend] : func:r103_21, this:r103_19 +# 103| mu103_25(unknown) = ^CallSideEffect : ~m? +# 103| v103_27(void) = ^IndirectReadSideEffect[-1] : &:r103_19, ~m? +# 103| mu103_29(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_19 +# 103| mu103_31(suspend_always) = Store[#temp103:20] : &:r103_17, r103_23 +# 103| r103_33(suspend_always *) = CopyValue : r103_17 +# 103| mu103_35(suspend_always *) = Store[#temp0:0] : &:r0_16, r103_33 +#-----| r0_19(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 103| r103_37(glval) = CopyValue : r0_19 +# 103| r103_39(glval) = Convert : r103_37 +# 103| r103_41(glval) = FunctionAddress[await_ready] : +# 103| r103_43(bool) = Call[await_ready] : func:r103_41, this:r103_39 +# 103| mu103_45(unknown) = ^CallSideEffect : ~m? +# 103| v103_47(void) = ^IndirectReadSideEffect[-1] : &:r103_39, ~m? -# 103| Block 15 -# 103| r103_57(glval) = VariableAddress[(unnamed local variable)] : -# 103| r103_58(glval) = FunctionAddress[unhandled_exception] : -# 103| v103_59(void) = Call[unhandled_exception] : func:r103_58, this:r103_57 -# 103| mu103_60(unknown) = ^CallSideEffect : ~m? -# 103| v103_61(void) = ^IndirectReadSideEffect[-1] : &:r103_57, ~m? -# 103| mu103_62(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_57 -#-----| Goto -> Block 16 +#-----| Block 7 +#-----| v0_22(void) = CatchAny : +#-----| r0_23(glval) = VariableAddress : +#-----| r0_24(bool) = Load[?] : &:r0_23, ~m? +#-----| r0_25(bool) = LogicalNot : r0_24 +#-----| v0_26(void) = ConditionalBranch : r0_25 +#-----| False -> Block 9 +#-----| True -> Block 8 + +#-----| Block 8 +#-----| v0_27(void) = ReThrow : +#-----| Exception -> Block 2 + +# 103| Block 9 +# 103| r103_49(glval) = VariableAddress[(unnamed local variable)] : +# 103| r103_50(glval) = FunctionAddress[unhandled_exception] : +# 103| v103_51(void) = Call[unhandled_exception] : func:r103_50, this:r103_49 +# 103| mu103_52(unknown) = ^CallSideEffect : ~m? +# 103| v103_53(void) = ^IndirectReadSideEffect[-1] : &:r103_49, ~m? +# 103| mu103_54(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_49 +#-----| Goto -> Block 10 -#-----| Block 16 -#-----| v0_27(void) = NoOp : +#-----| Block 10 +#-----| v0_28(void) = NoOp : +# 103| r103_55(glval) = VariableAddress[(unnamed local variable)] : +# 103| r103_56(glval) = FunctionAddress[final_suspend] : +# 103| r103_57(suspend_always) = Call[final_suspend] : func:r103_56, this:r103_55 +# 103| mu103_58(unknown) = ^CallSideEffect : ~m? +# 103| v103_59(void) = ^IndirectReadSideEffect[-1] : &:r103_55, ~m? +# 103| mu103_60(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r103_55 +#-----| v0_29(void) = CopyValue : r103_57 +# 103| r103_61(glval) = VariableAddress[#return] : +# 103| v103_62(void) = ReturnValue : &:r103_61, ~m? +#-----| Goto -> Block 1 # 108| co_returnable_value co_yield_and_return_value(int) # 108| (no string representation) @@ -1878,29 +1847,13 @@ coroutines.cpp: #-----| mu0_4(int) = Store[i] : &:r0_1, r0_3 # 108| r108_6(glval) = VariableAddress[(unnamed local variable)] : # 108| mu108_7(promise_type) = Uninitialized[(unnamed local variable)] : &:r108_6 - -# 108| Block 1 -# 108| v108_8(void) = AliasedUse : ~m? -# 108| v108_9(void) = ExitFunction : - -# 108| Block 2 -# 108| r108_10(glval) = VariableAddress[#return] : -# 108| v108_11(void) = ReturnValue : &:r108_10, ~m? -#-----| Goto -> Block 1 - -# 108| Block 3 -# 108| v108_12(void) = Unwind : -#-----| Goto -> Block 1 - -# 108| Block 4 -# 108| r108_13(glval) = VariableAddress[(unnamed local variable)] : -# 108| r108_15(glval) = FunctionAddress[initial_suspend] : -# 108| r108_17(suspend_always) = Call[initial_suspend] : func:r108_15, this:r108_13 -# 108| mu108_19(unknown) = ^CallSideEffect : ~m? -# 108| v108_21(void) = ^IndirectReadSideEffect[-1] : &:r108_13, ~m? -# 108| mu108_23(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_13 - -# 109| Block 4 +# 108| r108_8(glval) = VariableAddress[(unnamed local variable)] : +# 108| r108_9(glval) = FunctionAddress[initial_suspend] : +# 108| r108_10(suspend_always) = Call[initial_suspend] : func:r108_9, this:r108_8 +# 108| mu108_11(unknown) = ^CallSideEffect : ~m? +# 108| v108_12(void) = ^IndirectReadSideEffect[-1] : &:r108_8, ~m? +# 108| mu108_13(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_8 +#-----| v0_5(void) = CopyValue : r108_10 # 109| r109_1(glval) = VariableAddress[(unnamed local variable)] : # 109| r109_2(glval) = FunctionAddress[yield_value] : # 109| r109_3(glval) = VariableAddress[i] : @@ -1909,122 +1862,130 @@ coroutines.cpp: # 109| mu109_6(unknown) = ^CallSideEffect : ~m? # 109| v109_7(void) = ^IndirectReadSideEffect[-1] : &:r109_1, ~m? # 109| mu109_8(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_1 +# 109| v109_9(void) = CopyValue : r109_5 +#-----| r0_6(glval) = VariableAddress[(unnamed local variable)] : +#-----| r0_7(glval) = FunctionAddress[return_value] : +# 110| r110_1(glval) = VariableAddress[i] : +# 110| r110_2(int) = Load[i] : &:r110_1, ~m? +# 110| r110_3(int) = Constant[1] : +# 110| r110_4(int) = Add : r110_2, r110_3 +#-----| v0_8(void) = Call[return_value] : func:r0_7, this:r0_6, 0:r110_4 +#-----| mu0_9(unknown) = ^CallSideEffect : ~m? +#-----| v0_10(void) = ^IndirectReadSideEffect[-1] : &:r0_6, ~m? +#-----| mu0_11(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_6 +# 110| v110_5(void) = NoOp : +#-----| v0_12(void) = NoOp : +#-----| Goto (back edge) -> Block 10 -#-----| Block 4 -#-----| r0_5(glval) = VariableAddress[(unnamed local variable)] : -#-----| r0_6(glval) = FunctionAddress[return_value] : -# 110| r110_1(glval) = VariableAddress[i] : -# 110| r110_2(int) = Load[i] : &:r110_1, ~m? -# 110| r110_3(int) = Constant[1] : -# 110| r110_4(int) = Add : r110_2, r110_3 -#-----| v0_7(void) = Call[return_value] : func:r0_6, this:r0_5, 0:r110_4 -#-----| mu0_8(unknown) = ^CallSideEffect : ~m? -#-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -#-----| mu0_10(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r0_5 - -# 108| Block 4 -# 108| r108_13(glval) = VariableAddress[(unnamed local variable)] : -# 108| r108_15(glval) = FunctionAddress[final_suspend] : -# 108| r108_17(suspend_always) = Call[final_suspend] : func:r108_15, this:r108_13 -# 108| mu108_19(unknown) = ^CallSideEffect : ~m? -# 108| v108_21(void) = ^IndirectReadSideEffect[-1] : &:r108_13, ~m? -# 108| mu108_23(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_13 +# 108| Block 1 +# 108| v108_14(void) = AliasedUse : ~m? +# 108| v108_15(void) = ExitFunction : -#-----| Block 8 -#-----| r0_11(bool) = Constant[1] : -#-----| r0_12(glval) = VariableAddress : -#-----| mu0_13(bool) = Store[?] : &:r0_12, r0_11 +# 108| Block 2 +# 108| v108_16(void) = Unwind : +#-----| Goto -> Block 1 -#-----| Block 9 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 108| r108_25(glval) = VariableAddress[#temp108:21] : -# 108| r108_27(glval) = VariableAddress[(unnamed local variable)] : -# 108| r108_29(glval) = FunctionAddress[initial_suspend] : -# 108| r108_31(suspend_always) = Call[initial_suspend] : func:r108_29, this:r108_27 -# 108| mu108_33(unknown) = ^CallSideEffect : ~m? -# 108| v108_35(void) = ^IndirectReadSideEffect[-1] : &:r108_27, ~m? -# 108| mu108_37(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_27 -# 108| mu108_39(suspend_always) = Store[#temp108:21] : &:r108_25, r108_31 -# 108| r108_41(suspend_always *) = CopyValue : r108_25 -# 108| mu108_43(suspend_always *) = Store[#temp0:0] : &:r0_14, r108_41 -#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 108| r108_45(glval) = CopyValue : r0_17 -# 108| r108_47(glval) = Convert : r108_45 -# 108| r108_49(glval) = FunctionAddress[await_ready] : -# 108| r108_51(bool) = Call[await_ready] : func:r108_49, this:r108_47 -# 108| mu108_53(unknown) = ^CallSideEffect : ~m? -# 108| v108_55(void) = ^IndirectReadSideEffect[-1] : &:r108_47, ~m? +#-----| Block 3 +#-----| r0_13(bool) = Constant[1] : +#-----| r0_14(glval) = VariableAddress : +#-----| mu0_15(bool) = Store[?] : &:r0_14, r0_13 -#-----| Block 9 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 109| r109_9(glval) = VariableAddress[#temp109:13] : -# 109| r109_10(glval) = VariableAddress[(unnamed local variable)] : -# 109| r109_11(glval) = FunctionAddress[yield_value] : -# 109| r109_12(glval) = VariableAddress[i] : -# 109| r109_13(int) = Load[i] : &:r109_12, ~m? -# 109| r109_14(suspend_always) = Call[yield_value] : func:r109_11, this:r109_10, 0:r109_13 -# 109| mu109_15(unknown) = ^CallSideEffect : ~m? -# 109| v109_16(void) = ^IndirectReadSideEffect[-1] : &:r109_10, ~m? -# 109| mu109_17(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_10 -# 109| mu109_18(suspend_always) = Store[#temp109:13] : &:r109_9, r109_14 -# 109| r109_19(suspend_always *) = CopyValue : r109_9 -# 109| mu109_20(suspend_always *) = Store[#temp0:0] : &:r0_14, r109_19 -#-----| r0_19(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 109| r109_21(glval) = CopyValue : r0_19 -# 109| r109_22(glval) = Convert : r109_21 -# 109| r109_23(glval) = FunctionAddress[await_ready] : -# 109| r109_24(bool) = Call[await_ready] : func:r109_23, this:r109_22 -# 109| mu109_25(unknown) = ^CallSideEffect : ~m? -# 109| v109_26(void) = ^IndirectReadSideEffect[-1] : &:r109_22, ~m? +#-----| Block 4 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 108| r108_17(glval) = VariableAddress[#temp108:21] : +# 108| r108_19(glval) = VariableAddress[(unnamed local variable)] : +# 108| r108_21(glval) = FunctionAddress[initial_suspend] : +# 108| r108_23(suspend_always) = Call[initial_suspend] : func:r108_21, this:r108_19 +# 108| mu108_25(unknown) = ^CallSideEffect : ~m? +# 108| v108_27(void) = ^IndirectReadSideEffect[-1] : &:r108_19, ~m? +# 108| mu108_29(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_19 +# 108| mu108_31(suspend_always) = Store[#temp108:21] : &:r108_17, r108_23 +# 108| r108_33(suspend_always *) = CopyValue : r108_17 +# 108| mu108_35(suspend_always *) = Store[#temp0:0] : &:r0_16, r108_33 +#-----| r0_19(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 108| r108_37(glval) = CopyValue : r0_19 +# 108| r108_39(glval) = Convert : r108_37 +# 108| r108_41(glval) = FunctionAddress[await_ready] : +# 108| r108_43(bool) = Call[await_ready] : func:r108_41, this:r108_39 +# 108| mu108_45(unknown) = ^CallSideEffect : ~m? +# 108| v108_47(void) = ^IndirectReadSideEffect[-1] : &:r108_39, ~m? -#-----| Block 9 -#-----| r0_14(glval) = VariableAddress[#temp0:0] : -# 108| r108_25(glval) = VariableAddress[#temp108:21] : -# 108| r108_27(glval) = VariableAddress[(unnamed local variable)] : -# 108| r108_29(glval) = FunctionAddress[final_suspend] : -# 108| r108_31(suspend_always) = Call[final_suspend] : func:r108_29, this:r108_27 -# 108| mu108_33(unknown) = ^CallSideEffect : ~m? -# 108| v108_35(void) = ^IndirectReadSideEffect[-1] : &:r108_27, ~m? -# 108| mu108_37(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_27 -# 108| mu108_39(suspend_always) = Store[#temp108:21] : &:r108_25, r108_31 -# 108| r108_41(suspend_always *) = CopyValue : r108_25 -# 108| mu108_43(suspend_always *) = Store[#temp0:0] : &:r0_14, r108_41 -#-----| r0_17(suspend_always *) = Load[#temp0:0] : &:r0_14, ~m? -# 108| r108_45(glval) = CopyValue : r0_17 -# 108| r108_47(glval) = Convert : r108_45 -# 108| r108_49(glval) = FunctionAddress[await_ready] : -# 108| r108_51(bool) = Call[await_ready] : func:r108_49, this:r108_47 -# 108| mu108_53(unknown) = ^CallSideEffect : ~m? -# 108| v108_55(void) = ^IndirectReadSideEffect[-1] : &:r108_47, ~m? - -#-----| Block 12 -#-----| v0_20(void) = NoOp : -#-----| Goto (back edge) -> Block 16 - -#-----| Block 13 -#-----| v0_21(void) = CatchAny : -#-----| r0_22(glval) = VariableAddress : -#-----| r0_23(bool) = Load[?] : &:r0_22, ~m? -#-----| r0_24(bool) = LogicalNot : r0_23 -#-----| v0_25(void) = ConditionalBranch : r0_24 -#-----| False -> Block 15 -#-----| True -> Block 14 +#-----| Block 4 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 109| r109_10(glval) = VariableAddress[#temp109:13] : +# 109| r109_11(glval) = VariableAddress[(unnamed local variable)] : +# 109| r109_12(glval) = FunctionAddress[yield_value] : +# 109| r109_13(glval) = VariableAddress[i] : +# 109| r109_14(int) = Load[i] : &:r109_13, ~m? +# 109| r109_15(suspend_always) = Call[yield_value] : func:r109_12, this:r109_11, 0:r109_14 +# 109| mu109_16(unknown) = ^CallSideEffect : ~m? +# 109| v109_17(void) = ^IndirectReadSideEffect[-1] : &:r109_11, ~m? +# 109| mu109_18(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r109_11 +# 109| mu109_19(suspend_always) = Store[#temp109:13] : &:r109_10, r109_15 +# 109| r109_20(suspend_always *) = CopyValue : r109_10 +# 109| mu109_21(suspend_always *) = Store[#temp0:0] : &:r0_16, r109_20 +#-----| r0_21(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 109| r109_22(glval) = CopyValue : r0_21 +# 109| r109_23(glval) = Convert : r109_22 +# 109| r109_24(glval) = FunctionAddress[await_ready] : +# 109| r109_25(bool) = Call[await_ready] : func:r109_24, this:r109_23 +# 109| mu109_26(unknown) = ^CallSideEffect : ~m? +# 109| v109_27(void) = ^IndirectReadSideEffect[-1] : &:r109_23, ~m? -#-----| Block 14 -#-----| v0_26(void) = ReThrow : -#-----| Exception -> Block 3 +#-----| Block 4 +#-----| r0_16(glval) = VariableAddress[#temp0:0] : +# 108| r108_17(glval) = VariableAddress[#temp108:21] : +# 108| r108_19(glval) = VariableAddress[(unnamed local variable)] : +# 108| r108_21(glval) = FunctionAddress[final_suspend] : +# 108| r108_23(suspend_always) = Call[final_suspend] : func:r108_21, this:r108_19 +# 108| mu108_25(unknown) = ^CallSideEffect : ~m? +# 108| v108_27(void) = ^IndirectReadSideEffect[-1] : &:r108_19, ~m? +# 108| mu108_29(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_19 +# 108| mu108_31(suspend_always) = Store[#temp108:21] : &:r108_17, r108_23 +# 108| r108_33(suspend_always *) = CopyValue : r108_17 +# 108| mu108_35(suspend_always *) = Store[#temp0:0] : &:r0_16, r108_33 +#-----| r0_19(suspend_always *) = Load[#temp0:0] : &:r0_16, ~m? +# 108| r108_37(glval) = CopyValue : r0_19 +# 108| r108_39(glval) = Convert : r108_37 +# 108| r108_41(glval) = FunctionAddress[await_ready] : +# 108| r108_43(bool) = Call[await_ready] : func:r108_41, this:r108_39 +# 108| mu108_45(unknown) = ^CallSideEffect : ~m? +# 108| v108_47(void) = ^IndirectReadSideEffect[-1] : &:r108_39, ~m? -# 108| Block 15 -# 108| r108_57(glval) = VariableAddress[(unnamed local variable)] : -# 108| r108_58(glval) = FunctionAddress[unhandled_exception] : -# 108| v108_59(void) = Call[unhandled_exception] : func:r108_58, this:r108_57 -# 108| mu108_60(unknown) = ^CallSideEffect : ~m? -# 108| v108_61(void) = ^IndirectReadSideEffect[-1] : &:r108_57, ~m? -# 108| mu108_62(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_57 -#-----| Goto -> Block 16 +#-----| Block 7 +#-----| v0_22(void) = CatchAny : +#-----| r0_23(glval) = VariableAddress : +#-----| r0_24(bool) = Load[?] : &:r0_23, ~m? +#-----| r0_25(bool) = LogicalNot : r0_24 +#-----| v0_26(void) = ConditionalBranch : r0_25 +#-----| False -> Block 9 +#-----| True -> Block 8 + +#-----| Block 8 +#-----| v0_27(void) = ReThrow : +#-----| Exception -> Block 2 + +# 108| Block 9 +# 108| r108_49(glval) = VariableAddress[(unnamed local variable)] : +# 108| r108_50(glval) = FunctionAddress[unhandled_exception] : +# 108| v108_51(void) = Call[unhandled_exception] : func:r108_50, this:r108_49 +# 108| mu108_52(unknown) = ^CallSideEffect : ~m? +# 108| v108_53(void) = ^IndirectReadSideEffect[-1] : &:r108_49, ~m? +# 108| mu108_54(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_49 +#-----| Goto -> Block 10 -#-----| Block 16 -#-----| v0_27(void) = NoOp : +#-----| Block 10 +#-----| v0_28(void) = NoOp : +# 108| r108_55(glval) = VariableAddress[(unnamed local variable)] : +# 108| r108_56(glval) = FunctionAddress[final_suspend] : +# 108| r108_57(suspend_always) = Call[final_suspend] : func:r108_56, this:r108_55 +# 108| mu108_58(unknown) = ^CallSideEffect : ~m? +# 108| v108_59(void) = ^IndirectReadSideEffect[-1] : &:r108_55, ~m? +# 108| mu108_60(promise_type) = ^IndirectMayWriteSideEffect[-1] : &:r108_55 +#-----| v0_29(void) = CopyValue : r108_57 +# 108| r108_61(glval) = VariableAddress[#return] : +# 108| v108_62(void) = ReturnValue : &:r108_61, ~m? +#-----| Goto -> Block 1 destructors_for_temps.cpp: # 9| void ClassWithConstructor::ClassWithConstructor(ClassWithConstructor&&) diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected index 208ab45aefab..b93c7d2649f8 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected @@ -6,12 +6,6 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor -| coroutines.cpp:87:20:87:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:91:21:91:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:95:20:95:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:99:21:99:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:103:20:103:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:108:21:108:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected index 208ab45aefab..b93c7d2649f8 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected @@ -6,12 +6,6 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor -| coroutines.cpp:87:20:87:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:87:20:87:33 | co_returnable_void co_return_void() | co_returnable_void co_return_void() | -| coroutines.cpp:91:21:91:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:91:21:91:33 | co_returnable_value co_return_int(int) | co_returnable_value co_return_int(int) | -| coroutines.cpp:95:20:95:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:95:20:95:38 | co_returnable_void co_yield_value_void(int) | co_returnable_void co_yield_value_void(int) | -| coroutines.cpp:99:21:99:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:99:21:99:40 | co_returnable_value co_yield_value_value(int) | co_returnable_value co_yield_value_value(int) | -| coroutines.cpp:103:20:103:20 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:103:20:103:43 | co_returnable_void co_yield_and_return_void(int) | co_returnable_void co_yield_and_return_void(int) | -| coroutines.cpp:108:21:108:21 | Uninitialized: declaration of (unnamed local variable) | Instruction 'Uninitialized: declaration of (unnamed local variable)' has no successors in function '$@'. | coroutines.cpp:108:21:108:45 | co_returnable_value co_yield_and_return_value(int) | co_returnable_value co_yield_and_return_value(int) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected index 1ccf4b0dab39..9424c731765e 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected @@ -7,33 +7,33 @@ edges | nested.cpp:34:37:34:39 | *fmt | nested.cpp:35:19:35:21 | *fmt | provenance | | | nested.cpp:35:19:35:21 | *fmt | nested.cpp:27:32:27:34 | *fmt | provenance | | | nested.cpp:42:24:42:34 | *call to ext_fmt_str | nested.cpp:34:37:34:39 | *fmt | provenance | | -| nested.cpp:86:19:86:46 | *(char *)... | nested.cpp:87:18:87:20 | *fmt | provenance | | -| nested.cpp:86:19:86:46 | *call to __builtin_alloca | nested.cpp:86:19:86:46 | *(char *)... | provenance | | +| nested.cpp:86:19:86:46 | *call to __builtin_alloca | nested.cpp:86:19:86:46 | *call to __builtin_alloca | provenance | | +| nested.cpp:86:19:86:46 | *call to __builtin_alloca | nested.cpp:87:18:87:20 | *fmt | provenance | | | test.cpp:46:27:46:30 | **argv | test.cpp:130:20:130:26 | *access to array | provenance | | | test.cpp:167:31:167:34 | *data | test.cpp:170:12:170:14 | *res | provenance | DataFlowFunction | | test.cpp:193:32:193:34 | *str | test.cpp:195:31:195:33 | *str | provenance | | | test.cpp:193:32:193:34 | *str | test.cpp:197:11:197:14 | *wstr | provenance | TaintFunction | -| test.cpp:204:25:204:36 | *(const char *)... | test.cpp:205:12:205:20 | *... + ... | provenance | | -| test.cpp:204:25:204:36 | *(const char *)... | test.cpp:206:12:206:16 | *hello | provenance | | -| test.cpp:204:25:204:36 | *call to get_string | test.cpp:204:25:204:36 | *(const char *)... | provenance | | -| test.cpp:209:25:209:36 | *(const char *)... | test.cpp:210:5:210:14 | *... += ... | provenance | | -| test.cpp:209:25:209:36 | *call to get_string | test.cpp:209:25:209:36 | *(const char *)... | provenance | | +| test.cpp:204:25:204:36 | *call to get_string | test.cpp:204:25:204:36 | *call to get_string | provenance | | +| test.cpp:204:25:204:36 | *call to get_string | test.cpp:205:12:205:20 | *... + ... | provenance | | +| test.cpp:204:25:204:36 | *call to get_string | test.cpp:206:12:206:16 | *hello | provenance | | +| test.cpp:209:25:209:36 | *call to get_string | test.cpp:209:25:209:36 | *call to get_string | provenance | | +| test.cpp:209:25:209:36 | *call to get_string | test.cpp:210:5:210:14 | *... += ... | provenance | | | test.cpp:210:5:210:14 | *... += ... | test.cpp:211:12:211:16 | *hello | provenance | | -| test.cpp:215:25:215:36 | *(const char *)... | test.cpp:216:5:216:21 | *... = ... | provenance | | -| test.cpp:215:25:215:36 | *call to get_string | test.cpp:215:25:215:36 | *(const char *)... | provenance | | +| test.cpp:215:25:215:36 | *call to get_string | test.cpp:215:25:215:36 | *call to get_string | provenance | | +| test.cpp:215:25:215:36 | *call to get_string | test.cpp:216:5:216:21 | *... = ... | provenance | | | test.cpp:216:5:216:21 | *... = ... | test.cpp:217:12:217:16 | *hello | provenance | | -| test.cpp:221:25:221:36 | *(const char *)... | test.cpp:222:5:222:11 | *... ++ | provenance | | -| test.cpp:221:25:221:36 | *call to get_string | test.cpp:221:25:221:36 | *(const char *)... | provenance | | +| test.cpp:221:25:221:36 | *call to get_string | test.cpp:221:25:221:36 | *call to get_string | provenance | | +| test.cpp:221:25:221:36 | *call to get_string | test.cpp:222:5:222:11 | *... ++ | provenance | | | test.cpp:222:5:222:11 | *... ++ | test.cpp:223:12:223:16 | *hello | provenance | | -| test.cpp:227:25:227:36 | *(const char *)... | test.cpp:228:12:228:18 | *++ ... | provenance | | -| test.cpp:227:25:227:36 | *call to get_string | test.cpp:227:25:227:36 | *(const char *)... | provenance | | +| test.cpp:227:25:227:36 | *call to get_string | test.cpp:227:25:227:36 | *call to get_string | provenance | | +| test.cpp:227:25:227:36 | *call to get_string | test.cpp:228:12:228:18 | *++ ... | provenance | | | test.cpp:228:12:228:18 | *++ ... | test.cpp:228:12:228:18 | *++ ... | provenance | | -| test.cpp:232:25:232:36 | *(const char *)... | test.cpp:235:12:235:16 | *hello | provenance | | -| test.cpp:232:25:232:36 | *call to get_string | test.cpp:232:25:232:36 | *(const char *)... | provenance | | -| test.cpp:239:25:239:36 | *(const char *)... | test.cpp:242:12:242:16 | *hello | provenance | | -| test.cpp:239:25:239:36 | *call to get_string | test.cpp:239:25:239:36 | *(const char *)... | provenance | | -| test.cpp:245:25:245:36 | *(const char *)... | test.cpp:247:12:247:16 | *hello | provenance | | -| test.cpp:245:25:245:36 | *call to get_string | test.cpp:245:25:245:36 | *(const char *)... | provenance | | +| test.cpp:232:25:232:36 | *call to get_string | test.cpp:232:25:232:36 | *call to get_string | provenance | | +| test.cpp:232:25:232:36 | *call to get_string | test.cpp:235:12:235:16 | *hello | provenance | | +| test.cpp:239:25:239:36 | *call to get_string | test.cpp:239:25:239:36 | *call to get_string | provenance | | +| test.cpp:239:25:239:36 | *call to get_string | test.cpp:242:12:242:16 | *hello | provenance | | +| test.cpp:245:25:245:36 | *call to get_string | test.cpp:245:25:245:36 | *call to get_string | provenance | | +| test.cpp:245:25:245:36 | *call to get_string | test.cpp:247:12:247:16 | *hello | provenance | | nodes | NonConstantFormat.c:28:27:28:30 | **argv | semmle.label | **argv | | NonConstantFormat.c:30:10:30:16 | *access to array | semmle.label | *access to array | @@ -48,7 +48,7 @@ nodes | nested.cpp:35:19:35:21 | *fmt | semmle.label | *fmt | | nested.cpp:42:24:42:34 | *call to ext_fmt_str | semmle.label | *call to ext_fmt_str | | nested.cpp:79:32:79:38 | *call to get_fmt | semmle.label | *call to get_fmt | -| nested.cpp:86:19:86:46 | *(char *)... | semmle.label | *(char *)... | +| nested.cpp:86:19:86:46 | *call to __builtin_alloca | semmle.label | *call to __builtin_alloca | | nested.cpp:86:19:86:46 | *call to __builtin_alloca | semmle.label | *call to __builtin_alloca | | nested.cpp:87:18:87:20 | *fmt | semmle.label | *fmt | | test.cpp:46:27:46:30 | **argv | semmle.label | **argv | @@ -58,33 +58,33 @@ nodes | test.cpp:193:32:193:34 | *str | semmle.label | *str | | test.cpp:195:31:195:33 | *str | semmle.label | *str | | test.cpp:197:11:197:14 | *wstr | semmle.label | *wstr | -| test.cpp:204:25:204:36 | *(const char *)... | semmle.label | *(const char *)... | +| test.cpp:204:25:204:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:204:25:204:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:205:12:205:20 | *... + ... | semmle.label | *... + ... | | test.cpp:206:12:206:16 | *hello | semmle.label | *hello | -| test.cpp:209:25:209:36 | *(const char *)... | semmle.label | *(const char *)... | +| test.cpp:209:25:209:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:209:25:209:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:210:5:210:14 | *... += ... | semmle.label | *... += ... | | test.cpp:211:12:211:16 | *hello | semmle.label | *hello | -| test.cpp:215:25:215:36 | *(const char *)... | semmle.label | *(const char *)... | +| test.cpp:215:25:215:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:215:25:215:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:216:5:216:21 | *... = ... | semmle.label | *... = ... | | test.cpp:217:12:217:16 | *hello | semmle.label | *hello | -| test.cpp:221:25:221:36 | *(const char *)... | semmle.label | *(const char *)... | +| test.cpp:221:25:221:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:221:25:221:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:222:5:222:11 | *... ++ | semmle.label | *... ++ | | test.cpp:223:12:223:16 | *hello | semmle.label | *hello | -| test.cpp:227:25:227:36 | *(const char *)... | semmle.label | *(const char *)... | +| test.cpp:227:25:227:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:227:25:227:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:228:12:228:18 | *++ ... | semmle.label | *++ ... | | test.cpp:228:12:228:18 | *++ ... | semmle.label | *++ ... | -| test.cpp:232:25:232:36 | *(const char *)... | semmle.label | *(const char *)... | +| test.cpp:232:25:232:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:232:25:232:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:235:12:235:16 | *hello | semmle.label | *hello | -| test.cpp:239:25:239:36 | *(const char *)... | semmle.label | *(const char *)... | +| test.cpp:239:25:239:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:239:25:239:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:242:12:242:16 | *hello | semmle.label | *hello | -| test.cpp:245:25:245:36 | *(const char *)... | semmle.label | *(const char *)... | +| test.cpp:245:25:245:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:245:25:245:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:247:12:247:16 | *hello | semmle.label | *hello | subpaths diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-114/semmle/UncontrolledProcessOperation/UncontrolledProcessOperation.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-114/semmle/UncontrolledProcessOperation/UncontrolledProcessOperation.expected index 42d14e9d8d4f..ca24075c2c34 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-114/semmle/UncontrolledProcessOperation/UncontrolledProcessOperation.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-114/semmle/UncontrolledProcessOperation/UncontrolledProcessOperation.expected @@ -3,13 +3,13 @@ edges | test.cpp:29:30:29:36 | *command | test.cpp:31:10:31:16 | *command | provenance | | | test.cpp:42:18:42:34 | *call to getenv | test.cpp:24:30:24:36 | *command | provenance | | | test.cpp:43:18:43:34 | *call to getenv | test.cpp:29:30:29:36 | *command | provenance | | -| test.cpp:56:12:56:17 | fgets output argument | test.cpp:58:16:58:21 | *array to pointer conversion | provenance | | +| test.cpp:56:12:56:17 | fgets output argument | test.cpp:58:16:58:21 | *buffer | provenance | | | test.cpp:56:12:56:17 | fgets output argument | test.cpp:62:10:62:15 | *buffer | provenance | | -| test.cpp:58:16:58:21 | *array to pointer conversion | test.cpp:59:20:59:23 | **(reference to) | provenance | | -| test.cpp:58:16:58:21 | *array to pointer conversion | test.cpp:63:10:63:13 | *data | provenance | | -| test.cpp:59:20:59:23 | **(reference to) | test.cpp:60:17:60:23 | *(reference dereference) | provenance | | -| test.cpp:59:20:59:23 | **(reference to) | test.cpp:64:10:64:16 | *dataref | provenance | | -| test.cpp:60:17:60:23 | *(reference dereference) | test.cpp:65:10:65:14 | *data2 | provenance | | +| test.cpp:58:16:58:21 | *buffer | test.cpp:59:20:59:23 | **data | provenance | | +| test.cpp:58:16:58:21 | *buffer | test.cpp:63:10:63:13 | *data | provenance | | +| test.cpp:59:20:59:23 | **data | test.cpp:60:17:60:23 | *dataref | provenance | | +| test.cpp:59:20:59:23 | **data | test.cpp:64:10:64:16 | *dataref | provenance | | +| test.cpp:60:17:60:23 | *dataref | test.cpp:65:10:65:14 | *data2 | provenance | | | test.cpp:76:12:76:17 | fgets output argument | test.cpp:78:10:78:15 | *buffer | provenance | | | test.cpp:98:17:98:22 | recv output argument | test.cpp:99:15:99:20 | *buffer | provenance | | | test.cpp:106:17:106:22 | recv output argument | test.cpp:107:15:107:20 | *buffer | provenance | | @@ -23,9 +23,9 @@ nodes | test.cpp:42:18:42:34 | *call to getenv | semmle.label | *call to getenv | | test.cpp:43:18:43:34 | *call to getenv | semmle.label | *call to getenv | | test.cpp:56:12:56:17 | fgets output argument | semmle.label | fgets output argument | -| test.cpp:58:16:58:21 | *array to pointer conversion | semmle.label | *array to pointer conversion | -| test.cpp:59:20:59:23 | **(reference to) | semmle.label | **(reference to) | -| test.cpp:60:17:60:23 | *(reference dereference) | semmle.label | *(reference dereference) | +| test.cpp:58:16:58:21 | *buffer | semmle.label | *buffer | +| test.cpp:59:20:59:23 | **data | semmle.label | **data | +| test.cpp:60:17:60:23 | *dataref | semmle.label | *dataref | | test.cpp:62:10:62:15 | *buffer | semmle.label | *buffer | | test.cpp:63:10:63:13 | *data | semmle.label | *data | | test.cpp:64:10:64:16 | *dataref | semmle.label | *dataref | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-119/SAMATE/OverrunWriteProductFlow.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-119/SAMATE/OverrunWriteProductFlow.expected index 280fcefae2b5..433a3293ffd3 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-119/SAMATE/OverrunWriteProductFlow.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-119/SAMATE/OverrunWriteProductFlow.expected @@ -47,26 +47,26 @@ edges | test.cpp:203:17:203:19 | *str [string] | test.cpp:203:22:203:27 | string | provenance | | | test.cpp:207:17:207:19 | *str [string] | test.cpp:207:22:207:27 | string | provenance | | | test.cpp:214:24:214:24 | p | test.cpp:216:10:216:10 | p | provenance | | -| test.cpp:220:27:220:54 | (unsigned char *)... | test.cpp:222:15:222:20 | buffer | provenance | | -| test.cpp:220:27:220:54 | call to malloc | test.cpp:220:27:220:54 | (unsigned char *)... | provenance | | +| test.cpp:220:27:220:54 | call to malloc | test.cpp:220:27:220:54 | call to malloc | provenance | | +| test.cpp:220:27:220:54 | call to malloc | test.cpp:222:15:222:20 | buffer | provenance | | | test.cpp:222:15:222:20 | buffer | test.cpp:214:24:214:24 | p | provenance | | -| test.cpp:228:27:228:54 | (unsigned char *)... | test.cpp:232:10:232:15 | buffer | provenance | | -| test.cpp:228:27:228:54 | call to malloc | test.cpp:228:27:228:54 | (unsigned char *)... | provenance | | +| test.cpp:228:27:228:54 | call to malloc | test.cpp:228:27:228:54 | call to malloc | provenance | | +| test.cpp:228:27:228:54 | call to malloc | test.cpp:232:10:232:15 | buffer | provenance | | | test.cpp:235:40:235:45 | buffer | test.cpp:236:5:236:26 | ... = ... | provenance | | | test.cpp:236:5:236:9 | *p_str [post update] [string] | test.cpp:235:27:235:31 | *p_str [string] | provenance | | | test.cpp:236:5:236:26 | ... = ... | test.cpp:236:5:236:9 | *p_str [post update] [string] | provenance | | -| test.cpp:241:20:241:38 | (char *)... | test.cpp:242:22:242:27 | buffer | provenance | | -| test.cpp:241:20:241:38 | call to malloc | test.cpp:241:20:241:38 | (char *)... | provenance | | +| test.cpp:241:20:241:38 | call to malloc | test.cpp:241:20:241:38 | call to malloc | provenance | | +| test.cpp:241:20:241:38 | call to malloc | test.cpp:242:22:242:27 | buffer | provenance | | | test.cpp:242:16:242:19 | set_string output argument [string] | test.cpp:243:12:243:14 | *str [string] | provenance | | | test.cpp:242:22:242:27 | buffer | test.cpp:235:40:235:45 | buffer | provenance | | | test.cpp:242:22:242:27 | buffer | test.cpp:242:16:242:19 | set_string output argument [string] | provenance | | | test.cpp:243:12:243:14 | *str [string] | test.cpp:243:12:243:21 | string | provenance | | -| test.cpp:249:14:249:33 | (int *)... | test.cpp:250:12:250:12 | p | provenance | | -| test.cpp:249:14:249:33 | call to my_alloc | test.cpp:249:14:249:33 | (int *)... | provenance | | +| test.cpp:249:14:249:33 | call to my_alloc | test.cpp:249:14:249:33 | call to my_alloc | provenance | | +| test.cpp:249:14:249:33 | call to my_alloc | test.cpp:250:12:250:12 | p | provenance | | | test.cpp:256:5:256:25 | ... = ... | test.cpp:257:12:257:12 | p | provenance | | | test.cpp:256:9:256:25 | call to malloc | test.cpp:256:5:256:25 | ... = ... | provenance | | -| test.cpp:262:15:262:30 | (char *)... | test.cpp:266:12:266:12 | p | provenance | | -| test.cpp:262:15:262:30 | call to malloc | test.cpp:262:15:262:30 | (char *)... | provenance | | +| test.cpp:262:15:262:30 | call to malloc | test.cpp:262:15:262:30 | call to malloc | provenance | | +| test.cpp:262:15:262:30 | call to malloc | test.cpp:266:12:266:12 | p | provenance | | | test.cpp:264:9:264:30 | ... = ... | test.cpp:266:12:266:12 | p | provenance | | | test.cpp:264:13:264:30 | call to malloc | test.cpp:264:9:264:30 | ... = ... | provenance | | nodes @@ -122,29 +122,29 @@ nodes | test.cpp:207:22:207:27 | string | semmle.label | string | | test.cpp:214:24:214:24 | p | semmle.label | p | | test.cpp:216:10:216:10 | p | semmle.label | p | -| test.cpp:220:27:220:54 | (unsigned char *)... | semmle.label | (unsigned char *)... | +| test.cpp:220:27:220:54 | call to malloc | semmle.label | call to malloc | | test.cpp:220:27:220:54 | call to malloc | semmle.label | call to malloc | | test.cpp:222:15:222:20 | buffer | semmle.label | buffer | -| test.cpp:228:27:228:54 | (unsigned char *)... | semmle.label | (unsigned char *)... | +| test.cpp:228:27:228:54 | call to malloc | semmle.label | call to malloc | | test.cpp:228:27:228:54 | call to malloc | semmle.label | call to malloc | | test.cpp:232:10:232:15 | buffer | semmle.label | buffer | | test.cpp:235:27:235:31 | *p_str [string] | semmle.label | *p_str [string] | | test.cpp:235:40:235:45 | buffer | semmle.label | buffer | | test.cpp:236:5:236:9 | *p_str [post update] [string] | semmle.label | *p_str [post update] [string] | | test.cpp:236:5:236:26 | ... = ... | semmle.label | ... = ... | -| test.cpp:241:20:241:38 | (char *)... | semmle.label | (char *)... | +| test.cpp:241:20:241:38 | call to malloc | semmle.label | call to malloc | | test.cpp:241:20:241:38 | call to malloc | semmle.label | call to malloc | | test.cpp:242:16:242:19 | set_string output argument [string] | semmle.label | set_string output argument [string] | | test.cpp:242:22:242:27 | buffer | semmle.label | buffer | | test.cpp:243:12:243:14 | *str [string] | semmle.label | *str [string] | | test.cpp:243:12:243:21 | string | semmle.label | string | -| test.cpp:249:14:249:33 | (int *)... | semmle.label | (int *)... | +| test.cpp:249:14:249:33 | call to my_alloc | semmle.label | call to my_alloc | | test.cpp:249:14:249:33 | call to my_alloc | semmle.label | call to my_alloc | | test.cpp:250:12:250:12 | p | semmle.label | p | | test.cpp:256:5:256:25 | ... = ... | semmle.label | ... = ... | | test.cpp:256:9:256:25 | call to malloc | semmle.label | call to malloc | | test.cpp:257:12:257:12 | p | semmle.label | p | -| test.cpp:262:15:262:30 | (char *)... | semmle.label | (char *)... | +| test.cpp:262:15:262:30 | call to malloc | semmle.label | call to malloc | | test.cpp:262:15:262:30 | call to malloc | semmle.label | call to malloc | | test.cpp:264:9:264:30 | ... = ... | semmle.label | ... = ... | | test.cpp:264:13:264:30 | call to malloc | semmle.label | call to malloc | 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 60ec46b23630..7b87c3ff440a 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 @@ -8,7 +8,7 @@ edges | argvLocal.c:13:27:13:30 | **argv | argvLocal.c:116:9:116:10 | *i3 | provenance | DataFlowFunction | | argvLocal.c:13:27:13:30 | **argv | argvLocal.c:117:15:117:16 | *i3 | provenance | DataFlowFunction | | argvLocal.c:13:27:13:30 | **argv | argvLocal.c:117:15:117:16 | *i3 | provenance | DataFlowFunction | -| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:120:13:120:14 | *array to pointer conversion | provenance | DataFlowFunction | +| argvLocal.c:13:27:13:30 | **argv | argvLocal.c:120:13:120:14 | *i3 | provenance | DataFlowFunction | | argvLocal.c:13:27:13:30 | **argv | argvLocal.c:126:2:126:19 | ... = ... | provenance | | | argvLocal.c:13:27:13:30 | **argv | argvLocal.c:149:2:149:17 | *... = ... | provenance | | | argvLocal.c:96:15:96:21 | *access to array | argvLocal.c:9:25:9:31 | *correct | provenance | | @@ -18,16 +18,16 @@ edges | argvLocal.c:96:15:96:21 | printWrapper output argument | argvLocal.c:116:9:116:10 | *i3 | provenance | DataFlowFunction | | argvLocal.c:96:15:96:21 | printWrapper output argument | argvLocal.c:117:15:117:16 | *i3 | provenance | DataFlowFunction | | argvLocal.c:96:15:96:21 | printWrapper output argument | argvLocal.c:117:15:117:16 | *i3 | provenance | DataFlowFunction | -| argvLocal.c:96:15:96:21 | printWrapper output argument | argvLocal.c:120:13:120:14 | *array to pointer conversion | provenance | DataFlowFunction | +| argvLocal.c:96:15:96:21 | printWrapper output argument | argvLocal.c:120:13:120:14 | *i3 | provenance | DataFlowFunction | | argvLocal.c:96:15:96:21 | printWrapper output argument | argvLocal.c:126:2:126:19 | ... = ... | provenance | | | argvLocal.c:96:15:96:21 | printWrapper output argument | argvLocal.c:149:2:149:17 | *... = ... | provenance | | | argvLocal.c:100:2:100:13 | *... = ... | argvLocal.c:101:9:101:10 | *i1 | provenance | | | argvLocal.c:100:2:100:13 | *... = ... | argvLocal.c:102:15:102:16 | *i1 | provenance | | | argvLocal.c:100:2:100:13 | *... = ... | argvLocal.c:102:15:102:16 | *i1 | provenance | | -| argvLocal.c:100:2:100:13 | *... = ... | argvLocal.c:143:13:143:26 | *(...) | provenance | | +| argvLocal.c:100:2:100:13 | *... = ... | argvLocal.c:143:13:143:26 | *... , ... | provenance | | | argvLocal.c:102:15:102:16 | *i1 | argvLocal.c:9:25:9:31 | *correct | provenance | | | argvLocal.c:102:15:102:16 | *i1 | argvLocal.c:102:15:102:16 | printWrapper output argument | provenance | | -| argvLocal.c:102:15:102:16 | printWrapper output argument | argvLocal.c:143:13:143:26 | *(...) | provenance | | +| argvLocal.c:102:15:102:16 | printWrapper output argument | argvLocal.c:143:13:143:26 | *... , ... | provenance | | | argvLocal.c:105:14:105:17 | **argv | argvLocal.c:106:9:106:13 | *access to array | provenance | | | argvLocal.c:105:14:105:17 | **argv | argvLocal.c:107:15:107:19 | *access to array | provenance | | | argvLocal.c:105:14:105:17 | **argv | argvLocal.c:107:15:107:19 | *access to array | provenance | | @@ -39,12 +39,12 @@ edges | argvLocal.c:107:15:107:19 | printWrapper output argument | argvLocal.c:111:15:111:17 | ** ... | provenance | | | argvLocal.c:117:15:117:16 | *i3 | argvLocal.c:9:25:9:31 | *correct | provenance | | | argvLocal.c:117:15:117:16 | *i3 | argvLocal.c:117:15:117:16 | printWrapper output argument | provenance | | -| argvLocal.c:117:15:117:16 | printWrapper output argument | argvLocal.c:120:13:120:14 | *array to pointer conversion | provenance | | -| argvLocal.c:120:13:120:14 | *array to pointer conversion | argvLocal.c:121:9:121:10 | *i4 | provenance | | -| argvLocal.c:120:13:120:14 | *array to pointer conversion | argvLocal.c:122:15:122:16 | *i4 | provenance | | -| argvLocal.c:120:13:120:14 | *array to pointer conversion | argvLocal.c:122:15:122:16 | *i4 | provenance | | -| argvLocal.c:120:13:120:14 | *array to pointer conversion | argvLocal.c:135:9:135:12 | *... ++ | provenance | | -| argvLocal.c:120:13:120:14 | *array to pointer conversion | argvLocal.c:135:9:135:12 | *... ++ | provenance | | +| argvLocal.c:117:15:117:16 | printWrapper output argument | argvLocal.c:120:13:120:14 | *i3 | provenance | | +| argvLocal.c:120:13:120:14 | *i3 | argvLocal.c:121:9:121:10 | *i4 | provenance | | +| argvLocal.c:120:13:120:14 | *i3 | argvLocal.c:122:15:122:16 | *i4 | provenance | | +| argvLocal.c:120:13:120:14 | *i3 | argvLocal.c:122:15:122:16 | *i4 | provenance | | +| argvLocal.c:120:13:120:14 | *i3 | argvLocal.c:135:9:135:12 | *... ++ | provenance | | +| argvLocal.c:120:13:120:14 | *i3 | argvLocal.c:135:9:135:12 | *... ++ | provenance | | | argvLocal.c:122:15:122:16 | *i4 | argvLocal.c:9:25:9:31 | *correct | provenance | | | argvLocal.c:122:15:122:16 | *i4 | argvLocal.c:122:15:122:16 | printWrapper output argument | provenance | | | argvLocal.c:122:15:122:16 | printWrapper output argument | argvLocal.c:135:9:135:12 | *... ++ | provenance | | @@ -70,8 +70,8 @@ edges | argvLocal.c:132:15:132:20 | printWrapper output argument | argvLocal.c:140:15:140:32 | *... ? ... : ... | provenance | | | argvLocal.c:135:9:135:12 | *... ++ | argvLocal.c:136:15:136:18 | *-- ... | provenance | | | argvLocal.c:136:15:136:18 | *-- ... | argvLocal.c:136:15:136:18 | *-- ... | provenance | | -| argvLocal.c:143:13:143:26 | *(...) | argvLocal.c:144:9:144:10 | *i7 | provenance | | -| argvLocal.c:143:13:143:26 | *(...) | argvLocal.c:145:15:145:16 | *i7 | provenance | | +| argvLocal.c:143:13:143:26 | *... , ... | argvLocal.c:144:9:144:10 | *i7 | provenance | | +| argvLocal.c:143:13:143:26 | *... , ... | argvLocal.c:145:15:145:16 | *i7 | provenance | | | argvLocal.c:149:2:149:17 | *... = ... | argvLocal.c:150:9:150:10 | *i8 | provenance | | | argvLocal.c:149:2:149:17 | *... = ... | argvLocal.c:151:15:151:16 | *i8 | provenance | | nodes @@ -98,7 +98,7 @@ nodes | argvLocal.c:117:15:117:16 | *i3 | semmle.label | *i3 | | argvLocal.c:117:15:117:16 | *i3 | semmle.label | *i3 | | argvLocal.c:117:15:117:16 | printWrapper output argument | semmle.label | printWrapper output argument | -| argvLocal.c:120:13:120:14 | *array to pointer conversion | semmle.label | *array to pointer conversion | +| argvLocal.c:120:13:120:14 | *i3 | semmle.label | *i3 | | argvLocal.c:121:9:121:10 | *i4 | semmle.label | *i4 | | argvLocal.c:122:15:122:16 | *i4 | semmle.label | *i4 | | argvLocal.c:122:15:122:16 | *i4 | semmle.label | *i4 | @@ -118,7 +118,7 @@ nodes | argvLocal.c:136:15:136:18 | *-- ... | semmle.label | *-- ... | | argvLocal.c:139:9:139:26 | *... ? ... : ... | semmle.label | *... ? ... : ... | | argvLocal.c:140:15:140:32 | *... ? ... : ... | semmle.label | *... ? ... : ... | -| argvLocal.c:143:13:143:26 | *(...) | semmle.label | *(...) | +| argvLocal.c:143:13:143:26 | *... , ... | semmle.label | *... , ... | | argvLocal.c:144:9:144:10 | *i7 | semmle.label | *i7 | | argvLocal.c:145:15:145:16 | *i7 | semmle.label | *i7 | | argvLocal.c:149:2:149:17 | *... = ... | semmle.label | *... = ... | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/consts/NonConstantFormat.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/consts/NonConstantFormat.expected index 684ae70cfd77..e59c3e893a4f 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/consts/NonConstantFormat.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-134/semmle/consts/NonConstantFormat.expected @@ -4,34 +4,34 @@ edges | consts.cpp:29:7:29:25 | **nonConstFuncToArray | consts.cpp:126:9:126:30 | *call to nonConstFuncToArray | provenance | | | consts.cpp:30:9:30:14 | *access to array | consts.cpp:29:7:29:25 | **nonConstFuncToArray | provenance | | | consts.cpp:85:7:85:8 | gets output argument | consts.cpp:86:9:86:10 | *v1 | provenance | | -| consts.cpp:85:7:85:8 | gets output argument | consts.cpp:94:13:94:14 | *array to pointer conversion | provenance | | +| consts.cpp:85:7:85:8 | gets output argument | consts.cpp:94:13:94:14 | *v1 | provenance | | | consts.cpp:85:7:85:8 | gets output argument | consts.cpp:99:2:99:8 | *... = ... | provenance | | -| consts.cpp:85:7:85:8 | gets output argument | consts.cpp:115:17:115:18 | *array to pointer conversion | provenance | | +| consts.cpp:85:7:85:8 | gets output argument | consts.cpp:115:17:115:18 | *v1 | provenance | | | consts.cpp:85:7:85:8 | gets output argument | consts.cpp:123:2:123:12 | *... = ... | provenance | | -| consts.cpp:85:7:85:8 | gets output argument | consts.cpp:129:19:129:20 | *(const char *)... | provenance | | +| consts.cpp:85:7:85:8 | gets output argument | consts.cpp:129:19:129:20 | *v1 | provenance | | | consts.cpp:85:7:85:8 | gets output argument | consts.cpp:135:9:135:11 | *v10 | provenance | TaintFunction | | consts.cpp:90:2:90:14 | *... = ... | consts.cpp:91:9:91:10 | *v2 | provenance | | | consts.cpp:90:2:90:14 | *... = ... | consts.cpp:115:21:115:22 | *v2 | provenance | | | consts.cpp:90:7:90:10 | *call to gets | consts.cpp:90:2:90:14 | *... = ... | provenance | | -| consts.cpp:90:12:90:13 | gets output argument | consts.cpp:94:13:94:14 | *array to pointer conversion | provenance | | +| consts.cpp:90:12:90:13 | gets output argument | consts.cpp:94:13:94:14 | *v1 | provenance | | | consts.cpp:90:12:90:13 | gets output argument | consts.cpp:99:2:99:8 | *... = ... | provenance | | -| consts.cpp:90:12:90:13 | gets output argument | consts.cpp:115:17:115:18 | *array to pointer conversion | provenance | | +| consts.cpp:90:12:90:13 | gets output argument | consts.cpp:115:17:115:18 | *v1 | provenance | | | consts.cpp:90:12:90:13 | gets output argument | consts.cpp:123:2:123:12 | *... = ... | provenance | | -| consts.cpp:90:12:90:13 | gets output argument | consts.cpp:129:19:129:20 | *(const char *)... | provenance | | +| consts.cpp:90:12:90:13 | gets output argument | consts.cpp:129:19:129:20 | *v1 | provenance | | | consts.cpp:90:12:90:13 | gets output argument | consts.cpp:135:9:135:11 | *v10 | provenance | TaintFunction | -| consts.cpp:94:13:94:14 | *array to pointer conversion | consts.cpp:95:9:95:10 | *v3 | provenance | | +| consts.cpp:94:13:94:14 | *v1 | consts.cpp:95:9:95:10 | *v3 | provenance | | | consts.cpp:99:2:99:8 | *... = ... | consts.cpp:100:9:100:10 | *v4 | provenance | | | consts.cpp:106:13:106:19 | *call to varFunc | consts.cpp:106:13:106:19 | *call to varFunc | provenance | | | consts.cpp:106:13:106:19 | *call to varFunc | consts.cpp:107:9:107:10 | *v5 | provenance | | | consts.cpp:111:2:111:15 | *... = ... | consts.cpp:112:9:112:10 | *v6 | provenance | | | consts.cpp:111:7:111:13 | *call to varFunc | consts.cpp:111:2:111:15 | *... = ... | provenance | | -| consts.cpp:115:17:115:18 | *array to pointer conversion | consts.cpp:116:9:116:13 | *access to array | provenance | | -| consts.cpp:115:17:115:18 | *array to pointer conversion | consts.cpp:120:2:120:11 | *... = ... | provenance | | +| consts.cpp:115:17:115:18 | *v1 | consts.cpp:116:9:116:13 | *access to array | provenance | | +| consts.cpp:115:17:115:18 | *v1 | consts.cpp:120:2:120:11 | *... = ... | provenance | | | consts.cpp:115:21:115:22 | *v2 | consts.cpp:116:9:116:13 | *access to array | provenance | | | consts.cpp:115:21:115:22 | *v2 | consts.cpp:120:2:120:11 | *... = ... | provenance | | | consts.cpp:120:2:120:11 | *... = ... | consts.cpp:121:9:121:10 | *v8 | provenance | | | consts.cpp:123:2:123:12 | *... = ... | consts.cpp:24:7:24:9 | **gv1 | provenance | | -| consts.cpp:129:19:129:20 | *(const char *)... | consts.cpp:130:9:130:10 | *v9 | provenance | | +| consts.cpp:129:19:129:20 | *v1 | consts.cpp:130:9:130:10 | *v9 | provenance | | | consts.cpp:139:13:139:16 | readString output argument | consts.cpp:140:9:140:11 | *v11 | provenance | | | consts.cpp:144:16:144:18 | readStringRef output argument | consts.cpp:145:9:145:11 | *v12 | provenance | | nodes @@ -44,7 +44,7 @@ nodes | consts.cpp:90:7:90:10 | *call to gets | semmle.label | *call to gets | | consts.cpp:90:12:90:13 | gets output argument | semmle.label | gets output argument | | consts.cpp:91:9:91:10 | *v2 | semmle.label | *v2 | -| consts.cpp:94:13:94:14 | *array to pointer conversion | semmle.label | *array to pointer conversion | +| consts.cpp:94:13:94:14 | *v1 | semmle.label | *v1 | | consts.cpp:95:9:95:10 | *v3 | semmle.label | *v3 | | consts.cpp:99:2:99:8 | *... = ... | semmle.label | *... = ... | | consts.cpp:100:9:100:10 | *v4 | semmle.label | *v4 | @@ -55,14 +55,14 @@ nodes | consts.cpp:111:2:111:15 | *... = ... | semmle.label | *... = ... | | consts.cpp:111:7:111:13 | *call to varFunc | semmle.label | *call to varFunc | | consts.cpp:112:9:112:10 | *v6 | semmle.label | *v6 | -| consts.cpp:115:17:115:18 | *array to pointer conversion | semmle.label | *array to pointer conversion | +| consts.cpp:115:17:115:18 | *v1 | semmle.label | *v1 | | consts.cpp:115:21:115:22 | *v2 | semmle.label | *v2 | | consts.cpp:116:9:116:13 | *access to array | semmle.label | *access to array | | consts.cpp:120:2:120:11 | *... = ... | semmle.label | *... = ... | | consts.cpp:121:9:121:10 | *v8 | semmle.label | *v8 | | consts.cpp:123:2:123:12 | *... = ... | semmle.label | *... = ... | | consts.cpp:126:9:126:30 | *call to nonConstFuncToArray | semmle.label | *call to nonConstFuncToArray | -| consts.cpp:129:19:129:20 | *(const char *)... | semmle.label | *(const char *)... | +| consts.cpp:129:19:129:20 | *v1 | semmle.label | *v1 | | consts.cpp:130:9:130:10 | *v9 | semmle.label | *v9 | | consts.cpp:135:9:135:11 | *v10 | semmle.label | *v10 | | consts.cpp:139:13:139:16 | readString output argument | semmle.label | readString output argument | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/ArithmeticUncontrolled.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/ArithmeticUncontrolled.expected index 404d001470e2..c21f9c38855c 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/ArithmeticUncontrolled.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/ArithmeticUncontrolled/ArithmeticUncontrolled.expected @@ -5,20 +5,20 @@ edges | test.c:34:13:34:18 | call to rand | test.c:35:5:35:5 | r | provenance | | | test.c:44:13:44:16 | call to rand | test.c:44:13:44:16 | call to rand | provenance | | | test.c:44:13:44:16 | call to rand | test.c:45:5:45:5 | r | provenance | | -| test.c:75:13:75:19 | (...) | test.c:77:9:77:9 | r | provenance | | -| test.c:75:13:75:19 | call to rand | test.c:75:13:75:19 | (...) | provenance | | -| test.c:75:13:75:19 | call to rand | test.c:75:13:75:19 | (...) | provenance | | -| test.c:81:13:81:29 | (...) | test.c:83:9:83:9 | r | provenance | | -| test.c:81:14:81:17 | call to rand | test.c:81:13:81:29 | (...) | provenance | | -| test.c:81:23:81:26 | call to rand | test.c:81:13:81:29 | (...) | provenance | | +| test.c:75:13:75:19 | ... ^ ... | test.c:77:9:77:9 | r | provenance | | +| test.c:75:13:75:19 | call to rand | test.c:75:13:75:19 | ... ^ ... | provenance | | +| test.c:75:13:75:19 | call to rand | test.c:75:13:75:19 | ... ^ ... | provenance | | +| test.c:81:13:81:29 | ... ^ ... | test.c:83:9:83:9 | r | provenance | | +| test.c:81:14:81:17 | call to rand | test.c:81:13:81:29 | ... ^ ... | provenance | | +| test.c:81:23:81:26 | call to rand | test.c:81:13:81:29 | ... ^ ... | provenance | | | test.c:125:13:125:16 | call to rand | test.c:125:13:125:16 | call to rand | provenance | | | test.c:125:13:125:16 | call to rand | test.c:127:9:127:9 | r | provenance | | | test.c:131:13:131:16 | call to rand | test.c:131:13:131:16 | call to rand | provenance | | | test.c:131:13:131:16 | call to rand | test.c:133:5:133:5 | r | provenance | | | test.c:137:13:137:16 | call to rand | test.c:137:13:137:16 | call to rand | provenance | | | test.c:137:13:137:16 | call to rand | test.c:139:10:139:10 | r | provenance | | -| test.c:155:22:155:27 | (unsigned int)... | test.c:157:9:157:9 | r | provenance | | -| test.c:155:22:155:27 | call to rand | test.c:155:22:155:27 | (unsigned int)... | provenance | | +| test.c:155:22:155:27 | call to rand | test.c:155:22:155:27 | call to rand | provenance | | +| test.c:155:22:155:27 | call to rand | test.c:157:9:157:9 | r | provenance | | | test.cpp:6:5:6:12 | *get_rand | test.cpp:24:11:24:18 | call to get_rand | provenance | | | test.cpp:8:9:8:12 | call to rand | test.cpp:6:5:6:12 | *get_rand | provenance | | | test.cpp:8:9:8:12 | call to rand | test.cpp:8:9:8:12 | call to rand | provenance | | @@ -43,8 +43,8 @@ edges | test.cpp:151:10:151:13 | call to rand | test.cpp:153:10:153:15 | ... - ... | provenance | | | test.cpp:153:10:153:15 | ... - ... | test.cpp:154:10:154:10 | b | provenance | | | test.cpp:169:11:169:14 | call to rand | test.cpp:169:11:169:14 | call to rand | provenance | | -| test.cpp:169:11:169:14 | call to rand | test.cpp:170:13:170:13 | (float)... | provenance | | -| test.cpp:170:13:170:13 | (float)... | test.cpp:171:11:171:16 | y | provenance | | +| test.cpp:169:11:169:14 | call to rand | test.cpp:170:13:170:13 | x | provenance | | +| test.cpp:170:13:170:13 | x | test.cpp:171:11:171:16 | y | provenance | | | test.cpp:189:10:189:13 | call to rand | test.cpp:189:10:189:13 | call to rand | provenance | | | test.cpp:189:10:189:13 | call to rand | test.cpp:195:3:195:11 | ... = ... | provenance | | | test.cpp:189:10:189:13 | call to rand | test.cpp:198:3:198:11 | ... = ... | provenance | | @@ -69,11 +69,11 @@ nodes | test.c:44:13:44:16 | call to rand | semmle.label | call to rand | | test.c:44:13:44:16 | call to rand | semmle.label | call to rand | | test.c:45:5:45:5 | r | semmle.label | r | -| test.c:75:13:75:19 | (...) | semmle.label | (...) | +| test.c:75:13:75:19 | ... ^ ... | semmle.label | ... ^ ... | | test.c:75:13:75:19 | call to rand | semmle.label | call to rand | | test.c:75:13:75:19 | call to rand | semmle.label | call to rand | | test.c:77:9:77:9 | r | semmle.label | r | -| test.c:81:13:81:29 | (...) | semmle.label | (...) | +| test.c:81:13:81:29 | ... ^ ... | semmle.label | ... ^ ... | | test.c:81:14:81:17 | call to rand | semmle.label | call to rand | | test.c:81:23:81:26 | call to rand | semmle.label | call to rand | | test.c:83:9:83:9 | r | semmle.label | r | @@ -86,7 +86,7 @@ nodes | test.c:137:13:137:16 | call to rand | semmle.label | call to rand | | test.c:137:13:137:16 | call to rand | semmle.label | call to rand | | test.c:139:10:139:10 | r | semmle.label | r | -| test.c:155:22:155:27 | (unsigned int)... | semmle.label | (unsigned int)... | +| test.c:155:22:155:27 | call to rand | semmle.label | call to rand | | test.c:155:22:155:27 | call to rand | semmle.label | call to rand | | test.c:157:9:157:9 | r | semmle.label | r | | test.cpp:6:5:6:12 | *get_rand | semmle.label | *get_rand | @@ -121,7 +121,7 @@ nodes | test.cpp:154:10:154:10 | b | semmle.label | b | | test.cpp:169:11:169:14 | call to rand | semmle.label | call to rand | | test.cpp:169:11:169:14 | call to rand | semmle.label | call to rand | -| test.cpp:170:13:170:13 | (float)... | semmle.label | (float)... | +| test.cpp:170:13:170:13 | x | semmle.label | x | | test.cpp:171:11:171:16 | y | semmle.label | y | | test.cpp:189:10:189:13 | call to rand | semmle.label | call to rand | | test.cpp:189:10:189:13 | call to rand | semmle.label | call to rand | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/TaintedAllocationSize.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/TaintedAllocationSize.expected index 4a7f889feb75..a10ef491282c 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/TaintedAllocationSize.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/TaintedAllocationSize/TaintedAllocationSize.expected @@ -17,10 +17,10 @@ edges | test.cpp:211:9:211:42 | ... * ... | test.cpp:209:8:209:23 | *get_tainted_size | provenance | | | test.cpp:211:14:211:27 | *call to getenv | test.cpp:211:9:211:42 | ... * ... | provenance | TaintFunction | | test.cpp:230:21:230:21 | s | test.cpp:231:21:231:21 | s | provenance | | -| test.cpp:237:19:237:52 | (int)... | test.cpp:239:9:239:18 | local_size | provenance | | -| test.cpp:237:19:237:52 | (int)... | test.cpp:245:11:245:20 | local_size | provenance | | -| test.cpp:237:19:237:52 | (int)... | test.cpp:247:10:247:19 | local_size | provenance | | -| test.cpp:237:24:237:37 | *call to getenv | test.cpp:237:19:237:52 | (int)... | provenance | TaintFunction | +| test.cpp:237:19:237:52 | ... * ... | test.cpp:239:9:239:18 | local_size | provenance | | +| test.cpp:237:19:237:52 | ... * ... | test.cpp:245:11:245:20 | local_size | provenance | | +| test.cpp:237:19:237:52 | ... * ... | test.cpp:247:10:247:19 | local_size | provenance | | +| test.cpp:237:24:237:37 | *call to getenv | test.cpp:237:19:237:52 | ... * ... | provenance | TaintFunction | | test.cpp:247:10:247:19 | local_size | test.cpp:230:21:230:21 | s | provenance | | | test.cpp:250:20:250:27 | *out_size | test.cpp:289:17:289:20 | get_size output argument | provenance | | | test.cpp:250:20:250:27 | *out_size | test.cpp:305:18:305:21 | get_size output argument | provenance | | @@ -57,7 +57,7 @@ nodes | test.cpp:211:14:211:27 | *call to getenv | semmle.label | *call to getenv | | test.cpp:230:21:230:21 | s | semmle.label | s | | test.cpp:231:21:231:21 | s | semmle.label | s | -| test.cpp:237:19:237:52 | (int)... | semmle.label | (int)... | +| test.cpp:237:19:237:52 | ... * ... | semmle.label | ... * ... | | test.cpp:237:24:237:37 | *call to getenv | semmle.label | *call to getenv | | test.cpp:239:9:239:18 | local_size | semmle.label | local_size | | test.cpp:241:9:241:24 | call to get_tainted_size | semmle.label | call to get_tainted_size | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected index 6da76bd8688f..b6e6310b7799 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-190/semmle/tainted/ArithmeticTainted.expected @@ -11,8 +11,8 @@ edges | test3.c:10:27:10:30 | **argv | test.c:51:5:51:24 | ... = ... | provenance | TaintFunction | | test5.cpp:5:5:5:17 | *getTaintedInt | test5.cpp:17:6:17:18 | call to getTaintedInt | provenance | | | test5.cpp:5:5:5:17 | *getTaintedInt | test5.cpp:18:6:18:18 | call to getTaintedInt | provenance | | -| test5.cpp:9:7:9:9 | gets output argument | test5.cpp:10:9:10:27 | (int)... | provenance | TaintFunction | -| test5.cpp:10:9:10:27 | (int)... | test5.cpp:5:5:5:17 | *getTaintedInt | provenance | | +| test5.cpp:9:7:9:9 | gets output argument | test5.cpp:10:9:10:27 | call to strtoul | provenance | TaintFunction | +| test5.cpp:10:9:10:27 | call to strtoul | test5.cpp:5:5:5:17 | *getTaintedInt | provenance | | | test5.cpp:18:2:18:20 | ... = ... | test5.cpp:19:6:19:6 | y | provenance | | | test5.cpp:18:6:18:18 | call to getTaintedInt | test5.cpp:18:2:18:20 | ... = ... | provenance | | | test.c:10:27:10:30 | **argv | test.c:11:24:11:27 | call to atoi | provenance | TaintFunction | @@ -40,7 +40,7 @@ nodes | test3.c:10:27:10:30 | **argv | semmle.label | **argv | | test5.cpp:5:5:5:17 | *getTaintedInt | semmle.label | *getTaintedInt | | test5.cpp:9:7:9:9 | gets output argument | semmle.label | gets output argument | -| test5.cpp:10:9:10:27 | (int)... | semmle.label | (int)... | +| test5.cpp:10:9:10:27 | call to strtoul | semmle.label | call to strtoul | | test5.cpp:17:6:17:18 | call to getTaintedInt | semmle.label | call to getTaintedInt | | test5.cpp:18:2:18:20 | ... = ... | semmle.label | ... = ... | | test5.cpp:18:6:18:18 | call to getTaintedInt | semmle.label | call to getTaintedInt | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected index 8a27292ba187..2eab396a2342 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-193/InvalidPointerDeref.expected @@ -1,6 +1,6 @@ edges -| test.cpp:4:15:4:33 | (char *)... | test.cpp:5:15:5:22 | ... + ... | provenance | | -| test.cpp:4:15:4:33 | call to malloc | test.cpp:4:15:4:33 | (char *)... | provenance | | +| test.cpp:4:15:4:33 | call to malloc | test.cpp:4:15:4:33 | call to malloc | provenance | | +| test.cpp:4:15:4:33 | call to malloc | test.cpp:5:15:5:22 | ... + ... | provenance | | | test.cpp:5:15:5:22 | ... + ... | test.cpp:5:15:5:22 | ... + ... | provenance | | | test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | * ... | provenance | | | test.cpp:5:15:5:22 | ... + ... | test.cpp:6:14:6:15 | * ... | provenance | | @@ -9,10 +9,10 @@ edges | test.cpp:5:15:5:22 | ... + ... | test.cpp:8:14:8:21 | * ... | provenance | | | test.cpp:5:15:5:22 | ... + ... | test.cpp:8:14:8:21 | * ... | provenance | | | test.cpp:6:14:6:15 | * ... | test.cpp:8:14:8:21 | * ... | provenance | | -| test.cpp:16:15:16:33 | (char *)... | test.cpp:20:14:20:21 | * ... | provenance | | -| test.cpp:16:15:16:33 | call to malloc | test.cpp:16:15:16:33 | (char *)... | provenance | | -| test.cpp:28:15:28:37 | (char *)... | test.cpp:29:15:29:28 | ... + ... | provenance | | -| test.cpp:28:15:28:37 | call to malloc | test.cpp:28:15:28:37 | (char *)... | provenance | | +| test.cpp:16:15:16:33 | call to malloc | test.cpp:16:15:16:33 | call to malloc | provenance | | +| test.cpp:16:15:16:33 | call to malloc | test.cpp:20:14:20:21 | * ... | provenance | | +| test.cpp:28:15:28:37 | call to malloc | test.cpp:28:15:28:37 | call to malloc | provenance | | +| test.cpp:28:15:28:37 | call to malloc | test.cpp:29:15:29:28 | ... + ... | provenance | | | test.cpp:29:15:29:28 | ... + ... | test.cpp:29:15:29:28 | ... + ... | provenance | | | test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | * ... | provenance | | | test.cpp:29:15:29:28 | ... + ... | test.cpp:30:14:30:15 | * ... | provenance | | @@ -22,13 +22,13 @@ edges | test.cpp:29:15:29:28 | ... + ... | test.cpp:32:14:32:21 | * ... | provenance | | | test.cpp:30:14:30:15 | * ... | test.cpp:32:14:32:21 | * ... | provenance | | | test.cpp:51:33:51:35 | *end | test.cpp:60:34:60:37 | mk_array output argument | provenance | | -| test.cpp:52:19:52:37 | (char *)... | test.cpp:53:12:53:23 | ... + ... | provenance | | -| test.cpp:52:19:52:37 | call to malloc | test.cpp:52:19:52:37 | (char *)... | provenance | | +| test.cpp:52:19:52:37 | call to malloc | test.cpp:52:19:52:37 | call to malloc | provenance | | +| test.cpp:52:19:52:37 | call to malloc | test.cpp:53:12:53:23 | ... + ... | provenance | | | test.cpp:53:5:53:23 | ... = ... | test.cpp:51:33:51:35 | *end | provenance | | | test.cpp:53:12:53:23 | ... + ... | test.cpp:53:5:53:23 | ... = ... | provenance | | | test.cpp:60:34:60:37 | mk_array output argument | test.cpp:67:9:67:14 | ... = ... | provenance | | -| test.cpp:205:15:205:33 | (char *)... | test.cpp:206:17:206:23 | ... + ... | provenance | | -| test.cpp:205:15:205:33 | call to malloc | test.cpp:205:15:205:33 | (char *)... | provenance | | +| test.cpp:205:15:205:33 | call to malloc | test.cpp:205:15:205:33 | call to malloc | provenance | | +| test.cpp:205:15:205:33 | call to malloc | test.cpp:206:17:206:23 | ... + ... | provenance | | | test.cpp:206:17:206:23 | ... + ... | test.cpp:206:17:206:23 | ... + ... | provenance | | | test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | ... = ... | provenance | | | test.cpp:206:17:206:23 | ... + ... | test.cpp:213:5:213:13 | ... = ... | provenance | | @@ -119,32 +119,32 @@ edges | test.cpp:815:52:815:54 | end | test.cpp:821:7:821:12 | ... = ... | provenance | | | test.cpp:832:40:832:43 | mk_array_no_field_flow output argument | test.cpp:833:37:833:39 | end | provenance | | | test.cpp:833:37:833:39 | end | test.cpp:815:52:815:54 | end | provenance | | -| test.cpp:841:18:841:35 | (int *)... | test.cpp:842:3:842:20 | ... = ... | provenance | | -| test.cpp:841:18:841:35 | call to malloc | test.cpp:841:18:841:35 | (int *)... | provenance | | -| test.cpp:848:20:848:37 | (int *)... | test.cpp:849:5:849:22 | ... = ... | provenance | | -| test.cpp:848:20:848:37 | call to malloc | test.cpp:848:20:848:37 | (int *)... | provenance | | -| test.cpp:856:12:856:35 | (int *)... | test.cpp:857:16:857:29 | ... + ... | provenance | | -| test.cpp:856:12:856:35 | call to malloc | test.cpp:856:12:856:35 | (int *)... | provenance | | +| test.cpp:841:18:841:35 | call to malloc | test.cpp:841:18:841:35 | call to malloc | provenance | | +| test.cpp:841:18:841:35 | call to malloc | test.cpp:842:3:842:20 | ... = ... | provenance | | +| test.cpp:848:20:848:37 | call to malloc | test.cpp:848:20:848:37 | call to malloc | provenance | | +| test.cpp:848:20:848:37 | call to malloc | test.cpp:849:5:849:22 | ... = ... | provenance | | +| test.cpp:856:12:856:35 | call to malloc | test.cpp:856:12:856:35 | call to malloc | provenance | | +| test.cpp:856:12:856:35 | call to malloc | test.cpp:857:16:857:29 | ... + ... | provenance | | | test.cpp:857:16:857:29 | ... + ... | test.cpp:857:16:857:29 | ... + ... | provenance | | | test.cpp:857:16:857:29 | ... + ... | test.cpp:860:5:860:11 | ... = ... | provenance | | | test.cpp:857:16:857:29 | ... + ... | test.cpp:860:5:860:11 | ... = ... | provenance | | -| test.cpp:868:15:868:35 | (char *)... | test.cpp:869:15:869:22 | ... + ... | provenance | | -| test.cpp:868:15:868:35 | call to g_malloc | test.cpp:868:15:868:35 | (char *)... | provenance | | +| test.cpp:868:15:868:35 | call to g_malloc | test.cpp:868:15:868:35 | call to g_malloc | provenance | | +| test.cpp:868:15:868:35 | call to g_malloc | test.cpp:869:15:869:22 | ... + ... | provenance | | | test.cpp:869:15:869:22 | ... + ... | test.cpp:869:15:869:22 | ... + ... | provenance | | | test.cpp:869:15:869:22 | ... + ... | test.cpp:870:14:870:15 | * ... | provenance | | | test.cpp:869:15:869:22 | ... + ... | test.cpp:870:14:870:15 | * ... | provenance | | nodes -| test.cpp:4:15:4:33 | (char *)... | semmle.label | (char *)... | +| test.cpp:4:15:4:33 | call to malloc | semmle.label | call to malloc | | test.cpp:4:15:4:33 | call to malloc | semmle.label | call to malloc | | test.cpp:5:15:5:22 | ... + ... | semmle.label | ... + ... | | test.cpp:5:15:5:22 | ... + ... | semmle.label | ... + ... | | test.cpp:6:14:6:15 | * ... | semmle.label | * ... | | test.cpp:6:14:6:15 | * ... | semmle.label | * ... | | test.cpp:8:14:8:21 | * ... | semmle.label | * ... | -| test.cpp:16:15:16:33 | (char *)... | semmle.label | (char *)... | +| test.cpp:16:15:16:33 | call to malloc | semmle.label | call to malloc | | test.cpp:16:15:16:33 | call to malloc | semmle.label | call to malloc | | test.cpp:20:14:20:21 | * ... | semmle.label | * ... | -| test.cpp:28:15:28:37 | (char *)... | semmle.label | (char *)... | +| test.cpp:28:15:28:37 | call to malloc | semmle.label | call to malloc | | test.cpp:28:15:28:37 | call to malloc | semmle.label | call to malloc | | test.cpp:29:15:29:28 | ... + ... | semmle.label | ... + ... | | test.cpp:29:15:29:28 | ... + ... | semmle.label | ... + ... | @@ -152,13 +152,13 @@ nodes | test.cpp:30:14:30:15 | * ... | semmle.label | * ... | | test.cpp:32:14:32:21 | * ... | semmle.label | * ... | | test.cpp:51:33:51:35 | *end | semmle.label | *end | -| test.cpp:52:19:52:37 | (char *)... | semmle.label | (char *)... | +| test.cpp:52:19:52:37 | call to malloc | semmle.label | call to malloc | | test.cpp:52:19:52:37 | call to malloc | semmle.label | call to malloc | | test.cpp:53:5:53:23 | ... = ... | semmle.label | ... = ... | | test.cpp:53:12:53:23 | ... + ... | semmle.label | ... + ... | | test.cpp:60:34:60:37 | mk_array output argument | semmle.label | mk_array output argument | | test.cpp:67:9:67:14 | ... = ... | semmle.label | ... = ... | -| test.cpp:205:15:205:33 | (char *)... | semmle.label | (char *)... | +| test.cpp:205:15:205:33 | call to malloc | semmle.label | call to malloc | | test.cpp:205:15:205:33 | call to malloc | semmle.label | call to malloc | | test.cpp:206:17:206:23 | ... + ... | semmle.label | ... + ... | | test.cpp:206:17:206:23 | ... + ... | semmle.label | ... + ... | @@ -246,18 +246,18 @@ nodes | test.cpp:821:7:821:12 | ... = ... | semmle.label | ... = ... | | test.cpp:832:40:832:43 | mk_array_no_field_flow output argument | semmle.label | mk_array_no_field_flow output argument | | test.cpp:833:37:833:39 | end | semmle.label | end | -| test.cpp:841:18:841:35 | (int *)... | semmle.label | (int *)... | +| test.cpp:841:18:841:35 | call to malloc | semmle.label | call to malloc | | test.cpp:841:18:841:35 | call to malloc | semmle.label | call to malloc | | test.cpp:842:3:842:20 | ... = ... | semmle.label | ... = ... | -| test.cpp:848:20:848:37 | (int *)... | semmle.label | (int *)... | +| test.cpp:848:20:848:37 | call to malloc | semmle.label | call to malloc | | test.cpp:848:20:848:37 | call to malloc | semmle.label | call to malloc | | test.cpp:849:5:849:22 | ... = ... | semmle.label | ... = ... | -| test.cpp:856:12:856:35 | (int *)... | semmle.label | (int *)... | +| test.cpp:856:12:856:35 | call to malloc | semmle.label | call to malloc | | test.cpp:856:12:856:35 | call to malloc | semmle.label | call to malloc | | test.cpp:857:16:857:29 | ... + ... | semmle.label | ... + ... | | test.cpp:857:16:857:29 | ... + ... | semmle.label | ... + ... | | test.cpp:860:5:860:11 | ... = ... | semmle.label | ... = ... | -| test.cpp:868:15:868:35 | (char *)... | semmle.label | (char *)... | +| test.cpp:868:15:868:35 | call to g_malloc | semmle.label | call to g_malloc | | test.cpp:868:15:868:35 | call to g_malloc | semmle.label | call to g_malloc | | test.cpp:869:15:869:22 | ... + ... | semmle.label | ... + ... | | test.cpp:869:15:869:22 | ... + ... | semmle.label | ... + ... | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-290/semmle/AuthenticationBypass/AuthenticationBypass.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-290/semmle/AuthenticationBypass/AuthenticationBypass.expected index 274ec2b89b69..117f94cfad8a 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-290/semmle/AuthenticationBypass/AuthenticationBypass.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-290/semmle/AuthenticationBypass/AuthenticationBypass.expected @@ -1,25 +1,25 @@ edges -| test.cpp:16:25:16:42 | *(const char *)... | test.cpp:20:14:20:20 | *address | provenance | | -| test.cpp:16:25:16:42 | *call to getenv | test.cpp:16:25:16:42 | *(const char *)... | provenance | | -| test.cpp:27:25:27:42 | *(const char *)... | test.cpp:31:14:31:20 | *address | provenance | | -| test.cpp:27:25:27:42 | *call to getenv | test.cpp:27:25:27:42 | *(const char *)... | provenance | | -| test.cpp:38:25:38:42 | *(const char *)... | test.cpp:42:14:42:20 | *address | provenance | | -| test.cpp:38:25:38:42 | *call to getenv | test.cpp:38:25:38:42 | *(const char *)... | provenance | | -| test.cpp:49:25:49:42 | *(const char *)... | test.cpp:52:14:52:20 | *address | provenance | | -| test.cpp:49:25:49:42 | *(const char *)... | test.cpp:56:14:56:20 | *address | provenance | | -| test.cpp:49:25:49:42 | *(const char *)... | test.cpp:60:14:60:20 | *address | provenance | | -| test.cpp:49:25:49:42 | *call to getenv | test.cpp:49:25:49:42 | *(const char *)... | provenance | | +| test.cpp:16:25:16:42 | *call to getenv | test.cpp:16:25:16:42 | *call to getenv | provenance | | +| test.cpp:16:25:16:42 | *call to getenv | test.cpp:20:14:20:20 | *address | provenance | | +| test.cpp:27:25:27:42 | *call to getenv | test.cpp:27:25:27:42 | *call to getenv | provenance | | +| test.cpp:27:25:27:42 | *call to getenv | test.cpp:31:14:31:20 | *address | provenance | | +| test.cpp:38:25:38:42 | *call to getenv | test.cpp:38:25:38:42 | *call to getenv | provenance | | +| test.cpp:38:25:38:42 | *call to getenv | test.cpp:42:14:42:20 | *address | provenance | | +| test.cpp:49:25:49:42 | *call to getenv | test.cpp:49:25:49:42 | *call to getenv | provenance | | +| test.cpp:49:25:49:42 | *call to getenv | test.cpp:52:14:52:20 | *address | provenance | | +| test.cpp:49:25:49:42 | *call to getenv | test.cpp:56:14:56:20 | *address | provenance | | +| test.cpp:49:25:49:42 | *call to getenv | test.cpp:60:14:60:20 | *address | provenance | | nodes -| test.cpp:16:25:16:42 | *(const char *)... | semmle.label | *(const char *)... | +| test.cpp:16:25:16:42 | *call to getenv | semmle.label | *call to getenv | | test.cpp:16:25:16:42 | *call to getenv | semmle.label | *call to getenv | | test.cpp:20:14:20:20 | *address | semmle.label | *address | -| test.cpp:27:25:27:42 | *(const char *)... | semmle.label | *(const char *)... | +| test.cpp:27:25:27:42 | *call to getenv | semmle.label | *call to getenv | | test.cpp:27:25:27:42 | *call to getenv | semmle.label | *call to getenv | | test.cpp:31:14:31:20 | *address | semmle.label | *address | -| test.cpp:38:25:38:42 | *(const char *)... | semmle.label | *(const char *)... | +| test.cpp:38:25:38:42 | *call to getenv | semmle.label | *call to getenv | | test.cpp:38:25:38:42 | *call to getenv | semmle.label | *call to getenv | | test.cpp:42:14:42:20 | *address | semmle.label | *address | -| test.cpp:49:25:49:42 | *(const char *)... | semmle.label | *(const char *)... | +| test.cpp:49:25:49:42 | *call to getenv | semmle.label | *call to getenv | | test.cpp:49:25:49:42 | *call to getenv | semmle.label | *call to getenv | | test.cpp:52:14:52:20 | *address | semmle.label | *address | | test.cpp:56:14:56:20 | *address | semmle.label | *address | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextTransmission.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextTransmission.expected index 759c81e05803..42718aa4a388 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextTransmission.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/CleartextTransmission.expected @@ -1,8 +1,8 @@ edges | test3.cpp:74:21:74:29 | password1 | test3.cpp:74:21:74:29 | password1 | provenance | | | test3.cpp:74:21:74:29 | password1 | test3.cpp:76:15:76:17 | ptr | provenance | | -| test3.cpp:81:15:81:22 | array to pointer conversion | test3.cpp:83:15:83:17 | ptr | provenance | | -| test3.cpp:81:15:81:22 | password | test3.cpp:81:15:81:22 | array to pointer conversion | provenance | | +| test3.cpp:81:15:81:22 | password | test3.cpp:81:15:81:22 | password | provenance | | +| test3.cpp:81:15:81:22 | password | test3.cpp:83:15:83:17 | ptr | provenance | | | test3.cpp:112:20:112:25 | buffer | test3.cpp:114:14:114:19 | buffer | provenance | | | test3.cpp:117:28:117:33 | buffer | test3.cpp:119:9:119:14 | buffer | provenance | | | test3.cpp:119:9:119:14 | buffer | test3.cpp:117:13:117:14 | *id | provenance | | @@ -49,7 +49,7 @@ nodes | test3.cpp:74:21:74:29 | password1 | semmle.label | password1 | | test3.cpp:74:21:74:29 | password1 | semmle.label | password1 | | test3.cpp:76:15:76:17 | ptr | semmle.label | ptr | -| test3.cpp:81:15:81:22 | array to pointer conversion | semmle.label | array to pointer conversion | +| test3.cpp:81:15:81:22 | password | semmle.label | password | | test3.cpp:81:15:81:22 | password | semmle.label | password | | test3.cpp:83:15:83:17 | ptr | semmle.label | ptr | | test3.cpp:101:12:101:19 | password | semmle.label | password | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-319/UseOfHttp/UseOfHttp.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-319/UseOfHttp/UseOfHttp.expected index 82953c486e29..a978b9edd7d2 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-319/UseOfHttp/UseOfHttp.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-319/UseOfHttp/UseOfHttp.expected @@ -1,21 +1,21 @@ edges | test.cpp:11:26:11:28 | *url | test.cpp:15:30:15:32 | *url | provenance | | | test.cpp:24:13:24:17 | **url_g | test.cpp:38:11:38:15 | *url_g | provenance | | -| test.cpp:24:21:24:40 | *array to pointer conversion | test.cpp:24:13:24:17 | **url_g | provenance | | -| test.cpp:24:21:24:40 | *http://example.com | test.cpp:24:21:24:40 | *array to pointer conversion | provenance | | +| test.cpp:24:21:24:40 | *http://example.com | test.cpp:24:13:24:17 | **url_g | provenance | | +| test.cpp:24:21:24:40 | *http://example.com | test.cpp:24:21:24:40 | *http://example.com | provenance | | | test.cpp:28:10:28:29 | *http://example.com | test.cpp:11:26:11:28 | *url | provenance | | -| test.cpp:35:23:35:42 | *array to pointer conversion | test.cpp:39:11:39:15 | *url_l | provenance | | -| test.cpp:35:23:35:42 | *http://example.com | test.cpp:35:23:35:42 | *array to pointer conversion | provenance | | -| test.cpp:36:26:36:45 | *array to pointer conversion | test.cpp:40:11:40:17 | *access to array | provenance | | -| test.cpp:36:26:36:45 | *http://example.com | test.cpp:36:26:36:45 | *array to pointer conversion | provenance | | +| test.cpp:35:23:35:42 | *http://example.com | test.cpp:35:23:35:42 | *http://example.com | provenance | | +| test.cpp:35:23:35:42 | *http://example.com | test.cpp:39:11:39:15 | *url_l | provenance | | +| test.cpp:36:26:36:45 | *http://example.com | test.cpp:36:26:36:45 | *http://example.com | provenance | | +| test.cpp:36:26:36:45 | *http://example.com | test.cpp:40:11:40:17 | *access to array | provenance | | | test.cpp:38:11:38:15 | *url_g | test.cpp:11:26:11:28 | *url | provenance | | | test.cpp:39:11:39:15 | *url_l | test.cpp:11:26:11:28 | *url | provenance | | | test.cpp:40:11:40:17 | *access to array | test.cpp:11:26:11:28 | *url | provenance | | | test.cpp:46:18:46:26 | *http:// | test.cpp:49:11:49:16 | *buffer | provenance | DataFlowFunction | | test.cpp:49:11:49:16 | *buffer | test.cpp:11:26:11:28 | *url | provenance | | -| test.cpp:110:21:110:40 | *(char *)... | test.cpp:113:2:113:37 | *... = ... | provenance | TaintFunction | -| test.cpp:110:21:110:40 | *(char *)... | test.cpp:116:3:116:37 | *... = ... | provenance | TaintFunction | -| test.cpp:110:21:110:40 | *http://example.com | test.cpp:110:21:110:40 | *(char *)... | provenance | | +| test.cpp:110:21:110:40 | *http://example.com | test.cpp:110:21:110:40 | *http://example.com | provenance | | +| test.cpp:110:21:110:40 | *http://example.com | test.cpp:113:2:113:37 | *... = ... | provenance | TaintFunction | +| test.cpp:110:21:110:40 | *http://example.com | test.cpp:116:3:116:37 | *... = ... | provenance | TaintFunction | | test.cpp:113:2:113:37 | *... = ... | test.cpp:121:11:121:13 | *ptr | provenance | | | test.cpp:116:3:116:37 | *... = ... | test.cpp:121:11:121:13 | *ptr | provenance | | | test.cpp:121:11:121:13 | *ptr | test.cpp:11:26:11:28 | *url | provenance | | @@ -23,19 +23,19 @@ nodes | test.cpp:11:26:11:28 | *url | semmle.label | *url | | test.cpp:15:30:15:32 | *url | semmle.label | *url | | test.cpp:24:13:24:17 | **url_g | semmle.label | **url_g | -| test.cpp:24:21:24:40 | *array to pointer conversion | semmle.label | *array to pointer conversion | +| test.cpp:24:21:24:40 | *http://example.com | semmle.label | *http://example.com | | test.cpp:24:21:24:40 | *http://example.com | semmle.label | *http://example.com | | test.cpp:28:10:28:29 | *http://example.com | semmle.label | *http://example.com | -| test.cpp:35:23:35:42 | *array to pointer conversion | semmle.label | *array to pointer conversion | | test.cpp:35:23:35:42 | *http://example.com | semmle.label | *http://example.com | -| test.cpp:36:26:36:45 | *array to pointer conversion | semmle.label | *array to pointer conversion | +| test.cpp:35:23:35:42 | *http://example.com | semmle.label | *http://example.com | +| test.cpp:36:26:36:45 | *http://example.com | semmle.label | *http://example.com | | test.cpp:36:26:36:45 | *http://example.com | semmle.label | *http://example.com | | test.cpp:38:11:38:15 | *url_g | semmle.label | *url_g | | test.cpp:39:11:39:15 | *url_l | semmle.label | *url_l | | test.cpp:40:11:40:17 | *access to array | semmle.label | *access to array | | test.cpp:46:18:46:26 | *http:// | semmle.label | *http:// | | test.cpp:49:11:49:16 | *buffer | semmle.label | *buffer | -| test.cpp:110:21:110:40 | *(char *)... | semmle.label | *(char *)... | +| test.cpp:110:21:110:40 | *http://example.com | semmle.label | *http://example.com | | test.cpp:110:21:110:40 | *http://example.com | semmle.label | *http://example.com | | test.cpp:113:2:113:37 | *... = ... | semmle.label | *... = ... | | test.cpp:116:3:116:37 | *... = ... | semmle.label | *... = ... | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-611/XXE.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-611/XXE.expected index 671035d523e5..e9125a9ca4c0 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-611/XXE.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-611/XXE.expected @@ -57,12 +57,12 @@ edges | tests.cpp:66:23:66:43 | call to XercesDOMParser | tests.cpp:66:23:66:43 | *new | provenance | | | tests.cpp:73:23:73:43 | *new | tests.cpp:80:2:80:2 | *p | provenance | | | tests.cpp:73:23:73:43 | call to XercesDOMParser | tests.cpp:73:23:73:43 | *new | provenance | | -| tests.cpp:85:24:85:44 | *new | tests.cpp:86:24:86:25 | *(reference to) | provenance | | +| tests.cpp:85:24:85:44 | *new | tests.cpp:86:24:86:25 | ** ... | provenance | | | tests.cpp:85:24:85:44 | call to XercesDOMParser | tests.cpp:85:24:85:44 | *new | provenance | | -| tests.cpp:86:24:86:25 | *(reference to) | tests.cpp:88:3:88:3 | *q | provenance | | -| tests.cpp:100:24:100:44 | *new | tests.cpp:101:24:101:25 | *(reference to) | provenance | | +| tests.cpp:86:24:86:25 | ** ... | tests.cpp:88:3:88:3 | *q | provenance | | +| tests.cpp:100:24:100:44 | *new | tests.cpp:101:24:101:25 | ** ... | provenance | | | tests.cpp:100:24:100:44 | call to XercesDOMParser | tests.cpp:100:24:100:44 | *new | provenance | | -| tests.cpp:101:24:101:25 | *(reference to) | tests.cpp:104:3:104:3 | *q | provenance | | +| tests.cpp:101:24:101:25 | ** ... | tests.cpp:104:3:104:3 | *q | provenance | | | tests.cpp:112:39:112:39 | *p | tests.cpp:112:39:112:39 | *p | provenance | | | tests.cpp:112:39:112:39 | *p | tests.cpp:113:2:113:2 | *p | provenance | | | tests.cpp:116:39:116:39 | *p | tests.cpp:117:2:117:2 | *p | provenance | | @@ -158,11 +158,11 @@ nodes | tests.cpp:80:2:80:2 | *p | semmle.label | *p | | tests.cpp:85:24:85:44 | *new | semmle.label | *new | | tests.cpp:85:24:85:44 | call to XercesDOMParser | semmle.label | call to XercesDOMParser | -| tests.cpp:86:24:86:25 | *(reference to) | semmle.label | *(reference to) | +| tests.cpp:86:24:86:25 | ** ... | semmle.label | ** ... | | tests.cpp:88:3:88:3 | *q | semmle.label | *q | | tests.cpp:100:24:100:44 | *new | semmle.label | *new | | tests.cpp:100:24:100:44 | call to XercesDOMParser | semmle.label | call to XercesDOMParser | -| tests.cpp:101:24:101:25 | *(reference to) | semmle.label | *(reference to) | +| tests.cpp:101:24:101:25 | ** ... | semmle.label | ** ... | | tests.cpp:104:3:104:3 | *q | semmle.label | *q | | tests.cpp:112:39:112:39 | *p | semmle.label | *p | | tests.cpp:112:39:112:39 | *p | semmle.label | *p | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-807/semmle/TaintedCondition/TaintedCondition.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-807/semmle/TaintedCondition/TaintedCondition.expected index 2ece8ab7582b..fc3a964b2bf3 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-807/semmle/TaintedCondition/TaintedCondition.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-807/semmle/TaintedCondition/TaintedCondition.expected @@ -1,8 +1,8 @@ edges -| test.cpp:20:29:20:47 | *(const char *)... | test.cpp:24:10:24:35 | ! ... | provenance | TaintFunction | -| test.cpp:20:29:20:47 | *call to getenv | test.cpp:20:29:20:47 | *(const char *)... | provenance | | +| test.cpp:20:29:20:47 | *call to getenv | test.cpp:20:29:20:47 | *call to getenv | provenance | | +| test.cpp:20:29:20:47 | *call to getenv | test.cpp:24:10:24:35 | ! ... | provenance | TaintFunction | nodes -| test.cpp:20:29:20:47 | *(const char *)... | semmle.label | *(const char *)... | +| test.cpp:20:29:20:47 | *call to getenv | semmle.label | *call to getenv | | test.cpp:20:29:20:47 | *call to getenv | semmle.label | *call to getenv | | test.cpp:24:10:24:35 | ! ... | semmle.label | ! ... | subpaths diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected b/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected index 61f2b5afaa4b..6e18306bcd29 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-843/TypeConfusion.expected @@ -1,18 +1,18 @@ edges -| test.cpp:17:13:17:18 | (void *)... | test.cpp:18:21:18:47 | p | provenance | | -| test.cpp:17:13:17:18 | new | test.cpp:17:13:17:18 | (void *)... | provenance | | -| test.cpp:22:13:22:26 | (void *)... | test.cpp:23:12:23:30 | p | provenance | | -| test.cpp:22:13:22:26 | new | test.cpp:22:13:22:26 | (void *)... | provenance | | -| test.cpp:27:13:27:18 | (void *)... | test.cpp:28:25:28:55 | p | provenance | | -| test.cpp:27:13:27:18 | new | test.cpp:27:13:27:18 | (void *)... | provenance | | -| test.cpp:32:13:32:30 | (void *)... | test.cpp:33:12:33:30 | p | provenance | | -| test.cpp:32:13:32:30 | new | test.cpp:32:13:32:30 | (void *)... | provenance | | +| test.cpp:17:13:17:18 | new | test.cpp:17:13:17:18 | new | provenance | | +| test.cpp:17:13:17:18 | new | test.cpp:18:21:18:47 | p | provenance | | +| test.cpp:22:13:22:26 | new | test.cpp:22:13:22:26 | new | provenance | | +| test.cpp:22:13:22:26 | new | test.cpp:23:12:23:30 | p | provenance | | +| test.cpp:27:13:27:18 | new | test.cpp:27:13:27:18 | new | provenance | | +| test.cpp:27:13:27:18 | new | test.cpp:28:25:28:55 | p | provenance | | +| test.cpp:32:13:32:30 | new | test.cpp:32:13:32:30 | new | provenance | | +| test.cpp:32:13:32:30 | new | test.cpp:33:12:33:30 | p | provenance | | | test.cpp:47:21:47:36 | new | test.cpp:47:21:47:36 | new | provenance | | | test.cpp:47:21:47:36 | new | test.cpp:48:22:48:55 | p | provenance | | -| test.cpp:66:15:66:21 | (Animal *)... | test.cpp:67:12:67:31 | a | provenance | | -| test.cpp:66:15:66:21 | new | test.cpp:66:15:66:21 | (Animal *)... | provenance | | -| test.cpp:76:15:76:21 | (Animal *)... | test.cpp:77:12:77:31 | a | provenance | | -| test.cpp:76:15:76:21 | new | test.cpp:76:15:76:21 | (Animal *)... | provenance | | +| test.cpp:66:15:66:21 | new | test.cpp:66:15:66:21 | new | provenance | | +| test.cpp:66:15:66:21 | new | test.cpp:67:12:67:31 | a | provenance | | +| test.cpp:76:15:76:21 | new | test.cpp:76:15:76:21 | new | provenance | | +| test.cpp:76:15:76:21 | new | test.cpp:77:12:77:31 | a | provenance | | | test.cpp:83:5:83:15 | ... = ... | test.cpp:88:14:88:33 | a | provenance | | | test.cpp:83:9:83:15 | new | test.cpp:83:5:83:15 | ... = ... | provenance | | | test.cpp:85:5:85:15 | ... = ... | test.cpp:88:14:88:33 | a | provenance | | @@ -31,36 +31,36 @@ edges | test.cpp:166:9:166:15 | new | test.cpp:166:5:166:15 | ... = ... | provenance | | | test.cpp:168:5:168:15 | ... = ... | test.cpp:171:14:171:33 | a | provenance | | | test.cpp:168:9:168:15 | new | test.cpp:168:5:168:15 | ... = ... | provenance | | -| test.cpp:179:15:179:24 | (void *)... | test.cpp:181:15:181:25 | u64 | provenance | | -| test.cpp:179:15:179:24 | new | test.cpp:179:15:179:24 | (void *)... | provenance | | -| test.cpp:187:15:187:24 | (void *)... | test.cpp:189:25:189:45 | u64 | provenance | | -| test.cpp:187:15:187:24 | new | test.cpp:187:15:187:24 | (void *)... | provenance | | -| test.cpp:207:14:207:26 | (void *)... | test.cpp:209:17:209:28 | si | provenance | | -| test.cpp:207:14:207:26 | new | test.cpp:207:14:207:26 | (void *)... | provenance | | -| test.cpp:217:13:217:18 | (void *)... | test.cpp:218:30:218:65 | p | provenance | | -| test.cpp:217:13:217:18 | new | test.cpp:217:13:217:18 | (void *)... | provenance | | -| test.cpp:226:13:226:18 | (void *)... | test.cpp:227:29:227:63 | p | provenance | | -| test.cpp:226:13:226:18 | new | test.cpp:226:13:226:18 | (void *)... | provenance | | +| test.cpp:179:15:179:24 | new | test.cpp:179:15:179:24 | new | provenance | | +| test.cpp:179:15:179:24 | new | test.cpp:181:15:181:25 | u64 | provenance | | +| test.cpp:187:15:187:24 | new | test.cpp:187:15:187:24 | new | provenance | | +| test.cpp:187:15:187:24 | new | test.cpp:189:25:189:45 | u64 | provenance | | +| test.cpp:207:14:207:26 | new | test.cpp:207:14:207:26 | new | provenance | | +| test.cpp:207:14:207:26 | new | test.cpp:209:17:209:28 | si | provenance | | +| test.cpp:217:13:217:18 | new | test.cpp:217:13:217:18 | new | provenance | | +| test.cpp:217:13:217:18 | new | test.cpp:218:30:218:65 | p | provenance | | +| test.cpp:226:13:226:18 | new | test.cpp:226:13:226:18 | new | provenance | | +| test.cpp:226:13:226:18 | new | test.cpp:227:29:227:63 | p | provenance | | nodes -| test.cpp:17:13:17:18 | (void *)... | semmle.label | (void *)... | +| test.cpp:17:13:17:18 | new | semmle.label | new | | test.cpp:17:13:17:18 | new | semmle.label | new | | test.cpp:18:21:18:47 | p | semmle.label | p | -| test.cpp:22:13:22:26 | (void *)... | semmle.label | (void *)... | +| test.cpp:22:13:22:26 | new | semmle.label | new | | test.cpp:22:13:22:26 | new | semmle.label | new | | test.cpp:23:12:23:30 | p | semmle.label | p | -| test.cpp:27:13:27:18 | (void *)... | semmle.label | (void *)... | +| test.cpp:27:13:27:18 | new | semmle.label | new | | test.cpp:27:13:27:18 | new | semmle.label | new | | test.cpp:28:25:28:55 | p | semmle.label | p | -| test.cpp:32:13:32:30 | (void *)... | semmle.label | (void *)... | +| test.cpp:32:13:32:30 | new | semmle.label | new | | test.cpp:32:13:32:30 | new | semmle.label | new | | test.cpp:33:12:33:30 | p | semmle.label | p | | test.cpp:47:21:47:36 | new | semmle.label | new | | test.cpp:47:21:47:36 | new | semmle.label | new | | test.cpp:48:22:48:55 | p | semmle.label | p | -| test.cpp:66:15:66:21 | (Animal *)... | semmle.label | (Animal *)... | +| test.cpp:66:15:66:21 | new | semmle.label | new | | test.cpp:66:15:66:21 | new | semmle.label | new | | test.cpp:67:12:67:31 | a | semmle.label | a | -| test.cpp:76:15:76:21 | (Animal *)... | semmle.label | (Animal *)... | +| test.cpp:76:15:76:21 | new | semmle.label | new | | test.cpp:76:15:76:21 | new | semmle.label | new | | test.cpp:77:12:77:31 | a | semmle.label | a | | test.cpp:83:5:83:15 | ... = ... | semmle.label | ... = ... | @@ -88,19 +88,19 @@ nodes | test.cpp:168:5:168:15 | ... = ... | semmle.label | ... = ... | | test.cpp:168:9:168:15 | new | semmle.label | new | | test.cpp:171:14:171:33 | a | semmle.label | a | -| test.cpp:179:15:179:24 | (void *)... | semmle.label | (void *)... | +| test.cpp:179:15:179:24 | new | semmle.label | new | | test.cpp:179:15:179:24 | new | semmle.label | new | | test.cpp:181:15:181:25 | u64 | semmle.label | u64 | -| test.cpp:187:15:187:24 | (void *)... | semmle.label | (void *)... | +| test.cpp:187:15:187:24 | new | semmle.label | new | | test.cpp:187:15:187:24 | new | semmle.label | new | | test.cpp:189:25:189:45 | u64 | semmle.label | u64 | -| test.cpp:207:14:207:26 | (void *)... | semmle.label | (void *)... | +| test.cpp:207:14:207:26 | new | semmle.label | new | | test.cpp:207:14:207:26 | new | semmle.label | new | | test.cpp:209:17:209:28 | si | semmle.label | si | -| test.cpp:217:13:217:18 | (void *)... | semmle.label | (void *)... | +| test.cpp:217:13:217:18 | new | semmle.label | new | | test.cpp:217:13:217:18 | new | semmle.label | new | | test.cpp:218:30:218:65 | p | semmle.label | p | -| test.cpp:226:13:226:18 | (void *)... | semmle.label | (void *)... | +| test.cpp:226:13:226:18 | new | semmle.label | new | | test.cpp:226:13:226:18 | new | semmle.label | new | | test.cpp:227:29:227:63 | p | semmle.label | p | subpaths diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs index 473741f2c660..cda4610a217f 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs @@ -146,14 +146,9 @@ private void DoAnalyseReferenceAssembly(PortableExecutableReference r) * still be correct. */ - // compilation.Clone() reduces memory footprint by allowing the symbols - // in c to be garbage collected. - Compilation c = compilation.Clone(); - - - if (c.GetAssemblyOrModuleSymbol(r) is IAssemblySymbol assembly) + if (compilation.GetAssemblyOrModuleSymbol(r) is IAssemblySymbol assembly) { - var cx = new Context(extractor, c, trapWriter, new AssemblyScope(assembly, assemblyPath), addAssemblyTrapPrefix); + var cx = new Context(extractor, compilation, trapWriter, new AssemblyScope(assembly, assemblyPath), addAssemblyTrapPrefix); foreach (var module in assembly.Modules) { @@ -196,7 +191,7 @@ private void DoExtractTree(SyntaxTree tree) if (!upToDate) { - var cx = new Context(extractor, compilation.Clone(), trapWriter, new SourceScope(tree), addAssemblyTrapPrefix); + var cx = new Context(extractor, compilation, trapWriter, new SourceScope(tree), addAssemblyTrapPrefix); // Ensure that the file itself is populated in case the source file is totally empty var root = tree.GetRoot(); Entities.File.Create(cx, root.SyntaxTree.FilePath); @@ -236,7 +231,7 @@ private void DoAnalyseCompilation() var assembly = compilation.Assembly; var trapWriter = transformedAssemblyPath.CreateTrapWriter(Logger, options.TrapCompression, discardDuplicates: false); compilationTrapFile = trapWriter; // Dispose later - var cx = new Context(extractor, compilation.Clone(), trapWriter, new AssemblyScope(assembly, assemblyPath), addAssemblyTrapPrefix); + var cx = new Context(extractor, compilation, trapWriter, new AssemblyScope(assembly, assemblyPath), addAssemblyTrapPrefix); compilationEntity = Entities.Compilation.Create(cx); diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/go.mod b/go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/go.mod index 64e39913d211..babe05def2b2 100644 --- a/go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/go.mod +++ b/go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/go.mod @@ -1,7 +1,5 @@ go 1.14 -require ( - golang.org/x/net v0.0.0-20200505041828-1ed23360d12c -) +require golang.org/x/net v0.23.0 module bazelsample diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/go.sum b/go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/go.sum index 6c5ffa613d0a..a8e1b59ae4b1 100644 --- a/go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/go.sum +++ b/go/ql/integration-tests/all-platforms/go/bazel-sample-1/src/go.sum @@ -1,7 +1,45 @@ +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/go.mod b/go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/go.mod index 64e39913d211..babe05def2b2 100644 --- a/go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/go.mod +++ b/go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/go.mod @@ -1,7 +1,5 @@ go 1.14 -require ( - golang.org/x/net v0.0.0-20200505041828-1ed23360d12c -) +require golang.org/x/net v0.23.0 module bazelsample diff --git a/go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/go.sum b/go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/go.sum index 6c5ffa613d0a..a8e1b59ae4b1 100644 --- a/go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/go.sum +++ b/go/ql/integration-tests/all-platforms/go/bazel-sample-2/src/go.sum @@ -1,7 +1,45 @@ +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-sample/src/go.mod b/go/ql/integration-tests/all-platforms/go/go-mod-sample/src/go.mod index 9fdbb1e4aba1..8d994ee3c125 100644 --- a/go/ql/integration-tests/all-platforms/go/go-mod-sample/src/go.mod +++ b/go/ql/integration-tests/all-platforms/go/go-mod-sample/src/go.mod @@ -1,7 +1,5 @@ go 1.14 -require ( - golang.org/x/net v0.0.0-20200505041828-1ed23360d12c -) +require golang.org/x/net v0.23.0 module makesample diff --git a/go/ql/integration-tests/all-platforms/go/go-mod-sample/src/go.sum b/go/ql/integration-tests/all-platforms/go/go-mod-sample/src/go.sum index 6c5ffa613d0a..a8e1b59ae4b1 100644 --- a/go/ql/integration-tests/all-platforms/go/go-mod-sample/src/go.sum +++ b/go/ql/integration-tests/all-platforms/go/go-mod-sample/src/go.sum @@ -1,7 +1,45 @@ +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/integration-tests/all-platforms/go/make-sample/src/go.mod b/go/ql/integration-tests/all-platforms/go/make-sample/src/go.mod index 9fdbb1e4aba1..8d994ee3c125 100644 --- a/go/ql/integration-tests/all-platforms/go/make-sample/src/go.mod +++ b/go/ql/integration-tests/all-platforms/go/make-sample/src/go.mod @@ -1,7 +1,5 @@ go 1.14 -require ( - golang.org/x/net v0.0.0-20200505041828-1ed23360d12c -) +require golang.org/x/net v0.23.0 module makesample diff --git a/go/ql/integration-tests/all-platforms/go/make-sample/src/go.sum b/go/ql/integration-tests/all-platforms/go/make-sample/src/go.sum index 6c5ffa613d0a..a8e1b59ae4b1 100644 --- a/go/ql/integration-tests/all-platforms/go/make-sample/src/go.sum +++ b/go/ql/integration-tests/all-platforms/go/make-sample/src/go.sum @@ -1,7 +1,45 @@ +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.mod b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.mod index 40a3b330c385..b4ed08ff30be 100644 --- a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.mod +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.mod @@ -1,5 +1,7 @@ go 1.22.0 -require golang.org/x/net v0.0.0-20200505041828-1ed23360d12c +require golang.org/x/net v0.23.0 + +require golang.org/x/sys v0.18.0 // indirect module subdir diff --git a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.sum b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.sum index 6c5ffa613d0a..98d0ad505a69 100644 --- a/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.sum +++ b/go/ql/integration-tests/all-platforms/go/mixed-layout/src/workspace/subdir/go.sum @@ -1,7 +1,4 @@ -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/go.mod b/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/go.mod index e217b3613a60..c7060dfa0de9 100644 --- a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/go.mod +++ b/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/go.mod @@ -1,5 +1,5 @@ go 1.14 -require golang.org/x/net v0.0.0-20200505041828-1ed23360d12c +require golang.org/x/net v0.23.0 module subdir diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/go.sum b/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/go.sum index 6c5ffa613d0a..a8e1b59ae4b1 100644 --- a/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/go.sum +++ b/go/ql/integration-tests/all-platforms/go/single-go-mod-and-go-files-not-under-it/src/subdir/go.sum @@ -1,7 +1,45 @@ +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/go.mod b/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/go.mod index 4a38c9773d79..b6d7e456852b 100644 --- a/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/go.mod +++ b/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/go.mod @@ -1,5 +1,5 @@ go 1.14 -require golang.org/x/net v0.0.0-20200505041828-1ed23360d12c +require golang.org/x/net v0.23.0 module test diff --git a/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/go.sum b/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/go.sum index 6c5ffa613d0a..a8e1b59ae4b1 100644 --- a/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/go.sum +++ b/go/ql/integration-tests/all-platforms/go/single-go-mod-in-root/src/go.sum @@ -1,7 +1,45 @@ +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/go.mod b/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/go.mod index 147c51b83862..4b99f58c0eb0 100644 --- a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/go.mod +++ b/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/go.mod @@ -1,5 +1,5 @@ go 1.14 -require golang.org/x/net v0.0.0-20200505041828-1ed23360d12c +require golang.org/x/net v0.23.0 module subdir1 diff --git a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/go.sum b/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/go.sum index 6c5ffa613d0a..a8e1b59ae4b1 100644 --- a/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/go.sum +++ b/go/ql/integration-tests/all-platforms/go/single-go-work-not-in-root/src/modules/subdir1/go.sum @@ -1,7 +1,45 @@ +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/go.mod b/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/go.mod index 4a38c9773d79..b6d7e456852b 100644 --- a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/go.mod +++ b/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/go.mod @@ -1,5 +1,5 @@ go 1.14 -require golang.org/x/net v0.0.0-20200505041828-1ed23360d12c +require golang.org/x/net v0.23.0 module test diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/go.sum b/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/go.sum index 6c5ffa613d0a..a8e1b59ae4b1 100644 --- a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/go.sum +++ b/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/go.sum @@ -1,7 +1,45 @@ +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.mod b/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.mod index 147c51b83862..4b99f58c0eb0 100644 --- a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.mod +++ b/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.mod @@ -1,5 +1,5 @@ go 1.14 -require golang.org/x/net v0.0.0-20200505041828-1ed23360d12c +require golang.org/x/net v0.23.0 module subdir1 diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.sum b/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.sum index 6c5ffa613d0a..a8e1b59ae4b1 100644 --- a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.sum +++ b/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-none-in-root/src/subdir0/subdir1/go.sum @@ -1,7 +1,45 @@ +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/go.mod b/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/go.mod index 944de0f05b06..284b506c63fa 100644 --- a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/go.mod +++ b/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/go.mod @@ -1,5 +1,5 @@ go 1.14 -require golang.org/x/net v0.0.0-20200505041828-1ed23360d12c +require golang.org/x/net v0.23.0 module main diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/go.sum b/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/go.sum index 6c5ffa613d0a..a8e1b59ae4b1 100644 --- a/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/go.sum +++ b/go/ql/integration-tests/all-platforms/go/two-go-mods-nested-one-in-root/src/go.sum @@ -1,7 +1,45 @@ +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/go.mod b/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/go.mod index 147c51b83862..4b99f58c0eb0 100644 --- a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/go.mod +++ b/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/go.mod @@ -1,5 +1,5 @@ go 1.14 -require golang.org/x/net v0.0.0-20200505041828-1ed23360d12c +require golang.org/x/net v0.23.0 module subdir1 diff --git a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/go.sum b/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/go.sum index 6c5ffa613d0a..a8e1b59ae4b1 100644 --- a/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/go.sum +++ b/go/ql/integration-tests/all-platforms/go/two-go-mods-one-failure/src/subdir1/go.sum @@ -1,7 +1,45 @@ +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c h1:zJ0mtu4jCalhKg6Oaukv6iIkb+cOvDrajDH9DH46Q4M= -golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go/ql/lib/semmle/go/security/IncorrectIntegerConversionLib.qll b/go/ql/lib/semmle/go/security/IncorrectIntegerConversionLib.qll index df417397b138..a87d72b32f68 100644 --- a/go/ql/lib/semmle/go/security/IncorrectIntegerConversionLib.qll +++ b/go/ql/lib/semmle/go/security/IncorrectIntegerConversionLib.qll @@ -258,13 +258,14 @@ private class MaxValueState extends TMaxValueState { * A node that blocks some flow states and transforms some others as they flow * through it. */ -abstract class BarrierFlowStateTransformer extends DataFlow::Node { +abstract class FlowStateTransformer extends DataFlow::Node { /** - * Holds if this should be a barrier for `flowstate`. + * Holds if this should be a barrier for a flow state with bit size `bitSize` + * and architecture bit size `architectureBitSize`. * * This includes flow states which are transformed into other flow states. */ - abstract predicate barrierFor(MaxValueState flowstate); + abstract predicate barrierFor(int bitSize, int architectureBitSize); /** * Gets the flow state that `flowstate` is transformed into. @@ -275,7 +276,20 @@ abstract class BarrierFlowStateTransformer extends DataFlow::Node { * transform(transform(x)) = transform(x) * ``` */ - abstract MaxValueState transform(MaxValueState flowstate); + MaxValueState transform(MaxValueState state) { + this.barrierFor(state.getBitSize(), state.getSinkBitSize()) and + result.getBitSize() = + max(int bitsize | + bitsize = validBitSize() and + bitsize < state.getBitSize() and + not this.barrierFor(bitsize, state.getSinkBitSize()) + ) and + ( + result.getArchitectureBitSize() = state.getArchitectureBitSize() + or + state.architectureBitSizeUnknown() and result.architectureBitSizeUnknown() + ) + } } private predicate upperBoundCheckGuard(DataFlow::Node g, Expr e, boolean branch) { @@ -372,31 +386,69 @@ class UpperBoundCheckGuard extends DataFlow::RelationalComparisonNode { * for all flow states and would not transform any flow states, thus * effectively blocking them. */ -class UpperBoundCheck extends BarrierFlowStateTransformer { +class UpperBoundCheck extends FlowStateTransformer { UpperBoundCheckGuard g; UpperBoundCheck() { this = DataFlow::BarrierGuard::getABarrierNodeForGuard(g) } - override predicate barrierFor(MaxValueState flowstate) { - g.isBoundFor(flowstate.getBitSize(), flowstate.getSinkBitSize()) + override predicate barrierFor(int bitSize, int architectureBitSize) { + g.isBoundFor(bitSize, architectureBitSize) } +} - override MaxValueState transform(MaxValueState state) { - this.barrierFor(state) and - result.getBitSize() = - max(int bitsize | - bitsize = validBitSize() and - bitsize < state.getBitSize() and - not g.isBoundFor(bitsize, state.getSinkBitSize()) - ) and - ( - result.getArchitectureBitSize() = state.getArchitectureBitSize() - or - state.architectureBitSizeUnknown() and result.architectureBitSizeUnknown() +private predicate integerTypeBound(IntegerType it, int bitSize, int architectureBitSize) { + bitSize = validBitSize() and + architectureBitSize = [32, 64] and + exists(int offset | if it instanceof SignedIntegerType then offset = 1 else offset = 0 | + if it instanceof IntType or it instanceof UintType + then bitSize >= architectureBitSize - offset + else bitSize >= it.getSize() - offset + ) +} + +/** + * An expression which a type assertion guarantees will have a particular + * integer type. + * + * If this is a checked type expression then this value will only be used if + * the type assertion succeeded. If it is not checked then there will be a + * run-time panic if the type assertion fails, so we can assume it succeeded. + */ +class TypeAssertionCheck extends DataFlow::ExprNode, FlowStateTransformer { + IntegerType it; + + TypeAssertionCheck() { + exists(TypeAssertExpr tae | + this = DataFlow::exprNode(tae.getExpr()) and + it = tae.getTypeExpr().getType() + ) + } + + override predicate barrierFor(int bitSize, int architectureBitSize) { + integerTypeBound(it, bitSize, architectureBitSize) + } +} + +/** + * The implicit definition of a variable with integer type for a case clause of + * a type switch statement which declares a variable in its guard, which has + * effectively had a checked type assertion. + */ +class TypeSwitchVarFlowStateTransformer extends DataFlow::SsaNode, FlowStateTransformer { + IntegerType it; + + TypeSwitchVarFlowStateTransformer() { + exists(IR::TypeSwitchImplicitVariableInstruction insn, LocalVariable lv | insn.writes(lv, _) | + this.getSourceVariable() = lv and + it = lv.getType() ) } + + override predicate barrierFor(int bitSize, int architectureBitSize) { + integerTypeBound(it, bitSize, architectureBitSize) + } } /** @@ -497,7 +549,10 @@ private module ConversionWithoutBoundsCheckConfig implements DataFlow::StateConf predicate isBarrier(DataFlow::Node node, FlowState state) { // Safely guarded by a barrier guard. - exists(BarrierFlowStateTransformer bfst | node = bfst and bfst.barrierFor(state)) + exists(FlowStateTransformer fst | + node = fst and + fst.barrierFor(state.getBitSize(), state.getSinkBitSize()) + ) or // When there is a flow from a source to a sink, do not allow the flow to // continue to a further sink. @@ -507,8 +562,8 @@ private module ConversionWithoutBoundsCheckConfig implements DataFlow::StateConf predicate isAdditionalFlowStep( DataFlow::Node node1, FlowState state1, DataFlow::Node node2, FlowState state2 ) { - // Create additional flow steps for `BarrierFlowStateTransformer`s - state2 = node2.(BarrierFlowStateTransformer).transform(state1) and + // Create additional flow steps for `FlowStateTransformer`s + state2 = node2.(FlowStateTransformer).transform(state1) and DataFlow::simpleLocalFlowStep(node1, node2, _) } } diff --git a/go/ql/src/change-notes/2024-04-17-incorrect-integer-conversion-barriers.md b/go/ql/src/change-notes/2024-04-17-incorrect-integer-conversion-barriers.md new file mode 100644 index 000000000000..7453f2bef5c5 --- /dev/null +++ b/go/ql/src/change-notes/2024-04-17-incorrect-integer-conversion-barriers.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added some more barriers to flow for `go/incorrect-integer-conversion` to reduce false positives, especially around type switches. diff --git a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.go b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.go index 138058866e11..7927a5fe252c 100644 --- a/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.go +++ b/go/ql/test/query-tests/Security/CWE-681/IncorrectIntegerConversion.go @@ -482,19 +482,61 @@ func parsePositiveInt2(value string) (int, error) { return int(i64), nil } -func typeAssertion(s string) { - n, err := strconv.ParseInt(s, 10, 0) - if err == nil { - var itf interface{} = n - i32 := itf.(int32) - println(i32) - } - -} - func dealWithArchSizeCorrectly(s string) uint { if i, err := strconv.ParseUint(s, 10, 64); err == nil && i < math.MaxUint { return uint(i) } return 0 } + +func typeSwitch1(s string) { + i64, _ := strconv.ParseInt(s, 10, 64) + var input any = i64 + switch v := input.(type) { + case int16, string: + if _, ok := input.(string); ok { + return + } + _ = int16(v.(int16)) + _ = int8(v.(int16)) // $ hasValueFlow="type assertion" + case int32: + _ = int32(v) + _ = int8(v) // $ hasValueFlow="v" + case int64: + _ = int8(v) // $ hasValueFlow="v" + default: + _ = int8(v.(int64)) // $ hasValueFlow="type assertion" + } +} + +func typeSwitch2(s string) { + i64, _ := strconv.ParseInt(s, 10, 64) + var input any = i64 + switch input.(type) { + case int16, string: + if _, ok := input.(string); ok { + return + } + _ = int16(input.(int16)) + _ = int8(input.(int16)) // $ hasValueFlow="type assertion" + case int32: + _ = int32(input.(int32)) + _ = int8(input.(int32)) // $ hasValueFlow="type assertion" + case int64: + _ = int8(input.(int64)) // $ hasValueFlow="type assertion" + default: + _ = int8(input.(int64)) // $ hasValueFlow="type assertion" + } +} + +func checkedTypeAssertion(s string) { + i64, _ := strconv.ParseInt(s, 10, 64) + var input any = i64 + if v, ok := input.(int16); ok { + // Need to account for the fact that within this case clause, v is an int16 + _ = int16(v) + _ = int8(v) // $ hasValueFlow="v" + } else if v, ok := input.(int32); ok { + _ = int16(v) // $ hasValueFlow="v" + } +} diff --git a/java/ql/lib/semmle/code/java/os/OSCheck.qll b/java/ql/lib/semmle/code/java/os/OSCheck.qll index 19dd15b0b894..e3b3e56f72ce 100644 --- a/java/ql/lib/semmle/code/java/os/OSCheck.qll +++ b/java/ql/lib/semmle/code/java/os/OSCheck.qll @@ -37,11 +37,17 @@ abstract class IsUnixGuard extends Guard { } */ abstract class IsSpecificUnixVariant extends Guard { } +private DataFlow::Node osNameFlow() { + result.asExpr() = getSystemProperty("os.name") + or + TaintTracking::localTaintStep(osNameFlow(), result) +} + /** * Holds when `ma` compares the current OS against the string constant `osString`. */ private predicate isOsFromSystemProp(MethodCall ma, string osString) { - TaintTracking::localExprTaint(getSystemProperty("os.name"), ma.getQualifier()) and // Call from System.getProperty (or equivalent) to some partial match method + osNameFlow().asExpr() = ma.getQualifier() and // Call from System.getProperty (or equivalent) to some partial match method exists(StringPartialMatchMethod m, CompileTimeConstantExpr matchedStringConstant | m = ma.getMethod() and matchedStringConstant.getStringValue().toLowerCase() = osString diff --git a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll index 803b4ac4c82d..9e866424c619 100644 --- a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll +++ b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll @@ -7,6 +7,7 @@ import javascript private import semmle.javascript.dataflow.internal.FlowSteps as FlowSteps +private import semmle.javascript.dataflow.internal.PreCallGraphStep private import internal.CachedStages /** @@ -782,6 +783,13 @@ module API { rhs = m.getAnExportedValue(prop) ) or + // In general, turn store steps into member steps for def-nodes + exists(string prop | + PreCallGraphStep::storeStep(rhs, pred, prop) and + lbl = Label::member(prop) and + not DataFlow::PseudoProperties::isPseudoProperty(prop) + ) + or exists(DataFlow::FunctionNode fn | fn = pred and lbl = Label::return() @@ -947,7 +955,6 @@ module API { (base instanceof TNonModuleDef or base instanceof TUse) ) or - // invocations exists(DataFlow::SourceNode src, DataFlow::SourceNode pred | use(base, src) and pred = trackUseNode(src) | @@ -968,6 +975,13 @@ module API { or ref = cls.getAClassReference().getAnInstantiation() ) + or + exists(string prop | + PreCallGraphStep::loadStep(pred.getALocalUse(), ref, prop) and + lbl = Label::member(prop) and + // avoid generating member edges like "$arrayElement$" + not DataFlow::PseudoProperties::isPseudoProperty(prop) + ) ) or exists(DataFlow::Node def, DataFlow::FunctionNode fn | @@ -1535,7 +1549,9 @@ module API { prop = any(CanonicalName c).getName() or prop = any(DataFlow::PropRef p).getPropertyName() or exists(Impl::MkTypeUse(_, prop)) or - exists(any(Module m).getAnExportedValue(prop)) + exists(any(Module m).getAnExportedValue(prop)) or + PreCallGraphStep::loadStep(_, _, prop) or + PreCallGraphStep::storeStep(_, _, prop) } or MkLabelUnknownMember() or MkLabelParameter(int i) { diff --git a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll index 1bdfec7ffe9d..cc84fb87324d 100644 --- a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll +++ b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll @@ -510,6 +510,9 @@ class ExportNamedDeclaration extends ExportDeclaration, @export_named_declaratio or exists(ReExportDeclaration red | red = this | result = red.getReExportedES2015Module().getAnExport().getSourceNode(spec.getLocalName()) + or + spec instanceof ExportNamespaceSpecifier and + result = DataFlow::valueNode(spec) ) ) } @@ -524,6 +527,19 @@ class ExportNamedDeclaration extends ExportDeclaration, @export_named_declaratio ExportSpecifier getASpecifier() { result = this.getSpecifier(_) } } +private import semmle.javascript.dataflow.internal.PreCallGraphStep + +private class ExportNamespaceStep extends PreCallGraphStep { + override predicate storeStep(DataFlow::Node pred, DataFlow::SourceNode succ, string prop) { + exists(ExportNamedDeclaration exprt, ExportNamespaceSpecifier spec | + spec = exprt.getASpecifier() and + pred = + exprt.(ReExportDeclaration).getReExportedES2015Module().getAnExport().getSourceNode(prop) and + succ = DataFlow::valueNode(spec) + ) + } +} + /** * An export declaration with the `type` modifier. */ diff --git a/javascript/ql/lib/semmle/javascript/dataflow/Configuration.qll b/javascript/ql/lib/semmle/javascript/dataflow/Configuration.qll index fd056277b331..50183c656b27 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/Configuration.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/Configuration.qll @@ -704,6 +704,10 @@ module SharedFlowStep { * For use with load/store steps in `DataFlow::SharedFlowStep` and TypeTracking. */ module PseudoProperties { + /** Holds if `s` is a pseudo-property. */ + bindingset[s] + predicate isPseudoProperty(string s) { s.matches("$%$") } + bindingset[s] private string pseudoProperty(string s) { result = "$" + s + "$" } diff --git a/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll b/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll index c273053210df..de103ef1c903 100644 --- a/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll +++ b/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll @@ -322,6 +322,7 @@ module SourceNode { astNode instanceof FunctionBindExpr or astNode instanceof DynamicImportExpr or astNode instanceof ImportSpecifier or + astNode instanceof ExportNamespaceSpecifier or astNode instanceof ImportMetaExpr or astNode instanceof TaggedTemplateExpr or astNode instanceof Templating::PipeRefExpr or diff --git a/javascript/ql/test/ApiGraphs/custom-use-steps/VerifyAssertions.expected b/javascript/ql/test/ApiGraphs/custom-use-steps/VerifyAssertions.expected new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/javascript/ql/test/ApiGraphs/custom-use-steps/VerifyAssertions.ql b/javascript/ql/test/ApiGraphs/custom-use-steps/VerifyAssertions.ql new file mode 100644 index 000000000000..3c51eecf21f0 --- /dev/null +++ b/javascript/ql/test/ApiGraphs/custom-use-steps/VerifyAssertions.ql @@ -0,0 +1,13 @@ +import ApiGraphs.VerifyAssertions +private import semmle.javascript.dataflow.internal.PreCallGraphStep + +class CustomUseStep extends PreCallGraphStep { + override predicate loadStep(DataFlow::Node pred, DataFlow::Node succ, string prop) { + exists(DataFlow::CallNode call | + call.getCalleeName() = "customLoad" and + pred = call.getArgument(0) and + succ = call and + prop = call.getArgument(1).getStringValue() + ) + } +} diff --git a/javascript/ql/test/ApiGraphs/custom-use-steps/index.js b/javascript/ql/test/ApiGraphs/custom-use-steps/index.js new file mode 100644 index 000000000000..6302c9f2e8cf --- /dev/null +++ b/javascript/ql/test/ApiGraphs/custom-use-steps/index.js @@ -0,0 +1,4 @@ +const foo = require("foo"); + +foo.bar; // use=moduleImport("foo").getMember("exports").getMember("bar") +customLoad(foo, "baz") // use=moduleImport("foo").getMember("exports").getMember("baz") diff --git a/javascript/ql/test/ApiGraphs/custom-use-steps/package.json b/javascript/ql/test/ApiGraphs/custom-use-steps/package.json new file mode 100644 index 000000000000..71206e92e6bf --- /dev/null +++ b/javascript/ql/test/ApiGraphs/custom-use-steps/package.json @@ -0,0 +1,3 @@ +{ + "name": "custom-use-steps" +} diff --git a/javascript/ql/test/ApiGraphs/reexport/index.js b/javascript/ql/test/ApiGraphs/reexport/index.js index 2562008211b4..fced05f752ec 100644 --- a/javascript/ql/test/ApiGraphs/reexport/index.js +++ b/javascript/ql/test/ApiGraphs/reexport/index.js @@ -4,5 +4,6 @@ module.exports = { impl, util: require("./lib/utils"), other: require("./lib/stuff"), - util2: require("./lib/utils2") + util2: require("./lib/utils2"), + esmodule: require("./lib/esmodule-reexport"), }; diff --git a/javascript/ql/test/ApiGraphs/reexport/lib/esmodule-reexport.js b/javascript/ql/test/ApiGraphs/reexport/lib/esmodule-reexport.js new file mode 100644 index 000000000000..33f7f79552c2 --- /dev/null +++ b/javascript/ql/test/ApiGraphs/reexport/lib/esmodule-reexport.js @@ -0,0 +1,2 @@ +export * from "./esmodule-reexported1"; +export * as lib2 from "./esmodule-reexported2"; diff --git a/javascript/ql/test/ApiGraphs/reexport/lib/esmodule-reexported1.js b/javascript/ql/test/ApiGraphs/reexport/lib/esmodule-reexported1.js new file mode 100644 index 000000000000..06907a8c73d3 --- /dev/null +++ b/javascript/ql/test/ApiGraphs/reexport/lib/esmodule-reexported1.js @@ -0,0 +1 @@ +export function one() {} /* def=moduleImport("reexport").getMember("exports").getMember("esmodule").getMember("one") */ diff --git a/javascript/ql/test/ApiGraphs/reexport/lib/esmodule-reexported2.js b/javascript/ql/test/ApiGraphs/reexport/lib/esmodule-reexported2.js new file mode 100644 index 000000000000..515369973653 --- /dev/null +++ b/javascript/ql/test/ApiGraphs/reexport/lib/esmodule-reexported2.js @@ -0,0 +1 @@ +export function two() {} /* def=moduleImport("reexport").getMember("exports").getMember("esmodule").getMember("lib2").getMember("two") */ diff --git a/javascript/ql/test/library-tests/Modules/tests.expected b/javascript/ql/test/library-tests/Modules/tests.expected index f0211d1b049b..a594fdcf1104 100644 --- a/javascript/ql/test/library-tests/Modules/tests.expected +++ b/javascript/ql/test/library-tests/Modules/tests.expected @@ -81,6 +81,7 @@ test_Module_exports | export-in-mjs.mjs:1:1:1:34 | | exported_from_mjs | export-in-mjs.mjs:1:32:1:33 | 42 | | f.ts:1:1:6:0 | | foo | f.ts:5:8:5:24 | function foo() {} | | m/c.js:1:1:6:0 | | h | b.js:5:10:5:10 | f | +| reExportNamespace.js:1:1:2:0 | | ns | reExportNamespace.js:1:8:1:14 | * as ns | | tst.html:4:23:8:0 | | y | tst.html:7:20:7:21 | 42 | test_NamedImportSpecifier | d.js:1:10:1:21 | default as g | @@ -149,4 +150,5 @@ test_getSourceNode | export-in-mjs.mjs:1:1:1:34 | export ... s = 42; | exported_from_mjs | export-in-mjs.mjs:1:32:1:33 | 42 | | f.ts:5:1:5:24 | export ... oo() {} | foo | f.ts:5:8:5:24 | function foo() {} | | m/c.js:5:1:5:30 | export ... '../b'; | h | b.js:5:10:5:10 | f | +| reExportNamespace.js:1:1:1:26 | export ... "./a"; | ns | reExportNamespace.js:1:8:1:14 | * as ns | | tst.html:7:3:7:22 | export const y = 42; | y | tst.html:7:20:7:21 | 42 | diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index d445fa6237ee..560ea29e96c3 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -4469,6 +4469,12 @@ module MakeImpl Lang> { ) } + bindingset[par, ret] + pragma[inline_late] + private predicate summaryCtxStepStar(PathNodeImpl par, PathNodeImpl ret) { + summaryCtxStep*(par) = ret + } + /** * Holds if `(arg, par, ret, out)` forms a subpath-tuple. * @@ -4483,7 +4489,7 @@ module MakeImpl Lang> { any(PathNodeImpl n | localStepToHidden*(ret, n)), out) and not par.isHidden() and not ret.isHidden() and - ret = summaryCtxStep*(par) + summaryCtxStepStar(par, ret) or // wrapped subpath using hidden nodes, e.g. flow through a callback inside // a summarized callable