123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778(**************************************************************************)(* *)(* This file is part of Frama-C. *)(* *)(* Copyright (C) 2007-2023 *)(* CEA (Commissariat à l'énergie atomique et aux énergies *)(* alternatives) *)(* *)(* you can redistribute it and/or modify it under the terms of the GNU *)(* Lesser General Public License as published by the Free Software *)(* Foundation, version 2.1. *)(* *)(* It is distributed in the hope that it will be useful, *)(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *)(* GNU Lesser General Public License for more details. *)(* *)(* See the GNU Lesser General Public License version 2.1 *)(* for more details (enclosed in the file licenses/LGPLv2.1). *)(* *)(**************************************************************************)(** Constant Propagation *)includePlugin.Register(structletname="semantic constant folding"letshortname="scf"lethelp="propagates constants semantically"end)moduleSemanticConstFolding=False(structletoption_name="-scf"lethelp="pretty print a version of the source code where each constant expression is replaced by its value"end)let()=SemanticConstFolding.add_aliases["-semantic-const-folding"]moduleSemanticConstFold=Fundec_set(structletoption_name="-scf-fct"letarg_name="f1, ..., fn"lethelp="propagate constants only into functions f1,...,fn"end)let()=SemanticConstFold.add_aliases["-semantic-const-fold"]moduleCastIntro=False(structletoption_name="-scf-allow-cast"lethelp="replace expressions by constants even when doing so \
requires a pointer cast"end)let()=CastIntro.add_aliases["-cast-from-constant"]moduleExpandLogicContext=False(structletoption_name="-scf-logic"lethelp="replace values from logical context and create corresponding variables (HIGHLY EXPERIMENTAL)"end)let()=ExpandLogicContext.add_aliases["-semantic-const-fold-logic"]moduleProject_name=String(structletoption_name="-scf-project-name"letdefault="propagated"letarg_name=""lethelp="name of the generated project (default is `propagated`)"end)(*
Local Variables:
compile-command: "make -C ../../.."
End:
*)