diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2009-05-08 22:48:39 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2009-05-08 22:48:39 +0000 |
| commit | 811e62c8c12d3268166d471e2ce87c71f503f20b (patch) | |
| tree | 815e5de253a077c9cfb2909eafa52b10bbb9b12d | |
| parent | b997f3bcc32c00f01f67317092b534298115674f (diff) | |
| download | bcm5719-llvm-811e62c8c12d3268166d471e2ce87c71f503f20b.tar.gz bcm5719-llvm-811e62c8c12d3268166d471e2ce87c71f503f20b.zip | |
ABITest: Fix a bug in generating test values for structures w/ no
non-padding fields.
llvm-svn: 71273
| -rwxr-xr-x | clang/utils/ABITest/ABITestGen.py | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/clang/utils/ABITest/ABITestGen.py b/clang/utils/ABITest/ABITestGen.py index afe58e58d0f..539cc28fffc 100755 --- a/clang/utils/ABITest/ABITestGen.py +++ b/clang/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) |

