LLVM - Executar próprio passe automaticamente com clang
Escrevi alguns passes para o llvm, para usá-los com clang.
Eu os integrei no llvm (não carregado dinamicamente). Eles ainda estão listados noOtimizações disponíveis: seção quando digito:
opt --help-hidden
Quero executar um dos meus passes agora automaticamente como oúltimo quando eu chamo clang:
clang ./hello.bc -o ./hello
ou mesmo com o código c:
clang ./hello.c -o ./hello
Quando executo meu passe com opt manualmente, o ByteCode modificado é gerado e gravado em um novo arquivo .bc:
opt -my-pass < ./hello.bc > ./hello_optimized.bc
Quando eu compilo o .bc modificado com o clang, as otimizações normais do clang são executadas novamente, o que destrói as otimizações do meu passo executado manualmente:
clang -O0 -m32 ./hello_optimized.bc -o ./hello_optimized
Minha pergunta é:
Como posso executar meu próprio passe escrito automaticamente com clang como o último passe de todos?Outra solução possível é desativar todas as passagens completamente, ou pelo menos a eliminação do código morto / função do clang / opt. Como eu pude fazer isso?