--- ./apps/graph/src/Makefile.inc.orig 2014-10-13 06:14:22.000000000 -0600 +++ ./apps/graph/src/Makefile.inc 2015-03-05 20:00:00.000000000 -0700 @@ -1,4 +1,4 @@ -ifneq ($(filter 4.8% 4.9%,${GCCversion}),) +ifneq ($(filter 4.8% 4.9% 5%,${GCCversion}),) bipartite_signature$O : ExtraCXXFLAGS += -O1 endif --- ./lib/core/include/perl/Value.h.orig 2014-10-13 06:14:22.000000000 -0600 +++ ./lib/core/include/perl/Value.h 2015-02-26 21:00:00.000000000 -0700 @@ -646,7 +646,7 @@ protected: , options(value_not_trusted) {} - static const char* frame_lower_bound(); + static bool not_on_stack(const char *val, const char *fup); bool is_defined() const; bool is_TRUE() const; @@ -1016,9 +1016,8 @@ public: typedef typename object_traits::persistent_type Persistent; if (type_cache::magic_allowed(prescribed_pkg)) { if (fup && !object_traits::is_lazy) { - const char* const flo=frame_lower_bound(); const char* const val=reinterpret_cast(&x); - if ((val(), bool2type::is_lazy>(), identical()); } @@ -1086,9 +1085,8 @@ public: typename enable_if::value>::type put_lval(const Source& x, const char* fup, int, const Value* owner, OwnerType*) { - const char* const flo=frame_lower_bound(); const char* const val=reinterpret_cast(&x); - Anchor* anchor=store_primitive_ref(x, type_cache::get_descr(), (val::get_descr(), not_on_stack(val,fup)); if (owner) get_temp(); return anchor; } --- ./lib/core/src/perl/RefHash.xs.orig 2014-11-08 20:00:00.000000000 -0700 +++ ./lib/core/src/perl/RefHash.xs 2015-03-06 12:30:00.000000000 -0700 @@ -146,10 +146,10 @@ OP* intercept_pp_helem(pTHX) SV *keysv=TOPs; HV *hv=(HV*)TOPm1s, *class=SvSTASH(hv); MAGIC *mg; + tmp_keysv tmp_key; if (HashCPPbound(hv)) return pm_perl_cpp_helem(aTHX_ hv, mg); if (SvROK(keysv)) { - tmp_keysv tmp_key; if (!RefKeyAllowed(hv,class)) DIE(aTHX_ err_ref); if ((PL_op->op_private & (OPpLVAL_INTRO | OPpLVAL_DEFER)) == OPpLVAL_INTRO && --- ./lib/core/src/perl/Value.cc.orig 2014-10-13 06:14:22.000000000 -0600 +++ ./lib/core/src/perl/Value.cc 2015-02-26 21:00:00.000000000 -0700 @@ -258,11 +258,10 @@ void ListReturn::upgrade(int size) EXTEND(SP, size); } -const char* Value::frame_lower_bound() +bool Value::not_on_stack(const char *val, const char *fup) { char c=0; - const char* flo=&c; - return flo; + return (val<&c) == (val