[Bug rtl-optimization/53908] [4.6/4.7 Regression] csa removes needed memory load

2012-07-13 Thread hp at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53908

--- Comment #10 from Hans-Peter Nilsson hp at gcc dot gnu.org 2012-07-13 
06:53:30 UTC ---
Created attachment 27783
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27783
patch from Richard Sandiford

Updated patch, from http://gcc.gnu.org/ml/gcc-patches/2012-07/msg00463.html
(which wasn't in patch form).


[Bug debug/53135] internal compiler error: in value_format, at dwarf2out.c:8010

2012-07-13 Thread dushistov at mail dot ru
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53135

Evgeniy Dushistov dushistov at mail dot ru changed:

   What|Removed |Added

 CC||dushistov at mail dot ru

--- Comment #2 from Evgeniy Dushistov dushistov at mail dot ru 2012-07-13 
07:29:22 UTC ---
I think that it should be marked as regression.
Because of qt 4.6.3 give such error message with gcc 4.7.1,
but with gcc 4.2 all works fine.

Can anybody with suitable permissions mark this bug as regression?


[Bug debug/53135] [4.7/4.8 Regression] internal compiler error: in value_format, at dwarf2out.c:8010

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53135

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

  Known to work||4.2.4
   Target Milestone|--- |4.7.2
Summary|internal compiler error: in |[4.7/4.8 Regression]
   |value_format, at|internal compiler error: in
   |dwarf2out.c:8010|value_format, at
   ||dwarf2out.c:8010


[Bug other/51678] 'make pdf' is broken in libiberty

2012-07-13 Thread sch...@linux-m68k.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51678

--- Comment #4 from Andreas Schwab sch...@linux-m68k.org 2012-07-13 07:51:14 
UTC ---
http://permalink.gmane.org/gmane.comp.gcc.patches/266134


[Bug c++/53531] ,,,, accepted as template arguments for variadic template

2012-07-13 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53531

--- Comment #5 from Jonathan Wakely redi at gcc dot gnu.org 2012-07-13 
07:53:21 UTC ---
Author: redi
Date: Fri Jul 13 07:53:12 2012
New Revision: 189452

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189452
Log:
PR c++/53531
* testsuite/g++.dg/cpp0x/variadic135.C: New.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/variadic135.C
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug c++/53531] ,,,, accepted as template arguments for variadic template

2012-07-13 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53531

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.8.0
  Known to fail||4.6.3, 4.7.1

--- Comment #6 from Jonathan Wakely redi at gcc dot gnu.org 2012-07-13 
07:54:37 UTC ---
Fixed on trunk


[Bug rtl-optimization/53176] [4.8 Regression] gcc.dg/lower-subreg-1.c FAILs

2012-07-13 Thread hp at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53176

Hans-Peter Nilsson hp at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
URL|http://gcc.gnu.org/ml/gcc-p |http://gcc.gnu.org/ml/gcc-p
   |atches/2012-05/msg00609.htm |atches/2012-07/msg00280.htm
   |l   |l
 Resolution||FIXED

--- Comment #26 from Hans-Peter Nilsson hp at gcc dot gnu.org 2012-07-13 
08:04:39 UTC ---
fixed in default costs too now.


[Bug regression/53203] [4.8 Regression]: gcc.dg/setjmp-1.c

2012-07-13 Thread hp at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53203

Hans-Peter Nilsson hp at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |SUSPENDED
   Last reconfirmed||2012-07-13
 Depends on||53176
 Ever Confirmed|0   |1

--- Comment #1 from Hans-Peter Nilsson hp at gcc dot gnu.org 2012-07-13 
08:13:14 UTC ---
This seems connected to PR53176 but the reasons aren't obvious.  Now that
PR53176 is fixed, this went (back) into hiding; the test now passes.  I think
there's a deeper issue so I'm just suspending this PR, not resolving as fixed.


[Bug go/53879] [4.6] new glibc: sysinfo.go:5976:68: error: expected ‘{’

2012-07-13 Thread jan.kratochvil at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53879

Jan Kratochvil jan.kratochvil at redhat dot com changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
Version|4.8.0   |4.6.4
 Resolution|FIXED   |
Summary|new glibc:  |[4.6] new glibc:
   |sysinfo.go:5976:68: error:  |sysinfo.go:5976:68: error:
   |expected ‘{’|expected ‘{’

--- Comment #2 from Jan Kratochvil jan.kratochvil at redhat dot com 
2012-07-13 08:20:43 UTC ---
It still seems to affect the 4.6 branch:

sysinfo.go:3681:63: error: expected '{'
sysinfo.go:3681:63: error: expected ';' or '}' or newline
sysinfo.go:3681:80: error: expected field name


[Bug tree-optimization/53947] New: [meta-bug] vectorizer missed-optimizations

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947

 Bug #: 53947
   Summary: [meta-bug] vectorizer missed-optimizations
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Keywords: meta-bug, missed-optimization
  Severity: enhancement
  Priority: P3
 Component: tree-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: rgue...@gcc.gnu.org


[Bug tree-optimization/53947] [meta-bug] vectorizer missed-optimizations

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-07-13
 Ever Confirmed|0   |1

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:29:36 UTC ---
Confirmed.


[Bug middle-end/49969] not vectorized: data ref analysis failed

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49969

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:34:49 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/22184] tree vectorizer depends on context

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22184

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:36:08 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug middle-end/41115] Tree-vectorizer: VecCost tuning for X2: Without vectorization 30% faster

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41115

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:37:32 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/43425] gcc should vectorize this loop by substitution

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43425

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:38:21 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/34378] [autovectorize]: missed optimization

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34378

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:39:02 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/51492] vectorizer does not support saturated arithmetic patterns

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51492

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:39:43 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/18439] vectorizer failed for vector normalization

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18439

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #5 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:40:23 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/43434] Missed vectorization: not vectorized: data ref analysis: pointer incremented by a parameter

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43434

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #6 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:41:40 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug target/48510] Does not vectorize loops involving casts from floating point to unsigned integer types

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48510

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:42:23 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/18438] vectorizer failed for vector matrix multiplication

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18438

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #7 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:43:04 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug middle-end/37150] vectorizer misses some loops

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37150

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #12 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:43:54 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/37021] Fortran Complex reduction / multiplication not vectorized

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37021

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #13 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:45:12 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/46012] 256bit vectorizer failed on int-double

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46012

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:47:11 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/52252] An opportunity for x86 gcc vectorizer (gain up to 3 times)

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52252

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:48:18 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/33711] Missed optimization: reduction by subtraction (vectorizer)

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33711

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:49:08 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/18437] vectorizer failed for matrix multiplication

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18437

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #8 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:49:47 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug debug/53948] New: [4.8 Regression] Assignment line missing for -O0 -g

2012-07-13 Thread jan.kratochvil at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53948

 Bug #: 53948
   Summary: [4.8 Regression] Assignment line missing for -O0 -g
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: debug
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: jan.kratoch...@redhat.com
CC: aol...@gcc.gnu.org
Target: x86_64-unknown-linux-gnu


Nothing serious but it broke gdb.base/store.exp and I believe -O0 -g should not
optimize out source statements.

int f (register int a, register int b) {
  register int x = b, y = a;
  return x + y; }
gcc -g

PASS: gcc (GCC) 4.7.2 20120713 (prerelease)
   7:89 f8mov%edi,%eax
   9:89 f2mov%esi,%edx
  register int x = b, y = a;
   b:41 89 d4 mov%edx,%r12d
   e:89 c3mov%eax,%ebx
  return x + y; }
  10:41 8d 04 1c  lea(%r12,%rbx,1),%eax

FAIL: gcc (GCC) 4.8.0 20120713 (experimental)
   7:89 fbmov%edi,%ebx
   9:41 89 f4 mov%esi,%r12d
  register int x = b, y = a;
  return x + y; }
   c:41 8d 04 1c  lea(%r12,%rbx,1),%eax

GDB no longer stops on the 'register int x = b, y = a;' line during 'step'.
.debug_info is correct in both cases.

I can update the GDB testsuite but still I believe 'int var = val;' source line
should have its instruction during -O0 -g, even if it is just a 'nop'.


[Bug tree-optimization/39300] vectorizer confused by predictive commoning and PRE

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39300

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #9 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:50:39 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/52056] Vectorizer cost model is imprecise

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52056

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:52:06 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug rtl-optimization/53908] [4.6/4.7 Regression] csa removes needed memory load

2012-07-13 Thread hp at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53908

--- Comment #11 from Hans-Peter Nilsson hp at gcc dot gnu.org 2012-07-13 
08:53:28 UTC ---
Author: hp
Date: Fri Jul 13 08:53:24 2012
New Revision: 189454

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189454
Log:
PR rtl-optimization/53908
* df-problems.c (can_move_insns_across): When doing
memory-reference book-keeping, handle call insns.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/df-problems.c


