This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PR target/85401] Add test-cases
- From: coypu at sdf dot org
- To: gcc-patches at gcc dot gnu dot org
- Cc: law at redhat dot com
- Date: Fri, 4 Oct 2019 19:43:33 +0000
- Subject: [PR target/85401] Add test-cases
- References: <20190914151504.GA21805@SDF.ORG> <20190928095200.GA20382@SDF.ORG> <5a279dc6-3707-5a85-d089-02f3c25965a4@redhat.com> <20190930204543.GA1144@SDF.ORG> <63790bcb-4e52-f428-41cb-6160195b4f0f@redhat.com>
On Tue, Oct 01, 2019 at 01:26:16PM -0600, Jeff Law wrote:
> On 9/30/19 2:45 PM, coypu@sdf.org wrote:
> > On Mon, Sep 30, 2019 at 11:46:24AM -0400, Vladimir Makarov wrote:
> >> Yes, the patch is mostly ok. You can commit it into the trunk after
> >> applying changes mentioned below. If you do not have a write access, let me
> >> know I'll commit the patch by myself.
> >
> > I don't have commit access. It would be nice if you committed it :)
> I took care of the nits and committed the patch.
>
>
> >
> >> It would be nice to add a small test too. But it is not obligatory for this
> >> case as the patch is obvious and it might be hard to create a small test to
> >> reproduce the bug.
> >
> > I have the C code that produces this failure. I can creduce it, but I'm
> > not sure there's a relationship between it and the bug.
> > Doing unrelated changes (adding instruction scheduling) to vax also hid it.
> >
> > Is this kind of test still valuable?
> Often they are.
>
> jeff
Here's the two tests I used. It might be too machine-made.
One is in the vax specific directory since it needed -fno-pic.
2019-10-04 Maya Rashish <coypu@sdf.org>
* gcc.c-torture/compile/pr85401-2.c: New test.
* gcc.target/vax/pr85401-1.c: New test.
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr85401-2.c b/gcc/testsuite/gcc.c-torture/compile/pr85401-2.c
new file mode 100644
index 0000000..1d68d0b
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr85401-2.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+int h(void);
+int i(int);
+
+struct a b;
+struct a {
+ unsigned c : 4;
+} d() {
+ int e, f = b.c << 2, g = h();
+ for (; g;)
+ ;
+ if (e == 0)
+ if (f)
+ i(f);
+ return b;
+}
diff --git a/gcc/testsuite/gcc.target/vax/pr85401-1.c b/gcc/testsuite/gcc.target/vax/pr85401-1.c
new file mode 100644
index 0000000..3a06f45
--- /dev/null
+++ b/gcc/testsuite/gcc.target/vax/pr85401-1.c
@@ -0,0 +1,31 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-pic" } */
+
+int f;
+struct ac g;
+void h();
+void j() {}
+struct c {
+ int d;
+} k() {
+ ((struct c *)j)->d ^= f;
+}
+int *l();
+struct ac {
+ unsigned i : 4;
+} m() {
+ int *a, *c;
+ int b = g.i << 2, d, e;
+ ((struct c *)j)->d & 8;
+ a = l();
+ c = a;
+ h();
+ if (c)
+ goto aj;
+ h();
+ d = b;
+ for (; d; d -= e += e)
+ h();
+aj:
+ k();
+}