From be2460c363858f40a24e3e2f9aa18522187fbf87 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Correnson?= <loic.correnson@cea.fr>
Date: Wed, 9 Oct 2024 14:13:48 +0200
Subject: [PATCH] [region] fix union fields

---
 src/plugins/region/memory.ml | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/plugins/region/memory.ml b/src/plugins/region/memory.ml
index 1ad5b12e13b..cedff2c22ac 100644
--- a/src/plugins/region/memory.ml
+++ b/src/plugins/region/memory.ml
@@ -447,9 +447,11 @@ let rec move (m: map) (r: node) (p: int) (s: int) =
       move m rg.data (p - rg.offset) s
 
 let field (m: map) (r: node) (fd: fieldinfo) : node =
-  let s = Cil.bitsSizeOf fd.ftype in
-  let (p,_) = Cil.fieldBitsOffset fd in
-  move m r p s
+  if fd.fcomp.cstruct then
+    let s = Cil.bitsSizeOf fd.ftype in
+    let (p,_) = Cil.fieldBitsOffset fd in
+    move m r p s
+  else r
 
 let index (m : map) (r: node) (ty:typ) : node =
   move m r 0 (Cil.bitsSizeOf ty)
-- 
GitLab