Handle chains of lowerings correctly
authorAndreas Zwinkau <zwinkau@kit.edu>
Wed, 20 Apr 2011 11:33:06 +0000 (13:33 +0200)
committerAndreas Zwinkau <zwinkau@kit.edu>
Wed, 20 Apr 2011 11:40:28 +0000 (13:40 +0200)
ir/tr/type.c

index 85d96e0..6d4f52f 100644 (file)
@@ -2100,6 +2100,10 @@ void set_lowered_type(ir_type *tp, ir_type *lowered_type)
 {
        assert(is_type(tp) && is_type(lowered_type));
        lowered_type->flags |= tf_lowered_type;
+       /* there might be a chain of lowerings, get to the start */
+       while (is_lowered_type(tp)) {
+               tp = tp->assoc_type;
+       }
        tp->assoc_type = lowered_type;
        lowered_type->assoc_type = tp;
 }