http://llvm.org/bugs/show_bug.cgi?id=6974

           Summary: -fno-rtti and 'try' / 'catch' causes clang to SIGSEGV
                    (or assertion failure)
           Product: clang
           Version: 2.7
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected], [email protected]


Removing '-fno-rtti' allows this file to build properly.

g++ compiles file below successfully (-fexceptions and -fno-rtti was used in
original code to allow exception handling within modules, but disable things,
like 'dynamic_cast', 'typeinfo' and relevant strings in generated object files)

// $ cat try_error.cc 
/*
 * clang++ -O0 -fexceptions -fno-rtti try_error.cc -emit-llvm -c
 */

class err {};

void f (void)
{
    try {}
    catch( err & /* error */ )
    {}
}

Trying to build it:
$ clang++ -O0 -fexceptions -fno-rtti try_error.cc -emit-llvm -c            
Instruction referencing instruction not embedded in a basic block!
  %_rethrow = alloca i8*                          ; <i8**> [#uses=4]
  store i8* %exc1, i8** %_rethrow
Instruction referencing instruction not embedded in a basic block!
  %exc1 = call i8* @llvm.eh.exception()           ; <i8*> [#uses=3]
  store i8* %exc1, i8** %_rethrow
Broken module found, compilation aborted!
0  clang           0x000000000116281f
1  clang           0x000000000116303d
2  libpthread.so.0 0x00007f74bc948120
3  libc.so.6       0x00007f74bbc661a5 gsignal + 53
4  libc.so.6       0x00007f74bbc675d0 abort + 384
5  clang           0x0000000001113f5b
6  clang           0x00000000010f03d6
7  clang           0x00000000010f05b1
8  clang           0x00000000010f07de
9  clang           0x000000000041b8a5
10 clang           0x00000000005f83f4
11 clang           0x000000000041ef49
12 clang           0x00000000004123d9
13 clang           0x0000000000414e5b main + 1675
14 libc.so.6       0x00007f74bbc52bbd __libc_start_main + 253
15 clang           0x000000000040ff59
Stack dump:
0.      Program arguments: /usr/bin/clang -cc1 -triple x86_64-pc-linux-gnu
-emit-llvm-bc -disable-free -main-file-name try_error.cc -mrelocation-model
static -mdisable-fp-elim -mconstructor-aliases -munwind-tables -target-cpu
x86-64 -resource-dir /usr/lib/clang/1.1 -O0 -fmessage-length 127 -fexceptions
-fno-rtti -fgnu-runtime -fdiagnostics-show-option -fcolor-diagnostics -o
try_error.o -x c++ try_error.cc 
1.      <eof> parser at end of file
2.      Per-function optimization
3.      Running pass 'Module Verifier' on function '@_Z1fv'
clang: error: compiler command failed due to signal 6 (use -v to see
invocation)

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to