Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: test/Transforms/NaCl/replace-ptrs-with-ints.ll

Issue 940243003: PNaCl localmod mods in LLVM to 223109 (local files only) (Closed)
Patch Set: fix comment Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 %val = call i16* asm "foo", "=r,r"(i8* %ptr) 386 %val = call i16* asm "foo", "=r,r"(i8* %ptr)
387 ret i16* %val 387 ret i16* %val
388 } 388 }
389 389
390 define i16** @inline_asm2(i8** %ptr) { 390 define i16** @inline_asm2(i8** %ptr) {
391 %val = call i16** asm "foo", "=r,r"(i8** %ptr) 391 %val = call i16** asm "foo", "=r,r"(i8** %ptr)
392 ret i16** %val 392 ret i16** %val
393 } 393 }
394 394
395 395
396 declare void @llvm.dbg.declare(metadata, metadata) 396 declare void @llvm.dbg.declare(metadata, metadata, metadata)
397 declare void @llvm.dbg.value(metadata, i64, metadata) 397 declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
398 398
399 define void @debug_declare(i32 %val) { 399 define void @debug_declare(i32 %val) {
400 ; We normally expect llvm.dbg.declare to be used on an alloca. 400 ; We normally expect llvm.dbg.declare to be used on an alloca.
401 %var = alloca i32 401 %var = alloca i32
402 tail call void @llvm.dbg.declare(metadata !{i32* %var}, metadata !{}) 402 call void @llvm.dbg.declare(metadata !{i32* %var}, metadata !2, metadata !14)
403 tail call void @llvm.dbg.declare(metadata !{i32 %val}, metadata !{}) 403 call void @llvm.dbg.declare(metadata !{i32 %val}, metadata !2, metadata !14)
404 ret void 404 ret void
405 } 405 }
406 ; CHECK: define void @debug_declare(i32 %val) { 406 ; CHECK: define void @debug_declare(i32 %val) {
407 ; CHECK-NEXT: %var = alloca i32 407 ; CHECK-NEXT: %var = alloca i32
408 ; CHECK-NEXT: call void @llvm.dbg.declare(metadata !{i32* %var}, metadata !2) 408 ; CHECK-NEXT: call void @llvm.dbg.declare(metadata !{i32* %var}, metadata !2, me tadata !14)
409 ; This case is currently not converted. 409 ; This case is currently not converted.
410 ; CHECK-NEXT: call void @llvm.dbg.declare(metadata !{null}, metadata !2) 410 ; CHECK-NEXT: call void @llvm.dbg.declare(metadata !{null}, metadata !2, metadat a !14)
411 ; CHECK-NEXT: ret void 411 ; CHECK-NEXT: ret void
412 412
413 ; For now, debugging info for values is lost. replaceAllUsesWith() 413 ; For now, debugging info for values is lost. replaceAllUsesWith()
414 ; does not work for metadata references -- it converts them to nulls. 414 ; does not work for metadata references -- it converts them to nulls.
415 ; This makes dbg.value too tricky to handle for now. 415 ; This makes dbg.value too tricky to handle for now.
416 define void @debug_value(i32 %val, i8* %ptr) { 416 define void @debug_value(i32 %val, i8* %ptr) {
417 tail call void @llvm.dbg.value(metadata !{i32 %val}, i64 1, metadata !{}) 417 tail call void @llvm.dbg.value(metadata !{i32 %val}, i64 1, metadata !1, metad ata !14)
418 tail call void @llvm.dbg.value(metadata !{i8* %ptr}, i64 2, metadata !{}) 418 tail call void @llvm.dbg.value(metadata !{i8* %ptr}, i64 2, metadata !1, metad ata !14)
419 ret void 419 ret void
420 } 420 }
421 ; CHECK: define void @debug_value(i32 %val, i32 %ptr) { 421 ; CHECK: define void @debug_value(i32 %val, i32 %ptr) {
422 ; CHECK-NEXT: call void @llvm.dbg.value(metadata !{null}, i64 1, metadata !2) 422 ; CHECK-NEXT: call void @llvm.dbg.value(metadata !{null}, i64 1, metadata !1, me tadata !14)
423 ; CHECK-NEXT: call void @llvm.dbg.value(metadata !{null}, i64 2, metadata !2) 423 ; CHECK-NEXT: call void @llvm.dbg.value(metadata !{null}, i64 2, metadata !1, me tadata !14)
424 ; CHECK-NEXT: ret void 424 ; CHECK-NEXT: ret void
425 425
426 426
427 declare void @llvm.lifetime.start(i64 %size, i8* %ptr) 427 declare void @llvm.lifetime.start(i64 %size, i8* %ptr)
428 declare {}* @llvm.invariant.start(i64 %size, i8* %ptr) 428 declare {}* @llvm.invariant.start(i64 %size, i8* %ptr)
429 declare void @llvm.invariant.end({}* %start, i64 %size, i8* %ptr) 429 declare void @llvm.invariant.end({}* %start, i64 %size, i8* %ptr)
430 430
431 ; GVN can introduce the following horrible corner case of a lifetime 431 ; GVN can introduce the following horrible corner case of a lifetime
432 ; marker referencing a PHI node. But we convert the phi to i32 type, 432 ; marker referencing a PHI node. But we convert the phi to i32 type,
433 ; and lifetime.start doesn't work on an inttoptr converting an i32 phi 433 ; and lifetime.start doesn't work on an inttoptr converting an i32 phi
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 ; CHECK-NEXT: call i32 @llvm.eh.typeid.for(i8* %typeid.bc) 592 ; CHECK-NEXT: call i32 @llvm.eh.typeid.for(i8* %typeid.bc)
593 593
594 594
595 ; Subprogram debug metadata may refer to a function. 595 ; Subprogram debug metadata may refer to a function.
596 ; Make sure those are updated too. 596 ; Make sure those are updated too.
597 ; Regenerate the debug info from the following C program: 597 ; Regenerate the debug info from the following C program:
598 ; void nop(void *ptr) { 598 ; void nop(void *ptr) {
599 ; } 599 ; }
600 600
601 define void @nop(i8* %ptr) { 601 define void @nop(i8* %ptr) {
602 tail call void @llvm.dbg.value(metadata !{i8* %ptr}, i64 0, metadata !10), !db g !14 602 tail call void @llvm.dbg.value(metadata !{i8* %ptr}, i64 0, metadata !10, meta data !14), !dbg !15
603 ret void, !dbg !15 603 ret void, !dbg !16
604 } 604 }
605 ; CHECK: define void @nop(i32 %ptr) { 605 ; CHECK: define void @nop(i32 %ptr) {
606 ; CHECK-NEXT: call void @llvm.dbg.value{{.*}} 606 ; CHECK-NEXT: call void @llvm.dbg.value{{.*}}
607 ; CHECK-NEXT: ret void 607 ; CHECK-NEXT: ret void
608 608
609 609
610 ; CHECK: attributes {{.*}}[[NOUNWIND]] = { nounwind } 610 ; CHECK: attributes {{.*}}[[NOUNWIND]] = { nounwind }
611 611
612 !llvm.dbg.cu = !{!0} 612 !llvm.dbg.cu = !{!0}
613 !llvm.module.flags = !{!11, !12} 613 !llvm.module.flags = !{!11, !12}
614 !llvm.ident = !{!13} 614 !llvm.ident = !{!13}
615 615
616 !0 = metadata !{i32 786449, metadata !1, i32 12, metadata !"clang version 3.5.0" , i1 true, metadata !"", i32 0, metadata !2, metadata !2, metadata !3, metadata !2, metadata !2, metadata !"", i32 1} ; [ DW_TAG_compile_unit ] [/home/foo/test_ min.c] [DW_LANG_C99] 616 !0 = metadata !{metadata !"0x11\0012\00clang version 3.6.0", metadata !1, metada ta !2, metadata !2, metadata !3, metadata !2, metadata !2} ; [ DW_TAG_compile_un it ] [/home/foo/test_debug.c] [DW_LANG_C99]
617 !1 = metadata !{metadata !"test_min.c", metadata !"/home/foo"} 617 !1 = metadata !{metadata !"test_debug.c", metadata !"/home/foo"}
618 !2 = metadata !{} 618 !2 = metadata !{}
619 !3 = metadata !{metadata !4} 619 !3 = metadata !{metadata !4}
620 !4 = metadata !{i32 786478, metadata !1, metadata !5, metadata !"nop", metadata !"nop", metadata !"", i32 1, metadata !6, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 true, void (i8*)* @nop, null, null, metadata !9, i32 1} ; [ DW_TAG_ subprogram ] [line 1] [def] [nop] 620 !4 = metadata !{metadata !"0x2e\00nop\00nop\00\001\000\001\000\000\00256\001\001 ", metadata !1, metadata !5, metadata !6, null, void (i8*)* @nop, null, null, me tadata !9} ; [ DW_TAG_subprogram ] [line 1] [def] [nop]
621 !5 = metadata !{i32 786473, metadata !1} ; [ DW_TAG_file_type ] [/home/ foo/test_min.c] 621 !5 = metadata !{metadata !"0x29", metadata !1} ; [ DW_TAG_file_type ] [/home/ foo/test_debug.c]
622 !6 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !7, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] 622 !6 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", null, null, null, m etadata !7, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, alig n 0, offset 0] [from ]
623 !7 = metadata !{null, metadata !8} 623 !7 = metadata !{null, metadata !8}
624 !8 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 32, i64 32, i64 0, i32 0, null} ; [ DW_TAG_pointer_type ] [line 0, size 32, align 32, offset 0] [from ] 624 !8 = metadata !{metadata !"0xf\00\000\0032\0032\000\000", null, null, null} ; [ DW_TAG_pointer_type ] [line 0, size 32, align 32, offset 0] [from ]
625 !9 = metadata !{metadata !10} 625 !9 = metadata !{metadata !10}
626 !10 = metadata !{i32 786689, metadata !4, metadata !"ptr", metadata !5, i32 1677 7217, metadata !8, i32 0, i32 0} ; [ DW_TAG_arg_variable ] [ptr] [line 1] 626 !10 = metadata !{metadata !"0x101\00ptr\0016777217\000", metadata !4, metadata ! 5, metadata !8} ; [ DW_TAG_arg_variable ] [ptr] [line 1]
627 !11 = metadata !{i32 2, metadata !"Dwarf Version", i32 4} 627 !11 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
628 !12 = metadata !{i32 2, metadata !"Debug Info Version", i32 1} 628 !12 = metadata !{i32 2, metadata !"Debug Info Version", i32 2}
629 !13 = metadata !{metadata !"clang version 3.5.0"} 629 !13 = metadata !{metadata !"clang version 3.6.0"}
630 !14 = metadata !{i32 1, i32 16, metadata !4, null} 630 !14 = metadata !{metadata !"0x102"} ; [ DW_TAG_expression ]
631 !15 = metadata !{i32 2, i32 1, metadata !4, null} 631 !15 = metadata !{i32 1, i32 16, metadata !4, null}
632 !16 = metadata !{i32 2, i32 1, metadata !4, null}
632 633
633 ; CHECK: !4 = metadata !{{{.*}}nop{{.*}}, void (i32)* @nop, {{.*}}} ; [ DW_TAG_s ubprogram ] [line 1] [def] [nop] 634 ; CHECK: !4 = metadata !{{{.*}}nop{{.*}}, void (i32)* @nop, {{.*}}} ; [ DW_TAG_s ubprogram ] [line 1] [def] [nop]
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698