From eed2620611c4eedaa4c8d1b55ce5939f66be6292 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Fri, 25 Apr 2014 22:23:54 +0000 Subject: Make sure that rangelists are also relative to the compile unit low_pc similar to location lists. Fixes PR19563 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207283 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/DebugInfo/X86/debug-ranges-offset.ll | 241 ++++++++++++++++++++++++++++++ 1 file changed, 241 insertions(+) create mode 100644 test/DebugInfo/X86/debug-ranges-offset.ll (limited to 'test/DebugInfo/X86') diff --git a/test/DebugInfo/X86/debug-ranges-offset.ll b/test/DebugInfo/X86/debug-ranges-offset.ll new file mode 100644 index 0000000000..365ba171a0 --- /dev/null +++ b/test/DebugInfo/X86/debug-ranges-offset.ll @@ -0,0 +1,241 @@ +; RUN: llc -filetype=obj -mtriple=x86_64-pc-linux-gnu %s -o %t +; RUN: llvm-readobj --relocations %t | FileCheck %s + +; Check that we don't have any relocations in the ranges section - +; to show that we're producing this as a relative offset to the +; low_pc for the compile unit. +; CHECK-NOT: .rela.debug_ranges + +@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 0, void ()* @__msan_init }] +@str = private unnamed_addr constant [4 x i8] c"zzz\00" +@__msan_retval_tls = external thread_local(initialexec) global [8 x i64] +@__msan_retval_origin_tls = external thread_local(initialexec) global i32 +@__msan_param_tls = external thread_local(initialexec) global [1000 x i64] +@__msan_param_origin_tls = external thread_local(initialexec) global [1000 x i32] +@__msan_va_arg_tls = external thread_local(initialexec) global [1000 x i64] +@__msan_va_arg_overflow_size_tls = external thread_local(initialexec) global i64 +@__msan_origin_tls = external thread_local(initialexec) global i32 +@__executable_start = external hidden global i32 +@_end = external hidden global i32 + +; Function Attrs: sanitize_memory uwtable +define void @_Z1fv() #0 { +entry: + %p = alloca i32*, align 8 + %0 = ptrtoint i32** %p to i64, !dbg !19 + %1 = and i64 %0, -70368744177672, !dbg !19 + %2 = inttoptr i64 %1 to i64*, !dbg !19 + store i64 -1, i64* %2, align 8, !dbg !19 + store i64 0, i64* getelementptr inbounds ([1000 x i64]* @__msan_param_tls, i64 0, i64 0), align 8, !dbg !19 + store i64 0, i64* getelementptr inbounds ([8 x i64]* @__msan_retval_tls, i64 0, i64 0), align 8, !dbg !19 + %call = call i8* @_Znwm(i64 4) #4, !dbg !19 + %_msret = load i64* getelementptr inbounds ([8 x i64]* @__msan_retval_tls, i64 0, i64 0), align 8, !dbg !19 + %3 = bitcast i8* %call to i32*, !dbg !19 + tail call void @llvm.dbg.value(metadata !{i32* %3}, i64 0, metadata !9), !dbg !19 + %4 = inttoptr i64 %1 to i64*, !dbg !19 + store i64 %_msret, i64* %4, align 8, !dbg !19 + store volatile i32* %3, i32** %p, align 8, !dbg !19 + tail call void @llvm.dbg.value(metadata !{i32** %p}, i64 0, metadata !9), !dbg !19 + %p.0.p.0. = load volatile i32** %p, align 8, !dbg !20 + %_msld = load i64* %4, align 8, !dbg !20 + %_mscmp = icmp eq i64 %_msld, 0, !dbg !20 + br i1 %_mscmp, label %6, label %5, !dbg !20, !prof !22 + +;