From 7cedf7724bdb67d0ae995638525609918eee5303 Mon Sep 17 00:00:00 2001
From: Virgile Prevosto <virgile.prevosto@m4x.org>
Date: Mon, 11 Mar 2019 19:18:41 +0100
Subject: [PATCH] [kernel] limit the suffix's length when uniquifying variables
 names

---
 src/kernel_services/ast_queries/cil.ml |  4 +++-
 tests/syntax/oracle/rename.res.oracle  | 17 +++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/kernel_services/ast_queries/cil.ml b/src/kernel_services/ast_queries/cil.ml
index c5e01b7134d..6ce13b9bca6 100644
--- a/src/kernel_services/ast_queries/cil.ml
+++ b/src/kernel_services/ast_queries/cil.ml
@@ -7444,7 +7444,9 @@ let isCompleteType ?allowZeroSizeArrays t =
 	   let undolist = ref [] in
 	   (* Process one local variable *)
 	   let processLocal (v: varinfo) =
-             let lookupname = v.vname in
+             (* start from original name to avoid putting another _0 in case
+                of conflicts. *)
+             let lookupname = v.vorig_name in
              let data = CurrentLoc.get () in
 	     let newname, oldloc =
                Alpha.newAlphaName
diff --git a/tests/syntax/oracle/rename.res.oracle b/tests/syntax/oracle/rename.res.oracle
index 52e6869da08..a672348b232 100644
--- a/tests/syntax/oracle/rename.res.oracle
+++ b/tests/syntax/oracle/rename.res.oracle
@@ -73,6 +73,23 @@ void f4(int *j_0_1)
   return;
 }
 
+void f5(void)
+{
+  int y_0_1;
+  int y_0_0;
+  return;
+}
+
+int y_0;
+void f6(void)
+{
+  int y_2_0;
+  int y_2;
+  return;
+}
+
+int y_1;
+
 struct not_anon s = {.__anonCompField1 = 0};
 struct anon a = {.__anonCompField1 = {.inner_i = 0}};
 
-- 
GitLab