Blob Blame History Raw
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