[llvm-bugs] [Bug 27463] New: Privatizing struct fields with array type causes code generation failure.

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Apr 21 16:23:57 PDT 2016


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: unassignedclangbugs at nondot.org
          Reporter: sfantao at us.ibm.com
                CC: llvm-bugs at 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160421/35fe3828/attachment.html>


More information about the llvm-bugs mailing list