xref: /llvm-project/llvm/test/Transforms/GlobalOpt/static-const-bitcast.ll (revision d586bd5ca231a6022f439d4c6e43cfeeb53eb1d6)
1; RUN: opt -passes=globalopt %s -S -o - | FileCheck %s
2target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
3target triple = "x86_64-unknown-linux-gnu"
4
5%struct.A = type { %class.Wrapper }
6%class.Wrapper = type { i32 }
7
8$Wrapper = comdat any
9
10@kA = internal global %struct.A zeroinitializer, align 4
11; CHECK: @kA = internal unnamed_addr constant %struct.A { %class.Wrapper { i32 1036831949 } }, align 4
12
13@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } {
14i32 65535, ptr @_GLOBAL__sub_I_const_static.cc, ptr null }]
15
16define dso_local i32 @AsBits(ptr %x) #0 {
17entry:
18  %0 = load i32, ptr %x, align 4
19  ret i32 %0
20}
21
22define internal void @__cxx_global_var_init() #1 section ".text.startup" {
23entry:
24  call void @Wrapper(ptr @kA, float 0x3FB99999A0000000)
25  %0 = call ptr @llvm.invariant.start.p0(i64 4, ptr @kA)
26  ret void
27}
28
29define linkonce_odr dso_local void @Wrapper(ptr %this, float %x) unnamed_addr #0 comdat align 2 {
30entry:
31  %x.addr = alloca float, align 4
32  store float %x, ptr %x.addr, align 4
33  %call = call i32 @AsBits(ptr %x.addr)
34  store i32 %call, ptr %this, align 4
35  ret void
36}
37
38declare ptr @llvm.invariant.start.p0(i64, ptr nocapture) #2
39
40; Function Attrs: nounwind uwtable
41define dso_local void @LoadIt(ptr %c) #0 {
42entry:
43  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %c, ptr align 4 @kA, i64 4, i1 false)
44  ret void
45}
46
47; Function Attrs: argmemonly nounwind
48declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) #2
49
50; Function Attrs: uwtable
51define internal void @_GLOBAL__sub_I_const_static.cc() #1 section ".text.startup" {
52entry:
53  call void @__cxx_global_var_init()
54  ret void
55}
56
57attributes #0 = { nounwind uwtable "target-cpu"="x86-64" }
58attributes #1 = { uwtable "target-cpu"="x86-64" }
59attributes #2 = { argmemonly nounwind }
60