Создание байт-кода LLVM из классов C ++

Я пишу компилятор для специального языка в LLVM. Я хочу добавить привязки для библиотеки, которая уже написана на C ++. Мои идея состоит в том, чтобы скомпилировать библиотеку в байт-код LLVM (используя clang -emit-llvm -S abc.c ) и связать ее во время компиляции. Это хорошо работает для кода типа

// lib.c
int f() {
    return 123;
}

. Но части библиотеки написаны например

// A.cc
class A {
    public:
        int f() { return 123; }
};

, что приводит к пустым файлам байт-кода. Я знаю, что могу исправить это, разделив реализацию:

// A.cc
class A {
    public:
        int f();
};

int A::f() {
    return 123;
}

Но это будет утомительно. Есть ли способ создать полезный байт-код из источников моей библиотеки, поскольку они есть? Или любой другой способ сделать библиотеку доступной в моем компиляторе?

7
задан Thomas Schaub 23 June 2011 в 12:51
поделиться