; 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 ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__msan_init, i8* null }] @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 !dbg !4 { 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], [1000 x i64]* @__msan_param_tls, i64 0, i64 0), align 8, !dbg !19 store i64 0, i64* getelementptr inbounds ([8 x i64], [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, i64* getelementptr inbounds ([8 x i64], [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, metadata !9, metadata !DIExpression()), !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, metadata !9, metadata !DIExpression()), !dbg !19 %p.0.p.0. = load volatile i32*, i32** %p, align 8, !dbg !20 %_msld = load i64, 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 ;