Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 ; RUN: opt %s -replace-ptrs-with-ints -S | FileCheck %s | 1 ; RUN: opt %s -replace-ptrs-with-ints -S | FileCheck %s |
| 2 | 2 |
| 3 target datalayout = "p:32:32:32" | 3 target datalayout = "p:32:32:32" |
| 4 | 4 |
| 5 | 5 |
| 6 %struct = type { i32, i32 } | 6 %struct = type { i32, i32 } |
| 7 | 7 |
| 8 declare %struct* @addr_taken_func(%struct*) | 8 declare %struct* @addr_taken_func(%struct*) |
| 9 | 9 |
| 10 @addr_of_func = global %struct* (%struct*)* @addr_taken_func | 10 @addr_of_func = global %struct* (%struct*)* @addr_taken_func |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 237 ; CHECK-NEXT: %x = load i32* %ptr.asptr | 237 ; CHECK-NEXT: %x = load i32* %ptr.asptr |
| 238 | 238 |
| 239 define void @store_ptr(i8** %ptr, i8* %val) { | 239 define void @store_ptr(i8** %ptr, i8* %val) { |
| 240 store i8* %val, i8** %ptr | 240 store i8* %val, i8** %ptr |
| 241 ret void | 241 ret void |
| 242 } | 242 } |
| 243 ; CHECK: define void @store_ptr(i32 %ptr, i32 %val) { | 243 ; CHECK: define void @store_ptr(i32 %ptr, i32 %val) { |
| 244 ; CHECK-NEXT: %ptr.asptr = inttoptr i32 %ptr to i32* | 244 ; CHECK-NEXT: %ptr.asptr = inttoptr i32 %ptr to i32* |
| 245 ; CHECK-NEXT: store i32 %val, i32* %ptr.asptr | 245 ; CHECK-NEXT: store i32 %val, i32* %ptr.asptr |
| 246 | 246 |
| 247 | |
|
Mark Seaborn
2013/06/26 16:47:02
Please undo the whitespace changes in this file
JF
2013/06/26 22:56:36
Done.
| |
| 248 define i8 @load_attrs(i8* %ptr) { | 247 define i8 @load_attrs(i8* %ptr) { |
| 249 %x = load atomic volatile i8* %ptr seq_cst, align 128 | 248 %x = load atomic volatile i8* %ptr seq_cst, align 128 |
| 250 ret i8 %x | 249 ret i8 %x |
| 251 } | 250 } |
| 252 ; CHECK: define i8 @load_attrs(i32 %ptr) { | 251 ; CHECK: define i8 @load_attrs(i32 %ptr) { |
| 253 ; CHECK-NEXT: %ptr.asptr = inttoptr i32 %ptr to i8* | 252 ; CHECK-NEXT: %ptr.asptr = inttoptr i32 %ptr to i8* |
| 254 ; CHECK-NEXT: %x = load atomic volatile i8* %ptr.asptr seq_cst, align 128 | 253 ; CHECK-NEXT: %x = load atomic volatile i8* %ptr.asptr seq_cst, align 128 |
| 255 | 254 |
| 256 define void @store_attrs(i8* %ptr, i8 %val) { | 255 define void @store_attrs(i8* %ptr, i8 %val) { |
| 257 store atomic volatile i8 %val, i8* %ptr singlethread release, align 256 | 256 store atomic volatile i8 %val, i8* %ptr singlethread release, align 256 |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 271 ; CHECK-NEXT: %r = cmpxchg i32* %ptr.asptr, i32 %a, i32 %b seq_cst | 270 ; CHECK-NEXT: %r = cmpxchg i32* %ptr.asptr, i32 %a, i32 %b seq_cst |
| 272 | 271 |
| 273 define i32 @atomicrmw(i32* %ptr, i32 %x) { | 272 define i32 @atomicrmw(i32* %ptr, i32 %x) { |
| 274 %r = atomicrmw add i32* %ptr, i32 %x seq_cst | 273 %r = atomicrmw add i32* %ptr, i32 %x seq_cst |
| 275 ret i32 %r | 274 ret i32 %r |
| 276 } | 275 } |
| 277 ; CHECK: define i32 @atomicrmw(i32 %ptr, i32 %x) { | 276 ; CHECK: define i32 @atomicrmw(i32 %ptr, i32 %x) { |
| 278 ; CHECK-NEXT: %ptr.asptr = inttoptr i32 %ptr to i32* | 277 ; CHECK-NEXT: %ptr.asptr = inttoptr i32 %ptr to i32* |
| 279 ; CHECK-NEXT: %r = atomicrmw add i32* %ptr.asptr, i32 %x seq_cst | 278 ; CHECK-NEXT: %r = atomicrmw add i32* %ptr.asptr, i32 %x seq_cst |
| 280 | 279 |
| 281 | |
| 282 define i8* @indirect_call(i8* (i8*)* %func, i8* %arg) { | 280 define i8* @indirect_call(i8* (i8*)* %func, i8* %arg) { |
| 283 %result = call i8* %func(i8* %arg) | 281 %result = call i8* %func(i8* %arg) |
| 284 ret i8* %result | 282 ret i8* %result |
| 285 } | 283 } |
| 286 ; CHECK: define i32 @indirect_call(i32 %func, i32 %arg) { | 284 ; CHECK: define i32 @indirect_call(i32 %func, i32 %arg) { |
| 287 ; CHECK-NEXT: %func.asptr = inttoptr i32 %func to i32 (i32)* | 285 ; CHECK-NEXT: %func.asptr = inttoptr i32 %func to i32 (i32)* |
| 288 ; CHECK-NEXT: %result = call i32 %func.asptr(i32 %arg) | 286 ; CHECK-NEXT: %result = call i32 %func.asptr(i32 %arg) |
| 289 ; CHECK-NEXT: ret i32 %result | 287 ; CHECK-NEXT: ret i32 %result |
| 290 | 288 |
| 291 | 289 |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 630 %bc = bitcast i32* @typeid to i8* | 628 %bc = bitcast i32* @typeid to i8* |
| 631 call i32 @llvm.eh.typeid.for(i8* %bc) | 629 call i32 @llvm.eh.typeid.for(i8* %bc) |
| 632 ret void | 630 ret void |
| 633 } | 631 } |
| 634 ; CHECK: define void @typeid_for() { | 632 ; CHECK: define void @typeid_for() { |
| 635 ; CHECK-NEXT: %typeid.bc = bitcast i32* @typeid to i8* | 633 ; CHECK-NEXT: %typeid.bc = bitcast i32* @typeid to i8* |
| 636 ; CHECK-NEXT: call i32 @llvm.eh.typeid.for(i8* %typeid.bc) | 634 ; CHECK-NEXT: call i32 @llvm.eh.typeid.for(i8* %typeid.bc) |
| 637 | 635 |
| 638 | 636 |
| 639 ; CHECK: attributes {{.*}}[[NOUNWIND]] = { nounwind } | 637 ; CHECK: attributes {{.*}}[[NOUNWIND]] = { nounwind } |
| OLD | NEW |