Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

compilation failed due to argument unused during compilation: '-ffixed-line-length-132' (-ffixed-line-length-132 vs. -Mextend) #11

Open
pawosm-arm opened this issue Jun 8, 2017 · 1 comment
Labels

Comments

@pawosm-arm
Copy link

I know that -ffixed-line-length-132 is the gfortran's equivalent of -Mextend, unfortunately, due to gfortran popularity, -ffixed-line-length-132 can be frequently found throughout the codebase in wild. Flang ignores that option which leads to compilation errors whenever lines are too long in fixed-form code:

$ flang -c sgemm_reference.f -o sgemm_reference_mp.o  -fPIC -DPIC -ffixed-line-length-132 -fopenmp -O3
clang-4.0: warning: argument unused during compilation: '-ffixed-line-length-132' [-Wunused-command-line-argument]
F90-S-0023-Syntax error - unbalanced parentheses (sgemm_reference.f: 188)
F90-S-0310-Adjustable array can not have automatic bounds specifiers - a (sgemm_reference.f)
F90-S-0050-Assumed size array, a, is not a dummy argument (sgemm_reference.f)
F90-S-0310-Adjustable array can not have automatic bounds specifiers - b (sgemm_reference.f)
F90-S-0050-Assumed size array, b, is not a dummy argument (sgemm_reference.f)
F90-S-0310-Adjustable array can not have automatic bounds specifiers - c (sgemm_reference.f)
F90-S-0050-Assumed size array, c, is not a dummy argument (sgemm_reference.f)
  0 inform,   0 warnings,   7 severes, 0 fatal for MAIN

This is the more general issue on how much Flang should be able to act as a drop-in replacement for gfortran and therefore accept its command-line syntax.

@janusw
Copy link

janusw commented Jul 29, 2017

This is the more general issue on how much Flang should be able to act as a drop-in replacement for gfortran and therefore accept its command-line syntax.

In that context I would argue that it is much less important for flang to replicate gfortran's command-line syntax than it is to replicate gfortran's feature set.

Talking about line length: It seems that flang is still missing an option that is equivalent to gfortran's -ffree-line-length-none (see https://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html), allowing arbitrary-length lines.

Regarding identical syntax: Any Fortran project that supports more than just one compiler has to define compiler-specific flags anyway, which is really not hard to do (using proper build tools like cmake). The options of gfortran/ifort/pgi/sun differ an awful lot.

Cheers,
Janus

pawosm-arm pushed a commit to pawosm-arm/clang that referenced this issue Feb 28, 2018
Summary:
The test being added in this patch used to cause an assertion failure:

/build/./bin/clang -cc1 -internal-isystem /build/lib/clang/5.0.0/include -nostdsysteminc -verify -fsyntax-only -std=c++11 -Wshadow-all /src/tools/clang/test/SemaCXX/warn-shadow.cpp
--
Exit Code: 134

