Skip to content

Missing '-Wreturn-type' warning for 'main' having no return statement in C89 mode #21650

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

Closed
morinmorin opened this issue Oct 14, 2014 · 5 comments · Fixed by #134617
Closed
Labels
bugzilla Issues migrated from bugzilla c clang:diagnostics New/improved warning or error message in Clang, but not in clang-tidy or static analyzer confirmed Verified by a second party false-negative good first issue https://github.com/llvm/llvm-project/contribute

Comments

@morinmorin
Copy link

Bugzilla Link 21276
Version unspecified
OS All

Extended Description

Clang does not emit "control reaches end of non-void function [-Wreturn-type]" warning for 'main' having no return statement in C89 mode (-std=c89, gnu89).

Clang adds implicit-return-zero in C89 mode. But, since the C89 standard does not require it, wouldn't it be better to emit warning?

@llvmbot llvmbot transferred this issue from llvm/llvm-bugzilla-archive Dec 9, 2021
@cor3ntin
Copy link
Contributor

cor3ntin commented Mar 5, 2025

@Sirraide @AaronBallman

@llvmbot
Copy link
Member

llvmbot commented Mar 5, 2025

@llvm/issue-subscribers-c

Author: Masaki Moriguchi (a.k.a. Michel Morin) (morinmorin)

| | | | --- | --- | | Bugzilla Link | [21276](https://llvm.org/bz21276) | | Version | unspecified | | OS | All |

Extended Description

Clang does not emit "control reaches end of non-void function [-Wreturn-type]" warning for 'main' having no return statement in C89 mode (-std=c89, gnu89).

Clang adds implicit-return-zero in C89 mode. But, since the C89 standard does not require it, wouldn't it be better to emit warning?

@AaronBallman AaronBallman added confirmed Verified by a second party good first issue https://github.com/llvm/llvm-project/contribute labels Apr 4, 2025
@AaronBallman
Copy link
Collaborator

Agreed, this should be given a diagnostic under -pedantic in C89 mode.

@llvmbot
Copy link
Member

llvmbot commented Apr 4, 2025

Hi!

This issue may be a good introductory issue for people new to working on LLVM. If you would like to work on this issue, your first steps are:

  1. Check that no other contributor has already been assigned to this issue. If you believe that no one is actually working on it despite an assignment, ping the person. After one week without a response, the assignee may be changed.
  2. In the comments of this issue, request for it to be assigned to you, or just create a pull request after following the steps below. Mention this issue in the description of the pull request.
  3. Fix the issue locally.
  4. Run the test suite locally. Remember that the subdirectories under test/ create fine-grained testing targets, so you can e.g. use make check-clang-ast to only run Clang's AST tests.
  5. Create a Git commit.
  6. Run git clang-format HEAD~1 to format your changes.
  7. Open a pull request to the upstream repository on GitHub. Detailed instructions can be found in GitHub's documentation. Mention this issue in the description of the pull request.

If you have any further questions about this issue, don't hesitate to ask via a comment in the thread below.

@llvmbot
Copy link
Member

llvmbot commented Apr 4, 2025

@llvm/issue-subscribers-good-first-issue

Author: Masaki Moriguchi (a.k.a. Michel Morin) (morinmorin)

| | | | --- | --- | | Bugzilla Link | [21276](https://llvm.org/bz21276) | | Version | unspecified | | OS | All |

Extended Description

Clang does not emit "control reaches end of non-void function [-Wreturn-type]" warning for 'main' having no return statement in C89 mode (-std=c89, gnu89).

Clang adds implicit-return-zero in C89 mode. But, since the C89 standard does not require it, wouldn't it be better to emit warning?

@EugeneZelenko EugeneZelenko added clang:diagnostics New/improved warning or error message in Clang, but not in clang-tidy or static analyzer and removed clang:frontend Language frontend issues, e.g. anything involving "Sema" labels Apr 4, 2025
var-const pushed a commit to ldionne/llvm-project that referenced this issue Apr 17, 2025
…vm#134617)

Fixes llvm#21650 

--- 

Clang currently inserts an implicit `return 0;` in `main()` when
compiling in `C89` mode, even though the `C89` standard doesn't require
this behavior. This patch changes that behavior by emitting a warning
instead of silently inserting the implicit return under `-pedantic`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bugzilla Issues migrated from bugzilla c clang:diagnostics New/improved warning or error message in Clang, but not in clang-tidy or static analyzer confirmed Verified by a second party false-negative good first issue https://github.com/llvm/llvm-project/contribute
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants