1*f1ec0d12SNick Anderson; RUN: opt -passes='require<profile-summary>,function(codegenprepare)' -S -mtriple=x86_64 < %s | FileCheck %s 25a56a25bSFangrui Song 35a56a25bSFangrui Song@tmp = global i8 0 45a56a25bSFangrui Song 55a56a25bSFangrui Song; CHECK-LABEL: define void @foo() { 65a56a25bSFangrui Songdefine void @foo() { 75a56a25bSFangrui Songenter: 85a56a25bSFangrui Song ; CHECK-NOT: !invariant.group 9d9e51e75SMatt Arsenault ; CHECK-NOT: @llvm.launder.invariant.group.p0( 10d9e51e75SMatt Arsenault ; CHECK: %val = load i8, ptr @tmp, align 1{{$}} 11d9e51e75SMatt Arsenault %val = load i8, ptr @tmp, !invariant.group !0 12d9e51e75SMatt Arsenault %ptr = call ptr @llvm.launder.invariant.group.p0(ptr @tmp) 135a56a25bSFangrui Song 14d9e51e75SMatt Arsenault ; CHECK: store i8 42, ptr @tmp, align 1{{$}} 15d9e51e75SMatt Arsenault store i8 42, ptr %ptr, !invariant.group !0 165a56a25bSFangrui Song 175a56a25bSFangrui Song ret void 185a56a25bSFangrui Song} 195a56a25bSFangrui Song; CHECK-LABEL: } 205a56a25bSFangrui Song 215a56a25bSFangrui Song; CHECK-LABEL: define void @foo2() { 225a56a25bSFangrui Songdefine void @foo2() { 235a56a25bSFangrui Songenter: 245a56a25bSFangrui Song ; CHECK-NOT: !invariant.group 25d9e51e75SMatt Arsenault ; CHECK-NOT: @llvm.strip.invariant.group.p0( 26d9e51e75SMatt Arsenault ; CHECK: %val = load i8, ptr @tmp, align 1{{$}} 27d9e51e75SMatt Arsenault %val = load i8, ptr @tmp, !invariant.group !0 28d9e51e75SMatt Arsenault %ptr = call ptr @llvm.strip.invariant.group.p0(ptr @tmp) 295a56a25bSFangrui Song 30d9e51e75SMatt Arsenault ; CHECK: store i8 42, ptr @tmp, align 1{{$}} 31d9e51e75SMatt Arsenault store i8 42, ptr %ptr, !invariant.group !0 325a56a25bSFangrui Song 335a56a25bSFangrui Song ret void 345a56a25bSFangrui Song} 355a56a25bSFangrui Song; CHECK-LABEL: } 365a56a25bSFangrui Song 375a56a25bSFangrui Song 38d9e51e75SMatt Arsenaultdeclare ptr @llvm.launder.invariant.group.p0(ptr) 39d9e51e75SMatt Arsenaultdeclare ptr @llvm.strip.invariant.group.p0(ptr) 405a56a25bSFangrui Song!0 = !{} 41