I finally added support for compiling eddic with LLVM CLang 3.1 !
The current development version can be completely compiled with CLang. Starting with the version 1.1.4, all versions of eddic will be support GCC and CLang.
The changes have not been as painful as I first thought.
- The main problem that I has was about a static const variable of a class that had no user-constructor. GCC allows that, but it is not standard compliant and CLang was complaining.
- Another problem that I encountered was about the used of bit flags and Template Meta Programming. I simplified that by the use of a simple type traits and it worked. I don’t really know why this does not worked at first.
- The remaining effort was to fix the several warnings that CLang had.
CLang also fixed a bug in my code with a warning on a assignment that was not supposed to be an assignment, thanks CLang.
The most interesting fact about CLang is that is it twice faster to build eddic than GCC. I think I’m gonna use it during development to fasten the compile time. Moreover, even if I only worked two days with it, it seems that the error messages are indeed better than the GCC’s ones.
I haven’t tried to compare the performances of eddic in both cases, but I will do that in the future, soon after the 1.1.4 version is released.
I tried the CLang static analyzer on eddic but it didn’t found any bugs. Moreover, it crashed on several of my files. I didn’t found why for now, but I will continue to investigate, perhaps I’m not using it correctly.
I expect to publish the next version of eddic in the next two weeks. This version has much more improvements that I thought at first and I have less time to work now that I’m working on my Master thesis.
More informations on CLang: The official site.