diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
index 40a575fa..3f58adb3 100644
--- a/tests/data/Makefile.am
+++ b/tests/data/Makefile.am
@@ -184,6 +184,18 @@ test-abidiff-exit/test-headers-dirs/test-headers-dir-v0.c \
 test-abidiff-exit/test-headers-dirs/test-headers-dir-v0.o \
 test-abidiff-exit/test-headers-dirs/test-headers-dir-v1.c \
 test-abidiff-exit/test-headers-dirs/test-headers-dir-v1.o \
+test-abidiff-exit/test-unfixed-enum-type-v0.c \
+test-abidiff-exit/test-unfixed-enum-type-v0.o \
+test-abidiff-exit/test-unfixed-enum-type-v1.c \
+test-abidiff-exit/test-unfixed-enum-type-v1.o \
+test-abidiff-exit/test-unfixed-enum-type-report0.txt \
+test-abidiff-exit/test-unfixed-enum-type-report1.txt \
+test-abidiff-exit/test-fixed-enum-type-v0.cc \
+test-abidiff-exit/test-fixed-enum-type-v0.o \
+test-abidiff-exit/test-fixed-enum-type-v1.cc \
+test-abidiff-exit/test-fixed-enum-type-v1.o \
+test-abidiff-exit/test-fixed-enum-type-report0.txt \
+test-abidiff-exit/test-fixed-enum-type-report1.txt \
 \
 test-diff-dwarf/test0-v0.cc		\
 test-diff-dwarf/test0-v0.o			\
diff --git a/tests/data/test-abidiff-exit/test-fixed-enum-type-report0.txt b/tests/data/test-abidiff-exit/test-fixed-enum-type-report0.txt
new file mode 100644
index 00000000..0ecb35a9
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-fixed-enum-type-report0.txt
@@ -0,0 +1,12 @@
+Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+1 function with some indirect sub-type change:
+
+  [C] 'function unsigned int fun(A, B)' has some indirect sub-type changes:
+    parameter 2 of type 'enum B' has sub-type changes:
+      type size changed from 8 to 64 (in bits)
+      type alignment changed from 8 to 64
+      type size changed from 8 to 64 (in bits)
+      type alignment changed from 8 to 64
+
diff --git a/tests/data/test-abidiff-exit/test-fixed-enum-type-report1.txt b/tests/data/test-abidiff-exit/test-fixed-enum-type-report1.txt
new file mode 100644
index 00000000..0ecb35a9
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-fixed-enum-type-report1.txt
@@ -0,0 +1,12 @@
+Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+1 function with some indirect sub-type change:
+
+  [C] 'function unsigned int fun(A, B)' has some indirect sub-type changes:
+    parameter 2 of type 'enum B' has sub-type changes:
+      type size changed from 8 to 64 (in bits)
+      type alignment changed from 8 to 64
+      type size changed from 8 to 64 (in bits)
+      type alignment changed from 8 to 64
+
diff --git a/tests/data/test-abidiff-exit/test-fixed-enum-type-v0.cc b/tests/data/test-abidiff-exit/test-fixed-enum-type-v0.cc
new file mode 100644
index 00000000..a646b2db
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-fixed-enum-type-v0.cc
@@ -0,0 +1,11 @@
+enum A : signed char {
+  Ae = 0,
+};
+
+enum B : signed char {
+  Be = 0,
+};
+
+unsigned int fun(A a, B b) {
+  return sizeof(a) + sizeof(b);
+}
diff --git a/tests/data/test-abidiff-exit/test-fixed-enum-type-v0.o b/tests/data/test-abidiff-exit/test-fixed-enum-type-v0.o
new file mode 100644
index 0000000000000000000000000000000000000000..125f0660e3bd44e52786c6a9b50ac4180b9fef74
GIT binary patch
diff --git a/tests/data/test-abidiff-exit/test-fixed-enum-type-v1.cc b/tests/data/test-abidiff-exit/test-fixed-enum-type-v1.cc
new file mode 100644
index 00000000..3e42f65c
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-fixed-enum-type-v1.cc
@@ -0,0 +1,11 @@
+enum A : unsigned char {
+  Ae = 0,
+};
+
+enum B : unsigned long {
+  Be = 0,
+};
+
+unsigned int fun(A a, B b) {
+  return sizeof(a) + sizeof(b);
+}
diff --git a/tests/data/test-abidiff-exit/test-fixed-enum-type-v1.o b/tests/data/test-abidiff-exit/test-fixed-enum-type-v1.o
new file mode 100644
index 0000000000000000000000000000000000000000..b2d114d73948571196bd6f832d49a8bda1c57e87
GIT binary patch
diff --git a/tests/data/test-abidiff-exit/test-unfixed-enum-type-report0.txt b/tests/data/test-abidiff-exit/test-unfixed-enum-type-report0.txt
new file mode 100644
index 00000000..972ca39d
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-unfixed-enum-type-report0.txt
@@ -0,0 +1,18 @@
+Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+1 function with some indirect sub-type change:
+
+  [C] 'function unsigned int fun(A, B)' has some indirect sub-type changes:
+    parameter 1 of type 'enum A' has sub-type changes:
+      type size changed from 32 to 64 (in bits)
+      type alignment changed from 32 to 64
+      type size changed from 32 to 64 (in bits)
+      type alignment changed from 32 to 64
+      1 enumerator change:
+        'A::Ae' from value '16777216' to '281474976710656'
+    parameter 2 of type 'enum B' has sub-type changes:
+      type size hasn't changed
+      1 enumerator change:
+        'B::Be' from value '2147483647' to '2147483649'
+
diff --git a/tests/data/test-abidiff-exit/test-unfixed-enum-type-report1.txt b/tests/data/test-abidiff-exit/test-unfixed-enum-type-report1.txt
new file mode 100644
index 00000000..972ca39d
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-unfixed-enum-type-report1.txt
@@ -0,0 +1,18 @@
+Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+1 function with some indirect sub-type change:
+
+  [C] 'function unsigned int fun(A, B)' has some indirect sub-type changes:
+    parameter 1 of type 'enum A' has sub-type changes:
+      type size changed from 32 to 64 (in bits)
+      type alignment changed from 32 to 64
+      type size changed from 32 to 64 (in bits)
+      type alignment changed from 32 to 64
+      1 enumerator change:
+        'A::Ae' from value '16777216' to '281474976710656'
+    parameter 2 of type 'enum B' has sub-type changes:
+      type size hasn't changed
+      1 enumerator change:
+        'B::Be' from value '2147483647' to '2147483649'
+
diff --git a/tests/data/test-abidiff-exit/test-unfixed-enum-type-v0.c b/tests/data/test-abidiff-exit/test-unfixed-enum-type-v0.c
new file mode 100644
index 00000000..363b94f2
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-unfixed-enum-type-v0.c
@@ -0,0 +1,11 @@
+enum A {
+  Ae = 1ull << 24,
+};
+
+enum B {
+  Be = (1ull << 31) - 1,
+};
+
+unsigned int fun(enum A a, enum B b) {
+  return sizeof(a) + sizeof(b);
+}
diff --git a/tests/data/test-abidiff-exit/test-unfixed-enum-type-v0.o b/tests/data/test-abidiff-exit/test-unfixed-enum-type-v0.o
new file mode 100644
index 0000000000000000000000000000000000000000..91cfa302e005376058fa43025e346844cfeaae3d
GIT binary patch
diff --git a/tests/data/test-abidiff-exit/test-unfixed-enum-type-v1.c b/tests/data/test-abidiff-exit/test-unfixed-enum-type-v1.c
new file mode 100644
index 00000000..41d3a6a1
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-unfixed-enum-type-v1.c
@@ -0,0 +1,11 @@
+enum A {
+  Ae = 1ull << 48,
+};
+
+enum B {
+  Be = (1ull << 31) + 1,
+};
+
+unsigned int fun(enum A a, enum B b) {
+  return sizeof(a) + sizeof(b);
+}
diff --git a/tests/data/test-abidiff-exit/test-unfixed-enum-type-v1.o b/tests/data/test-abidiff-exit/test-unfixed-enum-type-v1.o
new file mode 100644
index 0000000000000000000000000000000000000000..8a29654cf7c49bd13cb64b6f168c8df55bc1a592
GIT binary patch
diff --git a/tests/test-abidiff-exit.cc b/tests/test-abidiff-exit.cc
index 6ebe2a09..5d114097 100644
--- a/tests/test-abidiff-exit.cc
+++ b/tests/test-abidiff-exit.cc
@@ -352,6 +352,50 @@ InOutSpec in_out_specs[] =
     "data/test-abidiff-exit/test-headers-dirs/test-headers-dir-report-2.txt",
     "output/test-abidiff-exit/test-headers-dirs/test-headers-dir-report-2.txt"
   },
+  {
+    "data/test-abidiff-exit/test-unfixed-enum-type-v0.o",
+    "data/test-abidiff-exit/test-unfixed-enum-type-v1.o",
+    "",
+    "",
+    "",
+    "--no-default-suppression --no-show-locs",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/test-unfixed-enum-type-report0.txt",
+    "output/test-abidiff-exit/test-unfixed-enum-type-report0.txt",
+  },
+  {
+    "data/test-abidiff-exit/test-unfixed-enum-type-v0.o",
+    "data/test-abidiff-exit/test-unfixed-enum-type-v1.o",
+    "",
+    "",
+    "",
+    "--no-default-suppression --no-show-locs --harmless",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/test-unfixed-enum-type-report1.txt",
+    "output/test-abidiff-exit/test-unfixed-enum-type-report1.txt",
+  },
+  {
+    "data/test-abidiff-exit/test-fixed-enum-type-v0.o",
+    "data/test-abidiff-exit/test-fixed-enum-type-v1.o",
+    "",
+    "",
+    "",
+    "--no-default-suppression --no-show-locs",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/test-fixed-enum-type-report0.txt",
+    "output/test-abidiff-exit/test-fixed-enum-type-report0.txt",
+  },
+  {
+    "data/test-abidiff-exit/test-fixed-enum-type-v0.o",
+    "data/test-abidiff-exit/test-fixed-enum-type-v1.o",
+    "",
+    "",
+    "",
+    "--no-default-suppression --no-show-locs --harmless",
+    abigail::tools_utils::ABIDIFF_ABI_CHANGE,
+    "data/test-abidiff-exit/test-fixed-enum-type-report1.txt",
+    "output/test-abidiff-exit/test-fixed-enum-type-report1.txt",
+  },
   {0, 0, 0 ,0, 0, 0, abigail::tools_utils::ABIDIFF_OK, 0, 0}
 };
 
