[LLVMbugs] [Bug 23795] New: Clang/CodeGen crashes after semantic error with ObjC++.

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Tue Jun 9 05:51:04 PDT 2015


https://llvm.org/bugs/show_bug.cgi?id=23795

            Bug ID: 23795
           Summary: Clang/CodeGen crashes after semantic error with
                    ObjC++.
           Product: clang
           Version: trunk
          Hardware: Macintosh
                OS: MacOS X
            Status: NEW
          Severity: normal
          Priority: P
         Component: LLVM Codegen
          Assignee: unassignedclangbugs at nondot.org
          Reporter: 1101.debian at gmail.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

The issue relates only to ObjC++ with C++11 or higher.

Run the following command:

clang -cc1 -emit-obj -std=c++14 -x objective-c++ main.mm

where main.mm contains:

typedef struct UIEdgeInsets {
    float top, left, bottom, right;
} UIEdgeInsets;

__attribute__((objc_root_class))
@interface View
@property (nonatomic) UIEdgeInsets contentInset;
@end

@implementation View

- (void)someMethod {
    self.contentInset = {.top = 10};
}

@end

Clang reports the issue:
main.mm:19:26: error: cannot compile this scalar expression yet
continue evaluation and crashes at CodeGen phase.

Full crashlog:

main.mm:13:26: error: cannot compile this scalar expression yet
    self.contentInset = {.top = 10};
                         ^~~~~~~~~
