On 12/05/2023 04:08, Po Lu via Gcc wrote:
Eli Schwartz <eschwart...@gmail.com> writes:



Because that's exactly what is going on here. Features that were valid
C89 code are being used in a GNU99 or GNU11 code file, despite that
***not*** being valid GNU99 or GNU11 code.

How GCC currently behaves defines what is valid GNU C.


What GCC /documents/ defines what is valid GNU C. (Much of that is, of course, imported by reference from the ISO C standards, along with target-specific details such as ABI's.)

Anything you write that relies on undocumented behaviour may work by luck, not design, and you have no basis for expecting future versions of gcc, or any other compiler, to give the same lucky results.

Each version of a compiler is, in fact, a different compiler - that is how you should be viewing your tools. The move between different versions of the same compiler is usually much smaller than moving between different compiler vendors, but you still look at the release notes, change notices, porting information, etc., before changing. You still make considered decisions, and appropriate testing. You still check your build systems and modify flags if needed. And you do that even if you are confident that your code is solid with fully defined behaviour and conforming to modern C standards - you might have a bug somewhere, and the new compiler version might have a bug.


I am not dictating anything to you or anyone else in this paragraph,
though? All I said was that if one writes a c89 program and tells the
compiler that, then they will not even notice this entire discussion to
begin with.

What, precisely, have I dictated?

That people who are writing GNU C code should be forced to rewrite their
code in ANSI C, in order to make use of GNU C extensions to the 1999
Standard.


You are joking, right? Surely no one can /still/ be under the misapprehension that anyone is proposing GCC stop accepting the old code? All that is changing is the default behaviour, which will mean some people might have to use an extra flag or two in their build setup.


However, it does appear that we are still stuck in confusion here,
because you think that GCC is no longer able to compile such code, when
in fact it is able to.

It won't, not by default.


That's pretty much irrelevant. People don't use gcc without flags. The only thing that will change is which flags you need to use.

If you are not in a position to change the source code, and not in a position to change the build flags, then you are not in a position to change the compiler version. (That's fine, of course - in my line of work, I almost never change compiler version for existing projects. I have old code where the makefile specifies gcc 2.95.)

David


Reply via email to