diff --git a/src/kernel_internals/typing/cabs2cil.ml b/src/kernel_internals/typing/cabs2cil.ml
index 12bb3812be064e1ea24589f4640a5be175b940f9..b72e5035f8292f7be0520c3245b0d4a5af28158a 100644
--- a/src/kernel_internals/typing/cabs2cil.ml
+++ b/src/kernel_internals/typing/cabs2cil.ml
@@ -3532,7 +3532,8 @@ let fieldsToInit
     else if found then
       found, offset :: loff
       (* if this field is an anonymous comp, search for the designator inside *)
-    else if prefix anonCompFieldName f.fname && not found then
+    else if prefix anonCompFieldName f.fname && not found
+            && f.forig_name <> f.fname then
       match unrollType f.ftype with
       | TComp (comp, _, _) ->
         add_comp offset comp acc (* go deeper inside *)
diff --git a/tests/syntax/oracle/rename.res.oracle b/tests/syntax/oracle/rename.res.oracle
index d734d2bfa322836ce56e6db7a56fe8ea53e3cce3..52e6869da0887ef55a31547b8483fa061a1024d4 100644
--- a/tests/syntax/oracle/rename.res.oracle
+++ b/tests/syntax/oracle/rename.res.oracle
@@ -1,5 +1,16 @@
 [kernel] Parsing tests/syntax/rename.i (no preprocessing)
+[kernel] tests/syntax/rename.i:48: Warning: 
+  unnamed fields are a C11 extension (use -c11 to avoid this warning)
 /* Generated by Frama-C */
+struct not_anon {
+   int __anonCompField1 ;
+};
+struct __anonstruct_1 {
+   int inner_i ;
+};
+struct anon {
+   struct __anonstruct_1 __anonCompField1 ;
+};
 int f(void)
 {
   int x = 0;
@@ -62,4 +73,6 @@ void f4(int *j_0_1)
   return;
 }
 
+struct not_anon s = {.__anonCompField1 = 0};
+struct anon a = {.__anonCompField1 = {.inner_i = 0}};
 
diff --git a/tests/syntax/rename.i b/tests/syntax/rename.i
index d7524ce90d305776a3412f4b41f0247b86b06895..08a549ccc24c4a4c1d072dcbc7046321a8da60e6 100644
--- a/tests/syntax/rename.i
+++ b/tests/syntax/rename.i
@@ -38,3 +38,15 @@ void f4(int *j_0_1) {
   { int j_0_1 = j_0;
     j_0_1+=j_0; }
 }
+
+struct not_anon {
+    int __anonCompField1;
+};
+
+struct not_anon s = {.__anonCompField1 = 0};
+
+struct anon {
+  struct { int inner_i; };
+};
+
+struct anon a = { .inner_i = 0 };