[LLVMdev] Recompiling llvm+clang how-to?

Nick Lewycky nicholas at mxc.ca
Fri Jul 13 21:00:20 PDT 2012


Journeyer J. Joh wrote:
> Hello Mr. Ciao and people on our list
>
> I tried this last night and now in the morning I captured the problem status.
> Could you please advise me on this problem?
>
> - I downloaded brand new clang+llvm and compiled it as instructed from
> the url below.
>>> http://clang.llvm.org/get_started.html
>
> - I added some code to tools/clang/tools/driver/driver.cpp
>
> 343 int main(int argc_, const char **argv_) {
> 344
> 345   {
> 346     int aaa = 0, bbb = 0;
> 347
> 348     for (int i = 0; i != 1 ; ) {
> 349       if (aaa<  10000) aaa += 1;
> 350       if (bbb<  10000) bbb += aaa;
> 351       if (aaa>  100) aaa -= 1;
> 352       if (bbb>  100) bbb -= aaa;
> 353     }
> 354   }

You modified the "clang" program to have an infinite loop ...

>
> - And after this I just tried to recompile using the very same
> Makefile under build directory where I compiled the brand new
> clang+llvm as show beow.
>>> time make -j3
>
> - I captured messages below when the compiler stucks in somewhere.

... it gets stuck in compiler-rt which uses the newly built clang to 
build compiler-rt.

You have invented a convoluted form of self-inflicted wound. :)

Nick

>
> [$ make -j3]
> …...............................................
> make[3]: Entering directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools'
> make[4]: Entering directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools/driver'
> llvm[4]: Compiling driver.cpp for Debug+Asserts build
> llvm[4]: Linking Debug+Asserts executable clang
> llvm[4]: ======= Finished Linking Debug+Asserts Executable clang
> llvm[4]: Creating Debug+Asserts Alias clang++
> llvm[4]: ======= Finished Creating Debug+Asserts Alias clang++
> make[4]: Leaving directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools/driver'
> make[4]: Entering directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools/libclang'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools/libclang'
> make[4]: Entering directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools/c-index-test'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools/c-index-test'
> make[4]: Entering directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools/arcmt-test'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools/arcmt-test'
> make[4]: Entering directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools/c-arcmt-test'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools/c-arcmt-test'
> make[4]: Entering directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools/diagtool'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools/diagtool'
> make[4]: Entering directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools/clang-check'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools/clang-check'
> make[3]: Leaving directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/tools'
> make[3]: Entering directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/runtime'
> make[4]: Entering directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/runtime/libcxx'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/runtime/libcxx'
> make[4]: Entering directory
> `/home/hum/Projects/clang_llvm/build/tools/clang/runtime/compiler-rt'
>
>>> The compiler was compiling runtime library?? Anyway this is the last output message.
>
>
> [$ ps aux | grep clang]
> hum       2471  0.0  0.0   4388     8 pts/2    S+   00:24   0:00
> /bin/sh -c for dir in lib/Support lib/TableGen utils lib/VMCore lib
> tools/llvm-config tools runtime docs unittests; do \?  if ([ ! -f
> $dir/Makefile ] || \?      command test $dir/Makefile -ot
> /home/hum/Projects/clang_llvm/llvm/$dir/Makefile ); then \?
> /home/hum/Projects/clang_llvm/llvm/autoconf/mkinstalldirs $dir; \?
> /bin/cp /home/hum/Projects/clang_llvm/llvm/$dir/Makefile
> $dir/Makefile; \?  fi; \?  (make -C $dir all ) || exit 1; \?done
>
> hum       2911  0.0  0.0   4388     4 pts/2    S+   00:25   0:00
> /bin/sh -c \?  SD=/home/hum/Projects/clang_llvm/llvm/tools/clang; \?
> DD=clang; \?  if [ ! -f $SD/Makefile ]; then \?    SD=clang; \?
> DD=clang; \?  fi; \?  if ([ ! -f $DD/Makefile ] || \?
> command test $DD/Makefile -ot \?                      $SD/Makefile );
> then \?  /home/hum/Projects/clang_llvm/llvm/autoconf/mkinstalldirs
> $DD; \?  /bin/cp $SD/Makefile $DD/Makefile; \?fi; \?make -C $DD all
>
> hum       2916  0.0  0.0  15900     0 pts/2    S+   00:25   0:00 make
> -C clang all
>
> hum       2918  0.0  0.0   4388   160 pts/2    S+   00:25   0:00
> /bin/sh -c for dir in utils/TableGen include lib tools runtime docs
> unittests; do \?  if ([ ! -f $dir/Makefile ] || \?      command test
> $dir/Makefile -ot
> /home/hum/Projects/clang_llvm/llvm/tools/clang/$dir/Makefile ); then
> \?    /home/hum/Projects/clang_llvm/llvm/autoconf/mkinstalldirs $dir;
> \?    /bin/cp /home/hum/Projects/clang_llvm/llvm/tools/clang/$dir/Makefile
> $dir/Makefile; \?  fi; \?  (make -C $dir all ) || exit 1; \?done
>
> hum       3237  0.0  0.0   4388   608 pts/2    S+   00:45   0:00
> /bin/sh -c \?  SD=/home/hum/Projects/clang_llvm/llvm/tools/clang/runtime/compiler-rt;
> \?  DD=compiler-rt; \?  if [ ! -f $SD/Makefile ]; then \?
> SD=compiler-rt; \?    DD=compiler-rt; \?  fi; \?  if ([ ! -f
> $DD/Makefile ] || \?            command test $DD/Makefile -ot \?
>                 $SD/Makefile ); then \?
> /home/hum/Projects/clang_llvm/llvm/autoconf/mkinstalldirs $DD; \?
> /bin/cp $SD/Makefile $DD/Makefile; \?fi; \?make -C $DD all
>
> hum       3247  0.0  0.0   4388   608 pts/2    S+   00:45   0:00
> /bin/sh -c make -C
> /home/hum/Projects/clang_llvm/llvm/projects/compiler-rt \?
> ProjSrcRoot=/home/hum/Projects/clang_llvm/llvm/projects/compiler-rt \?
>   ProjObjRoot=/home/hum/Projects/clang_llvm/build/tools/clang/runtime/compiler-rt
> \?  CC="/home/hum/Projects/clang_llvm/build/Debug+Asserts/bin/clang"
> \?  clang_linux
>
> hum       3248  0.0  0.0  15908  1356 pts/2    S+   00:45   0:00 make
> -C /home/hum/Projects/clang_llvm/llvm/projects/compiler-rt
> ProjSrcRoot=/home/hum/Projects/clang_llvm/llvm/projects/compiler-rt
> ProjObjRoot=/home/hum/Projects/clang_llvm/build/tools/clang/runtime/compiler-rt
> CC=/home/hum/Projects/clang_llvm/build/Debug+Asserts/bin/clang
> clang_linux
>
> hum       3251  0.0  0.0   4388   604 pts/2    S+   00:45   0:00
> /bin/sh -c result=""; for arch in i386; do if
> /home/hum/Projects/clang_llvm/build/Debug+Asserts/bin/clang -arch
> $arch -c -integrated-as
> /home/hum/Projects/clang_llvm/llvm/projects/compiler-rt/make/platform/clang_darwin_test_input.c
> -isysroot /home/hum/Projects/clang_llvm/llvm/projects/compiler-rt/SDKs/darwin
> -o /dev/null>  /dev/null 2>  /dev/null; then result="$result$arch ";
> else printf 1>&2 "warning: clang_darwin.mk: dropping arch '$arch' from
> lib 'eprintf'\n"; fi; done; echo $result
>
> hum       3252 99.9  0.4  79412  9560 pts/2    R+   00:45 497:09
> /home/hum/Projects/clang_llvm/build/Debug+Asserts/bin/clang -arch i386
> -c -integrated-as
> /home/hum/Projects/clang_llvm/llvm/projects/compiler-rt/make/platform/clang_darwin_test_input.c
> -isysroot /home/hum/Projects/clang_llvm/llvm/projects/compiler-rt/SDKs/darwin
> -o /dev/null
>
>>> I grepped 'clang' from ps aux when the compiler stucks in somewhere.
>
>
> [$ top]
>    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
>   3252 hum       20   0 79412 9560 9272 R  100  0.5 510:06.43 clang
>   1169 root      20   0  222m  47m 6588 S    3  2.4   0:50.93 Xorg
>   1943 hum       20   0 1033m  79m  16m R    2  4.0   0:36.01
> unity-2d-shell
>
>>> Process clang, PID 3252 spends 100% of cpu more than 7 hours
>
>
> I want to debug and learn llvm+clang source code. To do this I need to
> compile and modify the code frequently.
>
> Please help me on this.
>
> Thank you in advance.
>
> Journeyer J. Joh
>
>
> 2012/7/13 Duncan Sands<baldrick at free.fr>:
>> Hi Journeyer J. Joh,
>>
>>> I have questions about compiling Clang+llvm.
>>>
>>> I compile as the link below instructs.
>>>
>>> http://clang.llvm.org/get_started.html
>>>
>>> I do on Ubuntu 12.04.
>>>
>>> `time make -j5` prints for about 13 minutes to compile a brand new
>>> version of Clang+llvm.
>>> And after this I edit some C++ code(clang/tools/driver/driver.cpp) and
>>> compiles using the very same makefile which was used above sentence.
>>
>> this is the correct procedure.
>>
>>> But this time the make command event NOT return for about more than 13 hours.
>>
>> This is not normal, you should investigate what process is stuck.
>>
>> Ciao, Duncan.
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
>




More information about the llvm-dev mailing list