Julian, Laure, Matthieu, 3 avril 2019. Fait depuis la dernière fois : * Script pour lancer la testsuite marche, "presque". * Options passées au script avec + * Possibilité de lancer le script sur un subset de la testsuite (exemple : SingleSource), passage en JSON. * Suite : parser les JSON pour tracer des courbes. Retour sur discussion avec Serge : - Quel est l'impact de la différence de passes Module et Function ? En quoi ça nous gène ? Est-ce que "opt -option1 -option2" fait autre chose que juste appliquer les passes 1 et 2, dans l'ordre ? TODO: Matthieu écrit un mail. Expériences avec clang : $ strace -s 10000 -f -e execve,fork,clone clang toto.c -O3 -c execve("/usr/bin/clang", ["clang", "toto.c", "-O3", "-c"], 0x7ffea9b12cd0 /* 81 vars */) = 0 clone(strace: Process 13196 attached [pid 13196] execve("/usr/lib/llvm-6.0/bin/clang", ["/usr/lib/llvm-6.0/bin/clang", "-cc1", "-triple", "x86_64-pc-linux-gnu", "-emit-obj", "-disable-free", "-disable-llvm-verifier", "-discard-value-names", "-main-file-name", "toto.c", "-mrelocation-model", "static", "-mthread-model", "posix", "-fmath-errno", "-mas m-verbose", "-mconstructor-aliases", "-munwind-tables", "-fuse-init-array", "-target-cpu", "x86-64", "-dwarf-column-info", "-debugger-tuning=gdb", "-momit-leaf-frame-pointer", "-coverage-notes-file", "/tmp/toto.gcno", "-resource-dir", "/usr/lib/llvm-6.0/lib/clang/6.0.0", "-internal-isystem", "/usr/local/include" , "-internal-isystem", "/usr/lib/llvm-6.0/lib/clang/6.0.0/include", "-internal-externc-isystem", "/usr/include/x86_64-linux-gnu", "-internal-externc-isystem", "/include", "-internal-externc-isystem", "/usr/include", "-O3", "-fdebug-compilation-dir", "/tmp", "-ferror-limit", "19", "-fmessage-length", "313", "-fob jc-runtime=gcc", "-fdiagnostics-show-option", "-fcolor-diagnostics", "-vectorize-loops", "-vectorize-slp", "-o", "toto.o", "-x", "c", "toto.c"], 0x7ffe5b20eaa0 /* 81 vars */ [pid 13195] <... clone resumed> child_stack=0x7fce31a94ff0, flags=CLONE_VM|CLONE_VFORK|SIGCHLD) = 13196 [pid 13196] <... execve resumed> ) = 0 [pid 13196] +++ exited with 0 +++ --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13196, si_uid=1001, si_status=0, si_utime=1, si_stime=0} --- +++ exited with 0 +++ Le lancement du compilo a l'air d'être dans tools/driver/cc1_main.cpp qui appelle lib/FrontendTool/ExecuteCompilerInvocation.cpp. Mais dur de comprendre où est l'initialisation du pass manager. Lire la doc ? http://llvm.org/docs/ http://llvm.org/docs/WritingAnLLVMPass.html Demander à Serge => TODO: Matthieu écrit un mail. On a un truc qui marche plus ou moins => ne pas tout casser maintenant. Au pire, mini-Seb s'occupera du hack dans clang. Priorité : avoir des résultats partiels.