Diff
checker
Texte
Texte
Images
Documents
Excel
Dossiers
Legal
Enterprise
Application de bureau
Prix
Se connecter
Télécharger Diffchecker Desktop
Comparer le texte
Trouver la différence entre deux fichiers texte
Outils
Historique
Éditeur live
Cacher identiques
Sans retour à la ligne
Vue
Divisé
Unifié
Niveau de précision
Intelligent
Mot
Caractère
Coloration syntaxique
Choisir la syntaxe
Ignorer
Transformer le texte
Aller au premier écart
Modifier l'entrée
Diffchecker Desktop
La façon la plus sécurisée d'utiliser Diffchecker. Obtenez l'application Diffchecker Desktop : vos diffs ne quittent jamais votre ordinateur !
Obtenir Desktop
hello
Créé
il y a 2 ans
Le diff n'expire jamais
Effacer
Exporter
Partager
Expliquer
62 suppressions
Lignes
Total
Supprimé
Caractères
Total
Supprimé
Pour continuer à utiliser cette fonctionnalité, passez à
Diff
checker
Pro
Voir les prix
124 lignes
Copier tout
73 ajouts
Lignes
Total
Ajouté
Caractères
Total
Ajouté
Pour continuer à utiliser cette fonctionnalité, passez à
Diff
checker
Pro
Voir les prix
127 lignes
Copier tout
Copier
Copié
Copier
Copié
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
Copier
Copié
Copier
Copié
%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
Copier
Copié
Copier
Copié
%
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"()
Copier
Copié
Copier
Copié
%
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"()
Copier
Copié
Copier
Copié
%
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"()
Copier
Copié
Copier
Copié
%
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"()
Copier
Copié
Copier
Copié
%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
Copier
Copié
Copier
Copié
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:
Copier
Copié
Copier
Copié
%
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:
Copier
Copié
Copier
Copié
%
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:
Copier
Copié
Copier
Copié
%
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:
Copier
Copié
Copier
Copié
%
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"()
Copier
Copié
Copier
Copié
%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
Copier
Copié
Copier
Copié
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
Copier
Copié
Copier
Copié
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
Copier
Copié
Copier
Copié
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
Copier
Copié
Copier
Copié
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
Copier
Copié
Copier
Copié
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
Copier
Copié
Copier
Copié
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
Copier
Copié
Copier
Copié
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
Copier
Copié
Copier
Copié
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
Copier
Copié
Copier
Copié
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"()
Copier
Copié
Copier
Copié
%
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érences enregistrées
Texte d'origine
Ouvrir un fichier
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 }
Texte modifié
Ouvrir un fichier
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 }
Trouver la différence