<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>