<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 --- - Privatizing struct fields with array type causes code generation failure."
   href="https://llvm.org/bugs/show_bug.cgi?id=27463">27463</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Privatizing struct fields with array type causes code generation failure.
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>OpenMP
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Other
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </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>Clang Compiler Support
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>sfantao@us.ibm.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Repro:

###############
struct SS {
  int a[2];
  int b[2];
  int c;
  void inc(void) {
    #pragma omp parallel firstprivate(a) private(b)
    {
      c = a[0] + b[0];
    }
  }
};

int foo(int a){
  SS s;

  for (int i=0; i<2; ++i) {
    s.a[i] = a;
    s.b[i] = 2*a;
  }
  s.c = 0;
  s.inc();

  return s.c;
}
################

Trace:
clang-3.9:
/home/sfantao/local/llvm-trunk/src/tools/clang/lib/CodeGen/CGExprAgg.cpp:1430:
void clang::CodeGen::CodeGenFunction::EmitAggExpr(const clang::Expr *,
clang::CodeGen::AggValueSlot): Assertion `E &&
hasAggregateEvaluationKind(E->getType()) && "Invalid aggregate expression to
emit"' failed.
0  clang-3.9 0x00000000118d30e8 llvm::sys::PrintStackTrace(llvm::raw_ostream&)
+ 120
1  clang-3.9 0x00000000118d3668
2  clang-3.9 0x00000000118d12b4 llvm::sys::RunSignalHandlers() + 132
3  clang-3.9 0x00000000118d3a48
4            0x00003fff9ad40478 __kernel_sigtramp_rt64 + 0
5  libc.so.6 0x00003fff9a830a88 gsignal + 72
6  libc.so.6 0x00003fff9a83693c abort + 620
7  libc.so.6 0x00003fff9a8265b4
8  libc.so.6 0x00003fff9a8266a4 __assert_fail + 100
9  clang-3.9 0x0000000011c45be0
clang::CodeGen::CodeGenFunction::EmitAggExpr(clang::Expr const*,
clang::CodeGen::AggValueSlot) + 800
10 clang-3.9 0x0000000011c13ed0
clang::CodeGen::CodeGenFunction::EmitExprAsInit(clang::Expr const*,
clang::ValueDecl const*, clang::CodeGen::LValue, bool) + 1200
11 clang-3.9 0x0000000011c12608
clang::CodeGen::CodeGenFunction::EmitAutoVarInit(clang::CodeGen::CodeGenFunction::AutoVarEmission
const&) + 984
12 clang-3.9 0x0000000011c0e834
clang::CodeGen::CodeGenFunction::EmitVarDecl(clang::VarDecl const&) + 436
13 clang-3.9 0x0000000011c0e540
clang::CodeGen::CodeGenFunction::EmitDecl(clang::Decl const&) + 448
14 clang-3.9 0x0000000011ac4dcc
15 clang-3.9 0x0000000011aacce8
16 clang-3.9 0x0000000011aad72c
clang::CodeGen::CodeGenFunction::EmitOMPFirstprivateClause(clang::OMPExecutableDirective
const&, clang::CodeGen::CodeGenFunction::OMPPrivateScope&) + 1788
17 clang-3.9 0x0000000011ac9d2c
18 clang-3.9 0x0000000011ce94ec
19 clang-3.9 0x0000000011aab85c
clang::CodeGen::CodeGenFunction::GenerateOpenMPCapturedStmtFunction(clang::CapturedStmt
const&) + 4604
20 clang-3.9 0x0000000011cd2cc8
clang::CodeGen::CGOpenMPRuntime::emitParallelOrTeamsOutlinedFunction(clang::OMPExecutableDirective
const&, clang::VarDecl const*, clang::OpenMPDirectiveKind,
clang::CodeGen::RegionCodeGenTy const&) + 472
21 clang-3.9 0x0000000011ab1e54
22 clang-3.9 0x0000000011ab1cd0
clang::CodeGen::CodeGenFunction::EmitOMPParallelDirective(clang::OMPParallelDirective
const&) + 96
23 clang-3.9 0x0000000011a97c04
clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 1428
24 clang-3.9 0x0000000011aa1b8c
clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt
const&, bool, clang::CodeGen::AggValueSlot) + 204
25 clang-3.9 0x0000000011ad8880
clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl,
llvm::Function*, clang::CodeGen::CGFunctionInfo const&) + 1872
26 clang-3.9 0x0000000011af1d54
clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl,
llvm::GlobalValue*) + 564
27 clang-3.9 0x0000000011aec2fc
clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl,
llvm::GlobalValue*) + 508
28 clang-3.9 0x0000000011ae5090 clang::CodeGen::CodeGenModule::EmitDeferred() +
320
29 clang-3.9 0x0000000011ae46b0 clang::CodeGen::CodeGenModule::Release() + 64
30 clang-3.9 0x00000000121da518
31 clang-3.9 0x00000000121d8d84
32 clang-3.9 0x000000001264b098 clang::ParseAST(clang::Sema&, bool, bool) + 824
33 clang-3.9 0x0000000011e392c8 clang::ASTFrontendAction::ExecuteAction() + 232
34 clang-3.9 0x00000000121d75f8 clang::CodeGenAction::ExecuteAction() + 328
35 clang-3.9 0x0000000011e38a18 clang::FrontendAction::Execute() + 152
36 clang-3.9 0x0000000011df9378
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 1688
37 clang-3.9 0x0000000011ede710
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 4752
38 clang-3.9 0x00000000103a1c50 cc1_main(llvm::ArrayRef<char const*>, char
const*, void*) + 1664
39 clang-3.9 0x000000001039fd64 main + 13956
40 libc.so.6 0x00003fff9a814d00
41 libc.so.6 0x00003fff9a814ef8 __libc_start_main + 200</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>