Is GCC 4.7 still supported?

Hello,

Getting Started with the LLVM System — LLVM 16.0.0git documentation lists "GCC >=4.7.0" among requirements for building LLVM.
However, my attempt of building LLVM+Clang with gcc 4.7.3 has failed with a multitude of errors, such as:

lib/LTO/Caching.cpp:74:7: error: looser throw specifier for 'virtual llvm::lto::localCache(std::string, llvm::lto::AddFileFn)::<lambda(unsigned int, llvm::StringRef)>::CacheStream::~CacheStream()'
In file included from LTO/Caching.h:18:0,
                 from LTO/Caching.cpp:14:
LTO/LTO.h:271:11: error: overriding 'virtual llvm::lto::NativeObjectStream::~NativeObjectStream() noexcept (true)'

tools/clang/include/clang/Analysis/CFG.h:998:38: error: '<::' cannot begin a template-argument list [-fpermissive]
tools/clang/include/clang/Analysis/CFG.h:998:38: note: '<:' is an alternate spelling for '['. Insert whitespace between '<' and '::'
tools/clang/include/clang/Analysis/CFG.h:998:38: note: (if you use '-fpermissive' G++ will accept your code)

Either the docs or the makefiles need fixing; so, which is correct and which is wrong?
If no one else has been building LLVM with GCC 4.7 recently, does that mean that nobody cares about 4.7, and therefore it's unsupported?

There was a thread last week[1] when someone also noticed that LLVM
doesn't compile with gcc 4.7 anymore. It turned out that it didn't for
3 months already, as there are no more buildbots testing compilation
with gcc 4.7.

Therefore there was a discussion to raise the minimum required version
to 4.8 [2]

[1] http://lists.llvm.org/pipermail/llvm-dev/2016-October/105742.html
[2] http://lists.llvm.org/pipermail/llvm-dev/2016-October/105955.html

Michael

Thank you very much for the references, we've missed this discussion from last week.

Seeing that the RFC hasn’t got any new responses since Wed 12th, is now the time to declare that the community has accepted the proposal, and to update the docs?
Or is there any formal deadline for objections to be raised?

Seeing that the RFC hasn’t got any new responses since Wed 12th, is now the time to declare that the community has accepted the proposal, and to update the docs?
Or is there any formal deadline for objections to be raised?

Hi Artyom,

5 days of silence is not consensus. One example of this is that you
completely missed the discussion. :slight_smile:

We don't have an official documented process, but what normally
happens is that we have a few iterations (this is the second) of a few
days/weeks/months apart, and if the iterations are all trouble free,
we announce the switch.

It's purposely vague because different decisions need different time
outs. I expect this one to be quick, given that we haven't cared about
GCC 4.7 enough that is broken for 3 months and no one noticed. But not
that quick.

If this discussion follows the others in the same gist, Teresa will
reply again (or start a new thread), with a more serious subject, and
propose the deprecation of that version. People will +1 and if no one
objects (so far, not many people have done so), it'll be "official",
ie. documents will be updated to reflect the new decision.

From your side, you can safely stop using GCC 4.7 and rely on 4.8+, as

some of us are protecting 4.8 (due to a number of reasons) by having
buildbots and external validation from 4.8.2 to 4.8.5.

cheers,
--renato

Thanks a lot for the explanation, it all makes sense now.

(For the record, I didn't mean to rush the switch, I just wanted to understand what does it take for the switch to happen.)

Yet the present state, where the docs have been misleading for three months, is very far from ideal.
If 4.7 is going to spend another month or so in a limbo, I suggest updating the docs to say exactly that.

> Seeing that the RFC hasn’t got any new responses since Wed 12th, is now
the time to declare that the community has accepted the proposal, and to
update the docs?
> Or is there any formal deadline for objections to be raised?

Hi Artyom,

5 days of silence is not consensus. One example of this is that you
completely missed the discussion. :slight_smile:

We don't have an official documented process, but what normally
happens is that we have a few iterations (this is the second) of a few
days/weeks/months apart, and if the iterations are all trouble free,
we announce the switch.

It's purposely vague because different decisions need different time
outs. I expect this one to be quick, given that we haven't cared about
GCC 4.7 enough that is broken for 3 months and no one noticed. But not
that quick.

If this discussion follows the others in the same gist, Teresa will
reply again (or start a new thread), with a more serious subject, and
propose the deprecation of that version. People will +1 and if no one
objects (so far, not many people have done so), it'll be "official",
ie. documents will be updated to reflect the new decision.

Yep, was just about to ping the proposal when I saw this thread. Think
there was only one objection, that I wanted to follow up on.

Teresa

That's actually a good point. Let's see how the discussion goes from
now, it may not be worth updating the docs twice in the same week. :slight_smile:

cheers,
--renato