mirror of
https://github.com/github/codeql.git
synced 2026-04-28 10:15:14 +02:00
C++: add support for GNU StmtExpr in IR
This commit is contained in:
@@ -8,6 +8,8 @@ private import TranslatedDeclarationEntry
|
||||
private import TranslatedElement
|
||||
private import TranslatedFunction
|
||||
private import TranslatedInitialization
|
||||
private import TranslatedFunction
|
||||
private import TranslatedStmt
|
||||
import TranslatedCall
|
||||
|
||||
/**
|
||||
@@ -2727,3 +2729,36 @@ class TranslatedLambdaExpr extends TranslatedNonConstantExpr, InitializationCont
|
||||
result = getTranslatedInitialization(expr.getChild(0).getFullyConverted())
|
||||
}
|
||||
}
|
||||
|
||||
class TranslatedStmtExpr extends TranslatedNonConstantExpr {
|
||||
override StmtExpr expr;
|
||||
|
||||
override final Instruction getFirstInstruction() {
|
||||
result = getStmt().getFirstInstruction()
|
||||
}
|
||||
|
||||
override final TranslatedElement getChild(int id) {
|
||||
id = 0 and result = getStmt()
|
||||
}
|
||||
|
||||
override Instruction getInstructionSuccessor(InstructionTag tag, EdgeKind kind) {
|
||||
none()
|
||||
}
|
||||
|
||||
override Instruction getChildSuccessor(TranslatedElement child) {
|
||||
result = getParent().getChildSuccessor(this)
|
||||
}
|
||||
|
||||
override predicate hasInstruction(Opcode opcode, InstructionTag tag, Type resultType,
|
||||
boolean isGLValue) {
|
||||
none()
|
||||
}
|
||||
|
||||
override Instruction getResult() {
|
||||
result = getTranslatedExpr(expr.getResultExpr()).getResult()
|
||||
}
|
||||
|
||||
TranslatedStmt getStmt() {
|
||||
result = getTranslatedStmt(expr.getStmt())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user