clang-omp / clang

clang with OpenMP 3.1 and some elements of OpenMP 4.0 support
clang-omp.github.com
Other
91 stars 15 forks source link

Abort compiling code with dependencies #28

Closed jmperez-bsc closed 10 years ago

jmperez-bsc commented 10 years ago

The following code triggers an assertion failure:

void f(void) {
    double data[1][1];

    long one = 1L;
    typedef double (*d_t)[one];
    d_t r = data;

    #pragma omp task depend(out: r[0][0])
    r[0][0] = 0.0;
}

I believe the abort happens when the current token is the first '[' in the depend clause. The message is the following:

clang: .../include/clang/AST/Type.h:547: const clang::ExtQualsTypeCommonBase *clang::QualType::getCommonPtr() const: Assertion `!isNull() && "Cannot retrieve a NULL type pointer"' failed.
0  clang           0x00000000045d84fe llvm::sys::PrintStackTrace(_IO_FILE*) + 46
1  clang           0x00000000045d87bb
2  clang           0x00000000045d8a2e
3  libpthread.so.0 0x00007ffff79b85d0
4  libc.so.6       0x00007ffff68b9945 gsignal + 53
5  libc.so.6       0x00007ffff68baf21 abort + 385
6  libc.so.6       0x00007ffff68b2810 __assert_fail + 240
7  clang           0x000000000174d775 clang::QualType::getCommonPtr() const + 69
8  clang           0x000000000174d395 clang::QualType::getTypePtr() const + 21
9  clang           0x0000000001754155 clang::QualType::operator->() const + 21
10 clang           0x0000000001febddd clang::Sema::tryCaptureVariable(clang::VarDecl*, clang::SourceLocation, clang::Sema::TryCaptureKind, clang::SourceLocation, bool, clang::QualType&, clang::QualType&, unsigned int const*) + 1997
11 clang           0x0000000001fc2c45 clang::Sema::getCapturedDeclRefType(clang::VarDecl*, clang::SourceLocation) + 165
12 clang           0x0000000001fc2536 clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::NamedDecl*, clang::TemplateArgumentListInfo const*) + 1638
13 clang           0x0000000001fc0e98 clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::LookupResult&, bool) + 168
14 clang           0x0000000001e9332d clang::Sema::ClassifyName(clang::Scope*, clang::CXXScopeSpec&, clang::IdentifierInfo*&, clang::SourceLocation, clang::Token const&, bool, clang::CorrectionCandidateCallback*) + 5389
15 clang           0x0000000001d2bf78 clang::Parser::TryAnnotateName(bool, clang::CorrectionCandidateCallback*) + 1000
16 clang           0x0000000001da736e clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, bool, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) + 1070
17 clang           0x0000000001da6e25 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, bool, clang::SourceLocation*) + 133
18 clang           0x0000000001da6d29 clang::Parser::ParseStatement(clang::SourceLocation*) + 89
19 clang           0x0000000001d9d15e clang::Parser::ParseOpenMPDeclarativeOrExecutableDirective(bool) + 3342
20 clang           0x0000000001da7b25 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, bool, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&) + 3045
21 clang           0x0000000001da6e25 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, bool, clang::SourceLocation*) + 133
22 clang           0x0000000001dadd8a clang::Parser::ParseCompoundStatementBody(bool) + 1418
23 clang           0x0000000001db0e4f clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) + 319
24 clang           0x0000000001d2b0dc clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) + 3708
25 clang           0x0000000001d41383 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, unsigned int, bool, clang::SourceLocation*, clang::Parser::ForRangeInit*) + 467
26 clang           0x0000000001d2a24f clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec&, clang::AccessSpecifier) + 1215
27 clang           0x0000000001d299d3 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*, clang::AccessSpecifier) + 147
28 clang           0x0000000001d2916e clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) + 3502
29 clang           0x0000000001d28358 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) + 616
30 clang           0x0000000001d241d6 clang::ParseAST(clang::Sema&, bool, bool) + 326
31 clang           0x00000000017982c9 clang::ASTFrontendAction::ExecuteAction() + 345
32 clang           0x0000000001a6cfee clang::CodeGenAction::ExecuteAction() + 1246
33 clang           0x0000000001797def clang::FrontendAction::Execute() + 191
34 clang           0x0000000001763c10 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 800
35 clang           0x0000000001728dc8 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1048
36 clang           0x000000000171804a cc1_main(char const**, char const**, char const*, void*) + 698
37 clang           0x0000000001723024 main + 772
38 libc.so.6       0x00007ffff68a5bc6 __libc_start_main + 230
39 clang           0x0000000001717509
Stack dump:
0.  Program arguments: .../bin/clang -cc1 -fopenmp -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -main-file-name bug5.c -mrelocation-model static -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -target-linker-version 2.23.2 -coverage-file .../bug5.o -resource-dir .../bin/../lib/clang/3.4 -I...  -c-isystem ... -cxx-isystem ... -internal-isystem ... -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir ... -ferror-limit 19 -fmessage-length 185 -mstackrealign -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -vectorize-slp -o bug5.o -x c bug5.c
1.  bug5.c:9:2: current parser token 'r'
2.  bug5.c:1:14: parsing function body 'f'
3.  bug5.c:1:14: in compound statement ('{}')
clang: error: unable to execute command: Aborted
clang: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 3.4 (https://github.com/clang-omp/clang 467c95dbd1ef080ff4672d10f164367a52b90339) (https://github.com/clang-omp/llvm 92414b1167a33c0ab9187c72b098a54ecbffc15c)
Target: x86_64-unknown-linux-gnu
Thread model: posix

BTW, I could not find neither an openmp branch nor an openmp component in the main llvm bugzilla. So I hope this is the right place to submit the bug report.

alexey-bataev commented 10 years ago

Hi, Yes, this is the right place for bugs. Thanks for the report. There is a lot of troubles with dependencies. I'll try to simplify processing and codegen for dependencies to make them reliable and faster.

Best regards,

Alexey Bataev

Software Engineer Intel Compiler Team Intel Corp.

27 Март 2014 г. 17:31:47, jmperez-bsc писал:

The following code triggers an assertion failure:

void f(void) { double data[1][1];

 long  one  =  1L;
 typedef  double  (*d_t)[one];
 d_t  r  =  data;

 #pragma omp task depend(out: r[0][0])
 r[0][0]  =  0.0;

}

I believe the abort happens when the current token is the first '[' in the depend clause. The message is the following:

|clang: .../include/clang/AST/Type.h:547: const clang::ExtQualsTypeCommonBase _clang::QualType::getCommonPtr() const: Assertion `!isNull() && "Cannot retrieve a NULL type pointer"' failed. 0 clang 0x00000000045d84fe llvm::sys::PrintStackTrace(_IOFILE) + 46 1 clang 0x00000000045d87bb 2 clang 0x00000000045d8a2e 3 libpthread.so.0 0x00007ffff79b85d0 4 libc.so.6 0x00007ffff68b9945 gsignal + 53 5 libc.so.6 0x00007ffff68baf21 abort + 385 6 libc.so.6 0x00007ffff68b2810 assertfail + 240 7 clang 0x000000000174d775 clang::QualType::getCommonPtr() const + 69 8 clang 0x000000000174d395 clang::QualType::getTypePtr() const + 21 9 clang 0x0000000001754155 clang::QualType::operator->() const + 21 10 clang 0x0000000001febddd clang::Sema::tryCaptureVariable(clang::VarDecl, clang::SourceLocation, clang::Sema::TryCaptureKind, clang::SourceLocation, bool, clang::QualType&, clang::QualType&, unsigned int const) + 1997 11 clang 0x0000000001fc2c45 clang::Sema::getCapturedDeclRefType(clang::VarDecl, clang::SourceLocation) + 165 12 clang 0x0000000001fc2536 clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::DeclarationNameInfo const&, clang::NamedDecl, clang::NamedDecl, clang::TemplateArgumentListInfo const) + 1638 13 clang 0x0000000001fc0e98 clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::LookupResult&, bool) + 168 14 clang 0x0000000001e9332d clang::Sema::ClassifyName(clang::Scope, clang::CXXScopeSpec&, clang::IdentifierInfo&, clang::SourceLocation, clang::Token const&, bool, clang::CorrectionCandidateCallback) + 5389 15 clang 0x0000000001d2bf78 clang::Parser::TryAnnotateName(bool, clang::CorrectionCandidateCallback) + 1000 16 clang 0x0000000001da736e clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, bool, clang::SourceLocation, clang::Parser::ParsedAttributesWithRange&) + 1070 17 clang 0x0000000001da6e25 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt, 32u>&, bool, clang::SourceLocation) + 133 18 clang 0x0000000001da6d29 clang::Parser::ParseStatement(clang::SourceLocation) + 89 19 clang 0x0000000001d9d15e clang::Parser::ParseOpenMPDeclarativeOrExecutableDirective(bool) + 3342 20 clang 0x0000000001da7b25 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, bool, clang::SourceLocation, clang::Parser::ParsedAttributesWithRange&) + 3045 21 clang 0x0000000001da6e25 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt, 32u>&, bool, clang::SourceLocation) + 133 22 clang 0x0000000001dadd8a clang::Parser::ParseCompoundStatementBody(bool) + 1418 23 clang 0x0000000001db0e4f clang::Parser::ParseFunctionStatementBody(clang::Decl, clang::Parser::ParseScope&) + 319 24 clang 0x0000000001d2b0dc clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList) + 3708 25 clang 0x0000000001d41383 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, unsigned int, bool, clang::SourceLocation, clang::Parser::ForRangeInit) + 467 26 clang 0x0000000001d2a24f clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec&, clang::AccessSpecifier) + 1215 27 clang 0x0000000001d299d3 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec, clang::AccessSpecifier) + 147 28 clang 0x0000000001d2916e clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec) + 3502 29 clang 0x0000000001d28358 clang::Parser::ParseTopLevelDecl(clang::OpaquePtrclang::DeclGroupRef&) + 616 30 clang 0x0000000001d241d6 clang::ParseAST(clang::Sema&, bool, bool) + 326 31 clang 0x00000000017982c9 clang::ASTFrontendAction::ExecuteAction() + 345 32 clang 0x0000000001a6cfee clang::CodeGenAction::ExecuteAction() + 1246 33 clang 0x0000000001797def clang::FrontendAction::Execute() + 191 34 clang 0x0000000001763c10 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 800 35 clang 0x0000000001728dc8 clang::ExecuteCompilerInvocation(clang::CompilerInstance_) + 1048 36 clang 0x000000000171804a cc1main(char const, char const, char const, void_) + 698 37 clang 0x0000000001723024 main + 772 38 libc.so.6 0x00007ffff68a5bc6 libc_start_main + 230 39 clang 0x0000000001717509 Stack dump:

  1. Program arguments: .../bin/clang -cc1 -fopenmp -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -main-file-name bug5.c -mrelocation-model static -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -target-linker-version 2.23.2 -coverage-file .../bug5.o -resource-dir .../bin/../lib/clang/3.4 -I... -c-isystem ... -cxx-isystem ... -internal-isystem ... -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir ... -ferror-limit 19 -fmessage-length 185 -mstackrealign -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -vectorize-slp -o bug5.o -x c bug5.c
  2. bug5.c:9:2: current parser token 'r'
  3. bug5.c:1:14: parsing function body 'f'
  4. bug5.c:1:14: in compound statement ('{}') clang: error: unable to execute command: Aborted clang: error: clang frontend command failed due to signal (use -v to see invocation) clang version 3.4 (https://github.com/clang-omp/clang 467c95dbd1ef080ff4672d10f164367a52b90339) (https://github.com/clang-omp/llvm 92414b1167a33c0ab9187c72b098a54ecbffc15c) Target: x86_64-unknown-linux-gnu Thread model: posix |

BTW, I could not find neither an openmp branch nor an openmp component in the main llvm bugzilla. So I hope this is the right place to submit the bug report.

— Reply to this email directly or view it on GitHub https://github.com/clang-omp/clang/issues/28.

alexey-bataev commented 10 years ago

Committed 47c90595adcc31d595aabd4db09894b23cbaafd2 .

Best regards,

Alexey Bataev

Software Engineer Intel Compiler Team Intel Corp.

27.03.2014 17:31, jmperez-bsc пишет:

The following code triggers an assertion failure:

void f(void) { double data[1][1];

 long  one  =  1L;
 typedef  double  (*d_t)[one];
 d_t  r  =  data;

 #pragma omp task depend(out: r[0][0])
 r[0][0]  =  0.0;

}

I believe the abort happens when the current token is the first '[' in the depend clause. The message is the following:

|clang: .../include/clang/AST/Type.h:547: const clang::ExtQualsTypeCommonBase _clang::QualType::getCommonPtr() const: Assertion `!isNull() && "Cannot retrieve a NULL type pointer"' failed. 0 clang 0x00000000045d84fe llvm::sys::PrintStackTrace(_IOFILE) + 46 1 clang 0x00000000045d87bb 2 clang 0x00000000045d8a2e 3 libpthread.so.0 0x00007ffff79b85d0 4 libc.so.6 0x00007ffff68b9945 gsignal + 53 5 libc.so.6 0x00007ffff68baf21 abort + 385 6 libc.so.6 0x00007ffff68b2810 assertfail + 240 7 clang 0x000000000174d775 clang::QualType::getCommonPtr() const + 69 8 clang 0x000000000174d395 clang::QualType::getTypePtr() const + 21 9 clang 0x0000000001754155 clang::QualType::operator->() const + 21 10 clang 0x0000000001febddd clang::Sema::tryCaptureVariable(clang::VarDecl, clang::SourceLocation, clang::Sema::TryCaptureKind, clang::SourceLocation, bool, clang::QualType&, clang::QualType&, unsigned int const) + 1997 11 clang 0x0000000001fc2c45 clang::Sema::getCapturedDeclRefType(clang::VarDecl, clang::SourceLocation) + 165 12 clang 0x0000000001fc2536 clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::DeclarationNameInfo const&, clang::NamedDecl, clang::NamedDecl, clang::TemplateArgumentListInfo const) + 1638 13 clang 0x0000000001fc0e98 clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::LookupResult&, bool) + 168 14 clang 0x0000000001e9332d clang::Sema::ClassifyName(clang::Scope, clang::CXXScopeSpec&, clang::IdentifierInfo&, clang::SourceLocation, clang::Token const&, bool, clang::CorrectionCandidateCallback) + 5389 15 clang 0x0000000001d2bf78 clang::Parser::TryAnnotateName(bool, clang::CorrectionCandidateCallback) + 1000 16 clang 0x0000000001da736e clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, bool, clang::SourceLocation, clang::Parser::ParsedAttributesWithRange&) + 1070 17 clang 0x0000000001da6e25 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt, 32u>&, bool, clang::SourceLocation) + 133 18 clang 0x0000000001da6d29 clang::Parser::ParseStatement(clang::SourceLocation) + 89 19 clang 0x0000000001d9d15e clang::Parser::ParseOpenMPDeclarativeOrExecutableDirective(bool) + 3342 20 clang 0x0000000001da7b25 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, bool, clang::SourceLocation, clang::Parser::ParsedAttributesWithRange&) + 3045 21 clang 0x0000000001da6e25 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt, 32u>&, bool, clang::SourceLocation) + 133 22 clang 0x0000000001dadd8a clang::Parser::ParseCompoundStatementBody(bool) + 1418 23 clang 0x0000000001db0e4f clang::Parser::ParseFunctionStatementBody(clang::Decl, clang::Parser::ParseScope&) + 319 24 clang 0x0000000001d2b0dc clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList) + 3708 25 clang 0x0000000001d41383 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, unsigned int, bool, clang::SourceLocation, clang::Parser::ForRangeInit) + 467 26 clang 0x0000000001d2a24f clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec&, clang::AccessSpecifier) + 1215 27 clang 0x0000000001d299d3 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec, clang::AccessSpecifier) + 147 28 clang 0x0000000001d2916e clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec) + 3502 29 clang 0x0000000001d28358 clang::Parser::ParseTopLevelDecl(clang::OpaquePtrclang::DeclGroupRef&) + 616 30 clang 0x0000000001d241d6 clang::ParseAST(clang::Sema&, bool, bool) + 326 31 clang 0x00000000017982c9 clang::ASTFrontendAction::ExecuteAction() + 345 32 clang 0x0000000001a6cfee clang::CodeGenAction::ExecuteAction() + 1246 33 clang 0x0000000001797def clang::FrontendAction::Execute() + 191 34 clang 0x0000000001763c10 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 800 35 clang 0x0000000001728dc8 clang::ExecuteCompilerInvocation(clang::CompilerInstance_) + 1048 36 clang 0x000000000171804a cc1main(char const, char const, char const, void_) + 698 37 clang 0x0000000001723024 main + 772 38 libc.so.6 0x00007ffff68a5bc6 libc_start_main + 230 39 clang 0x0000000001717509 Stack dump:

  1. Program arguments: .../bin/clang -cc1 -fopenmp -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -main-file-name bug5.c -mrelocation-model static -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -target-linker-version 2.23.2 -coverage-file .../bug5.o -resource-dir .../bin/../lib/clang/3.4 -I... -c-isystem ... -cxx-isystem ... -internal-isystem ... -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir ... -ferror-limit 19 -fmessage-length 185 -mstackrealign -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -vectorize-slp -o bug5.o -x c bug5.c
  2. bug5.c:9:2: current parser token 'r'
  3. bug5.c:1:14: parsing function body 'f'
  4. bug5.c:1:14: in compound statement ('{}') clang: error: unable to execute command: Aborted clang: error: clang frontend command failed due to signal (use -v to see invocation) clang version 3.4 (https://github.com/clang-omp/clang 467c95dbd1ef080ff4672d10f164367a52b90339) (https://github.com/clang-omp/llvm 92414b1167a33c0ab9187c72b098a54ecbffc15c) Target: x86_64-unknown-linux-gnu Thread model: posix |

BTW, I could not find neither an openmp branch nor an openmp component in the main llvm bugzilla. So I hope this is the right place to submit the bug report.

— Reply to this email directly or view it on GitHub https://github.com/clang-omp/clang/issues/28.