diff --git a/src/abg-suppression.cc b/src/abg-suppression.cc
index 26d19217..254d6ae4 100644
--- a/src/abg-suppression.cc
+++ b/src/abg-suppression.cc
@@ -1468,10 +1468,11 @@ type_suppression::insertion_range::eval_boundary(const boundary_sptr	boundary,
   else if (fn_call_expr_boundary_sptr b = is_fn_call_expr_boundary(boundary))
     {
       ini::function_call_expr_sptr fn_call = b->as_function_call_expr();
-      if ((fn_call->get_name() == "offset_of"
-	   || fn_call->get_name() == "offset_after"
-	   || fn_call->get_name() == "offset_of_first_data_member_regexp"
-	   || fn_call->get_name() == "offset_of_last_data_member_regexp")
+      if (fn_call
+	  && (fn_call->get_name() == "offset_of"
+	      || fn_call->get_name() == "offset_after"
+	      || fn_call->get_name() == "offset_of_first_data_member_regexp"
+	      || fn_call->get_name() == "offset_of_last_data_member_regexp")
 	  && fn_call->get_arguments().size() == 1)
 	{
 	  if (fn_call->get_name() == "offset_of"
diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
index 0569af34..7b07236e 100644
--- a/tests/data/Makefile.am
+++ b/tests/data/Makefile.am
@@ -1880,6 +1880,12 @@ test-diff-suppr/test-has-data-member-inserted-between-1-v3.o \
 test-diff-suppr/test-has-data-member-inserted-between-1-v4.c \
 test-diff-suppr/test-has-data-member-inserted-between-1-v4.o \
 test-diff-suppr/test-has-data-member-inserted-between-1.suppr \
+test-diff-suppr/test-has-data-member-inserted-at-1-report-1.txt \
+test-diff-suppr/test-has-data-member-inserted-at-1-v0.c \
+test-diff-suppr/test-has-data-member-inserted-at-1-v0.o \
+test-diff-suppr/test-has-data-member-inserted-at-1-v1.c \
+test-diff-suppr/test-has-data-member-inserted-at-1-v1.o \
+test-diff-suppr/test-has-data-member-inserted-at-1.1.suppr \
 \
 test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1 \
 test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi \
diff --git a/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1-report-1.txt b/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1-report-1.txt
new file mode 100644
index 00000000..d0fac818
--- /dev/null
+++ b/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1-report-1.txt
@@ -0,0 +1,17 @@
+Functions changes summary: 0 Removed, 0 Changed, 0 Added function
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+Unreachable types summary: 0 removed, 1 changed, 0 added type
+
+1 changed type unreachable from any public interface:
+
+  [C] 'struct foo' changed:
+    type size hasn't changed
+    1 data member insertion:
+      'int x', at offset 0 (in bits) at test-has-data-member-inserted-at-1-v1.c:3:1
+    1 data member change:
+      type of 'char p[8]' changed:
+        type name changed from 'char[8]' to 'char[4]'
+        array type size changed from 64 to 32
+        array type subrange 1 changed length from 8 to 4
+      and offset changed from 0 to 32 (in bits) (by +32 bits)
+
diff --git a/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1-v0.c b/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1-v0.c
new file mode 100644
index 00000000..237d0d06
--- /dev/null
+++ b/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1-v0.c
@@ -0,0 +1,10 @@
+struct foo
+{
+  char p[8];
+};
+
+int
+main(void)
+{
+  return 0;
+}
diff --git a/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1-v0.o b/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1-v0.o
new file mode 100644
index 0000000000000000000000000000000000000000..fb70318ec911a4d03502aa82ecd02d37eba4863b
GIT binary patch
diff --git a/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1-v1.c b/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1-v1.c
--- /dev/null
+++ b/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1-v1.c
@@ -0,0 +1,11 @@
+struct foo
+{
+  int x;
+  char p[4];
+};
+
+int
+main(void)
+{
+  return 0;
+}
diff --git a/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1-v1.o b/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1-v1.o
new file mode 100644
index 0000000000000000000000000000000000000000..e85c3aa0e6f1a146a66698bb2c86fb6dcd7f74e2
GIT binary patch
diff --git a/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1.1.suppr b/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1.1.suppr
--- /dev/null
+++ b/tests/data/test-diff-suppr/test-has-data-member-inserted-at-1.1.suppr
@@ -0,0 +1,3 @@
+[suppress_type]
+  type_kind = struct
+  has_data_member_inserted_at = offset_of_first_data_member_regexp(.*foo[0-9]?$)
diff --git a/tests/test-diff-suppr.cc b/tests/test-diff-suppr.cc
index 11be9b9a..19db440b 100644
--- a/tests/test-diff-suppr.cc
+++ b/tests/test-diff-suppr.cc
@@ -2256,6 +2256,16 @@ InOutSpec in_out_specs[] =
     "data/test-diff-suppr/test-has-data-member-inserted-between-1-report-4.txt",
     "output/test-diff-suppr/test-has-data-member-inserted-between-1-report-4.txt"
   },
+  {
+    "data/test-diff-suppr/test-has-data-member-inserted-at-1-v0.o",
+    "data/test-diff-suppr/test-has-data-member-inserted-at-1-v1.o",
+    "",
+    "",
+    "data/test-diff-suppr/test-has-data-member-inserted-at-1.1.suppr",
+    "--drop-private-types --no-default-suppression --non-reachable-types",
+    "data/test-diff-suppr/test-has-data-member-inserted-at-1-report-1.txt",
+    "output/test-diff-suppr/test-has-data-member-inserted-at-1-report-1.txt"
+  },
   // This should be the last entry
   {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
 };