[Bug tree-optimization/18557] Inefficient code generated by -ftree-vectorize on Alpha

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18557

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #12 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:53:21 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/21998] (cond ? result1 : result2) is vectorized, where equivalent if-syntax isn't (store)

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21998

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:54:14 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug middle-end/29533] Ada fails to vectorize even trivial loops

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29533

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:55:23 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/38011] vectorizer ignores alignment, useless versioning

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38011

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:56:00 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/43428] vectorizer should invoke loop distribution to partially vectorize this loop

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43428

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:56:37 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/26128] Trivial operation not vectorized on char/short

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26128

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #5 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:57:17 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug tree-optimization/32375] not vectorized: can't determine dependence (array sections)

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32375

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #7 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:58:32 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug rtl-optimization/53908] [4.6/4.7 Regression] csa removes needed memory load

2012-07-13 Thread hp at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53908

--- Comment #12 from Hans-Peter Nilsson hp at gcc dot gnu.org 2012-07-13 
08:58:52 UTC ---
Author: hp
Date: Fri Jul 13 08:58:46 2012
New Revision: 189455

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189455
Log:
PR rtl-optimization/53908
* gcc.dg/torture/pr53908.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/torture/pr53908.c
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug tree-optimization/51848] GCC is not able to vectorize when a constant value is also added to the sum of array expression inside a loop.

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51848

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Blocks||53947

--- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
08:59:26 UTC ---
Link to vectorizer missed-optimization meta-bug.


[Bug target/53949] New: [SH] Add support for mac.w / mac.l instructions

2012-07-13 Thread olegendo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53949

 Bug #: 53949
   Summary: [SH] Add support for mac.w / mac.l instructions
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: olege...@gcc.gnu.org
CC: ch...@gcc.gnu.org
Target: sh*-*-*


So far, GCC does not utilize the integer multiply-add instructions.
On SH1 only the mac.w instruction is supported.
On SH2 and above the mac.w and mac.l instructions are available.

Carry over from PR 39423 comment #20

 On a related thread, for further work, I'm thinking on adding support for the
 MAC instruction, now that was have the multiply and add. But this requires
 exposing the MACLH registers to reload. Had anyone had a thought on this ? I'd
 like to give this a try pretty soon.


[Bug libstdc++/53657] [4.7/4.8 Regression] [C++11] pair(pair) move constructor is non-trivial

2012-07-13 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53657

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #17 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org 
2012-07-13 09:00:05 UTC ---
Author: paolo
Date: Fri Jul 13 08:59:58 2012
New Revision: 189456

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189456
Log:
2012-07-13  Paolo Carlini  paolo.carl...@oracle.com

PR libstdc++/53657
* include/bits/stl_pair.h (pair::pair(pair)): Declare defaulted,
per C++11.
* include/bits/stl_map.h (map::insert(_Pair), map::insert
(const_iterator, _Pair)): Constrain with std::is_constructible,
per LWG2005.
* include/bits/stl_multimap.h (multimap::insert(_Pair),
multimap::insert(const_iterator, _Pair)): Likewise.
* include/bits/hashtable_policy.h (_Insert::insert(_Pair),
_Insert::insert(const_iterator, _Pair)): Likewise.
* include/debug/unordered_map: Adjust.
* include/debug/map.h: Likewise.
* include/debug/multimap.h: Likewise.
* include/profile/unordered_map: Likewise.
* include/profile/map.h: Likewise.
* include/profile/multimap.h: Likewise.


Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/hashtable_policy.h
trunk/libstdc++-v3/include/bits/stl_map.h
trunk/libstdc++-v3/include/bits/stl_multimap.h
trunk/libstdc++-v3/include/bits/stl_pair.h
trunk/libstdc++-v3/include/debug/map.h
trunk/libstdc++-v3/include/debug/multimap.h
trunk/libstdc++-v3/include/debug/unordered_map
trunk/libstdc++-v3/include/profile/map.h
trunk/libstdc++-v3/include/profile/multimap.h
trunk/libstdc++-v3/include/profile/unordered_map

--- Comment #18 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org 
2012-07-13 09:00:24 UTC ---
Author: paolo
Date: Fri Jul 13 09:00:18 2012
New Revision: 189457

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189457
Log:
2012-07-13  Paolo Carlini  paolo.carl...@oracle.com

PR libstdc++/53657
* include/bits/stl_pair.h (pair::pair(pair)): Declare defaulted,
per C++11.
* include/bits/stl_map.h (map::insert(_Pair), map::insert
(const_iterator, _Pair)): Constrain with std::is_constructible,
per LWG2005.
* include/bits/stl_multimap.h (multimap::insert(_Pair),
multimap::insert(const_iterator, _Pair)): Likewise.
* include/bits/hashtable.h (_Hashtable::insert(_Pair),
_Hashtable::insert(const_iterator, _Pair)): Likewise.
* include/debug/unordered_map: Adjust.
* include/debug/map.h: Likewise.
* include/debug/multimap.h: Likewise.
* include/profile/unordered_map: Likewise.
* include/profile/map.h: Likewise.
* include/profile/multimap.h: Likewise.


Modified:
branches/gcc-4_7-branch/libstdc++-v3/ChangeLog
branches/gcc-4_7-branch/libstdc++-v3/include/bits/hashtable.h
branches/gcc-4_7-branch/libstdc++-v3/include/bits/stl_map.h
branches/gcc-4_7-branch/libstdc++-v3/include/bits/stl_multimap.h
branches/gcc-4_7-branch/libstdc++-v3/include/bits/stl_pair.h
branches/gcc-4_7-branch/libstdc++-v3/include/debug/map.h
branches/gcc-4_7-branch/libstdc++-v3/include/debug/multimap.h
branches/gcc-4_7-branch/libstdc++-v3/include/debug/unordered_map
branches/gcc-4_7-branch/libstdc++-v3/include/profile/map.h
branches/gcc-4_7-branch/libstdc++-v3/include/profile/multimap.h
branches/gcc-4_7-branch/libstdc++-v3/include/profile/unordered_map

--- Comment #19 from Paolo Carlini paolo.carlini at oracle dot com 2012-07-13 
09:04:33 UTC ---
Fixed mainline and 4.7.2.


[Bug debug/53948] [4.8 Regression] Assignment line missing for -O0 -g

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53948

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.8.0


[Bug middle-end/29533] Ada fails to vectorize even trivial loops

2012-07-13 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29533

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||steven at gcc dot gnu.org
Version|4.2.0   |4.6.0
 Resolution||FIXED

--- Comment #3 from Steven Bosscher steven at gcc dot gnu.org 2012-07-13 
09:17:05 UTC ---
$ cat compare_lang.ads
package compare_lang is

  type the_range is range 0 .. 100;
  type My_Array is array (the_range) of Float;

  a, b, c : my_array;

  procedure do_compare;

end compare_lang;

$ cat compare_lang.adb
package body compare_lang is

  procedure do_compare is
  begin
for JJJ in the_range loop
  a(jjj) := b(jjj) * c(jjj);
end loop;
  end do_compare;

end compare_lang;

$ ./xgcc -B. -S -m32 -O3 -gnatp -march=pentium4 -mfpmath=sse -msse3 \
-ftree-vectorize -ftree-vectorizer-verbose=5 compare_lang.adb

Analyzing loop at compare_lang.adb:5

5: vect_model_load_cost: aligned.
5: vect_get_data_access_cost: inside_cost = 1, outside_cost = 0.
5: vect_model_load_cost: aligned.
5: vect_get_data_access_cost: inside_cost = 2, outside_cost = 0.
5: vect_model_store_cost: aligned.
5: vect_get_data_access_cost: inside_cost = 3, outside_cost = 0.
5: vect_model_load_cost: aligned.
5: vect_model_load_cost: inside_cost = 1, outside_cost = 0 .
5: vect_model_load_cost: aligned.
5: vect_model_load_cost: inside_cost = 1, outside_cost = 0 .
5: vect_model_simple_cost: inside_cost = 1, outside_cost = 0 .
5: vect_model_store_cost: aligned.
5: vect_model_store_cost: inside_cost = 1, outside_cost = 0 .
5: Cost model analysis: 
  Vector inside of loop cost: 4
  Vector outside of loop cost: 4
  Scalar iteration cost: 4
  Scalar outside cost: 0
  prologue iterations: 0
  epilogue iterations: 1
  Calculated minimum iters for profitability: 2

5:   Profitability threshold = 3


Vectorizing loop at compare_lang.adb:5

