This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi, The attached patch (tests.april28) fixes the places that prompt Steve's patch (http://gcc.gnu.org/ml/gcc-patches/2005-04/msg02284.html) to issue a warning. Most of the changes are to replace an array-of-aligned-type to an aligned-arrays-of-type. This patch however does not entirely fix the problem discussed in PR20794/PR19893 (and also in http://gcc.gnu.org/ml/gcc/2005-03/msg00483.html) - there are still places where we use "aligned pointers" - pointers to types whose alignment is bigger than their size, but these places do not prompt the warning, so they don't prevent applying Steve's patch. To further clean up the "aligned pointers" problem (beyond avoiding the warning) we'll need to consider the following cases (the problematic tests fall into the following groups): a) tests that use "aligned pointers" which can easily be replaced by aligned-arrays (i.e., pointers are not inherent for the purpose of the test). There was one such test - vect-92.c. This is already handled by the attached patch. b) tests that use "aligned pointers" which can easily be replaced by regular pointers (i.e., the purpose of the test is not to check handling of alignment). These are tests vect-[37,74,75,76,77,78,79,97].c and pr20122.c. Replacing the "aligned pointers" with regular pointers in these tests is not the ideal solution because in some cases this means that these tests are no longer vectorizable on vect_no_align targets, and even for targets that support alignment we'd rather have a minimal test that avoids alignment handling when misalignment issues are irrelevant for the test. However, the only alternative solution is to wait until attributes on array parameters are implemented (as suggested here: http://gcc.gnu.org/ml/gcc/2005-03/msg00803.html). For now, I applied this change only to vect-[37,79,97].c and pr20122.c (included in the attached patch). If this is the preferred approach, I'll change the other tests in this spirit (I'll send a separate patch for that). c) tests that use "aligned pointers" but that cannot be easily replaced with regular-pointers or aligned-arrays because the purpose of the test is to check handling of pointers that are aligned, or that have a compile-time known misalignment. There are actually two sub-groups here: c.1) tests vect[40,42,46,48,52,54,56,58,60].c: the pointers here are also annotated as restricted. For these tests we can use local pointers instead of pointers that are passed as parameters. As an example, see the proposed change to vect-[40,48,54].c in tests.patch2 (attached below). This patch will change the behavior of the test a bit - we will now deal with datarefs whose access-function looks like this: {&b,+,4B} instead of like this: {pb_13,+,4B}. In terms of aliasing an alignment the behavior remains the same, so I guess we can move on with this change. If this approach is accepted, I can send a separate patch for these tests, in the same spirit of tests.patch2. c.2) tests vect[41,43,47,49,53,55,57,59,61].c: these are the same tests as above with one difference - the pointers here are not annotated as restricted, and therefore not vectorized yet (they will be vectorized only when runtime dependence testing is in place). It doesn't make sense to use local pointers here because then aliasing is trivially resolved (it becomes exactly like the c.1 tests above). I don't know what to do with these besides waiting till attributes on array parameters are implemented. We could also just drop these tests since they don't yet get vectorized, but I'd prefer to keep them, since they don't prompt the alignment warning and they'll be useful to test runtime-aliasing functionality. This patch Also contains: - documentation to some of the tests - cleanups of some XPASSes Tested on i686-pc-linux-gnu and powerpc-apple-darwin with and without alignment support. thanks, dorit Changelog: * gcc.dg/vect/vect-35: Use aligned arrays instead of arrays to aligned type * gcc.dg/vect/vect-40: Likewise. * gcc.dg/vect/vect-41: Likewise. * gcc.dg/vect/vect-42: Likewise. * gcc.dg/vect/vect-43: Likewise. * gcc.dg/vect/vect-44: Likewise. * gcc.dg/vect/vect-46: Likewise. * gcc.dg/vect/vect-47: Likewise. * gcc.dg/vect/vect-48: Likewise. * gcc.dg/vect/vect-52: Likewise. * gcc.dg/vect/vect-53: Likewise. * gcc.dg/vect/vect-54: Likewise. * gcc.dg/vect/vect-55: Likewise. * gcc.dg/vect/vect-56: Likewise. * gcc.dg/vect/vect-57: Likewise. * gcc.dg/vect/vect-58: Likewise. * gcc.dg/vect/vect-59: Likewise. * gcc.dg/vect/vect-60: Likewise. * gcc.dg/vect/vect-61: Likewise. * gcc.dg/vect/vect-85: Likewise. * gcc.dg/vect/vect-87: Likewise. * gcc.dg/vect/vect-88: Likewise. * gcc.dg/vect/vect-93.c: Likewise. * gcc.dg/vect/vect-74: Likewise, and also added documentation. * gcc.dg/vect/vect-75: Likewise. * gcc.dg/vect/vect-76: Likewise. * gcc.dg/vect/vect-77: Likewise. * gcc.dg/vect/vect-78: Likewise. * gcc.dg/vect/vect-80: Likewise. * gcc.dg/vect/vect-35: Likewise, and also check that the test wasn't vectorized for the expected reason, rather than checking how alignment was handled. * gcc.dg/vect/vect-97.c: Likewise, and also replace aligned pointers with regular pointers. * gcc.dg/vect/vect-37.c: Likewise. This test may no longer vectorizable on vect_no_align targets. * gcc.dg/vect/vect-79: Likewise. * gcc.dg/vect/pr20122.c: Likewise. * gcc.dg/vect/vect-92.c: Use aligned arrays instead of arrays to aligned type and also instead of aligned pointers. Added documentation. * gcc.dg/vect/vect-8.c: Remove xfail. * gcc.dg/vect/vect-30.c: Remove xfail. * gcc.dg/vect/vect-67.c: Remove xfail. * gcc.dg/vect/vect-ifcvt-1.c: Remove xfail. Patch: (See attached file: tests.april28) (See attached file: tests.patch2)
Attachment:
tests.april28
Description: Binary data
Attachment:
tests.patch2
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |