diff --git a/share/qtcreator/dumper/gbridge.py b/share/qtcreator/dumper/gbridge.py
index 7b88dda39221d2c72042c42298ac4de529c110a6..e21fe0f88f399924dd023103a6447e337d3ab4cb 100644
--- a/share/qtcreator/dumper/gbridge.py
+++ b/share/qtcreator/dumper/gbridge.py
@@ -1025,12 +1025,8 @@ def checkPointer(p, align = 1):
     if not isNull(p):
         p.dereference()
 
-def isAccessible(p):
-    try:
-        long(p)
-        return True
-    except:
-        return False
+def pointerValue(p):
+    return long(p)
 
 def isNull(p):
     # The following can cause evaluation to abort with "UnicodeEncodeError"
diff --git a/share/qtcreator/dumper/lbridge.py b/share/qtcreator/dumper/lbridge.py
index 14fd1bbf85eb8539c5b195e3080b96bc401b29bf..6cc64faf094b460060675a1d940de678ed7c957c 100644
--- a/share/qtcreator/dumper/lbridge.py
+++ b/share/qtcreator/dumper/lbridge.py
@@ -249,6 +249,9 @@ def isNull(p):
 
 Value = lldb.SBValue
 
+def pointerValue(value):
+    return value.GetValueAsUnsigned()
+
 def createPointerValue(context, address, pointeeType):
     addr = int(address) & 0xFFFFFFFFFFFFFFFF
     return context.CreateValueFromAddress(None, addr, pointeeType).AddressOf()
diff --git a/share/qtcreator/dumper/qttypes.py b/share/qtcreator/dumper/qttypes.py
index 7a4173c3ff92c879e4ee59a47a2893babb212025..44cbc4f6678a03c7ca6585186368c46c75f27bcb 100644
--- a/share/qtcreator/dumper/qttypes.py
+++ b/share/qtcreator/dumper/qttypes.py
@@ -651,7 +651,7 @@ def qdump__QHostAddress(d, value):
     if int(data["ipString"]["d"]["size"]):
         d.putStringValue(data["ipString"])
     else:
-        a = long(data["a"])
+        a = int(data["a"])
         a, n4 = divmod(a, 256)
         a, n3 = divmod(a, 256)
         a, n2 = divmod(a, 256)
@@ -994,9 +994,6 @@ def qdump__QObject(d, value):
     d_ptr = dd.cast(privateType.pointer()).dereference()
     #warn("D_PTR: %s " % d_ptr)
     mo = d_ptr["metaObject"]
-    if not isAccessible(mo):
-        d.putInaccessible()
-        return
     if isNull(mo):
         mo = staticMetaObject
     #warn("MO: %s " % mo)
@@ -1623,7 +1620,7 @@ def qedit__QString(expr, value):
     cmd = "call (%s).resize(%d)" % (expr, len(value))
     gdb.execute(cmd)
     d = gdb.parse_and_eval(expr)["d"]["data"]
-    cmd = "set {short[%d]}%s={" % (len(value), long(d))
+    cmd = "set {short[%d]}%s={" % (len(value), pointerValue(d))
     for i in range(len(value)):
         if i != 0:
             cmd += ','
@@ -1931,7 +1928,7 @@ def qedit__QVector(expr, value):
     gdb.execute(cmd)
     innerType = d.templateArgument(ob.type, 0)
     ptr = ob["p"]["array"].cast(d.voidPtrType())
-    cmd = "set {%s[%d]}%s={%s}" % (innerType, len(values), long(ptr), value)
+    cmd = "set {%s[%d]}%s={%s}" % (innerType, len(values), pointerValue(ptr), value)
     gdb.execute(cmd)
 
 
@@ -2027,7 +2024,7 @@ def qdump____c_style_array__(d, value):
         # Explicitly requested Local 8-bit formatting.
         d.putValue(blob, Hex2EncodedLocal8Bit)
     else:
-        d.putValue("@0x%x" % long(value.cast(targetType.pointer())))
+        d.putValue("@0x%x" % pointerValue(value.cast(targetType.pointer())))
 
     if d.currentIName in d.expandedINames:
         p = value.address
@@ -2319,10 +2316,10 @@ def qdump__std__shared_ptr(d, value):
         return
 
     if isSimpleType(d.templateArgument(value.type, 0)):
-        d.putValue("%s @0x%x" % (i.dereference(), long(i)))
+        d.putValue("%s @0x%x" % (i.dereference(), pointerValue(i)))
     else:
         i = expensiveDowncast(i)
-        d.putValue("@0x%x" % long(i))
+        d.putValue("@0x%x" % pointerValue(i))
 
     d.putNumChild(3)
     with Children(d, 3):
@@ -2340,10 +2337,10 @@ def qdump__std__unique_ptr(d, value):
         return
 
     if isSimpleType(d.templateArgument(value.type, 0)):
-        d.putValue("%s @0x%x" % (i.dereference(), long(i)))
+        d.putValue("%s @0x%x" % (i.dereference(), pointerValue(i)))
     else:
         i = expensiveDowncast(i)
-        d.putValue("@0x%x" % long(i))
+        d.putValue("@0x%x" % pointerValue(i))
 
     d.putNumChild(1)
     with Children(d, 1):
@@ -2464,7 +2461,7 @@ def qdump__boost__bimaps__bimap(d, value):
 
 
 def qdump__boost__optional(d, value):
-    if value["m_initialized"] == False:
+    if int(value["m_initialized"]) == 0:
         d.putValue("<uninitialized>")
         d.putNumChild(0)
     else:
@@ -2516,18 +2513,18 @@ def qdump__boost__shared_ptr(d, value):
 
 
 def qdump__boost__gregorian__date(d, value):
-    d.putValue(value["days_"], JulianDate)
+    d.putValue(int(value["days_"]), JulianDate)
     d.putNumChild(0)
 
 
 def qdump__boost__posix_time__ptime(d, item):
-    ms = long(item["time_"]["time_count_"]["value_"]) / 1000
+    ms = int(item["time_"]["time_count_"]["value_"]) / 1000
     d.putValue("%s/%s" % divmod(ms, 86400000), JulianDateAndMillisecondsSinceMidnight)
     d.putNumChild(0)
 
 
 def qdump__boost__posix_time__time_duration(d, item):
-    d.putValue(long(item["ticks_"]["value_"]) / 1000, MillisecondsSinceMidnight)
+    d.putValue(int(item["ticks_"]["value_"]) / 1000, MillisecondsSinceMidnight)
     d.putNumChild(0)
 
 
@@ -2594,11 +2591,11 @@ def qdump__QTJSC__JSValue(d, value):
             payload = value["u"]["asBits"]["payload"]
             #d.putIntItem("tag", tag)
             with SubItem(d, "tag"):
-                d.putValue(jstagAsString(long(tag)))
+                d.putValue(jstagAsString(int(tag)))
                 d.putNoType()
                 d.putNumChild(0)
 
-            d.putIntItem("payload", long(payload))
+            d.putIntItem("payload", int(payload))
             d.putFields(value["u"])
 
             if tag == -2:
@@ -2632,12 +2629,12 @@ def qdump__QScriptValue(d, value):
         d.putValue("(invalid)")
         d.putNumChild(0)
         return
-    if long(dd["type"]) == 1: # Number
+    if int(dd["type"]) == 1: # Number
         d.putValue(dd["numberValue"])
         d.putType("%sQScriptValue (Number)" % d.ns)
         d.putNumChild(0)
         return
-    if long(dd["type"]) == 2: # String
+    if int(dd["type"]) == 2: # String
         d.putStringValue(dd["stringValue"])
         d.putType("%sQScriptValue (String)" % d.ns)
         return
@@ -2646,8 +2643,8 @@ def qdump__QScriptValue(d, value):
     x = dd["jscValue"]["u"]
     tag = x["asBits"]["tag"]
     payload = x["asBits"]["payload"]
-    #isValid = long(x["asBits"]["tag"]) != -6   # Empty
-    #isCell = long(x["asBits"]["tag"]) == -2
+    #isValid = int(x["asBits"]["tag"]) != -6   # Empty
+    #isCell = int(x["asBits"]["tag"]) == -2
     #warn("IS CELL: %s " % isCell)
     #isObject = False
     #className = "UNKNOWN NAME"
@@ -2664,7 +2661,7 @@ def qdump__QScriptValue(d, value):
     #    warn("DYNAMIC TYPE: %s" % dtype)
     #    warn("STATUC  %s" % cell.type)
     #    type = cell["m_structure"]["m_typeInfo"]["m_type"]
-    #    isObject = long(type) == 7 # ObjectType;
+    #    isObject = int(type) == 7 # ObjectType;
     #    className = "UNKNOWN NAME"
     #warn("IS OBJECT: %s " % isObject)
 
@@ -2778,14 +2775,14 @@ def qdump__Utils__ElfSection(d, value):
     d.putPlainChildren(value)
 
 def qdump__CPlusPlus__Token(d, value):
-    k = value["f"]["kind"];
-    if long(k) == 6:
+    k = int(value["f"]["kind"])
+    if int(k) == 6:
         d.putValue("T_IDENTIFIER. offset: %d, len: %d"
             % (value["offset"], value["f"]["length"]))
-    elif long(k) == 7:
+    elif int(k) == 7:
         d.putValue("T_NUMERIC_LITERAL. offset: %d, value: %d"
             % (value["offset"], value["f"]["length"]))
-    elif long(k) == 60:
+    elif int(k) == 60:
         d.putValue("T_RPAREN")
     else:
         d.putValue("Type: %s" % k)
@@ -2794,8 +2791,8 @@ def qdump__CPlusPlus__Token(d, value):
 def qdump__CPlusPlus__Internal__PPToken(d, value):
     k = value["f"]["kind"];
     data, size, alloc = d.byteArrayData(value["m_src"])
-    length = long(value["f"]["length"])
-    offset = long(value["offset"])
+    length = int(value["f"]["length"])
+    offset = int(value["offset"])
     #warn("size: %s, alloc: %s, offset: %s, length: %s, data: %s"
     #    % (size, alloc, offset, length, data))
     d.putValue(encodeCharArray(data + offset, 100, length),
diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp
index 0df70af7c73f1fef4459edc9956ae0c6dba2a28d..c055e5a39ddb4f512c884d90126e4dc65941b4a6 100644
--- a/tests/auto/debugger/tst_dumpers.cpp
+++ b/tests/auto/debugger/tst_dumpers.cpp
@@ -4014,7 +4014,8 @@ void tst_Dumpers::dumper_data()
     QTest::newRow("BoostOptional1")
             << Data("#include <boost/optional.hpp>\n",
                     "boost::optional<int> i0, i1;\n"
-                    "i1 = 1;\n")
+                    "i1 = 1;\n"
+                    "unused(&i0, &i1);\n")
              % Check("i0", "<uninitialized>", "boost::optional<int>")
              % Check("i1", "1", "boost::optional<int>");