Determining the address of a fractional constant

Trying to return a floating point constant.

  public static double cnst() {
    return 5.2;
  }

It turns out to generate the following ir:

define double @"simpleD::cnst"() {
B0:
  %0 = call i8** inttoptr (i64 140288755967234 to i8** (i32)*)(i32 1)
  %1 = alloca i32, i32 8
  %2 = getelementptr i8*, i8** %0, i32 528
  %3 = load i8*, i8** %2
  %4 = getelementptr i32, i32* %1, i32 4
  %5 = bitcast i32* %4 to i8**
  store i8* %3, i8** %5
  %6 = bitcast i8** %2 to i32**
  store i32* %4, i32** %6
  br label %B1

B1:                                               ; preds = %B0
  br label %B2

B2:                                               ; preds = %B1
  %7 = call i8* @llvm.returnaddress(i32 0)
  %8 = load i32, i32* %4
  %9 = bitcast i8** %2 to i32*
  store i32 %8, i32* %9
  ret double 5.200000e+00
}

Which is then lowering like this(LCPI0_0 - my constant):

lowering
# *** IR Dump After Check CFA info and insert CFI instructions if needed ***:
# Machine code for function simpleD::cnst: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
  fi#0: size=32, align=4, at location [SP-32]
Constant Pool:
  cp#0: 5.200000e+00, align=8

bb.0.B0:
  $rsp = frame-setup SUB64ri8 $rsp(tied-def 0), 40, implicit-def dead $eflags
  CFI_INSTRUCTION def_cfa_offset 48
  renamable $rax = MOV64ri 140288755967234
  $edi = MOV32ri 1
  CALL64r killed renamable $rax, <regmask $bh $bl $bp $bph $bpl $bx $ebp $ebx $hbp $hbx $rbp $rbx $r12 $r13 $r14 $r15 $r12b $r13b $r14b $r15b $r12bh $r13bh $r14bh $r15bh $r12d $r13d $r14d $r15d $r12w $r13w $r14w $r15w $r12wh and 3 more...>, implicit $rsp, implicit $ssp, implicit killed $edi, implicit-def $rsp, implicit-def $ssp, implicit-def $rax
  renamable $rcx = MOV64rm renamable $rax, 1, $noreg, 4224, $noreg :: (load 8 from %ir.2)
  renamable $rdx = LEA64r $rsp, 1, $noreg, 24, $noreg
  MOV64mr $rsp, 1, $noreg, 24, $noreg, killed renamable $rcx :: (store 8 into %ir.5)
  MOV64mr renamable $rax, 1, $noreg, 4224, $noreg, killed renamable $rdx :: (store 8 into %ir.6)
  renamable $ecx = MOV32rm $rsp, 1, $noreg, 24, $noreg :: (load 4 from %ir.9)
  MOV32mr killed renamable $rax, 1, $noreg, 4224, $noreg, killed renamable $ecx :: (store 4 into %ir.12)
  renamable $rax = MOV64ri %const.0
  renamable $xmm0 = VMOVSDrm killed renamable $rax, 1, $noreg, 0, $noreg :: (load 8 from constant-pool)
  $rsp = frame-destroy ADD64ri8 $rsp(tied-def 0), 40, implicit-def dead $eflags
  CFI_INSTRUCTION def_cfa_offset 8
  RETQ $xmm0

# End machine code for function simpleD::cnst.

assembler backend - pre-layout
--
<MCAssembler
  Sections:[
    <MCSection Fragments:[
      <MCDataFragment<MCFragment 0x7f972c060b10 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>,
      <MCAlignFragment<MCFragment 0x7f972c04ab00 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0> (emit nops)
        Alignment:4 Value:0 ValueSize:1 MaxBytesToEmit:4>>,
      <MCAlignFragment<MCFragment 0x7f972c0ddc10 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0> (emit nops)
        Alignment:16 Value:0 ValueSize:1 MaxBytesToEmit:16>>,
      <MCDataFragment<MCFragment 0x7f972c0ddcb0 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:1 BundlePadding:0>
        Contents:[48,83,EC,28,48,B8,02,25,77,85,97,7F,00,00,BF,01,00,00,00,FF,D0,48,8B,88,80,10,00,00,48,8D,54,24,18,48,89,4C,24,18,48,89,90,80,10,00,00,8B,4C,24,18,89,88,80,10,00,00,48,B8,00,00,00,00,00,00,00,00,C5,FB,10,00,48,83,C4,28,C3] (74 bytes),
        Fixups:[<MCFixup Offset:57 Value:.LCPI0_0 Kind:3>]>]>,
    <MCSection Fragments:[
      <MCDataFragment<MCFragment 0x7f972c0614b0 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>,
      <MCAlignFragment<MCFragment 0x7f972c0ddad0 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0>
        Alignment:8 Value:0 ValueSize:1 MaxBytesToEmit:8>>,
      <MCDataFragment<MCFragment 0x7f972c0c0b30 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>,
      <MCFillFragment<MCFragment 0x7f972c00ed00 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0> Value:0 ValueSize:1 NumValues:0>,
      <MCDataFragment<MCFragment 0x7f972c0ddb20 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[CD,CC,CC,CC,CC,CC,14,40] (8 bytes)>,
      <MCFillFragment<MCFragment 0x7f972c0c96e0 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0> Value:0 ValueSize:1 NumValues:0>]>,
    <MCSection Fragments:[
      <MCDataFragment<MCFragment 0x7f972c0dde80 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>]>,
    <MCSection Fragments:[
      <MCDataFragment<MCFragment 0x7f972c06f490 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[00,00,00,00,00,00,00,00,01,7A,52,00,01,78,10,01,1C,0C,07,08,90,01] (22 bytes),
        Fixups:[<MCFixup Offset:0 Value:(.Ltmp4-.Ltmp3)-4 Kind:2>]>,
      <MCAlignFragment<MCFragment 0x7f972c0ddc60 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0>
        Alignment:4 Value:0 ValueSize:1 MaxBytesToEmit:4>>,
      <MCDataFragment<MCFragment 0x7f972c0ddf70 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00] (25 bytes),
        Fixups:[<MCFixup Offset:0 Value:(.Ltmp6-.Ltmp5)-0 Kind:2>,
                <MCFixup Offset:4 Value:(.Ltmp5-.Ltmp3)-0 Kind:2>,
                <MCFixup Offset:8 Value:.Ltmp0-.Ltmp7 Kind:3>,
                <MCFixup Offset:16 Value:(.Ltmp1-.Ltmp0)-0 Kind:3>]>,
      <MCDwarfCallFrameFragment<MCFragment 0x7f972c038ab0 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0>
        AddrDelta:.Lcfi0-.Ltmp0>,
      <MCDataFragment<MCFragment 0x7f972c0de060 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[0E,30] (2 bytes)>,
      <MCDwarfCallFrameFragment<MCFragment 0x7f972c037b40 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0>
        AddrDelta:.Lcfi1-.Lcfi0>,
      <MCDataFragment<MCFragment 0x7f972c0de150 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[0E,08] (2 bytes)>,
      <MCAlignFragment<MCFragment 0x7f972c0de240 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0>
        Alignment:8 Value:0 ValueSize:1 MaxBytesToEmit:8>>,
      <MCDataFragment<MCFragment 0x7f972c0de290 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>]>],
  Symbols:[(.text, Index:0, ),
           (.rodata.cst8, Index:0, ),
           (.LCPI0_0, Index:0, ),
           (simpleD::cnst, Index:0, ),
           (.Ltmp0, Index:0, ),
           (.Lcfi0, Index:0, ),
           (.Lcfi1, Index:0, ),
           (.Lfunc_end0, Index:0, ),
           (.Ltmp1, Index:0, ),
           (.note.GNU-stack, Index:0, ),
           (.eh_frame, Index:0, ),
           (.Ltmp2, Index:0, ),
           (.Ltmp3, Index:0, ),
           (.Ltmp4, Index:0, ),
           (.Ltmp6, Index:0, ),
           (.Ltmp5, Index:0, ),
           (.Ltmp7, Index:0, )]>
