Commit Graph

28 Commits

Author SHA1 Message Date
Serge Guelton b748c0e696 Portable Python script across Python version
Make scripts more future-proof by importing most __future__ stuff.

Differential Revision: https://reviews.llvm.org/D55208

llvm-svn: 349504
2018-12-18 16:07:37 +00:00
Serge Guelton d458974c45 Portable Python script across Python version
In Python3, dict.items, dict.keys, dict.values, zip, map and filter no longer return lists, they create generator instead.

The portability patch consists in forcing an extra `list` call if the result is actually used as a list.
`map` are replaced by list comprehension and `filter` by filtered list comprehension.

Differential Revision: https://reviews.llvm.org/D55197

llvm-svn: 349501
2018-12-18 16:04:21 +00:00
Serge Guelton c0ebe773cd Portable Python script across Python version
Using from __future__ import print_function it is possible to have a compatible behavior of `print(...)` across Python version.

Differential Revision: https://reviews.llvm.org/D55213

llvm-svn: 349454
2018-12-18 08:36:33 +00:00
Serge Guelton 09616bdb4a Portable Python script across version
Have all classes derive from object: that's implicitly the default in Python3,
it needs to be done explicilty in Python2.

Differential Revision: https://reviews.llvm.org/D55121

llvm-svn: 348127
2018-12-03 12:12:48 +00:00
Serge Guelton 3de410848c Portable Python script across Python version
Python2 supports the two following equivalent construct

	raise ExceptionType, exception_value
and
	raise ExceptionType(exception_value)

Only the later is supported by Python3.

Differential Revision: https://reviews.llvm.org/D55195

llvm-svn: 348126
2018-12-03 12:11:21 +00:00
Daniel Sanders 3ecaf02be9 Fix invalid test generation by utils/ABITest/ABITestGen.py when the same enum is generated more than once.
When generating records/unions, the same enum type may be generated more
than once (with different names). In these cases, the name of the enum
values are not sufficiently unique to prevent multiple declarations. E.g:
  typedef enum T3 { enum0val0 } T3;
  typedef T3 T2[3];
  typedef enum T4 { enum0val0 } T4;
  typedef union T1 { T2 field0; T4 field1; char field2; } T1;

Added a unique suffix to enum values so that multiple identical enum types do
not use the same enum value names.

One example of this bug is produced by:
  ABITestGen.py --no-unsigned --no-vector --no-complex --no-bool \
                --max-args 0 --max-record-depth 1 -o inputs/test.9921.a.c \
                -T inputs/test.9921.b.c -D inputs/test.9921.driver.c \
                --min=9921 --count=1

llvm-svn: 216166
2014-08-21 10:13:49 +00:00
Benjamin Kramer 60509af49a Fix constructor-related typos.
Noticed by Roman Divacky.

llvm-svn: 190311
2013-09-09 14:48:42 +00:00
Daniel Dunbar 32f1b54b69 utils/ABITest: Factor out type naming code slightly.
llvm-svn: 114867
2010-09-27 20:13:24 +00:00
Daniel Dunbar 1998651529 utils/ABITest: Tweak default bit-field types to cover some more interesting cases.
llvm-svn: 114866
2010-09-27 20:13:22 +00:00
Daniel Dunbar 47dd9c2fc5 utils/ABITest: Add a workaround for mismatches due to PR5579.
llvm-svn: 114865
2010-09-27 20:13:19 +00:00
Daniel Dunbar 22ec2c218c utils/ABITest: Add option to skip individual tests by index.
llvm-svn: 114864
2010-09-27 20:13:17 +00:00
Douglas Gregor a71cc15361 Implement promotion for enumeration types.
WHAT!?!

