| ; RUN: llc < %s -mtriple=arm64-eabi | FileCheck %s | 
 |  | 
 | ; ARM64ISelLowering.cpp was creating a new (floating-point) load for efficiency | 
 | ; but not updating chain-successors of the old one. As a result, the two memory | 
 | ; operations in this function both ended up direct successors to the EntryToken | 
 | ; and could be reordered. | 
 |  | 
 | @var = dso_local global i32 0, align 4 | 
 |  | 
 | define dso_local float @foo() { | 
 | ; CHECK-LABEL: foo: | 
 |   ; Load must come before we clobber @var | 
 | ; CHECK: adrp x[[VARBASE:[0-9]+]], {{_?var}} | 
 | ; CHECK: ldr [[SREG:s[0-9]+]], [x[[VARBASE]], | 
 | ; CHECK: str wzr, [x[[VARBASE]], | 
 |  | 
 |   %val = load i32, ptr @var, align 4 | 
 |   store i32 0, ptr @var, align 4 | 
 |  | 
 |   %fltval = sitofp i32 %val to float | 
 |   ret float %fltval | 
 | } |