// #target: macos-x64
module testing;

fn void main()
{
	char[*] data = $embed("embed_basic.c3");
	char* data2 = $embed("embed_basic.c3");
	char[] data3 = $embed("embed_basic.c3");
	char* data4 = $embed("fiek") ?? null;
	char*? data5 = $embed("fiek");
}

/* #expect: testing.ll


@.bytes = private unnamed_addr constant [234 x i8] c"module testing;\0A\0Afn void main()\0A{\0A\09char[*] data = $embed(\22embed_basic.c3\22);\0A\09char* data2 = $embed(\22embed_basic.c3\22);\0A\09char[] data3 = $embed(\22embed_basic.c3\22);\0A\09char* data4 = $embed(\22fiek\22) ?? null;\0A\09char*? data5 = $embed(\22fiek\22);\0A}\0A\0A\00", align 1
@.bytes.1 = private unnamed_addr constant [234 x i8] c"module testing;\0A\0Afn void main()\0A{\0A\09char[*] data = $embed(\22embed_basic.c3\22);\0A\09char* data2 = $embed(\22embed_basic.c3\22);\0A\09char[] data3 = $embed(\22embed_basic.c3\22);\0A\09char* data4 = $embed(\22fiek\22) ?? null;\0A\09char*? data5 = $embed(\22fiek\22);\0A}\0A\0A\00", align 1
@.bytes.2 = private unnamed_addr constant [234 x i8] c"module testing;\0A\0Afn void main()\0A{\0A\09char[*] data = $embed(\22embed_basic.c3\22);\0A\09char* data2 = $embed(\22embed_basic.c3\22);\0A\09char[] data3 = $embed(\22embed_basic.c3\22);\0A\09char* data4 = $embed(\22fiek\22) ?? null;\0A\09char*? data5 = $embed(\22fiek\22);\0A}\0A\0A\00", align 1

define void @testing.main() #0 {
entry:
  %data = alloca
  %data2 = alloca ptr, align 8
  %data3 = alloca %"char[]", align 8
  %data4 = alloca ptr, align 8
  %data5 = alloca ptr, align 8
  %data5.f = alloca i64, align 8
  call void @llvm.memcpy.p0.p0.i32(ptr align 16 %data, ptr align 1 @.bytes
  store ptr @.bytes.1, ptr %data2, align 8
  store %"char[]" { ptr @.bytes.2
  store ptr null, ptr %data4, align 8
  store i64 ptrtoint (ptr @std.io.FILE_NOT_FOUND to i64), ptr %data5.f, align 8
  ret void
}