Skip to content

Commit cc5a689

Browse files
author
Dave Bartolomeo
committed
C++/C#: Fix up after merge from master
1 parent f5e320e commit cc5a689

File tree

8 files changed

+499
-331
lines changed

8 files changed

+499
-331
lines changed

cpp/ql/src/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,9 @@ class UnknownNonLocalMemoryLocation extends TUnknownNonLocalMemoryLocation, Memo
176176

177177
final override VirtualVariable getVirtualVariable() { result = TUnknownVirtualVariable(irFunc) }
178178

179-
final override Type getType() { result instanceof UnknownType }
179+
final override Language::LanguageType getType() {
180+
result = any(IRUnknownType type).getCanonicalLanguageType()
181+
}
180182

181183
final override string getUniqueId() { result = "{UnknownNonLocal}" }
182184
}

cpp/ql/src/semmle/code/cpp/ir/implementation/raw/internal/TranslatedFunction.qll

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,7 @@ class TranslatedFunction extends TranslatedElement, TTranslatedFunction {
172172
or
173173
tag = AliasedUseTag() and
174174
opcode instanceof Opcode::AliasedUse and
175-
resultType instanceof VoidType and
176-
isGLValue = false
175+
resultType = getVoidType()
177176
or
178177
tag = ExitFunctionTag() and
179178
opcode instanceof Opcode::ExitFunction and

cpp/ql/test/library-tests/ir/ir/raw_ir.expected

Lines changed: 292 additions & 146 deletions
Large diffs are not rendered by default.

cpp/ql/test/library-tests/ir/ssa/aliased_ssa_ir.expected

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ ssa.cpp:
8484
# 13| r6_12(glval<int>) = VariableAddress[#return] :
8585
# 13| v6_13(void) = ReturnValue : &:r6_12, m6_11
8686
# 13| v6_14(void) = UnmodeledUse : mu*
87-
# 13| v6_15(void) = ExitFunction :
87+
# 13| v6_15(void) = AliasedUse : ~m6_0
88+
# 13| v6_16(void) = ExitFunction :
8889

8990
# 31| int UnreachableViaGoto()
9091
# 31| Block 0
@@ -99,7 +100,8 @@ ssa.cpp:
99100
# 31| r0_8(glval<int>) = VariableAddress[#return] :
100101
# 31| v0_9(void) = ReturnValue : &:r0_8, m0_7
101102
# 31| v0_10(void) = UnmodeledUse : mu*
102-
# 31| v0_11(void) = ExitFunction :
103+
# 31| v0_11(void) = AliasedUse : ~m0_1
104+
# 31| v0_12(void) = ExitFunction :
103105

104106
# 38| int UnreachableIf(bool)
105107
# 38| Block 0
@@ -125,7 +127,8 @@ ssa.cpp:
125127
# 38| r1_1(glval<int>) = VariableAddress[#return] :
126128
# 38| v1_2(void) = ReturnValue : &:r1_1, m1_0
127129
# 38| v1_3(void) = UnmodeledUse : mu*
128-
# 38| v1_4(void) = ExitFunction :
130+
# 38| v1_4(void) = AliasedUse : ~m0_1
131+
# 38| v1_5(void) = ExitFunction :
129132

130133
# 42| Block 2
131134
# 42| r2_0(glval<int>) = VariableAddress[x] :
@@ -188,7 +191,8 @@ ssa.cpp:
188191
# 59| r1_4(glval<int>) = VariableAddress[#return] :
189192
# 59| v1_5(void) = ReturnValue : &:r1_4, m1_3
190193
# 59| v1_6(void) = UnmodeledUse : mu*
191-
# 59| v1_7(void) = ExitFunction :
194+
# 59| v1_7(void) = AliasedUse : ~m0_1
195+
# 59| v1_8(void) = ExitFunction :
192196

193197
# 59| Block 2
194198
# 59| v2_0(void) = Unreached :
@@ -219,7 +223,8 @@ ssa.cpp:
219223
# 71| v2_0(void) = NoOp :
220224
# 68| v2_1(void) = ReturnVoid :
221225
# 68| v2_2(void) = UnmodeledUse : mu*
222-
# 68| v2_3(void) = ExitFunction :
226+
# 68| v2_3(void) = AliasedUse : ~m3_0
227+
# 68| v2_4(void) = ExitFunction :
223228

224229
# 69| Block 3
225230
# 69| m3_0(unknown) = Phi : from 0:~m0_1, from 1:~m1_7
@@ -291,7 +296,8 @@ ssa.cpp:
291296
# 89| v3_14(void) = NoOp :
292297
# 75| v3_15(void) = ReturnVoid :
293298
# 75| v3_16(void) = UnmodeledUse : mu*
294-
# 75| v3_17(void) = ExitFunction :
299+
# 75| v3_17(void) = AliasedUse : ~m0_1
300+
# 75| v3_18(void) = ExitFunction :
295301

296302
# 91| void MustExactlyOverlap(Point)
297303
# 91| Block 0
@@ -307,7 +313,8 @@ ssa.cpp:
307313
# 93| v0_9(void) = NoOp :
308314
# 91| v0_10(void) = ReturnVoid :
309315
# 91| v0_11(void) = UnmodeledUse : mu*
310-
# 91| v0_12(void) = ExitFunction :
316+
# 91| v0_12(void) = AliasedUse : ~m0_1
317+
# 91| v0_13(void) = ExitFunction :
311318

312319
# 95| void MustExactlyOverlapEscaped(Point)
313320
# 95| Block 0
@@ -333,7 +340,8 @@ ssa.cpp:
333340
# 98| v0_19(void) = NoOp :
334341
# 95| v0_20(void) = ReturnVoid :
335342
# 95| v0_21(void) = UnmodeledUse : mu*
336-
# 95| v0_22(void) = ExitFunction :
343+
# 95| v0_22(void) = AliasedUse : ~m0_15
344+
# 95| v0_23(void) = ExitFunction :
337345

338346
# 100| void MustTotallyOverlap(Point)
339347
# 100| Block 0
@@ -355,7 +363,8 @@ ssa.cpp:
355363
# 103| v0_15(void) = NoOp :
356364
# 100| v0_16(void) = ReturnVoid :
357365
# 100| v0_17(void) = UnmodeledUse : mu*
358-
# 100| v0_18(void) = ExitFunction :
366+
# 100| v0_18(void) = AliasedUse : ~m0_1
367+
# 100| v0_19(void) = ExitFunction :
359368

360369
# 105| void MustTotallyOverlapEscaped(Point)
361370
# 105| Block 0
@@ -387,7 +396,8 @@ ssa.cpp:
387396
# 109| v0_25(void) = NoOp :
388397
# 105| v0_26(void) = ReturnVoid :
389398
# 105| v0_27(void) = UnmodeledUse : mu*
390-
# 105| v0_28(void) = ExitFunction :
399+
# 105| v0_28(void) = AliasedUse : ~m0_21
400+
# 105| v0_29(void) = ExitFunction :
391401

392402
# 111| void MayPartiallyOverlap(int, int)
393403
# 111| Block 0
@@ -417,7 +427,8 @@ ssa.cpp:
417427
# 114| v0_23(void) = NoOp :
418428
# 111| v0_24(void) = ReturnVoid :
419429
# 111| v0_25(void) = UnmodeledUse : mu*
420-
# 111| v0_26(void) = ExitFunction :
430+
# 111| v0_26(void) = AliasedUse : ~m0_1
431+
# 111| v0_27(void) = ExitFunction :
421432

422433
# 116| void MayPartiallyOverlapEscaped(int, int)
423434
# 116| Block 0
@@ -457,7 +468,8 @@ ssa.cpp:
457468
# 120| v0_33(void) = NoOp :
458469
# 116| v0_34(void) = ReturnVoid :
459470
# 116| v0_35(void) = UnmodeledUse : mu*
460-
# 116| v0_36(void) = ExitFunction :
471+
# 116| v0_36(void) = AliasedUse : ~m0_29
472+
# 116| v0_37(void) = ExitFunction :
461473

462474
# 122| void MergeMustExactlyOverlap(bool, int, int)
463475
# 122| Block 0
@@ -519,7 +531,8 @@ ssa.cpp:
519531
# 132| v3_11(void) = NoOp :
520532
# 122| v3_12(void) = ReturnVoid :
521533
# 122| v3_13(void) = UnmodeledUse : mu*
522-
# 122| v3_14(void) = ExitFunction :
534+
# 122| v3_14(void) = AliasedUse : ~m0_1
535+
# 122| v3_15(void) = ExitFunction :
523536

524537
# 134| void MergeMustExactlyWithMustTotallyOverlap(bool, Point, int)
525538
# 134| Block 0
@@ -575,7 +588,8 @@ ssa.cpp:
575588
# 143| v3_7(void) = NoOp :
576589
# 134| v3_8(void) = ReturnVoid :
577590
# 134| v3_9(void) = UnmodeledUse : mu*
578-
# 134| v3_10(void) = ExitFunction :
591+
# 134| v3_10(void) = AliasedUse : ~m0_1
592+
# 134| v3_11(void) = ExitFunction :
579593

580594
# 145| void MergeMustExactlyWithMayPartiallyOverlap(bool, Point, int)
581595
# 145| Block 0
@@ -629,7 +643,8 @@ ssa.cpp:
629643
# 154| v3_5(void) = NoOp :
630644
# 145| v3_6(void) = ReturnVoid :
631645
# 145| v3_7(void) = UnmodeledUse : mu*
632-
# 145| v3_8(void) = ExitFunction :
646+
# 145| v3_8(void) = AliasedUse : ~m0_1
647+
# 145| v3_9(void) = ExitFunction :
633648

634649
# 156| void MergeMustTotallyOverlapWithMayPartiallyOverlap(bool, Rect, int)
635650
# 156| Block 0
@@ -685,7 +700,8 @@ ssa.cpp:
685700
# 165| v3_6(void) = NoOp :
686701
# 156| v3_7(void) = ReturnVoid :
687702
# 156| v3_8(void) = UnmodeledUse : mu*
688-
# 156| v3_9(void) = ExitFunction :
703+
# 156| v3_9(void) = AliasedUse : ~m0_1
704+
# 156| v3_10(void) = ExitFunction :
689705

690706
# 171| void WrapperStruct(Wrapper)
691707
# 171| Block 0
@@ -719,7 +735,8 @@ ssa.cpp:
719735
# 177| v0_27(void) = NoOp :
720736
# 171| v0_28(void) = ReturnVoid :
721737
# 171| v0_29(void) = UnmodeledUse : mu*
722-
# 171| v0_30(void) = ExitFunction :
738+
# 171| v0_30(void) = AliasedUse : ~m0_1
739+
# 171| v0_31(void) = ExitFunction :
723740

724741
# 179| int AsmStmt(int*)
725742
# 179| Block 0
@@ -738,7 +755,8 @@ ssa.cpp:
738755
# 179| r0_12(glval<int>) = VariableAddress[#return] :
739756
# 179| v0_13(void) = ReturnValue : &:r0_12, m0_11
740757
# 179| v0_14(void) = UnmodeledUse : mu*
741-
# 179| v0_15(void) = ExitFunction :
758+
# 179| v0_15(void) = AliasedUse : ~m0_6
759+
# 179| v0_16(void) = ExitFunction :
742760

743761
# 184| void AsmStmtWithOutputs(unsigned int&, unsigned int&, unsigned int&, unsigned int&)
744762
# 184| Block 0
@@ -768,7 +786,8 @@ ssa.cpp:
768786
# 192| v0_23(void) = NoOp :
769787
# 184| v0_24(void) = ReturnVoid :
770788
# 184| v0_25(void) = UnmodeledUse : mu*
771-
# 184| v0_26(void) = ExitFunction :
789+
# 184| v0_26(void) = AliasedUse : ~m0_22
790+
# 184| v0_27(void) = ExitFunction :
772791

773792
# 198| int PureFunctions(char*, char*, int)
774793
# 198| Block 0
@@ -817,7 +836,8 @@ ssa.cpp:
817836
# 198| r0_42(glval<int>) = VariableAddress[#return] :
818837
# 198| v0_43(void) = ReturnValue : &:r0_42, m0_41
819838
# 198| v0_44(void) = UnmodeledUse : mu*
820-
# 198| v0_45(void) = ExitFunction :
839+
# 198| v0_45(void) = AliasedUse : ~m0_1
840+
# 198| v0_46(void) = ExitFunction :
821841

822842
# 207| int ModeledCallTarget(int)
823843
# 207| Block 0
@@ -847,4 +867,5 @@ ssa.cpp:
847867
# 207| r0_23(glval<int>) = VariableAddress[#return] :
848868
# 207| v0_24(void) = ReturnValue : &:r0_23, m0_22
849869
# 207| v0_25(void) = UnmodeledUse : mu*
850-
# 207| v0_26(void) = ExitFunction :
870+
# 207| v0_26(void) = AliasedUse : ~m0_1
871+
# 207| v0_27(void) = ExitFunction :

0 commit comments

Comments
 (0)