On Jan 29, 2009, at 7:38 AM, Joern Rennecke wrote:

> The difference is that the front end does not work on source code, but > Java bytecode, which seems closer to intermediate representation than
> to a "high-level, non-intermediate language".

I think it is clear that Java bytecode, which can even be executed
directly by some microprocessors, is not a "compiler intermediate
representation."

That is beside the point.  It is not a high level language.  Hence,
when you use gcc to compile Java bytecode to Target Code, this is not
an eligible compilation process.

When you use a non-GPL-compatible java frontend to compile Java source to
bytecode and then use GCC to compile this to Target Code, it is not
an eligble compilation process either, because you used a non-GPL- compatible
frontend.

This issue is also somewhat confusing to me. It is a moot point, because LLVM is GPL compatible, but is LLVM .ll language considered a target code, intermediate representation, or a "high-level, non- intermediate language"? It is not clear to me how LLVM .ll files are different from .c files that are used as intermediates between bison and a C compiler.

LLVM .ll files are a fully documented language and people write them by hand all the time. It is quite arguably much higher level that machine code (having concepts like "call with arguments", a type system, etc), and is fully specified (http://llvm.org/docs/ LangRef.html). It seems quite possible to argue that it is a "high- level, non-intermediate language" (at least at least as much as C is).

Is the wording intended to allow LLVM .ll files as "high-level, non- intermediate language", or are they considered an IR? What is the dividing line? It seems that this is a very important issue for the entire license.

-Chris

Reply via email to