assembler backend - post-relaxation
--
<MCAssembler
  Sections:[
    <MCSection Fragments:[
      <MCDataFragment<MCFragment 0x7f972c060b10 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>,
      <MCAlignFragment<MCFragment 0x7f972c04ab00 LayoutOrder:1 Offset:18446744073709551615 HasInstructions:0> (emit nops)
        Alignment:4 Value:0 ValueSize:1 MaxBytesToEmit:4>>,
      <MCAlignFragment<MCFragment 0x7f972c0ddc10 LayoutOrder:2 Offset:18446744073709551615 HasInstructions:0> (emit nops)
        Alignment:16 Value:0 ValueSize:1 MaxBytesToEmit:16>>,
      <MCDataFragment<MCFragment 0x7f972c0ddcb0 LayoutOrder:3 Offset:18446744073709551615 HasInstructions:1 BundlePadding:0>
        Contents:[48,83,EC,28,48,B8,02,25,77,85,97,7F,00,00,BF,01,00,00,00,FF,D0,48,8B,88,80,10,00,00,48,8D,54,24,18,48,89,4C,24,18,48,89,90,80,10,00,00,8B,4C,24,18,89,88,80,10,00,00,48,B8,00,00,00,00,00,00,00,00,C5,FB,10,00,48,83,C4,28,C3] (74 bytes),
        Fixups:[<MCFixup Offset:57 Value:.LCPI0_0 Kind:3>]>]>,
    <MCSection Fragments:[
      <MCDataFragment<MCFragment 0x7f972c0614b0 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>,
      <MCAlignFragment<MCFragment 0x7f972c0ddad0 LayoutOrder:1 Offset:18446744073709551615 HasInstructions:0>
        Alignment:8 Value:0 ValueSize:1 MaxBytesToEmit:8>>,
      <MCDataFragment<MCFragment 0x7f972c0c0b30 LayoutOrder:2 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>,
      <MCFillFragment<MCFragment 0x7f972c00ed00 LayoutOrder:3 Offset:18446744073709551615 HasInstructions:0> Value:0 ValueSize:1 NumValues:0>,
      <MCDataFragment<MCFragment 0x7f972c0ddb20 LayoutOrder:4 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[CD,CC,CC,CC,CC,CC,14,40] (8 bytes)>,
      <MCFillFragment<MCFragment 0x7f972c0c96e0 LayoutOrder:5 Offset:18446744073709551615 HasInstructions:0> Value:0 ValueSize:1 NumValues:0>]>,
    <MCSection Fragments:[
      <MCDataFragment<MCFragment 0x7f972c0dde80 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>]>,
    <MCSection Fragments:[
      <MCDataFragment<MCFragment 0x7f972c06f490 LayoutOrder:0 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[00,00,00,00,00,00,00,00,01,7A,52,00,01,78,10,01,1C,0C,07,08,90,01] (22 bytes),
        Fixups:[<MCFixup Offset:0 Value:(.Ltmp4-.Ltmp3)-4 Kind:2>]>,
      <MCAlignFragment<MCFragment 0x7f972c0ddc60 LayoutOrder:1 Offset:18446744073709551615 HasInstructions:0>
        Alignment:4 Value:0 ValueSize:1 MaxBytesToEmit:4>>,
      <MCDataFragment<MCFragment 0x7f972c0ddf70 LayoutOrder:2 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00] (25 bytes),
        Fixups:[<MCFixup Offset:0 Value:(.Ltmp6-.Ltmp5)-0 Kind:2>,
                <MCFixup Offset:4 Value:(.Ltmp5-.Ltmp3)-0 Kind:2>,
                <MCFixup Offset:8 Value:.Ltmp0-.Ltmp7 Kind:3>,
                <MCFixup Offset:16 Value:(.Ltmp1-.Ltmp0)-0 Kind:3>]>,
      <MCDwarfCallFrameFragment<MCFragment 0x7f972c038ab0 LayoutOrder:3 Offset:18446744073709551615 HasInstructions:0>
        AddrDelta:.Lcfi0-.Ltmp0>,
      <MCDataFragment<MCFragment 0x7f972c0de060 LayoutOrder:4 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[0E,30] (2 bytes)>,
      <MCDwarfCallFrameFragment<MCFragment 0x7f972c037b40 LayoutOrder:5 Offset:18446744073709551615 HasInstructions:0>
        AddrDelta:.Lcfi1-.Lcfi0>,
      <MCDataFragment<MCFragment 0x7f972c0de150 LayoutOrder:6 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[0E,08] (2 bytes)>,
      <MCAlignFragment<MCFragment 0x7f972c0de240 LayoutOrder:7 Offset:18446744073709551615 HasInstructions:0>
        Alignment:8 Value:0 ValueSize:1 MaxBytesToEmit:8>>,
      <MCDataFragment<MCFragment 0x7f972c0de290 LayoutOrder:8 Offset:18446744073709551615 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>]>],
  Symbols:[(.text, Index:0, ),
           (.rodata.cst8, Index:0, ),
           (.LCPI0_0, Index:0, ),
           (simpleD::cnst, Index:0, ),
           (.Ltmp0, Index:0, ),
           (.Lcfi0, Index:0, ),
           (.Lcfi1, Index:0, ),
           (.Lfunc_end0, Index:0, ),
           (.Ltmp1, Index:0, ),
           (.note.GNU-stack, Index:0, ),
           (.eh_frame, Index:0, ),
           (.Ltmp2, Index:0, ),
           (.Ltmp3, Index:0, ),
           (.Ltmp4, Index:0, ),
           (.Ltmp6, Index:0, ),
           (.Ltmp5, Index:0, ),
           (.Ltmp7, Index:0, )]>
