Commit Graph

35 Commits

Author SHA1 Message Date
Chris Bieneman 749c9c251e Add back the ABITest makefiles
These files are standalone and not integrated with CMake, so we probably want them.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@259667 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-03 17:16:01 +00:00
Chris Bieneman 171280519b Remove autoconf support
Summary:
This patch is provided in preparation for removing autoconf on 1/26. The proposal to remove autoconf on 1/26 was discussed on the llvm-dev thread here: http://lists.llvm.org/pipermail/llvm-dev/2016-January/093875.html

    "This is the way [autoconf] ends
    Not with a bang but a whimper."
    -T.S. Eliot

Reviewers: chandlerc, grosbach, bob.wilson, echristo

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D16472

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258862 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-26 21:30:40 +00:00
Daniel Sanders ef943a962e 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


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@216166 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-21 10:13:49 +00:00
Benjamin Kramer e575359c34 Fix constructor-related typos.
Noticed by Roman Divacky.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190311 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-09 14:48:42 +00:00
Daniel Dunbar 7b1ab13438 utils/ABITest: Factor out type naming code slightly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114867 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-27 20:13:24 +00:00
Daniel Dunbar 3d2fd8d467 utils/ABITest: Tweak default bit-field types to cover some more interesting cases.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114866 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-27 20:13:22 +00:00
Daniel Dunbar 3dbe0b76ef utils/ABITest: Add a workaround for mismatches due to PR5579.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114865 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-27 20:13:19 +00:00
Daniel Dunbar 1ca717b766 utils/ABITest: Add option to skip individual tests by index.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114864 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-27 20:13:17 +00:00
Douglas Gregor aa74a1e49f 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



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95117 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-02 20:10:50 +00:00
Douglas Gregor c6277a0a42 Include <stdlib.h>, so that we're sure to get atoi.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95095 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-02 17:49:52 +00:00
Anders Carlsson 1352590383 Whoops, did not mean to commit this
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79201 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 20:29:59 +00:00
Anders Carlsson d67c4c31a8 Store the delete operator for delete expressions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79200 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16 20:29:29 +00:00
Anders Carlsson 7b3817d9cb Whoops, did not mean to check this in.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77022 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-25 00:26:00 +00:00
Anders Carlsson 4257bc6d5b More work on the constant struct builder. We now try to layout all constant structs but throw away the result.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77021 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-25 00:24:56 +00:00
Eli Friedman 77a1fe945b Use /usr/bin/env trick to find python. Patch by Krister Walfridsson.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75271 91177308-0d34-0410-b5e6-96231b3b80d8
2009-07-10 20:15:12 +00:00
Eli Friedman d9d38c43c3 Minor build system changes to make ABITest work correctly on Linux.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72405 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-25 22:07:09 +00:00
Eli Friedman 98a7170db8 Some minor corrections: don't use offsetof on a bitfield, and cast
printf operands to long to suppress warnings.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72404 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-25 21:38:01 +00:00
Daniel Dunbar 484c7cad9b ABITest: Improve test driver marginally, to allow running a specific
test index.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71295 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-08 23:40:45 +00:00
Daniel Dunbar b80ce0142d ABITest: Move more of the common Makefile bits into the common
Makefile.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71274 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-08 22:49:52 +00:00
Daniel Dunbar 48df17b8bf 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
2009-05-08 22:48:39 +00:00
Daniel Dunbar 238a318240 ABITest: Move default set of test args into common makefile.
Also, tweak default list of bit-fields to try.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71246 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-08 20:10:52 +00:00
Daniel Dunbar 6d52ca0d5c Add various other bits I use to run ABITest.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71201 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-08 00:49:21 +00:00
Daniel Dunbar 122ed24b4f Add to the house of cards that is ABITestGen.
- Support generating structures with bit-fields.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71192 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-07 23:19:55 +00:00
Daniel Dunbar ec1abb9bd7 ABITestGen: Add v2i16 and v16f32 as default vector types to generate.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65810 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-02 06:14:33 +00:00
Daniel Dunbar 0f1730d220 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.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65263 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-22 04:17:53 +00:00
Daniel Dunbar 9dd60b4526 ABITest: Add some checking of values for return types; useful for
catching internal consistency problems (esp. w/ reference compiler).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64847 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-17 23:13:43 +00:00
Daniel Dunbar 05104aa7b6 Note some more things to integrate into ABITest
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64846 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-17 23:12:22 +00:00
Daniel Dunbar 59ebd28462 ABITest: Makefile tweaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63330 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-29 20:36:50 +00:00
Daniel Dunbar e61e95fdcd ABITest: Fix access to array test values.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63296 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-29 08:48:06 +00:00
Daniel Dunbar 900ed55727 ABITest: Fix test value generation for unions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63286 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-29 07:36:46 +00:00
Daniel Dunbar 107dc76180 Use xcc (instead of clang directly).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63279 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-29 06:20:19 +00:00
Daniel Dunbar 5ce61575ad ABITest: Support --test-layout option for generating
size/alignment/offsetof based tests of types instead of calling
convention tests.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63167 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-28 02:01:23 +00:00
Daniel Dunbar 550faa3a6b ABITestGen: Add generation of vector types.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63024 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-26 19:05:20 +00:00
Daniel Dunbar 6da02c6ad8 Add simple make based harness for running ABI tests.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62916 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-24 08:43:22 +00:00
Daniel Dunbar a83fb8647b 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. :)


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62253 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-15 04:24:17 +00:00