hugr-llvm 0.25.0

A general and extensible crate for lowering HUGRs into LLVM IR
Documentation
---
source: hugr-llvm/src/extension/prelude.rs
expression: mod_str
---
; ModuleID = 'test_context'
source_filename = "test_context"

@0 = private unnamed_addr constant [6 x i8] c"PANIC\00", align 1
@prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1

define private { i16, i16 } @_hl.main.1(i16 %0, i16 %1) {
alloca_block:
  %"0" = alloca i16, align 2
  %"1" = alloca i16, align 2
  %"5_0" = alloca { i32, i8* }, align 8
  %"2_0" = alloca i16, align 2
  %"2_1" = alloca i16, align 2
  %"6_0" = alloca i16, align 2
  %"6_1" = alloca i16, align 2
  br label %entry_block

entry_block:                                      ; preds = %alloca_block
  store { i32, i8* } { i32 42, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @0, i32 0, i32 0) }, { i32, i8* }* %"5_0", align 8
  store i16 %0, i16* %"2_0", align 2
  store i16 %1, i16* %"2_1", align 2
  %"5_01" = load { i32, i8* }, { i32, i8* }* %"5_0", align 8
  %"2_02" = load i16, i16* %"2_0", align 2
  %"2_13" = load i16, i16* %"2_1", align 2
  %2 = extractvalue { i32, i8* } %"5_01", 0
  %3 = extractvalue { i32, i8* } %"5_01", 1
  %4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template, i32 0, i32 0), i32 %2, i8* %3)
  call void @abort()
  store i16 0, i16* %"6_0", align 2
  store i16 0, i16* %"6_1", align 2
  %"6_04" = load i16, i16* %"6_0", align 2
  %"6_15" = load i16, i16* %"6_1", align 2
  store i16 %"6_04", i16* %"0", align 2
  store i16 %"6_15", i16* %"1", align 2
  %"06" = load i16, i16* %"0", align 2
  %"17" = load i16, i16* %"1", align 2
  %mrv = insertvalue { i16, i16 } undef, i16 %"06", 0
  %mrv8 = insertvalue { i16, i16 } %mrv, i16 %"17", 1
  ret { i16, i16 } %mrv8
}

declare i32 @printf(i8*, ...)

declare void @abort()