[Bug target/78439] [7 Regression] error: insn does not satisfy its constraints (arm-linux-gnueabihf)

2017-02-02 Thread wilco at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439

wilco at gcc dot gnu.org changed:

   What|Removed |Added

 CC||wilco at gcc dot gnu.org

--- Comment #13 from wilco at gcc dot gnu.org ---
(In reply to ktkachov from comment #11)
> Fixed.

Shouldn't this also be backported to be sure it cannot trigger in older GCCs?

[Bug target/78439] [7 Regression] error: insn does not satisfy its constraints (arm-linux-gnueabihf)

2016-11-22 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

 CC||andrewm.roberts at sky dot com

--- Comment #12 from ktkachov at gcc dot gnu.org ---
*** Bug 78471 has been marked as a duplicate of this bug. ***

[Bug target/78439] [7 Regression] error: insn does not satisfy its constraints (arm-linux-gnueabihf)

2016-11-22 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #11 from ktkachov at gcc dot gnu.org ---
Fixed.

[Bug target/78439] [7 Regression] error: insn does not satisfy its constraints (arm-linux-gnueabihf)

2016-11-22 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439

--- Comment #10 from ktkachov at gcc dot gnu.org ---
Author: ktkachov
Date: Tue Nov 22 12:12:05 2016
New Revision: 242695

URL: https://gcc.gnu.org/viewcvs?rev=242695=gcc=rev
Log:
[ARM] PR target/78439: Update movdi constraints for Cortex-A8 tuning to handle
LDRD/STRD

PR target/78439
* config/arm/vfp.md (*movdi_vfp_cortexa8): Use 'q' constraints for the
register operand in alternatives 4,5,6.

* gcc.c-torture/compile/pr78439.c: New test.


Added:
trunk/gcc/testsuite/gcc.c-torture/compile/pr78439.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/arm/vfp.md
trunk/gcc/testsuite/ChangeLog

[Bug target/78439] [7 Regression] error: insn does not satisfy its constraints (arm-linux-gnueabihf)

2016-11-22 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439

--- Comment #9 from ktkachov at gcc dot gnu.org ---
(In reply to Bernd Edlinger from comment #8)
> Does something like that work?
> 
> --- gcc/config/arm/vfp.md.orig2016-11-10 11:38:03.0 +0100
> +++ gcc/config/arm/vfp.md 2016-11-22 10:28:33.724941776 +0100
> @@ -355,8 +355,8 @@
>  )
>  
>  (define_insn "*movdi_vfp_cortexa8"
> -  [(set (match_operand:DI 0 "nonimmediate_di_operand"
> "=r,r,r,r,r,r,m,w,!r,w,w, Uv")
> -   (match_operand:DI 1 "di_operand" 
> "r,rDa,Db,Dc,mi,mi,r,r,w,w,Uvi,w"))]
> +  [(set (match_operand:DI 0 "nonimmediate_di_operand"
> "=r,r,r,r,q,q,m,w,!r,w,w, Uv")
> +   (match_operand:DI 1 "di_operand" 
> "r,rDa,Db,Dc,mi,mi,q,r,w,w,Uvi,w"))]
>"TARGET_32BIT && TARGET_HARD_FLOAT && arm_tune == TARGET_CPU_cortexa8
>  && (   register_operand (operands[0], DImode)
>  || register_operand (operands[1], DImode))

Yes, that is what I'm testing.
I'll send it to gcc-patches soon

[Bug target/78439] [7 Regression] error: insn does not satisfy its constraints (arm-linux-gnueabihf)

2016-11-22 Thread bernd.edlinger at hotmail dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439

Bernd Edlinger  changed:

   What|Removed |Added

 CC||bernd.edlinger at hotmail dot 
de

--- Comment #8 from Bernd Edlinger  ---
Does something like that work?

--- gcc/config/arm/vfp.md.orig  2016-11-10 11:38:03.0 +0100
+++ gcc/config/arm/vfp.md   2016-11-22 10:28:33.724941776 +0100
@@ -355,8 +355,8 @@
 )

 (define_insn "*movdi_vfp_cortexa8"
-  [(set (match_operand:DI 0 "nonimmediate_di_operand"
"=r,r,r,r,r,r,m,w,!r,w,w, Uv")
-   (match_operand:DI 1 "di_operand" 
"r,rDa,Db,Dc,mi,mi,r,r,w,w,Uvi,w"))]
+  [(set (match_operand:DI 0 "nonimmediate_di_operand"
"=r,r,r,r,q,q,m,w,!r,w,w, Uv")
+   (match_operand:DI 1 "di_operand" 
"r,rDa,Db,Dc,mi,mi,q,r,w,w,Uvi,w"))]
   "TARGET_32BIT && TARGET_HARD_FLOAT && arm_tune == TARGET_CPU_cortexa8
 && (   register_operand (operands[0], DImode)
 || register_operand (operands[1], DImode))

[Bug target/78439] [7 Regression] error: insn does not satisfy its constraints (arm-linux-gnueabihf)

2016-11-22 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439

--- Comment #7 from ktkachov at gcc dot gnu.org ---
*** Bug 78453 has been marked as a duplicate of this bug. ***

[Bug target/78439] [7 Regression] error: insn does not satisfy its constraints (arm-linux-gnueabihf)

2016-11-21 Thread amker at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439

amker at gcc dot gnu.org changed:

   What|Removed |Added

 CC||amker at gcc dot gnu.org

--- Comment #6 from amker at gcc dot gnu.org ---
(In reply to ktkachov from comment #3)
> The ICE happens due to r242590.
> Need to figure out if it is the cause of the bug or just exposes it

It looks like the same bug as PR78453, but for that one, r242549 is the first
guilty revision.

[Bug target/78439] [7 Regression] error: insn does not satisfy its constraints (arm-linux-gnueabihf)

2016-11-21 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439

--- Comment #5 from ktkachov at gcc dot gnu.org ---
Testing a patch.

[Bug target/78439] [7 Regression] error: insn does not satisfy its constraints (arm-linux-gnueabihf)

2016-11-21 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |ktkachov at gcc dot 
gnu.org

--- Comment #4 from ktkachov at gcc dot gnu.org ---
Hmm, this looks like a bug exposed by that patch.
The peephole2 pass does something weird.
We have:
(insn 13 33 40 2 (set (mem/c:SI (plus:SI (reg/f:SI 11 fp)
(const_int -28 [0xffe4])) [3 d.num_comps+0 S4 A64])
(reg:SI 12 ip [orig:117 _20 ] [117])) "cp-demangle.c":32 632
{*arm_movsi_vfp}
 (expr_list:REG_DEAD (reg:SI 12 ip [orig:117 _20 ] [117])
(nil)))
(insn 40 13 39 2 (set (mem/f/c:SI (plus:SI (reg/f:SI 11 fp)
(const_int -24 [0xffe8])) [2 d.subs+0 S4 A32])
(reg/f:SI 13 sp)) "cp-demangle.c":51 632 {*arm_movsi_vfp}
 (nil))

being turned into:
(insn 68 33 39 2 (set (mem/c:DI (plus:SI (reg/f:SI 11 fp)
(const_int -28 [0xffe4])) [3 d.num_comps+0 S8 A64])
(reg:DI 12 ip)) "cp-demangle.c":51 -1
 (nil))

which is not recognisable.
Something dodgy with the store-multiple peepholes I think

[Bug target/78439] [7 Regression] error: insn does not satisfy its constraints (arm-linux-gnueabihf)

2016-11-21 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439

--- Comment #3 from ktkachov at gcc dot gnu.org ---
The ICE happens due to r242590.
Need to figure out if it is the cause of the bug or just exposes it

[Bug target/78439] [7 Regression] error: insn does not satisfy its constraints (arm-linux-gnueabihf)

2016-11-21 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439

--- Comment #2 from ktkachov at gcc dot gnu.org ---
Reduced testcase:

enum demangle_component_type
{
  DEMANGLE_COMPONENT_THROW_SPEC
};
struct demangle_component
{
  enum demangle_component_type type;
  struct
  {
struct
{
  struct demangle_component *left;
  struct demangle_component *right;
};
  };
};
int a, b;

struct d_info
{
  struct demangle_component *comps;
  int next_comp;
  int num_comps;
  struct demangle_component *subs;
  int num_subs;
  int is_conversion;
};

void
fn1 (int p1, struct d_info *p2)
{
  p2->num_comps = 2 * p1;
  p2->next_comp = p2->num_subs = p1;
  p2->is_conversion = 0;
}

int fn3 (int *);
void fn4 (struct d_info *, int);

void
fn2 ()
{
  int c;
  struct d_info d;
  b = 0;
  c = fn3 ();
  fn1 (c, );
  struct demangle_component e[d.num_comps];
  struct demangle_component *f[d.num_subs];
  d.comps = e;
  d.subs = f;
  fn4 (, 1);
}

Command line to reproduce:
-O2 -march=armv7-a  -mfpu=vfpv3-d16 -mfloat-abi=hard -mtune=cortex-a8

[Bug target/78439] [7 Regression] error: insn does not satisfy its constraints (arm-linux-gnueabihf)

2016-11-21 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2016-11-21
 CC||ktkachov at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from ktkachov at gcc dot gnu.org ---
Confirmed.
Will try to reduce

[Bug target/78439] [7 Regression] error: insn does not satisfy its constraints (arm-linux-gnueabihf)

2016-11-21 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78439

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |7.0