C++: respond to PR comments

This commit is contained in:
Robert Marsh
2019-05-31 11:03:49 -07:00
parent 98d6f5919f
commit 2770b2a9b9
7 changed files with 49 additions and 63 deletions

View File

@@ -215,6 +215,6 @@ module Opcode {
class BufferWriteSideEffect extends WriteSideEffectOpcode, BufferAccessOpcode, TBufferWriteSideEffect { override final string toString() { result = "BufferWriteSideEffect" } }
class BufferMayWriteSideEffect extends MayWriteSideEffectOpcode, BufferAccessOpcode, TBufferMayWriteSideEffect { override final string toString() { result = "BufferMayWriteSideEffect" } }
class Chi extends Opcode, TChi { override final string toString() { result = "Chi" } }
class InlineAsm extends Opcode, TInlineAsm { override final string toString() { result = "InlineAsm" } }
class InlineAsm extends MayWriteSideEffectOpcode, TInlineAsm { override final string toString() { result = "InlineAsm" } }
class Unreached extends Opcode, TUnreached { override final string toString() { result = "Unreached" } }
}

View File

@@ -7591,29 +7591,29 @@ ir.cpp:
# 1104| 3: d
# 1104| Type = unsigned int &
# 1105| body: { ... }
# 1107| 0: asm statement
# 1110| 0: (reference dereference)
# 1110| Type = unsigned int
# 1110| ValueCategory = lvalue
# 1110| expr: a
# 1110| Type = unsigned int &
# 1110| ValueCategory = prvalue(load)
# 1110| 1: (reference dereference)
# 1110| Type = unsigned int
# 1110| ValueCategory = lvalue
# 1110| expr: b
# 1110| Type = unsigned int &
# 1110| ValueCategory = prvalue(load)
# 1110| 2: (reference dereference)
# 1110| Type = unsigned int
# 1110| ValueCategory = lvalue
# 1110| expr: c
# 1110| Type = unsigned int &
# 1110| ValueCategory = prvalue(load)
# 1110| 3: (reference dereference)
# 1110| Type = unsigned int
# 1110| ValueCategory = lvalue
# 1110| expr: d
# 1110| Type = unsigned int &
# 1110| ValueCategory = prvalue(load)
# 1118| 1: return ...
# 1106| 0: asm statement
# 1109| 0: (reference dereference)
# 1109| Type = unsigned int
# 1109| ValueCategory = lvalue
# 1109| expr: a
# 1109| Type = unsigned int &
# 1109| ValueCategory = prvalue(load)
# 1109| 1: (reference dereference)
# 1109| Type = unsigned int
# 1109| ValueCategory = lvalue
# 1109| expr: b
# 1109| Type = unsigned int &
# 1109| ValueCategory = prvalue(load)
# 1109| 2: (reference dereference)
# 1109| Type = unsigned int
# 1109| ValueCategory = lvalue
# 1109| expr: c
# 1109| Type = unsigned int &
# 1109| ValueCategory = prvalue(load)
# 1109| 3: (reference dereference)
# 1109| Type = unsigned int
# 1109| ValueCategory = lvalue
# 1109| expr: d
# 1109| Type = unsigned int &
# 1109| ValueCategory = prvalue(load)
# 1111| 1: return ...

View File

@@ -1103,18 +1103,11 @@ int AsmStmt(int x) {
static void AsmStmtWithOutputs(unsigned int& a, unsigned int& b, unsigned int& c, unsigned int& d)
{
#if defined(__GNUC__)
__asm__ __volatile__
(
"cpuid\n\t"
: "+a" (a), "+b" (b), "+c" (c), "+d" (d)
);
#else
a++;
b++;
c++;
d++;
#endif
}
// semmle-extractor-options: -std=c++17

View File

@@ -5006,7 +5006,7 @@ ir.cpp:
# 1099| mu0_2(unknown) = UnmodeledDefinition :
# 1099| r0_3(glval<int>) = VariableAddress[x] :
# 1099| mu0_4(int) = InitializeParameter[x] : &:r0_3
# 1100| mu0_5(unknown) = InlineAsm : ~mu0_2
# 1100| mu0_5(unknown) = ^InlineAsm : ~mu0_2
# 1101| r0_6(glval<int>) = VariableAddress[#return] :
# 1101| r0_7(glval<int>) = VariableAddress[x] :
# 1101| r0_8(int) = Load : &:r0_7, ~mu0_2
@@ -5029,12 +5029,12 @@ ir.cpp:
# 1104| mu0_8(unsigned int &) = InitializeParameter[c] : &:r0_7
# 1104| r0_9(glval<unsigned int &>) = VariableAddress[d] :
# 1104| mu0_10(unsigned int &) = InitializeParameter[d] : &:r0_9
# 1107| r0_11(glval<unsigned int &>) = VariableAddress[a] :
# 1107| r0_12(glval<unsigned int &>) = VariableAddress[b] :
# 1107| r0_13(glval<unsigned int &>) = VariableAddress[c] :
# 1107| r0_14(glval<unsigned int &>) = VariableAddress[d] :
# 1107| mu0_15(unknown) = InlineAsm : ~mu0_2, 0:r0_11, 1:r0_12, 2:r0_13, 3:r0_14
# 1118| v0_16(void) = NoOp :
# 1106| r0_11(glval<unsigned int &>) = VariableAddress[a] :
# 1106| r0_12(glval<unsigned int &>) = VariableAddress[b] :
# 1106| r0_13(glval<unsigned int &>) = VariableAddress[c] :
# 1106| r0_14(glval<unsigned int &>) = VariableAddress[d] :
# 1106| mu0_15(unknown) = ^InlineAsm : ~mu0_2, 0:r0_11, 1:r0_12, 2:r0_13, 3:r0_14
# 1111| v0_16(void) = NoOp :
# 1104| v0_17(void) = ReturnVoid :
# 1104| v0_18(void) = UnmodeledUse : mu*
# 1104| v0_19(void) = ExitFunction :

View File

@@ -719,7 +719,7 @@ ssa.cpp:
# 179| mu0_2(unknown) = UnmodeledDefinition :
# 179| r0_3(glval<int *>) = VariableAddress[p] :
# 179| m0_4(int *) = InitializeParameter[p] : &:r0_3
# 180| m0_5(unknown) = InlineAsm : ~mu0_2
# 180| m0_5(unknown) = ^InlineAsm : ~mu0_2
# 180| m0_6(unknown) = Chi : total:m0_1, partial:m0_5
# 181| r0_7(glval<int>) = VariableAddress[#return] :
# 181| r0_8(glval<int *>) = VariableAddress[p] :
@@ -748,13 +748,13 @@ ssa.cpp:
# 184| r0_12(glval<unsigned int &>) = VariableAddress[d] :
# 184| m0_13(unsigned int &) = InitializeParameter[d] : &:r0_12
# 184| m0_14(unknown) = Chi : total:m0_11, partial:m0_13
# 187| r0_15(glval<unsigned int &>) = VariableAddress[a] :
# 187| r0_16(glval<unsigned int &>) = VariableAddress[b] :
# 187| r0_17(glval<unsigned int &>) = VariableAddress[c] :
# 187| r0_18(glval<unsigned int &>) = VariableAddress[d] :
# 187| m0_19(unknown) = InlineAsm : ~mu0_2, 0:r0_15, 1:r0_16, 2:r0_17, 3:r0_18
# 187| m0_20(unknown) = Chi : total:m0_14, partial:m0_19
# 199| v0_21(void) = NoOp :
# 186| r0_15(glval<unsigned int &>) = VariableAddress[a] :
# 186| r0_16(glval<unsigned int &>) = VariableAddress[b] :
# 186| r0_17(glval<unsigned int &>) = VariableAddress[c] :
# 186| r0_18(glval<unsigned int &>) = VariableAddress[d] :
# 186| m0_19(unknown) = ^InlineAsm : ~mu0_2, 0:r0_15, 1:r0_16, 2:r0_17, 3:r0_18
# 186| m0_20(unknown) = Chi : total:m0_14, partial:m0_19
# 192| v0_21(void) = NoOp :
# 184| v0_22(void) = ReturnVoid :
# 184| v0_23(void) = UnmodeledUse : mu*
# 184| v0_24(void) = ExitFunction :

View File

@@ -183,17 +183,10 @@ int AsmStmt(int *p) {
static void AsmStmtWithOutputs(unsigned int& a, unsigned int& b, unsigned int& c, unsigned int& d)
{
#if defined(__GNUC__)
__asm__ __volatile__
(
"cpuid\n\t"
: "+a" (a), "+b" (b)
: "c" (c), "d" (d)
);
#else
a++;
b++;
c++;
d++;
#endif
}

View File

@@ -691,7 +691,7 @@ ssa.cpp:
# 179| mu0_2(unknown) = UnmodeledDefinition :
# 179| r0_3(glval<int *>) = VariableAddress[p] :
# 179| m0_4(int *) = InitializeParameter[p] : &:r0_3
# 180| mu0_5(unknown) = InlineAsm : ~mu0_2
# 180| mu0_5(unknown) = ^InlineAsm : ~mu0_2
# 181| r0_6(glval<int>) = VariableAddress[#return] :
# 181| r0_7(glval<int *>) = VariableAddress[p] :
# 181| r0_8(int *) = Load : &:r0_7, m0_4
@@ -715,12 +715,12 @@ ssa.cpp:
# 184| mu0_8(unsigned int &) = InitializeParameter[c] : &:r0_7
# 184| r0_9(glval<unsigned int &>) = VariableAddress[d] :
# 184| mu0_10(unsigned int &) = InitializeParameter[d] : &:r0_9
# 187| r0_11(glval<unsigned int &>) = VariableAddress[a] :
# 187| r0_12(glval<unsigned int &>) = VariableAddress[b] :
# 187| r0_13(glval<unsigned int &>) = VariableAddress[c] :
# 187| r0_14(glval<unsigned int &>) = VariableAddress[d] :
# 187| mu0_15(unknown) = InlineAsm : ~mu0_2, 0:r0_11, 1:r0_12, 2:r0_13, 3:r0_14
# 199| v0_16(void) = NoOp :
# 186| r0_11(glval<unsigned int &>) = VariableAddress[a] :
# 186| r0_12(glval<unsigned int &>) = VariableAddress[b] :
# 186| r0_13(glval<unsigned int &>) = VariableAddress[c] :
# 186| r0_14(glval<unsigned int &>) = VariableAddress[d] :
# 186| mu0_15(unknown) = ^InlineAsm : ~mu0_2, 0:r0_11, 1:r0_12, 2:r0_13, 3:r0_14
# 192| v0_16(void) = NoOp :
# 184| v0_17(void) = ReturnVoid :
# 184| v0_18(void) = UnmodeledUse : mu*
# 184| v0_19(void) = ExitFunction :