| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 1 | ; RUN: llc -mtriple=arm64-apple-ios -O2 -aarch64-collect-loh -aarch64-collect-loh-bb-only=false < %s -o - | FileCheck %s | 
|  | 2 | ; Test case for <rdar://problem/15942912>. | 
|  | 3 | ; AdrpAddStr cannot be used when the store uses same | 
|  | 4 | ; register as address and value. Indeed, the related | 
|  | 5 | ; if applied, may completely remove the definition or | 
|  | 6 | ; at least provide a wrong one (with the offset folded | 
|  | 7 | ; into the definition). | 
|  | 8 |  | 
|  | 9 | %struct.anon = type { i32*, i32** } | 
|  | 10 |  | 
|  | 11 | @pptp_wan_head = internal global %struct.anon zeroinitializer, align 8 | 
|  | 12 |  | 
|  | 13 | ; CHECK-LABEL: _pptp_wan_init | 
|  | 14 | ; CHECK: ret | 
|  | 15 | ; CHECK-NOT: AdrpAddStr | 
|  | 16 | define i32 @pptp_wan_init() { | 
|  | 17 | entry: | 
|  | 18 | store i32* null, i32** getelementptr inbounds (%struct.anon* @pptp_wan_head, i64 0, i32 0), align 8 | 
|  | 19 | store i32** getelementptr inbounds (%struct.anon* @pptp_wan_head, i64 0, i32 0), i32*** getelementptr inbounds (%struct.anon* @pptp_wan_head, i64 0, i32 1), align 8 | 
|  | 20 | ret i32 0 | 
|  | 21 | } | 
|  | 22 |  | 
|  | 23 |  |