assembler backend - final-layout
--
<MCAssembler
  Sections:[
    <MCSection Fragments:[
      <MCDataFragment<MCFragment 0x7f972c060b10 LayoutOrder:0 Offset:0 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>,
      <MCAlignFragment<MCFragment 0x7f972c04ab00 LayoutOrder:1 Offset:0 HasInstructions:0> (emit nops)
        Alignment:4 Value:0 ValueSize:1 MaxBytesToEmit:4>>,
      <MCAlignFragment<MCFragment 0x7f972c0ddc10 LayoutOrder:2 Offset:0 HasInstructions:0> (emit nops)
        Alignment:16 Value:0 ValueSize:1 MaxBytesToEmit:16>>,
      <MCDataFragment<MCFragment 0x7f972c0ddcb0 LayoutOrder:3 Offset:0 HasInstructions:1 BundlePadding:0>
        Contents:[48,83,EC,28,48,B8,02,25,77,85,97,7F,00,00,BF,01,00,00,00,FF,D0,48,8B,88,80,10,00,00,48,8D,54,24,18,48,89,4C,24,18,48,89,90,80,10,00,00,8B,4C,24,18,89,88,80,10,00,00,48,B8,00,00,00,00,00,00,00,00,C5,FB,10,00,48,83,C4,28,C3] (74 bytes),
        Fixups:[<MCFixup Offset:57 Value:.LCPI0_0 Kind:3>]>]>,
    <MCSection Fragments:[
      <MCDataFragment<MCFragment 0x7f972c0614b0 LayoutOrder:0 Offset:0 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>,
      <MCAlignFragment<MCFragment 0x7f972c0ddad0 LayoutOrder:1 Offset:0 HasInstructions:0>
        Alignment:8 Value:0 ValueSize:1 MaxBytesToEmit:8>>,
      <MCDataFragment<MCFragment 0x7f972c0c0b30 LayoutOrder:2 Offset:0 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>,
      <MCFillFragment<MCFragment 0x7f972c00ed00 LayoutOrder:3 Offset:0 HasInstructions:0> Value:0 ValueSize:1 NumValues:0>,
      <MCDataFragment<MCFragment 0x7f972c0ddb20 LayoutOrder:4 Offset:0 HasInstructions:0 BundlePadding:0>
        Contents:[CD,CC,CC,CC,CC,CC,14,40] (8 bytes)>,
      <MCFillFragment<MCFragment 0x7f972c0c96e0 LayoutOrder:5 Offset:8 HasInstructions:0> Value:0 ValueSize:1 NumValues:0>]>,
    <MCSection Fragments:[
      <MCDataFragment<MCFragment 0x7f972c0dde80 LayoutOrder:0 Offset:0 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>]>,
    <MCSection Fragments:[
      <MCDataFragment<MCFragment 0x7f972c06f490 LayoutOrder:0 Offset:0 HasInstructions:0 BundlePadding:0>
        Contents:[00,00,00,00,00,00,00,00,01,7A,52,00,01,78,10,01,1C,0C,07,08,90,01] (22 bytes),
        Fixups:[<MCFixup Offset:0 Value:(.Ltmp4-.Ltmp3)-4 Kind:2>]>,
      <MCAlignFragment<MCFragment 0x7f972c0ddc60 LayoutOrder:1 Offset:22 HasInstructions:0>
        Alignment:4 Value:0 ValueSize:1 MaxBytesToEmit:4>>,
      <MCDataFragment<MCFragment 0x7f972c0ddf70 LayoutOrder:2 Offset:24 HasInstructions:0 BundlePadding:0>
        Contents:[00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00] (25 bytes),
        Fixups:[<MCFixup Offset:0 Value:(.Ltmp6-.Ltmp5)-0 Kind:2>,
                <MCFixup Offset:4 Value:(.Ltmp5-.Ltmp3)-0 Kind:2>,
                <MCFixup Offset:8 Value:.Ltmp0-.Ltmp7 Kind:3>,
                <MCFixup Offset:16 Value:(.Ltmp1-.Ltmp0)-0 Kind:3>]>,
      <MCDwarfCallFrameFragment<MCFragment 0x7f972c038ab0 LayoutOrder:3 Offset:49 HasInstructions:0>
        AddrDelta:.Lcfi0-.Ltmp0>,
      <MCDataFragment<MCFragment 0x7f972c0de060 LayoutOrder:4 Offset:50 HasInstructions:0 BundlePadding:0>
        Contents:[0E,30] (2 bytes)>,
      <MCDwarfCallFrameFragment<MCFragment 0x7f972c037b40 LayoutOrder:5 Offset:52 HasInstructions:0>
        AddrDelta:.Lcfi1-.Lcfi0>,
      <MCDataFragment<MCFragment 0x7f972c0de150 LayoutOrder:6 Offset:54 HasInstructions:0 BundlePadding:0>
        Contents:[0E,08] (2 bytes)>,
      <MCAlignFragment<MCFragment 0x7f972c0de240 LayoutOrder:7 Offset:56 HasInstructions:0>
        Alignment:8 Value:0 ValueSize:1 MaxBytesToEmit:8>>,
      <MCDataFragment<MCFragment 0x7f972c0de290 LayoutOrder:8 Offset:56 HasInstructions:0 BundlePadding:0>
        Contents:[] (0 bytes)>]>],
  Symbols:[(.text, Index:0, ),
           (.rodata.cst8, Index:0, ),
           (.LCPI0_0, Index:0, ),
           (simpleD::cnst, Index:0, ),
           (.Ltmp0, Index:0, ),
           (.Lcfi0, Index:0, ),
           (.Lcfi1, Index:0, ),
           (.Lfunc_end0, Index:0, ),
           (.Ltmp1, Index:0, ),
           (.note.GNU-stack, Index:0, ),
           (.eh_frame, Index:0, ),
           (.Ltmp2, Index:0, ),
           (.Ltmp3, Index:0, ),
           (.Ltmp4, Index:0, ),
           (.Ltmp6, Index:0, ),
           (.Ltmp5, Index:0, ),
           (.Ltmp7, Index:0, )]>

