From 48df17b8bfcd7a53f147ce00679a1b3976da179c Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Fri, 8 May 2009 22:48:39 +0000 Subject: [PATCH] ABITest: Fix a bug in generating test values for structures w/ no non-padding fields. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71273 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/ABITest/ABITestGen.py | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/utils/ABITest/ABITestGen.py b/utils/ABITest/ABITestGen.py index afe58e58d0..539cc28fff 100755 --- a/utils/ABITest/ABITestGen.py +++ b/utils/ABITest/ABITestGen.py @@ -199,31 +199,27 @@ class TypePrinter: yield '(%s) -1'%(t.name,) yield '(%s) 1'%(t.name,) elif isinstance(t, RecordType): - if not t.fields: + nonPadding = [f for f in t.fields + if not f.isPaddingBitField()] + + if not nonPadding: yield '{ }' return + # FIXME: Use designated initializers to access non-first # fields of unions. if t.isUnion: - firstNonPadding = None - for t in t.fields: - if not t.isPaddingBitField(): - firstNonPadding = t - break - if firstNonPadding: - for v in self.getTestValues(firstNonPadding): - yield '{ %s }' % v - else: - yield '{ }' + for v in self.getTestValues(nonPadding[0]): + yield '{ %s }' % v return - fieldValues = [list(self.getTestValues(f)) - for f in t.fields - if not f.isPaddingBitField()] + + fieldValues = map(list, map(self.getTestValues, nonPadding)) for i,values in enumerate(fieldValues): for v in values: elements = map(random.choice,fieldValues) elements[i] = v yield '{ %s }'%(', '.join(elements)) + elif isinstance(t, ComplexType): for t in self.getTestValues(t.elementType): yield '%s + %s * 1i'%(t,t) -- 2.40.0