Command Output (stderr):
--
clang: /src/tools/clang/lib/AST/ASTDiagnostic.cpp:424: void clang::FormatASTNodeDiagnosticArgument(DiagnosticsEngine::ArgumentKind, intptr_t, llvm::StringRef, llvm::StringRef, ArrayRef<DiagnosticsEngine::ArgumentValue>, SmallVectorImpl<char> &, void *, ArrayRef<intptr_t>): Assertion `isa<NamedDecl>(DC) && "Expected a NamedDecl"' failed.
#0 0x0000000001c7a1b4 PrintStackTraceSignalHandler(void*) (/build/./bin/clang+0x1c7a1b4)
flang-compiler#1 0x0000000001c7a4e6 SignalHandler(int) (/build/./bin/clang+0x1c7a4e6)
flang-compiler#2 0x00007f30880078d0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0xf8d0)
flang-compiler#3 0x00007f3087054067 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x35067)
flang-compiler#4 0x00007f3087055448 abort (/lib/x86_64-linux-gnu/libc.so.6+0x36448)
flang-compiler#5 0x00007f308704d266 (/lib/x86_64-linux-gnu/libc.so.6+0x2e266)
flang-compiler#6 0x00007f308704d312 (/lib/x86_64-linux-gnu/libc.so.6+0x2e312)
flang-compiler#7 0x00000000035b7f22 clang::FormatASTNodeDiagnosticArgument(clang::DiagnosticsEngine::ArgumentKind, long, llvm::StringRef, llvm::StringRef, llvm::ArrayRef<std::pair<clang::DiagnosticsEngine::ArgumentKind, long> >, llvm::SmallVectorImpl<char>&, void*, llvm::ArrayRef<long>) (/build/
./bin/clang+0x35b7f22)
flang-compiler#8 0x0000000001ddbae4 clang::Diagnostic::FormatDiagnostic(char const*, char const*, llvm::SmallVectorImpl<char>&) const (/build/./bin/clang+0x1ddbae4)
flang-compiler#9 0x0000000001ddb323 clang::Diagnostic::FormatDiagnostic(char const*, char const*, llvm::SmallVectorImpl<char>&) const (/build/./bin/clang+0x1ddb323)
flang-compiler#10 0x00000000022878a4 clang::TextDiagnosticBuffer::HandleDiagnostic(clang::DiagnosticsEngine::Level, clang::Diagnostic const&) (/build/./bin/clang+0x22878a4)
flang-compiler#11 0x0000000001ddf387 clang::DiagnosticIDs::ProcessDiag(clang::DiagnosticsEngine&) const (/build/./bin/clang+0x1ddf387)
flang-compiler#12 0x0000000001dd9dea clang::DiagnosticsEngine::EmitCurrentDiagnostic(bool) (/build/./bin/clang+0x1dd9dea)
flang-compiler#13 0x0000000002cad00c clang::Sema::EmitCurrentDiagnostic(unsigned int) (/build/./bin/clang+0x2cad00c)
flang-compiler#14 0x0000000002d91cd2 clang::Sema::CheckShadow(clang::NamedDecl*, clang::NamedDecl*, clang::LookupResult const&) (/build/./bin/clang+0x2d91cd2)

Stack dump:
0.      Program arguments: /build/./bin/clang -cc1 -internal-isystem /build/lib/clang/5.0.0/include -nostdsysteminc -verify -fsyntax-only -std=c++11 -Wshadow-all /src/tools/clang/test/SemaCXX/warn-shadow.cpp
1.      /src/tools/clang/test/SemaCXX/warn-shadow.cpp:214:23: current parser token ';'
2.      /src/tools/clang/test/SemaCXX/warn-shadow.cpp:213:26: parsing function body 'handleLinkageSpec'
3.      /src/tools/clang/test/SemaCXX/warn-shadow.cpp:213:26: in compound statement ('{}')
/build/tools/clang/test/SemaCXX/Output/warn-shadow.cpp.script: line 1: 15595 Aborted                 (core dumped) /build/./bin/clang -cc1 -internal-isystem /build/lib/clang/5.0.0/include -nostdsysteminc -verify -fsyntax-only -std=c++11 -Wshadow-all /src/tools/clang/test/SemaCXX/warn-shadow.cpp

Reviewers: rsmith

Reviewed By: rsmith

Subscribers: krytarowski, cfe-commits

Differential Revision: https://reviews.llvm.org/D33207

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@303325 91177308-0d34-0410-b5e6-96231b3b80d8
pawosm-arm pushed a commit to pawosm-arm/clang that referenced this issue Feb 28, 2018
The code in the test caused a crash with this backtrace:

 RecordLayoutBuilder.cpp:2934: const clang::ASTRecordLayout &clang::ASTContext::getASTRecordLayout(const clang::RecordDecl *) const: Assertion `!D->isInvalidDecl() && "Cannot get layout of invalid decl!"' failed.
 [...]
 flang-compiler#7 0x00007f63963d845a __assert_fail_base (/usr/lib/libc.so.6+0x2c45a)
 flang-compiler#8 0x00007f63963d84d2 (/usr/lib/libc.so.6+0x2c4d2)
 flang-compiler#9 0x00007f63937a0631 clang::ASTContext::getASTRecordLayout(clang::RecordDecl const*) const /home/olivier/prog/llvm/tools/clang/lib/AST/RecordLayoutBuilder.cpp:2935:3
 flang-compiler#10 0x00007f63937a1ad5 getFieldOffset(clang::ASTContext const&, clang::FieldDecl const*) /home/olivier/prog/llvm/tools/clang/lib/AST/RecordLayoutBuilder.cpp:3057:37
 flang-compiler#11 0x00007f6391869f14 clang::Sema::RefersToMemberWithReducedAlignment(clang::Expr*, llvm::function_ref<void (clang::Expr*, clang::RecordDecl*, clang::FieldDecl*, clang::CharUnits)>) /home/olivier/prog/llvm/tools/clang/lib/Sema/SemaChecking.cpp:12139:23
 flang-compiler#12 0x00007f639186a2f8 clang::Sema::CheckAddressOfPackedMember(clang::Expr*) /home/olivier/prog/llvm/tools/clang/lib/Sema/SemaChecking.cpp:12190:1
 flang-compiler#13 0x00007f6391a7a81c clang::Sema::CheckAddressOfOperand(clang::ActionResult<clang::Expr*, true>&, clang::SourceLocation) /home/olivier/prog/llvm/tools/clang/lib/Sema/SemaExpr.cpp:11111:10
 flang-compiler#14 0x00007f6391a7f5d2 clang::Sema::CreateBuiltinUnaryOp(clang::SourceLocation, clang::UnaryOperatorKind, clang::Expr*) /home/olivier/prog/llvm/tools/clang/lib/Sema/SemaExpr.cpp:11932:18

Fixing by bailing out for invalid classes.

Differential Revision: https://reviews.llvm.org/D35108

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@307371 91177308-0d34-0410-b5e6-96231b3b80d8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants