Diff
checker
Testo
Testo
Immagini
Documenti
Excel
Cartelle
Legal
Enterprise
Applicazione per desktop
Prezzi
Accedi
Scarica Diffchecker Desktop
Confronta il testo
Trova la differenza tra due file di testo
Strumenti
Cronologia
Editor live
Comprimi invariate
Senza a capo
Layout
Diviso
Unificato
Livello di dettaglio
Intelligente
Parola
Carattere
Evidenziazione sintassi
Scegli sintassi
Ignora
Trasforma testo
Vai alla prima modifica
Modifica input
Diffchecker Desktop
Il modo più sicuro per usare Diffchecker. Ottieni l'app Diffchecker Desktop: i tuoi diff non lasciano mai il tuo computer!
Ottieni Desktop
hello
Creato
2 anni fa
Il diff non scade mai
Eliminare
Esporta
Condividere
Spiegare
62 rimozioni
Linee
Totale
Rimosso
Caratteri
Totale
Rimosso
Per continuare a utilizzare questa funzione, aggiorna a
Diff
checker
Pro
Visualizza prezzi
124 linee
Copia tutti
73 aggiunte
Linee
Totale
Aggiunto
Caratteri
Totale
Aggiunto
Per continuare a utilizzare questa funzione, aggiorna a
Diff
checker
Pro
Visualizza prezzi
127 linee
Copia tutti
Copia
Copiato
Copia
Copiato
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
Copia
Copiato
Copia
Copiato
%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
Copia
Copiato
Copia
Copiato
%
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"()
Copia
Copiato
Copia
Copiato
%
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"()
Copia
Copiato
Copia
Copiato
%
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"()
Copia
Copiato
Copia
Copiato
%
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"()
Copia
Copiato
Copia
Copiato
%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
Copia
Copiato
Copia
Copiato
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:
Copia
Copiato
Copia
Copiato
%
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:
Copia
Copiato
Copia
Copiato
%
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:
Copia
Copiato
Copia
Copiato
%
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:
Copia
Copiato
Copia
Copiato
%
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"()
Copia
Copiato
Copia
Copiato
%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
Copia
Copiato
Copia
Copiato
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
Copia
Copiato
Copia
Copiato
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
Copia
Copiato
Copia
Copiato
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
Copia
Copiato
Copia
Copiato
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
Copia
Copiato
Copia
Copiato
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
Copia
Copiato
Copia
Copiato
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
Copia
Copiato
Copia
Copiato
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
Copia
Copiato
Copia
Copiato
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
Copia
Copiato
Copia
Copiato
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"()
Copia
Copiato
Copia
Copiato
%
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
}
}
Diff salvati
Testo originale
Apri file
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 }
Testo modificato
Apri file
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 }
Trovare la differenza