Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Algol68
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C with Coccinelle
C++ with Coccinelle
C++ (Circle)
CIRCT
Clean
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
GLSL
Go
Haskell
HLSL
Hook
Hylo
IL
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Mojo
Nim
Numba
Nix
Objective-C
Objective-C++
OCaml
Odin
OpenCL C
Pascal
Pony
PTX
Python
Racket
Raku
Ruby
Rust
Sail
Snowball
Scala
Slang
Solidity
Spice
SPIR-V
Swift
LLVM TableGen
Toit
Triton
TypeScript Native
V
Vala
Visual Basic
Vyper
WASM
Zig
Javascript
GIMPLE
Ygen
sway
llvm source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
clang (assertions trunk)
clang (trunk)
clang 10.0.0
clang 10.0.1
clang 11.0.0
clang 11.0.1
clang 12.0.0
clang 12.0.1
clang 13.0.0
clang 14.0.0
clang 15.0.0
clang 16.0.0
clang 17.0.1
clang 18.1.0
clang 19.1.0
clang 20.1.0
clang 21.1.0
clang 4.0.1
clang 5.0.0
clang 6.0.0
clang 7.0.0
clang 8.0.0
clang 9.0.0
hexagon-clang 16.0.5
llc (assertions trunk)
llc (trunk)
llc 10.0.0
llc 10.0.1
llc 11.0.0
llc 11.0.1
llc 12.0.0
llc 12.0.1
llc 13.0.0
llc 14.0.0
llc 15.0.0
llc 16.0.0
llc 17.0.1
llc 18.1.0
llc 19.1.0
llc 20.1.0
llc 21.1.0
llc 3.2
llc 3.3
llc 3.9.1
llc 4.0.0
llc 4.0.1
llc 5.0.0
llc 6.0.0
llc 7.0.0
llc 8.0.0
llc 9.0.0
opt (assertions trunk)
opt (trunk)
opt 10.0.0
opt 10.0.1
opt 11.0.0
opt 11.0.1
opt 12.0.0
opt 12.0.1
opt 13.0.0
opt 14.0.0
opt 15.0.0
opt 16.0.0
opt 17.0.1
opt 18.1.0
opt 19.1.0
opt 20.1.0
opt 21.1.0
opt 3.2
opt 3.3
opt 3.9.1
opt 4.0.0
opt 4.0.1
opt 5.0.0
opt 6.0.0
opt 7.0.0
opt 8.0.0
opt 9.0.0
Options
Source code
; ModuleID = './reduced.ll' source_filename = "./reduced.ll" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128-ni:1-p2:32:8:8:32-ni:2" target triple = "x86_64-unknown-linux-gnu" declare void @llvm.experimental.deoptimize.isVoid(...) #0 define void @wombat(ptr addrspace(3) %arg) #0 gc "statepoint-example" { bb: %getelementptr = getelementptr i8, ptr addrspace(3) %arg, i64 64 %load = load ptr addrspace(1), ptr addrspace(3) %getelementptr, align 8 %getelementptr1 = getelementptr i8, ptr addrspace(3) %arg, i64 72 %load2 = load ptr addrspace(1), ptr addrspace(3) %getelementptr1, align 8 %icmp = icmp eq ptr addrspace(1) %load2, null br label %bb9 bb3: ; No predecessors! call void (...) @llvm.experimental.deoptimize.isVoid(i32 0) [ "deopt"(i32 0, [28 x i32] zeroinitializer, ptr addrspace(1) null, i32 0, ptr addrspace(1) null, i32 0, double 0.000000e+00, ptr addrspace(1) null, ptr addrspace(1) %load2, i32 0, i32 0) ] ret void bb4: ; No predecessors! call void (...) @llvm.experimental.deoptimize.isVoid(i32 0) [ "deopt"(i32 0, [28 x i32] zeroinitializer, ptr addrspace(1) null, i32 0, ptr addrspace(1) null, i32 0, double 0.000000e+00, ptr addrspace(1) null, ptr addrspace(1) %load2, i32 0, i32 0) ] ret void bb5: ; No predecessors! call void (...) @llvm.experimental.deoptimize.isVoid(i32 0) [ "deopt"(i32 0, [28 x i32] zeroinitializer, ptr addrspace(1) null, i32 0, ptr addrspace(1) null, i32 0, double 0.000000e+00, ptr addrspace(1) null, ptr addrspace(1) %load2, i32 0, i32 0) ] ret void bb6: ; No predecessors! %load7 = load i32, ptr addrspace(1) %load2, align 4 br label %bb9 bb8: ; No predecessors! call void (...) @llvm.experimental.deoptimize.isVoid(i32 0) [ "deopt"(i32 0, [28 x i32] zeroinitializer, ptr addrspace(1) null, i32 0, ptr addrspace(1) null, i32 0, double 0.000000e+00, ptr addrspace(1) null, ptr addrspace(1) %load2, i32 0, i32 0) ] ret void bb9: ; preds = %bb6, %bb br i1 false, label %bb10, label %bb43 bb10: ; preds = %bb12, %bb9 %phi = phi ptr addrspace(1) [ %phi13, %bb12 ], [ %load, %bb9 ] %phi11 = phi ptr addrspace(1) [ %phi14, %bb12 ], [ %load2, %bb9 ] br i1 false, label %bb105, label %bb12 bb12: ; preds = %bb16, %bb10 %phi13 = phi ptr addrspace(1) [ null, %bb16 ], [ %phi, %bb10 ] %phi14 = phi ptr addrspace(1) [ %phi18, %bb16 ], [ null, %bb10 ] br i1 false, label %bb16, label %bb10 bb15: ; No predecessors! br label %bb16 bb16: ; preds = %bb15, %bb12 %phi17 = phi ptr addrspace(1) [ null, %bb15 ], [ null, %bb12 ] %phi18 = phi ptr addrspace(1) [ null, %bb15 ], [ null, %bb12 ] br label %bb12 bb19: ; No predecessors! br i1 false, label %bb99, label %bb103 bb20: ; No predecessors! br label %bb105 bb21: ; No predecessors! call void null() [ "deopt"(i32 0, [32 x i32] zeroinitializer, i32 0, ptr addrspace(1) null, i32 0, ptr addrspace(1) null, i32 0, double 0.000000e+00, ptr addrspace(1) null, ptr addrspace(1) %load2, i32 0) ] %icmp22 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb23: ; No predecessors! br i1 false, label %bb102, label %bb105 bb24: ; No predecessors! call void null() [ "deopt"(i32 0, [32 x i32] zeroinitializer, i32 0, ptr addrspace(1) null, i32 0, ptr addrspace(1) null, i32 0, double 0.000000e+00, ptr addrspace(1) null, ptr addrspace(1) %load2, i32 0) ] br label %bb105 bb25: ; No predecessors! %icmp26 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb27: ; No predecessors! %icmp28 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb29: ; No predecessors! %icmp30 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb31: ; No predecessors! %icmp32 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb33: ; No predecessors! %icmp34 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb35: ; No predecessors! %icmp36 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb37: ; No predecessors! %icmp38 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb39: ; No predecessors! %icmp40 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb41: ; No predecessors! %icmp42 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb43: ; preds = %bb51, %bb9 %phi44 = phi ptr addrspace(1) [ %phi52, %bb51 ], [ %load, %bb9 ] %phi45 = phi ptr addrspace(1) [ %phi53, %bb51 ], [ %load2, %bb9 ] br i1 false, label %bb46, label %bb51 bb46: ; preds = %bb43 %phi47 = phi i32 [ 0, %bb43 ] %phi48 = phi ptr addrspace(1) [ %phi44, %bb43 ] %phi49 = phi ptr addrspace(1) [ %phi45, %bb43 ] %phi50 = phi i32 [ 0, %bb43 ] br label %bb105 bb51: ; preds = %bb54, %bb43 %phi52 = phi ptr addrspace(1) [ null, %bb54 ], [ null, %bb43 ] %phi53 = phi ptr addrspace(1) [ null, %bb54 ], [ %phi45, %bb43 ] br label %bb43 bb54: ; No predecessors! br label %bb51 bb55: ; No predecessors! br i1 false, label %bb101, label %bb105 bb56: ; No predecessors! br i1 false, label %bb99, label %bb103 bb57: ; No predecessors! br i1 false, label %bb102, label %bb105 bb58: ; No predecessors! br i1 false, label %bb59, label %bb105 bb59: ; preds = %bb61, %bb58 %phi60 = phi ptr addrspace(1) [ null, %bb61 ], [ %load2, %bb58 ] br label %bb101 bb61: ; No predecessors! %getelementptr62 = getelementptr i8, ptr addrspace(1) %load2, i64 8 br i1 false, label %bb98, label %bb59 bb63: ; No predecessors! call void null() [ "deopt"(i32 0, [32 x i32] zeroinitializer, i32 0, ptr addrspace(1) null, i32 0, ptr addrspace(1) null, i32 0, double 0.000000e+00, ptr addrspace(1) null, ptr addrspace(1) %load2, i32 0) ] %icmp64 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb65: ; No predecessors! br i1 false, label %bb68, label %bb105 bb66: ; No predecessors! %getelementptr67 = getelementptr i8, ptr addrspace(1) %load2, i64 8 br i1 false, label %bb98, label %bb68 bb68: ; preds = %bb66, %bb65 %phi69 = phi ptr addrspace(1) [ null, %bb66 ], [ %load2, %bb65 ] br label %bb101 bb70: ; No predecessors! br i1 false, label %bb102, label %bb105 bb71: ; No predecessors! br i1 false, label %bb99, label %bb103 bb72: ; No predecessors! br i1 false, label %bb73, label %bb105 bb73: ; preds = %bb72 %getelementptr74 = getelementptr i8, ptr addrspace(1) %load2, i64 8 br label %bb98 bb75: ; No predecessors! call void null() [ "deopt"(i32 0, [32 x i32] zeroinitializer, i32 0, ptr addrspace(1) null, i32 0, ptr addrspace(1) null, i32 0, double 0.000000e+00, ptr addrspace(1) null, ptr addrspace(1) %load2, i32 0) ] %icmp76 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb77: ; No predecessors! br i1 false, label %bb102, label %bb105 bb78: ; No predecessors! br i1 false, label %bb80, label %bb105 bb79: ; No predecessors! br i1 false, label %bb99, label %bb103 bb80: ; preds = %bb78 %getelementptr81 = getelementptr i8, ptr addrspace(1) %load2, i64 8 br label %bb98 bb82: ; No predecessors! br i1 false, label %bb83, label %bb105 bb83: ; preds = %bb82 %getelementptr84 = getelementptr i8, ptr addrspace(1) %load2, i64 8 br label %bb98 bb85: ; No predecessors! call void null() [ "deopt"(i32 0, [32 x i32] zeroinitializer, i32 0, ptr addrspace(1) null, i32 0, ptr addrspace(1) null, i32 0, double 0.000000e+00, ptr addrspace(1) null, ptr addrspace(1) %load2, i32 0) ] %icmp86 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb87: ; No predecessors! br i1 false, label %bb102, label %bb105 bb88: ; No predecessors! call void null() [ "deopt"(i32 0, [32 x i32] zeroinitializer, i32 0, ptr addrspace(1) null, i32 0, ptr addrspace(1) null, i32 0, double 0.000000e+00, ptr addrspace(1) null, ptr addrspace(1) %load2, i32 0) ] %icmp89 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb90: ; No predecessors! br i1 false, label %bb101, label %bb105 bb91: ; No predecessors! br i1 false, label %bb102, label %bb105 bb92: ; No predecessors! br i1 false, label %bb99, label %bb103 bb93: ; No predecessors! br i1 false, label %bb99, label %bb105 bb94: ; No predecessors! br i1 false, label %bb101, label %bb105 bb95: ; No predecessors! br i1 false, label %bb99, label %bb103 bb96: ; No predecessors! call void null() [ "deopt"(i32 0, [32 x i32] zeroinitializer, i32 0, ptr addrspace(1) null, i32 0, ptr addrspace(1) null, i32 0, double 0.000000e+00, ptr addrspace(1) null, ptr addrspace(1) %load2, i32 0) ] %icmp97 = icmp eq ptr addrspace(1) %load2, null br label %bb102 bb98: ; preds = %bb83, %bb80, %bb73, %bb66, %bb61 ret void bb99: ; preds = %bb95, %bb93, %bb92, %bb79, %bb71, %bb56, %bb19 %phi100 = phi ptr addrspace(1) [ %load2, %bb71 ], [ %load2, %bb79 ], [ %load2, %bb92 ], [ %load2, %bb56 ], [ %load2, %bb95 ], [ null, %bb19 ], [ %load2, %bb93 ] ret void bb101: ; preds = %bb94, %bb90, %bb68, %bb59, %bb55 ret void bb102: ; preds = %bb96, %bb91, %bb88, %bb87, %bb85, %bb77, %bb75, %bb70, %bb63, %bb57, %bb41, %bb39, %bb37, %bb35, %bb33, %bb31, %bb29, %bb27, %bb25, %bb23, %bb21 ret void bb103: ; preds = %bb95, %bb92, %bb79, %bb71, %bb56, %bb19 %phi104 = phi ptr addrspace(1) [ %load2, %bb56 ], [ %load2, %bb71 ], [ %load2, %bb79 ], [ %load2, %bb92 ], [ %load2, %bb95 ], [ null, %bb19 ] br label %bb105 bb105: ; preds = %bb103, %bb94, %bb93, %bb91, %bb90, %bb87, %bb82, %bb78, %bb77, %bb72, %bb70, %bb65, %bb58, %bb57, %bb55, %bb46, %bb24, %bb23, %bb20, %bb10 %phi106 = phi ptr addrspace(1) [ %load2, %bb20 ], [ %load2, %bb23 ], [ %load2, %bb55 ], [ %load2, %bb57 ], [ %load2, %bb58 ], [ %load2, %bb65 ], [ %load2, %bb70 ], [ %load2, %bb72 ], [ %load2, %bb77 ], [ %load2, %bb78 ], [ %load2, %bb82 ], [ %load2, %bb87 ], [ %load2, %bb90 ], [ %load2, %bb91 ], [ %load2, %bb93 ], [ %load2, %bb94 ], [ %load2, %bb24 ], [ %phi49, %bb46 ], [ null, %bb103 ], [ null, %bb10 ] ret void }
Become a Patron
Sponsor on GitHub
Donate via PayPal
Compiler Explorer Shop
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
CE on Bluesky
Statistics
Changelog
Version tree