It turns out that Type::isPromotableIntegerType() was not considering
enumeration types to be promotable, so we would never do the
promotion despite having properly computed the promotion type when the
enum was defined. Various operations on values of enum type just
"worked" because we could still compute the integer rank of an enum
type; the oddity, however, is that operations such as "add an enum and
an unsigned" would often have an enum result type (!). The bug
actually showed up as a spurious -Wformat diagnostic
(<rdar://problem/7595366>), but in theory it could cause miscompiles.

In this commit:
  - Enum types with a promotion type of "int" or "unsigned int" are
  promotable.
  - Tweaked the computation of promotable types for enums
  - For all of the ABIs, treat enum types the same way as their
  underlying types (*not* their promotion types) for argument passing
  and return values
  - Extend the ABI tester with support for enumeration types

llvm-svn: 95117
2010-02-02 20:10:50 +00:00
Douglas Gregor efbaf99dca Include <stdlib.h>, so that we're sure to get atoi.
llvm-svn: 95095
2010-02-02 17:49:52 +00:00
Eli Friedman 837f574ee9 Use /usr/bin/env trick to find python. Patch by Krister Walfridsson.
llvm-svn: 75271
2009-07-10 20:15:12 +00:00
Eli Friedman 1cae3df3cf Some minor corrections: don't use offsetof on a bitfield, and cast
printf operands to long to suppress warnings.

llvm-svn: 72404
2009-05-25 21:38:01 +00:00
Daniel Dunbar 793cc3e0c3 ABITest: Improve test driver marginally, to allow running a specific
test index.

llvm-svn: 71295
2009-05-08 23:40:45 +00:00
Daniel Dunbar 811e62c8c1 ABITest: Fix a bug in generating test values for structures w/ no
non-padding fields.

llvm-svn: 71273
2009-05-08 22:48:39 +00:00
Daniel Dunbar 51c4bc320e ABITest: Move default set of test args into common makefile.
Also, tweak default list of bit-fields to try.

llvm-svn: 71246
2009-05-08 20:10:52 +00:00
Daniel Dunbar 766004f179 Add various other bits I use to run ABITest.
llvm-svn: 71201
2009-05-08 00:49:21 +00:00
Daniel Dunbar 5bcbf1ccbd Add to the house of cards that is ABITestGen.
- Support generating structures with bit-fields.

llvm-svn: 71192
2009-05-07 23:19:55 +00:00
Daniel Dunbar b4e80a5b19 ABITestGen: Add v2i16 and v16f32 as default vector types to generate.
llvm-svn: 65810
2009-03-02 06:14:33 +00:00
Daniel Dunbar 3ebd531b2c ABITestGen: Use explicit list of vector types instead of just a list
of sizes. Turns out we don't care very much about vector types that
don't map to the hardware.

llvm-svn: 65263
2009-02-22 04:17:53 +00:00
Daniel Dunbar 79d10a2f43 ABITest: Add some checking of values for return types; useful for
catching internal consistency problems (esp. w/ reference compiler).

llvm-svn: 64847
2009-02-17 23:13:43 +00:00
Daniel Dunbar d0c901c5a6 ABITest: Fix access to array test values.
llvm-svn: 63296
2009-01-29 08:48:06 +00:00
Daniel Dunbar 676fdd81d5 ABITest: Fix test value generation for unions.
llvm-svn: 63286
2009-01-29 07:36:46 +00:00
Daniel Dunbar 6ec8a4d9e3 ABITest: Support --test-layout option for generating
size/alignment/offsetof based tests of types instead of calling
convention tests.

llvm-svn: 63167
2009-01-28 02:01:23 +00:00
Daniel Dunbar 827c763051 ABITestGen: Add generation of vector types.
llvm-svn: 63024
2009-01-26 19:05:20 +00:00
Daniel Dunbar 2e49bf2ceb Add utils/ABITest, my ABI test generation tool.
- Mostly written as an entertaining exercise in enumerating large or
   (countably, naturally) infinite sets. But hey, its useful too!

 - Idea is to number all C-types so that the N-th type can quickly be
   computed, with a good deal of flexibility about what types to
   include, and taking some care so that the (N+1)-th type is
   interestingly different from the N-th type. For example, using the
   default generator, the 1,000,000-th function type is:
--
typedef _Complex int T0;
typedef char T1 __attribute__ ((vector_size (4)));
typedef int T2 __attribute__ ((vector_size (4)));
T2 fn1000000(T0 arg0, signed long long arg1, T1 arg2, T0 arg3);
--
   and the 1,000,001-th type is:
--
typedef _Complex char T0;
typedef _Complex char T2;
typedef struct T1 { T2 field0; T2 field1; T2 field2; } T1;
typedef struct T3 {  } T3;
unsigned short fn1000001(T0 arg0, T1 arg1, T3 arg2);
--

   Computing the 10^1600-th type takes a little less than 1s. :)

llvm-svn: 62253
2009-01-15 04:24:17 +00:00