[Bug ipa/69075] ICE when setting early-inlining-insns to other than default
miyuki at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Dec 31 00:28:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69075
--- Comment #4 from Mikhail Maltsev <miyuki at gcc dot gnu.org> ---
Somewhat reduced testcase:
$ cat test2.cc
using Timer_Probe = int;
struct A {
Timer_Probe probe;
};
struct Gateway_Order_Probe : A {
using Body = A;
Gateway_Order_Probe() : Body{} {}
};
struct Backend_Response_Probe {
int sequence_number;
int message_id_value;
int source_time;
};
template <typename T0> struct B { typedef T0 type; };
void *operator new(unsigned long, void *p2) { return p2; }
template <typename... Messages> class Variant_Message {
public:
template <typename T> struct emplace_t { typedef T emplace_type; };
template <typename T, typename... Args>
Variant_Message(emplace_t<T>, Args &&...) noexcept;
typename B<Messages...>::type largest_type;
char storage_[sizeof largest_type];
};
template <typename... Messages>
template <typename T, typename... Args>
Variant_Message<Messages...>::Variant_Message(emplace_t<T>,
Args &&...) noexcept {
using msg_type = typename emplace_t<T>::emplace_type;
new (storage_) msg_type;
}
template <typename T, typename Variant> class make_t : Variant {
using emplace_t = typename Variant::template emplace_t<T>;
public:
make_t() : Variant(emplace_t()) {}
};
template <typename T, typename Variant> make_t<T, Variant> make_variant() {
return make_t<T, Variant>();
}
struct Performance_Data : Variant_Message<Backend_Response_Probe> {
using base_type = Variant_Message;
template <typename T>
Performance_Data(emplace_t<T>)
: base_type(emplace_t<T>()) {}
};
struct C {
C(int const &&);
decltype(make_variant<Gateway_Order_Probe, Performance_Data>()) probe_;
};
C::C(int const &&)
: probe_(make_variant<Gateway_Order_Probe, Performance_Data>()) {}
$ /opt/gcc-5-latest/bin/g++ -std=c++14 -flto -O3 -fdevirtualize-at-ltrans
--param early-inlining-insns=15 test2.cc
test2.cc: In member function 'C::C(int const&&)':
test2.cc:57:67: internal compiler error: Segmentation fault
: probe_(make_variant<Gateway_Order_Probe, Performance_Data>()) {}
^
0xd3b116 crash_signal
/home/jenkins/workspace/build-gcc-snapshot/src/gcc-5-20151229/gcc/toplev.c:383
0x6df210 tree_check(tree_node*, char const*, int, char const*, tree_code)
/home/jenkins/workspace/build-gcc-snapshot/src/gcc-5-20151229/gcc/tree.h:2850
0x6df210 is_really_empty_class(tree_node*)
/home/jenkins/workspace/build-gcc-snapshot/src/gcc-5-20151229/gcc/cp/class.c:8056
[snip]
More information about the Gcc-bugs
mailing list