0  clang                    0x000000010f86f61e
llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 46
1  clang                    0x000000010f870ee9
PrintStackTraceSignalHandler(void*) + 25
2  clang                    0x000000010f871348 SignalHandler(int) + 584
3  libsystem_platform.dylib 0x00007fff92705f1a _sigtramp + 26
4  libsystem_platform.dylib 0xffffffffffffffff _sigtramp + 1838129407
5  clang                    0x000000010f0e39bb
llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, bool, unsigned int,
llvm::AtomicOrdering, llvm::SynchronizationScope, llvm::Instruction*) + 91
6  clang                    0x000000010f0e3aed
llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, bool, unsigned int,
llvm::AtomicOrdering, llvm::SynchronizationScope, llvm::Instruction*) + 109
7  clang                    0x000000010f0e3853
llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, bool, unsigned int,
llvm::Instruction*) + 115
8  clang                    0x000000010f0e3639
llvm::StoreInst::StoreInst(llvm::Value*, llvm::Value*, bool,
llvm::Instruction*) + 73
9  clang                    0x00000001103659b8 llvm::IRBuilder<true,
llvm::ConstantFolder, clang::CodeGen::CGBuilderInserter<true>
>::CreateStore(llvm::Value*, llvm::Value*, bool) + 88
10 clang                    0x000000011021576f
clang::CodeGen::CodeGenFunction::EmitStoreOfScalar(llvm::Value*, llvm::Value*,
bool, unsigned int, clang::QualType, llvm::MDNode*, bool, clang::QualType,
unsigned long long) + 1343
11 clang                    0x000000011021593e
clang::CodeGen::CodeGenFunction::EmitStoreOfScalar(llvm::Value*,
clang::CodeGen::LValue, bool) + 238
12 clang                    0x00000001102076de
clang::CodeGen::CodeGenFunction::EmitStoreThroughLValue(clang::CodeGen::RValue,
clang::CodeGen::LValue, bool) + 2926
13 clang                    0x00000001101e4d94
clang::CodeGen::CodeGenFunction::EmitScalarInit(clang::Expr const*,
clang::ValueDecl const*, clang::CodeGen::LValue, bool) + 276
14 clang                    0x00000001102285ba (anonymous
namespace)::AggExprEmitter::EmitInitializationToLValue(clang::Expr*,
clang::CodeGen::LValue) + 954
15 clang                    0x00000001102254d9 (anonymous
namespace)::AggExprEmitter::VisitInitListExpr(clang::InitListExpr*) + 2473
16 clang                    0x0000000110221397
clang::StmtVisitorBase<clang::make_ptr, (anonymous namespace)::AggExprEmitter,
void>::Visit(clang::Stmt*) + 3127
17 clang                    0x000000011021f9a9 (anonymous
namespace)::AggExprEmitter::Visit(clang::Expr*) + 73
18 clang                    0x000000011021f5e4
clang::CodeGen::CodeGenFunction::EmitAggExpr(clang::Expr const*,
clang::CodeGen::AggValueSlot) + 356
19 clang                    0x0000000110205df7
clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*,
clang::CodeGen::AggValueSlot, bool) + 423
20 clang                    0x0000000110282aa4
clang::CodeGen::CodeGenFunction::OpaqueValueMappingData::bind(clang::CodeGen::CodeGenFunction&,
clang::OpaqueValueExpr const*, clang::Expr const*) + 244
21 clang                    0x000000011021bd93
emitPseudoObjectExpr(clang::CodeGen::CodeGenFunction&, clang::PseudoObjectExpr
const*, bool, clang::CodeGen::AggValueSlot) + 755
22 clang                    0x000000011021ba74
clang::CodeGen::CodeGenFunction::EmitPseudoObjectRValue(clang::PseudoObjectExpr
const*, clang::CodeGen::AggValueSlot) + 100
23 clang                    0x0000000110225f39 (anonymous
namespace)::AggExprEmitter::VisitPseudoObjectExpr(clang::PseudoObjectExpr*) +
217
24 clang                    0x0000000110221637
clang::StmtVisitorBase<clang::make_ptr, (anonymous namespace)::AggExprEmitter,
void>::Visit(clang::Stmt*) + 3799
25 clang                    0x000000011021f9a9 (anonymous
namespace)::AggExprEmitter::Visit(clang::Expr*) + 73
26 clang                    0x000000011021f5e4
clang::CodeGen::CodeGenFunction::EmitAggExpr(clang::Expr const*,
clang::CodeGen::AggValueSlot) + 356
27 clang                    0x0000000110205df7
clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*,
clang::CodeGen::AggValueSlot, bool) + 423
28 clang                    0x0000000110205c1d
clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) + 109
29 clang                    0x000000011031fd96
clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 582
30 clang                    0x000000011032b695
clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt
const&, bool, clang::CodeGen::AggValueSlot) + 133
31 clang                    0x0000000110273189
clang::CodeGen::CodeGenFunction::GenerateObjCMethod(clang::ObjCMethodDecl
const*) + 281
32 clang                    0x000000011039407a
clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) + 1546
33 clang                    0x00000001104aca5d (anonymous
namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) + 157
34 clang                    0x000000011036f940
clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) + 192
35 clang                    0x0000000110eb65fd clang::ParseAST(clang::Sema&,
bool, bool) + 941
36 clang                    0x000000010fcec1ca
clang::ASTFrontendAction::ExecuteAction() + 522
37 clang                    0x000000011036e023
clang::CodeGenAction::ExecuteAction() + 3987
38 clang                    0x000000010fceb740 clang::FrontendAction::Execute()
+ 112
39 clang                    0x000000010fc78cff
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 1023
40 clang                    0x000000010fd60160
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 3200
41 clang                    0x000000010da93b09 cc1_main(llvm::ArrayRef<char
const*>, char const*, void*) + 2473
42 clang                    0x000000010da86e93
ExecuteCC1Tool(llvm::ArrayRef<char const*>, llvm::StringRef) + 163
43 clang                    0x000000010da85d1c main + 1244
44 libdyld.dylib            0x00007fff89c675c9 start + 1
Stack dump:
0.    Program arguments: clang -cc1 -emit-obj -std=c++14 -x objective-c++
main.mm 
1.    <eof> parser at end of file
2.    main.mm:12:1: LLVM IR generation of declaration 'View::someMethod'
[1]    22997 segmentation fault  clang -cc1 -emit-obj -std=c++14 -x
objective-c++ main.mm

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20150609/51296738/attachment.html>


More information about the llvm-bugs mailing list