The final assembler looks like this:

  # {method} {0x00007f974d9409c0} 'cnst' '()D' in 'simpleD'
  #           [sp+0xbeb0aa0]  (sp of caller)
  0x00007f977d1d6740: sub    $0x28,%rsp
  0x00007f977d1d6744: movabs $0x7f9785772502,%rax
  0x00007f977d1d674e: mov    $0x1,%edi
  0x00007f977d1d6753: callq  *%rax
  0x00007f977d1d6755: mov    0x1080(%rax),%rcx
  0x00007f977d1d675c: lea    0x18(%rsp),%rdx
  0x00007f977d1d6761: mov    %rcx,0x18(%rsp)
  0x00007f977d1d6766: mov    %rdx,0x1080(%rax)
  0x00007f977d1d676d: mov    0x18(%rsp),%ecx
  0x00007f977d1d6771: mov    %ecx,0x1080(%rax)
  0x00007f977d1d6777: movabs $0x0,%rax
  0x00007f977d1d6781: vmovsd (%rax),%xmm0
  0x00007f977d1d6785: add    $0x28,%rsp
  0x00007f977d1d6789: retq 

As you can see in these lines, the address of the constant is calculated as 0, then 0 is dereferenced:

  0x00007f977d1d6777: movabs $0x0,%rax
  0x00007f977d1d6781: vmovsd (%rax),%xmm0

As I understand it, the address of the constant is calculated somewhere in MCAssembler.
What could cause this behavior? What should you pay attention to?
Thanks