https://llvm.org/bugs/show_bug.cgi?id=27463
Bug ID: 27463 Summary: Privatizing struct fields with array type causes code generation failure. Product: OpenMP Version: unspecified Hardware: Other OS: Linux Status: NEW Severity: normal Priority: P Component: Clang Compiler Support Assignee: unassignedclangb...@nondot.org Reporter: sfan...@us.ibm.com CC: llvm-bugs@lists.llvm.org Classification: Unclassified 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 -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs