2010-08-12 11 views
3

J'essayais l'exemple Hello pass dans la page Web "Writing an LLVM Pass". J'ai suivi les instructions de compilation (avec gcc-4.2) le bonjour.cpp, mais je suis les erreurs de compilation:Erreur de compilation pour l'exemple Hello pass de llvm

Hello.cpp:20: error: expected identifier before string constant
Hello.cpp:20: error: expected ',' or '...' before string constant
Hello.cpp:20: error: expected constructor, destructor, or type conversion before ';' token

qui est la ligne INITIALIZE_PASS(Hello, "Hello", "Hello World Pass", false, false); dans le programme. Le programme est:

#include "llvm/Pass.h" 
#include "llvm/Function.h" 
#include "llvm/Support/raw_ostream.h" 

using namespace llvm; 

namespace { 

struct Hello : public FunctionPass { 
    static char ID; 
    Hello() : FunctionPass(&ID) {} 

    virtual bool runOnFunction(Function &F) { 
     errs() << "Hello: " << F.getName() << "\n"; 
     return false; 
    } 
}; 

char Hello::ID = 0; 
INITIALIZE_PASS(Hello, "Hello", "Hello World Pass", false, false); 
} 

Quelqu'un peut-il m'aider avec ceci? Merci beaucoup!

Best,
Daniel

+1

Je suis encouragé, il y a grand besoin d'exemples plus de travail: [exemples de code pour apprendre la programmation backend LLVM] (http://stackoverflow.com/questions/8776903/code-examples -for-learning-llvm-backend-programming) –

Répondre

0

C'est le code de démonstration. Cela devrait bien sauf pour la ligne 11, qui devrait être:

Hello() : FunctionPass(ID) {} 

J'utilise v2.8 de LLVM, et tout ce petit changement semble bien fonctionner. Mais j'ai renommé le programme à autre chose car la passe Hello était déjà existante.

Suivez les instructions llvm v2.8, Writing an llvm pass

+0

En effet, le constructeur de FunctionPass [prend] (http://llvm.org/docs/doxygen/html/classllvm_1_1FunctionPass.html) un 'char &' pas un 'char *'. On dirait que l'OP est confus par la syntaxe ref/pointeur. Cela aiderait s'il était habitué à [aligner à gauche ses esperluettes] (http://kera.name/articles/2010/05/tomalaks-monday-monstrous-rant-i-align-your-asterisks/). –