5: LOOP VECTORIZED.
compare_lang.adb:3: note: vectorized 1 loops in function.
$ cat compare_lang.s 
.filecompare_lang.adb
.text
.globlcompare_lang__Tmy_arrayBIP
.typecompare_lang__Tmy_arrayBIP, @function
compare_lang__Tmy_arrayBIP:
.LFB2:
ret
.LFE2:
.sizecompare_lang__Tmy_arrayBIP, .-compare_lang__Tmy_arrayBIP
.globlcompare_lang__do_compare
.typecompare_lang__do_compare, @function
compare_lang__do_compare:
.LFB3:
xorl%eax, %eax
pxor%xmm3, %xmm3
.L4:
movaps%xmm3, %xmm0
movlpscompare_lang__b(,%eax,4), %xmm0
movhpscompare_lang__b+8(,%eax,4), %xmm0
movaps%xmm3, %xmm1
movlpscompare_lang__c(,%eax,4), %xmm1
movhpscompare_lang__c+8(,%eax,4), %xmm1
movsscompare_lang__c(%eax), %xmm2
mulps%xmm1, %xmm0
mulsscompare_lang__b(%eax), %xmm2
movlps%xmm0, compare_lang__a(,%eax,4)
movhps%xmm0, compare_lang__a+8(,%eax,4)
addl$4, %eax
cmpl$100, %eax
jne.L4
movsscompare_lang__b+400, %xmm0
mulsscompare_lang__c+400, %xmm0
movss%xmm0, compare_lang__a+400
ret
.LFE3:
.sizecompare_lang__do_compare, .-compare_lang__do_compare
.globlcompare_lang__c
.bss
.align 32
.typecompare_lang__c, @object
.sizecompare_lang__c, 404
compare_lang__c:
.zero404
.globlcompare_lang__b
.align 32
.typecompare_lang__b, @object
.sizecompare_lang__b, 404
compare_lang__b:
.zero404
.globlcompare_lang__a
.align 32
.typecompare_lang__a, @object
.sizecompare_lang__a, 404
compare_lang__a:
.zero404
.globlcompare_lang_E
.data
.align 2
.typecompare_lang_E, @object
.sizecompare_lang_E, 2
compare_lang_E:
.zero2
.section.eh_frame,a,@progbits
.Lframe1:
.long.LECIE1-.LSCIE1
.LSCIE1:
.long0
.byte0x3
.string
.uleb128 0x1
.sleb128 -4
.uleb128 0x8
.byte0xc
.uleb128 0x4
.uleb128 0x4
.byte0x88
.uleb128 0x1
.align 4
.LECIE1:
.LSFDE1:
.long.LEFDE1-.LASFDE1
.LASFDE1:
.long.LASFDE1-.Lframe1
.long.LFB2
.long.LFE2-.LFB2
.align 4
.LEFDE1:
.LSFDE3:
.long.LEFDE3-.LASFDE3
.LASFDE3:
.long.LASFDE3-.Lframe1
.long.LFB3
.long.LFE3-.LFB3
.align 4
.LEFDE3:
.identGCC: (GNU) 4.8.0 20120711 (experimental) [trunk revision
189427]
.section.note.GNU-stack,,@progbits




Likewise on power7 with GCC: (GNU) 4.6.3 20120306 (Red Hat 4.6.3-2):
.file   compare_lang.adb
.section.toc,aw
.section.text
.align 2
.p2align 4,,15
.globl compare_lang__Tmy_arrayBIP
.section.opd,aw
.align 3
compare_lang__Tmy_arrayBIP:
.quad 

[Bug target/39423] [4.6/4.7/4.8 Regression] [SH] performance regression: lost mov @(disp,Rn)

2012-07-13 Thread olegendo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39423

