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

Vasiliy Korchagin korchagin at ispras.ru
Fri Feb 10 12:07:26 PST 2012


On 10.02.2012 19:45, David Blaikie wrote:
> 2012/2/9 Vasiliy Korchagin<korchagin at ispras.ru>:
>> On 08.02.2012 23:47, David Blaikie wrote:
>>
>> 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.
>>
>> Seems like my response missed mailing list, so I'm sending it again.
>> 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.
> Sorry, I just didn't get around to replying - I still think this
> should be under the -Wmain flag, probably - like it is in GCC. But I
> could be wrong - hopefully someone else pipes up with an opinion too.
>
> (it's possible it should be stronger - perhaps a separate warning that
> defaults to error - but I don't think it should be an entirely
> new/separate flag)
>
> - David
I reduced patch and now it provides GCC-like behavior. In C clang prints 
a warning and in C++ prints error. The warning is under control of 
-Wmain flag.

Vasiliy Korchagin,
The Institute for System Programming of the Russian Academy of Sciences
-------------- next part --------------
A non-text attachment was scrubbed...
Name: allow-non-int-main-option.patch
Type: text/x-patch
Size: 2540 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120211/56b662be/attachment.bin>


More information about the cfe-commits mailing list