scc

simple C compiler
git clone git://git.2f30.org/scc
Log | Files | Refs | README | LICENSE

commit 5d4645c1007dbbd708d7e99854594fb0db193848
parent eb9387c7d79bb73b5481decf9aa69a00707fa26b
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Fri, 20 May 2016 15:29:54 +0200

[cc1] Add abort() calls in type switches

We have seen that this defensive technique is very good in a
program like a compiler, where we have dozen of different
conditions and code paths.

Diffstat:
Mcc1/types.c | 4++++
1 file changed, 4 insertions(+), 0 deletions(-)

diff --git a/cc1/types.c b/cc1/types.c @@ -284,6 +284,8 @@ mktype(Type *tp, int op, TINT nelem, Type *pars[]) case UNION: type.prop |= TAGGREG; break; + default: + abort(); } t = (op ^ (uintptr_t) tp >> 3) & NR_TYPE_HASH-1; @@ -342,5 +344,7 @@ eqtype(Type *tp1, Type *tp2) case INT: case FLOAT: return tp1->letter == tp2->letter; + default: + abort(); } }