Diff
checker
Texto
Texto
Imágenes
Documentos
Excel
Carpetas
Legal
Enterprise
Aplicación de escritorio
Precios
Iniciar sesión
Descargar Diffchecker Desktop
Comparar texto
Encuentra la diferencia entre dos archivos de texto
Herramientas
Historial
Editor live
Ocultar sin cambios
Sin ajuste de línea
Vista
Dividido
Unificado
Nivel de detalle
Inteligente
Palabra
Letra
Resaltado de sintaxis
Elegir sintaxis
Ignorar
Transformar texto
Ir al primer cambio
Editar entrada
Diffchecker Desktop
La forma más segura de usar Diffchecker. ¡Obtén la app de Diffchecker Desktop: tus diffs nunca salen de tu computadora!
Obtener Desktop
hello
Creado
hace 2 años
El diff nunca expira
Borrar
Exportar
Compartir
Explicar
62 eliminaciones
Líneas
Total
Eliminado
Caracteres
Total
Eliminado
Para continuar usando esta función, actualice a
Diff
checker
Pro
Ver precios
124 líneas
Copiar todo
73 adiciones
Líneas
Total
Añadido
Caracteres
Total
Añadido
Para continuar usando esta función, actualice a
Diff
checker
Pro
Ver precios
127 líneas
Copiar todo
Copiar
Copiado
Copiar
Copiado
define
ptr
@__crystal_main(i32 %argc, ptr %argv) {
define
%"(Int32 | String)"
@__crystal_main(i32 %argc, ptr %argv) {
alloca:
alloca:
%0 = alloca %"->", align 8
%0 = alloca %"->", align 8
%1 = alloca %"Slice(UInt64)", align 8
%1 = alloca %"Slice(UInt64)", align 8
%2 = alloca %"Slice(UInt8)", align 8
%2 = alloca %"Slice(UInt8)", align 8
Copiar
Copiado
Copiar
Copiado
%3 = alloca %"(Int32 | String)", align 8
br label %entry
br label %entry
entry:
entry:
store i32 %argc, ptr @ARGC_UNSAFE, align 4
store i32 %argc, ptr @ARGC_UNSAFE, align 4
store ptr %argv, ptr @ARGV_UNSAFE, align 8
store ptr %argv, ptr @ARGV_UNSAFE, align 8
store ptr @"'dacd97bcc'", ptr @"Crystal::BUILD_COMMIT", align 8
store ptr @"'dacd97bcc'", ptr @"Crystal::BUILD_COMMIT", align 8
store ptr @"'2024-10-09'", ptr @"Crystal::BUILD_DATE", align 8
store ptr @"'2024-10-09'", ptr @"Crystal::BUILD_DATE", align 8
store ptr @"'/app/.cache/crystal...'", ptr @"Crystal::CACHE_DIR", align 8
store ptr @"'/app/.cache/crystal...'", ptr @"Crystal::CACHE_DIR", align 8
store ptr @"'$ORIGIN/../share/cr...'", ptr @"Crystal::DEFAULT_PATH", align 8
store ptr @"'$ORIGIN/../share/cr...'", ptr @"Crystal::DEFAULT_PATH", align 8
store ptr @"'Crystal 1.14.0 [dac...'", ptr @"Crystal::DESCRIPTION", align 8
store ptr @"'Crystal 1.14.0 [dac...'", ptr @"Crystal::DESCRIPTION", align 8
store ptr @"'lib:/opt/compiler-e...'", ptr @"Crystal::PATH", align 8
store ptr @"'lib:/opt/compiler-e...'", ptr @"Crystal::PATH", align 8
store ptr @"'/opt/compiler-explo...'", ptr @"Crystal::LIBRARY_PATH", align 8
store ptr @"'/opt/compiler-explo...'", ptr @"Crystal::LIBRARY_PATH", align 8
store ptr @"'1.14.0'", ptr @"Crystal::VERSION", align 8
store ptr @"'1.14.0'", ptr @"Crystal::VERSION", align 8
store ptr @"'18.1.6'", ptr @"Crystal::LLVM_VERSION", align 8
store ptr @"'18.1.6'", ptr @"Crystal::LLVM_VERSION", align 8
store ptr @"'x86_64-unknown-linu...'", ptr @"Crystal::HOST_TRIPLE", align 8
store ptr @"'x86_64-unknown-linu...'", ptr @"Crystal::HOST_TRIPLE", align 8
store ptr @"'x86_64-unknown-linu...'", ptr @"Crystal::TARGET_TRIPLE", align 8
store ptr @"'x86_64-unknown-linu...'", ptr @"Crystal::TARGET_TRIPLE", align 8
Copiar
Copiado
Copiar
Copiado
%
3
= call ptr @__crystal_once_init()
%
4
= call ptr @__crystal_once_init()
store ptr %
3
, ptr @"~ONCE_STATE", align 8
store ptr %
4
, ptr @"~ONCE_STATE", align 8
call void @"~Crystal::ELF::MAGIC:const_init"()
call void @"~Crystal::ELF::MAGIC:const_init"()
call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.2")
call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.2")
call void @"~Exception::CallStack::CURRENT_DIR:const_init"()
call void @"~Exception::CallStack::CURRENT_DIR:const_init"()
Copiar
Copiado
Copiar
Copiado
%
4
= load ptr, ptr @"~ONCE_STATE", align 8
%
5
= load ptr, ptr @"~ONCE_STATE", align 8
call void @__crystal_once(ptr %
4
, ptr @"Exception::CallStack::skip:init", ptr @"~Exception::CallStack::skip:init")
call void @__crystal_once(ptr %
5
, ptr @"Exception::CallStack::skip:init", ptr @"~Exception::CallStack::skip:init")
call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.4")
call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.4")
call void @"~Exception::CallStack::empty:init"()
call void @"~Exception::CallStack::empty:init"()
call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.5")
call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.5")
call void @"~Iterator::Stop::INSTANCE:const_init"()
call void @"~Iterator::Stop::INSTANCE:const_init"()
call void @"~LibC::SIG_DFL:const_init"()
call void @"~LibC::SIG_DFL:const_init"()
call void @"~LibC::SIG_IGN:const_init"()
call void @"~LibC::SIG_IGN:const_init"()
call void @"~String::CHAR_TO_DIGIT:const_init"()
call void @"~String::CHAR_TO_DIGIT:const_init"()
call void @"~String::CHAR_TO_DIGIT62:const_init"()
call void @"~String::CHAR_TO_DIGIT62:const_init"()
call void @"~LibC::MAP_FAILED:const_init"()
call void @"~LibC::MAP_FAILED:const_init"()
Copiar
Copiado
Copiar
Copiado
%
5
= load ptr, ptr @"~ONCE_STATE", align 8
%
6
= load ptr, ptr @"~ONCE_STATE", align 8
call void @__crystal_once(ptr %
5
, ptr @"Process::INITIAL_PWD:const_init", ptr @"~Process::INITIAL_PWD:const_init")
call void @__crystal_once(ptr %
6
, ptr @"Process::INITIAL_PWD:const_init", ptr @"~Process::INITIAL_PWD:const_init")
call void @"~File::DEFAULT_CREATE_PERMISSIONS:const_init"()
call void @"~File::DEFAULT_CREATE_PERMISSIONS:const_init"()
Copiar
Copiado
Copiar
Copiado
%
6
= getelementptr inbounds %"->", ptr %0, i32 0, i32 0
%
7
= getelementptr inbounds %"->", ptr %0, i32 0, i32 0
store ptr @"~procProc(Nil)@/opt/compiler-explorer/crystal-1.14.0/share/crystal/src/gc/boehm.cr:459", ptr %
6
, align 8
store ptr @"~procProc(Nil)@/opt/compiler-explorer/crystal-1.14.0/share/crystal/src/gc/boehm.cr:459", ptr %
7
, align 8
%
7
= getelementptr inbounds %"->", ptr %0, i32 0, i32 1
%
8
= getelementptr inbounds %"->", ptr %0, i32 0, i32 1
store ptr null, ptr %
7
, align 8
store ptr null, ptr %
8
, align 8
%
8
= load %"->", ptr %0, align 8
%
9
= load %"->", ptr %0, align 8
call void @"*GC::before_collect<&Proc(Nil)>:Nil"(%"->" %
8
)
call void @"*GC::before_collect<&Proc(Nil)>:Nil"(%"->" %
9
)
%
9
= call %"Slice(UInt64)" @"*StaticArray(UInt64, 2)@StaticArray(T, N)#to_slice:Slice(UInt64)"(ptr @"Crystal::Hasher::seed")
%
10
= call %"Slice(UInt64)" @"*StaticArray(UInt64, 2)@StaticArray(T, N)#to_slice:Slice(UInt64)"(ptr @"Crystal::Hasher::seed")
store %"Slice(UInt64)" %
9
, ptr %1, align 8
store %"Slice(UInt64)" %
10
, ptr %1, align 8
%
10
= call %"Slice(UInt8)" @"*Slice(UInt64)@Slice(T)#to_unsafe_bytes:Slice(UInt8)"(ptr %1)
%
11
= call %"Slice(UInt8)" @"*Slice(UInt64)@Slice(T)#to_unsafe_bytes:Slice(UInt8)"(ptr %1)
store %"Slice(UInt8)" %
10
, ptr %2, align 8
store %"Slice(UInt8)" %
11
, ptr %2, align 8
%
11
= load %"Slice(UInt8)", ptr %2, align 8
%
12
= load %"Slice(UInt8)", ptr %2, align 8
call void @"*Crystal::System::Random::random_bytes<Slice(UInt8)>:Nil"(%"Slice(UInt8)" %
11
)
call void @"*Crystal::System::Random::random_bytes<Slice(UInt8)>:Nil"(%"Slice(UInt8)" %
12
)
call void @"~Int128::MIN:const_init"()
call void @"~Int128::MIN:const_init"()
call void @"~Int128::MAX:const_init"()
call void @"~Int128::MAX:const_init"()
call void @"~UInt128::MIN:const_init"()
call void @"~UInt128::MIN:const_init"()
call void @"~UInt128::MAX:const_init"()
call void @"~UInt128::MAX:const_init"()
Copiar
Copiado
Copiar
Copiado
%12 = load ptr, ptr @"~ONCE_STATE", align 8
call void @__crystal_once(ptr %12, ptr @"STDOUT:const_init", ptr @"~STDOUT:const_init")
%13 = load ptr, ptr @"~ONCE_STATE", align 8
%13 = load ptr, ptr @"~ONCE_STATE", align 8
Copiar
Copiado
Copiar
Copiado
call void @__crystal_once(ptr %13,
ptr @"STDERR:const_init", ptr @"~STDERR:const_init")
call void @__crystal_once(ptr %13,
ptr @"STDOUT:const_init", ptr @"~STDOUT:const_init")
%
14
= call ptr @"*ENV::[]?<String>:(String | Nil)"(ptr @"'CRYSTAL_LOAD_DEBUG_...'")
%14 = load ptr, ptr @"~ONCE_STATE", align 8
%
15
= icmp eq ptr %
14
, null
call void @__crystal_once(ptr %14,
ptr @"STDERR:const_init", ptr @"~STDERR:const_init")
%
16
= select i1 %
15
, i32 0, i32 1
%
15
= call ptr @"*ENV::[]?<String>:(String | Nil)"(ptr @"'CRYSTAL_LOAD_DEBUG_...'")
%
17
= icmp eq i32 0, %
16
%
16
= icmp eq ptr %
15
, null
%
18
= and i1 %
17
, true
%
17
= select i1 %
16
, i32 0, i32 1
br i1 %
18
, label %current_def, label %next_def
%
18
= icmp eq i32 0, %
17
%
19
= and i1 %
18
, true
br i1 %
19
, label %current_def, label %next_def
then:
then:
call void @"*Exception::CallStack::load_debug_info:Nil"()
call void @"*Exception::CallStack::load_debug_info:Nil"()
br label %exit3
br label %exit3
else:
else:
br label %exit3
br label %exit3
current_def:
current_def:
br label %exit
br label %exit
next_def:
next_def:
Copiar
Copiado
Copiar
Copiado
%
19
= icmp eq i32 1, %
16
%
20
= icmp eq i32 1, %
17
%
20
= and i1 %
19
, true
%
21
= and i1 %
20
, true
br i1 %
20
, label %current_def1, label %next_def2
br i1 %
21
, label %current_def1, label %next_def2
exit:
exit:
Copiar
Copiado
Copiar
Copiado
%
21
= phi i1 [ false, %current_def ], [ %
22
, %current_def1 ]
%
22
= phi i1 [ false, %current_def ], [ %
23
, %current_def1 ]
br i1 %
21
, label %then, label %else
br i1 %
22
, label %then, label %else
current_def1:
current_def1:
Copiar
Copiado
Copiar
Copiado
%
22
= call i1 @"*String#==<String>:Bool"(ptr %
14
, ptr @"'1'")
%
23
= call i1 @"*String#==<String>:Bool"(ptr %
15
, ptr @"'1'")
br label %exit
br label %exit
next_def2:
next_def2:
unreachable
unreachable
exit3:
exit3:
Copiar
Copiado
Copiar
Copiado
%
23
= call %"(Int32 | Nil)" @"*Exception::CallStack::setup_crash_handler:(Int32 | Nil)"()
%
24
= call %"(Int32 | Nil)" @"*Exception::CallStack::setup_crash_handler:(Int32 | Nil)"()
call void @"*Crystal::Scheduler::init:Nil"()
call void @"*Crystal::Scheduler::init:Nil"()
call void @"*Crystal::System::Signal::setup_default_handlers:Nil"()
call void @"*Crystal::System::Signal::setup_default_handlers:Nil"()
call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.27")
call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.27")
call void @"~Reference::ExecRecursive::exec_recursive:init"()
call void @"~Reference::ExecRecursive::exec_recursive:init"()
call void @"~Reference::ExecRecursiveClone::exec_recursive:init"()
call void @"~Reference::ExecRecursiveClone::exec_recursive:init"()
Copiar
Copiado
Copiar
Copiado
%24 = load ptr, ptr @"~ONCE_STATE", align 8
call void @__crystal_once(ptr %24, ptr @"Crystal::System::Signal::pipe:init", ptr @"~Crystal::System::Signal::pipe:init")
%25 = load ptr, ptr @"~ONCE_STATE", align 8
%25 = load ptr, ptr @"~ONCE_STATE", align 8
Copiar
Copiado
Copiar
Copiado
call void @__crystal_once(ptr %25, ptr @"Crystal::System::Signal::
handlers
:init", ptr @"~Crystal::System::Signal::
handlers
:init")
call void @__crystal_once(ptr %25, ptr @"Crystal::System::Signal::
pipe
:init", ptr @"~Crystal::System::Signal::
pipe
:init")
%26 = load ptr, ptr @"~ONCE_STATE", align 8
%26 = load ptr, ptr @"~ONCE_STATE", align 8
Copiar
Copiado
Copiar
Copiado
call void @__crystal_once(ptr %26, ptr @"Crystal::System::Signal::
sigset
:init", ptr @"~Crystal::System::Signal::
sigset
:init")
call void @__crystal_once(ptr %26, ptr @"Crystal::System::Signal::
handlers
:init", ptr @"~Crystal::System::Signal::
handlers
:init")
%27 = load ptr, ptr @"~ONCE_STATE", align 8
%27 = load ptr, ptr @"~ONCE_STATE", align 8
Copiar
Copiado
Copiar
Copiado
call void @__crystal_once(ptr %27, ptr @"Crystal::System::Signal::
mutex
:init", ptr @"~Crystal::System::Signal::
mutex
:init")
call void @__crystal_once(ptr %27, ptr @"Crystal::System::Signal::
sigset
:init", ptr @"~Crystal::System::Signal::
sigset
:init")
%28 = load ptr, ptr @"~ONCE_STATE", align 8
%28 = load ptr, ptr @"~ONCE_STATE", align 8
Copiar
Copiado
Copiar
Copiado
call void @__crystal_once(ptr %28, ptr @"Crystal::System::Signal::
setup_default_handlers
:init", ptr @"~Crystal::System::Signal::
setup_default_handlers
:init")
call void @__crystal_once(ptr %28, ptr @"Crystal::System::Signal::
mutex
:init", ptr @"~Crystal::System::Signal::
mutex
:init")
%29 = load ptr, ptr @"~ONCE_STATE", align 8
%29 = load ptr, ptr @"~ONCE_STATE", align 8
Copiar
Copiado
Copiar
Copiado
call void @__crystal_once(ptr %29, ptr @"Crystal::System::Signal::setup_
seg
fault_handler
:init", ptr @"~Crystal::System::Signal::setup_
seg
fault_handler
:init")
call void @__crystal_once(ptr %29, ptr @"Crystal::System::Signal::setup_
de
fault_handler
s
:init", ptr @"~Crystal::System::Signal::setup_
de
fault_handler
s
:init")
%30 = load ptr, ptr @"~ONCE_STATE", align 8
%30 = load ptr, ptr @"~ONCE_STATE", align 8
Copiar
Copiado
Copiar
Copiado
call void @__crystal_once(ptr %30, ptr @"Crystal::System::Signal::
segfault_handler:init", ptr @"~Crystal::System::Signal::se
gfault_handler:init")
call void @__crystal_once(ptr %30, ptr @"Crystal::System::Signal::
setup_
segfault_handler:init", ptr @"~Crystal::System::Signal::se
tup_se
gfault_handler:init")
%31 = load ptr, ptr @"~ONCE_STATE", align 8
%31 = load ptr, ptr @"~ONCE_STATE", align 8
Copiar
Copiado
Copiar
Copiado
call void @__crystal_once(ptr %31, ptr @"Crystal::System::
SignalChildHandler::pending:
init", ptr @"~Crystal::System::
SignalChildHandler::pending:
init")
call void @__crystal_once(ptr %31, ptr @"Crystal::System::
Signal::segfault_handler:
init", ptr @"~Crystal::System::
Signal::segfault_handler:
init")
%32 = load ptr, ptr @"~ONCE_STATE", align 8
%32 = load ptr, ptr @"~ONCE_STATE", align 8
Copiar
Copiado
Copiar
Copiado
call void @__crystal_once(ptr %32, ptr @"Crystal::System::SignalChildHandler::
waiting
:init", ptr @"~Crystal::System::SignalChildHandler::
waiting
:init")
call void @__crystal_once(ptr %32, ptr @"Crystal::System::SignalChildHandler::
pending
:init", ptr @"~Crystal::System::SignalChildHandler::
pending
:init")
%33 = load ptr, ptr @"~ONCE_STATE", align 8
%33 = load ptr, ptr @"~ONCE_STATE", align 8
Copiar
Copiado
Copiar
Copiado
call void @__crystal_once(ptr %33, ptr @"Crystal::System::SignalChildHandler:
:mutex:init", ptr @"~Crystal::System::SignalChildHandler::mutex:init")
call void @__crystal_once(ptr %33, ptr @"Crystal::System::SignalChildHandler:
:waiting:init", ptr @"~Crystal::System::SignalChildHandler::waiting:init")
%34 = load ptr, ptr @"~ONCE_STATE", align 8
call void @__crystal_once(ptr %34, ptr @"Crystal::System::SignalChildHandler:
:mutex:init", ptr @"~Crystal::System::SignalChildHandler::mutex:init")
call void @"~Time::Location::location_cache:init"()
call void @"~Time::Location::location_cache:init"()
Copiar
Copiado
Copiar
Copiado
%
34
= call
ptr
@"*hello<String>:
String
"(ptr @"'hello world'")
%
35
= call
%"(Int32 | String)"
@"*hello<String>:
(Int32 |
String
)
"(ptr @"'hello world'")
ret
ptr %3
4
store %"(Int32 | String)" %35,
ptr %3
, align 8
%36 = load %"(Int32 | String)", ptr %3, align 8
ret %"(Int32 | String)" %36
}
}
Diferencias guardadas
Texto original
Abrir archivo
define ptr @__crystal_main(i32 %argc, ptr %argv) { alloca: %0 = alloca %"->", align 8 %1 = alloca %"Slice(UInt64)", align 8 %2 = alloca %"Slice(UInt8)", align 8 br label %entry entry: store i32 %argc, ptr @ARGC_UNSAFE, align 4 store ptr %argv, ptr @ARGV_UNSAFE, align 8 store ptr @"'dacd97bcc'", ptr @"Crystal::BUILD_COMMIT", align 8 store ptr @"'2024-10-09'", ptr @"Crystal::BUILD_DATE", align 8 store ptr @"'/app/.cache/crystal...'", ptr @"Crystal::CACHE_DIR", align 8 store ptr @"'$ORIGIN/../share/cr...'", ptr @"Crystal::DEFAULT_PATH", align 8 store ptr @"'Crystal 1.14.0 [dac...'", ptr @"Crystal::DESCRIPTION", align 8 store ptr @"'lib:/opt/compiler-e...'", ptr @"Crystal::PATH", align 8 store ptr @"'/opt/compiler-explo...'", ptr @"Crystal::LIBRARY_PATH", align 8 store ptr @"'1.14.0'", ptr @"Crystal::VERSION", align 8 store ptr @"'18.1.6'", ptr @"Crystal::LLVM_VERSION", align 8 store ptr @"'x86_64-unknown-linu...'", ptr @"Crystal::HOST_TRIPLE", align 8 store ptr @"'x86_64-unknown-linu...'", ptr @"Crystal::TARGET_TRIPLE", align 8 %3 = call ptr @__crystal_once_init() store ptr %3, ptr @"~ONCE_STATE", align 8 call void @"~Crystal::ELF::MAGIC:const_init"() call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.2") call void @"~Exception::CallStack::CURRENT_DIR:const_init"() %4 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %4, ptr @"Exception::CallStack::skip:init", ptr @"~Exception::CallStack::skip:init") call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.4") call void @"~Exception::CallStack::empty:init"() call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.5") call void @"~Iterator::Stop::INSTANCE:const_init"() call void @"~LibC::SIG_DFL:const_init"() call void @"~LibC::SIG_IGN:const_init"() call void @"~String::CHAR_TO_DIGIT:const_init"() call void @"~String::CHAR_TO_DIGIT62:const_init"() call void @"~LibC::MAP_FAILED:const_init"() %5 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %5, ptr @"Process::INITIAL_PWD:const_init", ptr @"~Process::INITIAL_PWD:const_init") call void @"~File::DEFAULT_CREATE_PERMISSIONS:const_init"() %6 = getelementptr inbounds %"->", ptr %0, i32 0, i32 0 store ptr @"~procProc(Nil)@/opt/compiler-explorer/crystal-1.14.0/share/crystal/src/gc/boehm.cr:459", ptr %6, align 8 %7 = getelementptr inbounds %"->", ptr %0, i32 0, i32 1 store ptr null, ptr %7, align 8 %8 = load %"->", ptr %0, align 8 call void @"*GC::before_collect<&Proc(Nil)>:Nil"(%"->" %8) %9 = call %"Slice(UInt64)" @"*StaticArray(UInt64, 2)@StaticArray(T, N)#to_slice:Slice(UInt64)"(ptr @"Crystal::Hasher::seed") store %"Slice(UInt64)" %9, ptr %1, align 8 %10 = call %"Slice(UInt8)" @"*Slice(UInt64)@Slice(T)#to_unsafe_bytes:Slice(UInt8)"(ptr %1) store %"Slice(UInt8)" %10, ptr %2, align 8 %11 = load %"Slice(UInt8)", ptr %2, align 8 call void @"*Crystal::System::Random::random_bytes<Slice(UInt8)>:Nil"(%"Slice(UInt8)" %11) call void @"~Int128::MIN:const_init"() call void @"~Int128::MAX:const_init"() call void @"~UInt128::MIN:const_init"() call void @"~UInt128::MAX:const_init"() %12 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %12, ptr @"STDOUT:const_init", ptr @"~STDOUT:const_init") %13 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %13, ptr @"STDERR:const_init", ptr @"~STDERR:const_init") %14 = call ptr @"*ENV::[]?<String>:(String | Nil)"(ptr @"'CRYSTAL_LOAD_DEBUG_...'") %15 = icmp eq ptr %14, null %16 = select i1 %15, i32 0, i32 1 %17 = icmp eq i32 0, %16 %18 = and i1 %17, true br i1 %18, label %current_def, label %next_def then: call void @"*Exception::CallStack::load_debug_info:Nil"() br label %exit3 else: br label %exit3 current_def: br label %exit next_def: %19 = icmp eq i32 1, %16 %20 = and i1 %19, true br i1 %20, label %current_def1, label %next_def2 exit: %21 = phi i1 [ false, %current_def ], [ %22, %current_def1 ] br i1 %21, label %then, label %else current_def1: %22 = call i1 @"*String#==<String>:Bool"(ptr %14, ptr @"'1'") br label %exit next_def2: unreachable exit3: %23 = call %"(Int32 | Nil)" @"*Exception::CallStack::setup_crash_handler:(Int32 | Nil)"() call void @"*Crystal::Scheduler::init:Nil"() call void @"*Crystal::System::Signal::setup_default_handlers:Nil"() call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.27") call void @"~Reference::ExecRecursive::exec_recursive:init"() call void @"~Reference::ExecRecursiveClone::exec_recursive:init"() %24 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %24, ptr @"Crystal::System::Signal::pipe:init", ptr @"~Crystal::System::Signal::pipe:init") %25 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %25, ptr @"Crystal::System::Signal::handlers:init", ptr @"~Crystal::System::Signal::handlers:init") %26 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %26, ptr @"Crystal::System::Signal::sigset:init", ptr @"~Crystal::System::Signal::sigset:init") %27 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %27, ptr @"Crystal::System::Signal::mutex:init", ptr @"~Crystal::System::Signal::mutex:init") %28 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %28, ptr @"Crystal::System::Signal::setup_default_handlers:init", ptr @"~Crystal::System::Signal::setup_default_handlers:init") %29 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %29, ptr @"Crystal::System::Signal::setup_segfault_handler:init", ptr @"~Crystal::System::Signal::setup_segfault_handler:init") %30 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %30, ptr @"Crystal::System::Signal::segfault_handler:init", ptr @"~Crystal::System::Signal::segfault_handler:init") %31 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %31, ptr @"Crystal::System::SignalChildHandler::pending:init", ptr @"~Crystal::System::SignalChildHandler::pending:init") %32 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %32, ptr @"Crystal::System::SignalChildHandler::waiting:init", ptr @"~Crystal::System::SignalChildHandler::waiting:init") %33 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %33, ptr @"Crystal::System::SignalChildHandler::mutex:init", ptr @"~Crystal::System::SignalChildHandler::mutex:init") call void @"~Time::Location::location_cache:init"() %34 = call ptr @"*hello<String>:String"(ptr @"'hello world'") ret ptr %34 }
Texto modificado
Abrir archivo
define %"(Int32 | String)" @__crystal_main(i32 %argc, ptr %argv) { alloca: %0 = alloca %"->", align 8 %1 = alloca %"Slice(UInt64)", align 8 %2 = alloca %"Slice(UInt8)", align 8 %3 = alloca %"(Int32 | String)", align 8 br label %entry entry: store i32 %argc, ptr @ARGC_UNSAFE, align 4 store ptr %argv, ptr @ARGV_UNSAFE, align 8 store ptr @"'dacd97bcc'", ptr @"Crystal::BUILD_COMMIT", align 8 store ptr @"'2024-10-09'", ptr @"Crystal::BUILD_DATE", align 8 store ptr @"'/app/.cache/crystal...'", ptr @"Crystal::CACHE_DIR", align 8 store ptr @"'$ORIGIN/../share/cr...'", ptr @"Crystal::DEFAULT_PATH", align 8 store ptr @"'Crystal 1.14.0 [dac...'", ptr @"Crystal::DESCRIPTION", align 8 store ptr @"'lib:/opt/compiler-e...'", ptr @"Crystal::PATH", align 8 store ptr @"'/opt/compiler-explo...'", ptr @"Crystal::LIBRARY_PATH", align 8 store ptr @"'1.14.0'", ptr @"Crystal::VERSION", align 8 store ptr @"'18.1.6'", ptr @"Crystal::LLVM_VERSION", align 8 store ptr @"'x86_64-unknown-linu...'", ptr @"Crystal::HOST_TRIPLE", align 8 store ptr @"'x86_64-unknown-linu...'", ptr @"Crystal::TARGET_TRIPLE", align 8 %4 = call ptr @__crystal_once_init() store ptr %4, ptr @"~ONCE_STATE", align 8 call void @"~Crystal::ELF::MAGIC:const_init"() call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.2") call void @"~Exception::CallStack::CURRENT_DIR:const_init"() %5 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %5, ptr @"Exception::CallStack::skip:init", ptr @"~Exception::CallStack::skip:init") call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.4") call void @"~Exception::CallStack::empty:init"() call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.5") call void @"~Iterator::Stop::INSTANCE:const_init"() call void @"~LibC::SIG_DFL:const_init"() call void @"~LibC::SIG_IGN:const_init"() call void @"~String::CHAR_TO_DIGIT:const_init"() call void @"~String::CHAR_TO_DIGIT62:const_init"() call void @"~LibC::MAP_FAILED:const_init"() %6 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %6, ptr @"Process::INITIAL_PWD:const_init", ptr @"~Process::INITIAL_PWD:const_init") call void @"~File::DEFAULT_CREATE_PERMISSIONS:const_init"() %7 = getelementptr inbounds %"->", ptr %0, i32 0, i32 0 store ptr @"~procProc(Nil)@/opt/compiler-explorer/crystal-1.14.0/share/crystal/src/gc/boehm.cr:459", ptr %7, align 8 %8 = getelementptr inbounds %"->", ptr %0, i32 0, i32 1 store ptr null, ptr %8, align 8 %9 = load %"->", ptr %0, align 8 call void @"*GC::before_collect<&Proc(Nil)>:Nil"(%"->" %9) %10 = call %"Slice(UInt64)" @"*StaticArray(UInt64, 2)@StaticArray(T, N)#to_slice:Slice(UInt64)"(ptr @"Crystal::Hasher::seed") store %"Slice(UInt64)" %10, ptr %1, align 8 %11 = call %"Slice(UInt8)" @"*Slice(UInt64)@Slice(T)#to_unsafe_bytes:Slice(UInt8)"(ptr %1) store %"Slice(UInt8)" %11, ptr %2, align 8 %12 = load %"Slice(UInt8)", ptr %2, align 8 call void @"*Crystal::System::Random::random_bytes<Slice(UInt8)>:Nil"(%"Slice(UInt8)" %12) call void @"~Int128::MIN:const_init"() call void @"~Int128::MAX:const_init"() call void @"~UInt128::MIN:const_init"() call void @"~UInt128::MAX:const_init"() %13 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %13, ptr @"STDOUT:const_init", ptr @"~STDOUT:const_init") %14 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %14, ptr @"STDERR:const_init", ptr @"~STDERR:const_init") %15 = call ptr @"*ENV::[]?<String>:(String | Nil)"(ptr @"'CRYSTAL_LOAD_DEBUG_...'") %16 = icmp eq ptr %15, null %17 = select i1 %16, i32 0, i32 1 %18 = icmp eq i32 0, %17 %19 = and i1 %18, true br i1 %19, label %current_def, label %next_def then: call void @"*Exception::CallStack::load_debug_info:Nil"() br label %exit3 else: br label %exit3 current_def: br label %exit next_def: %20 = icmp eq i32 1, %17 %21 = and i1 %20, true br i1 %21, label %current_def1, label %next_def2 exit: %22 = phi i1 [ false, %current_def ], [ %23, %current_def1 ] br i1 %22, label %then, label %else current_def1: %23 = call i1 @"*String#==<String>:Bool"(ptr %15, ptr @"'1'") br label %exit next_def2: unreachable exit3: %24 = call %"(Int32 | Nil)" @"*Exception::CallStack::setup_crash_handler:(Int32 | Nil)"() call void @"*Crystal::Scheduler::init:Nil"() call void @"*Crystal::System::Signal::setup_default_handlers:Nil"() call void @"*Exception::CallStack::skip<String>:Nil"(ptr @"'/opt/compiler-explo...'.27") call void @"~Reference::ExecRecursive::exec_recursive:init"() call void @"~Reference::ExecRecursiveClone::exec_recursive:init"() %25 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %25, ptr @"Crystal::System::Signal::pipe:init", ptr @"~Crystal::System::Signal::pipe:init") %26 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %26, ptr @"Crystal::System::Signal::handlers:init", ptr @"~Crystal::System::Signal::handlers:init") %27 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %27, ptr @"Crystal::System::Signal::sigset:init", ptr @"~Crystal::System::Signal::sigset:init") %28 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %28, ptr @"Crystal::System::Signal::mutex:init", ptr @"~Crystal::System::Signal::mutex:init") %29 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %29, ptr @"Crystal::System::Signal::setup_default_handlers:init", ptr @"~Crystal::System::Signal::setup_default_handlers:init") %30 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %30, ptr @"Crystal::System::Signal::setup_segfault_handler:init", ptr @"~Crystal::System::Signal::setup_segfault_handler:init") %31 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %31, ptr @"Crystal::System::Signal::segfault_handler:init", ptr @"~Crystal::System::Signal::segfault_handler:init") %32 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %32, ptr @"Crystal::System::SignalChildHandler::pending:init", ptr @"~Crystal::System::SignalChildHandler::pending:init") %33 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %33, ptr @"Crystal::System::SignalChildHandler::waiting:init", ptr @"~Crystal::System::SignalChildHandler::waiting:init") %34 = load ptr, ptr @"~ONCE_STATE", align 8 call void @__crystal_once(ptr %34, ptr @"Crystal::System::SignalChildHandler::mutex:init", ptr @"~Crystal::System::SignalChildHandler::mutex:init") call void @"~Time::Location::location_cache:init"() %35 = call %"(Int32 | String)" @"*hello<String>:(Int32 | String)"(ptr @"'hello world'") store %"(Int32 | String)" %35, ptr %3, align 8 %36 = load %"(Int32 | String)", ptr %3, align 8 ret %"(Int32 | String)" %36 }
Encontrar la diferencia