LLVM und C++ oder doch kein C++?

Unten ein Auszug aus der LLVM https://llvm.org/docs/FAQ.html. Vielleicht kann mich wer aufklären was es damit auf sich hat?
Was denn nun?

What source languages are supported?

LLVM currently has full support for C and C++ source languages through Clang. Many other language frontends have been written using LLVM, and an incomplete list is available at projects with LLVM.


Can I compile C or C++ code to platform-independent LLVM bitcode?

No. C and C++ are inherently platform-dependent languages. The most obvious example of this is the preprocessor. A very common way that C code is made portable is by using the preprocessor to include platform-specific code. In practice, information about other platforms is lost after preprocessing, so the result is inherently dependent on the platform that the preprocessing was targeting.

Another example is sizeof . It’s common for sizeof(long) to vary between platforms. In most C front-ends, sizeof is expanded to a constant immediately, thus hard-wiring a platform-specific detail.

Also, since many platforms define their ABIs in terms of C, and since LLVM is lower-level than C, front-ends currently must emit platform-specific IR in order to have the result conform to the platform ABI.


Bin da nicht tief drin, aber soweit ich das verstehe, ist LLVM Bitcode (*händewedeln*) das Compilat, ähnlich zum Java Bytecode, der dann mit entsprechenden Tools (ähnlich wie eine VM) ausgeführt werden kann. Die Einschränkung bei der zweiten Frage bezöge sich dann darauf, dass der Bitcode selbst nicht plattformunabhängig sein kann. Das hat dann wohl mit der Quellsprache nichts zu tun.

Oder kurz, wie ich das verstehe:

Man kann C++ compilieren. Und zwar entweder in “Windows-Bitcode” oder in “Linux-Bitcode” (aber nicht in welchen, der auf beiden Plattformen funktioniert).

(Das ist jetzt aber alles sehr geraten. Eigentlich wollte ich mich auch mal ein bißchen mit LLVM beschäftigen, aber … vielleicht im nächsten Leben)

Ohja, das kann natürlich sein. Hatte die Betonung beim Lesen nicht auf das Plattform Unabhängig gelegt. Da frage ich mich dann doch was das ganze überhaupt soll.
Wenn man das mal bei Google nachschaut erhält man sowohl Antworten mit Ja als auch Nein.

Es ist nur interessant mit die GraalVM für :roll_eyes: C++ und Java Interoperabilität.

Naja, danke.