aboutsummaryrefslogtreecommitdiffstats
path: root/cparser/Cutil.ml
diff options
context:
space:
mode:
authorBernhard Schommer <bschommer@users.noreply.github.com>2018-03-29 18:12:21 +0200
committerXavier Leroy <xavierleroy@users.noreply.github.com>2018-03-29 18:12:21 +0200
commit6b1463c4de3ae182fac6b5f2d15248d87c2f9613 (patch)
tree01de14c28ceb8c956efb0ffedd8288680d630211 /cparser/Cutil.ml
parentd1ff2fcb7c2875b3c371a124579aef419199195b (diff)
downloadcompcert-kvx-6b1463c4de3ae182fac6b5f2d15248d87c2f9613.tar.gz
compcert-kvx-6b1463c4de3ae182fac6b5f2d15248d87c2f9613.zip
Reject casts to struct/union types (#68)
The ISO C99 standard allows cast only if the type name involved is either a void type or a scalar type. For compatibility with GCC and Clang we used to support casting a struct or union to exactly the same struct or union type. That does not seem useful in practice and complicates conformance testing. This commit gets rid of this exception to the C99 rule. Bug 23310
Diffstat (limited to 'cparser/Cutil.ml')
-rw-r--r--cparser/Cutil.ml3
1 files changed, 0 insertions, 3 deletions
diff --git a/cparser/Cutil.ml b/cparser/Cutil.ml
index 4a5c9427..f3cd5d14 100644
--- a/cparser/Cutil.ml
+++ b/cparser/Cutil.ml
@@ -1035,9 +1035,6 @@ let valid_cast env tfrom tto =
(TInt _ | TPtr _ | TEnum _) -> true
(* between int and float types *)
| (TInt _ | TFloat _ | TEnum _), (TInt _ | TFloat _ | TEnum _) -> true
- (* between identical composites *)
- | TStruct(s1, _), TStruct(s2, _) -> s1 = s2
- | TUnion(s1, _), TUnion(s2, _) -> s1 = s2
| _, _ -> false
(* Check that the cast from tfrom to tto is an integer to pointer conversion *)