[cfe-commits] [LLVMdev] clang errors on void main()

Vasiliy Korchagin korchagin at ispras.ru
Thu Feb 9 04:15:04 PST 2012


08.02.2012 23:47, David Blaikie пишет:
> On Wed, Feb 8, 2012 at 11:25 AM, Chris Lattner<clattner at apple.com>  wrote:
>> On Feb 8, 2012, at 5:31 AM, Vasiliy Korchagin wrote:
>>
>>> 07.02.2012 07:27, Eli Friedman пишет:
>>>> On Mon, Feb 6, 2012 at 6:51 PM, Xin Tong<xerox.time.tech at gmail.com>    wrote:
>>>>> Is there any way to stop this ?
>>>>>
>>>>> /home/socrates/llvm/llvm-3.0.src/benchmarks/powerstone/crc/crc.c:67:1:
>>>>> error: 'main' must return 'int'
>>>>> void main()
>>>>> ^
>>>>> 1 error generated.
>>>> You mean besides fixing the source of your benchmark so it's valid C?
>>>> Not at the moment... patches welcome.
>>>>
>>>> -Eli
>>> We suggest patch for allowing main() function to have non-integer return type. This feature can be enabled with "-allow-non-int-main" option. In this case warning about incorrect main() return type will be printed instead of error.
>>>
>>> In patch also included test case for this feature.
>>>
>>> Vasiliy Korchagin,
>> Hi Vasiliy,
>>
>> Please send clang patches to cfe-dev.
> or even cfe-commits (further instructions are here:
> http://clang.llvm.org/get_involved.html)
>
> [I've dropped llvm-dev and added cfe-commits to this email]
>
> My first thought based on your description alone would be that we
> should support this, if at all, probably in the way that GCC already
> does - surfacing non-int returning main as a warning in C (under
> -Wmain) and error in C++ (as it is already) if that's practical.
>
> &  looking at the patch itself: Your change is even more permissive
> than GCC (when you use the flag you've added) allowing C++ to have
> void returning main. I don't see any need to be so accepting.
>
> (&  the change you've made in Sema::ActOnFinishFunctionBody scares me a
> bit - what does that do when you have int returning main but you turn
> this flag on? not allow implicit return 0? that seems problematic)
>
> - David
David, thanks for your reply.

I changed the patch and now "-allow-non-int-main" option allows to print 
a warning in C and error in C++ in case of non-integer main. I also 
fixed implicit returning 0.

- Vasiliy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: allow-non-int-main-option.patch
Type: text/x-diff
Size: 6026 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120209/0c0b0ecf/attachment.patch>


More information about the cfe-commits mailing list