Cling compilation successful, but not make install

Hi, I got Cling to compile using the instructions that you made available (By the way, why not using git submodules, rather than having users clone subdirectories? It would allow you to refer to specific revisions of the dependencies in the version control. )

Everything works well, I can run cling successfully from the build directory. However, running sudo make install fails at the stage:

Here is what I get

clang: /home/ubuntu/cling/cling_src/tools/clang/lib/CodeGen/CGDebugInfo.cpp:3314
: void clang::CodeGen::CGDebugInfo::finalize(): Assertion `Ty.isForwardDecl()' f
0  clang           0x0000000003fa02ee llvm::sys::PrintStackTrace(_IO_FILE*) + 46
1  clang           0x0000000003fa05cb
2  clang           0x0000000003fa1aea
3 0x00002b454a1a5340
4       0x00002b454b036bb9 gsignal + 57
5       0x00002b454b039fc8 abort + 328
6       0x00002b454b02fa76
7       0x00002b454b02fb22
8  clang           0x0000000000d6d8ef clang::CodeGen::CGDebugInfo::finalize() + 
9  clang           0x0000000000de8cfa clang::CodeGen::CodeGenModule::Release() +
10 clang           0x0000000000d4ac60
11 clang           0x0000000000d47b4f
12 clang           0x0000000001050213 clang::ParseAST(clang::Sema&, bool, bool) 
+ 803
13 clang           0x00000000009fcb19 clang::ASTFrontendAction::ExecuteAction() 
+ 345
14 clang           0x0000000000d472c8 clang::CodeGenAction::ExecuteAction() + 14
15 clang           0x00000000009fc358 clang::FrontendAction::Execute() + 120
16 clang           0x00000000009badf1 clang::CompilerInstance::ExecuteAction(cla
ng::FrontendAction&) + 801
17 clang           0x0000000000970ed9 clang::ExecuteCompilerInvocation(clang::Co
mpilerInstance*) + 1049
18 clang           0x000000000095982f cc1_main(char const**, char const**, char 
const*, void*) + 703
19 clang           0x0000000000969666 main + 790
20       0x00002b454b021ec5 __libc_start_main + 245
21 clang           0x00000000009594a9
Stack dump:
Stack dump:
0.      Program arguments: /usr/local/bin/clang -cc1 -triple x86_64-unknown-linu
x-gnu -emit-obj -mrelax-all -disable-free -main-file-name CIFactory.cpp -mreloca
tion-model pic -pic-level 2 -mdisable-fp-elim -relaxed-aliasing -fmath-errno -ma
sm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x8
6-64 -target-linker-version 2.24 -g -dwarf-column-info -ffunction-sections -fdat
a-sections -coverage-file /home/ubuntu/cling/cling_build/tools/cling/lib/Interpr
eter/Debug+Asserts/CIFactory.o -resource-dir /usr/local/bin/../lib/clang/3.6.0 -
dependency-file /home/ubuntu/cling/cling_build/tools/cling/lib/Interpreter/Debug
+Asserts/CIFactory.d.tmp -MP -MT /home/ubuntu/cling/cling_build/tools/cling/lib/
Interpreter/Debug+Asserts/CIFactory.o -MT /home/ubuntu/cling/cling_build/tools/c
ling/lib/Interpreter/Debug+Asserts/CIFactory.d -D _DEBUG -D _GNU_SOURCE -D __STD
N="0.2~dev " -D CLING_INCLUDE_PATHS="/usr/local/include:/home/ubuntu/cling/cling
ubuntu/cling/cling_src/include" -I /home/ubuntu/cling/cling_build/include -I /ho
me/ubuntu/cling/cling_build/tools/cling/lib/Interpreter -I /home/ubuntu/cling/cl
ing_src/include -I /home/ubuntu/cling/cling_src/tools/cling/lib/Interpreter -I /
home/ubuntu/cling/cling_src/tools/cling/lib/Interpreter/../../include -I /home/u
buntu/cling/cling_build/tools/cling/lib/Interpreter/../../include -I /home/ubunt
u/cling/cling_build/tools/cling/lib/Interpreter/Debug+Asserts -I /home/ubuntu/cl
ing/cling_src/tools/cling/lib/Interpreter/../../include -I /home/ubuntu/cling/cl
ing_src/tools/cling/lib/Interpreter/../../../clang/include -I /home/ubuntu/cling
/cling_src/tools/cling/lib/Interpreter/../../../clang/lib -I /home/ubuntu/cling/
cling_build/tools/cling/lib/Interpreter/../../include -I /home/ubuntu/cling/clin
g_build/tools/cling/lib/Interpreter/../../../clang/include -I /usr/local/include
 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8
 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8
/x86_64-linux-gnu -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../.
./include/c++/4.8/backward -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/4.8/.
./../../../include/x86_64-linux-gnu/c++/4.8 -internal-isystem /usr/local/include
 -internal-isystem /usr/local/bin/../lib/clang/3.6.0/include -internal-externc-i
system /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -interna
l-externc-isystem /usr/include -Woverloaded-virtual -Wcast-qual -Wno-long-long -
Wall -W -Wno-unused-parameter -Wwrite-strings -Wcovered-switch-default -Wno-unin
itialized -Wno-missing-field-initializers -pedantic -std=c++11 -fdeprecated-macr
o -fdebug-compilation-dir /home/ubuntu/cling/cling_build/tools/cling/lib/Interpr
eter -ferror-limit 19 -fmessage-length 80 -fvisibility-inlines-hidden -mstackrea
lign -fno-rtti -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics 
-o /home/ubuntu/cling/cling_build/tools/cling/lib/Interpreter/Debug+Asserts/CIFa
ctory.o -x c++ /home/ubuntu/cling/cling_src/tools/cling/lib/Interpreter/CIFactor
1.      <eof> parser at end of file
clang: error: unable to execute command: Aborted (core dumped)
clang: error: clang frontend command failed due to signal (use -v to see invocat
clang version 3.6.0 ( bcefb6f80ea2fd7f437cba4a4
6fe9952666e768c) ( 88c56cd6d6aec0c44e9ca5aa96b35
Target: x86_64-unknown-linux-gnu
Thread model: posix
clang: note: diagnostic msg: PLEASE submit a bug report to
 and include the crash backtrace, preprocessed source, and associated run script
clang: note: diagnostic msg:

Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/CIFactory-60e605.cpp
clang: note: diagnostic msg: /tmp/
clang: note: diagnostic msg: 


Any clue?

It seems that violently removing some assertions in the code of clang does the job. CGDebugInfo.cpp (line 3314) and Value.cpp (lines 342 to 346).

It seems this is an issue with the version of clang you have. Did you try with gcc?

Well not recently. I am currently working with this build which is fine for now. ( I need to create a large vm to have enough ram for the compilation)
Btw, it would help keeping track of the revision of clang that should be checked out with cling if the required revision number to use was specified via the mechanism of git submodules rather than manually and separately cloning it in subdirectories of llvm.


Are you suggesting submodules for the build script repo here … r/ or for cling itself? Cling is intentionally beneath llvm/tools, so I don’t see how to do it.

Cheers, Axel

One way to do this would be to create two submodules for cling and clang in your branch cling-patches of your fork of llvm. You could also create an empty git base repo with three submodules.

From the viewpoint of the base repository, a submodule is only a tracked file holding a revision number for the target repository, and no other information like the branch or anything else. It is the responsibility of the parent repository to point to revisions for the submodules that are consistent with each other.