Hold on Vim_user, systemed rulez.. Instead u both attacking each other.. can anyone ans to my question?
Printable View
Hold on Vim_user, systemed rulez.. Instead u both attacking each other.. can anyone ans to my question?
Of course. It is like Archibald already stated. The frontend, in this case Clang, analyzes the code (checking for syntactical and logical errors) and creates an intermediate code from it. This code then is given to the backend, which translates the intermediate code into actual machine code.
This has the advantages that you can replace the parts individually, for example, Clang is a code analyzer for C/C++, but it can be replaced with a code analyzer for Pascal or any other language, as long as the analyzer creates intermediate code that the backend can parse to machine code. On the other hand you can replace the backend if necessary without changing the frontend.
Also a nice advantage of this design: You can use the parts apart from another, for example can the Clang frontend be used by IDEs or text editors for syntax highlighting or on-the-fly recognition of syntax and logical errors.
Don't listen to Archibald cause he tries to tell lies to make apple look good
Same can be said for gcc, (gcc, g++, gcj, gfortran etc. thier all gcc) except that gcc is alot more compact and it produces far more refined binaries then clang.Quote:
The frontend, in this case Clang, analyzes the code (checking for syntactical and logical errors) and creates an intermediate code from it. This code then is given to the backend, which translates the intermediate code into actual machine code.
This has the advantages that you can replace the parts individually, for example, Clang is a code analyzer for C/C++, but it can be replaced with a code analyzer for Pascal or any other language, as long as the analyzer creates intermediate code that the backend can parse to machine code. On the other hand you can replace the backend if necessary without changing the frontend.
What advantage? They did that to gcc along time ago. But gcc has improved that you don't have to remove or replace anything to used for IDEs or text editors.Quote:
Also a nice advantage of this design: You can use the parts apart from another, for example can the Clang frontend be used by IDEs or text editors for syntax highlighting or on-the-fly recognition of syntax and logical errors.
Systemed rulz, My question is not related anything with GCC or which compiler is best. My question is all about the difference between Clang::LLVM and Apple::LLVM-if there is or both are same. please reply only if you can answer anything relevant to the question of this thread.
Afraid to answer the questions, but spreading lies instead and not even able to read or understand my post properly. That's what I thought of you, lying unethical troll.
@Anandh: There is no such thing as Apple::LLVM. Clang is the frontend for LLVM aimed at C-type languages, the development of Clang/LLVM is supported by Apple, maybe therefore the confusion.
Hi,
Some of my answers will be simplified.
Apple/LLVM and clang/LLVM are basically same thing.
Front-end contains the lexer (source code -> token stream), syntax analyzer (token stream -> AST), semantic analyzer (AST -> Intermediate Code).
Back-end contains the code generator (Intermediate Code -> Machine Code -> Object File).
Not sure whether the linker is part of the back-end or counts as a different module, but it does the (Object File(s) -> Binary) part.
When you call
you basically run your source files through all these phases.Code:clang <options> <sourcefile1, ...>
As long as the difference between clang and gcc, there's not much. If you are going to program in Objective-C, then clang is MUCH better, but if C/C++ is your game, they both will perform perfectly fine. What systemd rulez said is complete bullshit.
Better in clang: (a bit) better C++11 support, faster compile times, modular structure
Better in gcc: more front-ends (more programming languages are supported), more architectures are supported
The best thing you can do is write your code in a compiler independent way (normally this should not be a problem) and when you have production ready code, then benchmark the two binaries to see which one is better at that point.
This was my answer, hope it helped.
Unrelated:
systemd rulez, are you the kind of person who always wanted an Apple device, but could never get one, so your "revenge" is calling everything Apple makes shit? I mean, your answers were so retarded, that I laughed my ass off! FYI you can donwload the source code of clang, so you can even check on that little "surveillance capability" which doesn't exist...
@Vim_user & erendorn, Thanks for the clarification. But in the link http://www.stroustrup.com/compilers.html strourstrup says AppleC++ and ClangC++ as two different compiler. This is where my confusion started. can you explain what did he mean by AppleC++ and ClangC++?
@Vim_user, erandorn, Thanks for the clarification. In the link wwwdotstroustrupdotcom/compilers.html, stroustrup talks about different compilers for C++ and he mentions AppleC++ and ClangC++.. This is where my confustion started. Can you throw some light on this?
Thanks / Anandh
I think he got just confused there because of Apple's marketing strategy to name it Apple LLVM when it is just Clang/LLVM integrated into an IDE.