aboutsummaryrefslogtreecommitdiffstats
path: root/cparser/Rename.ml
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2018-04-23 10:47:10 +0200
committerXavier Leroy <xavierleroy@users.noreply.github.com>2018-04-27 13:54:38 +0200
commit6f5eec9f5f1ad4567186172a4519e598af801b94 (patch)
treecf7a8249630fc2d130939c076598eef482851f7e /cparser/Rename.ml
parent2f9932b8c5ff116d417c1e5197cd8e51f8d59b5e (diff)
downloadcompcert-kvx-6f5eec9f5f1ad4567186172a4519e598af801b94.tar.gz
compcert-kvx-6f5eec9f5f1ad4567186172a4519e598af801b94.zip
Record value of constant expression in C.Scase constructor
The Elab pass checks that the argument of 'case' is a compile-time constant expression. This commit records the value of this expression in the C.Scase AST generated by Elab, so that it can be used for further diagnostics, i.e. checking (in Elab) for duplicate cases. Note that C2C ignores the recorded value and recomputes the value of the expression using Ceval.integer_expr. This is intentional: Ceval.integer_expr is more trustworthy, as it is formally verified against the CompCert C semantics.
Diffstat (limited to 'cparser/Rename.ml')
-rw-r--r--cparser/Rename.ml2
1 files changed, 1 insertions, 1 deletions
diff --git a/cparser/Rename.ml b/cparser/Rename.ml
index d63fa47d..eb31eaf0 100644
--- a/cparser/Rename.ml
+++ b/cparser/Rename.ml
@@ -188,7 +188,7 @@ and stmt_or_decl env s =
(stmt env s, env)
and slabel env = function
- | Scase e -> Scase(exp env e)
+ | Scase(e, n) -> Scase(exp env e, n)
| sl -> sl
let fundef env f =