<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW " title="NEW --- - Clang/CodeGen crashes after semantic error with ObjC++." href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_bugs_show-5Fbug.cgi-3Fid-3D23795&d=AwMBaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=pF93YEPyB-J_PERP4DUZOJDzFVX5ZQ57vQk33wu0vio&m=Emu9pVc7lHli7pc_2a29wOg6MMlfaZ0RYAJgCfUXQkg&s=70hg8eFoYabif2hAtifWfjFmQZlXOTABKIsj_vNiYyA&e=">23795</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Clang/CodeGen crashes after semantic error with ObjC++.
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Macintosh
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>MacOS X
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>LLVM Codegen
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>1101.debian@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>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>
<span class="quote">>::CreateStore(llvm::Value*, llvm::Value*, bool) + 88</span >
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</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>