summaryrefslogtreecommitdiff
path: root/appl
diff options
context:
space:
mode:
authorforsyth <forsyth@vitanuova.com>2011-04-04 19:07:40 +0100
committerforsyth <forsyth@vitanuova.com>2011-04-04 19:07:40 +0100
commitfd7058f9a883832e948d667b63c56178e37b1e15 (patch)
tree1b42420a6482584649f4f96fb94e809bac8e7fec /appl
parent536dbc7ecfb0fb071dae11b61e5de596559598e6 (diff)
20110404-1906
Diffstat (limited to 'appl')
-rw-r--r--appl/cmd/limbo/com.b13
1 files changed, 12 insertions, 1 deletions
diff --git a/appl/cmd/limbo/com.b b/appl/cmd/limbo/com.b
index 320d209c..383fc1a6 100644
--- a/appl/cmd/limbo/com.b
+++ b/appl/cmd/limbo/com.b
@@ -734,6 +734,17 @@ fillrange(c: ref Case, nn: ref Node, in: ref Inst)
l[i++].inst = in;
}
+nconstqual(s1: ref Node): int
+{
+ n := 0;
+ for(; s1 != nil; s1 = s1.right){
+ for(s2 := s1.left.left; s2 != nil; s2 = s2.right)
+ if(s2.left.op == Oconst)
+ n++;
+ }
+ return n;
+}
+
casecom(cn: ref Node)
{
d: ref Decl;
@@ -742,7 +753,7 @@ casecom(cn: ref Node)
c := cn.ty.cse;
- needwild := cn.op != Opick || c.nlab != cn.left.right.ty.tof.decl.tag;
+ needwild := cn.op != Opick || nconstqual(cn.right) != cn.left.right.ty.tof.decl.tag;
igoto := cn.left.ty == tint && dogoto(c);
#