[LoopInterchange] Hoist isComputableLoopNest() in the control flow (#124247)
[llvm-project.git] / llvm / test / Transforms / GlobalOpt / evaluate-constfold-call.ll
blob6400988e7cc0961ecf31ca0250f9c3509e2deacc
1 ; Check that we do not try to evaluate function calls with signature
2 ; mismatches.
3 ; RUN: opt -passes=globalopt,instcombine %s -S -o - | FileCheck %s
5 ; CHECK: @_q = dso_local global %struct.Q zeroinitializer
6 ; CHECK: @llvm.global_ctors
8 source_filename = "main.cpp"
9 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
10 target triple = "x86_64-none-linux-gnu"
12 %struct.Q = type { i32 }
14 $_ZN1QC2Ev = comdat any
16 @_q = dso_local global %struct.Q zeroinitializer, align 4
17 @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_main.cpp, ptr null }]
19 define internal void @__cxx_global_var_init() section ".text.startup" {
20   call void @_ZN1QC2Ev(ptr @_q)
21   ret void
24 define linkonce_odr dso_local void @_ZN1QC2Ev(ptr) unnamed_addr #1 comdat align 2 {
25   %2 = alloca ptr, align 8
26   store ptr %0, ptr %2, align 8
27   %3 = load ptr, ptr %2, align 8
28   %4 = call i32 @fmodf(float 0x40091EB860000000, float 2.000000e+00)
29   store i32 %4, ptr %3, align 4
30   ret void
33 define dso_local i32 @main(i32, ptr) {
34   %3 = alloca i32, align 4
35   %4 = alloca i32, align 4
36   %5 = alloca ptr, align 8
37   store i32 0, ptr %3, align 4
38   store i32 %0, ptr %4, align 4
39   store ptr %1, ptr %5, align 8
40   %6 = load i32, ptr @_q, align 4
41   ret i32 %6
44 ; Function Attrs: nounwind
45 declare dso_local float @fmodf(float, float)
47 ; Function Attrs: noinline uwtable
48 define internal void @_GLOBAL__sub_I_main.cpp() section ".text.startup" {
49   call void @__cxx_global_var_init()
50   ret void