# Check that references to local (unnamed) objects below are not # treated as references relative to zero-sized A object. # REQUIRES: system-linux # RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown \ # RUN: %s -o %t.o # RUN: %clang %cflags %t.o -o %t.exe -Wl,-q # RUN: llvm-bolt %t.exe -print-cfg \ # RUN: -print-only=main -o %t.out | FileCheck %s .file "rust_bug.c" .section .rodata .LC0: .string "0" .LC1: .string "1" .LC2: .string "2" .LC3: .string "3" .LC4: .string "4" .LC5: .string "5" .text .globl inc_dup .type inc_dup, @function inc_dup: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 subq $16, %rsp movl %edi, -4(%rbp) movl -4(%rbp), %eax subl $10, %eax cmpl $5, %eax ja .L2 movl %eax, %eax movq .L4(,%rax,8), %rax jmp *%rax .section .rodata .align 8 .globl A .type A, @object A: .section .rodata .align 8 .align 4 .L4: .quad .L3 .quad .L5 .quad .L6 .quad .L7 .quad .L8 .quad .L9 .text .L3: movl $.LC0, %edi call puts movl $1, %eax jmp .L10 .L5: movl $.LC1, %edi call puts movl $2, %eax jmp .L10 .L6: movl $.LC2, %edi call puts movl $3, %eax jmp .L10 .L7: movl $.LC3, %edi call puts movl $4, %eax jmp .L10 .L8: movl $.LC4, %edi call puts movl $5, %eax jmp .L10 .L9: movl $.LC5, %edi call puts movl $6, %eax jmp .L10 .L2: movl -4(%rbp), %eax addl $1, %eax .L10: leave .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size inc_dup, .-inc_dup .section .rodata .LC6: .string "%d\n" .text .globl main .type main, @function main: # CHECK: Binary Function "main" after building cfg .LFB1: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl .LN(%rip), %eax # We should not reference a data object as an offset from A # CHECK-NOT: movl A+{{.*}}(%rip), %eax movl %eax, %esi movl $.LC6, %edi movl $0, %eax call printf movl $0, %eax popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE1: .size main, .-main .section .rodata .align 4 .LN: .long 42 .ident "GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-44)" .section .note.GNU-stack,"",@progbits