Your message dated Sat, 18 Jun 2016 00:52:54 +0200
with message-id <[email protected]>
and subject line closing bugs reported against ancient GCC versions
has caused the Debian Bug report #491137,
regarding [g++/s390 only] optimization causes errornous behavior
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
491137: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=491137
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: g++-4.3
Version: 4.3.1-4
[I leave it to the gcc maintainers to judge about the severity, because it
actually breaks otherwise running programs, but those cases seem extremely rare]
When rebuilding diagnostics, it failed on s390 during the selftests [0]. The
failing piece of code is attached. This is not actually a tiny example, but all
attempts of reducing this further failed to reproduce the error. This is a
regression because it does not fail on g++-4.2. The compiler command lines to
reproduce are:
g++ -O -fgcse -DDEBUG__LEVEL__=2 invariance_annotation.t.cpp -ldiagnostics -o
invbuggy
./invbuggy run "/*" 2
whereat we would expect to see no failure, instead of a MISSING_EXCEPTION [TES]:
...
Please note that replacing -O by
-fomit-frame-pointer \
-fauto-inc-dec \
-fcprop-registers \
-fdce \
-fdefer-pop \
-fdelayed-branch \
-fdse \
-fguess-branch-probability \
-fif-conversion2 \
-fif-conversion \
-finline-small-functions \
-fipa-pure-const \
-fipa-reference \
-fmerge-constants \
-fsplit-wide-types \
-ftree-ccp \
-ftree-ch \
-ftree-copyrename \
-ftree-dce \
-ftree-dominator-opts \
-ftree-dse \
-ftree-fre \
-ftree-sra \
-ftree-ter \
-funit-at-a-time
(all controllable options enabled by -O) does _not_ yield the errornous
behavior, and dropping -fgcse also stops the runtime failure.
Attached please find the cleaned source file. All attempts of reproducing the
error were made on raptor.d.o. If there is anything more that I could do to
debug this issue, please contact me.
Best,
Michael
[0]
http://buildd.debian.org/fetch.cgi?&pkg=diagnostics&ver=0.2.2%2Bb1&arch=s390&stamp=1214648343&file=log
#include <diagnostics/unittest.hpp>
// component
#include <diagnostics/macros/invariance_annotation.hpp>
#define TEST_COMPONENT_NAME invariance_annotation
#define TEST_COMPONENT_NAMESPACE diagnostics
DIAGNOSTICS_NAMESPACE_BEGIN;
TEST_NAMESPACE_BEGIN;
TEST_COMPONENT_TEST_NAMESPACE_BEGIN;
using namespace unittest;
class Dummy_Class_With_Invariance
{
typedef Dummy_Class_With_Invariance Self;
public:
Dummy_Class_With_Invariance()
: m_class_invariance_called(0),
m_throw(false)
{
}
void method_with_guard(bool const t1,
bool const t2)
{
m_class_invariance_called=0;
m_throw=t1;
::diagnostics::internal::Class_Invariance_Guard_Throw<Self> g(this);
m_throw=t2;
}
void m_class_invariance() const
{
++m_class_invariance_called;
if(m_throw) throw Test_Exception("Invariance throwing");
}
int class_invariance_called() const
{
return m_class_invariance_called;
}
private:
mutable int m_class_invariance_called;
bool m_throw;
};
void guard(Test_Data & data)
{
Dummy_Class_With_Invariance d;
TEST_EXCEPTIONLESS_BLOCK_ENTER;
d.method_with_guard(false,false);
TEST_EXCEPTIONLESS_BLOCK_EXIT;
TEST_ASSERT(d.class_invariance_called()==2);
TEST_THROWING_BLOCK_ENTER;
d.method_with_guard(true,true);
TEST_THROWING_BLOCK_EXIT1(Test_Exception,::std::string("Invariance
throwing").c_str());
TEST_ASSERT(d.class_invariance_called()==1);
TEST_THROWING_BLOCK_ENTER;
d.method_with_guard(false,true);
TEST_THROWING_BLOCK_EXIT1(Test_Exception,::std::string("Invariance
throwing").c_str());
TEST_ASSERT(d.class_invariance_called()==2);
}
TEST_COMPONENT_TEST_NAMESPACE_END;
TEST_NAMESPACE_END;
DIAGNOSTICS_NAMESPACE_END;
TEST_SUITE_BEGIN;
TEST_NORMAL_CASE(&guard,LEVEL_PROD);
TEST_SUITE_END;
STREAM_TEST_SYSTEM_MAIN;
// vim:ts=4:sw=4
pgpQK0HjpE7Oz.pgp
Description: PGP signature
--- End Message ---
--- Begin Message ---
This bug has been reported against an ancient version of
gpc (4.1), gcc/g++/gfortran (4.3), or gcj/gij/gobjc (4.4), that was last
released with Debian 6.0 (squeeze). But even squeeze-lts has now reached
end-of-life and is no longer supported.
The bug is assumed to be fixed (or no longer relevant) in newer GCC
releases and therefore I'm closing this report now. If the problem is
still reproducible in the currently supported versions (gcc-5, gcc-6 or
corresponding g++/gcj), feel free to provide more information, reopen
and reassign this bug report.
Andreas
--- End Message ---