mirror of
https://github.com/github/codeql.git
synced 2026-04-19 14:04:09 +02:00
Merge branch 'main' into post-release-prep/codeql-cli-2.15.1
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
class BuiltinType extends @builtintype {
|
||||
string toString() { none() }
|
||||
}
|
||||
|
||||
from BuiltinType type, string name, int kind, int kind_new, int size, int sign, int alignment
|
||||
where
|
||||
builtintypes(type, name, kind, size, sign, alignment) and
|
||||
if
|
||||
type instanceof @fp16 or
|
||||
type instanceof @std_bfloat16 or
|
||||
type instanceof @std_float16 or
|
||||
type instanceof @complex_std_float32 or
|
||||
type instanceof @complex_float32x or
|
||||
type instanceof @complex_std_float64 or
|
||||
type instanceof @complex_float64x or
|
||||
type instanceof @complex_std_float128
|
||||
then kind_new = 2
|
||||
else kind_new = kind
|
||||
select type, name, kind_new, size, sign, alignment
|
||||
2221
cpp/downgrades/5b388693c66db1e7dc2e76a90aa67a2b6eb74f0f/old.dbscheme
Normal file
2221
cpp/downgrades/5b388693c66db1e7dc2e76a90aa67a2b6eb74f0f/old.dbscheme
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,3 @@
|
||||
description: Introduce new floating-point types from C23 and C++23
|
||||
compatibility: backwards
|
||||
builtintypes.rel: run builtintypes.qlo
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
category: minorAnalysis
|
||||
---
|
||||
* Added support for new floating-point types in C23 and C++23.
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
category: feature
|
||||
---
|
||||
* Added a new class `AdditionalCallTarget` for specifying additional call targets.
|
||||
@@ -819,6 +819,30 @@ private predicate floatingPointTypeMapping(
|
||||
or
|
||||
// _Complex _Float16
|
||||
kind = 53 and base = 2 and domain = TComplexDomain() and realKind = 52 and extended = false
|
||||
or
|
||||
// __fp16
|
||||
kind = 54 and base = 2 and domain = TRealDomain() and realKind = 54 and extended = false
|
||||
or
|
||||
// __bf16
|
||||
kind = 55 and base = 2 and domain = TRealDomain() and realKind = 55 and extended = false
|
||||
or
|
||||
// std::float16_t
|
||||
kind = 56 and base = 2 and domain = TRealDomain() and realKind = 56 and extended = false
|
||||
or
|
||||
// _Complex _Float32
|
||||
kind = 57 and base = 2 and domain = TComplexDomain() and realKind = 45 and extended = false
|
||||
or
|
||||
// _Complex _Float32x
|
||||
kind = 58 and base = 2 and domain = TComplexDomain() and realKind = 46 and extended = true
|
||||
or
|
||||
// _Complex _Float64
|
||||
kind = 59 and base = 2 and domain = TComplexDomain() and realKind = 47 and extended = false
|
||||
or
|
||||
// _Complex _Float64x
|
||||
kind = 60 and base = 2 and domain = TComplexDomain() and realKind = 48 and extended = true
|
||||
or
|
||||
// _Complex _Float128
|
||||
kind = 61 and base = 2 and domain = TComplexDomain() and realKind = 49 and extended = false
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,9 +7,12 @@ private import DataFlowImplCommon as DataFlowImplCommon
|
||||
|
||||
/**
|
||||
* Gets a function that might be called by `call`.
|
||||
*
|
||||
* This predicate does not take additional call targets
|
||||
* from `AdditionalCallTarget` into account.
|
||||
*/
|
||||
cached
|
||||
DataFlowCallable viableCallable(DataFlowCall call) {
|
||||
DataFlowCallable defaultViableCallable(DataFlowCall call) {
|
||||
DataFlowImplCommon::forceCachingInSameStage() and
|
||||
result = call.getStaticCallTarget()
|
||||
or
|
||||
@@ -29,6 +32,17 @@ DataFlowCallable viableCallable(DataFlowCall call) {
|
||||
result = call.(VirtualDispatch::DataSensitiveCall).resolve()
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a function that might be called by `call`.
|
||||
*/
|
||||
cached
|
||||
DataFlowCallable viableCallable(DataFlowCall call) {
|
||||
result = defaultViableCallable(call)
|
||||
or
|
||||
// Additional call targets
|
||||
result = any(AdditionalCallTarget additional).viableTarget(call.getUnconvertedResultExpression())
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides virtual dispatch support compatible with the original
|
||||
* implementation of `semmle.code.cpp.security.TaintTracking`.
|
||||
|
||||
@@ -14,6 +14,7 @@ private import DataFlowPrivate
|
||||
private import ModelUtil
|
||||
private import SsaInternals as Ssa
|
||||
private import DataFlowImplCommon as DataFlowImplCommon
|
||||
private import codeql.util.Unit
|
||||
|
||||
/**
|
||||
* The IR dataflow graph consists of the following nodes:
|
||||
@@ -2237,3 +2238,43 @@ module InstructionBarrierGuard<instructionGuardChecksSig/3 instructionGuardCheck
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A unit class for adding additional call steps.
|
||||
*
|
||||
* Extend this class to add additional call steps to the data flow graph.
|
||||
*
|
||||
* For example, if the following subclass is added:
|
||||
* ```ql
|
||||
* class MyAdditionalCallTarget extends DataFlow::AdditionalCallTarget {
|
||||
* override Function viableTarget(Call call) {
|
||||
* call.getTarget().hasName("f") and
|
||||
* result.hasName("g")
|
||||
* }
|
||||
* }
|
||||
* ```
|
||||
* then flow from `source()` to `x` in `sink(x)` is reported in the following example:
|
||||
* ```cpp
|
||||
* void sink(int);
|
||||
* int source();
|
||||
* void f(int);
|
||||
*
|
||||
* void g(int x) {
|
||||
* sink(x);
|
||||
* }
|
||||
*
|
||||
* void test() {
|
||||
* int x = source();
|
||||
* f(x);
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* Note: To prevent reevaluation of cached dataflow-related predicates any
|
||||
* subclass of `AdditionalCallTarget` must be imported in all dataflow queries.
|
||||
*/
|
||||
class AdditionalCallTarget extends Unit {
|
||||
/**
|
||||
* Gets a viable target for `call`.
|
||||
*/
|
||||
abstract DataFlowCallable viableTarget(Call call);
|
||||
}
|
||||
|
||||
@@ -361,6 +361,12 @@ predicate ignoreLoad(Expr expr) {
|
||||
or
|
||||
expr instanceof FunctionAccess
|
||||
or
|
||||
// The load is duplicated from the operand.
|
||||
expr instanceof ParenthesisExpr
|
||||
or
|
||||
// The load is duplicated from the right operand.
|
||||
expr instanceof CommaExpr
|
||||
or
|
||||
expr.(PointerDereferenceExpr).getOperand().getFullyConverted().getType().getUnspecifiedType()
|
||||
instanceof FunctionPointerType
|
||||
or
|
||||
|
||||
@@ -648,19 +648,7 @@ abstract class TranslatedCrementOperation extends TranslatedNonConstantExpr {
|
||||
class TranslatedPrefixCrementOperation extends TranslatedCrementOperation {
|
||||
override PrefixCrementOperation expr;
|
||||
|
||||
override Instruction getResult() {
|
||||
if expr.isPRValueCategory()
|
||||
then
|
||||
// If this is C, then the result of a prefix crement is a prvalue for the
|
||||
// new value assigned to the operand. If this is C++, then the result is
|
||||
// an lvalue, but that lvalue is being loaded as part of this expression.
|
||||
// EDG doesn't mark this as a load.
|
||||
result = this.getInstruction(CrementOpTag())
|
||||
else
|
||||
// This is C++, where the result is an lvalue for the operand, and that
|
||||
// lvalue is not being loaded as part of this expression.
|
||||
result = this.getUnloadedOperand().getResult()
|
||||
}
|
||||
override Instruction getResult() { result = this.getUnloadedOperand().getResult() }
|
||||
}
|
||||
|
||||
class TranslatedPostfixCrementOperation extends TranslatedCrementOperation {
|
||||
@@ -1503,19 +1491,7 @@ class TranslatedAssignExpr extends TranslatedNonConstantExpr {
|
||||
result = this.getRightOperand().getFirstInstruction()
|
||||
}
|
||||
|
||||
final override Instruction getResult() {
|
||||
if expr.isPRValueCategory()
|
||||
then
|
||||
// If this is C, then the result of an assignment is a prvalue for the new
|
||||
// value assigned to the left operand. If this is C++, then the result is
|
||||
// an lvalue, but that lvalue is being loaded as part of this expression.
|
||||
// EDG doesn't mark this as a load.
|
||||
result = this.getRightOperand().getResult()
|
||||
else
|
||||
// This is C++, where the result is an lvalue for the left operand,
|
||||
// and that lvalue is not being loaded as part of this expression.
|
||||
result = this.getLeftOperand().getResult()
|
||||
}
|
||||
final override Instruction getResult() { result = this.getLeftOperand().getResult() }
|
||||
|
||||
final TranslatedExpr getLeftOperand() {
|
||||
result = getTranslatedExpr(expr.getLValue().getFullyConverted())
|
||||
@@ -1641,19 +1617,7 @@ class TranslatedAssignOperation extends TranslatedNonConstantExpr {
|
||||
result = this.getRightOperand().getFirstInstruction()
|
||||
}
|
||||
|
||||
final override Instruction getResult() {
|
||||
if expr.isPRValueCategory()
|
||||
then
|
||||
// If this is C, then the result of an assignment is a prvalue for the new
|
||||
// value assigned to the left operand. If this is C++, then the result is
|
||||
// an lvalue, but that lvalue is being loaded as part of this expression.
|
||||
// EDG doesn't mark this as a load.
|
||||
result = this.getStoredValue()
|
||||
else
|
||||
// This is C++, where the result is an lvalue for the left operand,
|
||||
// and that lvalue is not being loaded as part of this expression.
|
||||
result = this.getUnloadedLeftOperand().getResult()
|
||||
}
|
||||
final override Instruction getResult() { result = this.getUnloadedLeftOperand().getResult() }
|
||||
|
||||
final TranslatedExpr getUnloadedLeftOperand() {
|
||||
result = this.getLoadedLeftOperand().getOperand()
|
||||
@@ -2191,8 +2155,15 @@ abstract class TranslatedConditionalExpr extends TranslatedNonConstantExpr {
|
||||
not this.elseIsVoid() and tag = ConditionValueFalseStoreTag()
|
||||
) and
|
||||
opcode instanceof Opcode::Store and
|
||||
resultType = this.getResultType()
|
||||
(
|
||||
not expr.hasLValueToRValueConversion() and
|
||||
resultType = this.getResultType()
|
||||
or
|
||||
expr.hasLValueToRValueConversion() and
|
||||
resultType = getTypeForPRValue(expr.getType())
|
||||
)
|
||||
or
|
||||
not expr.hasLValueToRValueConversion() and
|
||||
tag = ConditionValueResultLoadTag() and
|
||||
opcode instanceof Opcode::Load and
|
||||
resultType = this.getResultType()
|
||||
@@ -2222,8 +2193,15 @@ abstract class TranslatedConditionalExpr extends TranslatedNonConstantExpr {
|
||||
)
|
||||
or
|
||||
tag = ConditionValueResultTempAddressTag() and
|
||||
result = this.getInstruction(ConditionValueResultLoadTag())
|
||||
(
|
||||
not expr.hasLValueToRValueConversion() and
|
||||
result = this.getInstruction(ConditionValueResultLoadTag())
|
||||
or
|
||||
expr.hasLValueToRValueConversion() and
|
||||
result = this.getParent().getChildSuccessor(this)
|
||||
)
|
||||
or
|
||||
not expr.hasLValueToRValueConversion() and
|
||||
tag = ConditionValueResultLoadTag() and
|
||||
result = this.getParent().getChildSuccessor(this)
|
||||
)
|
||||
@@ -2252,18 +2230,23 @@ abstract class TranslatedConditionalExpr extends TranslatedNonConstantExpr {
|
||||
result = this.getElse().getResult()
|
||||
)
|
||||
or
|
||||
not expr.hasLValueToRValueConversion() and
|
||||
tag = ConditionValueResultLoadTag() and
|
||||
(
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = this.getInstruction(ConditionValueResultTempAddressTag())
|
||||
)
|
||||
operandTag instanceof AddressOperandTag and
|
||||
result = this.getInstruction(ConditionValueResultTempAddressTag())
|
||||
)
|
||||
}
|
||||
|
||||
final override predicate hasTempVariable(TempVariableTag tag, CppType type) {
|
||||
not this.resultIsVoid() and
|
||||
tag = ConditionValueTempVar() and
|
||||
type = this.getResultType()
|
||||
(
|
||||
not expr.hasLValueToRValueConversion() and
|
||||
type = this.getResultType()
|
||||
or
|
||||
expr.hasLValueToRValueConversion() and
|
||||
type = getTypeForPRValue(expr.getType())
|
||||
)
|
||||
}
|
||||
|
||||
final override IRVariable getInstructionVariable(InstructionTag tag) {
|
||||
@@ -2278,7 +2261,13 @@ abstract class TranslatedConditionalExpr extends TranslatedNonConstantExpr {
|
||||
|
||||
final override Instruction getResult() {
|
||||
not this.resultIsVoid() and
|
||||
result = this.getInstruction(ConditionValueResultLoadTag())
|
||||
(
|
||||
expr.hasLValueToRValueConversion() and
|
||||
result = this.getInstruction(ConditionValueResultTempAddressTag())
|
||||
or
|
||||
not expr.hasLValueToRValueConversion() and
|
||||
result = this.getInstruction(ConditionValueResultLoadTag())
|
||||
)
|
||||
}
|
||||
|
||||
override Instruction getChildSuccessor(TranslatedElement child) {
|
||||
@@ -3237,11 +3226,9 @@ predicate exprNeedsCopyIfNotLoaded(Expr expr) {
|
||||
(
|
||||
expr instanceof AssignExpr
|
||||
or
|
||||
expr instanceof AssignOperation and
|
||||
not expr.isPRValueCategory() // is C++
|
||||
expr instanceof AssignOperation
|
||||
or
|
||||
expr instanceof PrefixCrementOperation and
|
||||
not expr.isPRValueCategory() // is C++
|
||||
expr instanceof PrefixCrementOperation
|
||||
or
|
||||
// Because the load is on the `e` in `e++`.
|
||||
expr instanceof PostfixCrementOperation
|
||||
|
||||
@@ -612,6 +612,14 @@ case @builtintype.kind of
|
||||
| 51 = @char8_t
|
||||
| 52 = @float16 // _Float16
|
||||
| 53 = @complex_float16 // _Complex _Float16
|
||||
| 54 = @fp16 // __fp16
|
||||
| 55 = @std_bfloat16 // __bf16
|
||||
| 56 = @std_float16 // std::float16_t
|
||||
| 57 = @complex_std_float32 // _Complex _Float32
|
||||
| 58 = @complex_float32x // _Complex _Float32x
|
||||
| 59 = @complex_std_float64 // _Complex _Float64
|
||||
| 60 = @complex_float64x // _Complex _Float64x
|
||||
| 61 = @complex_std_float128 // _Complex _Float128
|
||||
;
|
||||
|
||||
builtintypes(
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
description: Introduce new floating-point types from C23 and C++23
|
||||
compatibility: full
|
||||
@@ -763,7 +763,7 @@ StaticMemberAccess.cpp:
|
||||
# 7| ValueCategory = lvalue
|
||||
# 7| getRValue(): [VariableAccess] i
|
||||
# 7| Type = [IntType] int
|
||||
# 7| ValueCategory = prvalue
|
||||
# 7| ValueCategory = prvalue(load)
|
||||
# 7| getQualifier(): [VariableAccess] xref
|
||||
# 7| Type = [LValueReferenceType] X &
|
||||
# 7| ValueCategory = prvalue(load)
|
||||
@@ -1394,7 +1394,7 @@ union_etc.cpp:
|
||||
# 26| ValueCategory = lvalue
|
||||
# 26| getRValue(): [AssignExpr] ... = ...
|
||||
# 26| Type = [IntType] int
|
||||
# 26| ValueCategory = prvalue
|
||||
# 26| ValueCategory = prvalue(load)
|
||||
# 26| getLValue(): [ValueFieldAccess] e
|
||||
# 26| Type = [IntType] int
|
||||
# 26| ValueCategory = lvalue
|
||||
@@ -1406,7 +1406,7 @@ union_etc.cpp:
|
||||
# 26| ValueCategory = lvalue
|
||||
# 26| getRValue(): [AssignExpr] ... = ...
|
||||
# 26| Type = [IntType] int
|
||||
# 26| ValueCategory = prvalue
|
||||
# 26| ValueCategory = prvalue(load)
|
||||
# 26| getLValue(): [ValueFieldAccess] i
|
||||
# 26| Type = [IntType] int
|
||||
# 26| ValueCategory = lvalue
|
||||
|
||||
@@ -675,6 +675,7 @@
|
||||
| test.c:398:9:398:22 | CopyValue: ... , ... | positive strictlyPositive |
|
||||
| test.c:398:14:398:14 | Load: y | positive strictlyPositive |
|
||||
| test.c:398:14:398:19 | Add: ... += ... | positive strictlyPositive |
|
||||
| test.c:398:14:398:19 | Load: ... += ... | positive strictlyPositive |
|
||||
| test.c:398:14:398:19 | Store: ... += ... | positive strictlyPositive |
|
||||
| test.c:398:19:398:19 | Constant: (unsigned int)... | positive strictlyPositive |
|
||||
| test.c:398:22:398:22 | Load: y | positive strictlyPositive |
|
||||
|
||||
@@ -35,9 +35,7 @@ edges
|
||||
| test.cpp:136:9:136:16 | ... += ... | test.cpp:138:13:138:15 | arr |
|
||||
| test.cpp:143:18:143:21 | asdf | test.cpp:134:25:134:27 | arr |
|
||||
| test.cpp:143:18:143:21 | asdf | test.cpp:143:18:143:21 | asdf |
|
||||
| test.cpp:146:26:146:26 | p indirection | test.cpp:148:6:148:9 | * ... |
|
||||
| test.cpp:146:26:146:26 | p indirection | test.cpp:149:6:149:9 | * ... |
|
||||
| test.cpp:146:26:146:26 | p indirection | test.cpp:150:6:150:9 | * ... |
|
||||
| test.cpp:146:26:146:26 | p indirection | test.cpp:147:4:147:9 | -- ... |
|
||||
| test.cpp:156:12:156:14 | buf | test.cpp:156:12:156:18 | ... + ... |
|
||||
| test.cpp:156:12:156:18 | ... + ... | test.cpp:158:17:158:18 | & ... indirection |
|
||||
| test.cpp:158:17:158:18 | & ... indirection | test.cpp:146:26:146:26 | p indirection |
|
||||
@@ -124,9 +122,7 @@ nodes
|
||||
| test.cpp:143:18:143:21 | asdf | semmle.label | asdf |
|
||||
| test.cpp:143:18:143:21 | asdf | semmle.label | asdf |
|
||||
| test.cpp:146:26:146:26 | p indirection | semmle.label | p indirection |
|
||||
| test.cpp:148:6:148:9 | * ... | semmle.label | * ... |
|
||||
| test.cpp:149:6:149:9 | * ... | semmle.label | * ... |
|
||||
| test.cpp:150:6:150:9 | * ... | semmle.label | * ... |
|
||||
| test.cpp:147:4:147:9 | -- ... | semmle.label | -- ... |
|
||||
| test.cpp:156:12:156:14 | buf | semmle.label | buf |
|
||||
| test.cpp:156:12:156:18 | ... + ... | semmle.label | ... + ... |
|
||||
| test.cpp:158:17:158:18 | & ... indirection | semmle.label | & ... indirection |
|
||||
@@ -179,9 +175,7 @@ subpaths
|
||||
| test.cpp:88:5:88:27 | PointerAdd: access to array | test.cpp:85:34:85:36 | buf | test.cpp:88:5:88:27 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:15:9:15:11 | buf | buf | test.cpp:88:5:88:31 | Store: ... = ... | write |
|
||||
| test.cpp:128:9:128:14 | PointerAdd: access to array | test.cpp:128:9:128:11 | arr | test.cpp:128:9:128:14 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:125:11:125:13 | arr | arr | test.cpp:128:9:128:18 | Store: ... = ... | write |
|
||||
| test.cpp:136:9:136:16 | PointerAdd: ... += ... | test.cpp:143:18:143:21 | asdf | test.cpp:138:13:138:15 | arr | This pointer arithmetic may have an off-by-2 error allowing it to overrun $@ at this $@. | test.cpp:142:10:142:13 | asdf | asdf | test.cpp:138:12:138:15 | Load: * ... | read |
|
||||
| test.cpp:156:12:156:18 | PointerAdd: ... + ... | test.cpp:156:12:156:14 | buf | test.cpp:148:6:148:9 | * ... | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:154:7:154:9 | buf | buf | test.cpp:147:3:147:13 | Store: ... = ... | write |
|
||||
| test.cpp:156:12:156:18 | PointerAdd: ... + ... | test.cpp:156:12:156:14 | buf | test.cpp:149:6:149:9 | * ... | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:154:7:154:9 | buf | buf | test.cpp:148:3:148:13 | Store: ... = ... | write |
|
||||
| test.cpp:156:12:156:18 | PointerAdd: ... + ... | test.cpp:156:12:156:14 | buf | test.cpp:150:6:150:9 | * ... | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:154:7:154:9 | buf | buf | test.cpp:149:3:149:13 | Store: ... = ... | write |
|
||||
| test.cpp:156:12:156:18 | PointerAdd: ... + ... | test.cpp:156:12:156:14 | buf | test.cpp:147:4:147:9 | -- ... | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:154:7:154:9 | buf | buf | test.cpp:147:3:147:13 | Store: ... = ... | write |
|
||||
| test.cpp:221:5:221:11 | PointerAdd: access to array | test.cpp:218:23:218:28 | buffer | test.cpp:221:5:221:11 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:217:19:217:24 | buffer | buffer | test.cpp:221:5:221:15 | Store: ... = ... | write |
|
||||
| test.cpp:232:5:232:10 | PointerAdd: access to array | test.cpp:229:25:229:29 | array | test.cpp:232:5:232:10 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:228:10:228:14 | array | array | test.cpp:232:5:232:19 | Store: ... = ... | write |
|
||||
| test.cpp:261:27:261:30 | PointerAdd: access to array | test.cpp:286:19:286:25 | buffer2 | test.cpp:261:27:261:30 | access to array | This pointer arithmetic may have an off-by-1 error allowing it to overrun $@ at this $@. | test.cpp:285:19:285:25 | buffer2 | buffer2 | test.cpp:261:27:261:30 | Load: access to array | read |
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
static int clang421 = __has_feature(attribute_deprecated_with_message);
|
||||
// semmle-extractor-options: --gnu_version 40201 --edg --clang
|
||||
// semmle-extractor-options: --gnu_version 40201 --clang_version 30400
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
static int clang450 = __has_feature(attribute_deprecated_with_message);
|
||||
// semmle-extractor-options: --gnu_version 40500 --edg --clang
|
||||
// semmle-extractor-options: --gnu_version 40500 --clang_version 30500
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
static int gcc421 = __has_feature(attribute_deprecated_with_message);
|
||||
// semmle-extractor-options: --gnu_version 40201 --edg --clang
|
||||
// semmle-extractor-options: --gnu_version 40201
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
static int gcc450 = __has_feature(attribute_deprecated_with_message);
|
||||
// semmle-extractor-options: --gnu_version 40500 --edg --clang
|
||||
// semmle-extractor-options: --gnu_version 40500
|
||||
|
||||
@@ -14,6 +14,7 @@ localCallNodes
|
||||
postIsNotPre
|
||||
postHasUniquePre
|
||||
uniquePostUpdate
|
||||
| example.c:24:13:24:18 | coords indirection | Node has multiple PostUpdateNodes. |
|
||||
postIsInSameCallable
|
||||
reverseRead
|
||||
argHasPostUpdate
|
||||
|
||||
@@ -1,6 +1,19 @@
|
||||
private import semmle.code.cpp.ir.dataflow.DataFlow
|
||||
private import DataFlow
|
||||
|
||||
private class TestAdditionalCallTarget extends AdditionalCallTarget {
|
||||
override Function viableTarget(Call call) {
|
||||
// To test that call targets specified by `AdditionalCallTarget` are
|
||||
// resolved correctly this subclass resolves all calls to
|
||||
// `call_template_argument<f>(x)` as if the user had written `f(x)`.
|
||||
exists(FunctionTemplateInstantiation inst |
|
||||
inst.getTemplate().hasName("call_template_argument") and
|
||||
call.getTarget() = inst and
|
||||
result = inst.getTemplateArgument(0).(FunctionAccess).getTarget()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
module IRConfig implements ConfigSig {
|
||||
predicate isSource(Node src) {
|
||||
src.asExpr() instanceof NewExpr
|
||||
|
||||
@@ -770,6 +770,9 @@ edges
|
||||
| simple.cpp:92:7:92:7 | a indirection [post update] [i] | simple.cpp:94:10:94:11 | a2 indirection [i] |
|
||||
| simple.cpp:92:11:92:20 | call to user_input | simple.cpp:92:5:92:22 | ... = ... |
|
||||
| simple.cpp:94:10:94:11 | a2 indirection [i] | simple.cpp:94:13:94:13 | i |
|
||||
| simple.cpp:103:24:103:24 | x | simple.cpp:104:14:104:14 | x |
|
||||
| simple.cpp:108:17:108:26 | call to user_input | simple.cpp:109:43:109:43 | x |
|
||||
| simple.cpp:109:43:109:43 | x | simple.cpp:103:24:103:24 | x |
|
||||
| struct_init.c:14:24:14:25 | ab indirection [a] | struct_init.c:15:8:15:9 | ab indirection [a] |
|
||||
| struct_init.c:15:8:15:9 | ab indirection [a] | struct_init.c:15:12:15:12 | a |
|
||||
| struct_init.c:20:13:20:14 | definition of ab indirection [a] | struct_init.c:22:8:22:9 | ab indirection [a] |
|
||||
@@ -1576,6 +1579,10 @@ nodes
|
||||
| simple.cpp:92:11:92:20 | call to user_input | semmle.label | call to user_input |
|
||||
| simple.cpp:94:10:94:11 | a2 indirection [i] | semmle.label | a2 indirection [i] |
|
||||
| simple.cpp:94:13:94:13 | i | semmle.label | i |
|
||||
| simple.cpp:103:24:103:24 | x | semmle.label | x |
|
||||
| simple.cpp:104:14:104:14 | x | semmle.label | x |
|
||||
| simple.cpp:108:17:108:26 | call to user_input | semmle.label | call to user_input |
|
||||
| simple.cpp:109:43:109:43 | x | semmle.label | x |
|
||||
| struct_init.c:14:24:14:25 | ab indirection [a] | semmle.label | ab indirection [a] |
|
||||
| struct_init.c:15:8:15:9 | ab indirection [a] | semmle.label | ab indirection [a] |
|
||||
| struct_init.c:15:12:15:12 | a | semmle.label | a |
|
||||
@@ -1782,6 +1789,7 @@ subpaths
|
||||
| simple.cpp:67:13:67:13 | i | simple.cpp:65:11:65:20 | call to user_input | simple.cpp:67:13:67:13 | i | i flows from $@ | simple.cpp:65:11:65:20 | call to user_input | call to user_input |
|
||||
| simple.cpp:84:14:84:20 | call to getf2f1 | simple.cpp:83:17:83:26 | call to user_input | simple.cpp:84:14:84:20 | call to getf2f1 | call to getf2f1 flows from $@ | simple.cpp:83:17:83:26 | call to user_input | call to user_input |
|
||||
| simple.cpp:94:13:94:13 | i | simple.cpp:92:11:92:20 | call to user_input | simple.cpp:94:13:94:13 | i | i flows from $@ | simple.cpp:92:11:92:20 | call to user_input | call to user_input |
|
||||
| simple.cpp:104:14:104:14 | x | simple.cpp:108:17:108:26 | call to user_input | simple.cpp:104:14:104:14 | x | x flows from $@ | simple.cpp:108:17:108:26 | call to user_input | call to user_input |
|
||||
| struct_init.c:15:12:15:12 | a | struct_init.c:20:20:20:29 | call to user_input | struct_init.c:15:12:15:12 | a | a flows from $@ | struct_init.c:20:20:20:29 | call to user_input | call to user_input |
|
||||
| struct_init.c:15:12:15:12 | a | struct_init.c:27:7:27:16 | call to user_input | struct_init.c:15:12:15:12 | a | a flows from $@ | struct_init.c:27:7:27:16 | call to user_input | call to user_input |
|
||||
| struct_init.c:15:12:15:12 | a | struct_init.c:40:20:40:29 | call to user_input | struct_init.c:15:12:15:12 | a | a flows from $@ | struct_init.c:40:20:40:29 | call to user_input | call to user_input |
|
||||
|
||||
@@ -94,4 +94,21 @@ void single_field_test_typedef(A_typedef a)
|
||||
sink(a2.i); //$ ast,ir
|
||||
}
|
||||
|
||||
namespace TestAdditionalCallTargets {
|
||||
|
||||
using TakesIntReturnsVoid = void(*)(int);
|
||||
template<TakesIntReturnsVoid F>
|
||||
void call_template_argument(int);
|
||||
|
||||
void call_sink(int x) {
|
||||
sink(x); // $ ir
|
||||
}
|
||||
|
||||
void test_additional_call_targets() {
|
||||
int x = user_input();
|
||||
call_template_argument<call_sink>(x);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} // namespace Simple
|
||||
|
||||
@@ -165,9 +165,9 @@ void test_map()
|
||||
// array-like access
|
||||
std::map<char *, char *> m10, m11, m12, m13;
|
||||
sink(m10["abc"] = "def");
|
||||
sink(m11["abc"] = source()); // $ ast ir=168:7 ir=168:20
|
||||
sink(m11["abc"] = source()); // $ ast,ir
|
||||
sink(m12.at("abc") = "def");
|
||||
sink(m13.at("abc") = source()); // $ ast ir=170:7 ir=170:23
|
||||
sink(m13.at("abc") = source()); // $ ast,ir
|
||||
sink(m10["abc"]);
|
||||
sink(m11["abc"]); // $ ast,ir
|
||||
sink(m12["abc"]);
|
||||
@@ -317,9 +317,9 @@ void test_unordered_map()
|
||||
// array-like access
|
||||
std::unordered_map<char *, char *> m10, m11, m12, m13;
|
||||
sink(m10["abc"] = "def");
|
||||
sink(m11["abc"] = source()); // $ ast ir=320:7 ir=320:20
|
||||
sink(m11["abc"] = source()); // $ ast,ir
|
||||
sink(m12.at("abc") = "def");
|
||||
sink(m13.at("abc") = source()); // $ ast ir=322:7 ir=322:23
|
||||
sink(m13.at("abc") = source()); // $ ast,ir
|
||||
sink(m10["abc"]);
|
||||
sink(m11["abc"]); // $ ast,ir
|
||||
sink(m12["abc"]);
|
||||
|
||||
@@ -13,8 +13,8 @@ void arithAssignments(int source1, int clean1) {
|
||||
source1++;
|
||||
++source1;
|
||||
source1 += 1;
|
||||
sink(source1); // $ ast ir=12:13 ir=12:22
|
||||
sink(++source1); // $ ast ir=12:13 ir=12:22
|
||||
sink(source1); // $ ast,ir
|
||||
sink(++source1); // $ ast,ir
|
||||
}
|
||||
|
||||
// --- globals ---
|
||||
|
||||
@@ -1761,7 +1761,7 @@ ir.c:
|
||||
# 9| ValueCategory = lvalue
|
||||
# 9| getRValue(): [AssignExpr] ... = ...
|
||||
# 9| Type = [IntType] int
|
||||
# 9| ValueCategory = prvalue
|
||||
# 9| ValueCategory = prvalue(load)
|
||||
# 9| getLValue(): [ValueFieldAccess] y
|
||||
# 9| Type = [IntType] int
|
||||
# 9| ValueCategory = lvalue
|
||||
@@ -2675,7 +2675,7 @@ ir.cpp:
|
||||
# 101| ValueCategory = lvalue
|
||||
# 101| getRValue(): [PrefixIncrExpr] ++ ...
|
||||
# 101| Type = [IntType] int
|
||||
# 101| ValueCategory = prvalue
|
||||
# 101| ValueCategory = prvalue(load)
|
||||
# 101| getOperand(): [VariableAccess] x
|
||||
# 101| Type = [IntType] int
|
||||
# 101| ValueCategory = lvalue
|
||||
@@ -2688,7 +2688,7 @@ ir.cpp:
|
||||
# 102| ValueCategory = lvalue
|
||||
# 102| getRValue(): [PrefixDecrExpr] -- ...
|
||||
# 102| Type = [IntType] int
|
||||
# 102| ValueCategory = prvalue
|
||||
# 102| ValueCategory = prvalue(load)
|
||||
# 102| getOperand(): [VariableAccess] x
|
||||
# 102| Type = [IntType] int
|
||||
# 102| ValueCategory = lvalue
|
||||
@@ -3041,7 +3041,7 @@ ir.cpp:
|
||||
# 147| ValueCategory = lvalue
|
||||
# 147| getRValue(): [PrefixIncrExpr] ++ ...
|
||||
# 147| Type = [FloatType] float
|
||||
# 147| ValueCategory = prvalue
|
||||
# 147| ValueCategory = prvalue(load)
|
||||
# 147| getOperand(): [VariableAccess] x
|
||||
# 147| Type = [FloatType] float
|
||||
# 147| ValueCategory = lvalue
|
||||
@@ -3054,7 +3054,7 @@ ir.cpp:
|
||||
# 148| ValueCategory = lvalue
|
||||
# 148| getRValue(): [PrefixDecrExpr] -- ...
|
||||
# 148| Type = [FloatType] float
|
||||
# 148| ValueCategory = prvalue
|
||||
# 148| ValueCategory = prvalue(load)
|
||||
# 148| getOperand(): [VariableAccess] x
|
||||
# 148| Type = [FloatType] float
|
||||
# 148| ValueCategory = lvalue
|
||||
@@ -3557,7 +3557,7 @@ ir.cpp:
|
||||
# 207| ValueCategory = lvalue
|
||||
# 207| getRValue(): [PrefixIncrExpr] ++ ...
|
||||
# 207| Type = [IntPointerType] int *
|
||||
# 207| ValueCategory = prvalue
|
||||
# 207| ValueCategory = prvalue(load)
|
||||
# 207| getOperand(): [VariableAccess] p
|
||||
# 207| Type = [IntPointerType] int *
|
||||
# 207| ValueCategory = lvalue
|
||||
@@ -3570,7 +3570,7 @@ ir.cpp:
|
||||
# 208| ValueCategory = lvalue
|
||||
# 208| getRValue(): [PrefixDecrExpr] -- ...
|
||||
# 208| Type = [IntPointerType] int *
|
||||
# 208| ValueCategory = prvalue
|
||||
# 208| ValueCategory = prvalue(load)
|
||||
# 208| getOperand(): [VariableAccess] p
|
||||
# 208| Type = [IntPointerType] int *
|
||||
# 208| ValueCategory = lvalue
|
||||
@@ -4825,7 +4825,7 @@ ir.cpp:
|
||||
# 483| getVariable().getInitializer(): [Initializer] initializer for z
|
||||
# 483| getExpr(): [ConditionalExpr] ... ? ... : ...
|
||||
# 483| Type = [IntType] int
|
||||
# 483| ValueCategory = prvalue
|
||||
# 483| ValueCategory = prvalue(load)
|
||||
# 483| getCondition(): [VariableAccess] a
|
||||
# 483| Type = [BoolType] bool
|
||||
# 483| ValueCategory = prvalue(load)
|
||||
@@ -6025,7 +6025,7 @@ ir.cpp:
|
||||
# 705| getStmt(0): [ReturnStmt] return ...
|
||||
# 705| getExpr(): [ConditionalExpr] ... ? ... : ...
|
||||
# 705| Type = [UnknownType] unknown
|
||||
# 705| ValueCategory = prvalue(load)
|
||||
# 705| ValueCategory = prvalue
|
||||
# 705| getCondition(): [LTExpr] ... < ...
|
||||
# 705| Type = [UnknownType] unknown
|
||||
# 705| ValueCategory = prvalue
|
||||
@@ -6058,7 +6058,7 @@ ir.cpp:
|
||||
# 705| getStmt(0): [ReturnStmt] return ...
|
||||
# 705| getExpr(): [ConditionalExpr] ... ? ... : ...
|
||||
# 705| Type = [IntType] int
|
||||
# 705| ValueCategory = prvalue
|
||||
# 705| ValueCategory = prvalue(load)
|
||||
# 705| getCondition(): [LTExpr] ... < ...
|
||||
# 705| Type = [BoolType] bool
|
||||
# 705| ValueCategory = prvalue
|
||||
@@ -7864,7 +7864,7 @@ ir.cpp:
|
||||
# 915| getVariable().getInitializer(): [Initializer] initializer for b
|
||||
# 915| getExpr(): [ConditionalExpr] ... ? ... : ...
|
||||
# 915| Type = [IntType] int
|
||||
# 915| ValueCategory = prvalue
|
||||
# 915| ValueCategory = prvalue(load)
|
||||
# 915| getCondition(): [Literal] 1
|
||||
# 915| Type = [BoolType] bool
|
||||
# 915| Value = [Literal] 1
|
||||
@@ -8633,6 +8633,9 @@ ir.cpp:
|
||||
# 1038| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [RValueReferenceType] lambda [] type at line 1038, col. 12 &&
|
||||
# 1038| <initializations>:
|
||||
# 1038| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 1038| getStmt(0): [ReturnStmt] return ...
|
||||
# 1038| [Constructor] void (lambda [] type at line 1038, col. 12)::(unnamed constructor)()
|
||||
# 1038| <params>:
|
||||
# 1038| [MemberFunction] void (lambda [] type at line 1038, col. 12)::_FUN()
|
||||
@@ -8963,6 +8966,9 @@ ir.cpp:
|
||||
# 1041| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [RValueReferenceType] lambda [] type at line 1041, col. 23 &&
|
||||
# 1041| <initializations>:
|
||||
# 1041| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 1041| getStmt(0): [ReturnStmt] return ...
|
||||
# 1041| [Constructor] void (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::(unnamed constructor)()
|
||||
# 1041| <params>:
|
||||
# 1041| [MemberFunction] char (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::_FUN(float)
|
||||
@@ -10456,7 +10462,7 @@ ir.cpp:
|
||||
# 1301| ValueCategory = lvalue
|
||||
# 1301| getRValue(): [ConditionalExpr] ... ? ... : ...
|
||||
# 1301| Type = [IntType] int
|
||||
# 1301| ValueCategory = prvalue
|
||||
# 1301| ValueCategory = prvalue(load)
|
||||
# 1301| getCondition(): [VariableAccess] b
|
||||
# 1301| Type = [BoolType] bool
|
||||
# 1301| ValueCategory = prvalue(load)
|
||||
@@ -10472,7 +10478,7 @@ ir.cpp:
|
||||
# 1302| ValueCategory = lvalue
|
||||
# 1302| getRValue(): [ConditionalExpr] ... ? ... : ...
|
||||
# 1302| Type = [LongType] long
|
||||
# 1302| ValueCategory = prvalue
|
||||
# 1302| ValueCategory = prvalue(load)
|
||||
# 1302| getCondition(): [VariableAccess] b
|
||||
# 1302| Type = [BoolType] bool
|
||||
# 1302| ValueCategory = prvalue(load)
|
||||
@@ -10492,7 +10498,7 @@ ir.cpp:
|
||||
# 1303| ValueCategory = lvalue
|
||||
# 1303| getRValue(): [ConditionalExpr] ... ? ... : ...
|
||||
# 1303| Type = [IntType] int
|
||||
# 1303| ValueCategory = prvalue
|
||||
# 1303| ValueCategory = prvalue(load)
|
||||
# 1303| getCondition(): [VariableAccess] x
|
||||
# 1303| Type = [IntType] int
|
||||
# 1303| ValueCategory = prvalue(load)
|
||||
@@ -10512,7 +10518,7 @@ ir.cpp:
|
||||
# 1304| ValueCategory = lvalue
|
||||
# 1304| getRValue(): [ConditionalExpr] ... ? ... : ...
|
||||
# 1304| Type = [LongType] long
|
||||
# 1304| ValueCategory = prvalue
|
||||
# 1304| ValueCategory = prvalue(load)
|
||||
# 1304| getCondition(): [VariableAccess] x
|
||||
# 1304| Type = [IntType] int
|
||||
# 1304| ValueCategory = prvalue(load)
|
||||
@@ -10536,7 +10542,7 @@ ir.cpp:
|
||||
# 1305| ValueCategory = lvalue
|
||||
# 1305| getRValue(): [ConditionalExpr] ... ? ... : ...
|
||||
# 1305| Type = [LongType] long
|
||||
# 1305| ValueCategory = prvalue
|
||||
# 1305| ValueCategory = prvalue(load)
|
||||
# 1305| getCondition(): [VariableAccess] y
|
||||
# 1305| Type = [LongType] long
|
||||
# 1305| ValueCategory = prvalue(load)
|
||||
@@ -10564,7 +10570,7 @@ ir.cpp:
|
||||
# 1306| ValueCategory = lvalue
|
||||
# 1306| getRValue(): [ConditionalExpr] ... ? ... : ...
|
||||
# 1306| Type = [LongType] long
|
||||
# 1306| ValueCategory = prvalue
|
||||
# 1306| ValueCategory = prvalue(load)
|
||||
# 1306| getCondition(): [VariableAccess] y
|
||||
# 1306| Type = [LongType] long
|
||||
# 1306| ValueCategory = prvalue(load)
|
||||
@@ -10588,7 +10594,7 @@ ir.cpp:
|
||||
# 1308| ValueCategory = lvalue
|
||||
# 1308| getRValue(): [ConditionalExpr] ... ? ... : ...
|
||||
# 1308| Type = [IntType] int
|
||||
# 1308| ValueCategory = prvalue
|
||||
# 1308| ValueCategory = prvalue(load)
|
||||
# 1308| getCondition(): [LogicalOrExpr] ... || ...
|
||||
# 1308| Type = [BoolType] bool
|
||||
# 1308| ValueCategory = prvalue
|
||||
@@ -10633,7 +10639,7 @@ ir.cpp:
|
||||
# 1315| getStmt(0): [ReturnStmt] return ...
|
||||
# 1315| getExpr(): [ConditionalExpr] ... ? ... : ...
|
||||
# 1315| Type = [IntType] int
|
||||
# 1315| ValueCategory = prvalue
|
||||
# 1315| ValueCategory = prvalue(load)
|
||||
# 1315| getCondition(): [LogicalAndExpr] ... && ...
|
||||
# 1315| Type = [BoolType] bool
|
||||
# 1315| ValueCategory = prvalue
|
||||
@@ -10949,7 +10955,7 @@ ir.cpp:
|
||||
# 1376| ValueCategory = prvalue
|
||||
# 1376| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 1376| Type = [Struct] String
|
||||
# 1376| ValueCategory = prvalue(load)
|
||||
# 1376| ValueCategory = prvalue
|
||||
# 1377| getStmt(9): [ReturnStmt] return ...
|
||||
# 1379| [TopLevelFunction] void temporary_destructor_only()
|
||||
# 1379| <params>:
|
||||
@@ -11032,7 +11038,7 @@ ir.cpp:
|
||||
# 1388| ValueCategory = prvalue
|
||||
# 1388| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 1388| Type = [Class] destructor_only
|
||||
# 1388| ValueCategory = prvalue(load)
|
||||
# 1388| ValueCategory = prvalue
|
||||
# 1389| getStmt(8): [ReturnStmt] return ...
|
||||
# 1391| [TopLevelFunction] void temporary_copy_constructor()
|
||||
# 1391| <params>:
|
||||
@@ -11128,7 +11134,7 @@ ir.cpp:
|
||||
# 1399| ValueCategory = prvalue
|
||||
# 1399| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 1399| Type = [Class] copy_constructor
|
||||
# 1399| ValueCategory = prvalue(load)
|
||||
# 1399| ValueCategory = prvalue
|
||||
# 1401| getStmt(8): [DeclStmt] declaration
|
||||
# 1401| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y
|
||||
# 1401| Type = [IntType] int
|
||||
@@ -13368,9 +13374,6 @@ ir.cpp:
|
||||
# 1714| getExpr(): [TemporaryObjectExpr] temporary object
|
||||
# 1714| Type = [Class] TrivialLambdaClass
|
||||
# 1714| ValueCategory = lvalue
|
||||
# 1714| getExpr(): [TemporaryObjectExpr] temporary object
|
||||
# 1714| Type = [Class] TrivialLambdaClass
|
||||
# 1714| ValueCategory = prvalue(load)
|
||||
# 1716| getStmt(2): [DeclStmt] declaration
|
||||
# 1716| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_outer1
|
||||
# 1716| Type = [Closure,LocalClass] decltype([...](...){...})
|
||||
@@ -14710,7 +14713,7 @@ ir.cpp:
|
||||
# 1930| ValueCategory = lvalue
|
||||
# 1930| getRValue(): [AssignExpr] ... = ...
|
||||
# 1930| Type = [IntType] int
|
||||
# 1930| ValueCategory = prvalue
|
||||
# 1930| ValueCategory = prvalue(load)
|
||||
# 1930| getLValue(): [VariableAccess] j
|
||||
# 1930| Type = [IntType] int
|
||||
# 1930| ValueCategory = lvalue
|
||||
@@ -14741,7 +14744,7 @@ ir.cpp:
|
||||
# 1935| ValueCategory = lvalue
|
||||
# 1935| getRValue(): [AssignAddExpr] ... += ...
|
||||
# 1935| Type = [IntType] int
|
||||
# 1935| ValueCategory = prvalue
|
||||
# 1935| ValueCategory = prvalue(load)
|
||||
# 1935| getLValue(): [VariableAccess] j
|
||||
# 1935| Type = [IntType] int
|
||||
# 1935| ValueCategory = lvalue
|
||||
@@ -14751,7 +14754,7 @@ ir.cpp:
|
||||
# 1935| ValueCategory = prvalue
|
||||
# 1935| getRValue().getFullyConverted(): [ParenthesisExpr] (...)
|
||||
# 1935| Type = [IntType] int
|
||||
# 1935| ValueCategory = prvalue
|
||||
# 1935| ValueCategory = prvalue(load)
|
||||
# 1936| getStmt(2): [ReturnStmt] return ...
|
||||
# 1938| [CopyAssignmentOperator] D& D::operator=(D const&)
|
||||
# 1938| <params>:
|
||||
@@ -15040,7 +15043,7 @@ ir.cpp:
|
||||
# 1993| ValueCategory = lvalue
|
||||
# 1993| getRValue(): [FunctionAccess] StaticMemberFunction
|
||||
# 1993| Type = [FunctionPointerType] ..(*)(..)
|
||||
# 1993| ValueCategory = prvalue
|
||||
# 1993| ValueCategory = prvalue(load)
|
||||
# 1993| getQualifier(): [VariableAccess] c
|
||||
# 1993| Type = [Class] C
|
||||
# 1993| ValueCategory = lvalue
|
||||
@@ -15065,7 +15068,7 @@ ir.cpp:
|
||||
# 1997| ValueCategory = lvalue
|
||||
# 1997| getRValue(): [ConditionalExpr] ... ? ... : ...
|
||||
# 1997| Type = [IntType] int
|
||||
# 1997| ValueCategory = prvalue
|
||||
# 1997| ValueCategory = prvalue(load)
|
||||
# 1997| getCondition(): [VariableAccess] a
|
||||
# 1997| Type = [BoolType] bool
|
||||
# 1997| ValueCategory = prvalue(load)
|
||||
@@ -15084,7 +15087,7 @@ ir.cpp:
|
||||
# 1998| ValueCategory = lvalue
|
||||
# 1998| getRValue(): [ConditionalExpr] ... ? ... : ...
|
||||
# 1998| Type = [IntType] int
|
||||
# 1998| ValueCategory = prvalue
|
||||
# 1998| ValueCategory = prvalue(load)
|
||||
# 1998| getCondition(): [VariableAccess] a
|
||||
# 1998| Type = [BoolType] bool
|
||||
# 1998| ValueCategory = prvalue(load)
|
||||
@@ -15168,7 +15171,7 @@ ir.cpp:
|
||||
# 2007| ValueCategory = lvalue
|
||||
# 2007| getRValue(): [ConditionalExpr] ... ? ... : ...
|
||||
# 2007| Type = [Struct] TernaryPodObj
|
||||
# 2007| ValueCategory = prvalue
|
||||
# 2007| ValueCategory = prvalue(load)
|
||||
# 2007| getCondition(): [VariableAccess] a
|
||||
# 2007| Type = [BoolType] bool
|
||||
# 2007| ValueCategory = prvalue(load)
|
||||
@@ -15249,7 +15252,7 @@ ir.cpp:
|
||||
# 2010| ValueCategory = lvalue
|
||||
# 2010| getRValue(): [ConditionalExpr] ... ? ... : ...
|
||||
# 2010| Type = [Struct] TernaryPodObj
|
||||
# 2010| ValueCategory = prvalue
|
||||
# 2010| ValueCategory = prvalue(load)
|
||||
# 2010| getCondition(): [VariableAccess] a
|
||||
# 2010| Type = [BoolType] bool
|
||||
# 2010| ValueCategory = prvalue(load)
|
||||
@@ -15501,7 +15504,7 @@ ir.cpp:
|
||||
# 2028| ValueCategory = lvalue
|
||||
# 2028| getRValue(): [ConditionalExpr] ... ? ... : ...
|
||||
# 2028| Type = [IntType] unsigned int
|
||||
# 2028| ValueCategory = prvalue
|
||||
# 2028| ValueCategory = prvalue(load)
|
||||
# 2028| getCondition(): [LTExpr] ... < ...
|
||||
# 2028| Type = [BoolType] bool
|
||||
# 2028| ValueCategory = prvalue
|
||||
@@ -15519,7 +15522,7 @@ ir.cpp:
|
||||
# 2028| ValueCategory = prvalue
|
||||
# 2029| getThen(): [CommaExpr] ... , ...
|
||||
# 2029| Type = [IntType] unsigned int
|
||||
# 2029| ValueCategory = prvalue
|
||||
# 2029| ValueCategory = prvalue(load)
|
||||
# 2029| getLeftOperand(): [FunctionCall] call to CommaTestHelper
|
||||
# 2029| Type = [VoidType] void
|
||||
# 2029| ValueCategory = prvalue
|
||||
@@ -15544,7 +15547,7 @@ ir.cpp:
|
||||
# 2030| ValueCategory = prvalue
|
||||
# 2029| getThen().getFullyConverted(): [ParenthesisExpr] (...)
|
||||
# 2029| Type = [IntType] unsigned int
|
||||
# 2029| ValueCategory = prvalue
|
||||
# 2029| ValueCategory = prvalue(load)
|
||||
# 2030| getElse().getFullyConverted(): [CStyleCast] (unsigned int)...
|
||||
# 2030| Conversion = [IntegralConversion] integral conversion
|
||||
# 2030| Type = [IntType] unsigned int
|
||||
|
||||
@@ -765,7 +765,7 @@ ir.c:
|
||||
# 9| r9_6(glval<int>) = FieldAddress[y] : r9_5
|
||||
# 9| m9_7(int) = Store[?] : &:r9_6, r9_4
|
||||
# 9| m9_8((unnamed class/struct/union)) = Chi : total:m8_10, partial:m9_7
|
||||
# 9| r9_9(int) = CopyValue : r9_4
|
||||
# 9| r9_9(int) = Load[?] : &:r9_6, m9_7
|
||||
# 9| r9_10(glval<(unnamed class/struct/union)>) = VariableAddress[coords] :
|
||||
# 9| r9_11(glval<int>) = FieldAddress[x] : r9_10
|
||||
# 9| m9_12(int) = Store[?] : &:r9_11, r9_9
|
||||
@@ -1187,15 +1187,17 @@ ir.cpp:
|
||||
# 101| r101_3(int) = Constant[1] :
|
||||
# 101| r101_4(int) = Add : r101_2, r101_3
|
||||
# 101| m101_5(int) = Store[x] : &:r101_1, r101_4
|
||||
# 101| r101_6(glval<int>) = VariableAddress[y] :
|
||||
# 101| m101_7(int) = Store[y] : &:r101_6, r101_4
|
||||
# 101| r101_6(int) = Load[x] : &:r101_1, m101_5
|
||||
# 101| r101_7(glval<int>) = VariableAddress[y] :
|
||||
# 101| m101_8(int) = Store[y] : &:r101_7, r101_6
|
||||
# 102| r102_1(glval<int>) = VariableAddress[x] :
|
||||
# 102| r102_2(int) = Load[x] : &:r102_1, m101_5
|
||||
# 102| r102_3(int) = Constant[1] :
|
||||
# 102| r102_4(int) = Sub : r102_2, r102_3
|
||||
# 102| m102_5(int) = Store[x] : &:r102_1, r102_4
|
||||
# 102| r102_6(glval<int>) = VariableAddress[y] :
|
||||
# 102| m102_7(int) = Store[y] : &:r102_6, r102_4
|
||||
# 102| r102_6(int) = Load[x] : &:r102_1, m102_5
|
||||
# 102| r102_7(glval<int>) = VariableAddress[y] :
|
||||
# 102| m102_8(int) = Store[y] : &:r102_7, r102_6
|
||||
# 103| r103_1(glval<int>) = VariableAddress[x] :
|
||||
# 103| r103_2(int) = Load[x] : &:r103_1, m102_5
|
||||
# 103| r103_3(int) = Constant[1] :
|
||||
@@ -1407,15 +1409,17 @@ ir.cpp:
|
||||
# 147| r147_3(float) = Constant[1.0] :
|
||||
# 147| r147_4(float) = Add : r147_2, r147_3
|
||||
# 147| m147_5(float) = Store[x] : &:r147_1, r147_4
|
||||
# 147| r147_6(glval<float>) = VariableAddress[y] :
|
||||
# 147| m147_7(float) = Store[y] : &:r147_6, r147_4
|
||||
# 147| r147_6(float) = Load[x] : &:r147_1, m147_5
|
||||
# 147| r147_7(glval<float>) = VariableAddress[y] :
|
||||
# 147| m147_8(float) = Store[y] : &:r147_7, r147_6
|
||||
# 148| r148_1(glval<float>) = VariableAddress[x] :
|
||||
# 148| r148_2(float) = Load[x] : &:r148_1, m147_5
|
||||
# 148| r148_3(float) = Constant[1.0] :
|
||||
# 148| r148_4(float) = Sub : r148_2, r148_3
|
||||
# 148| m148_5(float) = Store[x] : &:r148_1, r148_4
|
||||
# 148| r148_6(glval<float>) = VariableAddress[y] :
|
||||
# 148| m148_7(float) = Store[y] : &:r148_6, r148_4
|
||||
# 148| r148_6(float) = Load[x] : &:r148_1, m148_5
|
||||
# 148| r148_7(glval<float>) = VariableAddress[y] :
|
||||
# 148| m148_8(float) = Store[y] : &:r148_7, r148_6
|
||||
# 149| r149_1(glval<float>) = VariableAddress[x] :
|
||||
# 149| r149_2(float) = Load[x] : &:r149_1, m148_5
|
||||
# 149| r149_3(float) = Constant[1.0] :
|
||||
@@ -1723,15 +1727,17 @@ ir.cpp:
|
||||
# 207| r207_3(int) = Constant[1] :
|
||||
# 207| r207_4(int *) = PointerAdd[4] : r207_2, r207_3
|
||||
# 207| m207_5(int *) = Store[p] : &:r207_1, r207_4
|
||||
# 207| r207_6(glval<int *>) = VariableAddress[q] :
|
||||
# 207| m207_7(int *) = Store[q] : &:r207_6, r207_4
|
||||
# 207| r207_6(int *) = Load[p] : &:r207_1, m207_5
|
||||
# 207| r207_7(glval<int *>) = VariableAddress[q] :
|
||||
# 207| m207_8(int *) = Store[q] : &:r207_7, r207_6
|
||||
# 208| r208_1(glval<int *>) = VariableAddress[p] :
|
||||
# 208| r208_2(int *) = Load[p] : &:r208_1, m207_5
|
||||
# 208| r208_3(int) = Constant[1] :
|
||||
# 208| r208_4(int *) = PointerSub[4] : r208_2, r208_3
|
||||
# 208| m208_5(int *) = Store[p] : &:r208_1, r208_4
|
||||
# 208| r208_6(glval<int *>) = VariableAddress[q] :
|
||||
# 208| m208_7(int *) = Store[q] : &:r208_6, r208_4
|
||||
# 208| r208_6(int *) = Load[p] : &:r208_1, m208_5
|
||||
# 208| r208_7(glval<int *>) = VariableAddress[q] :
|
||||
# 208| m208_8(int *) = Store[q] : &:r208_7, r208_6
|
||||
# 209| r209_1(glval<int *>) = VariableAddress[p] :
|
||||
# 209| r209_2(int *) = Load[p] : &:r209_1, m208_5
|
||||
# 209| r209_3(int) = Constant[1] :
|
||||
@@ -6049,6 +6055,27 @@ ir.cpp:
|
||||
# 1038| v1038_10(void) = AliasedUse : ~m1038_8
|
||||
# 1038| v1038_11(void) = ExitFunction :
|
||||
|
||||
# 1038| void (lambda [] type at line 1038, col. 12)::(unnamed constructor)((lambda [] type at line 1038, col. 12)&&)
|
||||
# 1038| Block 0
|
||||
# 1038| v1038_1(void) = EnterFunction :
|
||||
# 1038| m1038_2(unknown) = AliasedDefinition :
|
||||
# 1038| m1038_3(unknown) = InitializeNonLocal :
|
||||
# 1038| m1038_4(unknown) = Chi : total:m1038_2, partial:m1038_3
|
||||
# 1038| r1038_5(glval<unknown>) = VariableAddress[#this] :
|
||||
# 1038| m1038_6(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1038_5
|
||||
# 1038| r1038_7(glval<decltype([...](...){...})>) = Load[#this] : &:r1038_5, m1038_6
|
||||
# 1038| m1038_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1038_7
|
||||
#-----| r0_1(glval<lambda [] type at line 1038, col. 12 &&>) = VariableAddress[(unnamed parameter 0)] :
|
||||
#-----| m0_2(lambda [] type at line 1038, col. 12 &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1
|
||||
#-----| r0_3(lambda [] type at line 1038, col. 12 &&) = Load[(unnamed parameter 0)] : &:r0_1, m0_2
|
||||
#-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3
|
||||
# 1038| v1038_9(void) = NoOp :
|
||||
# 1038| v1038_10(void) = ReturnIndirection[#this] : &:r1038_7, m1038_8
|
||||
#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4
|
||||
# 1038| v1038_11(void) = ReturnVoid :
|
||||
# 1038| v1038_12(void) = AliasedUse : m1038_3
|
||||
# 1038| v1038_13(void) = ExitFunction :
|
||||
|
||||
# 1038| void (lambda [] type at line 1038, col. 12)::operator()() const
|
||||
# 1038| Block 0
|
||||
# 1038| v1038_1(void) = EnterFunction :
|
||||
@@ -6265,6 +6292,27 @@ ir.cpp:
|
||||
# 1040| v1040_13(void) = AliasedUse : ~m1055_7
|
||||
# 1040| v1040_14(void) = ExitFunction :
|
||||
|
||||
# 1041| void (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::(unnamed constructor)((void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)&&)
|
||||
# 1041| Block 0
|
||||
# 1041| v1041_1(void) = EnterFunction :
|
||||
# 1041| m1041_2(unknown) = AliasedDefinition :
|
||||
# 1041| m1041_3(unknown) = InitializeNonLocal :
|
||||
# 1041| m1041_4(unknown) = Chi : total:m1041_2, partial:m1041_3
|
||||
# 1041| r1041_5(glval<unknown>) = VariableAddress[#this] :
|
||||
# 1041| m1041_6(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1041_5
|
||||
# 1041| r1041_7(glval<decltype([...](...){...})>) = Load[#this] : &:r1041_5, m1041_6
|
||||
# 1041| m1041_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1041_7
|
||||
#-----| r0_1(glval<lambda [] type at line 1041, col. 23 &&>) = VariableAddress[(unnamed parameter 0)] :
|
||||
#-----| m0_2(lambda [] type at line 1041, col. 23 &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1
|
||||
#-----| r0_3(lambda [] type at line 1041, col. 23 &&) = Load[(unnamed parameter 0)] : &:r0_1, m0_2
|
||||
#-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3
|
||||
# 1041| v1041_9(void) = NoOp :
|
||||
# 1041| v1041_10(void) = ReturnIndirection[#this] : &:r1041_7, m1041_8
|
||||
#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4
|
||||
# 1041| v1041_11(void) = ReturnVoid :
|
||||
# 1041| v1041_12(void) = AliasedUse : m1041_3
|
||||
# 1041| v1041_13(void) = ExitFunction :
|
||||
|
||||
# 1041| char (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::operator()(float) const
|
||||
# 1041| Block 0
|
||||
# 1041| v1041_1(void) = EnterFunction :
|
||||
@@ -8156,7 +8204,6 @@ ir.cpp:
|
||||
# 1376| m1376_4(unknown) = ^CallSideEffect : ~m1374_11
|
||||
# 1376| m1376_5(unknown) = Chi : total:m1374_11, partial:m1376_4
|
||||
# 1376| m1376_6(String) = Store[#temp1376:5] : &:r1376_1, r1376_3
|
||||
# 1376| r1376_7(String) = Load[#temp1376:5] : &:r1376_1, m1376_6
|
||||
# 1377| v1377_1(void) = NoOp :
|
||||
# 1365| v1365_5(void) = ReturnVoid :
|
||||
# 1365| v1365_6(void) = AliasedUse : ~m1376_5
|
||||
@@ -8232,7 +8279,6 @@ ir.cpp:
|
||||
# 1388| m1388_4(unknown) = ^CallSideEffect : ~m1386_10
|
||||
# 1388| m1388_5(unknown) = Chi : total:m1386_10, partial:m1388_4
|
||||
# 1388| m1388_6(destructor_only) = Store[#temp1388:5] : &:r1388_1, r1388_3
|
||||
# 1388| r1388_7(destructor_only) = Load[#temp1388:5] : &:r1388_1, m1388_6
|
||||
# 1389| v1389_1(void) = NoOp :
|
||||
# 1379| v1379_5(void) = ReturnVoid :
|
||||
# 1379| v1379_6(void) = AliasedUse : ~m1388_5
|
||||
@@ -8327,7 +8373,6 @@ ir.cpp:
|
||||
# 1399| m1399_4(unknown) = ^CallSideEffect : ~m1398_10
|
||||
# 1399| m1399_5(unknown) = Chi : total:m1398_10, partial:m1399_4
|
||||
# 1399| m1399_6(copy_constructor) = Store[#temp1399:5] : &:r1399_1, r1399_3
|
||||
# 1399| r1399_7(copy_constructor) = Load[#temp1399:5] : &:r1399_1, m1399_6
|
||||
# 1401| r1401_1(glval<int>) = VariableAddress[y] :
|
||||
# 1401| r1401_2(glval<copy_constructor>) = VariableAddress[#temp1401:13] :
|
||||
# 1401| r1401_3(glval<unknown>) = FunctionAddress[returnValue] :
|
||||
@@ -9841,14 +9886,11 @@ ir.cpp:
|
||||
# 1713| m1713_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1713_1
|
||||
# 1714| r1714_1(glval<TrivialLambdaClass &>) = VariableAddress[l2] :
|
||||
# 1714| r1714_2(glval<TrivialLambdaClass>) = VariableAddress[#temp1714:36] :
|
||||
# 1714| r1714_3(glval<TrivialLambdaClass>) = VariableAddress[#temp1714:36] :
|
||||
# 1714| r1714_4(TrivialLambdaClass) = Constant[0] :
|
||||
# 1714| m1714_5(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_3, r1714_4
|
||||
# 1714| r1714_6(TrivialLambdaClass) = Load[#temp1714:36] : &:r1714_3, m1714_5
|
||||
# 1714| m1714_7(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_2, r1714_6
|
||||
# 1714| r1714_8(glval<TrivialLambdaClass>) = Convert : r1714_2
|
||||
# 1714| r1714_9(TrivialLambdaClass &) = CopyValue : r1714_8
|
||||
# 1714| m1714_10(TrivialLambdaClass &) = Store[l2] : &:r1714_1, r1714_9
|
||||
# 1714| r1714_3(TrivialLambdaClass) = Constant[0] :
|
||||
# 1714| m1714_4(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_2, r1714_3
|
||||
# 1714| r1714_5(glval<TrivialLambdaClass>) = Convert : r1714_2
|
||||
# 1714| r1714_6(TrivialLambdaClass &) = CopyValue : r1714_5
|
||||
# 1714| m1714_7(TrivialLambdaClass &) = Store[l2] : &:r1714_1, r1714_6
|
||||
# 1716| r1716_1(glval<decltype([...](...){...})>) = VariableAddress[l_outer1] :
|
||||
# 1716| r1716_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1716:20] :
|
||||
# 1716| m1716_3(decltype([...](...){...})) = Uninitialized[#temp1716:20] : &:r1716_2
|
||||
@@ -9876,8 +9918,8 @@ ir.cpp:
|
||||
# 1716| m1716_19(decltype([...](...){...})) = Chi : total:m0_6, partial:m1716_18
|
||||
# 1716| r1716_20(glval<TrivialLambdaClass>) = FieldAddress[l2] : r1716_2
|
||||
# 1716| r1716_21(glval<TrivialLambdaClass &>) = VariableAddress[l2] :
|
||||
# 1716| r1716_22(TrivialLambdaClass &) = Load[l2] : &:r1716_21, m1714_10
|
||||
#-----| r0_7(TrivialLambdaClass) = Load[?] : &:r1716_22, m1714_7
|
||||
# 1716| r1716_22(TrivialLambdaClass &) = Load[l2] : &:r1716_21, m1714_7
|
||||
#-----| r0_7(TrivialLambdaClass) = Load[?] : &:r1716_22, m1714_4
|
||||
#-----| m0_8(TrivialLambdaClass) = Store[?] : &:r1716_20, r0_7
|
||||
#-----| m0_9(decltype([...](...){...})) = Chi : total:m1716_19, partial:m0_8
|
||||
# 1716| r1716_23(decltype([...](...){...})) = Load[#temp1716:20] : &:r1716_2, m0_9
|
||||
@@ -11011,7 +11053,7 @@ ir.cpp:
|
||||
# 1930| r1930_1(int) = Constant[40] :
|
||||
# 1930| r1930_2(glval<int>) = VariableAddress[j] :
|
||||
# 1930| m1930_3(int) = Store[j] : &:r1930_2, r1930_1
|
||||
# 1930| r1930_4(int) = CopyValue : r1930_1
|
||||
# 1930| r1930_4(int) = Load[j] : &:r1930_2, m1930_3
|
||||
# 1930| r1930_5(glval<int>) = VariableAddress[i] :
|
||||
# 1930| m1930_6(int) = Store[i] : &:r1930_5, r1930_4
|
||||
# 1931| v1931_1(void) = NoOp :
|
||||
@@ -11035,8 +11077,9 @@ ir.cpp:
|
||||
# 1935| r1935_3(int) = Load[j] : &:r1935_2, m1934_5
|
||||
# 1935| r1935_4(int) = Add : r1935_3, r1935_1
|
||||
# 1935| m1935_5(int) = Store[j] : &:r1935_2, r1935_4
|
||||
# 1935| r1935_6(glval<int>) = VariableAddress[i] :
|
||||
# 1935| m1935_7(int) = Store[i] : &:r1935_6, r1935_4
|
||||
# 1935| r1935_6(int) = Load[j] : &:r1935_2, m1935_5
|
||||
# 1935| r1935_7(glval<int>) = VariableAddress[i] :
|
||||
# 1935| m1935_8(int) = Store[i] : &:r1935_7, r1935_6
|
||||
# 1936| v1936_1(void) = NoOp :
|
||||
# 1933| v1933_5(void) = ReturnVoid :
|
||||
# 1933| v1933_6(void) = AliasedUse : m1933_3
|
||||
|
||||
@@ -684,6 +684,10 @@
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_2 |
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
@@ -712,6 +716,10 @@
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
| file://:0:0:0:0 | Address | &:r0_4 |
|
||||
| file://:0:0:0:0 | Address | &:r0_4 |
|
||||
| file://:0:0:0:0 | Address | &:r0_5 |
|
||||
@@ -811,6 +819,8 @@
|
||||
| file://:0:0:0:0 | Load | m0_2 |
|
||||
| file://:0:0:0:0 | Load | m0_2 |
|
||||
| file://:0:0:0:0 | Load | m0_2 |
|
||||
| file://:0:0:0:0 | Load | m0_2 |
|
||||
| file://:0:0:0:0 | Load | m0_2 |
|
||||
| file://:0:0:0:0 | Load | m0_5 |
|
||||
| file://:0:0:0:0 | Load | m0_8 |
|
||||
| file://:0:0:0:0 | Load | m0_11 |
|
||||
@@ -822,7 +832,7 @@
|
||||
| file://:0:0:0:0 | Load | m1466_4 |
|
||||
| file://:0:0:0:0 | Load | m1466_4 |
|
||||
| file://:0:0:0:0 | Load | m1685_9 |
|
||||
| file://:0:0:0:0 | Load | m1714_7 |
|
||||
| file://:0:0:0:0 | Load | m1714_4 |
|
||||
| file://:0:0:0:0 | Load | m1834_6 |
|
||||
| file://:0:0:0:0 | Load | m1834_6 |
|
||||
| file://:0:0:0:0 | Load | m1839_6 |
|
||||
@@ -847,6 +857,8 @@
|
||||
| file://:0:0:0:0 | SideEffect | m0_4 |
|
||||
| file://:0:0:0:0 | SideEffect | m0_4 |
|
||||
| file://:0:0:0:0 | SideEffect | m0_4 |
|
||||
| file://:0:0:0:0 | SideEffect | m0_4 |
|
||||
| file://:0:0:0:0 | SideEffect | m0_4 |
|
||||
| file://:0:0:0:0 | SideEffect | m0_14 |
|
||||
| file://:0:0:0:0 | SideEffect | m1078_23 |
|
||||
| file://:0:0:0:0 | SideEffect | m1078_23 |
|
||||
@@ -954,13 +966,14 @@
|
||||
| ir.c:9:14:9:19 | Unary | r9_5 |
|
||||
| ir.c:9:14:9:31 | ChiPartial | partial:m9_7 |
|
||||
| ir.c:9:14:9:31 | ChiTotal | total:m8_10 |
|
||||
| ir.c:9:14:9:31 | Load | m9_7 |
|
||||
| ir.c:9:14:9:31 | StoreValue | r9_9 |
|
||||
| ir.c:9:21:9:21 | Address | &:r9_6 |
|
||||
| ir.c:9:21:9:21 | Address | &:r9_6 |
|
||||
| ir.c:9:25:9:27 | Address | &:r9_1 |
|
||||
| ir.c:9:25:9:27 | Left | r9_2 |
|
||||
| ir.c:9:25:9:27 | Load | m7_6 |
|
||||
| ir.c:9:25:9:31 | StoreValue | r9_4 |
|
||||
| ir.c:9:25:9:31 | Unary | r9_4 |
|
||||
| ir.c:9:31:9:31 | Right | r9_3 |
|
||||
| ir.c:10:3:10:8 | Unary | r10_10 |
|
||||
| ir.c:10:3:10:26 | ChiPartial | partial:m10_12 |
|
||||
@@ -1329,18 +1342,22 @@
|
||||
| ir.cpp:98:6:98:19 | SideEffect | m98_3 |
|
||||
| ir.cpp:98:25:98:25 | Address | &:r98_5 |
|
||||
| ir.cpp:99:9:99:9 | Address | &:r99_1 |
|
||||
| ir.cpp:101:5:101:5 | Address | &:r101_6 |
|
||||
| ir.cpp:101:5:101:5 | Address | &:r101_7 |
|
||||
| ir.cpp:101:9:101:11 | Load | m101_5 |
|
||||
| ir.cpp:101:9:101:11 | Right | r101_3 |
|
||||
| ir.cpp:101:9:101:11 | StoreValue | r101_4 |
|
||||
| ir.cpp:101:9:101:11 | StoreValue | r101_4 |
|
||||
| ir.cpp:101:9:101:11 | StoreValue | r101_6 |
|
||||
| ir.cpp:101:11:101:11 | Address | &:r101_1 |
|
||||
| ir.cpp:101:11:101:11 | Address | &:r101_1 |
|
||||
| ir.cpp:101:11:101:11 | Address | &:r101_1 |
|
||||
| ir.cpp:101:11:101:11 | Left | r101_2 |
|
||||
| ir.cpp:101:11:101:11 | Load | m98_6 |
|
||||
| ir.cpp:102:5:102:5 | Address | &:r102_6 |
|
||||
| ir.cpp:102:5:102:5 | Address | &:r102_7 |
|
||||
| ir.cpp:102:9:102:11 | Load | m102_5 |
|
||||
| ir.cpp:102:9:102:11 | Right | r102_3 |
|
||||
| ir.cpp:102:9:102:11 | StoreValue | r102_4 |
|
||||
| ir.cpp:102:9:102:11 | StoreValue | r102_4 |
|
||||
| ir.cpp:102:9:102:11 | StoreValue | r102_6 |
|
||||
| ir.cpp:102:11:102:11 | Address | &:r102_1 |
|
||||
| ir.cpp:102:11:102:11 | Address | &:r102_1 |
|
||||
| ir.cpp:102:11:102:11 | Address | &:r102_1 |
|
||||
| ir.cpp:102:11:102:11 | Left | r102_2 |
|
||||
@@ -1531,18 +1548,22 @@
|
||||
| ir.cpp:144:6:144:17 | SideEffect | m144_3 |
|
||||
| ir.cpp:144:25:144:25 | Address | &:r144_5 |
|
||||
| ir.cpp:145:11:145:11 | Address | &:r145_1 |
|
||||
| ir.cpp:147:5:147:5 | Address | &:r147_6 |
|
||||
| ir.cpp:147:5:147:5 | Address | &:r147_7 |
|
||||
| ir.cpp:147:9:147:11 | Load | m147_5 |
|
||||
| ir.cpp:147:9:147:11 | Right | r147_3 |
|
||||
| ir.cpp:147:9:147:11 | StoreValue | r147_4 |
|
||||
| ir.cpp:147:9:147:11 | StoreValue | r147_4 |
|
||||
| ir.cpp:147:9:147:11 | StoreValue | r147_6 |
|
||||
| ir.cpp:147:11:147:11 | Address | &:r147_1 |
|
||||
| ir.cpp:147:11:147:11 | Address | &:r147_1 |
|
||||
| ir.cpp:147:11:147:11 | Address | &:r147_1 |
|
||||
| ir.cpp:147:11:147:11 | Left | r147_2 |
|
||||
| ir.cpp:147:11:147:11 | Load | m144_6 |
|
||||
| ir.cpp:148:5:148:5 | Address | &:r148_6 |
|
||||
| ir.cpp:148:5:148:5 | Address | &:r148_7 |
|
||||
| ir.cpp:148:9:148:11 | Load | m148_5 |
|
||||
| ir.cpp:148:9:148:11 | Right | r148_3 |
|
||||
| ir.cpp:148:9:148:11 | StoreValue | r148_4 |
|
||||
| ir.cpp:148:9:148:11 | StoreValue | r148_4 |
|
||||
| ir.cpp:148:9:148:11 | StoreValue | r148_6 |
|
||||
| ir.cpp:148:11:148:11 | Address | &:r148_1 |
|
||||
| ir.cpp:148:11:148:11 | Address | &:r148_1 |
|
||||
| ir.cpp:148:11:148:11 | Address | &:r148_1 |
|
||||
| ir.cpp:148:11:148:11 | Left | r148_2 |
|
||||
@@ -1840,18 +1861,22 @@
|
||||
| ir.cpp:204:26:204:26 | Load | m204_6 |
|
||||
| ir.cpp:204:26:204:26 | SideEffect | m204_8 |
|
||||
| ir.cpp:205:10:205:10 | Address | &:r205_1 |
|
||||
| ir.cpp:207:5:207:5 | Address | &:r207_6 |
|
||||
| ir.cpp:207:5:207:5 | Address | &:r207_7 |
|
||||
| ir.cpp:207:9:207:11 | Load | m207_5 |
|
||||
| ir.cpp:207:9:207:11 | Right | r207_3 |
|
||||
| ir.cpp:207:9:207:11 | StoreValue | r207_4 |
|
||||
| ir.cpp:207:9:207:11 | StoreValue | r207_4 |
|
||||
| ir.cpp:207:9:207:11 | StoreValue | r207_6 |
|
||||
| ir.cpp:207:11:207:11 | Address | &:r207_1 |
|
||||
| ir.cpp:207:11:207:11 | Address | &:r207_1 |
|
||||
| ir.cpp:207:11:207:11 | Address | &:r207_1 |
|
||||
| ir.cpp:207:11:207:11 | Left | r207_2 |
|
||||
| ir.cpp:207:11:207:11 | Load | m204_6 |
|
||||
| ir.cpp:208:5:208:5 | Address | &:r208_6 |
|
||||
| ir.cpp:208:5:208:5 | Address | &:r208_7 |
|
||||
| ir.cpp:208:9:208:11 | Load | m208_5 |
|
||||
| ir.cpp:208:9:208:11 | Right | r208_3 |
|
||||
| ir.cpp:208:9:208:11 | StoreValue | r208_4 |
|
||||
| ir.cpp:208:9:208:11 | StoreValue | r208_4 |
|
||||
| ir.cpp:208:9:208:11 | StoreValue | r208_6 |
|
||||
| ir.cpp:208:11:208:11 | Address | &:r208_1 |
|
||||
| ir.cpp:208:11:208:11 | Address | &:r208_1 |
|
||||
| ir.cpp:208:11:208:11 | Address | &:r208_1 |
|
||||
| ir.cpp:208:11:208:11 | Left | r208_2 |
|
||||
@@ -4947,6 +4972,15 @@
|
||||
| ir.cpp:1035:15:1035:15 | Address | &:r1035_1 |
|
||||
| ir.cpp:1038:6:1038:8 | Address | &:r1038_3 |
|
||||
| ir.cpp:1038:6:1038:8 | SideEffect | ~m1038_8 |
|
||||
| ir.cpp:1038:12:1038:12 | Address | &:r1038_5 |
|
||||
| ir.cpp:1038:12:1038:12 | Address | &:r1038_5 |
|
||||
| ir.cpp:1038:12:1038:12 | Address | &:r1038_7 |
|
||||
| ir.cpp:1038:12:1038:12 | Address | &:r1038_7 |
|
||||
| ir.cpp:1038:12:1038:12 | ChiPartial | partial:m1038_3 |
|
||||
| ir.cpp:1038:12:1038:12 | ChiTotal | total:m1038_2 |
|
||||
| ir.cpp:1038:12:1038:12 | Load | m1038_6 |
|
||||
| ir.cpp:1038:12:1038:12 | SideEffect | m1038_3 |
|
||||
| ir.cpp:1038:12:1038:12 | SideEffect | m1038_8 |
|
||||
| ir.cpp:1038:12:1038:18 | Address | &:r1038_4 |
|
||||
| ir.cpp:1038:12:1038:18 | Address | &:r1038_4 |
|
||||
| ir.cpp:1038:12:1038:18 | ChiPartial | partial:m1038_7 |
|
||||
@@ -4986,6 +5020,15 @@
|
||||
| ir.cpp:1040:34:1040:34 | Load | m1040_8 |
|
||||
| ir.cpp:1040:34:1040:34 | SideEffect | m1040_10 |
|
||||
| ir.cpp:1041:8:1041:19 | Address | &:r1041_1 |
|
||||
| ir.cpp:1041:23:1041:23 | Address | &:r1041_5 |
|
||||
| ir.cpp:1041:23:1041:23 | Address | &:r1041_5 |
|
||||
| ir.cpp:1041:23:1041:23 | Address | &:r1041_7 |
|
||||
| ir.cpp:1041:23:1041:23 | Address | &:r1041_7 |
|
||||
| ir.cpp:1041:23:1041:23 | ChiPartial | partial:m1041_3 |
|
||||
| ir.cpp:1041:23:1041:23 | ChiTotal | total:m1041_2 |
|
||||
| ir.cpp:1041:23:1041:23 | Load | m1041_6 |
|
||||
| ir.cpp:1041:23:1041:23 | SideEffect | m1041_3 |
|
||||
| ir.cpp:1041:23:1041:23 | SideEffect | m1041_8 |
|
||||
| ir.cpp:1041:23:1041:49 | Address | &:r1041_2 |
|
||||
| ir.cpp:1041:23:1041:49 | Address | &:r1041_2 |
|
||||
| ir.cpp:1041:23:1041:49 | Load | m1041_3 |
|
||||
@@ -6610,8 +6653,6 @@
|
||||
| ir.cpp:1376:5:1376:28 | SideEffect | ~m1374_11 |
|
||||
| ir.cpp:1376:5:1376:28 | StoreValue | r1376_3 |
|
||||
| ir.cpp:1376:5:1376:30 | Address | &:r1376_1 |
|
||||
| ir.cpp:1376:5:1376:30 | Address | &:r1376_1 |
|
||||
| ir.cpp:1376:5:1376:30 | Load | m1376_6 |
|
||||
| ir.cpp:1379:6:1379:30 | ChiPartial | partial:m1379_3 |
|
||||
| ir.cpp:1379:6:1379:30 | ChiTotal | total:m1379_2 |
|
||||
| ir.cpp:1379:6:1379:30 | SideEffect | ~m1388_5 |
|
||||
@@ -6686,8 +6727,6 @@
|
||||
| ir.cpp:1388:5:1388:37 | SideEffect | ~m1386_10 |
|
||||
| ir.cpp:1388:5:1388:37 | StoreValue | r1388_3 |
|
||||
| ir.cpp:1388:5:1388:39 | Address | &:r1388_1 |
|
||||
| ir.cpp:1388:5:1388:39 | Address | &:r1388_1 |
|
||||
| ir.cpp:1388:5:1388:39 | Load | m1388_6 |
|
||||
| ir.cpp:1391:6:1391:31 | ChiPartial | partial:m1391_3 |
|
||||
| ir.cpp:1391:6:1391:31 | ChiTotal | total:m1391_2 |
|
||||
| ir.cpp:1391:6:1391:31 | SideEffect | ~m1401_6 |
|
||||
@@ -6787,8 +6826,6 @@
|
||||
| ir.cpp:1399:5:1399:38 | SideEffect | ~m1398_10 |
|
||||
| ir.cpp:1399:5:1399:38 | StoreValue | r1399_3 |
|
||||
| ir.cpp:1399:5:1399:40 | Address | &:r1399_1 |
|
||||
| ir.cpp:1399:5:1399:40 | Address | &:r1399_1 |
|
||||
| ir.cpp:1399:5:1399:40 | Load | m1399_6 |
|
||||
| ir.cpp:1401:9:1401:9 | Address | &:r1401_1 |
|
||||
| ir.cpp:1401:13:1401:41 | CallTarget | func:r1401_3 |
|
||||
| ir.cpp:1401:13:1401:41 | ChiPartial | partial:m1401_5 |
|
||||
@@ -8171,14 +8208,10 @@
|
||||
| ir.cpp:1713:30:1713:31 | Address | &:r1713_1 |
|
||||
| ir.cpp:1714:31:1714:32 | Address | &:r1714_1 |
|
||||
| ir.cpp:1714:36:1714:55 | Address | &:r1714_2 |
|
||||
| ir.cpp:1714:36:1714:55 | Address | &:r1714_3 |
|
||||
| ir.cpp:1714:36:1714:55 | Address | &:r1714_3 |
|
||||
| ir.cpp:1714:36:1714:55 | Load | m1714_5 |
|
||||
| ir.cpp:1714:36:1714:55 | StoreValue | r1714_4 |
|
||||
| ir.cpp:1714:36:1714:55 | StoreValue | r1714_3 |
|
||||
| ir.cpp:1714:36:1714:55 | StoreValue | r1714_6 |
|
||||
| ir.cpp:1714:36:1714:55 | StoreValue | r1714_9 |
|
||||
| ir.cpp:1714:36:1714:55 | Unary | r1714_2 |
|
||||
| ir.cpp:1714:36:1714:55 | Unary | r1714_8 |
|
||||
| ir.cpp:1714:36:1714:55 | Unary | r1714_5 |
|
||||
| ir.cpp:1716:10:1716:17 | Address | &:r1716_1 |
|
||||
| ir.cpp:1716:20:1718:5 | Address | &:r1716_2 |
|
||||
| ir.cpp:1716:20:1718:5 | Address | &:r1716_2 |
|
||||
@@ -8204,7 +8237,7 @@
|
||||
| ir.cpp:1716:20:1718:5 | Load | m1712_8 |
|
||||
| ir.cpp:1716:20:1718:5 | Load | m1712_12 |
|
||||
| ir.cpp:1716:20:1718:5 | Load | m1713_2 |
|
||||
| ir.cpp:1716:20:1718:5 | Load | m1714_10 |
|
||||
| ir.cpp:1716:20:1718:5 | Load | m1714_7 |
|
||||
| ir.cpp:1716:20:1718:5 | StoreValue | r1716_6 |
|
||||
| ir.cpp:1716:20:1718:5 | StoreValue | r1716_17 |
|
||||
| ir.cpp:1716:20:1718:5 | StoreValue | r1716_23 |
|
||||
@@ -9037,22 +9070,25 @@
|
||||
| ir.cpp:1929:10:1929:10 | Address | &:r1929_3 |
|
||||
| ir.cpp:1930:3:1930:3 | Address | &:r1930_5 |
|
||||
| ir.cpp:1930:7:1930:7 | Address | &:r1930_2 |
|
||||
| ir.cpp:1930:7:1930:7 | Address | &:r1930_2 |
|
||||
| ir.cpp:1930:7:1930:12 | Load | m1930_3 |
|
||||
| ir.cpp:1930:7:1930:12 | StoreValue | r1930_4 |
|
||||
| ir.cpp:1930:11:1930:12 | StoreValue | r1930_1 |
|
||||
| ir.cpp:1930:11:1930:12 | Unary | r1930_1 |
|
||||
| ir.cpp:1933:6:1933:38 | ChiPartial | partial:m1933_3 |
|
||||
| ir.cpp:1933:6:1933:38 | ChiTotal | total:m1933_2 |
|
||||
| ir.cpp:1933:6:1933:38 | SideEffect | m1933_3 |
|
||||
| ir.cpp:1934:7:1934:7 | Address | &:r1934_1 |
|
||||
| ir.cpp:1934:10:1934:10 | Address | &:r1934_3 |
|
||||
| ir.cpp:1934:13:1934:14 | StoreValue | r1934_4 |
|
||||
| ir.cpp:1935:3:1935:3 | Address | &:r1935_6 |
|
||||
| ir.cpp:1935:3:1935:3 | Address | &:r1935_7 |
|
||||
| ir.cpp:1935:8:1935:8 | Address | &:r1935_2 |
|
||||
| ir.cpp:1935:8:1935:8 | Address | &:r1935_2 |
|
||||
| ir.cpp:1935:8:1935:8 | Address | &:r1935_2 |
|
||||
| ir.cpp:1935:8:1935:8 | Left | r1935_3 |
|
||||
| ir.cpp:1935:8:1935:8 | Load | m1934_5 |
|
||||
| ir.cpp:1935:8:1935:14 | Load | m1935_5 |
|
||||
| ir.cpp:1935:8:1935:14 | StoreValue | r1935_4 |
|
||||
| ir.cpp:1935:8:1935:14 | StoreValue | r1935_4 |
|
||||
| ir.cpp:1935:8:1935:14 | StoreValue | r1935_6 |
|
||||
| ir.cpp:1935:13:1935:14 | Right | r1935_1 |
|
||||
| ir.cpp:1942:15:1942:43 | Address | &:r1942_5 |
|
||||
| ir.cpp:1942:15:1942:43 | ChiPartial | partial:m1942_3 |
|
||||
|
||||
@@ -747,7 +747,7 @@ ir.c:
|
||||
# 9| r9_5(glval<(unnamed class/struct/union)>) = VariableAddress[coords] :
|
||||
# 9| r9_6(glval<int>) = FieldAddress[y] : r9_5
|
||||
# 9| mu9_7(int) = Store[?] : &:r9_6, r9_4
|
||||
# 9| r9_8(int) = CopyValue : r9_4
|
||||
# 9| r9_8(int) = Load[?] : &:r9_6, ~m?
|
||||
# 9| r9_9(glval<(unnamed class/struct/union)>) = VariableAddress[coords] :
|
||||
# 9| r9_10(glval<int>) = FieldAddress[x] : r9_9
|
||||
# 9| mu9_11(int) = Store[?] : &:r9_10, r9_8
|
||||
@@ -1159,15 +1159,17 @@ ir.cpp:
|
||||
# 101| r101_3(int) = Constant[1] :
|
||||
# 101| r101_4(int) = Add : r101_2, r101_3
|
||||
# 101| mu101_5(int) = Store[x] : &:r101_1, r101_4
|
||||
# 101| r101_6(glval<int>) = VariableAddress[y] :
|
||||
# 101| mu101_7(int) = Store[y] : &:r101_6, r101_4
|
||||
# 101| r101_6(int) = Load[x] : &:r101_1, ~m?
|
||||
# 101| r101_7(glval<int>) = VariableAddress[y] :
|
||||
# 101| mu101_8(int) = Store[y] : &:r101_7, r101_6
|
||||
# 102| r102_1(glval<int>) = VariableAddress[x] :
|
||||
# 102| r102_2(int) = Load[x] : &:r102_1, ~m?
|
||||
# 102| r102_3(int) = Constant[1] :
|
||||
# 102| r102_4(int) = Sub : r102_2, r102_3
|
||||
# 102| mu102_5(int) = Store[x] : &:r102_1, r102_4
|
||||
# 102| r102_6(glval<int>) = VariableAddress[y] :
|
||||
# 102| mu102_7(int) = Store[y] : &:r102_6, r102_4
|
||||
# 102| r102_6(int) = Load[x] : &:r102_1, ~m?
|
||||
# 102| r102_7(glval<int>) = VariableAddress[y] :
|
||||
# 102| mu102_8(int) = Store[y] : &:r102_7, r102_6
|
||||
# 103| r103_1(glval<int>) = VariableAddress[x] :
|
||||
# 103| r103_2(int) = Load[x] : &:r103_1, ~m?
|
||||
# 103| r103_3(int) = Constant[1] :
|
||||
@@ -1375,15 +1377,17 @@ ir.cpp:
|
||||
# 147| r147_3(float) = Constant[1.0] :
|
||||
# 147| r147_4(float) = Add : r147_2, r147_3
|
||||
# 147| mu147_5(float) = Store[x] : &:r147_1, r147_4
|
||||
# 147| r147_6(glval<float>) = VariableAddress[y] :
|
||||
# 147| mu147_7(float) = Store[y] : &:r147_6, r147_4
|
||||
# 147| r147_6(float) = Load[x] : &:r147_1, ~m?
|
||||
# 147| r147_7(glval<float>) = VariableAddress[y] :
|
||||
# 147| mu147_8(float) = Store[y] : &:r147_7, r147_6
|
||||
# 148| r148_1(glval<float>) = VariableAddress[x] :
|
||||
# 148| r148_2(float) = Load[x] : &:r148_1, ~m?
|
||||
# 148| r148_3(float) = Constant[1.0] :
|
||||
# 148| r148_4(float) = Sub : r148_2, r148_3
|
||||
# 148| mu148_5(float) = Store[x] : &:r148_1, r148_4
|
||||
# 148| r148_6(glval<float>) = VariableAddress[y] :
|
||||
# 148| mu148_7(float) = Store[y] : &:r148_6, r148_4
|
||||
# 148| r148_6(float) = Load[x] : &:r148_1, ~m?
|
||||
# 148| r148_7(glval<float>) = VariableAddress[y] :
|
||||
# 148| mu148_8(float) = Store[y] : &:r148_7, r148_6
|
||||
# 149| r149_1(glval<float>) = VariableAddress[x] :
|
||||
# 149| r149_2(float) = Load[x] : &:r149_1, ~m?
|
||||
# 149| r149_3(float) = Constant[1.0] :
|
||||
@@ -1682,15 +1686,17 @@ ir.cpp:
|
||||
# 207| r207_3(int) = Constant[1] :
|
||||
# 207| r207_4(int *) = PointerAdd[4] : r207_2, r207_3
|
||||
# 207| mu207_5(int *) = Store[p] : &:r207_1, r207_4
|
||||
# 207| r207_6(glval<int *>) = VariableAddress[q] :
|
||||
# 207| mu207_7(int *) = Store[q] : &:r207_6, r207_4
|
||||
# 207| r207_6(int *) = Load[p] : &:r207_1, ~m?
|
||||
# 207| r207_7(glval<int *>) = VariableAddress[q] :
|
||||
# 207| mu207_8(int *) = Store[q] : &:r207_7, r207_6
|
||||
# 208| r208_1(glval<int *>) = VariableAddress[p] :
|
||||
# 208| r208_2(int *) = Load[p] : &:r208_1, ~m?
|
||||
# 208| r208_3(int) = Constant[1] :
|
||||
# 208| r208_4(int *) = PointerSub[4] : r208_2, r208_3
|
||||
# 208| mu208_5(int *) = Store[p] : &:r208_1, r208_4
|
||||
# 208| r208_6(glval<int *>) = VariableAddress[q] :
|
||||
# 208| mu208_7(int *) = Store[q] : &:r208_6, r208_4
|
||||
# 208| r208_6(int *) = Load[p] : &:r208_1, ~m?
|
||||
# 208| r208_7(glval<int *>) = VariableAddress[q] :
|
||||
# 208| mu208_8(int *) = Store[q] : &:r208_7, r208_6
|
||||
# 209| r209_1(glval<int *>) = VariableAddress[p] :
|
||||
# 209| r209_2(int *) = Load[p] : &:r209_1, ~m?
|
||||
# 209| r209_3(int) = Constant[1] :
|
||||
@@ -5746,6 +5752,26 @@ ir.cpp:
|
||||
# 1038| v1038_9(void) = AliasedUse : ~m?
|
||||
# 1038| v1038_10(void) = ExitFunction :
|
||||
|
||||
# 1038| void (lambda [] type at line 1038, col. 12)::(unnamed constructor)((lambda [] type at line 1038, col. 12)&&)
|
||||
# 1038| Block 0
|
||||
# 1038| v1038_1(void) = EnterFunction :
|
||||
# 1038| mu1038_2(unknown) = AliasedDefinition :
|
||||
# 1038| mu1038_3(unknown) = InitializeNonLocal :
|
||||
# 1038| r1038_4(glval<unknown>) = VariableAddress[#this] :
|
||||
# 1038| mu1038_5(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1038_4
|
||||
# 1038| r1038_6(glval<decltype([...](...){...})>) = Load[#this] : &:r1038_4, ~m?
|
||||
# 1038| mu1038_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1038_6
|
||||
#-----| r0_1(glval<lambda [] type at line 1038, col. 12 &&>) = VariableAddress[(unnamed parameter 0)] :
|
||||
#-----| mu0_2(lambda [] type at line 1038, col. 12 &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1
|
||||
#-----| r0_3(lambda [] type at line 1038, col. 12 &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m?
|
||||
#-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3
|
||||
# 1038| v1038_8(void) = NoOp :
|
||||
# 1038| v1038_9(void) = ReturnIndirection[#this] : &:r1038_6, ~m?
|
||||
#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m?
|
||||
# 1038| v1038_10(void) = ReturnVoid :
|
||||
# 1038| v1038_11(void) = AliasedUse : ~m?
|
||||
# 1038| v1038_12(void) = ExitFunction :
|
||||
|
||||
# 1038| void (lambda [] type at line 1038, col. 12)::operator()() const
|
||||
# 1038| Block 0
|
||||
# 1038| v1038_1(void) = EnterFunction :
|
||||
@@ -5940,6 +5966,26 @@ ir.cpp:
|
||||
# 1040| v1040_12(void) = AliasedUse : ~m?
|
||||
# 1040| v1040_13(void) = ExitFunction :
|
||||
|
||||
# 1041| void (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::(unnamed constructor)((void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)&&)
|
||||
# 1041| Block 0
|
||||
# 1041| v1041_1(void) = EnterFunction :
|
||||
# 1041| mu1041_2(unknown) = AliasedDefinition :
|
||||
# 1041| mu1041_3(unknown) = InitializeNonLocal :
|
||||
# 1041| r1041_4(glval<unknown>) = VariableAddress[#this] :
|
||||
# 1041| mu1041_5(glval<decltype([...](...){...})>) = InitializeParameter[#this] : &:r1041_4
|
||||
# 1041| r1041_6(glval<decltype([...](...){...})>) = Load[#this] : &:r1041_4, ~m?
|
||||
# 1041| mu1041_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1041_6
|
||||
#-----| r0_1(glval<lambda [] type at line 1041, col. 23 &&>) = VariableAddress[(unnamed parameter 0)] :
|
||||
#-----| mu0_2(lambda [] type at line 1041, col. 23 &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1
|
||||
#-----| r0_3(lambda [] type at line 1041, col. 23 &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m?
|
||||
#-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3
|
||||
# 1041| v1041_8(void) = NoOp :
|
||||
# 1041| v1041_9(void) = ReturnIndirection[#this] : &:r1041_6, ~m?
|
||||
#-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m?
|
||||
# 1041| v1041_10(void) = ReturnVoid :
|
||||
# 1041| v1041_11(void) = AliasedUse : ~m?
|
||||
# 1041| v1041_12(void) = ExitFunction :
|
||||
|
||||
# 1041| char (void Lambda(int, String const&))::(lambda [] type at line 1041, col. 23)::operator()(float) const
|
||||
# 1041| Block 0
|
||||
# 1041| v1041_1(void) = EnterFunction :
|
||||
@@ -7697,7 +7743,6 @@ ir.cpp:
|
||||
# 1376| r1376_3(String) = Call[defaultConstruct] : func:r1376_2
|
||||
# 1376| mu1376_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1376| mu1376_5(String) = Store[#temp1376:5] : &:r1376_1, r1376_3
|
||||
# 1376| r1376_6(String) = Load[#temp1376:5] : &:r1376_1, ~m?
|
||||
# 1377| v1377_1(void) = NoOp :
|
||||
# 1365| v1365_4(void) = ReturnVoid :
|
||||
# 1365| v1365_5(void) = AliasedUse : ~m?
|
||||
@@ -7762,7 +7807,6 @@ ir.cpp:
|
||||
# 1388| r1388_3(destructor_only) = Call[defaultConstruct] : func:r1388_2
|
||||
# 1388| mu1388_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1388| mu1388_5(destructor_only) = Store[#temp1388:5] : &:r1388_1, r1388_3
|
||||
# 1388| r1388_6(destructor_only) = Load[#temp1388:5] : &:r1388_1, ~m?
|
||||
# 1389| v1389_1(void) = NoOp :
|
||||
# 1379| v1379_4(void) = ReturnVoid :
|
||||
# 1379| v1379_5(void) = AliasedUse : ~m?
|
||||
@@ -7840,7 +7884,6 @@ ir.cpp:
|
||||
# 1399| r1399_3(copy_constructor) = Call[defaultConstruct] : func:r1399_2
|
||||
# 1399| mu1399_4(unknown) = ^CallSideEffect : ~m?
|
||||
# 1399| mu1399_5(copy_constructor) = Store[#temp1399:5] : &:r1399_1, r1399_3
|
||||
# 1399| r1399_6(copy_constructor) = Load[#temp1399:5] : &:r1399_1, ~m?
|
||||
# 1401| r1401_1(glval<int>) = VariableAddress[y] :
|
||||
# 1401| r1401_2(glval<copy_constructor>) = VariableAddress[#temp1401:13] :
|
||||
# 1401| r1401_3(glval<unknown>) = FunctionAddress[returnValue] :
|
||||
@@ -9241,14 +9284,11 @@ ir.cpp:
|
||||
# 1713| mu1713_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1713_1
|
||||
# 1714| r1714_1(glval<TrivialLambdaClass &>) = VariableAddress[l2] :
|
||||
# 1714| r1714_2(glval<TrivialLambdaClass>) = VariableAddress[#temp1714:36] :
|
||||
# 1714| r1714_3(glval<TrivialLambdaClass>) = VariableAddress[#temp1714:36] :
|
||||
# 1714| r1714_4(TrivialLambdaClass) = Constant[0] :
|
||||
# 1714| mu1714_5(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_3, r1714_4
|
||||
# 1714| r1714_6(TrivialLambdaClass) = Load[#temp1714:36] : &:r1714_3, ~m?
|
||||
# 1714| mu1714_7(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_2, r1714_6
|
||||
# 1714| r1714_8(glval<TrivialLambdaClass>) = Convert : r1714_2
|
||||
# 1714| r1714_9(TrivialLambdaClass &) = CopyValue : r1714_8
|
||||
# 1714| mu1714_10(TrivialLambdaClass &) = Store[l2] : &:r1714_1, r1714_9
|
||||
# 1714| r1714_3(TrivialLambdaClass) = Constant[0] :
|
||||
# 1714| mu1714_4(TrivialLambdaClass) = Store[#temp1714:36] : &:r1714_2, r1714_3
|
||||
# 1714| r1714_5(glval<TrivialLambdaClass>) = Convert : r1714_2
|
||||
# 1714| r1714_6(TrivialLambdaClass &) = CopyValue : r1714_5
|
||||
# 1714| mu1714_7(TrivialLambdaClass &) = Store[l2] : &:r1714_1, r1714_6
|
||||
# 1716| r1716_1(glval<decltype([...](...){...})>) = VariableAddress[l_outer1] :
|
||||
# 1716| r1716_2(glval<decltype([...](...){...})>) = VariableAddress[#temp1716:20] :
|
||||
# 1716| mu1716_3(decltype([...](...){...})) = Uninitialized[#temp1716:20] : &:r1716_2
|
||||
@@ -10330,7 +10370,7 @@ ir.cpp:
|
||||
# 1930| r1930_1(int) = Constant[40] :
|
||||
# 1930| r1930_2(glval<int>) = VariableAddress[j] :
|
||||
# 1930| mu1930_3(int) = Store[j] : &:r1930_2, r1930_1
|
||||
# 1930| r1930_4(int) = CopyValue : r1930_1
|
||||
# 1930| r1930_4(int) = Load[j] : &:r1930_2, ~m?
|
||||
# 1930| r1930_5(glval<int>) = VariableAddress[i] :
|
||||
# 1930| mu1930_6(int) = Store[i] : &:r1930_5, r1930_4
|
||||
# 1931| v1931_1(void) = NoOp :
|
||||
@@ -10353,8 +10393,9 @@ ir.cpp:
|
||||
# 1935| r1935_3(int) = Load[j] : &:r1935_2, ~m?
|
||||
# 1935| r1935_4(int) = Add : r1935_3, r1935_1
|
||||
# 1935| mu1935_5(int) = Store[j] : &:r1935_2, r1935_4
|
||||
# 1935| r1935_6(glval<int>) = VariableAddress[i] :
|
||||
# 1935| mu1935_7(int) = Store[i] : &:r1935_6, r1935_4
|
||||
# 1935| r1935_6(int) = Load[j] : &:r1935_2, ~m?
|
||||
# 1935| r1935_7(glval<int>) = VariableAddress[i] :
|
||||
# 1935| mu1935_8(int) = Store[i] : &:r1935_7, r1935_6
|
||||
# 1936| v1936_1(void) = NoOp :
|
||||
# 1933| v1933_4(void) = ReturnVoid :
|
||||
# 1933| v1933_5(void) = AliasedUse : ~m?
|
||||
|
||||
@@ -672,7 +672,7 @@ void test17() {
|
||||
range(i); // $ range===50
|
||||
|
||||
i = 20 + (j -= 10);
|
||||
range(i); // $ range="==Store: ... += ... | Store: ... = ...+10" range===60
|
||||
range(i); // $ range="==Store: ... += ... | Store: ... = ...+10" range===60 range="==Store: ... -= ...+20"
|
||||
}
|
||||
|
||||
// Tests for unsigned multiplication.
|
||||
|
||||
@@ -15,6 +15,7 @@ localCallNodes
|
||||
postIsNotPre
|
||||
postHasUniquePre
|
||||
uniquePostUpdate
|
||||
| allocators.cpp:4:24:4:26 | this indirection | Node has multiple PostUpdateNodes. |
|
||||
| cpp11.cpp:82:17:82:17 | this indirection | Node has multiple PostUpdateNodes. |
|
||||
| cpp11.cpp:82:17:82:55 | [...](...){...} indirection | Node has multiple PostUpdateNodes. |
|
||||
| ir.cpp:514:10:514:11 | definition of r2 indirection | Node has multiple PostUpdateNodes. |
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
| file://:0:0:0:0 | Cl<char, Sa, Sb> * |
|
||||
| file://:0:0:0:0 | _Complex _Float16 |
|
||||
| file://:0:0:0:0 | _Complex _Float32 |
|
||||
| file://:0:0:0:0 | _Complex _Float32x |
|
||||
| file://:0:0:0:0 | _Complex _Float64 |
|
||||
| file://:0:0:0:0 | _Complex _Float64x |
|
||||
| file://:0:0:0:0 | _Complex _Float128 |
|
||||
| file://:0:0:0:0 | _Complex __float128 |
|
||||
| file://:0:0:0:0 | _Complex double |
|
||||
| file://:0:0:0:0 | _Complex float |
|
||||
@@ -16,7 +21,9 @@
|
||||
| file://:0:0:0:0 | _Imaginary double |
|
||||
| file://:0:0:0:0 | _Imaginary float |
|
||||
| file://:0:0:0:0 | _Imaginary long double |
|
||||
| file://:0:0:0:0 | __bf16 |
|
||||
| file://:0:0:0:0 | __float128 |
|
||||
| file://:0:0:0:0 | __fp16 |
|
||||
| file://:0:0:0:0 | __int128 |
|
||||
| file://:0:0:0:0 | __va_list_tag |
|
||||
| file://:0:0:0:0 | __va_list_tag & |
|
||||
@@ -44,6 +51,7 @@
|
||||
| file://:0:0:0:0 | signed long |
|
||||
| file://:0:0:0:0 | signed long long |
|
||||
| file://:0:0:0:0 | signed short |
|
||||
| file://:0:0:0:0 | std::float16_t |
|
||||
| file://:0:0:0:0 | unknown |
|
||||
| file://:0:0:0:0 | unsigned __int128 |
|
||||
| file://:0:0:0:0 | unsigned char |
|
||||
|
||||
@@ -20,6 +20,11 @@
|
||||
| file://:0:0:0:0 | UnionWithDef & | 8 |
|
||||
| file://:0:0:0:0 | UnionWithDef && | 8 |
|
||||
| file://:0:0:0:0 | _Complex _Float16 | 4 |
|
||||
| file://:0:0:0:0 | _Complex _Float32 | 8 |
|
||||
| file://:0:0:0:0 | _Complex _Float32x | 16 |
|
||||
| file://:0:0:0:0 | _Complex _Float64 | 16 |
|
||||
| file://:0:0:0:0 | _Complex _Float64x | 32 |
|
||||
| file://:0:0:0:0 | _Complex _Float128 | 32 |
|
||||
| file://:0:0:0:0 | _Complex __float128 | 32 |
|
||||
| file://:0:0:0:0 | _Complex double | 16 |
|
||||
| file://:0:0:0:0 | _Complex float | 8 |
|
||||
@@ -37,7 +42,9 @@
|
||||
| file://:0:0:0:0 | _Imaginary float | 4 |
|
||||
| file://:0:0:0:0 | _Imaginary long double | 16 |
|
||||
| file://:0:0:0:0 | __attribute((vector_size(16))) int | 16 |
|
||||
| file://:0:0:0:0 | __bf16 | 2 |
|
||||
| file://:0:0:0:0 | __float128 | 16 |
|
||||
| file://:0:0:0:0 | __fp16 | 2 |
|
||||
| file://:0:0:0:0 | __int128 | 16 |
|
||||
| file://:0:0:0:0 | __va_list_tag | 24 |
|
||||
| file://:0:0:0:0 | __va_list_tag & | 8 |
|
||||
@@ -83,6 +90,7 @@
|
||||
| file://:0:0:0:0 | signed long | 8 |
|
||||
| file://:0:0:0:0 | signed long long | 8 |
|
||||
| file://:0:0:0:0 | signed short | 2 |
|
||||
| file://:0:0:0:0 | std::float16_t | 2 |
|
||||
| file://:0:0:0:0 | unknown | 1 |
|
||||
| file://:0:0:0:0 | unsigned __int128 | 16 |
|
||||
| file://:0:0:0:0 | unsigned char | 1 |
|
||||
|
||||
@@ -2,6 +2,11 @@
|
||||
| file://:0:0:0:0 | ..(*)(..) | ..(*)(..) |
|
||||
| file://:0:0:0:0 | Tmpl<T> | Tmpl<T> |
|
||||
| file://:0:0:0:0 | _Complex _Float16 | _Complex _Float16 |
|
||||
| file://:0:0:0:0 | _Complex _Float32 | _Complex _Float32 |
|
||||
| file://:0:0:0:0 | _Complex _Float32x | _Complex _Float32x |
|
||||
| file://:0:0:0:0 | _Complex _Float64 | _Complex _Float64 |
|
||||
| file://:0:0:0:0 | _Complex _Float64x | _Complex _Float64x |
|
||||
| file://:0:0:0:0 | _Complex _Float128 | _Complex _Float128 |
|
||||
| file://:0:0:0:0 | _Complex __float128 | _Complex __float128 |
|
||||
| file://:0:0:0:0 | _Complex double | _Complex double |
|
||||
| file://:0:0:0:0 | _Complex float | _Complex float |
|
||||
@@ -18,7 +23,9 @@
|
||||
| file://:0:0:0:0 | _Imaginary double | _Imaginary double |
|
||||
| file://:0:0:0:0 | _Imaginary float | _Imaginary float |
|
||||
| file://:0:0:0:0 | _Imaginary long double | _Imaginary long double |
|
||||
| file://:0:0:0:0 | __bf16 | __bf16 |
|
||||
| file://:0:0:0:0 | __float128 | __float128 |
|
||||
| file://:0:0:0:0 | __fp16 | __fp16 |
|
||||
| file://:0:0:0:0 | __int128 | __int128 |
|
||||
| file://:0:0:0:0 | __va_list_tag & | __va_list_tag & |
|
||||
| file://:0:0:0:0 | __va_list_tag && | __va_list_tag && |
|
||||
@@ -45,6 +52,7 @@
|
||||
| file://:0:0:0:0 | signed long | signed long |
|
||||
| file://:0:0:0:0 | signed long long | signed long long |
|
||||
| file://:0:0:0:0 | signed short | signed short |
|
||||
| file://:0:0:0:0 | std::float16_t | std::float16_t |
|
||||
| file://:0:0:0:0 | unknown | unknown |
|
||||
| file://:0:0:0:0 | unsigned __int128 | unsigned __int128 |
|
||||
| file://:0:0:0:0 | unsigned char | unsigned char |
|
||||
|
||||
@@ -756,7 +756,7 @@ test.cpp:
|
||||
# 92| valnum = r92_1, r92_3, r93_2
|
||||
# 92| m92_4(int) = Store[x] : &:r92_3, r92_2
|
||||
# 92| valnum = m92_4, m92_6, m93_4, r92_2, r92_5, r93_3
|
||||
# 92| r92_5(int) = CopyValue : r92_2
|
||||
# 92| r92_5(int) = Load[x] : &:r92_3, m92_4
|
||||
# 92| valnum = m92_4, m92_6, m93_4, r92_2, r92_5, r93_3
|
||||
# 92| m92_6(int) = Store[x] : &:r92_1, r92_5
|
||||
# 92| valnum = m92_4, m92_6, m93_4, r92_2, r92_5, r93_3
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
| ..()(..) | RoutineType | | | | |
|
||||
| ..(*)(..) | FunctionPointerType | | ..()(..) | | |
|
||||
| _Complex _Float16 | BinaryFloatingPointType, ComplexNumberType | | | | |
|
||||
| _Complex _Float32 | BinaryFloatingPointType, ComplexNumberType | | | | |
|
||||
| _Complex _Float32x | BinaryFloatingPointType, ComplexNumberType | | | | |
|
||||
| _Complex _Float64 | BinaryFloatingPointType, ComplexNumberType | | | | |
|
||||
| _Complex _Float64x | BinaryFloatingPointType, ComplexNumberType | | | | |
|
||||
| _Complex _Float128 | BinaryFloatingPointType, ComplexNumberType | | | | |
|
||||
| _Complex __float128 | BinaryFloatingPointType, ComplexNumberType | | | | |
|
||||
| _Complex double | BinaryFloatingPointType, ComplexNumberType | | | | |
|
||||
| _Complex float | BinaryFloatingPointType, ComplexNumberType | | | | |
|
||||
@@ -17,7 +22,9 @@
|
||||
| _Imaginary double | BinaryFloatingPointType, ImaginaryNumberType | | | | |
|
||||
| _Imaginary float | BinaryFloatingPointType, ImaginaryNumberType | | | | |
|
||||
| _Imaginary long double | BinaryFloatingPointType, ImaginaryNumberType | | | | |
|
||||
| __bf16 | BinaryFloatingPointType, RealNumberType | | | | |
|
||||
| __float128 | Float128Type | | | | |
|
||||
| __fp16 | BinaryFloatingPointType, RealNumberType | | | | |
|
||||
| __int128 | Int128Type | | | | |
|
||||
| __va_list_tag | DirectAccessHolder, MetricClass, Struct, StructLikeClass | | | | |
|
||||
| __va_list_tag & | LValueReferenceType | | __va_list_tag | | |
|
||||
@@ -83,6 +90,7 @@
|
||||
| signed long | LongType | | | | |
|
||||
| signed long long | LongLongType | | | | |
|
||||
| signed short | ShortType | | | | |
|
||||
| std::float16_t | BinaryFloatingPointType, RealNumberType | | | | |
|
||||
| unknown | UnknownType | | | | |
|
||||
| unsigned __int128 | Int128Type | | | | unsigned integral |
|
||||
| unsigned char | UnsignedCharType | | | | unsigned integral |
|
||||
|
||||
@@ -67,8 +67,6 @@ edges
|
||||
| argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... |
|
||||
| argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... |
|
||||
| argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... |
|
||||
| argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... |
|
||||
| argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:15:136:18 | -- ... |
|
||||
| argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:17:136:18 | i4 |
|
||||
| argvLocal.c:115:13:115:16 | argv | argvLocal.c:136:17:136:18 | i4 |
|
||||
| argvLocal.c:126:10:126:13 | argv | argvLocal.c:127:9:127:10 | i5 |
|
||||
@@ -163,7 +161,6 @@ nodes
|
||||
| argvLocal.c:135:9:135:12 | ... ++ | semmle.label | ... ++ |
|
||||
| argvLocal.c:136:15:136:18 | -- ... | semmle.label | -- ... |
|
||||
| argvLocal.c:136:15:136:18 | -- ... | semmle.label | -- ... |
|
||||
| argvLocal.c:136:15:136:18 | -- ... | semmle.label | -- ... |
|
||||
| argvLocal.c:136:17:136:18 | i4 | semmle.label | i4 |
|
||||
| argvLocal.c:139:9:139:26 | ... ? ... : ... | semmle.label | ... ? ... : ... |
|
||||
| argvLocal.c:139:9:139:26 | ... ? ... : ... | semmle.label | ... ? ... : ... |
|
||||
|
||||
Reference in New Issue
Block a user