| // Copyright 2017 the V8 project authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | // Flags: --allow-natives-syntax | 
 |  | 
 | function foo(arg) { | 
 |   var value; | 
 |   // None of the branches of this switch are ever taken, but | 
 |   // the sequence means value could be the hole. | 
 |   switch (arg) { | 
 |     case 1: | 
 |       let let_var = 1; | 
 |     case 2: | 
 |       value = let_var; | 
 |   } | 
 |   // Speculative number binop with NumberOrOddball feedback. | 
 |   // Shouldn't be optimized to pure operator since value's phi | 
 |   // could theoretically be the hole (we would have already thrown a | 
 |   // reference error in case 2 above if so, but TF typing still | 
 |   // thinks it could be the hole). | 
 |   return value * undefined; | 
 | } | 
 |  | 
 | %PrepareFunctionForOptimization(foo); | 
 | foo(3); | 
 | foo(3); | 
 | %OptimizeFunctionOnNextCall(foo); | 
 | foo(3); |