--- Comment #21 from Oleg Endo olegendo at gcc dot gnu.org 2012-07-13 
09:36:36 UTC ---
(In reply to comment #20)
 I like your mem,plus,plus combine that look better than my folding. just there
 are 2 little details that I tried while playing with it: there was a
 lost of generality with the hardcoding of the shift constant,

Yeah, sure.  The hardcoded '4' was just to see if/how it could work at all.

 and I'm not sure
 if there was a risk of clobbering a live operands[1]. For those reasons I
 modified it a bit as followed. 
 
 (define_insn_and_split *movsi_disp
   [(set (match_operand:SI 0 arith_reg_dest =r)
 (mem:SI (plus:SI
   (plus:SI (mult:SI (match_operand:SI 1 arith_reg_operand r)
 (match_operand:SI 2 const_int_operand i))
(match_operand:SI 3 arith_reg_operand K06))
 (match_operand:SI 4 const_int_operand i]
   TARGET_SH1  satisfies_constraint_K06 (operands[4])  exact_log2 (INTVAL
 (operands[2]))  0
 {
   gcc_unreachable ();
   return #;
 }
1
   [(set (match_dup 1) (ashift:SI (match_dup 1) (match_dup 2)))
(set (match_dup 1) (plus:SI (match_dup 1) (match_dup 3)))
(set (match_dup 0) (mem:SI (plus:SI (match_dup 1) (match_dup 4]
 {
 int n = exact_log2 (INTVAL (operands[2]));
 rtx res = gen_reg_rtx (SImode);
 emit_move_insn (res, operands[1]);
 
 operands[1] = res;
 operands[2] = GEN_INT (n);
 }
 )
 

Uhm, I think it would be enough to do the following in the split preparation...

(define_insn_and_split *movsi_disp
  [(set (match_operand:SI 0 arith_reg_dest =r)
(mem:SI (plus:SI
  (plus:SI (mult:SI (match_operand:SI 1 arith_reg_operand r)
(match_operand:SI 2 const_int_operand i))
   (match_operand:SI 3 arith_reg_operand K06))
(match_operand:SI 4 const_int_operand i]
  TARGET_SH1  satisfies_constraint_K06 (operands[4])  exact_log2 (INTVAL
(operands[2]))  0
{
  gcc_unreachable ();
  return #;
}
   can_create_pseudo_p ()
  [(set (match_dup 5) (ashift:SI (match_dup 1) (match_dup 2)))
   (set (match_dup 6) (plus:SI (match_dup 5) (match_dup 3)))
   (set (match_dup 0) (mem:SI (plus:SI (match_dup 6) (match_dup 4]
{
operands[5] = gen_reg_rtx (SImode);
operands[6] = gen_reg_rtx (SImode);
operands[2] = GEN_INT (exact_log2 (INTVAL (operands[2])));
})


 (define_insn ashlsi3_k
   [(set (match_operand:SI 0 arith_reg_dest =r,r,r)
 (ashift:SI (match_operand:SI 1 arith_reg_operand 0,0,0)
(match_operand:SI 2 const_int_operand M,P27,r)))]
   TARGET_SH1
   @
 add%0,%0
 shll%O2%0
 shld%2,%0
   [(set_attr type arith)])
 

The shld insn is only available on SH3 and above or SH2A.
Allowing arbitrary shifts definitely makes sense here, but then maybe 
we should use the existing shift-expansion, although it sometimes
causes problems (like it ends up generating functions calls for shll8 on
SH2..).
Another option might be to do these combine patterns on  SH3 only 
when the resulting shift costs do not pass a certain threshold.

 Using those changes, a snipet like 
 
 int
 foo4 (long long tab[], int index)
 {
   return (int)tab [index+4];
 }
 
 not compiles as:
 
mov #3,r1
 shldr1,r5
 add r4,r5
 rts
 mov.l   @(32,r5),r0
 

If I recall correctly, a sequence such as mov #3,r1; shld r1,r5 will be
slower
than shll r5; shll2 r5 due to pipelining issues.  But that's another story.


 2)plus_mulsi
 
 I see some interactions with the movsi_disp pattern, due to different ordering
 on the matching in the combiner. I'll need to play more this them activated
 together.
 
 So I think you can go ahead with your combiner movsi_disp pattern and propose
 to Kaz when ready to close this defect. Feel free to take or not my
 suggestions.
 
 I'll then go with my plus_mulsi combiner in a second time, making clear that
 it's provide additional optimization opportunities without mixing the impacts.
 

OK, I'll brush up the 'movsi_disp' stuff a little, taking our input into
account.
It might take a couple of days though.

 On a related thread, for further work, I'm thinking on adding support for the
 MAC instruction, now that was have the multiply and add. But this requires
 exposing the MACLH registers to reload. Had anyone had a thought on this ? I'd
 like to give this a try pretty soon.
 

I have created PR 53949 for this.


[Bug c/53937] Pack'ing struct causes gcc to not recognize that an field's address is aligned

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53937

--- Comment #8 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
09:45:06 UTC ---
Author: rguenth
Date: Fri Jul 13 09:45:00 2012
New Revision: 189458

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189458
Log:
2012-07-13  Richard Guenther  rguent...@suse.de

PR middle-end/53937
* builtins.c (get_pointer_alignment_1): Handle constant
pointers.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/builtins.c


[Bug c/53937] Pack'ing struct causes gcc to not recognize that an field's address is aligned

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53937

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.8.0

--- Comment #9 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
09:46:22 UTC ---
Fixed for 4.8.


[Bug tree-optimization/53922] [4.6/4.7/4.8 Regression] VRP: semantic conflict between range_includes_zero_p and value_inside_range

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53922

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC|rguenth at gcc dot gnu.org  |
  Known to work||4.0.4
   Target Milestone|--- |4.6.4
Summary|VRP: semantic conflict  |[4.6/4.7/4.8 Regression]
   |between |VRP: semantic conflict
   |range_includes_zero_p and   |between
   |value_inside_range  |range_includes_zero_p and
   ||value_inside_range
  Known to fail||4.1.2

--- Comment #6 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
09:56:04 UTC ---
Testing the patch.  Fails since we introduced VRP.


[Bug c/53937] Pack'ing struct causes gcc to not recognize that an field's address is aligned

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53937

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #10 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
10:09:12 UTC ---
Fixed I said.


[Bug fortran/53950] New: 1.5 times slowdown from 4.4.0 to 4.7.0

2012-07-13 Thread kapojko at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53950

 Bug #: 53950
   Summary: 1.5 times slowdown from 4.4.0 to 4.7.0
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: kapo...@yahoo.com


Created attachment 27784
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27784
Demonstration of slowdown

I'm using MinGW GCC 4.4.0 to work with C/C++/Fortran project. Some days ago
I've downloaded web installer and switched to GCC 4.7.0. Unfortunately I
noticed a dramatic performance regression.

I attach a minimal program that demonstrates the slowdown to the ticket.

Compiled with gfortran -o test_self.exe -O3 test_self.f90 I get on my Core
i7:
  GCC 4.4.0: Time of operation was1.2012070  seconds
  GCC 4.7.0: Time of operation was1.85641098  seconds


Yury Kapoyko, Russia


[Bug c/53924] unhelpful diagnostic in invalid declaration list

2012-07-13 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53924

Manuel López-Ibáñez manu at gcc dot gnu.org changed:

   What|Removed |Added

 CC||manu at gcc dot gnu.org

--- Comment #2 from Manuel López-Ibáñez manu at gcc dot gnu.org 2012-07-13 
10:29:26 UTC ---
Clang:

/tmp/webcompile/_2902_0.c:2:13: error: redefinition of 'tree' as different kind
of symbol
tree klass, tree cdecl, class_array_type;
^
/tmp/webcompile/_2902_0.c:1:15: note: previous definition is here
typedef void *tree;
  ^
/tmp/webcompile/_2902_0.c:2:17: error: expected ';' after top level declarator
tree klass, tree cdecl, class_array_type;
^
;
2 errors generated.


[Bug target/53949] [SH] Add support for mac.w / mac.l instructions

2012-07-13 Thread olegendo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53949

--- Comment #1 from Oleg Endo olegendo at gcc dot gnu.org 2012-07-13 10:34:20 
UTC ---
(In reply to comment #0)
 So far, GCC does not utilize the integer multiply-add instructions.
 On SH1 only the mac.w instruction is supported.
 On SH2 and above the mac.w and mac.l instructions are available.
 
 Carry over from PR 39423 comment #20
 
  On a related thread, for further work, I'm thinking on adding support for 
  the
  MAC instruction, now that was have the multiply and add. But this requires
  exposing the MACLH registers to reload. Had anyone had a thought on this ? 
  I'd
  like to give this a try pretty soon.

I think the biggest problem is that the mac operands have to be in memory.
For example:

long long fun (int a, int long b, long long c)
{
  return (long long)a * (long long)b + c;
}

would need to become something like ... 

mov.l  r4,@-r15
movr15,r1
mov.l  r5,@-r15
lds  r6,mach
lds  r7,macl
mac.l  @r15+,@r1+
sts  mach,r1
sts  macl,r0
rts
add #4,r15

not using the mac instruction seems a bit simpler in this case:

dmuls.l  r4,r5
sts  mach,r1
clrt
sts  macl,r0
addc   r6,r0
rts
addc   r7,r1

I think the mac instructions can be very useful when they can be used inside of
loops,  but for this the whole post-inc memory stuff has to integrate properly
into
the surrounding code.

Chris, do you have any ideas/plans on how to handle the SR.S bit, for example
to implement
the ssmaddhisi4 pattern with mac.w?


[Bug fortran/53950] 1.5 times slowdown from 4.4.0 to 4.7.0

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53950

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Target||*-mingw
 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2012-07-13
 Ever Confirmed|0   |1

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
10:47:58 UTC ---
Are you building a 64bit or a 32bit executable?  Are you sure this is not
an effect of whoever provides random_number() or log()?


[Bug fortran/53950] 1.5 times slowdown from 4.4.0 to 4.7.0

2012-07-13 Thread kapojko at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53950

--- Comment #2 from Yury Kapoyko kapojko at yahoo dot com 2012-07-13 10:52:27 
UTC ---
Both targets are 32 bit.

Yes, after deeper profiling it seems a problem to be inside log/cos/random. For
example, fragments from gprof:
  4.4.0:  cosf - self seconds 0.77
  4.7.0:  cosf - self seconds 0.94
and so on.

Is there a way to fix it?


[Bug fortran/53950] 1.5 times slowdown from 4.4.0 to 4.7.0

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53950

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Target|*-mingw |i?86-mingw

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
11:00:46 UTC ---
These functions are not part of GCC but eventually part of the mingw runtime,
so I suggest to file a bug there.


[Bug target/53949] [SH] Add support for mac.w / mac.l instructions

2012-07-13 Thread chrbr at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53949

--- Comment #2 from chrbr at gcc dot gnu.org 2012-07-13 11:00:55 UTC ---
I see the MAC only as a global optimization, since its interest is to spawns
across several loop BBs as you said. Their is also problem on clear the
accumulator. 

That should certainly be new extension in the gimple SSA loop optimizers, based
on the presence on a multiply and and pattern. Not sure what is the best way to
do this as this point.


[Bug tree-optimization/21998] (cond ? result1 : result2) is vectorized, where equivalent if-syntax isn't (store)

2012-07-13 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21998

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

 CC||steven at gcc dot gnu.org

--- Comment #4 from Steven Bosscher steven at gcc dot gnu.org 2012-07-13 
11:04:13 UTC ---
(In reply to comment #1)
 They are not equivalent to GCC, the first always stores, the second has a
 conditional store.

Just to clarify, 7 years later: To GCC the two procedures are not equivalent.

In the first procedure,
 a1[i] = (a1[i] == v1 ? v2 : a1[i]);

expands as:

  if (a1[i] == v1)
a1[i] = v2;
  else
a1[i] = a1[i];

while the second procedure expands just as-is:
  if (a1[i] == v1)
a1[i] = v2;

In the first case, there will always be a store to a1[i], in the second example
this is not the case. Introducing new stores is not allowed, to avoid
introducing data races, see http://gcc.gnu.org/wiki/Atomic/GCCMM/DataRaces.

I'm not sure how GCC should transform the second procedure to allow the loop to
be vectorized.


[Bug tree-optimization/53922] [4.6/4.7/4.8 Regression] VRP: semantic conflict between range_includes_zero_p and value_inside_range

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53922

--- Comment #7 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
11:21:45 UTC ---
Author: rguenth
Date: Fri Jul 13 11:21:39 2012
New Revision: 189461

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189461
Log:
2012-07-13  Richard Guenther  rguent...@suse.de

PR tree-optimization/53922
* tree-vrp.c (value_inside_range): Change prototype to take
min/max instead of value-range.
(range_includes_zero_p): Likewise.  Return the result from
value_inside_range.
(extract_range_from_binary_expr_1): Adjust to handle dont-know
return value from range_includes_zero_p.
(extract_range_from_unary_expr_1): Likewise.
(compare_range_with_value): Likewise.
(vrp_meet_1): Likewise.

* gcc.dg/torture/pr53922.c: New testcase.

Added:
trunk/gcc/testsuite/gcc.dg/torture/pr53922.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vrp.c


[Bug target/53949] [SH] Add support for mac.w / mac.l instructions

2012-07-13 Thread chrbr at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53949

chrbr at gcc dot gnu.org changed:

   What|Removed |Added

   Severity|normal  |enhancement


[Bug tree-optimization/21998] (cond ? result1 : result2) is vectorized, where equivalent if-syntax isn't (store)

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21998

--- Comment #5 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
11:28:45 UTC ---
We have two related flags here, -ftree-loop-if-convert-stores, and
--param allow-store-data-races.  We can adjust the former to honor the
latter if specified and then eventually vectorize this, too.


[Bug tree-optimization/53922] [4.6/4.7 Regression] VRP: semantic conflict between range_includes_zero_p and value_inside_range

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53922

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

  Known to work||4.8.0
Summary|[4.6/4.7/4.8 Regression]|[4.6/4.7 Regression] VRP:
   |VRP: semantic conflict  |semantic conflict between
   |between |range_includes_zero_p and
   |range_includes_zero_p and   |value_inside_range
   |value_inside_range  |

--- Comment #8 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
11:41:13 UTC ---
Fixed for 4.8.0 sofar.


[Bug rtl-optimization/53916] [mips16] divide operation compiled result incorrect with GCC-4.6.3 '-O2' option

2012-07-13 Thread anmin_deng at yahoo dot com.tw
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53916

--- Comment #1 from anmin_deng at yahoo dot com.tw 2012-07-13 11:41:37 UTC ---
I recently tried the very same configurations and codes and tests with
GCC-4.7.1.  It seems that the generated disassemble by GCC-4.7.1 is OK (I have
not yet checked very closely to confirm).

However, the generated results by GCC-4.7.1 with '-O2' and '-Os' are not very
optimal compared to the results by GCC-4.6.3 with '-Os'.  The generated code by
GCC-4.6.3 with '-Os' runs 'divu' instruction once (per loop) and using HI and
LO registers resulted from the same 'divu' as remainder and quotient.  The
generated code by GCC-4.7.1 runs 'divu' instruction twice, one 'divu' for HI
(remainder) and the other 'divu' for LO (quotient).


[Bug fortran/53950] 1.5 times slowdown from 4.4.0 to 4.7.0

2012-07-13 Thread kapojko at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53950

--- Comment #4 from Yury Kapoyko kapojko at yahoo dot com 2012-07-13 12:39:05 
UTC ---
I agree with you. This buf refers to mingw, I think, it could be closed.

Unfortunately, real application slows down to 30 times! But it's very hard to
extract bug from there because it is rather complicated and multi-threaded.
Also I have no profilers for Windows except gprof which is useless here.
Compiled on Fedora (GCC 4.6.3) application works fine.

I assume that the problem is with libgfortran, because if I run old application
(compiled with GCC 4.4.0), but with new gfortran.dll in PATH it works exactly
as bad, as new one.


[Bug libstdc++/53657] [4.7/4.8 Regression] [C++11] pair(pair) move constructor is non-trivial

2012-07-13 Thread bkoz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53657

Benjamin Kosnik bkoz at gcc dot gnu.org changed:

   What|Removed |Added

 CC||bkoz at gcc dot gnu.org

--- Comment #20 from Benjamin Kosnik bkoz at gcc dot gnu.org 2012-07-13 
12:38:03 UTC ---

Thanks Paolo and Jonathan and Jason, this looks ready to go from an ABI
standpoint for 4.7.2.

Paolo, do we need to add any of the testcases in this PR to track regressions
here? Or at least make this less fragile as FE/lib changes going forward?


[Bug libstdc++/53657] [4.7/4.8 Regression] [C++11] pair(pair) move constructor is non-trivial

2012-07-13 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53657

--- Comment #21 from Paolo Carlini paolo.carlini at oracle dot com 2012-07-13 
12:43:31 UTC ---
I think that if something regresses we immediately see regressions in the v3
testsuite (Comment 5 is distilled from it).


[Bug libstdc++/53657] [4.7/4.8 Regression] [C++11] pair(pair) move constructor is non-trivial

2012-07-13 Thread rguenther at suse dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53657

--- Comment #22 from rguenther at suse dot de rguenther at suse dot de 
2012-07-13 12:53:51 UTC ---
On Fri, 13 Jul 2012, paolo.carlini at oracle dot com wrote:

 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53657
 
 --- Comment #21 from Paolo Carlini paolo.carlini at oracle dot com 
 2012-07-13 12:43:31 UTC ---
 I think that if something regresses we immediately see regressions in the v3
 testsuite (Comment 5 is distilled from it).

Can one of you please add a note to gcc-4.7/changes.html to reflect
the ABI changes between 4.7.1 and 4.7.2?  Thanks.


[Bug target/53907] gcc uses unaligned load when aligned load was requested

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53907

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
13:01:13 UTC ---
Author: rguenth
Date: Fri Jul 13 13:01:06 2012
New Revision: 189462

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189462
Log:
2012-07-13  Richard Guenther  rguent...@suse.de

PR tree-optimization/53907
* tree-ssa-forwprop.c (associate_pointerplus): New function.
(ssa_forward_propagate_and_combine): Call it.

* gcc.target/i386/pr53907.c: New testcase.

Added:
trunk/gcc/testsuite/gcc.target/i386/pr53907.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-ssa-forwprop.c


[Bug target/53907] gcc uses unaligned load when aligned load was requested

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53907

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.8.0

--- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
13:01:55 UTC ---
Fixed for GCC 4.8.0.


[Bug fortran/53951] New: [OOP] Later TARGET statement ignored for CLASS

2012-07-13 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53951

 Bug #: 53951
   Summary: [OOP] Later TARGET statement ignored for CLASS
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Keywords: rejects-valid
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: bur...@gcc.gnu.org
CC: ja...@gcc.gnu.org


Related, but slightly different: PR 51610 and PR 52227.


The following program is rejected as the TARGET B comes too late:

  C = B ! Valid, but rejected
   1
  Error: Pointer assignment target is neither TARGET nor POINTER at (1)


type t
end type t

class(t), pointer :: C

TARGET :: A
class(t), allocatable :: A, B
TARGET :: B

C = A ! Valid
C = B ! Valid, but rejected
end


[Bug fortran/52227] [OOP] TARGET attribute mishandled in polymorphic types

2012-07-13 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52227

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

 CC||janus at gcc dot gnu.org

--- Comment #2 from Tobias Burnus burnus at gcc dot gnu.org 2012-07-13 
13:17:23 UTC ---
I think we need so change class.c's gfc_build_class_symbol. It currently only
handles pointer/allocatable plus a (co)rank.

It seems to definitely lacks support for TARGET, judging by this PR, PR51610
and PR53951. At least I fear that some wrong-code bug is lurking there if
TARGET is not properly set.

As written in comment 0, there might be other attributes which have to be taken
into account, e.g. VOLATILE or ASYNCHRONUOUS.

Recall that when adding letters to the type name, either the number of allowed
characters has to change or the length part in the hashing, otherwise, names
might get cropped.

We should try to fix this issue soonish, as it is a nasty wrong-code issue
(depending on the optimization and timing) and it affects the ABI!


[Bug libmudflap/53952] New: [4.8 Regression] FAIL: libmudflap.c++/pass55-frag.cxx ( -O[123]) execution test

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53952

 Bug #: 53952
   Summary: [4.8 Regression] FAIL: libmudflap.c++/pass55-frag.cxx
( -O[123]) execution test
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libmudflap
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: rgue...@gcc.gnu.org


I see since quite some time

FAIL: libmudflap.c++/pass55-frag.cxx ( -O) execution test
FAIL: libmudflap.c++/pass55-frag.cxx (-O2) execution test
FAIL: libmudflap.c++/pass55-frag.cxx (-O3) execution test

with -O0 it does not fail.

I suspect stricter variable lifetime handling but did not try to confirm.


[Bug libmudflap/53952] [4.8 Regression] FAIL: libmudflap.c++/pass55-frag.cxx ( -O[123]) execution test

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53952

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.8.0


[Bug regression/53953] New: [4.7/4.8 Regression]: g++.dg/cpp0x/lambda/lambda-ice2.C (warnings and errors not matching)

2012-07-13 Thread hp at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53953

 Bug #: 53953
   Summary: [4.7/4.8 Regression]:
g++.dg/cpp0x/lambda/lambda-ice2.C (warnings and errors
not matching)
Classification: Unclassified
   Product: gcc
   Version: 4.7.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: regression
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: h...@gcc.gnu.org
CC: ja...@gcc.gnu.org, pa...@gcc.gnu.org
  Host: x86_64-unknown-linux-gnu
Target: cris-axis-elf


This test previously passed, now it fails, at least for cris-elf, but most
likely on multiple targets...but from gcc-testresults, I see that's not so.
Thankfully, for some test-runs, it can be seen for i686-pc-linux-gnu, so it
might be in some part be specific to some ILP32 targets.

(Odd detail: I see it in
http://gcc.gnu.org/ml/gcc-testresults/2012-07/msg00915.html but not in
http://gcc.gnu.org/ml/gcc-testresults/2012-07/msg00920.html and I can't spot a
system-specific difference between those runs - they seem to be identical
overlapping autotesters.)

A patch in the revision range (last_known_working:first_known_failing)
189391:189401
exposed or caused this regression.  Since then it fails as follows:

Running /tmp/hpautotest-gcc1/gcc/gcc/testsuite/g++.dg/dg.exp ...
...
FAIL: g++.dg/cpp0x/lambda/lambda-ice2.C  (test for warnings, line 12)
FAIL: g++.dg/cpp0x/lambda/lambda-ice2.C candidate explanation (test for errors,
line 5)
FAIL: g++.dg/cpp0x/lambda/lambda-ice2.C (test for excess errors)


In g++.log:

Executing on host: /tmp/gccobj/gcc/testsuite/g++/../../g++
-B/tmp/gccobj/gcc/testsuite/g++/../../
/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C 
-fno-diagnostics-show-caret  -nostdinc++
-I/tmp/gccobj/cris-elf/libstdc++-v3/include/cris-elf
-I/tmp/gccobj/cris-elf/libstdc++-v3/include
-I/tmp/gccsrc/libstdc++-v3/libsupc++
-I/tmp/gccsrc/libstdc++-v3/include/backward
-I/tmp/gccsrc/libstdc++-v3/testsuite/util -fmessage-length=0  -std=c++0x  -S  
-isystem /tmp/gccobj/cris-elf/./newlib/targ-include -isystem
/tmp/gccsrc/newlib/libc/include  -o lambda-ice2.s(timeout = 300)
/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C: In function 'int
main()':

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:14:8: error: no
matching function for call to 'run(main()::lambda())'

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:14:8: note:
candidate is:

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:5:15: note:
templateclass F decltype (F()) run(F)

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:5:15: note:  
template argument deduction/substitution failed:

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C: In substitution of
'templateclass F decltype (F()) run(F) [with F = main()::lambda()]':

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:14:8:   required
from here

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:5:15: error: no
matching function for call to 'main()::lambda()::__lambda0()'

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:5:15: note:
candidates are:

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:12:13: note:
constexpr main()::lambda()::lambda(const main()::lambda())

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:12:13: note:  
candidate expects 1 argument, 0 provided

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:12:13: note:
constexpr main()::lambda()::lambda(main()::lambda())

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:12:13: note:  
candidate expects 1 argument, 0 provided

compiler exited with status 1
output is:
/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C: In function 'int
main()':

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:14:8: error: no
matching function for call to 'run(main()::lambda())'

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:14:8: note:
candidate is:

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:5:15: note:
templateclass F decltype (F()) run(F)

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:5:15: note:  
template argument deduction/substitution failed:

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C: In substitution of
'templateclass F decltype (F()) run(F) [with F = main()::lambda()]':

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:14:8:   required
from here

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:5:15: error: no
matching function for call to 'main()::lambda()::__lambda0()'

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:5:15: note:
candidates are:

/tmp/gccsrc/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice2.C:12:13: note:
constexpr main()::lambda()::lambda(const main()::lambda())


[Bug tree-optimization/18557] Inefficient code generated by -ftree-vectorize on Alpha

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18557

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||DUPLICATE

--- Comment #13 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
13:52:25 UTC ---
At -O3 we now get calls to memset for the original testcase, changing it to
store 1 instead we get

$f..ng:
f:
.frame $30,0,$26,0
.prologue 0
and $16,4,$1
cmpult $31,$1,$1
lda $7,64($31)
addl $31,$1,$2
mov $31,$22
beq $2,$L2
lda $7,63($31)
lda $22,1($31)
lda $3,1($31)
stl $3,0($16)
$L2:
lda $3,64($31)
subl $3,$2,$2
zapnot $2,15,$8
lda $5,1($31)
srl $8,1,$6
sll $5,32,$5
addl $6,$6,$2
s4addq $1,$16,$1
mov $31,$3
zapnot $6,15,$6
lda $5,1($5)
.align 4
$L6:
addl $3,1,$3
stq $5,0($1)
zapnot $3,15,$4
lda $1,8($1)
cmpult $4,$6,$4
bne $4,$L6
zapnot $2,15,$3
addl $22,$2,$1
cmpeq $8,$3,$8
cpys $f31,$f31,$f31
subl $7,$2,$2
bne $8,$L8
s4addq $1,0,$1
lda $4,1($31)
.align 4
$L5:
addq $16,$1,$3
subl $2,1,$2
stl $4,0($3)
lda $1,4($1)
bne $2,$L5
$L8:
ret $31,($26),1
.end f

which seems to be reasonable.  We still run into the issue that we do
not recognize that the epilogue loop may at most iterate once.  The
vectorizer makes a mess out of induction variables for the prologue/epilogue
loops.  See PR53355 for where I track this general issue.

*** This bug has been marked as a duplicate of bug 53355 ***


[Bug tree-optimization/53355] Autovectorization of a simple loop could be improved.

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53355

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||falk at debian dot org

--- Comment #6 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
13:52:25 UTC ---
*** Bug 18557 has been marked as a duplicate of this bug. ***


[Bug tree-optimization/22184] tree vectorizer depends on context

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22184

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED

--- Comment #5 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
14:02:17 UTC ---
This is fixed, even if I disable VRP / jump-threading and substitute the info
from comment #3 in the code:

double MyFunc2 (int size)
{
  int len = size + 1;
  double Data[16] = {0};
if (len  3)
  ;
else if (len  0)
  ;
else
  return 0;

  for (int i=0; ilen; i++)
Data[i] = Data[i]=0 ? Data[i] : -Data[i];

  return Data[1];
}


[Bug tree-optimization/26128] Trivial operation not vectorized on char/short

2012-07-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26128

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
  Known to work||4.5.4, 4.8.0
 Resolution||FIXED
   Target Milestone|--- |4.5.0
  Known to fail||4.4.6

--- Comment #6 from Richard Guenther rguenth at gcc dot gnu.org 2012-07-13 
14:05:50 UTC ---
Making the testcase actually compile like

char a[16] __attribute__((aligned(16))) = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12,
13, 14, 15, 16};
char b[16] __attribute__((aligned(16))) = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12,
13, 14, 15, 16};
char c[16] __attribute__((aligned(16)));

int main()
{
  int i;

  for(i = 0; i16; i++)
{
  c[i] = a[i] + b[i];
}

  for(i = 0; i16; i++)
{
  printf(%i , c[i]);
}
}

shows:

c /space/rguenther/install/gcc-4.5.4/bin/gcc -O3 t.c
-ftree-vectorizer-verbose=1
t.c: In function 'main':
t.c:18:7: warning: incompatible implicit declaration of built-in function
'printf'

t.c:11: note: LOOP VECTORIZED.
t.c:7: note: vectorized 1 loops in function.


Thus fixed, in GCC 4.5.


[Bug c++/53954] New: [C++11] Undefined reference to non-odr-used static const member variable of variadic class template in DSO with -flto and -Wl,--export-dynamic

2012-07-13 Thread ai.azuma at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53954

 Bug #: 53954
   Summary: [C++11] Undefined reference to non-odr-used static
const member variable of variadic class template in
DSO with -flto and -Wl,--export-dynamic
Classification: Unclassified
   Product: gcc
   Version: 4.7.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: ai.az...@gmail.com


Created attachment 27785
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27785
Command-line log

The following code shows the problem with GCC 4.7.2 20120707 on
x86_64-unknown-linux-gnu.

//
// foo.cpp
templatetypename...
struct S
{
  static const bool value = false;
};

void f() {
  typedef decltype(S::value) B;
}
//

Obviously, `S::value' is not odr-used. Therefore, the program should not
require its definition. However, when a DSO is created from the above code with
GCC 4.7.2 20120707, `-flto' and `-Wl,--export-dynamic' options, it requires the
definition of `S::value'.

For example, the following command lines result in a link error.

$ g++ -std=c++11 -fPIC -flto -Wl,--export-dynamic -o libfoo.so -shared foo.cpp

$ g++ -std=c++11 -fPIC main.cpp -L. -lfoo
./libfoo.so: undefined reference to `S::value'
./libfoo.so: undefined reference to `S::value'
collect2: error: ld returned 1 exit status

where main.cpp is a trivial C++ source file like int main(){}.

Note that neither GCC 4.6.4 20120706 nor 4.8.0 20120708 reproduces the problem.

Note also that the above reproducer originally comes from a likely C++ code
using `std::vector' and `-std=c++11' option, like the following;

/
#include vector

void f()
{
  std::vectorint v;
  v.push_back(0);
}
/

When a DSO is created from this code with `-std=c++11', `-lfto' and
`-Wl,--export-dynamic' options, it requires the definition of
`std::allocator_traitsstd::allocatorint ::__construct_helperint,
int::value'.


[Bug target/53942] [4.6/4.7/4.8 Regression] unable to find a register to spill in class 'CREG'

2012-07-13 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53942

Uros Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

   Keywords||ra
 Target||x86_32
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-07-13
Summary|unable to find a register   |[4.6/4.7/4.8 Regression]
   |to spill in class 'CREG'|unable to find a register
   ||to spill in class 'CREG'
 Ever Confirmed|0   |1

--- Comment #1 from Uros Bizjak ubizjak at gmail dot com 2012-07-13 14:20:54 
UTC ---
Confirmed, a regression at least on 4.6, 4.7 and 4.8.
Testcase compiles OK with 4.1.

RA issue.


[Bug rtl-optimization/53942] [4.6/4.7/4.8 Regression] unable to find a register to spill in class 'CREG'

2012-07-13 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53942

Uros Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

   Keywords|ra  |
  Component|target  |rtl-optimization
   Target Milestone|--- |4.6.4

--- Comment #2 from Uros Bizjak ubizjak at gmail dot com 2012-07-13 14:36:42 
UTC ---
Please note that static function declaration enables register parameter
passing, so we have live AX, DX and CX at function entry.

combine pass propagates hard register to (insn 17):

(insn 17 16 18 2 (parallel [
(set (reg:QI 90 [ D.1417 ])
(and:QI (reg:QI 2 cx [ ISRA.5 ])
(subreg:QI (reg:SI 88 [ D.1419 ]) 0)))
(clobber (reg:CC 17 flags))
]) pr53942.c:22 382 {*andqi_1}
 (expr_list:REG_DEAD (reg:HI 2 cx [ ISRA.5 ])
(expr_list:REG_UNUSED (reg:CC 17 flags)
(expr_list:REG_DEAD (reg:SI 88 [ D.1419 ])
(nil)

and this effectively blocks CX usage in between (insn 17) and function entry.
RA actually can't undo this propagation and fails to allocate CX when this is
the only alternative.

Reconfirmed as RTL optimization issue. Combine should not propagate hard
registers on its own.


[Bug rtl-optimization/46843] ICE: in spill_failure, at reload1.c:2157 -fschedule-insns -fsched-pressure

2012-07-13 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46843

Uros Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-07-13
   Target Milestone|--- |4.6.4
Summary|ICE: in spill_failure, at   |ICE: in spill_failure, at
   |reload1.c:2157  |reload1.c:2157
   |-fschedule-insns|-fschedule-insns
   |-fsched-pressure when using |-fsched-pressure
   |doubles |
 Ever Confirmed|0   |1
  Known to fail||4.7.2, 4.8.0

--- Comment #1 from Uros Bizjak ubizjak at gmail dot com 2012-07-13 15:07:28 
UTC ---
Confirmed.

sched1 pass is moving insn that reads CX hard register after the shift:

(insn 20 7 10 2 (parallel [
(set (reg/v:SI 64 [ n ])
(ashift:SI (reg:SI 85)
(reg:QI 37 r8 [ s ])))
(clobber (reg:CC 17 flags))
]) pr46843.c:3 498 {*ashlsi3_1}
 (expr_list:REG_DEAD (reg:SI 85)
(expr_list:REG_DEAD (reg:QI 37 r8 [ s ])
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil)

(insn 10 20 13 2 (set (reg/v/f:DI 81 [ d2 ])
(reg:DI 2 cx [ d2 ])) pr46843.c:2 63 {*movdi_internal_rex64}
 (expr_list:REG_DEAD (reg:DI 2 cx [ d2 ])
(nil)))

Probably not a good idea to increase live ranges of hard registers before
register allocation pass.

This PR is somehow related to PR 53942, where combine pass increased live range
of CX register after shift insn.


[Bug regression/53953] [4.7/4.8 Regression]: g++.dg/cpp0x/lambda/lambda-ice2.C (warnings and errors not matching)

2012-07-13 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53953

--- Comment #1 from Jason Merrill jason at gcc dot gnu.org 2012-07-13 
15:09:10 UTC ---
Author: jason
Date: Fri Jul 13 15:08:55 2012
New Revision: 189465

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189465
Log:
PR c++/53953
* method.c (synthesized_method_walk): Initialize no_implicit_p sooner.

Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/method.c


[Bug regression/53953] [4.7/4.8 Regression]: g++.dg/cpp0x/lambda/lambda-ice2.C (warnings and errors not matching)

2012-07-13 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53953

--- Comment #1 from Jason Merrill jason at gcc dot gnu.org 2012-07-13 
15:09:10 UTC ---
Author: jason
Date: Fri Jul 13 15:08:55 2012
New Revision: 189465

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189465
Log:
PR c++/53953
* method.c (synthesized_method_walk): Initialize no_implicit_p sooner.

Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/method.c

--- Comment #2 from Jason Merrill jason at gcc dot gnu.org 2012-07-13 
15:10:03 UTC ---
Author: jason
Date: Fri Jul 13 15:09:47 2012
New Revision: 189466

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189466
Log:
PR c++/53953
* method.c (synthesized_method_walk): Initialize no_implicit_p sooner.

Modified:
branches/gcc-4_7-branch/gcc/cp/ChangeLog
branches/gcc-4_7-branch/gcc/cp/method.c


[Bug regression/53953] [4.7/4.8 Regression]: g++.dg/cpp0x/lambda/lambda-ice2.C (warnings and errors not matching)

2012-07-13 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53953

--- Comment #2 from Jason Merrill jason at gcc dot gnu.org 2012-07-13 
15:10:03 UTC ---
Author: jason
Date: Fri Jul 13 15:09:47 2012
New Revision: 189466

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189466
Log:
PR c++/53953
* method.c (synthesized_method_walk): Initialize no_implicit_p sooner.

Modified:
branches/gcc-4_7-branch/gcc/cp/ChangeLog
branches/gcc-4_7-branch/gcc/cp/method.c


[Bug fortran/52227] [OOP] TARGET attribute mishandled in polymorphic types

2012-07-13 Thread paul.richard.thomas at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52227

--- Comment #3 from paul.richard.thomas at gmail dot com paul.richard.thomas 
at gmail dot com 2012-07-13 15:10:52 UTC ---
Hmmm!  OK - I guess that we need
class_pointer/class_target/class_allocatable attributes that are
retained by the symbol, rather than the container.

Cheers

Paul

PS I have to recover the steps between the last unlimited polymorphic
patch that I sent you and the present on, which does the job for
unlimited OOP but breaks something such that regressions run into the
hundreds.  I have stared at it for a couple of evenings but cannot see
what generates the problem.  If I do not see it by Sunday, I'll let
you take a look.

On 13 July 2012 15:17, burnus at gcc dot gnu.org
gcc-bugzi...@gcc.gnu.org wrote:
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52227

 Tobias Burnus burnus at gcc dot gnu.org changed:

What|Removed |Added
 
  CC||janus at gcc dot gnu.org

 --- Comment #2 from Tobias Burnus burnus at gcc dot gnu.org 2012-07-13 
 13:17:23 UTC ---
 I think we need so change class.c's gfc_build_class_symbol. It currently only
 handles pointer/allocatable plus a (co)rank.

 It seems to definitely lacks support for TARGET, judging by this PR, PR51610
 and PR53951. At least I fear that some wrong-code bug is lurking there if
 TARGET is not properly set.

 As written in comment 0, there might be other attributes which have to be 
 taken
 into account, e.g. VOLATILE or ASYNCHRONUOUS.

 Recall that when adding letters to the type name, either the number of allowed
 characters has to change or the length part in the hashing, otherwise, names
 might get cropped.

 We should try to fix this issue soonish, as it is a nasty wrong-code issue
 (depending on the optimization and timing) and it affects the ABI!

 --
 Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email
 --- You are receiving this mail because: ---
 You are on the CC list for the bug.


[Bug regression/53953] [4.7/4.8 Regression]: g++.dg/cpp0x/lambda/lambda-ice2.C (warnings and errors not matching)

2012-07-13 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53953

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2012-07-13
 Ever Confirmed|0   |1

--- Comment #3 from Jason Merrill jason at gcc dot gnu.org 2012-07-13 
15:11:07 UTC ---
Should be fixed now.


[Bug rtl-optimization/53352] Incorrect CSE optimization on RTL expressions with a paradoxical subreg

2012-07-13 Thread ramana at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53352

Ramana Radhakrishnan ramana at gcc dot gnu.org changed:

   What|Removed |Added

 CC||ramana at gcc dot gnu.org

--- Comment #11 from Ramana Radhakrishnan ramana at gcc dot gnu.org 
2012-07-13 16:24:34 UTC ---
(In reply to comment #10)
 The test fails on Linux/x86 and Linux/x86-64.

http://gcc.gnu.org/ml/gcc-testresults/2012-07/msg00958.html doesn't suggest
this test fails anymore ? 

HJ, should this now be marked as FIXED ?


ramana


[Bug rtl-optimization/53352] Incorrect CSE optimization on RTL expressions with a paradoxical subreg

2012-07-13 Thread meadori at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53352

meadori at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||meadori at gcc dot gnu.org
 Resolution||FIXED

--- Comment #12 from meadori at gcc dot gnu.org 2012-07-13 16:34:14 UTC ---
The test case was fixed:
http://gcc.gnu.org/viewcvs?view=revisionrevision=187654.


[Bug bootstrap/53955] New: [4.8 Regression] Missing prototypes in i386.c, bootstrap failure with --disable-build-poststage1-with-cxx

2012-07-13 Thread tkoenig at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53955

 Bug #: 53955
   Summary: [4.8 Regression] Missing prototypes in i386.c,
bootstrap failure with
--disable-build-poststage1-with-cxx
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Keywords: build
  Severity: normal
  Priority: P3
 Component: bootstrap
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: tkoe...@gcc.gnu.org


home/ig25/Gcc/trunk-bin/./prev-gcc/xgcc -B/home/ig25/Gcc/trunk-bin/./prev-gcc/
-B/home/ig25/x86_64-unknown-linux-gnu/bin/
-B/home/ig25/x86_64-unknown-linux-gnu/bin/
-B/home/ig25/x86_64-unknown-linux-gnu/lib/ -isystem
/home/ig25/x86_64-unknown-linux-gnu/include -isystem
/home/ig25/x86_64-unknown-linux-gnu/sys-include-c   -g -O2 -gtoggle
-DIN_GCC   -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual
-Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic
-Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror
-Wold-style-definition -Wc++-compat -fno-common  -DHAVE_CONFIG_H -I. -I.
-I../../trunk/gcc -I../../trunk/gcc/. -I../../trunk/gcc/../include
-I../../trunk/gcc/../libcpp/include -I/usr/local/include -I/usr/local/include
-I/usr/local/include  -I../../trunk/gcc/../libdecnumber
-I../../trunk/gcc/../libdecnumber/bid -I../libdecnumber\
../../trunk/gcc/config/i386/i386.c -o i386.o
../../trunk/gcc/config/i386/i386.c:40070:1: error: no previous prototype for
'ix86_init_cost' [-Werror=missing-prototypes]
 ix86_init_cost (struct loop *loop_info ATTRIBUTE_UNUSED)
 ^
../../trunk/gcc/config/i386/i386.c:40080:1: error: no previous prototype for
'ix86_add_stmt_cost' [-Werror=missing-prototypes]
 ix86_add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind,
 ^
../../trunk/gcc/config/i386/i386.c:40107:1: error: no previous prototype for
'ix86_finish_cost' [-Werror=missing-prototypes]
 ix86_finish_cost (void *data)
 ^
../../trunk/gcc/config/i386/i386.c:40115:1: error: no previous prototype for
'ix86_destroy_cost_data' [-Werror=missing-prototypes]
 ix86_destroy_cost_data (void *data)
 ^
cc1: all warnings being treated as errors
make[3]: *** [i386.o] Error 1
make[3]: Leaving directory `/home/ig25/Gcc/trunk-bin/gcc'
make[2]: *** [all-stage2-gcc] Error 2
make[2]: Leaving directory `/home/ig25/Gcc/trunk-bin'
make[1]: *** [stage2-bubble] Error 2
make[1]: Leaving directory `/home/ig25/Gcc/trunk-bin'
make: *** [all] Error 2

Configure line was

../trunk/^Cnfigure --prefix=$HOME --enable-languages=c,fortran,c++
--disable-build-poststage1-with-cxx --with-mpfr=/usr/local
--with-gmp=/usr/local --with-mpc=/usr/local


[Bug bootstrap/53955] [4.8 Regression] Missing prototypes in i386.c, bootstrap failure with --disable-build-poststage1-with-cxx

2012-07-13 Thread tkoenig at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53955

Thomas Koenig tkoenig at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.8.0


[Bug bootstrap/53955] [4.8 Regression] Missing prototypes in i386.c, bootstrap failure with --disable-build-poststage1-with-cxx

2012-07-13 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53955

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-07-13
 CC||wschmidt at gcc dot gnu.org
 Ever Confirmed|0   |1

--- Comment #1 from Steven Bosscher steven at gcc dot gnu.org 2012-07-13 
17:04:48 UTC ---
Caused by the new vectorizer cost model,

http://gcc.gnu.org/viewcvs?view=revisionrevision=189460

Those functions should be static, I think.


[Bug tree-optimization/32089] Winline reports bogus warning

2012-07-13 Thread edo88 at email dot it
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32089

Edward-san edo88 at email dot it changed:

   What|Removed |Added

 CC||edo88 at email dot it

--- Comment #9 from Edward-san edo88 at email dot it 2012-07-13 17:08:54 UTC 
---
Is this: http://gcc.gnu.org/ml/gcc-help/2012-07/msg00029.html
related to this bug?


[Bug debug/37237] Debug information for virtual destructors omits DW_AT_vtable_elem_location

2012-07-13 Thread tromey at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37237

--- Comment #9 from Tom Tromey tromey at gcc dot gnu.org 2012-07-13 17:14:38 
UTC ---
Likewise there isn't a super way to find out which
constructor is in-charge.  The only way I could come up
with is to look at the linkage name; but this requires
excessive knowledge of the mangling scheme.


[Bug rtl-optimization/53908] [4.6/4.7 Regression] csa removes needed memory load

2012-07-13 Thread hp at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53908

--- Comment #13 from Hans-Peter Nilsson hp at gcc dot gnu.org 2012-07-13 
17:21:47 UTC ---
Author: hp
Date: Fri Jul 13 17:21:41 2012
New Revision: 189468

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189468
Log:
PR rtl-optimization/53908
* df-problems.c (can_move_insns_across): When doing
memory-reference book-keeping, handle call insns.

Modified:
branches/gcc-4_7-branch/gcc/ChangeLog
branches/gcc-4_7-branch/gcc/df-problems.c


[Bug rtl-optimization/53908] [4.6/4.7 Regression] csa removes needed memory load

2012-07-13 Thread hp at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53908

--- Comment #14 from Hans-Peter Nilsson hp at gcc dot gnu.org 2012-07-13 
17:23:02 UTC ---
Author: hp
Date: Fri Jul 13 17:22:55 2012
New Revision: 189469

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189469
Log:
PR rtl-optimization/53908
* gcc.dg/torture/pr53908.c: New test.

Added:
branches/gcc-4_7-branch/gcc/testsuite/gcc.dg/torture/pr53908.c
Modified:
branches/gcc-4_7-branch/gcc/testsuite/ChangeLog


[Bug rtl-optimization/53908] [4.6/4.7 Regression] csa removes needed memory load

2012-07-13 Thread hp at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53908

Hans-Peter Nilsson hp at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED

--- Comment #15 from Hans-Peter Nilsson hp at gcc dot gnu.org 2012-07-13 
17:27:11 UTC ---
Testing for 4.7 went well, as expected from the previous versions, so
committed.
Closing, but feel free to post test-results for 4.6 and permission for
back-port.


[Bug rtl-optimization/53908] [4.6 Regression] csa removes needed memory load

2012-07-13 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53908

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||patch
   Priority|P3  |P1
 Status|RESOLVED|REOPENED
 Resolution|FIXED   |
Summary|[4.6/4.7 Regression] csa|[4.6 Regression] csa
   |removes needed memory load  |removes needed memory load

--- Comment #16 from Steven Bosscher steven at gcc dot gnu.org 2012-07-13 
17:39:21 UTC ---
GCC 4.6 is still maintained, so this regression report should stay open.

In fact, being wrong code on a primary target, and relatively trivial to fix,
I'd say this has to be a P1 bug for GCC 4.6.


[Bug rtl-optimization/53908] [4.6 Regression] csa removes needed memory load

2012-07-13 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53908

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

 Status|REOPENED|ASSIGNED
 CC||steven at gcc dot gnu.org
 AssignedTo|unassigned at gcc dot   |steven at gcc dot gnu.org
   |gnu.org |

--- Comment #17 from Steven Bosscher steven at gcc dot gnu.org 2012-07-13 
17:41:12 UTC ---
Will take care of GCC 4.6.


[Bug go/53879] [4.6] new glibc: sysinfo.go:5976:68: error: expected ‘{’

2012-07-13 Thread ian at airs dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53879

--- Comment #3 from Ian Lance Taylor ian at airs dot com 2012-07-13 17:47:18 
UTC ---
The version of Go on the 4.6 branch is quite out-dated.  I don't mind if
somebody tries to fix it up, but I don't plan to do so myself.  I strongly
recommend that anybody using gccgo use GCC 4.7.1 or later.


[Bug fortran/53956] New: Proc-pointer w/ interface: Bogus EXTERNAL attribute conflicts with FUNCTION attribute

2012-07-13 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53956

 Bug #: 53956
   Summary: Proc-pointer w/ interface: Bogus EXTERNAL attribute
conflicts with FUNCTION attribute
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Keywords: rejects-valid
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: bur...@gcc.gnu.org
CC: ja...@gcc.gnu.org


Found at comp.lang.fortran,
cf. http://www.rhinocerus.net/forum/lang-fortran/709699-sort-2d-matrix-2.html
or
https://groups.google.com/forum/?fromgroups#!topic/comp.lang.fortran/kfOR7y1bI0Q

The original example has been written by James Van Buskirk - see thread.

The following program gives the bogus error when the procedure pointer is
invoked. Without procedure pointer or - for the dummy argument - using
procedure(integer) instead of integer, external (which is semantically
identically), works.

program testme
  1   
Error: EXTERNAL attribute conflicts with FUNCTION attribute in 'comparator2' at
(1)


module m
contains
  function compare()
integer :: compare
compare = 42
  end function compare
  subroutine print_it(x)
procedure(integer) :: x
print *, x()
  end subroutine print_it
end module m

program testme
  use m
  implicit none
  interface
subroutine sub(comparator2)!  related to those
  integer, external :: comparator2 !  lines
end subroutine sub
  end interface
  procedure(sub), pointer :: fp  !  but the interface might be involved
  fp = print_it
  call fp (compare)   !  Triggers the error
end program testme


  1   2   >