On Fri, Feb 17, 2012 at 03:46:14PM +0100, Oliver Schwahn wrote:
> I need to preserve the original function parameter types, including any 
> qualifiers, for my CIL analysis. Is there a way to prevent the const 
> removal and preserve type qualifiers for such non-pointer type function 
> parameters?

Many thanks for the report, this bug seems to have been tentatively fixed back
in 2002 (!) but nobody tested it and it remained pending until your report.

I think the following patch solves the issue:

diff --git a/src/frontc/cabs2cil.ml b/src/frontc/cabs2cil.ml
index b8acaa6..4b2124c 100644
--- a/src/frontc/cabs2cil.ml
+++ b/src/frontc/cabs2cil.ml
@@ -2559,6 +2559,8 @@ and makeVarInfoCabs
       vtype
   in
   let vi = makeVarinfo isglobal n t in
+  (* makeVarinfo removes "const" even for formals, please respect my choices! 
*)
+  vi.vtype <- t;
   vi.vstorage <- sto;
   vi.vattr <- nattr;
   vi.vdecl <- ldecl;
@@ -5781,6 +5783,8 @@ and doDecl (isglobal: bool) : A.definition -> chunk = 
function
              (* sfg: extract locations for the formals from dt *)
              let doFormal (loc : location) (fn, ft, fa) =
                let f = makeVarinfo false fn ft in
+               (* makeVarinfo removes const qualifier even on formals *)
+               f.vtype <- ft;
                  (f.vdecl <- loc;
                   f.vattr <- fa;
                   alphaConvertVarAndAddToEnv true f)

Could you test it please?

I’ll commit it as soon as I find the time to check it does not introduce any
regression.

Best regards,
-- 
Gabriel

------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
CIL-users mailing list
CIL-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cil-users

Reply via email to