Skip to content

Commit 9220890

Browse files
alexmarkovcommit-bot@chromium.org
authored andcommitted
[vm/bytecode] Do not emit inferred type if unreachable
Closes: #38965 Change-Id: Id74ed952f2f632fe8028a765d0cf717e04830954 Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,app-kernel-linux-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-dartkb-linux-debug-simarm64-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-dartkb-linux-debug-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-dartkb-linux-release-x64-abi-try,vm-kernel-precomp-android-release-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try,vm-kernel-precomp-android-release-arm_x64-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-precomp-mac-release-simarm_x64-try,dart-sdk-linux-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122147 Commit-Queue: Daco Harkes <dacoharkes@google.com> Reviewed-by: Daco Harkes <dacoharkes@google.com> Reviewed-by: Alexander Markov <alexmarkov@google.com>
1 parent fd0617b commit 9220890

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

pkg/vm/lib/bytecode/gen_bytecode.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1697,7 +1697,7 @@ class BytecodeGenerator extends RecursiveVisitor<Null> {
16971697

16981698
void _appendInferredType(TreeNode node, int pc) {
16991699
final InferredType md = inferredTypeMetadata[node];
1700-
if (md == null) {
1700+
if (md == null || (pc >= 0 && asm.isUnreachable)) {
17011701
return;
17021702
}
17031703
inferredTypesAttribute ??= <Constant>[];
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
// Regression test for dartbug.com/38965.
6+
7+
int a = -1;
8+
9+
main() {
10+
false ? (-0.0 as int) : (++a);
11+
}

0 commit comments

Comments
 (0)