diff -up ./apps/graph/src/Makefile.inc.gcc5 ./apps/graph/src/Makefile.inc
--- ./apps/graph/src/Makefile.inc.gcc5 2015-03-04 07:51:50.000000000 -0500
+++ ./apps/graph/src/Makefile.inc 2015-08-10 14:08:20.317114094 -0400
@@ -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
diff -up ./lib/core/include/perl/Value.h.gcc5 ./lib/core/include/perl/Value.h
--- ./lib/core/include/perl/Value.h.gcc5 2015-03-04 07:51:50.000000000 -0500
+++ ./lib/core/include/perl/Value.h 2015-08-10 14:08:20.317114094 -0400
@@ -655,7 +655,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;
@@ -1044,9 +1044,8 @@ public:
typedef typename object_traits<Source>::persistent_type Persistent;
if (type_cache<Source>::magic_allowed(prescribed_pkg)) {
if (fup && !object_traits<Source>::is_lazy) {
- const char* const flo=frame_lower_bound();
const char* const val=reinterpret_cast<const char*>(&x);
- if ((val<flo)==(val<fup)) {
+ if (not_on_stack(val,fup)) {
// the wrapped function has returned a reference to an object stored elsewhere
return store_magic_ref(x, is_masquerade<Source>(), bool2type<object_traits<Source>::is_lazy>(), identical<Source,Persistent>());
}
@@ -1114,9 +1113,8 @@ public:
typename enable_if<Anchor*, list_contains<primitive_lvalues, Source>::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<const char*>(&x);
- Anchor* anchor=store_primitive_ref(x, type_cache<Source>::get_descr(), (val<flo)==(val<fup));
+ Anchor* anchor=store_primitive_ref(x, type_cache<Source>::get_descr(), not_on_stack(val,fup));
if (owner) get_temp();
return anchor;
}
diff -up ./lib/core/src/perl/RefHash.xs.gcc5 ./lib/core/src/perl/RefHash.xs
diff -up ./lib/core/src/perl/Value.cc.gcc5 ./lib/core/src/perl/Value.cc
--- ./lib/core/src/perl/Value.cc.gcc5 2015-03-04 07:51:50.000000000 -0500
+++ ./lib/core/src/perl/Value.cc 2015-08-10 14:08:20.318114087 -0400
@@ -283,11 +283,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<fup);
}
long Value::int_value() const